2008-03-08

ようやく jQuery in Action が届きました。jQuery の解説書に仕上がってます。

jQuery in Action はいつ届くのかな
Amazon で予約した jQuery in Action は 2008年1月に発送予定でしたが、どうやら遅れてしまうようです。
Jquery in Action

年始からずっと遅れていた jQuery in Action ですが、3月の上旬になってようやく手元に届きました。3月8日時点で Amazon に在庫がありますので、ずっと待ってたよ!という方は、この機会に GET しちゃいましょう。

じっくりと読む時間がとれないので、ざっと流して眺めてみましたが、これは jQuery の解説書というのにふさわしい仕上がりになっているという印象です。

jQuery を使おうとするとき、○○はどう振る舞うのだろうと詳しく知ろうとして、jQuery Documentation を参照するのですが、その情報だけでは役不足のときが多々あります。そういうときは、ソースコードの中身を見て確認していたのですが、

jQuery in Action はリファレンスに加えて、その仕組みや解説に踏み込んでいるので、ソースコードを見なくても、それで何が起こるのか、どう振る舞うのかが把握でますし、さらに、そういう仕掛けだったのかという理解や発見にもつながります。

jQuery in Action は、解説のための実例も豊富です。ソースコードとスクリーンショットの対応があるので、ブラウザを使って試してみないとわからない、というストレスはありません。

Learning  jQuery: Better Interaction Design and Web Development With Simple Javascript Techniques

ただ、jQuery in Action は、既刊の Learning jQuery ほどストーリー性はないので、ステップバイステップの用途には適さないでしょうか。

Jquery Reference Guide

また、jQuery in Action は、既刊の jQuery Reference Guide と同じくらい網羅しているように見え、さらにバージョン 1.2 を基本としているので、リファレンスの用途にも使えるといえそうです。

かなり漠然として感想的な内容になってしまいましたが、もっと jQuery が普及して欲しいの願いを込めて、jQuery in Action を紹介しました。翻訳版を期待したいところですが、まだそこまで需要がありませんかね。

2008-03-01

自作の Google ガジェットが Google ディレクトリに登録されました

郵便番号から住所を検索する Google ガジェットを作ってみました
入力した郵便番号の住所、フリガナ、緯度経度を表示する Google ガジェットを作ってみました。Add to Google ボタンをクリックして、あなたの iGoogle に追加できます。
↑以前に自作した Google ガジェットが Google ディレクトリに登録されました。今後は、みなさんの iGoogle のコンテンツを追加リンクをたどって、この Google ガジェットを追加できます。

ここでは、自作の Google ガジェットを Google ディレクトリに登録する手順を紹介します。

Google ガジェットをただ動かすだけなら、ごく限られたメタ情報だけ指定すればよいのですが、Google ディレクトリに公開するには、より多くのメタ情報 を付与する必要があります。

自作した Google ガジェットのメタ情報(ModulePrefs 要素)は、次のとおりです。実際にこのメタ情報で Google ディレクトリに登録できましたので、これから登録しようとするときのテンプレートとして使えると思います。
<ModulePrefs 
title="郵便番号から住所を検索する"
description="指定した郵便番号の住所、フリガナ、緯度経度を表示するガジェットです。"
author="nakajiman"
author_email="nakajiman(at)lrlab.to"
screenshot="http://developmentor.lrlab.to/postal/gadgets/lookup_screenshot.gif"
thumbnail="http://developmentor.lrlab.to/postal/gadgets/lookup_thumbnail.gif"
author_location="Yokohama, Kanagawa, Japan"
author_affiliation="LEARNING RESOURCE LAB"
title_url="http://developmentor.lrlab.to/postal/"
>
</ModulePrefs>
Google ディレクトリに登録すると、一般に広く公開することになるからでしょうか、作者に関するメタ情報を要求します。といっても、その作者が実在するかどうかを確認するステップはありませんので、個人を特定できるような情報までは付与する必要はないようです。

特に作者のメールアドレスについては Google 自身が 任意の電子メール システムを使用できますが、スパム対策のため個人用の電子メール アドレスは使用しないでください。 といった説明をしているくらいです。ですので、何かあったときに連絡がとれるようなヒントになっていればよいわけで、私の場合は、メールアドレスの @ を (at) と表記しています。

あとは Google ガジェット自体の XML ファイル以外に、Google ガジェットを紹介するページに表示するスクリーンショット画像と、Google ディレクトリの一覧に表示するサムネイル画像を要求します。その画像が表示される様子は、後述のスクリーンキャプチャを参考にしてください。

