2006/10/30

Tracerをこっそりリリース

最近、技術の話が多くなってきたので、
「Google先生に聞いてね」をより積極的に取り入れてみる。

非常に注意深い君なら気付いているかもしれないが、
画面左のメニューに「Tracer」という項目が追加されている。

Tracerとは、一言で言うと、
僕のブログに表示されている文字列を"なぞる"ことで、
その文字列を検索する機能だ。
検索先は
 Googleエンジン
 はてなブログ
 Gooブログ
 Sein und Zeit(本サイト)
の4つ。

検証ブラウザはFirefox1.5.0.7とIE6。
今後はOperaとSafariで検証予定。
(OperaとSafariの方、動作確認にご協力を!)

では、どうぞ。

 Java (←なぞってみよう!)

ぼわっと小さなウィンドウが表示されたかと思う。
タイトルバー上のアイコンで、
ウィンドウをMac風に最小化できたり、
ウィンドウを閉じることができる。
この機能はデフォルトでONになっているので、
うざい人は画面左の"Tracer"メニューからOFFを選択。
以降、文字列をなぞっても検索されなくなる。

著作権はSuZに帰属するけど、
ソースコードの改変/再配布の制限はしないので、ご自由に。
カスタマイズとかした場合には、
(強制ではないですが)参考にしたいので、是非御一報頂ければ。

/**
*TracerはGoogle AJAX Searchを利用して作成されました。
*このようなサービスを無償で提供しているGoogle社に感謝します。
*/


posted by SuZ at 17:48 | Comment(18) | TrackBack(8) | Programming

2006/10/18

JSONPでクロスドメイン

Swing好きの僕としては、
MashUpはSwing派(ちなみにSmashUpと言うらしい)なのだが、
再びJavascriptに手を染めている秋の夜長。

クライアントサイドでのMashUp。
AJAXでMashUpしようにも、
クロスドメイン制限があるため、
サーバサイドでのMashUp結果を頂戴するのが常だった。
これじゃぁ、AJAXがただの「ホワイトアウトしない技術」になってしまう。
(まぁ、実際そうなのかもしれないけれど。)
そこで重くない腰を上げて意気揚々と調べていると、
なにやらたくさん情報がでてくる。
どうやら、思ったよりも浦島なようだ。

JSONPとかいう技術だ。
JSONというのは、
ご存知かどうかは知らないが、
「XMLの変わりにこのフォーマット使ってみない?」なメッセージ形式で、
Javascriptでeval()すると、
Javascriptのオブジェクトが出来上がるという優れもの。
可読性も高いのでいいことばかり。
ちなみにJavaから使う場合に特にいいことはないのが残念。
で、JSONP。
実は、これはAJAXと同じく非同期通信なのだが、
実現方法が全く異なる。

キーは<script>タグ。
実は<script>タグのsrc属性に指定された*.jsファイルは、
ドメインに制限されずにリクエストすることができる。
そして、そのリクエストはブラウザにより非同期に実行される。
さらに、読み込んだ時点で実行時評価される。
勘のいい君ならもうお気付きかもしれないが、
この<script>タグのsrc属性に、
リクエスト先URLを指定して、結果をJSON形式で頂戴する。
その時に、結果をコールバックして欲しい関数名でくくってもらう。
例えば、

 http://hoge.com/search?query=foo&callback=result_func

というURLがJSON形式の結果を返すとしよう。
(queryが検索文字変数、callbackがコールバック変数。)
このURLをsrc属性に指定して動的に<script>タグを作成して、
<head>タグと</head>タグとの間に配置する。
そうすると、ブラウザが勝手にsrcで指定したURLにアクセスする。
結果は次のようなものだとする。

  {"Result":
    [{"Title":"foo",
      "Summary":"bar"
    },
    {"Title":"hoge",
      "Summary":"hmm"
    }]
  }

この結果は正確には以下のように加工されてサーバから返される。

  result_func(
    {"Result":
      [{"Title":"foo",
        "Summary":"bar"
      },
      {"Title":"hoge",
        "Summary":"hmm"
      }]
    }
  );

ブラウザはこれを勝手に実行する。
これが実行されると、
関数result_func(result)が呼ばれることになる。
result_func関数ではeval(result)を実行すれば良い(セキュリティに注意)。
こうして、ドメインを超えて非同期にサーバと通信できるようになる。

