カテゴリー : 2007年 2月

<script src="…"> で注意すべき点


- ドメイン間のデータ送信テスト(docodemo door Test)
<script src=”…”>を用いた、パスワード入力フォームの内容を悪意あるサイトに送るテスト。
 
たとえばブログペットやアクセスカウンター、アフィリエイトなどは <script src=”http://サービス提供サイト/xxx”>という形式の HTML タグをブログに埋め込みますが、埋め込んだブログがトップページからログイン可能なものであった場合、サービス提供サイト側がブログのパスワードを盗み出すことができてしまいます。
 
対策として
- 信頼できる(盗まれても問題が無い,あるいは自分で構築した)サイトのサービスのみ利用する。
-重要な情報が含まれる(入力される)ページには信頼できるサイト以外のサービスを付加しない。
などが挙げられます。
 
JSONP を利用する場合も当然注意する必要があります。

XML2JSON


- XML を JSON に変換するサービス – ベータ版を公開

Ajax で利用できるお絵かきクラス


- ブラウザ上でお絵かき – DrawingCanvas クラス(Days of the Moon)
複数の描画エンジンに対応していて、さまざまなブラウザで利用可能な描画用クラス。SVG Tiny 、HTML Canvas 、CSS Positioning 、VML に対応している。
 
ネタ元:
- Ajax で簡単リソースモニター

Web API ネタ


- Web Service API(REST) for Ajax
Web API のリンク集

JSON で実現する快適な Ajax


AJAX で JavaScript でサーバからの出力を解釈する際に、最も用意にパースできる出力形式として、JSON(JavaScript Object Notation)形式があります。出力が XML ではなくなるため、厳密には Ajax(Asynchronous JavaScript + XML)ではなくなりますが、JSON を利用することで、JavaScript でのパース作業が格段に容易になる上、クロスドメイン呼び出しが可能になるというメリットがあります。
 
基本的な文法についてはこちらが参考になりますが、大体このようになります。

var person = {
      name: “John”, // name プロパティ
      age: 30,
      family: [ // 配列
        {name: "Jane", age: 24}, // 配列内オブジェクト
        {name: "Richard", age: 1}
      ]
   };
// 参照例
alert(person.name); // John が出力される
alert(person.family[0].name); // Jane が出力される

 
JavaScript で動的利用する場合、
- JavaScript – JSONでデータを受信する方法2種類(s.h.log)
- dojo toolkit の ScriptSrcIO(snippets from shinichitomita’s journal)
が参考になります。
これを PHP で生成する場合、PHP 5.2.0 以降デフォルトで組み込まれるようになったJSON関数(PECL:php-json)を利用します。日本語使用時の注意として、json_encode に渡す文字列の文字コードは UTF-8 にする必要があります。

  echo json_encode(array(“name”=>”John”, “age”=>30));

また、JSONP (JSON with Padding) という手法により、サーバ側からクライアントに対し非同期コールバック関数を実行させることができます。
リクエストURL:

http://foo.example.com/api/person?name=John&callback=myPersonHandler

リクエスト結果:

myPersonHandler({name: “John”, age:30});

埋め込む HTML:

<script type=”text/javascript” src=”http://foo.example.com/api/person?name=John&callback=myPersonHandler” charset=”UTF-8″><!–
    function myPersonHandler(result){
        alert(result.name + ” is ” + result.age + “years old”);
    }
//–></script>

こうすると、サーバからの結果の出力完了後に自動的に myPersonHandler が呼ばれるようになります。なお、myPersonHandler という関数名は、リクエストURL の callback パラメータを元にしているため、クライアント側で任意の関数に置き換えることが可能です。
 
参考:
- PHP で JSON(Do You PHP?)
- Collection & Copy – JSON 入門
- JavaScript – dojo の ScriptSrcIO で動的クロスドメイン JSON 読み込み
- JSONP とコールバック関数(戯れ言++ – 入門 JSON 3)

最近良く使う Firefox 拡張


- All In One Gesture(関連 – Firefox まとめサイト)
- IE Tab]https://addons.mozilla.org/firefox/1419/]([[関連記事)

Java Web Start と Java 3D の関係


Java 3D を使う上で、障害になるのが、作成したプログラムの配布方法。
一つ前のエントリの方法で j3dcore-*.dll をバンドルして、manifest.mf を

Manifest-Version: 1.0
Bundle-NativeCode: j3dcore-d3d.dll;j3dcore-ogl.dll;j3dcore-ogl-cg.dll
Class-Path: j3dcore.jar j3dutils.jar vecmath.jar
Main-Class: Main

のようにして Executable JAR を作成、j3d*.jar と同じフォルダに置いて実行すれば簡単に動作するので、これをまとめて配布はできるのですが、この方法だと Java 3D のライセンス(LICENSE-Java3D-v*.txt: 2.a – 2.e)が懸念事項になります。
 
そこで、もう一つの配布方法として、公式のデモでも使われている手法、
Java Web Start を使うことにしました。
 
以下参考にした犀角(Diceros Horn)のとくながさんの記事へのリンクです。
 
- Java Web Start リンク集 ( 犀角(Diceros Horn) )
- Java Web Start を始めてみる
- Java Web Start のサンプル
- JWS で jar ファイルに含まれるファイルにアクセスするには

JNI で DLL, SO 等のネイティブライブラリを JAR に含めるには


作成したクラスを JAR にまとめる際にネイティブライブラリをルートディレクトリにいれて
manifest.cf を以下のようにすれば、任意のネイティブライブラリ(下の例では a.dll, b.dll, c.dll) を含めた状態で実行可能な JAR が作成可能です。

Manifest-Version: 1.0
Bundle-NativeCode: a.dll;b.dll;c.dll
Main-Class: Main

作成時のファイル構造:

<root directory>
- Main.class
- a.dll
- b.dll
- c.dll
- manifest.cf

作成コマンド:

jar cmf manifest.cf out.jar Main.class a.dll b.dll c.dll

 
参考:
- How to set Bundle-NativeCode in manifest file in JES? (Sun Developer Forums)

PHP で Ajax


- xajax(SourceForge.net)
- PHPでAjax! JavaScript不要のxajax(MYCOM ジャーナル)

Web API ネタ


- Geocoding API
書式: http://www.geocoding.jp/?q=<キーワード>
指定したキーワード(住所、地名、駅など)を持つ場所の座標(経緯度)を検索して XML で返します。
- Google CodeSearch
書式: http://www.google.com/codesearch/feeds/search?q=<キーワード>
指定したキーワードを、公開されているソースコードから検索して、該当したソースコードの URL を RSS フィード(Atom 1.0)で返します。
Koders.com なんかの Google 版ですね。
詳細:
  - Google CodeSearch Data API Overview
  - Google CodeSearch の使用法(Zend Framework)
  
 
Web API の動向については using API が参考になります。