2007-10-01から1ヶ月間の記事一覧

supervisor の simple_one_for_one を使って echoserver を書き直した

gen_tcp の練習で書いた id:cooldaemon:20070614:1181827975 を gen_server 化しようと考えたが、gen_tcp モジュールの accept や recv は処理をブロックするので、gen_server 化を諦めて id:cooldaemon:20070717:1184676090 のように proc_lib を使ってお茶…

Dynamic Code Loading

某所で apache に負荷をかける為に erlang を使おうとして、知らずに http module を上書きしててハマったという書き込みをみて、Programming Erlang の APPENDIX E. Dynamic Code Loading の内容を思い出したので紹介。まず、下記の source code を準備。 -…

config ファイルの楽な読み込み方 その2

id:cooldaemon:20071013:1192285916 で application を使った場合にのみ使える限定的な方法を書いたが、もっと簡単な方法を見つけたので紹介。 % cat ./test.config {test1, foo, bar}. [test2, {foo, 1}, {bar, 2}]. test3. % erl 1> file:consult("./test.…

Mnesia を起動した後、schema を local node の ram に配置するなら mnesia:create_schema/1 は不要だった

今まで(id:cooldaemon:20070919:1190169198 とか)、下記の source のように Mnesia を起動した後に mnesia:create_schema/1 を実行していたのですが… start() -> mnesia:start(), mnesia:create_schema([node()]), mnesia:create_table(store, [{attributes,…

erl コマンドにユーザ定義のオプションを渡す

id:cooldaemon:20071013:1192285916 を書く際、 man erl を読んでいたら、erl コマンドにユーザ定義のオプションを渡す方法が書かれていたのでメモを残す。(これ常識なんだろうなぁ) % erl -flag1 value1 -flag2 value2 value3 1> init:get_arguments(). […

config ファイルの楽な読み込み方(application を使う場合、限定)

erlang 付属の httpd や yaws 等は、設定ファイルを自力で開き、読み込み、値を確認して…とやっている。 何か楽をできる良い方法は無いものか?と思い調べたらあったのでメモを残す。erl コマンドには便利な -config オプションがある。 % erl -config test…

Mnesia で永続化したテーブルに関数を入れ、全ノード停止後に再起動し、別ノードで実行したら動いた(まー、動いて当たり前ですけど)

id:cooldaemon:20071011:1192094209 で Mnesia 上のテーブルをディスクに保存しましたが、そのテーブルに関数を入れて遊んでみました。前回作ったノード a を再起動し、io:fwrite/2 を保存する。 % erlang -sname a (a@imac)1> mnesia_test:restart(). ok (a…

Mnesia に保存されたデータを永続化する(後からノードを追加しても大丈夫)

id:cooldaemon:20070919 で書いた Mnesia のレプリケーションの記事で、id:Hamano 氏からコメントで 便利ですよねー、mnesia のレプリケーション。 でも最近悩んでいるのが ram_copies ram_copies と disc_copies ram_copies は2つ目を後から起動しても上手…

ある module に含まれた _test が関数名末尾に付く関数の一覧を取得する

メソッド名一覧の表示 どう書く?org リフレクション系のお題の続編です。「ある与えられたオブジェクトtargetのメソッドのうち、 "test_"で始まるものをすべて呼びだす」というコードを書いてください。引数に関しては都合のいいように仮定して構いません(…