2008/12/31(水) ミステリマガジン2月号

 「ミステリマガジン」2月号表紙

 オットー・ペンズラーが2008年のベスト・ミステリとしてトム・ロブ・スミスの「チャイルド44」を挙げている。「これは政治小説であり警察小説であると同時に、スリラーでもある。読み進むうちに鼓動がどんどん速くなり、手に汗を握ることになるのは間違いない」と絶賛。僕は冒険小説の一種と思った(詳しい感想はSorry, Wrong Access: 「チャイルド44」)に書いた)けれど、ペンズラーは冒険小説とは書いていないな。いずれにしても、この29歳の作家の次作が楽しみでであることは間違いない。それにしてもこの小説、アメリカでも今年発売されたのだな。

 2月号の特集はデニス・ルヘインだが、ほぼ興味がない。というか、読んだことがない。ジェームズ・クラムリーの追悼特集の記事を読む。小鷹信光さんの長い評論も読み応えがあるが、池上冬樹が「ハードボイルド仕立ての私小説」と喝破しているのに感心した。なるほど、そうかもしれない。クラムリーはミステリを書こうという意思よりも確かに「男の生き方や女との出会いと別れといった人生の諸相」の方を描きたかった作家なのかもしれない。クラムリーは7冊の長編小説を残した。僕は幸いなことにすべて買っているが、読んだのは初期の3冊(「さらば甘き口づけ」「酔いどれの誇り」「ダンシング・ベア」)のみ。残りの4冊を早く読まなければ、という気になった。

2008/12/30(火) Google AJAX Feed API再び

いろいろいじって、一つのフィードを表示するのは以下のようにした。これは映画フォーラムのRSSを3つ取得して表示する。BLOG dot USK dot CCを参考に書き換えた。YOUR KEY HEREには取得したGoogle AJAX Feed APIキーを書く。

<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR_KEY_HERE"></script>
<script type="text/javascript">
<!--
google.load("feeds", "1");
function initialize() {
var feedControl = new google.feeds.FeedControl();
var feed = new google.feeds.Feed("http://forum.cinema1987.org/modules/d3forum/index.php?page=rss&forum_id=1&odr=1");
feed.setNumEntries(3);
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById("google-rss");
var text = "";
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
var dd = new Date(entry.publishedDate);
var yearNum = dd.getFullYear();
var date = yearNum + "年" + (dd.getMonth() + 1) + "月" + dd.getDate() + "日 " + dd.getHours() + "時" + dd.getMinutes() + "分";
text += "<dt>「" + "<a href=" + entry.link + ">" + entry.title + "</a>」(" + date + ")</dt><dd>" + entry.contentSnippet + "...</dd>" ;
}
container.innerHTML = "<dl>" + text + "</dl>" ;
}
});
}
google.setOnLoadCallback(initialize);
// -->
</script>

表示したい所に<div id="google-rss">Loading...</div>と書けばOK。複数のフィードを扱うにはfeedControlを使う。

<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR_KEY_HERE"><
/script>
<script type="text/javascript">
<!--
google.load("feeds", "1");
function initialize() {
var feedControl = new google.feeds.FeedControl();
feedControl.addFeed("http://cinema1987.org/diary/index.rdf", "映画とネットのDIARY");
feedControl.addFeed("http://forum.cinema1987.org/modules/d3forum/index.php?page=rss&forum_id=1&odr=1", "映画フォーラム");
feedControl.addFeed("http://cinema1987.org/rss/index.rdf", "シネマ1987online"); feedControl.setNumEntries(3);
feedControl.draw(document.getElementById("feedControl"));
}
google.setOnLoadCallback(initialize);
// -->
</script>

表示には <div id="feedControl">Loading...</div>と書く。

しかし、これだと、なぜか日付が1カ月ずれる。これはGoogle側の不具合だろう。他のサイトでもずれている。そのうち直るのだろうか。スクリプトはこちらの方が簡単だが、その分、カスタマイズはあまりできないようだ。

このほか、参考になるサイトはGoogle AJAX Feed API入門など。

