継続開発のススメ Erlang/OTP 編(発表資料たたき台)

函数プログラミングの集い 2012 in Tokyo - [PARTAKE] http://partake.in/events/9a5f18bf-ca0c-48cd-a050-8a564c1ab0d9イベントで発表するので発表資料用のたたき台を作りました。継続開発のススメ Erlang/OTP 編 Gist https://gist.github.com/9ee65f0dfa9…

pyfes 2012.08

Python Developers Festa 2012.07 は関係者、参加者の皆様のおかげで無事終了しました。 やはりいろいろな話を聞くのは楽しいですね。ということで昔からやってみたかったビアバッシュをやろうと思っています。 pyfes 2012.08 参加者全員が LT やってそのあ…

棚卸し 2012-07

脳内を書き出して整理と棚卸し、技術系限定です。 Erlang まぁ、自分がメインで使ってる言語、仕事もプライベートも。 rebar 無いと死ぬ meck 最近はモックとスタブを使い分けねばと思い始めてきた proper QC 最高 mochiweb 安定してる cowboy シンプルで良…

非公式 MessagePack ライブラリを公開しました

Erlang 勉強したてでも使える、お気軽ライブラリを目指して作りました。 GitHub URL https://github.com/voluntas/yet-another-msgpack-erlang ライセンス Apache 2.0 公式 公式は @kuenishi が書いたものがあります。 URL https://github.com/msgpack/msgpa…

Erlang Binary Pretty Printer を使おう

Erlang のバイナリ表記は十進数です、個人的には見やすいのですが、長くなると何が書いてあるのかわかりにくかったりします。特にテストの時エラー時やデバッグ時はかなり読みにくいなと感じていました。それを解決する素敵なツールが。 binpp です。https:/…

継続開発のススメ 2012-06 版

変更履歴 2012-06-24 ドキュメントの所に *diag シリーズについて追記 概要 開発があればリリースがあり、リリースが終われば、メンテナンスがあり、さらに開発があります。プロダクトが EOSL (End Of Service Life) を迎えるまではこれを続ける必要がありま…

Erlang から YAML を扱う

Erlang から YAML を扱うライブラリに決定的なのが無かったのですが、つい最近出て来ました。libyaml を NIF(Native Implemented Function) でダイナミックリンクしたものです。goertzenator/yamler https://github.com/goertzenator/yamler 使ってみる前に …

Sphinx で商用のウェブサイトを立てて 4 ヶ月が過ぎた

Sphinx で会社の製品サイトを作って 4 ヶ月以上過ぎました、実際に運用してみた感想などを。 前提 デザイナー @kinofumi に依頼して、Sphinx の専用テーマを作って貰いました。@kinofumi は Jinja2 も使いこなしてしまったりとデザイナー?なのか怪しいです…

型を指定してバイナリから変換するライブラリ

誰得なライブラリな気がするので、微妙ですが ... 作った理由 Erlang で外部 API とかを使って Console とかからデータを貰えるような仕組みを作ると、 かならず必要なのがバリデータとかコンバーターです。毎回似たようなの書いててだるいなぁって思ってい…

ローカル開発時の継続ビルド+テスト Erlang 版

もちろん rebar 前提です。 OMake とか watch コマンドとか色々ありますが、自分は Python の watchdog を使っています。watchdog は Python で出来てる監視ツールです、pip でインストールしましょう $ pip install watchdogMakefile ... 色々省いてます .P…

string から term を生成する方法

