erlang

ets:select/2

1> Tab = ets:new(test, [set]). 15 2> ets:insert(Tab, {test, hoge}). true 3> ets:select(Tab, ets:fun2ms(fun({test, X}) -> X end)). [hoge]

fizzbuzz

-module(fb). -export([m/0]). -define(r(M),N rem M<1->). m()->[io:format(if?r(15)"FizzBuzz";?r(3)"Fizz";?r(5)"Buzz";true->integer_to_list(N)end++[10])||N<-lists:seq(1,100)]. 今までコードゴルフに取り組んだことがなかったので,取っかかりとして…

ETS テーブルの存在有無を調べる

Erlang の処理系である ERTS には手軽に利用可能なデータストアが複数用意されていて,ETS/DETS テーブルがその内の一つに当たるわけですが,プロセスとは異なり whereis/1 関数で存在の有無を確認することはできないわけです.というのは,例えば -module(t…

大量プロセスが動作する際のプロファイリング

関数の呼び出し回数を調べたいのだけど,eprof や fprof だとプロセス毎の呼び出し回数しか得ることができない….というような場合に使えるのが cprof.いくら大量のプロセスを生成してもモジュール毎の呼び出し回数だけを表示してくれるのでとても都合が良…

whereis/1 関数を使用する上での注意

ちょっと考えてみると当たり前のことなんだけど,whereis/1 関数は呼び出される頻度が多い割に若干遅い感じがするので,無闇に呼び出さないほうが良い.もしくは何らかの形でキャッシュしておくとか. 自分のプログラムではかなり多用していて,これを削るだ…

耐障害性の高いConsistent Hashingを実装してみる

GitHub - dchiji/Cradle: Consistent Hashing とあるプロジェクトの一環で作ったプログラムで、突然あるノードが落ちても一瞬でネットワーク再構成/データ復旧することが可能な程度の耐障害性が特徴です。 Consistent Hashingということで、当然のことながら…

Erlang による Skip Graph の実装

参考: Skip Graph の論文 http://www.cs.yale.edu/homes/aspnes/skip-graphs-journal.pdf ソースコードはこちら Skip Graph in Erlang · GitHub 特徴 ・Erlangによる完全なSkip Graphの実装 ・複数マシンを利用してスケールアウト可能 ・boot/4関数内のLeve…

nのm乗

math:pow(n, m).

突発オンラインErlang勉強会終了!!

http://www.lingr.com/room/9OFKsml09bi/archives/2009/04/05 ログは↑にて読むことができます。 無事終えることができました。 ありがとうございます! 12:00から約10時間、お疲れ様でした!!>< 参加者人数は30人以上でとても楽しい勉強会でした。 # Erla…

突発オンラインErlang勉強会

アーカイブ 雰囲気・場所・スケジュールの項目を追記(4/4(土) 21:35) 4/5(日)にオンラインでプログラミング言語Erlangの勉強会をやろうと思います。 気軽にどうぞ!! 雰囲気 気楽な雰囲気で進行していこうと思います。 発言を躊躇したら許さないんだ…