A Day in the Life

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 たのしい。設定というかコマンドラインオプションがちょっとむつかしいけど…。

記事の一覧 >