文字列から Erlang Term を作る方法がわからなかったのでメモ。かなりマニアックですが ... 。もっと簡単な方法があったら教えてください。 > {ok,Tokens,_} = erl_scan:string("[{foo,bar},x,3]."). {ok,[{'[',1}, {'{',1}, {atom,1,foo}, {',',1}, {atom,1…

Erlang/OTP R15B01 を CentOS 6.2 にインストールする

インストールメモ。 Dropbox は自分の Public ディレクトリ hipe/native-libs/sctp は使わないので無効にしてある halfword-emulator は有効 systemtap も有効 $ yum install gcc gcc-c++ ncurses-devel make openssl-devel systemtap-sdt-devel $ curl -O h…

軽量ウェブサーバ Cowboy を試す

mochiweb を仕事でも使っているので特に困っていないのですが、せっかくなので cowboy を触ってみることにしました。ちなみに、作者の @lhoguin が来月あたり日本に来るらしく、日本の Erlang な人と会いたいと行っているので興味ある人は是非。 更新 2012-0…

LDAP クライアントが erlang/otp に追加されてた

Erlang で LDAP クライアントといえば eldap で、かなり古い実装で R8 か R9 くらいの頃の実装です。 もともとは GPL だったのが MIT になって github に公開されていました。https://github.com/etnt/eldap 仕事で使うかも知れないと思って、たまにパッチを…

Erlang R15B01 で DTrace(SystemTap) を使ってみる

注意: DTrace まったくわかりません。D 言語(D スクリプト) は書けません。読めません。とりあえずインストールして動かしてみたよ、程度のレベルです。 DTrace 使ったらこんなに幸せになったよエントリーではありません。 追記 2012-04-04 R15B01 が出たの…

Erlang + SPDY + TLS NPN が Firefix 11 で動いた

まったりと SPDY を追っかけたりしてます、今更かよ、遅いよとか禁止。Chrome では既に動いていましたが、Firefox も 11 から有効に出来る様になりましたね。 Jetty が対応したり、Netty が対応したり(Twitter がパッチを送ったそうですね)とちょっとワクワ…

Erlang + UUID ライブラリを触ってみる

RFC 4122 で定義されている UUID を Erlang から使うにはどうやるのかなと思って調べてみました。詳細は参考に書いた "UUID と Perl について" という記事が素晴らしいので、それを読んで下さい。Erlang の NIF バインディングはこれ、rebar の設定が古いの…

Mac OS X に gevent をソースコードからインストールする

gevent: A coroutine-based network library for Python http://www.gevent.org/pip からではなくソースから入れる方法を。pip でも dev を入れられたりするのかな。 追記 リポジトリに libev が含まれるようになったので何もいらないとのことです thx @nobo…

自分の興味の範囲を再確認する

脳内を書き出して整理、技術系限定ですよ。 お仕事に関係しそうなのは省いてたりします。 追記 2012-04-27 Clojure は一旦撤退 OpenFlow は一旦撤退 2012-04-08 eldap が otp に入った cowboy も追いかける flake/folsom を削除 Erlang まぁ、自分がメインで…

Python Developers Festa 2012.07 を開催予定です

github に移行しました。pyfes/201207.rst at develop · pyspa/pyfes · GitHub https://github.com/pyspa/pyfes/blob/develop/201207.rst

Python Developers Festa 2012.03 無事終わりました

雨の中、無事終了しました。参加者、発表者、ハンズオン担当者の皆様、そして @yokatsuki 様ありがとうございました。 反省 今回は少し時間が押したのと、開場時間を上手いこと管理出来なかったなと。特にプレゼンでは @takufukushima には迷惑をおかけしま…

jiffy と mochijson2 と simplejson のベンチマークを取ってみた

MBA なのでスペックがしょぼいです。( Core2Duo 1.6 / 4G / SSD 128 ) Erlang R15B Python 2.7.2 追記 2012-03-19 simplejson を 2.4.0 にアップデート tokoroten.json を置き換える 結果 simplejson は C 拡張アリですencode(decode(data)) を 100 回ほど回…

Broker を使った N:N な REQ/REP パターン (XREQ/XREP)

概要 Broker を間に置いた REQ/REP パターンを作ってみます。 基本的にはどう頑張っても 1:N しか出来ないのですが中間に Broker をおくことで、 N:N を実現しています。 実現したいこと REQ と REP どちらかの 1:N 構成ではなく、N:N 構成をするただ、今回…

ZMQ で PUSH/PULL を使ってロードバランシングしてみる

PUSH/PULL で PULL 側を複数立てた場合は、 PUSH 側で自動でロードバランシングするようなので確認してみました。PULL 側を複数立てて、PUSH 側から複数メッセージを投げた場合で、やってみます。 PUSH range で簡単に回して、ロードバランスしてくれている…

Erlang gen_server(SUB) に対して Python (PUB) からメッセージを送ってみる

Erlang 側で gen_server を複数立てておき、全てを Subscriber として待ち受け状態にして、Python 側からメッセージを送ってみます。メッセージはルートは使わないでファンアウトです。メッセージは JSON でシリアライズしています。 ソース $ git clone git…

zmq で Erlang/Python のデータのやりとりに JSON を使う

通信が確認出来たので、シリアライズしたデータを渡すテストです。 色々ありますが、まずは簡単な JSON データにしてみました。 ソースコード https://github.com/voluntas/snowflake/tree/feature/zmqgit checkout 7c153e853e624b9aeefe6c0e83003b92c8ecbd3…

zmq で REQ/REP を Erlang/Python でつないでみる

Erlang と Python でメッセージのやりとりをしてみます。まずは Erlang が REQ で Python が REP です。 相変わらず同期ですが、テストはシンプルな方が良いので同期から。 サンプルコード https://github.com/voluntas/snowflake/tree/feature/zmqここの 0d…

zmqで PUB/SUB してみる

PUSH/PULL はあまり面白く無さそうなので、PUB/SUB を試してみました。 PUB PUB 側が bind します。 SUB は定期的に PUB に接続を見に行くので、少し寝てあげる必要があったりします。 import time import zmq ctx = zmq.Context() sock = ctx.socket(zmq.PU…

zmq の python binding で echo テスト

ZMQ は非同期が売りですが、まずは同期で書いてみます。とりあえず書くと言えば Echo サーバ、ということで書いてみました。REP 側は pyzmq のサンプルにあったコードそのままです。 REQ 側 zmq.REQ で Connect します。ポイントは REP 側を先に起動しておく…

zeromq の Erlang と Python のバインディングをビルドしてみる

あるところで ZeroMQ が素敵な感じで使われていたので、使ってみようかと思います。基本がわかってないので、まずはライブラリのビルド確認から。 ZeroMQ ? 素敵なメモがあるのでのでこれを読めばよろしhttp://blog.wktk.co.jp/archives/71 環境 つなぐのは…