Last modified: Sat Jan 8 02:47:46 JST 2005

html_update_check.pl
〜HTML の最終更新情報を更新する〜

[目次| ホーム]

ダウンロード

拡張子が pl なファイルは実行させようとしてしまうみたいですので '.pl' ではなく '_pl' に変更してあります。実際に利用するときにはリネームしてご利用下さい。

公開日 ファイル名 ファイルサイズ
2005/01/08 html_update_check.pl 15.5kB

説明

HTML 文章において、最終更新日が最近のものに色を付けて強調することは よくありますが。しかし、その後更新をほったらかしていると古い情報であるにも 関わらず最近の情報と同じ色のままであることがよくあります。また、 手動で行っているとつい忘れるという事もおこります。ということで、自動化を する目的で作られたスクリプトです。実際の動作の例は私の Web サイトの トップページをご覧下さい。 なお、これは cron で動かすことが前提と なっています。 このスクリプトは

ことに注意をしてください(実際に私は下の理由で一回内容を消してしまったこと があります。あのときは Google のキャッシュに感謝したなぁ…)。従って、 かならずバックアップは取って置いてください。

html_update_check.pl の編集

実際の動作環境に合わせて設定をします。いくつかはコマンドラインオプションにて 指定もできます。以下に変数とその説明をします。

変数名デフォルト説明
$touch_exe /bin/touch touch コマンドのパスを指定してください
$diff_exe /usr/bin/diff diff コマンドのパスを指定してください
$last_word 最終更新日 最終更新日の前に表示する言葉
$check_1_color red 最も最近に更新された日につける色
$check_2_color black 比較的最近に更新された日につける色
$check_3_color #aaaaaa 古い情報の日につける色
$diff_1 1週間 最も最近更新された期間のしきい値
$diff_2 1ヶ月 比較的最近に更新された期間のしきい値
$overwrite 1 1: 上書きをする 0: バックアップファイルを作成する
$last_format 1 HTML ファイル自身の最終更新日の日付の書式
1: yyyy/mm/dd 2: yy/mm/dd
$check_format 2 更新日をチェックする日付の書式
1: yyyy/mm/dd 2: yy/mm/dd
$file_update_mode 0 0: リンク先の更新時刻チェックを行わない 1: 行う

おそらく、何のことか分からない変数もいくつかあると思います。それについては 以下の項目を参考にしてください。

HTML ファイルの編集

HTML ファイルにコメントを埋め込み、html_update_check.pl はそれを読み取って 処理を行います。以下に具体的に例を挙げながら紹介をしたいと思います。

HTML ファイルそのものの最終更新日の表示

作成する HTML ファイルそのものの最終更新日を表示するためには、それを 表示する個所に

<!-- Last Update start --> <!-- Last Update end -->

の2行を追加してください。html_update_check.pl を実行時にこの間に $last_word で設定した言葉に続けて $last_format で定義した書式に 沿って日付が埋め込まれます(例: 最終更新日 2004/12/15)。 <!-- Last Update end --> を忘れると 以下のデータが失われますので注意をしてください。

HTML 文章内に書かれた日付に対して色を付ける

例えば、以下のような HTML 文章(の一部)があるとします。

[04/11/25] <a href="foo.html">about foo...</a> [05/01/07] <a href="hoge.html">about hoge...</a>

そして、更新日の新しい下には目立つ色を、古い上には目立たない色で 日付を表示したいと思います。そのために、以下のように コメントを追加します。

<!-- Update check start --> [04/11/25] <a href="foo.html">about foo...</a> [05/01/07] <a href="hoge.html">about hoge...</a> <!-- Update check end -->

このようなコメントを埋め込んで、html_update_check.pl を実行すると、 実行をした日付に応じて色をつけてくれます。以下を参照してください。

<!-- Update check start --> [<font color="#aaaaaa">04/11/25</font>] <a href="foo.html">about foo...</a> [<font color="red">05/01/07</font>] <a href="hoge.html">about hoge...</a> <!-- Update check end -->

ただし、#aaaaaa や red は $check_1_color, $check_2_color, $check_3_color で定義した色です。色は

に対応しています。日付を判断して font タグを埋め込む作業は <!-- Update check start --> から <!-- Update check end --> の間のみ行います。それ以外に書かれた日付の部分は処理しません。また、この コメントは複数個所書くことができますが、入れ子にはしないで下さい。

