2002-02-13 [長年日記]
λ. 表現したい何かがある。でも言葉が見つからない。言葉を探すうちに、表現したかった何かはこぼれ落ちてしまう。
λ. drbはGCを分散化していないはずなので、リモートにまだ参照が残っているオブジェクトがGCされてしまう可能性がある。そういえば、殆んどのオブジェクトはハンドルの整数でしかなくて実体はGimpに管理されているんだよなぁ。で、型チェックとメソッド定義のために別のオブジェクトにラップしてある。こいつらをGCから保護してやるにはどうしたら良いかな。う〜みゅ。重要なのは、ラップした結果のオブジェクトじゃなくて、型とハンドルの整数なので…… そっか、DRbIdConvを差し換えて、それらのオブジェクトを扱う際にはObject#__id__によらない参照にしてしまえば良いのか。Gimp::PDB::Procの場合も名前で参照するようにしてしまうか。
λ. あらかじめURIを決めてgimpを起動しておかなくちゃいけないのもアレだ。解決するには、基本的にはクライアント側でdRubyのサーバを起動しておいて、新しく起動するgimpにURIを渡して向こうから接続させれば良いと思う。常に新規にgimpを起動するとしたらこんな感じか。
module Gimp def start(acl = nil, &block) server = DRb::DRbServer.new(nil, block, acl, GimpDRbIdConv) system('gimp', '--no-interface', '--batch', %Q[(ruby-fu-druby-yield-gimp "#{server.uri}")]) end module_function :start end
λ. 読書
- 『CLAMP学園探偵団 1』
- 『CLAMP学園探偵団 2』
- 『CLAMP学園探偵団 3』
- CLAMP[著]