五月雨について

投稿者 akira 2003-10-10 15:01:00 GMT

config.ymlについては、この他にIgnorePathという指定ができるのが便利。IgnorePath指定では、XPath風の記述によって、変更があったかどうかの判定において無視する部分を設定することができる。Last-Modifiedが取れないようなサイト(広告埋め込みとか)で、サイズが比較的よく変わる(tDiaryとか)ページなんかで特に効いてくる。

適切なXPath風の指定をどうやって見付けるかというのはなかなか難しいのだけど、今のところ添付ツールのhtmlignとhtmldiffを使ってトライ&エラーでやっている。

htmldiffは二つのHTMLファイルのdiffを取るもの。見たところ変更がなさそうなのにアンテナで変化を検出していておかしいなあ、と思ったときには、以前のHTMLファイルと今のHTMLファイルを指定してこのツールにかけてやるとよい。今のHTMLファイルはともかく以前のものはどうするのかというと、これはsamidareが保存していてくれる。samidareに--dump-filenames2オプションと、対象としたいサイトのURLを与えて起動すると、最新のものと一つ前のもののファイル名が表示される。これら二つのパスを指定してhtmldiffを実行すればよい。

htmldiffの結果、無視すべき部分が見付かったとする。そうすると適切なパスを作らなくてはならない*1わけだが、この段階ではhtmlignが助けてくれる。htmlignは対象とするHTMLファイルと無視したいパスを指定して実行すると、指定したパスの部分を除外したHTMLと、元々のHTMLのdiffを取ったものを出力してくれる。これによってどういうパスを記述すればよいのかをさぐることができる。

*1 多少の誤検出は無視するという手もある。

Debian(sid)上でsamidare

投稿者 akira 2003-10-10 15:02:00 GMT

sidでならsamidareを試すのも簡単。apt-get install ruby1.8 libzlib-ruby1.8 libyaml-ruby1.8 libxtemplate-ruby1.8すれば、samidareのための環境が整う。

samidareの出力のカスタマイズ

投稿者 akira 2003-08-04 15:01:00 GMT

たまてばこでやっているようにリダイレクトするCGIスクリプトをかますような形で出力させるにはどうするのがいいかな。あと時刻のフォーマットとかも。それから集めた情報をRSSにすることは簡単だと思うのだけど、LIRS形式で出力するにはどうするのがよいだろう。

とりあえず時間を見付けてコードを読もう。

samidareのその後 1

投稿者 akira 2003-08-03 15:00:00 GMT

どうもIgnorePathがうまく効いてくれないなと悩む。で、よく見るとhtmlignと正規表現の作り方が違っていた。こんな感じかな?

--- samidare	3 Aug 2003 08:56:32 -0000	1.70
+++ samidare	3 Aug 2003 16:40:38 -0000
@@ -285,9 +285,9 @@
         if /\[(\d+)\]\z/ =~ step
           n = $1.to_i
           if $1.to_i == 1
-            "(?:\[#{n}\])?"
+            Regexp.quote($`) + "(?:\\[#{n}\\])?"
           else
-            "\[#{n}\]"
+            Regexp.quote(step)
           end
         else
           Regexp.quote(step) + '(\[\d+\])?'

samidare 7

投稿者 akira 2003-08-02 15:00:00 GMT

あたりを付けてsamidareを入手し試してみる。これ、いいなあ。さっそくsamidareに変えちゃおうかな。

xtemplateのdebを作った。

追記: 追いかけていないのでよくわからないのだけど、いつまで待っても終わってくれなくなったことが数回。実行してすぐにsegvをくらったことが一回。「 [BUG] obj_free() called for broken object」が一回。SocketとThreadの組み合わせのせいかなあ。他でもこういうのに出くわすことがあって、Rubyの問題のような気がしているのだけど追いかけるのが大変。

追記2: --single-threadでも「 [BUG] gc_sweep(): unknown data type 0x4023105c(41)」が。ううん。

samidareの設定確認 2

投稿者 akira 2003-08-02 15:01:00 GMT

Last-Modifiedを返してくれないサイトのtDiaryなページは「本日のリンク元」にひっかかってしまうようだ。またRWikiなページについては最新更新からの時間の部分が少なくとも毎日変わる。そのため、いくつかのページに対してはIgnorePathを指定してみた。

で、その時思ったのだけど、IgnorePathやUpdateElementを指定した場合に、何が対象となったのかを表示してくれるテストモード(?)があると便利なのではないだろうか。

たまてばこ

投稿者 akira 2003-05-02 15:00:00 GMT

現行のバージョンはちょっといじりにくい。たまてばこver2はどのくらい開発が進んでいるのだろう。

やりたいことは出力のカスタマイズだから再びchenpiを使うようにしようか。