2011年12月17日土曜日

WebBrowser オブジェクトの Tap, DoubleTap イベントを拾う

xaml のプロパティでは各イベントハンドラが定義できます。 当然、定義したイベントに対してハンドラが呼ばれることを期待する訳ですが、呼ばれないものもあります。
例えば WebBrowser オブジェクトの Tap, DoubleTap イベントなどです。


なぜか。WebBrowser は既に double tap すると拡大・縮小するというハンドラが定義されています。そして処理済みのイベントに対しては後続のハンドラが呼ばれないことになっています。

これを回避するためには
webBrowser1.AddHandler(
WebBrowser.DoubleTapEvent , new EventHandler<GestureEventArgs>(webBrowser1_DoubleTap), true);
のようにAddHandler()を使ってハンドラを登録し、その第三引数で true を指定してコールバックするよう明示してあげる必要があります。

でも、定義済みのハンドラを外すのはどうしたらいいんだろう。 OnDoubleTap をオーバーライドすればいいのかしらん。

2011年12月13日火曜日

Windows Phone の開発を Mac 上の仮想マシンで行うのはほぼ不可能

Windows Phone の開発環境を Mac 上に構築しようと四苦八苦した記録です。
結論としては「BootCamp 必須」です。XNA使わないなら仮想マシンでもなんとかなるんじゃと思ってたけど浅はかでした。
  • ホストOS
    • MacBook Pro (15inch, 2.4GHz Core i5, 8GB memory)
    • Mac OS X 10.7.2
  • VirtualBox 4.1.6
    • エミュレータがとても遅い。起動も遅いし、xapの配置も遅い
    • 加えてzune softwareが起動しない。つまり実機の接続が出来ない
      • Direct3D を有効にし、ビデオメモリの割り当てを追加したら起動はするようになった
      • が、しかしウィンドウ内がちらつくのでまともに操作が出来ない
    • エミュレータの AdditionalTools (">>" を押したときにでてくるやつ) が起動しない
  • VMware Fusion 4.1.1
    • それなりに快適
    • zuneは起動した
    • エミュレータ上でWebBrowserコンポーネントが描画されない
    • 例えば http://msdn.microsoft.com/en-us/library/ff431744(VS.92) のMini-Browser Sampleをビルドしても、コンテンツが描画されず、真っ白なまま
    • AdditionalToolsは起動するがスクリーンキャプチャができない(internal errorと言われる)
  • Parallels
    • もう疲れた...
    • 仮に動いたとしても将来動かない機能があったときに、それが自分のコードが悪いのか、エミュレータぎ悪いのか切り分けが必要で、本質とかけ離れたところで苦労しそう
    • という訳であきらめました
特にスクリーンキャプチャができないのが致命的で、これがないと AppHub から登録ができません。 開発自体は実機でできても、公開ができなければモチベーションの維持ができません。 (Windows Phone は実機でスクリーンキャプチャが (まだ?) できません。)
というわけで、やはりBootCampが幸せへの近道のようです。あるいはPCを一台買うか。
あぁ、スタートラインが遠い...
最後に、Windows Phone エミュレータのシステム要件へのリンクを貼っておきます。 http://go.microsoft.com/fwlink/?LinkID=219823

2011年12月11日日曜日

vmware: VMware Fusion で簡易インストールを使うとキーボードが日本語配列に なる

VMware Fusion には簡易インストールという機能があります (おそらく他のエディションにも)。 これはプロダクトキー、パスワードを仮想マシンのセットアップ時に入力しておくと、 インストール作業をほぼ全て自動でやってくれるという優れた機能です。

しかしながら、キーボードの配列を勝手に日本語 (106) 配列にしてしまうようで、 英語 (101) 配列になれた身にとっては苦痛きわまりないです。

http://blog.heiichi.com/?eid=792239 このページの通りに書き換えたところ、 無事 101 配列になりましたが、こういった考慮はされていないので注意が必要です。

2011年12月9日金曜日

WP7: Visual Studio 2010 Express を Emacs like なキーバインドにする

Windows Phone アプリ開発で初めて Visual Studio を使いました。 普段は Mac を使っているので、VSのキーバインドも emacs なものに変更しようと試みましたが、 Express 版ではそのような手段は提供されていないようです。 大変がっかりしたのですが、手で一つ一つ設定することで大体の目的を達成することができました。

