In-Reply-To: [ruby-list:6437] Re: simple_chat_server

原さん、おはようございます。

>>[ruby-list:6435] Re: simple_chat_server
>>From: Shin-ichiro HARA <sinara / blade.nagaokaut.ac.jp>
>>
>>で、本来は http-lib.rb, html-lib.rb などという立派な名前のライ
>>ブラリを作りたいのですが、、、と言いつつ時間がないので放ったま
>>まです。そこでさしあたって、細かい関数をモジュールとして作って
>>しまったらどうでしょうか。名前は後で邪魔にならない様にあえてせ
>>こくして、
略
>>などを入れます。差し当たっての前提措置を標準ライブラリに入れ
>>るのは気分は良くないかも知れないけど、気楽に書き足せるし、後
>>で改めて大きなライブラリを書くときも邪魔にはならないのではな
>>いかな。どうでしょうか?

個人的には、一応 1.1 は ruby 自体もベータ版ですし、標準ライブラリもあ
る程度は実験的な動きがあっても良いのではないかと思っています。

また、取り込むかどうかの判断はまつもとさんがされているわけですから、そ
の扱いを気にするのは後回しにして、まずはライブラリを書いてしまうという
事で良いと思います。

ということで、頑張って作っていきましょう。

とりあえず、Perl Resource Kit の Module Reference を見てみると
World Wide Web, HTML, HTTP, CGI, and MIME という分類があり、

HTTP::Daemon, HTTP::Headers, HTTP::Message, HTTP::Request,
HTTP::Request::Common, HTTP::Response, HTTP::Status とあり、
HTTPD::Autben, HTTPD::GroupAdmin, HTTPD::UserAdmin ときて、
HTML::AsSubs, HTML::Element,... (ここから略して) Apache::...,
CGI::..., LWP::..., MIME::..., Netscape::..., URI::..., WWW::...
等となっています。

さて、どうしましょうか。折角実績のあるものがすでにあるので、これらをこ
つこつと移植していくのが無難なのでしょうけれど。

>>あ、それから cgi-lib.rb ですが、require "shellwords.rb" する
>>のは必要な時にだけにした方がいいかも。

あ、そうですね。後で見てみます。

>>[ruby-list:6437] Re: simple_chat_server
>>From: Shin-ichiro HARA <sinara / blade.nagaokaut.ac.jp>
>>
>>この2つはどちらかというと URIUtil か URLUtil とすべきですね。(^^;
>>そうすると HttpUtil, HtmlUtil, URIUtil の3本立てかあ。つらいなあ。
>>軽薄ながらまとめて wwwutil.rb とするかな。

上記のような感じで、URI::Escape という所にありました。きちんとわけると
3本では済まないのですね。とりあえず、cgi-lib.rb に良く使う物を追加し
ていって、CGI.rb を目指すというあたりが現実的なのかも。使う方もとりあ
えず1つを読み込めば良いというのは使いやすそうですし。(まずは Ruby の
普及の為に)

----------
ユーザー情報を1つの変数にまとめたいと思っていたので、その変更のついで
にクラスを使わないタイプに変更しました。

また、参加メンバーの同時表示機能や、自分の発言の表示色変更等、少し機能
拡張もおこなったので、200 行をちょっとオーバーしてしまいました。あ、そ
うそう。もし試される方は、Netscape で見てください。MSIE ではまだ不具合
があります。


begin 755 simple_chat_server.rb.gz
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
IS6+T"ON%*>MIV.,U\WW7?X,#,7I\_";QDTJ8^PN1KG\!;J"THO`6````
`
end


青山 和光 Wakou Aoyama <pxn11625 / niftyserve.or.jp>