突然思い出した。 やっぱりルータの 53 番は開けても通らなかったんだ。 で、その後ダメもとで (ルータの) ファイアウォールを切ったら通るようになった。 つまりファイアウォールにも問題があるように思える。
(22:11)
いい感じにバグやら要望やらがたまってまいりました。
えーと……、また明日!
(22:12)
うわあ。やっぱり言語の話題だと反応が多いですね。 数々のツッコミありがとうございます。
そもそもドメインが loveruby.net なくせに この日記は Ruby ネタが少なすぎる。 BitChannel を Ruby ネタということにすれば多少は増えるけど、詐欺くさいな。それはともあれ「ゆるゆる言語」、 ぼくの書きかたが中途半端だったせいで誤解を生んだようなのですが、 言語の中の一部分だけ遅延評価ではなく、プログラム全体が遅延評価ってことです。 もちろん Scheme の delay/force みたいな手間もかけずにやってほしい。
んで、肝は「やばそうなところは警告だけ出して適当に実行」って部分でした。 真面目に研究する人達はこんなヘタレなことは考えなさそうなので ^^;;;
とりあえず、Q を眺めてみようと思います。
※ 参考までに、昔の一文字言語の話題 http://i.loveruby.net/d/20020522.html#p03
(23:43)
cgi.rb には、普通に実行するとコマンドラインから パラメータを与えられる機能がありますよね。 あれの webrick/cgi 版をでっちあげました。
# cgienv.rb ENV['GATEWAY_INTERFACE'] ||= 'CGI/1.1' ENV['SERVER_PROTOCOL'] ||= 'HTTP/1.0' ENV['SERVER_SOFTWARE'] ||= 'DummyHttpServer/1.0' ENV['SERVER_NAME'] ||= 'localhost' ENV['SERVER_ADDR'] ||= '127.0.0.1' ENV['SERVER_PORT'] ||= '80' ENV['REMOTE_ADDR'] ||= '127.0.0.0' ENV['REMOTE_PORT'] ||= '33992' ENV['HTTP_ACCEPT'] ||= '*/*' ENV['HTTP_ACCEPT_LANGUAGE'] ||= 'ja,en' ENV['HTTP_HOST'] ||= 'localhost' ENV['HTTP_USER_AGENT'] ||= 'DummyAgent/1.0' script = ARGV.shift or raise ArgumentError, 'no file' ENV['SCRIPT_URI'] ||= 'http://localhost/' + File.basename(script) ENV['SCRIPT_URL'] ||= ENV['SCRIPT_URI'] ENV['SCRIPT_NAME'] ||= '/' + File.basename(script) ENV['SCRIPT_FILENAME'] = File.expand_path(script) ENV['REQUEST_METHOD'] ||= 'GET' ENV['QUERY_STRING'] ||= ARGV.join(';') load File.expand_path(script)
こんなふうに実行できます。
~/public_html/bc % PATH_INFO=/test ruby cgienv.rb farm.cgi name=FrontPage cmd=annotate Status: 200 Cache-Control: no-cache Connection: close Date: Fri, 07 May 2004 18:05:43 GMT Content-Type: text/html; charset=euc-jp Server: DummyHttpServer/1.0 Content-Length: 2332 Pragma: no-cache <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja-JP"> 以下略
(03:07)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
なるほど。本体に組み込むか、サンプルに突っ込んでもよさそう。
ちなみに、ApacheがターゲットならSCRIPT_URIよりもREQUEST_URIのほうがいいですね。