以下のようにします:

  • Tools > Options > Environment > Keyboard を開く
  • 必要な Edit.XXX を再定義する
  • Edit.EmacsXXX というエントリもあって紛らわしいが、これは変更しても何も起きないようだ
  • スコープは "Text Editor" にしておく
  • "Global" と"Text Editor" スコープで定義が重複している場合には "Global" が負ける

この設定をエクスポートしたものを https://raw.github.com/zakkie/VisualStudioExtension/master/emacs.vssettings においたので良かったら参考にしてください。emacs.vssettings の末尾に定義したキーが並んでいます。


追記1: emacs.vssettings の URL を変更

2011年12月1日木曜日

WP7: ChevronWP7 によるアンロックサービス

先日、ChevronWP7 から Windows Phone7 をアンロックするサービスが開始されました。 わくわくしながらアンロックを試したのですが、

“Your phone is ignoring us”

となって先に進めませんでした。SIM が入ってないからかなーとか色々疑いましたが、 結局画面をロックした状態で使用していたのが原因でした。タイルを表示した状態で 接続したところ、無事進むことができました。

さて一歩進んだわけですが、ChevronWP7 Labs と PayPal でトラブっているようで、 Token の購入ができません。twitter で "Good news, we're switching payment gateways soon" と言っているので、まあ気長に待ちますか。

2011年8月27日土曜日

mac: Nドライブをバックアップに使う (失敗)

NAVER が提供している Nドライブが 30GB まで無料で使えるようになりました。 http://ndrive.naver.jp/notice?page=1&docId=317

30GB もあると色々できて大変魅力的だけど、こういった所にプライベートなデータを 置くのは、やはりちょっとためらわれます。 かといって毎回暗号化するのも面倒だし。

ところで OSX には sparsebundle image というものがあります。 マウントすると単一のディスクのように見えるけど、その実は8MB 毎に細切れになった ファイルの集合です。 暗号化もできます(AES)。 元は TImeMachine で効率的に差分バックアップをとるために導入されたもので、実績も十分。

この sparsebundle image を Nドライブに置くと、安心して使える 30GB のディスクスペースができるのではなかろうか、ということでやってみました。

  1. まずは http://ndrive.naver.jp/ から会員登録
  2. NドライブエクスプローラーMac版 をインストール
  3. Nドライブアプリを起動し 1. で登録したログインアカウントでログインすると "hogehogeのNドライブ" がマウントされます

ここまでで Nドライブの準備は完了です。

次に sparsebundle image を作成します。

  1. ディスクユーティリティをひらきます
  2. ファイル > 新規 > 空のディスクイメージを選択
  3. 次のように入力。注意すべきは、保存先にローカルドライブを選択すること。 Nドライブ上に直接作ると、ディスクイメージ作成が失敗する
  4. パスワードを求められるので、適切に入力
  5. 自動的にマウントされるので、一旦アンマウントしておく
  6. できたディスクイメージをNドライブにコピー
  7. このディスクイメージをマウント

7. でマウントした先に適当なファイルを放り込むと、 しばらくたって同期するはず... なんだけど、途中でマウントが解除されてしまう。

Mac版はまだBeta みたいだから何かバグってるのかも。 段々面倒になってきたから、今日はここまで。

2011年7月26日火曜日

misc:

http://internet.watch.impress.co.jp/docs/news/20110726_463176.html

また、BIGLOBEも「BIGLOBE光パックNeo with フレッツ」など、フレッツ 光ネクストの利用者向けにIPv6接続の申し込みを開始した。

2011/7/26 18:15

http://biglobe.co.jp/press/ まだプレスは出ていない。フライングかな。

2011年7月8日金曜日

python: pylint は 0.22 から python 2.4 のサポートを打ち切ってた

Changelog:

2010-11-15  --  0.22.0
    * python versions: minimal python3.x support; drop python < 2.5 support

さらに pylint だけ 0.22.0 に戻してもダメで、依存する logilab-astng と logilab-common も戻す必要があった。

結局、

  • pylint-0.21.4
  • logilab_common-0.52.1
  • logilab_astng-0.20.4

で動くようになった。

CentOS5 の標準パッケージの Python は 2.4。 ここに pylint を入れようとしてハマった..

2011年6月18日土曜日

python: pytyrant はテーブルデータベースを扱えない

TokyoTyrant の Python binding である pytyrant はテーブルデータベースが扱えない らしい。

http://code.google.com/p/pytyrant/issues/detail?id=5

で、対応するように修正したけどコードが大幅に変わっちゃったから pyrant という プロジェクトを fork した、と。

つまり pyrant を使っとけばいいのか。

