2010-02-22

ActionScript3.0でのXML操作  [by miyachi]

Flashに組み込むActionScript3.0でXMLの扱いを勉強。なんと文字列としてでは無く直接代入が出来ることに感動。例えば以下。

 var xml:XML = <data>coffee</data>;

でもふと困った。例えば上例だと coffee としている箇所を文字列変数を使いたい場合どうすれば? ヘルプを見ても良く分からなかったけど検索して発見。ちょっと見つけにくかったのでここにも書いておきましょう。

結論から言えば波括弧 { } で括れば変数の値をそのまま使ってくれるそうです。例えば以下。

 var drink:String = "tea";
 var xml:XML = <data>{drink}</data>;

これは楽だ。あと当然ながらノードや要素のリプレース等も出来るが独自すぎてDOM等に慣れていると逆に分かり難い面も。何にせよActionScriptは独自の世界だなぁ。

[追記]
ActionScript3.0からURLRequestとURLLoaderを使ってHTTP通信のプログラミング。登録コマンドを送って再読み込みコマンド…あれ?反映されていない?ブラウザからチェックしてみると登録されている。?????

暫く何が悪いか分からず時間を無駄にしてしまいました。調べてみるとどうやら強力にキャッシュされてしまいサーバに接続しないで古い内容が戻って来ているらしい。これを避けるにはなんとURLの最後に乱数を付けて毎回異なるURLにアクセスしていると思わせる方法が一般的のようです。

と言うことで以下のように現在時刻のミリ秒をダミーとして引数に与える事で解決。

 var urlReq:URLRequest = new URLRequest();
 urlReq.url = url + "?dummy_number=" + new Date().getTime();

え~い時間を返せ(^^; ActionScript3.0はなかなか手強い。
2010-02-22 10:52:18 - miyachi - - [プログラミング] -

2010-02-17

環境変数をJavaScriptで取得する  [by miyachi]

訳あってJavaScriptからサーバの環境変数を取得する必要がありました。こんなの簡単だろう…と思ったら、単純には取得できないらしい…orz 理屈から言えばJavaScriptはクライアント側で動作するのでサーバの環境変数は取れないらしい。ネットで調べると結構皆さん苦労されているようでした。

他の方法も考えられないでは無いのですが出来ればJavaScriptで取得したいと思って色々検討した結果、以下の手順を思いつきました。

 1) PHPで環境変数を取得してPHPの変数に格納
 2) JavaScriptからPHPの変数を取得

PHPはサーバ側で動作することもあって環境変数は全く問題無く取得できます。JavaScriptからPHP変数の値が取得できれば出来るはずです。でとりあえず動作したのでここに書いておきます。htmlの中に以下のようにPHPとJavaScriptを記述して実現しました。

<?php
$addr = $_SERVER['REMOTE_ADDR'];
?>
<script type="text/javascript">
jaddr = "<?= $addr ?>";
document.write("address = " + jaddr);
</script>

ここでは環境変数REMOTE_ADDRを取得しています。なおPHPが先でJavaScriptを後に記述しないと順番があるのでうまく動作しません。まあ釈然としない部分はあると思いますがまずは目的クリアの為にはこういう方法もあると言うことでご参考まで。
2010-02-17 17:13:56 - miyachi - - [プログラミング] -

2010-02-16

第9回XMLコンソーシアムWeek  [by miyachi]

弊社が加盟しているXMLコンソーシアムも部会活動等は発展的解消と言うことで本年度で終了することになっています。その為に例年では5月に開催されるXMLコンソーシアムWeekも今年は3月の10、11日と16~18日に行われます。今年のWeekに関して詳しくはこちらから。

私もセキュリティ部会の報告で3月16日午後1時過ぎから「XML署名事例調査報告」の発表をする予定です。また「署名ツール検証報告」に関しても昨年からの課題の調査結果に関してほんの一言二言説明をする予定になっています。

3月16日の会場は日本アイ・ビー・エム様の本社(箱崎)です。参加費は会員(アライアンスパートナー、招待者含む)は無料で、非会員は2,000円/日になっています。

他にも色々興味深い発表もありますのでお時間がありましたらぜひご参加下さい。
2010-02-16 11:09:20 - miyachi - - [業務連絡] -

