From: gotoken@... (GOTO Kentaro) Date: 1997-03-30T21:43:03+09:00 Subject: [ruby-list:2507] Re: WWW library 後藤です '97年03月30日(日) 午後06時頃、原さんがおっしゃるには: > > 僕が想像している基本方針としては URL をネットワークな > > オブジェクトにしたいなら, まず基本的なスキームを扱う仕様を > > 決めてそれで Mixin するのがいいのではないかと思います. > モジュールにするということですか?URL クラス自体は、ホスト名、 > ポートなどのリソースや、ソケットハンドル、接続状況の状態など > を保持しているはずですから、モジュールでなくクラスにすべきで > すよね。それとも、Socket を必要としない部分をモジュールにす > るということかな。 各スキームはモジュールで用意して、URL自体はクラス URL にする というつもりでした。 > ポリモルフィズムを考慮するとはどういう意味でしょうか? 日本語めちゃくちゃでごめんなさいです。 仮に、URL.open(urlspec) で作られるインスタンスのメソッドを read(), readline(), readlines(), close(), info() の5つだと します。大事なのは読みと状態を知ることですね。 でも urlspec で決まるスキームによっては、そのプロトコルの 違いから特化されたメソッドも欲しいわけで、そのような スキーム間の差異をどうやって処理するかが気になります。 これを全部やっつけるような少数の汎用なメソッドを多態で 作り込むか、それとも雑関数の集まりを URL.ftp_TYPE(typespec) みたいな命名法で埋め込んでしまうかどうかです。 もし、python に習うなら URL は細かいことは関知せず、 そういったものは個別にクラスを用意してそいつらに任せると いうことになります。 やっぱ、こっちがいいのかなぁ。 さらに仮に python 流に簡単なインターフェイスだけ作るにしても 例えば URL.open("ftp://...") するためには username と、 passwd をあらかじめ設定しないといけないといったライブラリの ユーザが知るべきマナーも結構ありそうです。 > /usr/local/lib/ruby に入れるラ > イブラリとしては、 > > (1)なるべくシンプルであること > (2)ユーザーによる拡張が容易なこと > (3)実用的なこと > > が必要だと思いますが、(3)を立てて、最初から timeout とか > 割り込みに対する処理を書き込んだり、(2)を立てて、インタ > ーフェースをたくさん作り込んだりすると、(1)が失われてし > まうんですよね。 これは原さんのもう一方のお返事[ruby-list:2505]の方で 続けて考えていくといいと思います。 > たとえば、私が作りかけている hcp.rb(ホーム > ページの再帰的取得プログラム)では、イメージをダウンロード > 中に、ftp の hash の様に # マークを出力します。この手の事は > ブラウザを作るときも必要ですが、その様な機能を後で簡単に付 > け加えたりできるライブラリであって欲しいと思います。しかし、 > そのためにベーシックな url-lib.rb が不自然な形になって欲し > くはないわけです。この辺は ruby の達人にコツを教えていただ > きたいところです。 そうですね。 僕も HTML パーサーモジュールが欲しいなぁと 思ってますが、どれくらい SGML な部分を作るべきか迷ってます。 DTD を読めるようにしとかないと苦労しそうなのですが、 HTML 2.0 DTD の範囲では SGML のホントにちょっとしか使ってないし。 手元に ISO の仕様書がないのであんまり分からないし。 > このさい(1)、(2)を捨てて、徹底的に作り込んだ、メッソ > ッドのデパートにしてしまうという手もあるかな?:-) でも、巨 > 大なライブラリだと、そのライブラリを使いこなすより自分で書 > いちゃった方が早いなんて思われるのが関の山で。 たしかにデパートはいいんですけど、ユーザは調べるのが 大変そうですね。 探すべきか書くべきかといった判断も。 個人的にはいろんな引数の善し悪しを調べてくれるものも含んだ RFC 番号が名前についたようなライブラリもあると後の開発には 便利な気もします。 これは欲張りすぎですかねぇ。 > ライブラリの規模、その上でどんなアプリケーションを作りたい > かといのもある程度決め手おいた方がいいですかね。 そうかも知れませんね。 代表的なスキームとアプリケーションの規模を考えとくのは 大事そうです。 -- 後藤