2010年 11月 30日


Titanium Mobile (iPhone) で、アプリの WebView 内HTMLの特定スキームをハンドリングするテクニック

ローカルHTMLや、直接HTMLを書く場合、Titanium オブジェクトがHTML側から可視なので WebView 内部と外部のコミュニケーションは別段難しくない (fireEvent したら良い) のだけれど、リモートHTML (自分のウェブサービスと協調させたいときとか) の場合はそうはいかないので、別の方法が必要。

ということでカスタムスキームは使えないのか? と思ったのだけれど、それらしいAPIはない。こりゃカスタムスキームのハンドリングはできないな、と思いきや別の方法により可能であることがわかった。

前置きともかく以下のようにするとできる。ここではカスタムスキーム名を custom: としている。

var webview = Titanium.UI.createWebView();

// ローカルでもリモートでもどっちでも良い
webview.url = 'http://localhost:5000/sketch.html';
//webview.html = '<!DOCTYPE html><html><body>' +
//	'<p><a href="custom:foobar">custom scheme</a></p>' +
//'</body></html>';

webview.addEventListener('error', function (e) {
	// "Error Domain=WebKitErrorDomain Code=101 \"The URL can\U2019t be shown\" UserInfo=0x6872120 {NSErrorFailingURLKey=custom:foobar, NSErrorFailingURLStringKey=custom:foobar, NSLocalizedDescription=The URL can\U2019t be shown}"
	if (/NSErrorFailingURLKey=custom:(\S+), /.test(e.message)) {
		var data = RegExp.$1;
		alert(data);
	}
});

Titanium.UI.currentWindow.add(webview);

コードの通りですが、WebView はハンドリングできないエラーがあると error イベントを発火するので、それをキャッチして処理してやるだけです。なので存在しないスキームしかハンドリングできないです。iPhone だと遷移も発生しないので割といい感じです。

なんか根本的に解決する方法があれば良いのですが、あれば教えて頂けると嬉しいです。

2010年 11月 29日


自動CPAN祭 AutoInstall.pm

モジュールが見付からなかったとき自動的に CPAN install するのはなんかあるんですが上手く動いてくれなかったので簡単なのを書きました。最近 perl ごと入れなおすハメになって面倒だったのですがだいぶ楽にいけました。

PERL5LIB パスが通ったディレクトリに以下のスクリプトを置いて、perl -MAutoInstall foobar.pl とかでいけるので便利です。

なんかもっと確実で、良い方法があったらいいのですが、知らないので困った感じです。

2010年 11月 28日

必要にかられて、会社 PC を Leopard から Snow Leopard にアップグレードして、だいたい上手く動いてそうだなあと思ったやさき、いろいろおかしくなっていることに気付き、結局自力で入れた全てのライブラリやプログラムを入れなおすハメになり、死にたくなるほど時間がかかっている……

MacPorts だと全力で全部入れなおしになってしまうので sudo rm -rf /opt/local して MacPorts を消しさり、homebrew でセットアップしなおしている。perl も、今までは MacPorts のを使っていたけどやめて、perlbrew で 5.8.8 (アプリサーバとバージョンをあわせて) を導入することにした。

CPAN 祭がつらい……

久しぶりに 50mm F1.4 を使って撮ったりした。開放でとるとかなり甘いうえに周辺減光が激しいので、流行りの instagram っぽい感じになる。F5.6 ぐらいまで絞るとシャープになるので面白い。

50mm の感覚を忘れていて、100mm にすると落ち着くようになってしまった。

Canon 単焦点レンズ EF50mm F1.4 USM フルサイズ対応 - キヤノン

キヤノン

3.0 / 5.0

  • 余白はなおした
  • 記事一覧ページも微妙ながらあてた

本文の背景が真っ黒だとなんか気取ってる感ある……

#000 -> #111

Snow Leopard / Lion にしたら vim の中から起動する perl がシステムデフォルトの perl に固定されてしまった。

Snow Leopard が余計なことをするようになった。なんとなく "vim path /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin" とかでググっていたら、http://d.hatena.ne.jp/yhino/20100908/1283963661 というエントリがひっかかってくれた。

/etc/profile とか /etc/zshenv とかで /usr/libexec/path_helper というプログラムを実行してシステムのパスを先頭に追加するとかしているので、vim のような環境で、~/.zsrhrc が呼ばれない場合、システム側のしか呼ばれなくなっている。本来 PATH 通しとかは ~/.zshenv に書くべきなので、自分も悪いのだけれど、PATH の管理ぐらい自分でできるし、余計なことをしてほしくないので以下のようにした

$ lm /usr/libexec/path_helper
-r-xr-xr-x  1 root  wheel    50K  5 19  2009 /usr/libexec/path_helper*

$ sudo chmod -x /usr/libexec/path_helper

$ lm /usr/libexec/path_helper
-r--r--r--  1 root  wheel    50K  5 19  2009 /usr/libexec/path_helper

単に実行権限をなくした。

はてなダイアリーのCSSを簡単に書けるようにする

はてなダイアリーのCSSを編集するのはなかなか骨の折れる作業で、とりあえず HTML を落としてスタイルをあてたりしても、ある程度できあがってからは、自分のダイアリに実際に反映してしまって、オンザフライで、あの designdetail のページでCSSを修正してしまったりするものです。

とはいえ、あのフォームはトライアンドエラーを繰替えすには大変なので補助するスクリプトを書きました。

以下を保存して実行すると (Config::Pit で user と pass を指定する必要があります)、$EDITOR で現在のデザインCSSを開き、保存すると反映される状態 (1秒ごとにチェックしており、HTTP で POST しているので、保存してすぐとはいきませんが) になります。

また、ミスって変更しても戻せるように、~/.hatenadiarydesign/ 以下にバックアップを作りまくります。

gerry++