2010マツオソフトウェアブログソフトウェア開発に関連することを発信しています2010年6月30日水曜日ZipファイルをUnzip(解凍)するクラスAndroidアプリを開発していて、Zipファイルを解凍するクラスを作ったので下記に公開しておく。overflowに投稿したのと同じものだけれど、こうした方が良い、などの意見があったらコメントお願いします。存在しないファイルを定期的にリクエストされたらMy-ClipではELMAHを使用しているので、何かしらエラーが起きるとメールが飛んでくる仕組みになっている。ELMAHを組み込んでからFileNotFoundExceptionがちょこちょこと報告されるようになり、それによると、いかにクラッカーさん達が日夜何かしらアカウント的なものにアクセスしようと試みているかがよく分かる。いう場合は大抵、/account/hogehogeだったり/admin/hogehogeなどがリクエストされている。本日受け取ったリクエストはいささか趣がことなり、下記のようなパスだった。/SlurpConfirm404/booksontheweb.htmこのほかにも4つほど似たようなリクエストがあったのでGoogleしたら、下記のブログにたどりついた。404この記事によると、あのリクエストはYahooに登録されているWebサイトが正しく404を返却するかをYahooが確認するためのものらしい。Increment周りで大変四苦八苦したのでここに後続のために記しておく。そもそもはじめから嫌な感じがした。Siteをざっくりと読んでみたけど、公式サイトでは特にGUIのサポートなどはなく、UIがコマンドラインしかない。Browserを見つけた。これで勝つると思ったのもつかの間、このGUIが思いのほかしょぼいし使いづらい。Explorerからテーブルを作ってー外部キー制約作ってー、というのがぽちぽちとできるっぽい(詳しくはここを観て欲しい)。Browserさんよりは多分に使いやすいので、これでぽちぽちと作業に入った。Incrementにしたいのにその設定がない。Serverならば下図のように項目があるのだが、SQLiteのほうにはその項目がない。Keyと設定されていればId値がNullだったり0の場合は勝手に値を自動生成しますよ?とか書いてある。おぉ、すげー、ということでそのまま作業をすすめ、いざ準備が整ったのでささっとプログラミングして動かしたらうごかねー。KeyがUniqueではありませんと例外を投げ出されてしまった。なんでなんで、と色々ぐぐったけどあまり有効な情報がヒットしない。edmxファイル上でStoreGeneratedPatterをIdentityにしなさい、とかの指示はあったけど、それはedmxファイルを作ったときにやってあったのでまだ他の問題があるようだ。AUTOINCREMENT」と入力し、edmx上の対応するテーブルを消去してから追加して実行したら正常に動作した。Incrementなデータを流し込むためにはAUTOINCREMENTって記述が必要ってことなのかな、よく分からんけど。v3に変わり、以前のようにStreetViewを使うために自前でゴリゴリとPegmanの挙動やら何やらを制御してやる必要がなくなったわけだが、それにあわせてイベントの種類も減ってしまったように見える(あくまでReference的な意味で)。いうのも、StreetViewPanoramのEvents項目を見ると、そこにはcloseclickしか載っていない。これではいつMapがStreetViewモードに切り替わったかなどのイベントが拾えないじゃないか、と思いつつもデバッグ時にStreetViewPanoramのインスタンスを掘り下げてみたらReferenceに載っていないイベントがたくさん見つかった。今回はそのうちの一例を紹介しようと思う。下記の例はgoogle.maps.StreetViewPanoramaの表示・非表示が切り替わったイベントをハンドルしている。これは、MapのほうでPegmanを地図上に落とした場合などにも呼ばれるイベントなので、Mapの動作に併せてStreetViewPanoramaの挙動を変えたいときに重宝するイベントだ。v3を使用し、IE8でStreetViewを表示すると下図のように描画が崩れてしまう。分からないかもしれないが、画面中央に表示されるべき矢印が画面左側に寄ってしまっている。ちなみにFF、Chromeで表示すると下図のように正しく描画される。この現象はgoogle.maps.Mapとgoogle.maps.StreetViewPanoramaに分けてStreetViewを実装しているのでまだこの程度で収まっているが、google.maps.MapにStreetViewの描画を任せている場合はその崩れ具合が悪化する。ちなみに上記の問題を引き起こしているのは下記のタグだ。>このタグがあるとStreetViewが正しく描画されないようだ。これがないとIE8ではCSSの描画が崩れるという問題があった。何か解決方法がないものか、と思いつつも面倒なのでとりあえず一旦休止。APIのv2が先月正式に非推奨になったのでwww.my-clip.netのAPIをv3へと移行した。v3になったことで大幅に変わった箇所がいくつかあるので下記に列挙しておく。Keyはもう必要ない。下記のようにVersionを含まないUrlをScriptタグのソースに指定すれば常に最新のライブラリが参照できるようになっている。google.maps.Polylineとなっている。これにあわせていくつかメソッドやプロパティも変更されているので注意するように。Geocoder.geocode()(GeocoderはCallbackメソッドのシグネチャと返却される値の構造が変わっているので要注意)・GBrowserIsCompatible()、GUnload()がないReferenceで明示的に廃止されたとは記述されていないけれど、Referenceに記述がないのとForumなどの他のユーザーからの報告をもとに類推すると現状上記二つのメソッドに対応するものはない・StreetViewのサポートStreetViewの導入がしごく簡単になった。trueを渡してやるだけでStreetViewが使用できるようになる。詳細はここに載っているサンプルコードを参照してもらいたい。クラスの配置場所が変わっているので移行作業が大変そうに映るが思ったよりも大変ではなかった。refused」とかなんとか言われて接続できない。この理由はエミュレーター上でlocalhostとはエミュレーター自身を指すので、テスターが期待するようにはエミュレーターを実行しているマシンをルックアップしてくれない。解決方法は指定するURLを下記のようにプライベートIPアドレス(PvIP)へと変更しなければならない。Client)PvIPはコマンドプロンプトなどからipconfigを実行して取得すればよい。Serverを指定すると動かない。デブサバとはなんぞや、というのは下図のようなASP.NET開発者にはなじみの開発環境用のお手軽自動サーバーのことだ。仮にデブサバが起動している状態でブラウザからhttp://192.168.0.2:52267/へとアクセスしても、サイトが見つからないと拒絶されてしまう。そのため、デブサバをPvIPで使うのは早々にあきらめて、IISでWebアプリケーションを仮想ディレクトリに登録する必要がある。「デブサバのlocalhostにアクセスする方法」とこのポストのタイトルにあるが、それは色々と試したけれど無理だったので、もう普通にIISでテストしたいアプリを仮想ディレクトリにしたほうが早い。設定した仮想ディレクトリは下図のようになる。下の項目のstripmeにアクセスするにはhttp://192.168.0.2:56526/となる。これでAndroidのエミュレーターからもHttpGetが正常に期待したサイトへとリクエストされるようになる。Japanウェブアプリ、デスクトップアプリ、モバイルアプリ、ゲームなどを開発しています。