クライアント側でマルチスレッドを実装しているライブラリが見付からない。
Perl はたぶん libfcgi の中にあるやつだよな。 これは libfcgi そのままなので、シングルスレッド。 標準添付の CGI::Fast.pm もいちおう見たけど同じ。
Python の FastCGI 実装の最新版はどこにあるんだ。 http://alldunn.com/python/fcgi.py でいいのかなあ。 last-modified が 2000 年なのがすごい気になるのだが。 少なくともこのファイルでは MAX_CONN=1, MAX_REQS=1 なので、 シングルスレッドだな。
Java も libfcgi の中にあるやつはシングルスレッド。
えええええ? もしかして本当にマルチスレッドクライアントなライブラリって存在しないの? マジかー。ちょっと信じられないんだけど。 誰かマルチスレッドな FastCGI クライアントライブラリを知ってたら教えてください。
(05:21)
なんでこういうことになったんだかよくわからないのだが、 net/smtp で自動 STARTTLS をサポートした。こんな感じで。
require 'net/smtp' s = Net::SMTP.new(host) s.enable_starttls_auto s.start(helo, user, pass) { s.open_message_stream(from, to) {|f| .... } }
TLS 系のメソッドはガッツリ変えました。 このへんはどれも 1.9 から追加されたメソッドなので、 後方互換性はいっさい保たれていません。 これが 1.9 の宿命なのであきらめてね。
なお net/pop も同様に変更予定。
(09:34)
文字列 str の 2 行目以降を取ろうとして str.lines[1..-1] と書いたら NoMethodError を食らった。 ああ、enumerator だからか。 これはちょっと、どうなのよ。
ということで ruby-dev にメールを投げる。
投げてから考えついたんだけど、 str.lines.drop(1) という逃げはありうるな。 しかし、だから aref がいらないかというと、うーむ。
やっぱり、本当の行配列を得る方法も必要なのではなかろうか。
(10:06)
今回は [1..-1] だったから drop でもよいが、 [0..-2] とかだと rdrop がないとうまくない。 やっぱ rdrop は欲しいな。
lines[1..-2] みたいな場合ってどれくらいあるだろう。 行指向の文法で、ターミネータが前後にある場合か。 いかにも必要になりそうだなあ。 やはり drop_both も入れといたほうがよいやもしれん。
あ、drop_both のメソッド名は、lrdrop というのはどうだろうな。 見にくいか。
(10:16)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.