2006-12-11
■ [Plagger] WindowsにPlaggerを入れる手順 (2006年年末版)
Windows版のPerl(ActivePerl)にはppmというパッケージマネージャがあって、非常に簡単にインストールできます (パッケージを提供してくれているppm.tcool.orgの中の人に感謝)。
下記の情報は2002年12月(Plagger 0.7.17)時点のものなので、最新版では事情が変わっているかも知れません。 まぁ何かあったらきっと誰かが記事(もしくは公式Wikiとか?)に書いてくれるでしょう。きっと。
必要な知識
- MS-DOSプロンプトが使える
- tar.gzが解凍できる
ActivePerlを入れる
最新版のはppm4が入っていてややこしいらしいので、ppm3の入っている5.8.7.815をインストールします。
ppmでPlaggerを入れる
C:\>ppm ppm> rep add tcool http://ppm.tcool.org/server/ppmserver.cgi?urn:PPMServer Repositories: [1] ActiveState Package Repository [2] tcool ppm> rep up tcool Repositories: [1] tcool [2] ActiveState Package Repository ppm> install Plagger ... ppm> q
数十分かかるので気長に待ちましょう。途中でdllをダウンロードするか?みたいに聞かれたらEnterを押してください。
assetsを入れる
現時点ではppm経由ではassetsが入らないので、 Plagger-0.7.17.tar.gz をダウンロードし、Plagger-0.7.17\assets を適当な場所(C:\Perl\site\lib\Plagger\ とか)にコピーしてください。
使ってみる
以下の内容を sample.yaml という名前で保存します。(c:/perl 等はインストールしたフォルダに合わせて書き換えてください)
global: plugin_path: - c:/perl/site/lib/Plagger/Plugin/ assets_path: c:/perl/site/lib/Plagger/assets timezone: Asia/Tokyo log: level: info plugins: - module: Subscription::Config config: feed: - url: http://d.hatena.ne.jp/keyworddiary/Plagger?mode=rss #一度送信した記事を除く場合 # - module: Filter::Rule # rule: # module: Deduped #本文も取ってくる場合 # - module: Filter::EntryFullText? - module: Publish::Gmail config: mailto: yhara@example.jp mailroute: via: smtp host: (プロバイダのメールサーバのアドレス)
MS-DOSプロンプトを開いて、Plaggerを実行してみます。
C:\> plagger -c sample.yaml Plagger [info] plugin Plagger::Plugin::Subscription::Config loaded. Plagger [info] plugin Plagger::Plugin::Publish::Gmail loaded. (略) Plagger::Plugin::Aggregator::Simple [info] Fetch http://d.hatena.ne.jp/keyworddi ary/Plagger?mode=rss Plagger::Plugin::Aggregator::Simple [info] Aggregate http://d.hatena.ne.jp/keywo rddiary/Plagger?mode=rss success: 21 entries. Plagger::Plugin::Publish::Gmail [info] Sending はてなダイアリー - 「Plagger」を 含む日記 to yhara@example.jp
のようになったらOKです。指定したメールアドレスにはてなの新着日記が送信されたことと思います。
注:
- 以上の手順でインストールできるのはPlaggerの標準機能のみです(プラグインによっては追加のライブラリを必要とするものがあります)。
参考:
■ [Plagger] Filter::Pipeがうまく動かない
なんかタイムアウトとか言われる。
調査したのは
- Win32 + Plagger 0.7.17
- Linux + Plagger 0.7.15
で、エラーメッセージは
- Windows
IPC::Run: timeout on timer #1 at C:/Perl/site/lib/IPC/Run.pm line 2932
- Unix
Plagger::Plugin::Filter::Pipe [error] filter timeout
という感じ。
パイプ先のプログラムは、タイムアウトエラーになるのが
- ruby -e "print $stdin.read"
- nkf --unix
- /usr/bin/nkf
で、OKなのが
- cat
- tee /tmp/asdf
とか。むー。Publish::Pipeの方はrubyでもnkfでもうまく行くんだけど。
フィルタプログラムのほうで STDOUT をバッファリングしているんじゃないでしょうか。STDOUT.flush とか呼べばきちんと動くとおもいます。
ちなみに nkf なら -u オプションで。
r1911 でプログラム側で明示的に flush しなくても動くようにしました。
r1911にて、<br>* ruby -e 'print ARGF.read'<br>* nkf --unix<br>いずれも正しく実行できることを確認しました。素早い対応ありがとうございます。
っと、Windowsだとまだ動かないみたい?<br>家に帰ったら追試してみます。<br>あと、0.7.17だとnkf -uでもtimeoutしてしまうようです。
Windowsでも正しく動くのを確認しました。ありがとうございました。