2006年10月20日の投稿

2006-10-20
晴れ

自作ウェブログツールへの道

ゆりこ による 11:59:48 の投稿
カテゴリー: ソフトウェア

Yuriko.Net は紆余曲折を経て、自作ウェブログツールでの運営に漕ぎつけました。なんとか実装できたので満足していますが、もうちょっと工夫していれば、既存ツールが採用できたかもしれません。

2004年8月にリニューアルしたとき、ウェブログツールはよく分からなかったのでパスして、見た目はウェブログ風になるように HTML 手書きでがんばることにしました。さすがに手書きではエントリーごとのページを作るのは大変なので、HTML ファイルの最小単位は月別アーカイブとし、各エントリーへの永続リンクはページ内アンカーでごまかしました。http://www.yuriko.net/arc/YYYYMM/#dYYYYMMDDx という感じです (YYYY=年, MM=月, DD=日, x=日ごとの連番文字)。その後、古い記事を取り込むには年と月を別ディレクトリーに切らないと収拾が付かないと判明して、永続リンクは http://www.yuriko.net/arc/YYYY/MM/#dYYYYMMDDx としました。ここまでは設計に問題はなかったはずです。

失敗だったのは、Perl で個別エントリーページを作るスクリプトを書いたときです。月別アーカイブの HTML を Perl で解析して、個別エントリーをそれぞれ1ファイルとするスクリプトを作りましたが、このとき個別エントリーの URI を http://www.yuriko.net/arc/YYYY/MM/DDx としてしまったのです。既存ツールと相性がいいのは http://www.yuriko.net/arc/YYYY/MM/DD/x のように日付で一旦ディレクトリーを切るスタイルだったのですが、それだと月別ディレクトリーの下に日付の分だけディレクトリーができてしまって管理が大変だと思いました。DDx というスタイルだと、月別ディレクトリーの下に各エントリーの個別ファイルができるので運営が楽そうでした。実際、この設計は作業が楽で、月別エントリーのファイルをサーバーに転送し、サーバー上で Perl スクリプトを走らせて、月別ディレクトリーにできた個別エントリーファイルのタイプスタンプをチェックすれば OK だったのです。

しかし、その後、既存ツールを適用できないかと検討したときにハマりました。http://www.yuriko.net/arc/YYYY/MM/DDx という URI で運営できるツールは1つもないのです。日付のあとにスラッシュがある URI 体系 (http://www.yuriko.net/arc/YYYY/MM/DD/unique) なら対応できるんですが、それも日付の後の文字列はすべての記事にユニークな文字列である制限がありました。日付ごとの連番文字 (a,b,c,…) というのは無理なのです。

ということで、Yuriko.Net を既存ツールで運営するのは無理となってしまいました。一般的なウェブログの URI 体系にしていなかったのが失敗です。もしくは、Perl による個別エントリー生成スクリプトを作る時点で、ウェブログソフトの導入を検討してもよかったでしょうね。

要は、URI は慎重な設計が必要だということです。既存ウェブログツールの URI 体系はそれなりに考えられた体系なので、それに従っておいた方がいいということかもしれません。現状の Yuriko.Net の URI 体系も悪くないはずなんやけどな〜〜 (負け惜しみ)。

Flexy のテンプレートは t という名前のループ変数が使えない

ゆりこ による 13:14:42 の投稿
カテゴリー: ソフトウェア

このサイトは、HTML_Template_Flexy というテンプレートシステムを使っていますが、テンプレートに foreach によるループ処理が書けるのが便利なところです。しかし、このループ機構に落し穴がありました。

それは、ループ変数として t という1文字の名前の変数が使えないということです。つまり {foreach:tr_list,id,t} などという書き方ができないのです。t という名前の変数は Flexy が内部的に使うために、ループ変数で使うと上書きされたり汚染されたりして、不可解な動作が発生します。この不可解な動作の原因が「t という名前のループ変数を作った」ことに気がつくまでだいぶ時間がかかってしまいました。

わたしは Perl での経験が長く、Perl では foreach ループ内部で $_ というデフォルト変数が使われることに慣れています。PHP でも似たコーディングをするには、1文字名前の変数を使うことになります。記事ならば $a, 日付ならば $d, コメントならば $c という変数を使ってました。そうすると、トラックバック関連のループ処理に $t という名前の変数を使うのは自然な流れですが、そうすると謎な現象 (描画オブジェクトが壊れる etc) が起きてしまったのです。

原因が分かってからは別の名前にしましたが、PHP でも $_ という名前の変数は使えそうなので、Perl 臭いコードになるけどこれを使ってしまおうかな;-)

最近のトラバ・コメントを追加

ゆりこ による 17:56:48 の投稿
カテゴリー: 更新履歴

そんなに難しくない機能追加として、最近のトラックバック・コメントを表示させました。表紙ページだけの表示で、他のページ (月別アーカイブや個別エントリー) では表示されません。はっきり言うと、自分のテストコメントやら自分の別サイトからのトラックバックばっかりです;-)

