Google Mars

JavaScriptエラーになるのが直ったので、Google Marsを触ってみた。使い勝手はGoogle ローカルとほぼ同じ。
Google ローカルでは「マップ、サテライト、デュアル」という表示モードがあるところが、Google Marsでは「Elevation(立面図)、Visible(可視)、infrared(赤外線)」となっていていかにも星の地図らしい。
Google Moonもあることだし、次はGoogle Galaxy(銀河系)でもリリースされるのだろうか。銀河系の地図もいいけれど、プラネタリウムのような星座図があると、少し理科の授業が楽しくなるかもしれない。
もしGoogle GalaxyがリリースされてAPIが公開されたら、ガンダムのコロニー配置図を作ることにしよう。

増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編

id:hyukiさんのデザパタ本は有名ですが、入門マルチスレッド編の増補改訂版が出版される模様。

結城浩のはてな日記にてプレゼントの企画があったので、トラックバックを送らせてもらった。応募方法に以下の文字列を含むとあったので配置。

『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』無料プレゼント

712ページを読める時間があるかが問題だけど。

括弧の名前 2

以前書いた括弧の名前についてid:murasukeさんからツッコミ頂いたので、調べてみた。
問題の点は

{ } 中括弧
[ ] 大括弧

が逆で

[ ] 中括弧
{ } 大括弧

ではないかというところ。
日本語のページだとエントリーの内容どおりに書かれているものばかりで、Wikipedia(別にWikipediaの内容が常に正しいという訳ではなくあくまで代表例として)などがそう。
ただ、世界的にはということだったので、別の切り口から調べると確かに逆で載っているものがあって、braceという単語に該当の{}が大括弧という記述がある。bracketという単語に中括弧の記述は見つけられなかったけれど、とにかく逆だという話はありそう。
調べていたら、C++ の表記規則 – zeroscape::wikiに似たような話があって興味深かった。
正確な定義は判らないけれど、国語的にはWikipediaなのかなと思ったり。

unDonutの検索バーからAsk.jp

unDonutの検索バーからAsk.jpを検索するには、クエリをUTF-8にする必要がある。「Encode=3」を追加すれば変換できるので、search.iniへの記述は以下のようになる。

[Ask.jp 日本語]
Group=0
FrontURL=http://ask.jp/web.asp?o=0&qsrc=3&ln=ja&q=
BackURL=
Encode=3

ついでに、Ask.jp 英和・和英辞書は

[Ask.jp 英和・和英辞書]
Group=0
FrontURL=http://ask.jp/dictionary.asp?o=0&qsrc=46&sm=0&btnDic.x=84&btnDic.y=6&q=
BackURL=
Encode=3

と書けば検索できる。
そう言えば、Googleに続いてYahoo!もデフォルトでは通らなくなってしまったので、こちらもUTF-8に変更して動くようにした。

Googleの文字化け

unDonutの検索バーから日本語を渡すとGoogleが文字化けした。突然なったので一時的なものかと思ったけれど、数日そのままだったので検索バーで渡すエンコードを変更した。どのエンコードか判らなかったので順に試して、Encode=1(Shift-JIS)にすることで解決した。
今までずっと、日本語でウェブ検索した後にイメージ検索(ニュースでも)に遷移すると文字化けしていたので、これを修正するために行われたのかと思った。
ところが、あっさり元に戻った。unDonutの検索バーからはエンコード指定すると文字化けになり、ウェブ検索からイメージ検索への文字化けも復活した。
Google側も文字化けに気付いていない訳がないと思うけれど、何かのテストだったのだろうか。

はてなRSSのエントリーを全て開くブックマークレット

はてなRSSで新着エントリーを一つ一つクリックして見にいくのが面倒だったので、エントリーのリンクを全て開くブックマークレットを作った。
記事内容のテキストだけを読みたい人は必要ないけれど、私のように記事を提供しているページを直接見にいく人にはお勧めかも。
下のコードをブックマークレットとして使用する。

