2009/01/07(水)Google検索結果を同一ページに表示

Google AJAX Search API Google カスタム検索エンジン を組み合わせると、そういうことができるようになる。Sorry, Wrong Accessの関連3サイト総合検索とシネマ1987onlineの詳細な検索に設置してみた。画面の遷移なしで非同期通信を行うAJAXの威力はこういうところに感じる。

検索向けAdSenseのIDだとうまくいかなかった。最初、これで随分悩んだ。カスタム検索エンジンにAdSenseと関連づけていないものを作っていたのでそれを利用したら、すんなり。

コードは以下の通り。

<script type="text/javascript" src="http://www.google.com/jsapi?key="ここに取得したAPI_KEYを書く"></script>
<script type="text/javascript" language="Javascript">
<!--
google.load("search", "1");
function OnLoad() { var searchControl = new google.search.SearchControl();
var siteSearch = new google.search.WebSearch();
siteSearch.setUserDefinedLabel("サイト内検索");
siteSearch.setSiteRestriction("ここにカスタム検索エンジンのIDを書く");
var options = new GsearcherOptions();
options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
searchControl.addSearcher(siteSearch, options);
searchControl.draw(document.getElementById("searchcontrol"));
searchControl.setResultSetSize(GSearch.LARGE_RESULTSET);
searchControl.setLinkTarget(GSearch.LINK_TARGET_SELF);
searchControl.execute("");
} google.setOnLoadCallback(OnLoad, true);
// -->

表示したいところに

<div id="searchcontrol">Loading...</div>

と書く。このコードはオプションとして検索結果の最大表示(8件)とリンクターゲットのセルフなどを指定している。カスタマイズの詳細はClass Referenceに書いてあった。ブログに設置する場合、JavaScriptをヘッダー内に書けず、Bodyに書くことになるので、少し具合が悪い。HTMLファイルに書いた方が良いのではないかと思う。

2009/01/05(月) 全米批評家協会賞

作品賞は「バシールとワルツを(Waltz with Bashir)」というイスラエル製アニメとのこと。監督はフォルマン。IMDBによると、大変評価が高い(Vals Im Bashir)。どんな映画か楽しみだが、「WALL・E/ウォーリー」が受賞したロサンゼルス批評家協会賞に続いてアニメが作品賞というのは面白い。批評家にも頭の堅い人は少なくなったのか。予告編は以下。

このほか、主演男優賞は「ミルク」のショーン・ペン、主演女優賞はマイク・リー監督「ハッピー・ゴー・ラッキー」のサリー・ホーキンス。監督賞はそのマイク・リーが取っている。驚いたのは助演女優賞のハンナ・シグラ。ライナー・ヴェルナー・ファスビンダー映画によく出ていたが、懐かしい名前だなあ。対象作の「そして、私たちは愛に帰る」は現在、東京で公開中。

ファスビンダーは大学時代に「マリア・ブラウンの結婚」を見て打ちのめされた思い出がある。ハンナ・シグラの名前もこれで覚えた。ファスビンダー作品は3作品を収めたDVDボックスが2005年に2つ出て、3つ目が来月、4年ぶりに出るようだ。前の2つはあまり売れなかったのかな。

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のバージョンなどは表示しない方が良いので削除した。

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