uttsu.com > uttsuの日記 >

2002年8月13日

2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月

2002年8月13日

# 日記システム

Perlにもだいぶ慣れてきたので、テキストファイルを読み込んで日記ページを作成するスクリプトを作ってみた。スクリプトの概要は以下のとおり。

コンセプト:

主な機能:

例えば、ここまでの日記は次のように簡単なものになっている。

 日記システム

Perlにもだいぶ慣れてきたので、テキストファイルを読み込んで
日記ページを作成するスクリプトを作ってみた。
スクリプトの概要は以下のとおり。

コンセプト:
・Simpleな設計、データ形式にする
・データファイル自体が普通に日記として読めること

主な機能:
・セクションごとにアンカーを出力
・最新、月毎、日毎のページを出力する
・URL自動リンク機能
・・で始まっている行は、自動的に<ul><li>…</ul>に変換
・<pre>〜</pre>はそのまま出力
・&, <, >などはエスケープ文字に置き換える
etc…

本当は、diary/20020813.htmlのようなHTMLファイルのURLでアクセスしてもCGIでそのファイルを出力する仕組みにしたかったんだけど、それにはdiary/○○.htmlへのアクセスをCGIへ渡す必要があり、その設定が面倒そうなので断念。

HTMLファイルへのURLをCGIの引数として受け取る方法にはもう一つあって、上の例だと、diaryという名前のスクリプトを用意すればいい。こうすると、diary/20020813.htmlというアクセスがあった場合、そのファイルが存在しないので、diary(というCGI)が実行されることになる。CGI側でURLを受け取るには環境変数PATH_INFOを参照すればいい。

他に考えたのは、URLの?のあとに日付けを付けて読みたい日を指定する方法。URLは例えば/diary/?20020813のようになる。この方法は簡単に実装できるけど、検索エンジンによっては?の付いたURLだと拾ってくれないものがある。ということで今回は予めHTMLに変換しておく方法を採用。URLに?をつけるバージョンも作ってあるので、もう少しまとまったら公開しようかな。

# Referer消去リダイレクト

2ちゃんねるやポータルサイトのウェブメールサービスなどで、リンク元のURLであるRefererを渡さずにリダイレクトするCGIが使われているけど、それにはLocation:でなくRefresh:を使っているみたい。実はRefreshの場合もRefererを渡すか渡さないかはブラウザ次第なのだけど、ちょうどExplorerとNetscapeで渡さないようになっているので、大半の利用者に対応できるらしい。スクリプトの例は以下。アクセスは、redirect.cgi?URLのようにすればOK。

my $url = $ARGV[0];
print "Refresh: 0; URL=$url\n\n";

2005年 8月
2004年 5月
2003年 11月, 10月, 8月, 5月, 4月, 3月, 2月, 1月
2002年 12月, 11月, 10月, 9月, 8月, 5月, 3月, 2月, 1月
2001年 6月, 5月, 4月, 3月

Copyright (C) Takashi Utsunomiya. All Rights Reserved.