27日の続き。
アクセスに応じてサーバー内のyyyymmdd_n.txtというファイルからyyyymmdd_n.htmlというHTMLを動的に生成して出力することの欠点の一つに「ファイル名から内容を推測できなくなる」というのがあるけど、ローカルで作り手の立場としての解決策を思いついた。原稿ファイル名をURLの拡張子を除いた部分と全く同一にしておく必要はないので、例えばyyyymmdd_n[文書のタイトル].txtなどのように[]内にタイトルを書いておいて、URLとして扱うときにはそれを除いてやればいい。この方法だとカッコをファイル名中のどの位置に付けることもでき、それによってファイル名でのソート順を操作することもできるし、実装も簡単にできる。さらに、半角のカッコを区切り記号として使うことにより、マルチバイト文字が含まれるファイル名がサーバー側で文字化けしても正しい動作が見込める可能性が高くなると思うので、ファイル名にマルチバイト文字を使うことができるし。
また、文書の量が増えてきたら適当なディレクトリ(yyyymmなど)を作って原稿ファイルを分類して保存することになるのだけど、インデックス用のページなど更新頻度が高い文書については原稿データ用のルートディレクトリに置いておくと更新に便利そう。原稿ファイルはデータ用ディレクトリ以下から再帰的に検索されてURLには全く影響を与えないようにしてあるので。
ということで早速実装した。
友人に貸しているURLでもWeb Document SystemとWeb Diary System(いずれも造語)を使えるようにしてみた。
単にCGI用のファイルを設置するのではなく、URL Rewritingを用いてスマートに実現。スクリプト本体はユーザーからは見えない場所に置き、ユーザーは各自の公開用のディレクトリ中にdiaryというディレクトリを作って、そのディレクトリ以下にyyyymmdd.txtという原稿ファイルを置いておけば自動的に日記のページができる仕組み。各種設定は/diary/conf.cgiというファイルを編集して行う。一応設定用のファイルをユーザー用ディレクトリに用意してユーザー自身が設定できるようにしたけれど、このファイルもユーザーから隠蔽することもできるので、単に/diary/というディレクトリ以下に原稿のテキストファイルを置けば全自動で日記のページが生成されるという(ユーザーから見れば)魔法のような使い方もできる。見栄えは外部スタイルシート(/diary/style.css)でカスタマイズ可能。
でも、そのサービスを利用せずに同じURLで日記を書きたいこともあるだろうし、その場合は設定用ファイルを特殊な名前(/diary/conf.cgiなど)にしておいて、そのファイルの有無によってサービスを利用するのかを判断できそう。しかもファイル有無の判断はmod_rewriteの機能で実現できると思うので、CGIスクリプト側に手を加える必要はなく実装もスマートにできそうだし。
「明治生命 - 名前ランキング2002」。男ではやたらスケールの大きそうな名前が多いなぁ。女では「子」離れがここまで進んでいるとは。
「生まれ年別の名前ベスト10」を見ると、1980年代あたりから男女とも傾向が変わってきているのがわかる。男では「翔」、女では「彩」という文字のつく名前が上位に現れてきて、1995年を過ぎたあたりからはもう以前とは全然違うと言ってもいいくらい。
同音の名前でも漢字のバリエーションが豊富なのも特徴みたいだけど、海外でも通用する音の名前が人気あるのも興味深い。
今までは単発コンテンツなどの文書にURLをつけるのがぼくにとってはなかなか難事業だったのだけど、ルートに直にyyyymmdd_n.htmlというURLを作ることにした。単発のコンテンツなどはここに入れるつもり。
これまでは一つディレクトリ(例えばdocやarticleなど)を作り、そこにyyyymmdd_n.htmlというURLを作るのがいいかなと思っていたけれど、カテゴリーが画しにくいコンテンツなどもあるのでディレクトリ名のネーミングがなかなか難しい。
それでルートに直接置くという方法にたどり着いたのだけど、これにもいくつか考慮事項があった。
この中でぼくにとって一番大きかったのは最後のインデックス用ページのURLの問題で、もしディレクトリを作ってその中にページを置くのだったら例えば/doc/webdesign.htmlなどのようなURLを気軽に作れる。でもページをすべてルートに置きたいのだから、/doc/のようなURLは作りたくないわけで、もし作るのだったらはじめからそのURLにページを置けばよいことになる。
この問題をしばらく考えていたのだけど、インデックスページのURLも他のページと同様/yyyymmdd_n.htmlというURLにすればいいと思いついた。これだとルートディレクトリに余分なファイルを置かなくていいし、URLのネーミングの問題も解決しているので一石二鳥だし(その後ネットで調べてみるとすでにこの方式をずいぶん前から採用している人があって恐れ入ってしまった)。
この方式の優れているところは、
ということ。原稿ファイルは実際には他のディレクトリにまとめて置いてあるのでローカル側でファイルに埋もれるといった心配はなく、アクセスに応じて動的にHTML文書に変換されて出力される仕組みになっていて、ページ記述の手間が少し省けるようになっている。さらに、文書以外のリソースのURLもこの方式にしたがうようにした(/yyyymmdd_n.jpgなど)。
あとは肝心の文書(中身)だけである。
県庁所在地における初日の出の時刻が国立天文台から発表されました。
Microsoftの新プロジェクトで、『マイライフビッツ』というのがあるらしい。なんでも、
マイライフビッツは、撮った写真やホームビデオ、閲覧したウェブページ、書き送った電子メール、かけた電話、支払った請求書など、個人の生活の主要部分をコンピューターの記録ディスクに保存することを目指している。
http://www.hotwired.co.jp/news/news/culture/story/20021210203.html
とのこと。つまり日常の記録をデジタル化して保存することで、「自分ログ」とでも言えそう。とても興味深い。
ところで、この中で「閲覧したウェブページ」を記録するというのは実はぼくは少し前から試している。記録といっても特別なことではなくて、以前は直接ブックマークに登録する方法をとっていたけれど、それだと興味をもったすべてのページを保存するなんてことは到底できないので、今ではテキストファイルにページのタイトルとURL、それに必要があれば概要などを箇条書きで記録するようにしている。
この方法を始めてから日が浅いのでまだ効果の程はわからないのだけど、あとから簡単に検索できるというデジタルの強みが生かせそうな気がする。興味をもったURLの他にも日頃思いついたちょっとしたアイデアや便利なワザなんかも書き留めているので、これにデジカメで撮った写真などが加わればだいぶ(と言ってもまだまだ違いがあるのだけど)「マイライフビッツ」に近づきそう。ディスク容量の問題が解決されれば、ビデオ映像なども躊躇なく保存できるし。
以前博物館学の講義で聞いたところによると、インクで書いたものは、ボールペンでも万年筆でもサインペンでも、多くは退色してしまって比較的早く読めなくなるのだそうな。しかし鉛筆や墨で書いたものは数百年経っても読めるそうである。けだし昔の人の知恵とはすごいものであるとのことだった。
ところでこの先生は、最初の授業のときに学生一人一人に出身の町名を自己紹介させたのだが、そのほとんどを知っているふうだった。町名だけでなく近くの鉱山や博物館のことまでその学生よりも詳しく知っているので驚かされた。けだし博物館で資料の分類をしている人の知識はすごいものである。
プロバイダの「ぷらら」で「ダブルルートオプションサービス」というのが開始されたみたい。これはぷららとIIJの2つのバックボーンの両方に接続できるもので、NTT東日本のフレッツ・ADSLでは同時に2つのセッションを張れる(NTT西日本も「フレッツ・プラス」でOK)ので、ぷららとIIJに同時に接続もできるのかも。
ダブルルートオプションサービスには「ダブルルート固定接続サービス」というのがあって、1,900円/月で固定IP接続もできるとのこと。今は「ダイナミックDNSサービス」によって自宅サーバーを運用しているのだけど、IPアドレス変更時に環境によって伝播の遅れが出てしまうのは防げないので、やはり固定IPアドレスは便利そう。料金も固定IP接続にしては安いと思うので、大いに食指を動かしている。
それにしてもぷららはいろいろ面白い試みをしているのでいいな。
同一のファイルへのハイパーリンクに複数のURLの記述方法があるものがある。たとえば、
などなのだけど、インターネット上ではURLが異なれば、それがたとえ同じファイルを出力していたとしても厳密には全く別のページということになってしまう。でもいずれにせよ目的のページが表示されるのなら利用上大きな問題はないし、最近の検索エンジンなどではこの辺りはだいぶ対応しているようなのであまり気に留めなかったのだけど。
でもこれって、RewriteEngineを使っている場合や、プログラムでURLを解析して対応するページを出力しているような場合は両方に対応するように設定する必要があるので注意が要りそう。
それから、RewriteEngineの場合はなぜか、Rewriteする位置と関係のないところに//が入っていても404 Not Foundになってしまうみたい。たとえば、http://uttsu.com/diary/20021203.htmlに対するhttp://uttsu.com//diary/20021203.htmlなど。
これの落とし穴は、RewriteしていないURLのページだと正常にアクセスできてしまう点。この例だとhttp://uttsu.com//diary/へはちゃんとアクセスできるので、そこから先のページでNot Foundになっても訪問者には単なるリンク切れに見えてしまうし、管理者はなかなか気付きにくそう。
最近、cronという指定時刻に自動的にコマンドを実行してくれるコマンドの使い方を覚えたので、ラジオ語学講座の数分前に自分の携帯にメールが送られるように設定してリマインダーの代わりとして大いに活用している。
他にも、雑誌の発売日などにもメールでお知らせが届くようにして無精の限りを尽くしているのだけど、昨日ふと、ごみ収集日にもこの方法が使えそうだという一大発見(ぼくにとっては)をしてしまった。さっそく次のように設定してみた。
00 22 * * 0,3 echo '燃えるゴミ' | nkf -j | mail 携帯のアドレス 00 22 * * 1 echo '燃えないゴミ' | nkf -j | mail 携帯のアドレス
これは毎週日曜と水曜の夜10:00に「燃えるゴミ」という内容のメールが携帯に届くという設定で、同じように月曜の夜には「燃えないゴミ」というメールが届く。
これで、ゴミを出し忘れて玄関がゴミに占拠されるということはなくなりそう…??
(リマインダー機能はYahoo!カレンダーなどでも使えるみたい)。