> 何をいじっているかというと、RSSのアップロードの関係。
> #8026で書きましたが、現在、ニフティから直接は読めない板塀のRSSを1日2回、
> 自前でニフティにアップロードしていました。これは定期的な動きなので、なにも
> 変化がなくても自動でアップロードしていました。
> これを、1時間に1回チェックするようにして、そのかわり変化があったときだけ
> アップロードするように書き換えている最中。
この技術開発がうまく行ったらこちらで紹介しようと思っていたのですがね。
うまくいったのに、その後、多忙だったもので、すっかり忘れていました。
技術的なものは、実はもう十数年前に着想していたのですが、ちょっと方向性を
間違えてしまい。そして、その間違った方向性では、その技術を実現できるツール
が見つからないのでそれっきりになっていました。
その間違えた方向性というのが、ネットワーク越しの更新チェック、ということ。
WEBに表示されているものが新しくなったことをどうチェックするか、というところ
が出発点。例えば、WEBにアップロードするときに使うFTPソフト、GUIのソフトで、
ローカルとリモートでタイムスタンプを比較して、新しいファイルだけアップロード
してくれる、というフリーウェアがありました。もうソフト名は忘れてしまいました
が、そこそこメジャーなものがあったと思います。
これと同じような感じで、FTPではなくHTTPで更新チェックができるとうれしいな、
と思っていたのですよ。
ところで、タイムスタンプを比較してごにょごにょ、という場合に使う定番のソフト
といえばmake。ただ、FTPという使用頻度の高そうなプロトコルでのファイル比較に
対応している汎用のmakeのようなソフトすら存在せず、自前のフリーウェアが作成
されている状況なわけですから、HTTPの向こうにアクセスして、などというものは
見つかりませんでした。
そこで、汎用品はともかく専用品なら作れそう、ということで作ったのがNiCeという
ツール。うちのサイトで公開しています。
ただ、これで更新チェックをすると、当然ですが、うちのサーバに対するアクセスが
増えてしまい、あまりうれしくない。なので、現在はこれを使った更新チェックは
行っていません。あまり記憶がありませんが、一時はこれを使ってRSSをアップして
いたかもしれない。していないかもしれない。
では今まで何年もどのようにやっていたかというと、Windowsのタスクスケジューラ
で1日2回バッチファイルを起動。バッチファイルの中はというと、自作のHTTP
ファイル取得ツールであるhttpgetを動かしてRSSを取得し、コマンドラインFTPを
起動してRSSをアップロードする、という形でした。
でもね、気がついてしまったんですよ。
サーバマシンとは異なるマシンでファイルを取得しようとするからHTTPが必要に
なるのだ、と。
つまり、サーバマシン自体で比較するのなら、これは単純なタイムスタンプ比較に
すぎない。
比較するファイルは、ログファイルそれ自体と、アップロード用のRSSファイル。
なんだ、これ、単にmakefileをかいてmakeを起動するだけじゃないか。
とはいえ、今まではその肝心のmakeがありませんでした。
DOS用のmakeはありますが、さすがにそれをWindows上では使う気になれない。
ところが、見つけた、というか、存在に気がついてしまったのです。
ほとんど使うことのなくなった開発環境のDelphi。これ、通常は統合開発環境で
使います。でも、コマンドラインコンパイラもあるし、そのせいでしょう、一緒に
makeも入っているではないですか。
いやぁ、こんなものがあることに気がついたのも、最近話題になったGREPを探しに
開発環境のフォルダを覗いたことがきっかけ。
このきっかけを与えてくれた文太さんとkonnoさんに感謝します。
ということで、試しにmakefileを書いてmake実行。
おや、うまく行かない。
上記のhttpgetでRSSを取得する場合、文字コードの問題が発生するので、パイプで
nkfに流し込んでアップロード用のファイルを作るのですが、Delphiのmakeを使うと、
どうもこのパイプの部分でこけるらしい。
ということで、パイプで直接、ではなくテンポラリファイルを作ってそれを経由
する形にしたら、無事に動き出しました。ラッキー!
アップロード用のコマンドラインFTPまでもmakefileの中に入れてしまいましたが、
順調に動きました。
最後に、今までは1日に2回、タスクスケジューラからバッチファイルを起動する
形でしたが、1時間に1回、makeを起動するような形にタスクスケジューラの設定
を変更して数日間安定監視。うん、無事に動いているようです。
ということで、今までよりも板塀の更新情報のチェック頻度は高くなりつつも、
板塀サーバへのHTTPでのアクセス数を減らすことに成功しました。
うん、こういうの、なんかうれしいな。