2008-07-01から1ヶ月間の記事一覧

野良 port の erlang(disable hipe) を R12B-3 にした

gist: 2768 ― GitHub hipe を有効にした。それに伴い、Portfile 内の name を erlang にした。

EDoc の使い方を調べてみた

EDoc を練習する為に 簡単な適当モジュール を作った。 下記のコマンドを実行すると、./doc ディレクトリ配下に EDoc から生成した HTML が作成される。 $ erl -noshell -run edoc_run application edoc_test '"."' '[{def, {vsn, "1.0"}}]'@spec を使ってい…

couch_btree と dets の速度比較

Process Dictionary、dict、ets、gb_trees の速度比較 と同様に、単純なキー・値のペアを保持する場合限定の話。 $ erl 1> couchdb_btree_vs_dets:test(). --<dets>-- set:3750(4563)ms get:1310(1618)ms --<CouchDB B-Tree>-- set:380(456)ms get:440(493)ms ok 検証コードはこち</couchdb></dets>…

udp_server を gist に設置した

gist: 1458 ― GitHub これからは、短いコード片は全て gist に置く事にした。 バージョン管理されるし、突っ込みをもらいやすいのではないかと思う。

Process Dictionary、dict、ets、gb_trees の速度比較

それぞれの用途が異なるので、速度比較に意味があるのか疑問だけれど・・・単純なキー・値のペアを保持する場合の速度比較を行なってみた。 何度か試した結果、保存・取得共に process dictionary、ets、dict、gb_trees の順に早い。 gb_trees 比べて dict …

gen_udp を Supervisor 配下に置いて UDP Server 作ってみた

Kademlia の erlang 実装で使おうと思って書いてみた。 いろいろ修正した。詳細は下記。 -module(udp_server). -author('cooldaemon@gmail.com'). -behaviour(supervisor). -record(udp_server_option, { option = [binary], port = 4000, max_restarts = 3,…

Guard 節などで使う Type Test BIF の 'is_' Prefix は省略しちゃ駄目!

今まで、Supervisor を終了させる為に、何の気無しに下記のようなコードを書いていました。 stop() -> case whereis(?MODULE) of Pid when pid(Pid) -> exit(Pid, normal), ok; _ -> not_started end. kai-devel-ja で、pid/1 って何?という質問があり、erl…

Perl + MySQL で cp932 を使っている際、'表' 等のように 0x5C が含まれる文字を INSERT するとエラーになる場合の対処方法

悲しい大人の事情で、MySQL に cp932 のデータを保存する事になったので、そのメモ。 環境 CentOS 5.1 perl 5.10.0 DBD::mysql 4.007 CREATE DATABASE foo CHARACTER SET cp932; GRANT SELECT, DELETE, UPDATE, INSERT ON foo.* TO bar@localhost IDENTIFIED…

常駐したプロセスを停止する際は、exit(normal) を使った方が、お行儀が良い?

Supervisor の停止を下記の通り書いていたら・・・ stop() -> case whereis(?MODULE) of Pid when pid(Pid) -> exit(Pid, shutdown), ok; _ -> not_started end. Common Test で怒られてしまった。Application の stop は怒られないなーと思い source を追っ…

git-svn で branch を扱う

一応、メモ。 branch ごと clone する SourceForge から kai を取得する例。 $ git svn clone https://kai.svn.sourceforge.net/svnroot/kai -T trunk -b branches -t tags branch が増えた場合 git svn rebase は、現在の作業 branch を更新するだけなので…