No.1385: Perlでカレンダー復旧
月別表示: 2010年04月の記事 カテゴリー: Web Programing
2010年04月20日の日記の概要
かれんだーを作った。
.カレンダー機能復元しました
以前のブログシステムtb.cgiには実装されていたけれど、いつの間にか仕分けの対象とされて削除されていた機能があります。その一つがカレンダー機能です。
公開を停止していたのには理由があります。サーバーの移転の際に、ブログの記事URLの命名規則を見直し、YYYYMMDD.htmlからentry_id.htmlに変更していたためです。
そんなカレンダーが本日より、再実装されました。
このカレンダー機能が実装されるまでには、単に私のPerlのライブラリからのコピペでは済まず、数々の試行錯誤があったのですが、内情を書くとへたれプログラマであることを自ら暴露するだけに止まらず、本格的にダメなコーディングしてることがばれて仕舞います。
なので、やったことを大雑把に、曖昧に書いてみる。
- エントリー毎に生成する年月を取得する。
- 当該年月の末日(28,29,30,31日)を取得する。 - 閏年の計算
- 当該年月の開始日の曜日を計算する。 - ツェラーの公式
- 空白行挿入(開始日まで、末日以降)
- 前月、翌月へのリンク
- 日記記事が存在する日付には日記へのリンクを貼る
メモ
1.にて。
最初、全ての記事でカレンダーを毎回生成するという愚行、奇行に走る。
すでに造ったことのある年月のカレンダーは造らないようにすることで計算回数が1380→108回に。
2.~5.
特記事項なし。
6.が少し悩み所でした。
結局、大量のYYYYMMDD.htmlを作成しておいて、ファイルの存否を判断するという泥臭い方法をとりました。entry_idとYYYYMMDDは多対一の対応なのですが。そのうち日付毎に何かのデータ解析するのに使えたらいいなぁ。ぐらいのノリで。
ゆくゆくは予定ない日を公開する程度のカレンダー機能になれば良いかと思っております。
予定のある日と内容は公開しませんが。
あとは.ics形式のデータに対応できたら格好良いんだけど、面倒くさそうなので却下でしょう。