準備ができたら、自作した Google ガジェットを Google ディレクトリに登録するための申請をします。といっても簡単で、Google ガジェットの XML ファイルの URL を Google に送信する だけです。これでおしまいです。

申請してから 5日ほどで、次のように Google ディレクトリに登録されて、閲覧できるようになしました。ただし、この時点ではまだ iGoogle のコンテンツを追加のリンクからたどることはできませんでした。



申請してから 7日ほど(Google ディレクトリに登録されてから 2日後)で、次のように iGoogle のコンテンツを追加のリンクからたどったり、検索できるようになりました。



Google のサービスは、基本的に機械処理するとよく聞いていますので、その中で 1週間という期間はかなり長いですね。もしかすると、Google ガジェットの申請手続きの一部は、人手が介入しているような気にもさせます。

といったように、自作した Google ガジェットは、簡単な手続きで Google ディレクトリに公開できます。一般に広く見てもらえ、使ってもらえるこれ以上のチャネルはないと思いますので、Google ガジェットを作ったなら、Google ディレクトリに公開してみてはどうでしょうか。

そうそう。忘れていました。ここでは Google ガジェットがどういうもので、どう作るのか紹介しませんでした。Google ガジェットの XML ファイル を見ると、その雰囲気がつかめると思います。

Vista、Google、Yahoo! 対応 ガジェットプログラミングのためのJavaScript入門Vista、Google、Yahoo! 対応 ガジェットプログラミングのためのJavaScript入門
アスキー書籍編集部

Googleガジェットプログラミング入門 Windows Vistaガジェットプログラミング JavaScriptで作るVistaガジェット GIZMO Programmer’s Bible―FLASHによるガジェット開発 まるごとJavaScript & Ajax ! Vol.1

by G-Tools

2008-02-20

JavaScriptを面白いと思った思い出

昔話になりますが社会人になる前にJavaScriptにはまった時期がありました。
そのきっかけとなったコードを思い出したので書いておきます。

alert(new new new Function("return function(){arguments.callee.prototype.toString = function(){return 'aiueo'}}"));

これを実行するとポップアップウインドウに「aiueo」と表示されます。newを三回連続でしているところに当時感動した記憶があります。98年か99年頃にネット上でこのコードに出会って「JavaScriptって面白そう」と思い、それから1年程の間JavaScriptを書いていました。
またJavaScriptは当時流行っていたJavaと違うヘンテコなオブジェクト指向(※)だったお陰で、オブジェクト指向に対して柔軟な思考を持つことができたことに今でも感謝しています。

っと、まぁどうでもいい昔話なんですが私の様にこのコードに触発される方がいれば嬉しいなぁと思う今日この頃です。

(※今だとプロトタイプベースオブジェクト指向と呼ぶようです)

2008-02-19

JiffieでIEを操作する

最近、Jiffieなるライブラリの存在を知りました。Java InterFace For Internet Explorerの略でJNIを介してIEをJavaから操作することができます。
ここから実行ファイルをDLして次のJavaプログラムを書いて実行すると、IEが起動して「aiueo」をキーワードにGoogle検索します。

//IEを起動してGoogleを表示する
InternetExplorer ie = new InternetExplorer();
ie.setVisible(true);
ie.navigate("http://www.google.co.jp/");
ie.waitWhileBusy();

//入力ボックスに「aiueo」と入力して送信する
IHTMLDocument2 doc = ie.getDocument(true);
IHTMLInputElement input = doc.getElementByName("q");
input.setValue("aiueo");
IHTMLFormElement form = input.getForm();
form.submit(true);

//検索結果を10秒表示後、終了する。
Thread.sleep(10000);
ie.quit();

Jiffieは基本的なIEの操作以外にも、ページの読み込みやDLなどをハンドリングすることもできます。またJiffieUtility#executeScript()を使って外からスクリプトを実行することも可能です。java.awt.Robotと合わせて使うことで、場面場面の画面キャプチャを撮りながらテストを実行するなんてこともできます。

こういったブラウザ操作の自動化はSeleniumなどの既存のツールで大半のことができてしまうので需要は少ないと思いますが既存のツールで要件を満たせないような場合に役に立つかもしれません。

2008-02-10

Perl split は文字列の末尾が分割記号だと省略してしまう

Perl split は、文字列の末尾が分割記号だと、省略してしまうので、不便だなぁと感じ続けてきたのですが、
my @path = split('/', '/users/nakajiman/places/');

