From: matz@... (Yukihiro Matsumoto) Date: 1997-04-07T14:38:30+09:00 Subject: [ruby-list:2646] Re: WWW library まつもと ゆきひろです In message "[ruby-list:2624] Re: WWW library" on 97/04/05, GOTO Kentaro writes: |news はどうしましょう。 簡単なアプリケーションは | ~/.newsrc を見て新しく記事が来てないか調べる chknews.rb の |ようなものやあればとってきてファイルに落すようなものなどです。 pythonのもそうですが,スキームは適当に追加できるようになって いれば良いと思うです.全部のスキームを実装することは最初から 無理だと思いますから. pythonのはURLopenerのサブクラスをつくるようになっていますが, こちらはURLクラスメソッドでスキームと手続きを登録するのはど うでしょう. URL.add_scheme("news", lambda{|url| URLnews.get_newsrc(url)}) # クラス名,メソッド名などはフィクションであり,実在のもの, # あるいは将来の作られるものとは一切関係ありません. |open が何をするかというのも決めないといけません。 |今のところ僕の想像(?)では open の返すオブジェクトは http |なら GET、 ftp なら login 手順の後、ファイル(ディレクトリ)を |RETL(LIST)をした結果のストリームを readlines で得られるような |モノだと思ってますが、どうでしょう。 open の時点でどこまで |操作しますか?GET なり RETL なりまでしちゃいますか? |仮にそうだとして話しを進めると、 待ち方を考える必要があります。 |資源(Resourcce)の取得が終るまでどうやって待ちましょうか。 |何も受信状況をモニターできないまま待つのは辛そうですが。 |ひょっとしてモニターするためにはスレッドという奴が |使えるのでしょうか。 rubyは,perlやpythonにない大きな特徴として,プラットフォーム にほとんど依存しないthreadというのがありますから,これを活用 するとよいのかもしれません.openするとthreadを生成して接続に 行くなんていう実装だとかっこ良いと思います. そうすると接続の指令だけ出して,時間のかかる接続処理はバック グラウンドで行うことができるわけですね.で,接続が完了したこ ろを見計らっておもむろにデータを取り出すと. |どちらにせよお手軽URLライブラリを目指しつつあるようなので |ファイル名生成は欲しい機能です。 ファイル名生成はURLクラスに取り込まない方がよろしいのではな いかと思います.というのもローカルキャッシュとしてセーブした い時と,ダウンロードとしてセーブしたい時と(あるいはまた別の 時と)では,それぞれファイル名生成のポリシーが違うと思うから です. 文字列操作の強力なrubyならファイル名生成のメソッドは改めて必 要もない気もしますが,URLライブラリのとなりにファイル名生成 機能を持つライブラリがあることは望ましいことかも知れません. | > さしあたって実用になるものを作るか、きちんと定義に従った | > ものを作るか、それも大きな問題だなあ。 | > ちょっとしたアプリケーションなのに、まず巨大なライブラリ | > を require してからはじめて動き出す、、、というのもさえな | > いですしねえ。 レイヤーっていうか,ユーザのレベルにあわせたライブラリを復数 提供するのがよいのかも.んで,autoload宣言をしておくと必要に なった時点ではじめてrequireするので,効果的かも. まつもと ゆきひろ /:|)