あたまの体操、気分転換、現実逃避?
先週来、XCodeでObjective-Cなコードを書いたりInterfaceBuilderを使ってみたりしていて、ここ数日はperlいじり。先週リクルーティングでperl使いな人と会ったこともあるのだけど、前から作ってみようと思っていた、掲示板のRSSインターフェースを題材にやってみた。mqbbsという、とても古いcgiなのだけど、不思議な縁というか、最初はWindowsCE FANの掲示板に1、2年。んで、なぜか大学の掲示板がほとんどmqbbs。最近はxoopsのforumになったり、研究室はKent-WebのClipboard、データベース等の科目はLightBoard、CGはT-Noteってのを使ってたなぁ。
でも、設置が手軽なのかいまだに新設される掲示板のいくつかはmqbbsだったりする。
それで、mqbbsのデータファイルを読み出してRSSを生成する機能を追加してみようということで、練習問題のような感じでやってみた。RSSといっても、あまり難しいものではない。すでに、設定した件数を上限にした、ベタ表示と呼ばれる形式でのメッセージの一覧表示もあるので、この形式の出力処理をコピペして、RSS形式にすればはや上がりである。このレベルでは、perlの理解が低くても、何となくできてしまう。rss形式で出力する整形部分も、別のスクリプトから拝借してきた。
ソースを読んでいると、ファイルから行単位で読み出して、?t(タブ)で分解して、何番目と何番目を という風に、やってそうなことがイメージできるとソースも何となく読める。えらくスッキリ書けてしまっているのだが、しょっちゅう使っているレベルでないと、なかなか身に付かない気がしてならない。
今日のとこまででできたのは、ざっと
- RSS1.0
- 最新のログにあるものが全部出る
- FILE=filename指定で、過去ログの相当分を出力。これはmqbbsのそれと同じ*1
- FILE=ALL指定で、すべてのメッセージを出力*2
- dc:identifierで発言番号、dc:relationでコメント先番号を出してみた。*3
- content:encodedで本文を返す
というところ。最初はmqbbs.cgi?MODE=RSSで返すように、mqbbs.cgi自体に書き加えていったが、変更すべき箇所があちこちにあって、既に設置済みのローカライズバージョンに組み込もうとすると非現実的な雰囲気になってきた。mqbbs.cgi自体に追加すると、ログの位置やサイトの名称など、設定がそのまま読める利点があったのだが、その運用性は別の手を考えるとして、mqrss.cgiという独立のcgiにすることに。
そして、これをmqbbs.cgiと同じ場所に設置する前提で、mqbbs.cgi自体をファイルとして読み込み、cgiに直接書かれた設定の、必要な4つの変数を読み込むことで、設定が共有されるようにした。ここでは、evalを使って、その変数に代入しようとしている行を読み込んだら、そのままそれを実行するという安直な方法で実装。我ながらうまくいった。
なんか、大体いい形になった気がする。あとは、
といったところか。この辺にして、卒業研究やんなきゃ。perlやOSXプログラミングは、いいアタマの体操として続けよう。
久しぶりに、開発元の ゆんFactoryを見ようと思ったら、もう姿がなかった。いろいろ検索してみると、会社の事業はどこかに統合して、次のステップを探しているようだった。目標は投資家なのだとか。