2011年5月29日日曜日

linux: squashfs

Linux でバックアップ方法をしらべていて、squashfs というものを知った。

wikipedia.ja 曰く、SquashFS (.sfs) は Linux 向けの 圧縮された読み込み専用ファイルシステムである。

古典的な dump/restore だと、restore するまで中身を知る術がない。 今回は、使わなくなったホストを潰す、HDD の中身は必要ないはずだけど念の為保存しておきたい、 が目的だったので、dump/restore 以外の方法を調べていた。

作成は簡単で次のようにする:

# mksquashfs /etc /tmp/etc.sqfs -noappend
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on /tmp/etc.sqfs, block size 131072.
(snip)

ちゃんと cpu 2 つ使っているようだ。

更に fs というくらいで、disk image を mount することもできる:

# mount -o loop -t squashfs /tmp/etc.sqfs /mnt/tmp

これで心置きなくデータを消去できる。

ただ、出力先に stdout を指定できないのはちょっといけてない。 stdout に吐いて ssh なりに渡してリモートに保存、ができない。 一旦ファイルの保存してコピーするのは実に面倒だし、保存するための空き容量も見積る必要がある。

/dev/stdout か named pipe でできるかなと試してみたけど、やっぱりだめだった。

2011年4月7日木曜日

mac: Chrome の等幅フォント

http://blog.zakkie.net/2010/02/mac-safari_17.html の Chrome 版。

~/Library/ApplicationSupport/Google/Chrome/Default/UserStyleSheets/Custom.css に次のように書く:

@charset "iso-8859-1";
textarea{
    font-family:Osaka-Mono;
}

2011年4月6日水曜日

memo: git の解説

絵で覚える git.

http://marklodato.github.com/visual-git-guide/index-ja.html

ようやく add の意味が分かった。

2011年4月4日月曜日

blogger: reStructuredText で Blogger へ投稿

blogger の編集は WYSIWIG エディタか HTML そのままの編集の 2 通りがある。 しかしどちらも面倒。wiki っぽい記述ができればと考えて、 reStructredText で書いて投稿するスクリプトを作った。

https://github.com/zakkie/rst2blogger

2011年2月7日月曜日

blogger: addthis ポタンの設置

addthis ボタンを設置してみた。 やり方は http://www.addthis.com/help/blogger そのまま。

2011年2月6日日曜日

misc: 環八の迂回路

環八の迂回には 首都高中央環状線 が良いことを最近知った。
武蔵小杉あたりから練馬I.C. まで 2 時間ほどかかっていたのが、1時間もかからないで到着。
料金は1,200円くらいだったけど、あのイライラする時間を考えれば十分安い。

2011年1月6日木曜日

mac: 年賀状 2011

以前、http://blog.zakkie.net/2010/01/mac.html で mac での年賀状作成について書いた。
ただ、葉書AB だとヒラギノフォント以外を使った場合にハイフンや長音符が横向きのままになってしまって、とってもかっこ悪い。
ヒラギノフォントもキレイだけど、年賀状の宛名はやっぱり毛筆系のフォントの方がしっくり来る。
葉書AB の作者もその辺は認識されていて、対応作業中っぽい。だけど待てないので今年は Quick Hack してみた。もう年賀状シーズンも終わってしまったが、一応メモしておこう。
といってもたいしたことはなく、アドレスブック.app のデータベースは sqlite なので
  • データベースファイルをコピー (バックアップ)
  • データベース中のハイフンと長音符を|に置換
するだけ。
具体的には、
#!/bin/sh -e
cp -i AddressBook-v22.abcddb tmp
sqlite3 AddressBook-v22.abcddb "UPDATE ZABCDPOSTALADDRESS SET ZSTREET = replace(ZSTREET,'-', '|');"
sqlite3 AddressBook-v22.abcddb "UPDATE ZABCDPOSTALADDRESS SET ZSTREET = replace(ZSTREET,'ー', '|');"
を ~/Library/Application Support/AddressBook に置き、
  1. アドレスブック.app を終了させる
  2. $ cd ~/Library/Application Support/AddressBook
  3. $ sh convert.sh
  4. アドレスブック.app を起動
  5. (使用後) $ mv tmp AddressBook-v22.abcddb
です。
ちなみにフォントは Snow Leopard にデフォルトでインストールされてた "STKaiti" を使用してみた。中国語用のフォントだけど、使ってみた所では「直」以外は普段目にする字体で表示できた。ちょっと碑文な雰囲気になるけど、これはこれでいい感じ。