まったりと呼吸する日々。
昨日の朝から強烈で下痢と嘔吐感。うへー。昨日は医者に行って会社は休み。今日も昼から早退。21世紀に入ってから何かおかしい? 調子が悪いのは身体だけではないんだけど,とにかく体調が悪いのはかなわん。
会社の帰りに時計屋によって,電池交換に出してたのを引き取ってくる。
glibc-2.2.1のパッチは中断。eucJP/SJIS-UCS4変換表に手を入れ,文字集合記述ファイル (Character Set Description File) をそれに合わせると,localedefコマンドがロケール定義ファイルのLC_COLLATEカテゴリでエラーを出す。これはかなり難しい。
日本語EUCやシフトJISとUnicodeとの変換は,システムによって違いが結構ある。この場合,variationを許容して変換する方が望ましい。すなわち,U+2016, U+2225のいずれを受け取っても日本語EUCなら/xa1/xc2に変換すると。この線でなら検討する価値はありそう。
昼から三宮。新しい名刺を注文。肩書きはやはり入れず。CDと卓上カレンダーを購入。
DNSキャッシュをLinux機にインストール。LAN上のマシンがそれぞれISPのDNSサーバーに問い合わせてたが,Linux機を経由するように変更。なかなかいい感じ。Linux機のnslookupが使えなくなったのが,ちょい謎。
残業しようと思ったが,体調は万全ではないらしい。株式の評価方法はいろいろあるが,経済的に意味のある方法はごくわずか。
djbdnsをアップデート。DJB tools : dnscache
make uninstallできないので,./conf-homeを書き換えておいた方がよさそう。
ここ数日,士気の低下が著しい。気分が盛り上がらないと仕事が楽しくない。
CGIは入力をそのままファイル名に使ってはいけない。
休日が増えるらしい。やるやん。
カーネルを取ったり,EBCDICを調べたり。
glibcも2.2.2に上げてみた。あんまり違いが分からない。
昼から出ようかと思ってたが,やめにして部屋の片づけ。全く本棚が足りん。さて,どうしたもんか。
Ruby Earrings -- eRuby + Ruby CGI [4]
POSTメソッドによるリクエストに対してリダイレクトする(Locationヘッダーを返す)と,user agentがリダイレクト先に同じ内容でPOSTするので,リダイレクト先が信頼できる場合であっても,効率が悪そう。
user agentによってはリダイレクト先にGETメソッドでリクエストしなおすらしいが,それは期待できない,というか誤りとある。RFC 2616 HTTP/1.1 10.3.2 301 Moved Permanently; RFC 1945 HTTP/1.0 9.3 Redirection 3xx
HTTP/1.1なuser agentに対しては303 See Otherを返せばいいらしい。pre-HTTP/1.1なuser agentに対しては302 Foundを返すとGETで取り直してくれるかもしれない。RFC 2616 10.3.4
2000.05.20/cgi CGIで設定できるヘッダー
rubyで書くと,例えばこう;
print "Status: ", (ENV['SERVER_PROTOCOL'] == "HTTP/1.1" ? "303" :
"302"), "\n"
print "Location: #{uri}\n\n"
RubyでWebからメールを送信するスクリプトを書いてみる。例えばとほほのWWW入門などにもあるが,ヘッダに直にiso-2022-jpで書いていたりと,どうも今ひとつ。
本質的な部分は以下で全部。Rubyで書くとコンパクトにまとまる。
71: from = cgi['from'][0].strip 72: if from =~ /([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+@([a-zA-Z0-9]+\.)+[a-zA-Z0-9]+/ 73: from_addr = $& 74: else 75: from_addr = "unknown@unknown.unknown" 76: end 77: 78: from_name = cgi['name'][0] 79: body = cgi['body'][0].strip.split(/\r?\n/) 80: 81: open("|" + INJECTOR, "w") do |fp| 82: fp.print <<EOF 83: From: #{from_addr} 84: To: #{MAILTO} 85: Subject: =?ISO-2022-JP?B?#{[e2j(SUBJECT)].pack("m").chomp}?= 86: MIME-Version: 1.0 87: Content-Type: text/plain; charset=ISO-2022-JP 88: 89: #{e2j("メールアドレス: " + from)} 90: #{e2j("お名前: " + from_name)} 91: 92: EOF 93: body.each {|line| 94: fp.print e2j(line), "\n" 95: } 96: end
メールアドレスの検査が怪しいが,あとは容易い。
これを書いてるときに気付いたが,Kconv.kconv()はMIMEデコードをしてまうのね。NKF.nkf()を使うように日記スクリプトを書き換え。
2001.04.07/ruby sendmailの引数
Netsphere Laboratories http://www.nslabs.jp/
[PR]