SweetPotato::Plagger このページをアンテナに追加 RSSフィード

2007-07-01

[] Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える  Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える - SweetPotato::Plagger  Publish::FTPでは越えられないSOCKSの壁をFFFTPの力を借りて越える - SweetPotato::Plagger のブックマークコメント

いくつか加筆訂正。

あと,実際に運用してみたところ,少なくとも私の環境では,ミラーリングアップロード時にFFFTPが固まってしまう問題が起きやすいことが分かった。どうしたものか。

きっかけ

現在の私にはちょっと理由があって,Plaggerが使える環境がFirewallの中にしかない状況にある。そしてFirewallの外に出るためには,HTTPならHTTPプロキシが用意されているのだが,それ以外のプロトコルについてはSOCKSサーバしか用意されていない。

このSOCKSサーバが曲者で,通常のNet::FTPではどんなにオプションを指定しても越えることができないらしく,越えるには専用のSOCKSライブラリをリンクしてperlをコンパイルしなければならないらしい。

この事実は「CustomFeed::GoogleCalendar→Publish::Feed→Publish::FTPで最新イベントをフィード配信だ!」みたいなことをもくろんでいた私の前に立ちはだかった。Linux環境ならまだしも,Windows環境でActivePerlを使っている自分にはきつい話だ。自宅鯖なんて管理が面倒なものを持つ気にもならない。

そこで考えたのが,FFFTPを利用したFTPアップロード。実はFFFTPはコマンドラインからも利用することが可能で,しかもSOCKSに対応している。perlの再コンパイルよりはるかに手軽だ。

FFFTPの設定

まず,FFFTPのメニュー「オプション」→メニュー「環境設定」→タブ「FireWall」からSOCKSの設定をする。この辺の設定はネットワーク管理者に聞こう。

次に接続ホストの設定。基本的にいつも通りだが,以下の3点に気をつける。

  1. 「基本」タブの「ホストの設定名」をメモっておく(以下「myhost」とする)
  2. 「基本」タブの「ローカルの初期フォルダ」「ホストの初期フォルダ」は,それぞれアップロードするファイルが置いてあるローカルの/置かれるホストのフォルダを指定しておく。
  3. 「拡張」タブの「FireWallを使う」チェックボックスをオンにしておく。

そしてFFFTPが存在するディレクトリにPATHを通す。これはWindowsの環境変数の設定から行う。

これで準備完了。コマンドラインから以下のように入力すると,FFFTPはmyhostの設定を使用して(-s "myhost")ミラーリングアップロードを行う(-m)。これはローカルとホストのフォルダの内容を同期させるものだ。

ffftp -s "myhost" -m

確認メッセージが出るので,内容をよく確認した後にアップロードを行おう。アップロードが終わったらFFFTPも終了しよう。

ミラーリングの対象となるフォルダは,先ほど接続ホストの設定で指定したローカルとホストのフォルダになる。したがって,このローカルフォルダをPublish::FeedやPublish::iCalなどの出力先としておけば,Plagger実行後に上記のFFFTPコマンドですかさずファイルをアップロードできるわけだ。

バッチ化

とは言っても,Plagger実行毎にコマンドを打つのも面倒なので,バッチ処理ができるようにしておこう。バッチ処理のためには以下の内容のファイルを用意する。ここではPlaggerのコンフィグファイルを仮にconfig.yamlとしており,このファイルはバッチファイルと同じディレクトリにあるものとする。

CALL plagger -c config.yaml
CALL ffftp -s "myhost" -m -f -q

FFFTPの起動にさらにオプションが追加されているが,こうすると確認メッセージが表示されず強制的にミラーリングアップロードが行われ(-f),アップロード終了時にFFFTP自身も終了する(-q)。

あとはこのバッチファイルをwronに登録して定期的に実行すれば,いつでもできたて新鮮なフィードが得られるってわけだ。

この技を使って,近日中に本家ブログにカレンダーのフィードを設置する予定。

nyarla-netnyarla-net2007/07/01 10:27自分も同じ名前で似たようなプラグイン作ってます。中身が微妙に違いますが。
http://nyarla.net/blog/plagger24

SweetPotatoSweetPotato2007/07/01 10:47しまった!車輪の再生産になっちゃうかもしれない!
nyarla-netさんは比較にcmpを使ってらっしゃいますが,これは日付(date)での整列も可能ですか?

nyarla-netnyarla-net2007/07/01 12:57多分できないかと。
僕の作ったプラグインの場合、指定されたプロパティを単純に比較しているだけなので、そのあたり込み入ったことが出来ないと思います。

まあSweetPotatoさんのか僕のかどちらかをベースにしてくっつけてしまえば良いと思いますが。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070701

2007-04-15

[] ちょっと前からGmailの全文表示機能がなくなっている 15:48  ちょっと前からGmailの全文表示機能がなくなっている - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  ちょっと前からGmailの全文表示機能がなくなっている - SweetPotato::Plagger  ちょっと前からGmailの全文表示機能がなくなっている - SweetPotato::Plagger のブックマークコメント

Plaggerで取得した情報はいつもGmailに送ってチェックしてるんだけど,ちょっと前から長いメールの全文を読む機能が無くなってる。少なくとも見つけられない。その代わりにメールが途中で切れてしまっている。ヘッダ情報を見る限りでは全文ちゃんと入ってるのに。

