分散処理勉強会 #3 の資料は明日の夜に公開予定

仕事が忙しいのと、タクトオブマジックのやりすぎで、まだ 1/3 しか出来てない orz
まずいなぁ。

gen_paxos のコードを読み始めた

Kai 以外で gen_fsm を使ってる例を久しぶりに見た。素敵。

状態ごとの説明は、勉強会で教えてもらえるかもしれないので
今のうちに疑問点を洗い出す。

まずは、ディクレクトリ構成の変更と
coordinator を gen_server 化する事から始める予定。

議題ごとに gen_fsm を使い捨てているので
どっかにプロセスをストックしておいて
再利用できないもんかなぁ?(優先度低)

nil


preparing


proposing


acceptor


learner


decided



実際に動かしてみた
幾つかのノードを起動し、幾つかの議題を出してみた。
その後、過半数のノードを除去し、議題を出すと、ひたすら合意を取り続ける。
この状態で、除去したノードと同じ名前のノードを復活させ、net_adm_ping/1 で繋ぐ。
予想では、ここで合意が取れると思ったが、駄目だった。

ノードの追加・除去に対応できるよう、ノードの一覧は外だしにした方が良いかも。
あとは、合意を取る最大回数も欲しい。
合意の間隔と回数は、起動時のグローバル値と、合意単位で設定するローカル値に分割すると使いやすいかも?

Perl の Coro を使ってみた

use Coro;
use Coro::Select;

sub printit {
my ($string) = @_;
for (1..5) {
print $string, “\n”;
select undef, undef, undef, 1;
}
}

for my $coro (
async { printit ‘foo’ },
async { printit ‘bar’ },
) {
$coro->join;
}

Ruby Enterprise Edition

社内の Ruby 環境は、これに統一する事にした。

諸々全て /opt/ruby-enterprise-X.X.X-YYYYMMDD 配下にインストールされるので
確かに No Risk で導入検証できる。

wget http://rubyforge.org/frs/download.php/58677/ruby-enterprise-X.X.X-YYYYMMDD.tar.gz
tar zxvf ruby-enterprise-X.X.X-YYYYMMDD
sudo ./ruby-enterprise-X.X.X-YYYYMMDD/installer

ただし、Tiger だと以下のエラーが出た。
/usr/bin/ld: unknown flag: -rpath
あとで調べる。

同じ事で困っている人がいた。
http://groups.google.com/group/emm-ruby/browse_thread/thread/bf4597c49cfa028a?pli=1

rpath については、これが参考になる。
http://www.finkproject.org/doc/porting/porting.ja.html

sudo ./installer -c ‘—disable-rpath’
も、駄目だった。ruby の configure に —disable-rpath が渡っているのは確認済み。

MacVim + KaoriYa が Tiger(10.4) でも動くようになったので導入してみた

.vimrc で文字コード判別している箇所を if !has(‘kaoriya’) でザックリ不使用にした。

何故か、MacVim だと動く rails.vim が動かなくなった。
頻繁に rails で仕事するわけではないので、後で気が向いたら調べる。