2008/12/29(月) XOOPSテーマ変更

 久しぶりに変更してみた。BCOOL THEMEのテーマを使わせてもらった。タイトルロゴの背景がグラデーションなので、これに合わせてGIFファイルを作るのが面倒だったりする。テーマフォルダの中にロゴのベースとなるGIFファイルは入っているのだが、今使用しているロゴが気に入っているので変えたくない。しかも自宅のノートパソコンにはなんとGIFを編集するソフトが入っていなかった(いや、ペイントやPhotoshop Elementsはあるんですけど)ので、背景の色を変更してしのぐ。それでも少し変だが、仕方がない。そのうち、赴任先のパソコンでちゃんとしたものを作ろう。

 XOOPSのテーマはtableを使っているのが多いが、このテーマはCSSでデザインしてある。ページの表示速度が少し速く感じるのはそのためか。IEで見ると、表示が少し変になる部分があった。XOOPSのバージョンを表示するフッターの所でコピーライトの記号が化けている。元々、XOOPSのバージョンなどは表示しない方が良いので削除した。

 ついでにこの日記のテーマも変更した。

2008/12/28(日)Google AJAX Feed API

 RSSを読み込んで、HTMLファイルにJavaScriptで表示するAPI。掲示板のログをトップページに表示したくて方法を探し、これにたどりついた。普通のJavaScriptでは他のサーバーにアクセスすることはできないが、Googleがそれを肩代わりしてくれる。便利なAPIだが、カスタマイズするにはそれなりのJavaScriptの知識は必要になる。

 Google AJAX Feed API - Dynamic Feed Controlを利用すれば、ページタイトルだけでコードを得ることができるが、うちの掲示板のRSSを入れても出て来ませんね。マイナーだから。というか、XOOPSのRSSは静的ファイルではないので、難しいのかもしれない。

 とりあえず、いろんなサイトを参考にしながら作った。RSSファイルはUTF-8なので、ページ自体もUTF-8で作らないと、文字化けが起こる。ちょうどトップページをXHTMLに書き換えようとと思っていたので、これは良かった。

 あと、会員のブログのRSSも一覧表示するようにした。これはGoogleリーダーで共有アイテムにすれば、簡単。困るのはRSSの中にPRが含めれているのがあること。これはGoogleリーダーでは排除できないようだ。

2008/12/23(火) RSS作成CGI

 現在、ホームページのRSS作成に使っているのはCGIなのだが、これは手作業で作成したHTMLファイルをRSS1.0形式に変換するもの。手作業でタグ打つのがけっこう面倒になったりする。で、作成ソフトをVectorあたりで探した。RSS WriterとかRSS POSTとか。どちらもこれで十分と思わせる機能がある。RDFファイルを読み込めるRSS POSTの方が使いやすそうだ。

 問題は現在、パソコン2台で作業しているので、片方でRSSを作ると、もう片方のRSSと不整合になること。でも考えてみたら、FTPでダウンロードしてRSS POSTで読み込めば、問題はないのだった。まあサーバー上で動いた方がFTPの手間も要らないし、便利ではある。

 そう思って、とりあえずCGIで作ってみることにした。HTMLファイルでタイトルとURLと要約を入力するフォームを書いて、それを受け取って中間ファイルに加工・保存するCGI。この中間ファイルを読み込んで、RSS形式に変換するCGIは以前、Infomakerが公開していたスクリプトに手を入れればいい。久しぶりにPerlにさわったら、最初からつまずく。Jcode.pmの使い方から調べる羽目になった。3時間ほど格闘してようやくできたけれど、とても人様にお見せできるようなスクリプトではない。でも自分で使う分にはこれで十分。

 書いていて思ったのはこういう公開しないプログラムをプログラマーやSEはけっこう書いているのではないかということ。公開すれば、フリーソフトとはいってもそれなりのサポートが必要になるからだ。特定環境で動くプログラムは難しくないが、いろいろな環境を想定してプログラムを書くとなると、けっこう面倒だったりする。