ximapdを試す(6)
いったんあるフォルダにインポートしておいて、その後で外部プログラム(具体的にはbsfilter)でINBOXに移すというのをやりたかったので、インポート先のフォルダを指定できるようにしてみた。
あとSSLサーバになれるコードも追加してみた。ただし機能としては最低限、とりあえず動くという程度。クライアント認証ほか、各種パラメータの指定ができるようにしないとならないと思う。今はコマンドラインオプションで指定するようにしているのだけど、設定ファイルで指定するようにすべきなのかもしれない。
というわけで、あんまりテストしていないコード→ximapd-20050501.diff (今までの差分も込みなのがアレだが)
ximapdを試す(4)
昨日のパッチには少しまずいところがあったので修正→ximapd-20050430.diff
前のとの違いは、タイムゾーンの表示のやり方を直した(%Z→%z)のと、フォルダをひといきになめてからindex更新というやり方だと更新している間にIMAP接続が切れてしまうことがあるのでちびちび取ってきては更新という形にした。
あと進行状況をいいかげんに表示させるようにもした。でもこれは動いているかどうかの確認程度。ただ、その表示によると更新のための時間が序々に長くなってきていて(バラつきがあるだけかもしれないけど)、ざっと5,000通を終えたあたりでは1通に0.4秒くらいかかっているようだ。
それからSEGVの件。これは最初の一回きりで、rm -rf ~/ximapd/したりもしているのだけど再現できていない。
ximapdを試す(5)
IMAPサーバからのインポートだが、だいぶ時間がかかりそうなのでしばらく放っておいたところ、SEGVではなくTMailのエラーで落っこちていた。
parser.y:366:in `scan': unterminated quoted-word (SyntaxError)
よく考えるとINTERNALDATEだけでなくENVELOPE情報をIMAPサーバから得るようにしたほうが良いかもしれない。が、それはそれとして、この現象って通常時(.forward経由のとき)にも起き得るってことかなあ。
追記(2005-05-01): SyntaxError問題については単にrescueにSyntaxErrorを追加指定してやれば良さそう。IMAPサーバからあらゆる情報を取り出して〜という話は、ximapdがテキストパートについてのインデックスを作っている関係で、メッセージ全体とパートとをそれぞれ取り出さねばならず、サーバへのアクセスを増やすことになりそうな気がしてきたのでヤメ。
ximapdを試す
0.0.0がリリースされたことだしximapdを試そうと思いたつ。
えーとrastが必要なのか。debがないかなーと検索するとtachさんとこがひっかかる。ありがたく使わせてもらう。あとはそろってるなというわけでsvn co(この時点で0.0.0とか関係ないんだが :-)。
ドキュメントを読む…… ふむ。何はともあれインポートしないと試せませんな。と思ったんだけど、既存のIMAP環境から直接にはインポートできないのね。ふうむ。と、うなっててもしょうがないので少しコードを書いて今あるサーバからINBOXだけインポートしてみる。
おー動いた動いた。テストテスト。net/imap.rbを使って…… ありゃ、examineだとエラーになっちゃうな。selectなら問題なし。selectできるんならいいか。でも一応報告しとこう。
次はMail.appでと…… ありゃ、ささる。デバッグモードで動かすとどうやらINTERNALDATEのFETCHができないのね。構造がよくわかんないんだけど少しコードをいじって足して…… おー、動いた動いた。
しかし、これ、ずいぶん重いなあ。ロードが2とか普通にいく。あ、librast-ruby1.8_0.0.1-0.1ってことはrastがちょっと古いのかな。最新は0.1.0か。新しくして後でもう一度試してみよう。
というわけでこれまでに書いたコード→ximapd-20050429.diff
Ruby Refactoring BrowserのVIM対応
Ruby Refactoring Broserをvimに対応させたいと考えています。しかしの今の開発者の中でvimを積極的に使っている人はいません。そのため、どのようなUIにすれば良いのかよくわかりません。というわけで、協力してくれる人を募集します。
具体的には、vim scriptやruby側のスクリプトを書いて欲しい、もしくはどのようなUIが良いか提案して欲しい、と考えています。
[[ruby-list:40784] Ruby Refactoring Browser on vimより引用]
おおっ。Ruby Refactoring BroserのVIM対応への提供募集とのこと。どんなのが良いのかなーと。
ruby1.8_1.8.2-5 1
Ruby on Railsにあるリモート(?)ブレークポイント機能——コードにブレークポイントを仕込んでおくとirbを使ってプロセス外からアプリケーションにアクセスできる機能(実際にはruby-breakpointによる)が最近のruby_1_8で使えなくなっていたという問題を昨日の更新で回避できるようになった。
この問題の詳細は[druby-ja:132]にある。ソースがtaintedである場合、Marshal.loadは生成するオブジェクトをtaintするのだが、dRubyではDRbObject._loadでdRuby的参照を解決して元々あったオブジェクトを返すといったことをやっているためにdRubyを介して参照をやりとりしたオブジェクトがいつの間にかtaintedになっているといったことが起きていた、というわけ。悩ましそう。……というか、ruby-breakpointって以前もたまたま動いてただけだったのかな?
ruby1.8_1.8.2-4
ruby1.8を更新した。rss/dublincoreで複数カテゴリを扱えるようになり、ruby-profが使えるようになった。ruby1.8-elisp問題も。
ついでに :-) いくつかのバグをcloseした。


