アットマークITリーダー for ruby
Javaで書いたプログラムをrubyに移植してみた。
JavaだとJakarta関連の依存ライブラリが多すぎて、手軽に入れることはできないので何とかしてスクリプト言語で作りたいと思った。(まあ、そこまで熱を入れて読みたい記事はあまりないのだが)
HTMLの取得・パースやイメージの取得に、Javaでhttpunitを使ったように、rubyでWebUnitを使ってやりたかったが、どうもうまくいかない。仕方がないので、net/httpを使って、htmlからリンク先の取得については自分で書いた。なので、最初はリンク先が相対パスになっていたりしてエラーを出したりした。自分で組むとそういうケースにも全部対応しないといけない。
Javaで書いたロジックをそのまま移行し、rubyの習得もままならない状態だったので、Javaとの違いで苦戦した。どんな簡単な言語でも、空き時間に適用にやるよりも2,3週間ぶっ続けでやらないと使えるようにはならないと思う。慣れると、Javaよりも短く書けるようになる。ただし、短く書けたからといって、生産性が劇的に高まるとは思わない。
Javaで書いたときよりも機能を追加した。取得するカテゴリを選択できるようにした。というかJavaで使っていたRSS Readerが0.91までの対応で、rss0.91にはカテゴリが入っていなかったからなのだが。
rubyのバージョンは、1.8.4、依存ライブラリはRSS Parserで以下からダウンロードしてインストールする。
http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser
プログラム本体は、以下からダウンロードする。
atmark.rb
1ファイルだけで、設定等は直接このファイルを書き換える。
BASE_OUTPUT_DIRを指定し、取得カテゴリ(CATEGORY_ACCEPT)、拒否カテゴリ(CATEGORY_REJECT)を指定し、
ruby atmark.rb
を実行する。
ruby c:\hoge\atmark.rb >>c:\trash\at.log 2>&1
こんな感じでバッチを作って、
at 18:15 /every:M,T,W,Th,F c:\hoge\atmark.bat
at 19:15 /every:M,T,W,Th,F c:\hoge\atmark.bat
でスケジューリングする。
Linuxの場合は、cronで。
不具合があったらコメントください。
あまり需要はないか。
rubyのプログラムの参考にどうぞ。手続き的で、オブジェクト指向的じゃないので、今度リファクタリングしようかと思う。ファウラーの教えに従って、temporary変数は極力削除した。次はクラスの抽出かな。これをもう少し他のコンテンツの取得にも使えるように変えるか。
改変は自由です。
JavaだとJakarta関連の依存ライブラリが多すぎて、手軽に入れることはできないので何とかしてスクリプト言語で作りたいと思った。(まあ、そこまで熱を入れて読みたい記事はあまりないのだが)
HTMLの取得・パースやイメージの取得に、Javaでhttpunitを使ったように、rubyでWebUnitを使ってやりたかったが、どうもうまくいかない。仕方がないので、net/httpを使って、htmlからリンク先の取得については自分で書いた。なので、最初はリンク先が相対パスになっていたりしてエラーを出したりした。自分で組むとそういうケースにも全部対応しないといけない。
Javaで書いたロジックをそのまま移行し、rubyの習得もままならない状態だったので、Javaとの違いで苦戦した。どんな簡単な言語でも、空き時間に適用にやるよりも2,3週間ぶっ続けでやらないと使えるようにはならないと思う。慣れると、Javaよりも短く書けるようになる。ただし、短く書けたからといって、生産性が劇的に高まるとは思わない。
Javaで書いたときよりも機能を追加した。取得するカテゴリを選択できるようにした。というかJavaで使っていたRSS Readerが0.91までの対応で、rss0.91にはカテゴリが入っていなかったからなのだが。
rubyのバージョンは、1.8.4、依存ライブラリはRSS Parserで以下からダウンロードしてインストールする。
http://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser
プログラム本体は、以下からダウンロードする。
atmark.rb
1ファイルだけで、設定等は直接このファイルを書き換える。
BASE_OUTPUT_DIRを指定し、取得カテゴリ(CATEGORY_ACCEPT)、拒否カテゴリ(CATEGORY_REJECT)を指定し、
ruby atmark.rb
を実行する。
ruby c:\hoge\atmark.rb >>c:\trash\at.log 2>&1
こんな感じでバッチを作って、
at 18:15 /every:M,T,W,Th,F c:\hoge\atmark.bat
at 19:15 /every:M,T,W,Th,F c:\hoge\atmark.bat
でスケジューリングする。
Linuxの場合は、cronで。
不具合があったらコメントください。
あまり需要はないか。
rubyのプログラムの参考にどうぞ。手続き的で、オブジェクト指向的じゃないので、今度リファクタリングしようかと思う。ファウラーの教えに従って、temporary変数は極力削除した。次はクラスの抽出かな。これをもう少し他のコンテンツの取得にも使えるように変えるか。
改変は自由です。
- 関連記事
-
- 高速機関、CROSSFIRE (2006/06/04)
- アットマークITリーダー for ruby (2006/05/31)
- トリッキーなコードと芸術的SQL (2006/05/23)
スポンサーサイト