リンク先のファイルの更新日に応じて自動で更新日や色をつける

上の例で foo.html や hoge.html にリンクがはられていますが、これらを更新した 際、このファイルも変更する必要がありますが、つい忘れがちです。従って、 自動でチェックが出来れば便利だと思います。それを行うためには 以下のようなコメントタグを追加します(構造を分かりやすくするため空白行を いれてあります)。

<!-- Update check start --> <!-- file check foo.html start --> <!-- date update mode --> [04/11/25] <a href="foo.html">about foo...</a> <!-- file check foo.html end --> <!-- file check hoge.html start --> <!-- date update mode --> [05/01/07] <a href="hoge.html">about hoge...</a> <!-- file check hoge.html end --> <!-- Update check end -->

まず、リンクタグの前後に <!-- file check ファイル名 start --> と <!-- file check ファイル名 end --> を追加します。そして、<!-- file check ファイル名 start --> の次の 行に <!-- date update mode --> を追加します。以下、リンクに応じてこの3行を追加していくことになります (上の例と同様それぞれのコメントタグは入れ子にしないで下さい)。 当然ですが、ローカルなリンクのみにこれは有効です。

ただしこの機能を有効にするには $file_update_mode を 1 にするか後で紹介するコマンドラインオプションで -f か -F を 指定する必要があります。これらの設定がない場合はただの「コメント」 として処理されます。

html_update_check.pl の実行

html_update_check.pl 及び HTML ファイルの編集が終了したら、実行をします。 使い方は以下の通りです。 実際に実行をする前に「html_update_check.pl のテスト」 の項目を見てください。

html_update_check.pl [オプション] <HTML ファイル>...

オプションは以下のものが用意されています。

オプション説明
-D <日数> 古い情報のしきい値 $diff_2 に対応します(単位が日なのに注意)。
-F 更新日チェックをリンク先のファイルの最終更新時刻で 行います。<!-- file check ファイル名 (start|end) --> タグがない場合は、更新日チェックを行いません。
-c <番号> $check_format に対応(上の説明を参照)。
-d <日数> 最新情報のしきい値。 $diff_1 に対応します(単位が日なのに注意)。
-f 更新日チェックをリンク先ファイルの最終更新時刻で行います。 <!-- file check ファイル名 (start|end) --> タグがない場合、通常のチェックを行います。
-l <番号> $last_format に対応 (上の説明を参照)。
-n チェックした HTML ファイルの更新時刻を元に戻します。

通常は -n オプションをつけないと最終更新時刻がどんどん新しくなって しまいます。トップページの更新は

html_update_check.pl -n -f index.html

として実行をしています。

html_update_check.pl のテスト

冒頭にも書いていますが、このスクリプトは上書きをしてしまうため、いきなり 実行をしてファイルの内容が消えてしまうということが起こりえます。それをさける ために、必ず最初に $overwrite を 0 にして実行をしてみてください。その結果、 変更前のファイルがバックアップとして <HTML ファイル名>_(UNIX time) というファイル名で保存されます。実行に失敗したときは、このファイルを利用して 復活をさせてください。

なんどか試行錯誤をした後、大丈夫だという確信を持ったら $overwrite を 1 にして実際の運用を行ってください。その場合も、 万が一に備えて、バックアップは常に用意しておくとよいでしょう。

実際の運用

当然ですが、html_update_check.pl を実行しないことには情報が更新されません。 実行を定期的に行うために、UNIX (またはその互換のシステム)には cron という 便利な機能がありますので、それを利用するとよいでしょう。例えば index.html を3時間おきに更新したい場合

0 */3 * * * html_update_check.pl -n -f index.html

のように crontab に登録することになると思います(当然ですがパス等にも 注意して下さい)。cron に関する詳しい情報はさまざまな書籍や Web に 情報がありますので、そちらを参照してください。

注意事項

繰り返しになりますが、正しく設定をしないと一瞬にしてファイルの内容を 消し去ってしまう可能性がありますので、必ずバックアップをとりかつ、 テストをした上で運用を行ってください。

その他

姉妹品?として、CSS 対応版の html_update_check_css.pl もあります。 この場合フォントの指定をスタイルファイルで行えますので便利です。 スタイルファイルを書ける人はそちらを利用するとよいでしょう。 機能や設定方法はほぼ同じです。


cachu@cachu.xrea.jp