Hatena::ブログ(Diary)

cooldaemonの備忘録 RSSフィード

2008-06-18

Erlang 分散処理勉強会の LT 資料を公開します

http://labs.miu.vc/svn/cooldaemon/doc/mochiwebLT.pdf

SlideShare に上げようとしたのですが、重くて断念しました orz

という事で、株式会社 MIU 様の公開リポジトリをお借りしました。ご好意感謝致します。> drkazu 社長

SlideShare にあげた。http://www.slideshare.net/cooldaemon/mochiweb-lt

プレゼン中に口走った Faxien ってのは、Erlware に含まれるパッケージツールの事です。

Erlang 勉強会感想

たけまるさん、id:hamano さん、mixi の皆様、お疲れ様でした!&お世話になりました。

次回は、少しでもお手伝いできたらなーと考えております。

んー・・・自分のアルゴリズムに対する不勉強を実感する勉強会でした orz

特に、たけまるさんの Kai と id:yohei さんの CouchDB のプレゼンが刺激的でした。

って事で、早速、id:yohei さんに教えてもらった couch_btree.erl を眺めて挫折しそうに・・・。

B-Tree は理解しているつもりだったけれど、実際に実装してみた事も、利用した事もなかったので、これからじっくりモノにして行こうと思います。

ちなみに、Kai についてですが、Source を眺めての第一印象は、OTP の良いお手本だなぁと。

読んだ Source が偏っているのかもしれませんが、gen_fsm を有効利用している Source を初めて読みました。

今ならまだ行数が少ないので、Source を読むなら今のうちだ!と思います(w;

言い訳

嫁に借りた MacBookPro を外部ディスプレイに接続したら、何故か画面がミラーリングされて焦りました。

自宅でリハーサルした時には、ミラーリングされていなかったのに・・・。

おかげで、5分に設定されたタイマーや発表者ノートが見れず、自分でも何を話しているか、よく解らない状態になってしまいました。

次回があれば、気を付けようっと。

収穫

懇談会で、id:Voluntas さん、id:jbking さん、swdyh さん、howking さんに出会えた事。

いつもお世話になっている、AutoPagerize の作者さんに直接お礼が言えて本望だった(w;

howking さんは、どう書く?org というキーワードですぐに気がついたけれど、id:Voluntas さんと、id:jbking さんは、帰りの電車に乗るまで、正体を教えてくれず、懇談会中は謎の方々だった(w;

その他

id:Voluntas さんに python 洗脳されました。目標が無いと駄目な子なので、まずは vim plugin を書く所から始めます。

少しでも Bob Ippolito に近づきたいものだなぁ・・・。

2008-06-03

mochiweb を試す

ほぼ、source を読み終わったので、使い方の解説を何回かに分けて記述して行こうと思う。

とりあえず今回は、mochiweb のデモを動かすまでの手順の紹介。

まずは、svn で mochiweb 本体をダウンロードし make する。

$ svn checkout http://mochiweb.googlecode.com/svn/trunk/ /path/to/mochiweb
$ cd /path/to/mochiweb
$ make

次にデモ用アプリケーションのスケルトンを生成する。

$ chmod 755 ./scripts/new_mochiweb.erl
$ ./scripts/new_mochiweb.erl mochidemo /path/to/

new_mochiweb.erl コマンドの第一引数がアプリケーション名で、第二引数がスケルトンを生成するディレクトリの指定。

上記のようにコマンドを実行すると、/path/to/mochidemo というディレクトリが作成され、その配下にスケルトンが配置される事になる。

と言う事で、サンプルアプリケーション を make して起動してみる。

$ cd /path/to/mochidemo
$ make
$ ./start.sh

これで、Port 8000 の Listen を開始するので、ブラウザ等で http://127.0.0.1:8000/ にアクセスして動作確認を行う。

MochiWeb running. と表示されれば成功。

erlang で動作確認するなら下記の通り。

1> application:start(inets).
2> http:request("http://127.0.0.1:8000/").

2008-04-30

開発中は reloader を使うべし

mochiweb に付属の reloader を使うと、更新のあった module を再読み込みしてくれるので、デバックの手間が少し減る。

source の中身

gen_server として常駐する。

timer:send_interval/2 を使って自分自身に一秒間隔でメッセージ doit を送る。

doit を受信すると、code:all_loaded/0 でロード済みモジュールの一覧を取得し、更新があるモジュールは、code:purge/1 して code:load_file/1 している。

更新の判定は、file:read_file_info/1 で beam ファイルの情報を取得して、前回のチェック日時より新しければ更新ありと判定している。

使い方

単純な gen_server なので、reloader.beam がカレントディレクトリに存在するなら下記の通り。

% erl -s reloader

reloader.erl がカレントディレクトリに存在するなら下記の通り。

% erl
1> c(reloader).
2> reloader:start().

あとは、ロード済みの module が更新される度に再読み込みしてくれる。

id:cooldaemon:20071021 の例くらいであれば恩恵を感じないが、ロードしているモジュール数が多いプロジェクトであれば、その恩恵を感じられる。

ライセンス

mochiweb は MIT ライセンスなんだけど・・・reloader も MIT ライセンスだよね?

Mochi Media, Inc.

Mochikit はじめ、Mochi Media, Inc. 製の code は追ってて楽しい。設計が美しく勉強になる。