今日のなんでやねん
2002-03-31 [長年日記]
凹 たまてばこ改造
たまてばこのRegexpは,更新されたかどうかをチェックするキーワードが指定できるだけで,マッチした文字列から更新時刻が取れるわけではない.つまりsites.cfg中で
Regexp: (\d{4}-\d\d-\d\d \d\d:\d\d)と指定して
更新時刻: 2002-03-31 01:23
という文字列を含むページをチェックしても,たまてばこが更新時刻として認識するのは,2002年3月31日1時23分
Regexpにマッチする部分が変更されたとたまてばこが気付いた時刻になってしまうのである.
もちろん,Regexpにマッチさせたい文字列が時刻形式でない場合にはこのような仕様で充分有効であるし,マッチした文字列から更新時刻を取得しようとするのは間違いなのかもしれない*1.
でも,これじゃ不便なときもあるよね.というか実際超弩級コンダラ・アンテナで困ってるわけだ.ということで,正規表現でマッチさせた文字列から更新時刻を取ってくる機能を追加してみた.パッチはこれ*2*3.
このパッチをあてると,sites.cfgでModified:というオプション*4が指定できるようになる.例えばさっきの例でいうと
Modified: (\d{4}-\d\d-\d\d \d\d:\d\d)というふうに指定しておけば,2002年3月31日1時23分だと認識してくれるようになる.
マッチした文字列からTimeへの変換にはParseDateを使っているので,ParseDateが認識できるような時刻表記にマッチする正規表現を指定すれば,ちゃんと更新時刻を取得できハズだ.
あと正規表現中の()で囲まれた部分がチェックの対象になります.つまり
Modified: 更新時刻:(\d{4}-\d\d-\d\d)とかいう風に指定することも可能です.
凹 はぅっ,やっぱParseDateできないものに対応したいですよねぇ.例のgnu系のやつなら昨晩のパッチで対応できるからいいだろう,と手を抜いてしまいました.
それにしても,たださんといいかずひこさんといい,なぜオレが手抜きしたところをズバっと言い当ててしまうのだろうか… っつか底浅すぎ.>オレ
凹 ということで,実装してみました.まるっきりかずひこさんのアイデアそのままです.パッチはこれ.
Modified-Match: (\d{4})年(\d{1,2})月(\d{1,2})日
Modified-Parsed: \1-\2-\3このように指定できるようになります.ParseDateできるようなパターンをModified-Parsedに指定してください.Modified-Parsedで使えるのは後方参照(\1,\2,\3…)および\0(マッチした文字列全体)のみです.
ちなみに,Modified-MatchのみでModified-Parsedを指定しない場合,マッチした文字列をそのままParseDateに渡して更新時刻を取得します.
凹 うーむ
最近パッチばっかりだな.バカエロを期待している皆様,申し訳ない.
凹 バカ親
今日,床屋で髪を切ってもらってたら,ガキ2人連れの夫婦が入ってきた.どうやらガキの散髪らしい.
このガキ供,自分の番がまわってくるまで店の中を走り回るわ,いろいろ店の備品を触りまくるわ,いざ弟の番がまわってきたら兄の方はその周辺で騒ぎまくるわで,もうものすげー迷惑.
と思うくらいウザい.
にもかかわらず,クソガキどもの親はほとんど注意しないのだ.オカンの方は,2,3回注意していたが,オヤジの方はまるで知らんぷり.
お前なー,ガキの始末もできねーくせに
この役立たずが.氏ね.
こういう親に限って,子供が何か問題を起こすと学校のせいにするんだろーな.
凹 たまてばこ改造パート2
なんか今日はたまてばこ三昧です.今度はtama_outputで%method_abbr%というのを使えるようにするパッチ.
たまてばこでは,tama_outputで%method%と指定したところにH(Head)とかG(Get)などの更新時刻を取得した方法が展開される.そのページの更新時刻をリモートアンテナの情報から取得した場合は,そのリモートアンテナのシンボルがそのリモートアンテナへのリンク…
あー,もううまく説明書けん.とにかく,%method%と書くと
<a href="http://www.tdiary.net/">t</a>
となるところが%method_abbr%と書くと
t
だけになるのだよ.
これ嬉しい人はほとんどいないだろうなぁ.Donut系のブラウザ使ってる場合,更新されたヤツを上からベロベローっとマウスで選択してCtrl-Gで一発で全部開く,とかやるんだけど,いちいちアンテナが開いてウザいのよ.
ま,そういうことです.
このへんで勘弁しといたる.
旧「なんでやねん」はこちら.
| 2001/01
| 2001/02
| 2001/03
| 2001/04
| 2001/05
| 2001/06
| 2001/07
| 2001/08/25まで |
ParseDate できないもの (「2002年3月31日」とか) をどうにかする仕組みがあればさらによいと思います。具体的には<br> Modified-Match:(\d+)年(\d+)月(\d+)日<br> Modified-Parsed: \1-\2-\3<br>みたいな感じの実装になるのかな。
そりゃぁ、プログラマはみんな同じところで同じように手を抜く傾向があるからだろう(笑)