情報量の多いページだとチェック漏れがありそうで怖い。BreakEntriesToFeedsで分割する手もあるけど,メールの量が多くなるのは嫌だし,どうしたものか。

同じことで悩んでいる方がいた。

全文表示プレビュー機能のGreasemonkeyを使っても同じだった。

暫定的に,Publish::Feedでローカルにフィードを出力して,Apacheを用意してローカルのRSSリーダーからも読めるようにした。livedoor Readerみたいなキーボードショートカットが欲しいとなるとフレッシュリーダーがいいのかな。インストールがちょっと面倒だけど。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070415

2007-01-27

[] Filter::WriteSource(仮)を使ってみた 03:42  Filter::WriteSource(仮)を使ってみた - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  Filter::WriteSource(仮)を使ってみた - SweetPotato::Plagger  Filter::WriteSource(仮)を使ってみた - SweetPotato::Plagger のブックマークコメント

つまり,

** assets/plugins/Filter-EntryFullText/hoge.yaml

hogeをfugaしてpiyoする。

>||

...

||<

こんな感じのはてな記法で書かれた部分のソースコードをファイルに保存するということかな。

このフォーマットが変わらない限りは,ファイルにコピペする手間が省けるわけだから便利だ。

サンプルconfigにうちのRSSが指定されていたので,実際に試してみた。

config.source.yaml

Filter::Ruleでソースコードが存在するエントリを絞り込んで処理したかったんだけど,両Filterのソースとプラグインの実行フェーズを見ると,

  • Filter::WriteSource: update.entry.fixup フェーズにて実行
  • Filter::Rule: smartfeed.feed フェーズにて実行

と,Filter::Ruleの方が後に実行されるらしい。それじゃあ意味ねーよということで以下のソースではFilter::Rule部分をコメントアウトしてある。

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://plagger.g.hatena.ne.jp/SweetPotato/rss2
# - module: Filter::Rule
#   rule:
#     expression: $args->{entry}->title =~ /(?:scraper|upgrader)/
  - module: Filter::WriteSource
    config:
      dir: ./src

実行結果

ディレクトリ ./src/$feed_dir/$entry_dir (2つの変数にはdigestが入る)の下に,確かにファイルが生成されていた。

h4とpreの間に段落が入っている場合も,preの内容が正しく保存された。

ファイルの先頭に必ず改行が入るのはなぜだろう。まあ実行に際しては問題ないからいっか。

h4に日本語が含まれているとファイル名が化けるっぽい。「環境」が「迺ー蠅」に,「結果」が「邨先棡」になっていた。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070127

2007-01-16

[] さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし 23:18  さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし - SweetPotato::Plagger  さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし - SweetPotato::Plagger のブックマークコメント

さもなくばこんなエラーが出る。

Plagger::Plugin::CustomFeed::Config [error] doesn't have either 'title' nor 'link'

例えばこんなassetsは,titleもlinkも指定されていないのでアウト。

match: http://www.example.com/
extract_xpath:
  body: //div[@class='entry']

[] CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない 01:25  CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない - SweetPotato::Plagger  CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない - SweetPotato::Plagger のブックマークコメント

以前のCustomFeed::Config->aggregateにあったローカル変数が,新しいバージョンではなくなっていたことに気づいた。$urlとか平気でextract_after_hookに入れてたので,念のため全面的にassetsを見直し中。

あとYAMLもmatchがcustom_feed_handleに代わっていたりするから書き直さなきゃならんなー。このブログで公開してる野良assetsは「下位互換性のため」という言葉でしばらく逃げてみる(ひどい)。

誤解を招く書き方だったので追記。

YAMLは以前のCustomFeed::Configの変数名でも問題なく,かどうかは分からないけど,動作する。

けど今後は新CustomFeed::Configでの変数名を使ったほうがいいよねという話。

SeacolorSeacolor2007/01/18 12:46> $data->{title}と$data->{link}が必須
 これは仕様だったのですが外した方が良いでしょうか?
titleやlinkがセットされないケースを想定していなかったのですが……。

SweetPotatoSweetPotato2007/01/18 22:56「情報本体が得られればそれで」的思考でtitleをセットしないってことはあるかもしれません。linkもFilter::ForcePermalink(自作野良プラグイン)とかで適当にセットしたり。
ただ,それが仕様であるのなら無理に変更される必要はないと思います。必要であれば個々人でソース書き換えてカスタマイズできますし。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070116

2007-01-12

[] みんないつPlaggerを定期実行してる? 19:11  みんないつPlaggerを定期実行してる? - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  みんないつPlaggerを定期実行してる? - SweetPotato::Plagger  みんないつPlaggerを定期実行してる? - SweetPotato::Plagger のブックマークコメント

私は1日4回,こんな感じに。

  • 8:00: 朝大学で読む(朝Pla)
  • 12:00: 昼休みに読む(昼Pla)
  • 18:00: 帰宅して夕飯前に読む(夕Pla)
  • 22:00: メインサイトの更新前に読む(夜Pla)

少し前までは0:00や2:00にも実行してたけど,夜更かしの原因になるのでやめた。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070112