ちょっと悩んだのが、最近のトラックバック一覧の見せ方です。現状では、トラックバックを受けた記事のタイトル (と記事へのリンク) を見出しにして、その後に受信日時/トラックバック元記事名 (とリンク)/ウェブログ名の順で載せています。サイトによっては、トラックバック元の記事名を見出しにして、トラックバックを受けた記事のタイトルを従にしていることもあるようです。

どちらがいいかは悩みどころです。トラックバックピングの詳細は個別エントリーに移動しないと見えないので、トラックバックを受けた記事を見出しにすれば、そちらに誘導する効果が出ます。しかし、この仕様が分かりやすいのかどうか、ちょっと疑問ではあります……。

地下鉄8号線12月24日開業予定

ゆりこ による 21:29:29 の投稿
カテゴリー: 鉄道

大阪市東部を縦断する地下鉄8号線(今里筋線)が12月24日に開業予定と発表されたようです。年内開業予定と言われていましたが、年の瀬まで開業を引っぱるとは。

正直、このエリアはJR 大阪環状線に近いので市バスで十分だと思うんですが、建設されてしまいました。どうせ掘るならなにわ筋線を大阪市が建設すればよかったのに;-)

今回も、わたしは開業日に乗るつもりはありません。以前は、関西の新駅・新線の開業日にヒマがあったので乗車していましたが、関東に移住してからはさすがに無理です。でも、試乗会が12月17日にあるようで、この日は USJ に行く予定ですから、これに応募して当選すれば乗れますね〜〜。

今まで体験した関西の新駅・新線は以下の通りです。新駅はさすがに初電からは乗ってなくて、朝 or 昼に訪問しています。路線延長の場合は1番列車に乗っています。

  • 1991-12-16 近鉄大阪教育大前駅の開業
  • 1993-09-21 近鉄宮津駅の開業
  • 1993-03-04 大阪市営6号線(堺筋線) 天下茶屋〜動物園前の延伸
  • 1997-03-08 JR藤森駅の開業
  • 1997-06-03 京都市営烏丸線 国際会館〜北山の延伸
  • 1997-10-12 京都市営東西線 醍醐〜二条の新規開業
  • 2001-06-17 神戸市営地下鉄海岸線試乗会

逆に、関東の新駅・新線はまだ乗ってないのが多いです。わりと近くにある小田急はるひ野駅も、通過しただけで降りたことがないです。

[追記 23:00] 上記の新規開業で一番オモロかったのは地下鉄東西線でした。初電が早朝だっため、(京都市内の) 家から自転車で醍醐にアプローチしましたが、そのとき九条山に留置された廃止車両の数々があったり、渋滞の元凶だった御陵の踏切を潰す工事が見られました。醍醐駅には、地下鉄への期待もあってか、付近の住民が多く集まっていました。開業1番列車には市長が乗り込まれて、お客さんと談笑して、市役所前駅で下車するというパフォーマンス(?)もありました。下車駅が「市役所前」というのは、なるほどと思う反面、「そのまんまやんかー」とツッコミを入れたくなるものでした。

その次に楽しかったのは烏丸線の国際会館延伸でした。こちらはお昼の開業でしたが、初電には近所の人らしき人も多数集まっていました。曰く「紅白饅頭が配られるらしい」「500円ぐらいのトラフィカ京カードがもらえるらしい」という話でしたが、どちらもガセでした;-) こんな噂が出てくるというのは、京都市民オモロすぎ。六地蔵延伸には行きませんでしたが、こちらも饅頭ネタがあったりして??

反面、堺筋線の天下茶屋延伸は付近の住民よりも鉄道ファンの方が多く見られました。もともと南海の方が便利なことに加えて、南海天王寺支線が廃止になった恨みもあって住民からソッポを向けられていたのかも。

Baiduspider に robotx.txt 無視された

ゆりこ による 2006-10-21 00:20:02 の投稿
カテゴリー: ネットワーク

きのう robots.txt を設置しましたが、Baiduspider は無視してくれました……。以下のように、きちんと robots.txt を読んでいるのに、それ以後のアクセスがあるのです。

60.28.17.51 - - [20/Oct/2006:21:58:28 +0900] "GET /robots.txt HTTP/1.1" 200 36 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"
--中略--
60.28.17.33 - - [21/Oct/2006:00:10:53 +0900] "GET /arc/2005/12/26/04/22/ HTTP/1.1" 200 13600 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"
60.28.17.33 - - [21/Oct/2006:00:10:56 +0900] "GET /arc/2005/08/26/07/21/10/ HTTP/1.1" 200 21780 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"
202.108.11.106 - - [21/Oct/2006:00:12:35 +0900] "GET / HTTP/1.1" 200 16576 "-" "Baiduspider+(+http://www.baidu.com/search/spider.htm)"

robots.txt にプラスも含んだ「Baiduspider+」と書かないと無視されるのかもしれません。とりあえず修正してみたので、次回のアクセスに期待してみたいと思います。それでもダメなら IP アドレスで拒否することにします。

[追記 2006-10-24 19:15] 6時間後に robots.txt の内容が反映されたようです。robots.txt の記述は問題なかったようです。やれやれ。