理屈が分かればなんてことはない単純なことで、
コードを書くのも数行程度の容易さなのだが、この「思い付き」には感服。
この軽く無茶な感じが、戦国時代としてのWeb2.0に相応しい。
posted by SuZ at 23:02 | Comment(2) | TrackBack(0) | Programming

2006/10/15

発生因の起源

少し前にJDKのソースコードが公開されたので、
前々から拝見したいと思っていたので早速ダウンロード。

闇雲に見ても仕方がないので、
誰もが叩いたことのある(わけがない)javaコマンドから。
全然知らなかったのだけれど、
JVMもJavaコマンドも、全部JNIに従って書いてるみたいで、
(JNIでtypedefされている変数定義を使ってる)
JNIの経験があると特に躓かずにC言語として読んでいける。
「メインクラス取得したー!」とか、
「メインメソッド取得して叩いたー!」とか、
今までは想像するしかなかった出来事の原因が、
まさに今、目の前のソースに書かれている!

僕が見たかったソースは、SunGraphics2Dクラス。
java.awt.Graphicsクラスは、
以下のような継承関係にある(ずれてる?)。

 Graphics
  △
  |
 Graphics2D
  △
  |
 SunGraphics2D

Graphics、Graphics2Dは、
これまでのJDK添付のsrc.zipからソースコードを見ることが出来たが、
どれもこれもabstractメソッドばかりで、
どんな風に実装されているのかわからなかった。
しかも、デバッグでSunGraphics2Dが実装していることはわかっても、
そのクラスのソースコードはsrc.zipには含まれていない。
ところが!
公開されたJDKソースコードには、
しっかりとSunGraphics2Dが含まれている。
その関連クラスももちろん含まれていて、
「メソッドを叩いてから描画されるまでの全てが手に取るようにわかる!」
ようには、僕の修行が足りてないのでなっていないが、
大体の描画プロセスと各クラスの責務はわかってきた。
楽しい。

「そこまでのこと知らなくていいよ」な君は、
せめてデバッグ時にでも……いかが?
posted by SuZ at 23:25 | Comment(0) | TrackBack(0) | Programming::Java

2006/10/14

「知らんけど」

僕の妻は大阪弁がそれほど酷くないのであまり使わないが、
妻の父や母は、よく使う。

 「これ○○なんだってね、知らんけど」
 
初めて聞いたときは、
「知らんのに言うんかい!」と言いたくなったが、
どうして、慣れてくるとそんなに違和感はないし、
「大阪だなー」と微笑ましく思う。
でも、それは慣れとかではなくて、
誰が言ったのかが重要なのかもしれない。

ある道徳をといた言葉だ。
都合によりその言葉を書くことはないが、
「まぁ、一般的にはそうかもね」ということを述べた言葉だ。
問題はその後だ。
その発言者は自身の発言を「自分勝手な考え」だと締めくくった。
この最後の「締めくくり」さえなければ、
僕は何も思わない。
「主義主張は人それぞれだね」で済まそう。
だが、「自分勝手な考え」としてその主張を自身で退ける態度が、
僕には気に入らない。
それなら、主張しなければいいじゃないか。

でもよく考えてみると、
「知らんけど」だって、似たようなものだ。
最後に何かを付け加えて、
これまでの発言になんらかの影響を与えようとする。
「知らんけど」は主張の責任を放棄する態度だし、
「自分勝手な考え」は自身の発言を弱めようとする態度だ。
これらは総じて、最後に何かを付け加えて「保身する」態度だ。

あの文章を見ても、
僕の憤りを他の人も同じように感じないことはある。
それは、僕の感覚がずれているのではなく、
「誰がその発言をしたのか」が重要だからなのだろうな。
確かに、そうだな。
知らんけど。
posted by SuZ at 22:16 | Comment(2) | TrackBack(0) | Memorandum

2006/10/08

PocketWakeUpで朝食を

だめだだめだ。
WindowsMobileの目覚まし機能が全然だめだ。
欧米人が遅刻してもOKなのかどうかは知らないが、
遅刻しても許されるのではないかと思うくらいに、
WindowsMobileの目覚まし機能は酷い。

鳴るか鳴らないかは、WindowsMobileの気分次第。
WindowsMobileの目覚し機能を目覚めさせる機能が必要なんじゃないかと思う。
僕がギリギリの時間に出社しているのは、
決してWindowsMobileのせいではないが、
やっぱりちゃんと起こして欲しい。