※膨大なページを開く可能性が高いため、タブブラウザ以外ではお勧めしません。
「entry-title」というCSSのクラス名をもつAタグのリンク先を「ウインドウを開く」で表示した状態にする。1ページの表示数に依るけれど、膨大なページを開いてしまうのでIEのようなタブブラウザでないタイプはお勧めできない。また、Firefoxの場合はオプションで「新しいウインドウを開くリンクは次の場所に開く」で「新しいタブ」を選択している状態でないと目的の動作にならない。
使用したときのイメージはこんな感じ。

1ページに対して100のエントリー表示でこのありさま。

JavaScriptで数値文字参照

JavaScriptで数値文字参照を利用する機会があったのでメモ。
はてなダイヤリーでもプロフィールのメールアドレスは文字参照を使っている。(きっとスパム対策だと思うけど)

「あいうえお」が

あいうえお

となるように「&#」と「;」の中に10進数の文字コードを入れる。作り方は、

var target = "HelloWorld";
var result = "";
for (var i = 0; i < target.length; i++) {
result += "&#" + target .charCodeAt(i) + ";";
}

これで変数resultに「HelloWorld」から変換された参照文字が代入される。因みに、

alert( result );

で出力されるのは

&#72;&#101;&#108;&#108;&#111;&#87;&#111;&#114;&#108;&#100;

となり、JavaScriptの中で保持している間は文字にならない。ブラウザが表示するタイミングで文字に変換しているようで、

window.document.write( result );

とすると

HelloWorld

と表示される。
他に16進数のものもあるみたい。

CSSのクラス名を表示するブックマークレット

HTML内で指定されているクラス名を一覧表示するブックマークレットを作った。
以下のコードをコピペして、「.url」という拡張子(ファイル名はお好み)でブラウザのお気に入りディレクトリに保存すると使える。IEでしか動作を確認できていないけれど。

因みに、ブックマークレットを実行したときのイメージはこんな感じ。

役に立つような立たないような。
好奇心のある方は、色々なWebページのクラス名を覗いてみるのも良いかと。Googleは一文字のクラス名が多かったり、Yahoo!はほとんどクラスを呼んでなかったり。
参考になるようなならないような。

[追記]
Firefox1.5でも動作する模様。

Internet Explorer 7 Beta 2

Internet Explorer 7 Beta 2をインストールしてみた。ベータなので別プログラムかと思いきや、しっかりIE6が上書きされた。ノートでやらずにデスクトップでやれば良かったと少し後悔したけれど、unDonutから無事起動できたので今のところ実害はない。
RSSフィードとか色々違いはあるのだろうけれど、ぱっとWebページを巡回する分にはあまり変わらない。ブラウザはブラウズできればいいので、動作が機敏で思い通り使いこなせるのが一番だと思う。

Objectは空ではないような

Web+DB press (Vol.31)

Web+DB press (Vol.31)

id:naoyaさんの記事を読んで気になることがあった。上記雑誌の「Ajax&JavaScriptフレームワーク活用術」の第2章から少し引用して

var obj = new Object();
このオブジェクトは空のオブジェクト、何のプロパティもメソッドも持っていません.

という箇所だけど、空だっけと思った。JavaScriptJavaとは全く別言語だけど、文法面は参考にされたようで、Objectクラスも似ている印象。
例えば、

var obj = new Object();
alert( obj.toString );

というコードを実行すると

function toString() {
[native code]
}

と表示されるので、toStringはありそう。因みに

var obj = new Object();
alert( obj.toString() );

とメソッド実行の戻り値を見ると

[object Object]

と表示される。

var obj = new Object();
alert( obj.aaa );

というように未定義なプロパティーを呼び出すと「undefined」と表示されるので、違いはあるように思う。
ただ、挙動から推測すると、ObjectクラスのtoStringには実装がないような気がする。イメージとしては

function Object() {
this.toString = function(){}
}

という感じ。
toString以外にもvalueOfとか何個か同じようなものがあり、空というのは言い過ぎではないかと感じた。けれど、何も実装されていないのなら、取り立てて問題にする必要は無いかもしれない。ひょっとすると読者が複雑に感じないように、敢えてそういう表現を使ったのかもしれない。id:naoyaさんは、本当のところどう思っているのだろう。