トップ «前の日記(2006-12-10) 最新 次の日記(2006-12-20)» 編集

Route 477

過去の日記


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でもうまく行くんだけど。

本日のツッコミ(全6件) [ツッコミを入れる]
miyagawa (2006-12-12 05:52)

フィルタプログラムのほうで STDOUT をバッファリングしているんじゃないでしょうか。STDOUT.flush とか呼べばきちんと動くとおもいます。

miyagawa (2006-12-12 05:53)

ちなみに nkf なら -u オプションで。

miyagawa (2006-12-12 06:53)

r1911 でプログラム側で明示的に flush しなくても動くようにしました。

yhara (2006-12-13 20:34)

r1911にて、<br>* ruby -e 'print ARGF.read'<br>* nkf --unix<br>いずれも正しく実行できることを確認しました。素早い対応ありがとうございます。

yhara (2006-12-13 21:33)

っと、Windowsだとまだ動かないみたい?<br>家に帰ったら追試してみます。<br>あと、0.7.17だとnkf -uでもtimeoutしてしまうようです。

yhara (2006-12-14 04:03)

Windowsでも正しく動くのを確認しました。ありがとうございました。


過去の日記