2010-02-12

Wiiエラー261412  [by miyachi]

子供がWiiの「みんなのニンテンドーチャンネル」に接続できないと言うのでチェックした。確かにネットに接続してダウンロードするところでエラーコード 261412 が出て画面が開けない。

う~むと言うことで「みんなのニンテンドーチャンネル」を一旦削除して再インストールしてみたりしたけど駄目。ネット接続自体は「インターネットチャンネル」他では全く問題無く接続できているし… ネットでググッてみたらここで解決方法を見つけて解決。一応ここでも困っている人の為に解決方法を書いておきます。

まず原因はWii本体の時刻がおかしくなっていたことでした。半年くらい前からどうも修正しても修正しても日付が2005年とかになる現象が…今日もずれていたのでWii画面で修正していましたがどうも内部にある時計がずれていたようで、Wii画面の日付と時刻を修正しても駄目のようです。

ではどうやって日付と時刻を修正するかと言えば、Wiiから外部へメールを送り返信してもらうことで同期が取られて修正されるようです。これって仕様が悪いよなぁ。なおメールはメッセージ作成で行えます。PCや携帯のアドレスをアドレス帳に登録して暫く待っていると(一旦電源をオフにしてスタンバイにすると良い)登録したアドレスにWiiからとうろく確認メール(件名:Wiiフレンド とうろくメール)が届くので(この送信日時が既に2005年とかずれてました)、PCや携帯から返信するとOKでした。試しに再度メッセージを送ってみると正しい日時になっていました。

この状態で再度「みんなのニンテンドーチャンネル」に接続してみるとめでたく正常に接続されました。もしエラーコード261412で困っている人がいたらお試し下さい。ただ不安なのはそもそもなぜ日付がずれるようになったかです。本体の時計の電池切れだと修理になるようです。しばらく様子を見ましょう。

「みんなのニンテンドーチャンネル」を見ていたらWiiセレクションと言う安いシリーズ(2800円)で「Wii みんなのおすすめセレクション ファミリースキー ワールドスキー&スノーボード」が今月25日に発売になるのを発見。う~むKomoくんから昨年借りた「ファミリースキー」が結構スキー場の感じが出て良かったんだよなぁ。しまった。任天堂のワナにはまっているな(^^;
2010-02-12 00:36:02 - miyachi - - [週末の出来事] -

2010-02-09

WindowsでのSSLクライアント認証プログラム  [by miyachi]

先日事情があってWindows上でのSSLクライアント認証のプログラミングの調査をしました。良く考えたら数年前に使ったことがあったのを忘れていました。健忘録として書いておきます。

SSLのサーバ認証は皆さん https で始まるサイトを利用する事で使っていると思います。クライアント認証はサーバ側が逆にクライアントを認証して接続の可否を決める仕組みです。X.509形式証明書と秘密鍵を使いますのでPKI的な素養が必要ですがPKIとは言えませんね。

と言うことでプログラミングで考えるとクライアント側からサーバへのhttp通信になります。良く使われているレガシーな通信APIとしてはWinInetがあります。Win32からhttp等の通信をするならWinInetが一般的です。msxml等からも使われています。ところがWinInetはSSLサーバ認証は対応していますがSSLクライアント認証には対応していません。SSLクライアント認証に対応するにはWinInetの後継であるWinHTTP英文)を使うとなっています。

でも何だかWinHTTPを生で使うのは面倒そうです。と言うことで.NET FrameworkのクラスであるHttpWebRequestHttpWebResponseを使う事をお勧めします。HttpWebRequestとHttpWebResponseを使ったクライアント認証の説明とサンプルのページもあります。私の場合はこのページだけでうまく使うことができました。

少し面倒なのが X509Certificate クラスで接続に利用するクライアント証明書を用意するところでしょうか。先のサンプルページでは「.cer ファイルが必要」となっていますがこれはWindows証明書ストアから取得した方が間違いがありません。X509Certificate2クラスの関連クラスを利用すればGUIによる証明書選択も可能になりますし必要な証明書を取り出す事も可能です。
2010-02-09 17:56:18 - miyachi - - [プログラミング] -