で、探せばあるものだ。
これ
インストール方法については、
ここで詳しく紹介されている(助かりました)。
「おぅい!フランス語かよ!」なわけだが、
神は現代人を眠らせない。
こんな素敵なものがある。
使い方は、いったんW-ZERO3[es]にインストールしてから、
その実行ファイル(*.exe)をPCにコピーして、パッチを当てる。
そしたら、それを再びもとあった場所に戻す。
対象ファイルは、
 ・${インストールディレクトリ}/WakeUp.exe
 ・${インストールディレクトリ}/WakeUpAlarm.exe
 ・/Windows/WakeUpStart.exe
の3つ。

MP3の目覚まし再生にも対応しているし、素敵。
W-ZERO3[es]ユーザの方にオススメの一品。
posted by SuZ at 10:34 | Comment(0) | TrackBack(0) | Machine

2006/10/05

鼠だって空を飛びたい

少し前の話題になるが、
家電の祭典CEATEC JAPAN 2006が開催された。
この記事を見たのはリアルタイムだったけど、
なかなかここを更新できずに、
紹介できなかったので、今更ながら。

この記事の中程。
「3Dフローティングビジョン」。
少し古い記事では、ここ
本家の報道資料はこれ

実はこのパイオニアの技術は2002年からのものらしい。
CEATEC JAPAN 2005でも登場し、今年も登場。
(何故か今年はカーナビに化けて登場したみたいだけれど、
たぶん、これはモニタサイズを
昨年度より大きくできなかったせいなのかと邪推する)

この記事だと解かり易いが、
モニタの前面の空間に立体映像が「ぼゎぅ」と浮き上がり、
それに手で触れるようにすると、センサが手の動きを読み取る。

まぁ、多くを語る必要はないだろう。
だが、一言だけ言うと、鼠だって空を飛びたいはずだ。
posted by SuZ at 23:24 | Comment(0) | TrackBack(0) | Machine

2006/10/03

Spring Framework 2.0 Final Release!

Spring Framework 2.0のリリースがありました!

まだ詳しく見てないけど、はたして……。
posted by SuZ at 22:10 | Comment(0) | TrackBack(0) | Programming::Java

2006/10/01

小さな大発見

Javaの時期バージョンJavaSE6がやがてリリースされるのだが、
ベータリリースは既に実施されている。
最近は専らJava好きな僕としては、
ベータリリースであろうがなんだろうが、
とりあえずインストールして体感するのが趣味である。
(恐ろしいことに業務ではまだバージョン1.4を使っているのだ!)
JavaSE6はコードネームをMustangと言い、
正式名称はJDK6なのだが、
コードネームで呼ぶのが僕の周りでは一般的なので、
ここでもMustangと表記しようと思う。

さて、Mustang。
リリースを間近に控え、
雑誌やWebでも多く取り上げられている。
ところが、(僕の知ってる範囲で)雑誌には載っていないけれど、
個人的にはとっても素晴らしいアップデートを発見!

これまでのSwingでは、メニューバーをクリックして、
ポップアップウィンドウを表示した場合、
画面内のどこかの領域を選択して、そのポップアップを消していた。
だが、Windowsでは、メニューバーをクリックして、
ポップアップウィンドウを表示した場合、
タイトルバーをクリックすればポップアップを消すことができる。
僕はこのSwingの挙動が大嫌いで、
わざわざJFrame#setUndecorated(true)を呼び出して、
タイトルバーを表示しないようにして、
JPanelで擬似的にタイトルバーを作っていた。

が、Mustangではどうやら、
タイトルバーをクリックするとメニューのポップアップが消えるようだ!
どうでもいいように聞こえるかもしれないが、
そして、実際はどうでもいいのかもしれないが、
僕としては最高素敵なのだ!
(暇な人はMustang添付のサンプルを実行して確認してみよう!)

Mustangでは、
ウィンドウ最小化時にタスクトレイにしまえるようになったり、
Java2Dの描画パイプラインが最適化されたりと、
Swing好きにはとても素敵。
SwingWorkerの実装が見送られたのは残念だけど、
あまり人気のないSwingが未だにちゃんとアップデートされることに感謝!
posted by SuZ at 23:43 | Comment(0) | TrackBack(0) | Programming::Java

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。