('', 'users', 'nakajiman', 'places')
なんと、LIMIT にマイナス値を指定して、省略しないように指示ができたのですね。
my @path = split('/', '/users/nakajiman/places/', -1);

('', 'users', 'nakajiman', 'places', '')
何年もの間、ず~と知らずに過ごしてきました。ちょっと恥ずかしい。

Perl Hacks ―プロが教えるテクニック & ツール101選Perl Hacks ―プロが教えるテクニック & ツール101選
chromatic Damian Conway Curtis "Ovid" Poe

Perlベストプラクティス 実用Perlプログラミング まるごとJavaScript & Ajax ! Vol.1 まるごとPerl! Vol.1 プログラミングPerl〈VOLUME1〉

by G-Tools

2008-02-09

Perl CGI.pm で PUT を POST に見立てる方法?

Perl CGI.pm を使って application/atom+xml;type=entry なデータを POST と PUT で取得しようと思ったら、なんと PUT だと POSTDATA が取得できないじゃないですか。

次のブログを読んでみると、CGI.pm は HEAD、GET、POST にしか対応していないようですね。しかも、外部からコードの振る舞いを変えるような仕組みにはなっていないようです。ちょっと困りました。

CGI.pmでtext/xmlなPOSTデータを読みたい場合 : blog.nomadscafe.jp
CGI.pm の POSTDATA - naoyaのはてなダイアリー

しかたがないので、次のように PUT のときは POST として、CGI.pm を騙す方法で使ってみています。
my $m = $ENV{'REQUEST_METHOD'};
if ($m eq 'PUT') {
$ENV{'REQUEST_METHOD'} = 'POST';
}
my $cgi = CGI->new;
$ENV{'REQUEST_METHOD'} = $m;
なんかイマイチですけれど、CGI.pm のソースコードを見る限り、期待どおり動作してくれるように見えます。また、実際に試行していますが、今のところ不都合はないようです。

CGI.pm のバージョンは、次のとおりでした。ちょっと古めのものかもしれません。
$CGI::revision = '$Id: CGI.pm,v 1.208 2006/04/23 14:25:14 lstein Exp $';
$CGI::VERSION='3.20';
この対策は、バージョンや環境に依存するかもしれませんし、見つけていない不都合があるかもしれません。使おうとするときは、十分な検証をお願いしますね。

RESTful WebサービスRESTful Webサービス
Leonard Richardson Sam Ruby 山本 陽平

WEB+DB PRESS Vol.42 アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 RailsによるアジャイルWebアプリケーション開発 第2版 Statistics Hacks ―統計の基本と世界を測るテクニック WEB+DB PRESS Vol.41

by G-Tools

Windows Update で IE7 が自動インストールされないようにしておく

2月の中頃からだったでしょうか。Windows Update の優先度の高い更新プログラムとして Internet Explorer 7 (IE7) が配布される予定になっています。

開発した WEB サイトの動作チェックのため、Internet Explorer 6 (IE6) を維持しておきたいので、Microsoft が配布している 自動配布の無効化ツールキット (Blocker Toolkit) を使って、IE7 が誤って自動インストールされないようにしてみました。

IE7BlockerToolkit_0816.exe をダウンロードして実行すると、いくつかのファイルが C:\Windows\Temp に解凍されます。そして、そのプログラムを、次のようにコマンドプロンプトから実行します。これだけです。
C:\WINDOWS\TEMP\IE7BLO~1>IE70Blocker.cmd /B
MICROSOFT TOOL KIT TO DISABLE DELIVERY OF
MICROSOFT INTERNET EXPLORER 7

Copyright (C) Microsoft Corporation. All rights reserved.

Blocking deployment of Internet Explorer 7.0 on the local machine

操作は正しく終了しました

C:\WINDOWS\TEMP\IE7BLO~1>
これで Windows Update によって IE7 の自動インストール(または高速インストール)が無効になるようです。有効に機能するかどうかは、実際に IE7 の配布が始まってみないとわかりませんね。

WindowsXP カスタマイズ読本 (IDGムックシリーズ)WindowsXP カスタマイズ読本 (IDGムックシリーズ)
月刊Windows Server World編集部

Windows Server World (ウィンドウズ・サーバー・ワールド) 2008年 03月号 [雑誌] Windows Server World (ウィンドウズ・サーバー・ワールド) 2007年 11月号 [雑誌] Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ) Windows Vista World Vol.1 (IDGムックシリーズ) 数学ガール

by G-Tools