2006-12-12
migemo インクリメンタルタブ切り替え
数日使ったけど思った以上に便利すぎだワァ。キーボード派には欠かせない。。作者さんありがとうございますまくり!!!
俺の OOP
設計きたねええええええ。ああもうがっかりだよ。snti.
Rinda::RingServerRecvAddr
デキタ!broadcast 送信元の DRbObject の URI を UDP の recvform で受け取ったアドレスに無理矢理書き換える版。RingServer に差し替えて使うことができる。これでホストが逆引きできなくとも OK。ただ RingServer の思想的にはどうなんだろう…。
module Rinda
class RingServerRecvAddr < RingServer
def write_service
Thread.new do
loop do
msg, addr = @soc.recvfrom(1024)
do_write(msg, addr[3])
end
end
end
def do_write(msg, host)
Thread.new do
begin
tuple, sec = Marshal.load(msg)
drbobj = tuple[1]
parse_uri = DRb::DRbTCPSocket.class_eval{ self.parse_uri(drbobj.__drburi) }
parse_uri[0] = host
uri = "druby://#{parse_uri[0]}:#{parse_uri[1]}#{parse_uri[2] ? ('?' + parse_uri[2]) : ''}"
drbobj.instance_eval { @uri = uri }
@ts.write(tuple, sec)
rescue
end
end
end
end
end
DRb.__drburi
ああやっと解った。Ring の仕組みでは UDP で受け取ったらそのメッセージの DRbObject を実行する。んで DRbObject の uri は broadcast 投げてきたマシンのホスト名な訳で、その名前解決ができないとダメと。ナルホドナァー。
Rinda::Ring
同一ネットワーク上にある別マシンの RingServer を broadcast で見つけられない。うーん。RingFinger の引数をいろいろ変えてみたけどだめだワァ。ネットワークよくわかんないぉ><というのもあるけど…。はまりどころとかあるのかなぁ。
win + ruby な環境で RingServer を建てると、同一ネットワーク上の他のマシンからも問題なくみれる、うーん
解った!RingServer 建ててるマシンがブロードキャスト送ってくるマシンの名前の逆引きができるとうまくいくんだ。むむ、逆引きできないような時はどうすればいいんだろう。。
さあ今日も dRuby だ
ruby の thread の理解が浅いので誰か勉強会開いて下さい(たにんほんい
zsh の履歴検索で and 検索したい!
したい!すでにありそうな気もするけど。教えて、lurker さん!(ぇー
最近すっかりRSS読まなくなった
うーん。情報摂取がめんどくさいというか。
唇の下にできものが
口あけるのでもだいぶ違和感。風邪の吹き出物かな。。。
Test::Base coverage
http://test-base.rubyforge.org/coverage/
Test::Base for Ruby、機能的には割ともう実用できそうな範囲なんだけど、なんとなく開発が停滞してこりゃいかん、ということで coverage で全部カバーしたら最初のバージョンをちゃんとドキュメント書いてパッケージングしてリリースしようそうしよう。
で、rcov ったら例外周りのテスト書いてませんですバレバレナハハ<ナハハじゃねーよ。例外の exception 差し替えてやるのが手っ取り早いのかなぁ。テストのテストはちょっとむつかしい。
あと rcov たのしい。設定というかコマンドラインオプションがちょっとむつかしいけど…。