「技術」カテゴリーアーカイブ

Titanium.Platform.model で取得できる値でデバイスを判別する(iOS編)

iPhone4,1 とか iPad3,1 とか取れるけどどれがどのデバイスなのかわからなかったので、一覧を探してみたらあった。

http://stackoverflow.com/questions/448162/determine-device-iphone-ipod-touch-with-iphone-sdk/1561920 にある https://gist.github.com/Jaybles/1323251 によると

続きを読む Titanium.Platform.model で取得できる値でデバイスを判別する(iOS編)

Titanium 2.x系から3.x系に移行する時はメモリー使用量に要注意?

そもそも作りがアレなのも関係あるんだろうけど、シングルコンテキストで作ってあるアプリをTitanium 2.x系から3.x系に対応しようとしてハマったお話。

そのアプリはiOSデフォルトの「写真」のようなアプリで、windowの上にtoolbarとtableviewとnavigationbarが乗っているようなUI。tableviewには行ごとにtableviewrowが乗っていて、tableviewrowの上にはそれぞれいくつかのimageviewが乗っている。

続きを読む Titanium 2.x系から3.x系に移行する時はメモリー使用量に要注意?

pecl::imagickでサムネイルを作る時はstripImage()する癖をつけておいた方が無難かも

$img = new Imagick('src.jpg');
$img->thumbnailImage(80, 60);
$img->writeImage('dst.jpg');

これだとsrc.jpgはそれなりの大きさの画像だとして、80×60のサムネイルを作っているのになぜかファイルサイズが元画像とほぼ同じになってた。
(前はこれで良かったんだけど、いつからか仕様がかわった?)

$img = new Imagick('src.jpg');
$img->thumbnailImage(80, 60);
$img->stripImage();
$img->writeImage('dst.jpg');

としたらそれなりのファイルサイズになるようになった。
もしかしたら特定のバージョンのみで起こる現象なのかもしれないけど、普段からstripImage()する癖をつけておいた方が無難そう。

Thunderbirdでメールの保存形式にmaildirが使えるようになっていた

設定から mail.serverDefaultStoreContractID を @mozilla.org/msgstore/maildirstore;1 にすればOK。

今の所新しく設定したアカウントのみの対応なようなのと、mboxで運用しているアカウントからmaildirで運用しはじめたアカウントへのメッセージの移動がうまく出来ない?ようなので、まだまだ開発者向けの機能っぽい。もうちょいか?

参考: http://jaisejames.wordpress.com/2012/03/15/to-activate-maildir-in-thunderbird/

proxy_cache_lock を使う時は proxy_cache_lock_timeout も明示的に設定する必要がある?

またもやnginx。

proxy_cache_lock on; にすると、キャッシングが有効な時、複数同時にnginxが受けたリクエストを束ねてひとつだけをバックエンドに転送してくれる。ということでonにしてみた。キャッシュが空の状態で ab -c 10 -n 30 とかやっても確かにバックエンドにはひとつしかリクエストが行かない。いいねーーー!

と、思ったのもつかの間。調子に乗ってabしてるとたまにリクエストを束ねてくれない時がある。少し試してみたところ、どうもキャッシュの有効期限が切れてnginxが内部的にパージ処理をしている時が怪しい気がする。

続きを読む proxy_cache_lock を使う時は proxy_cache_lock_timeout も明示的に設定する必要がある?

Titanium mobile webView.evalJS() は「”」と「’」の使い分けに気をつけろ

meta タグにアクセスしたくてこんなコードを書いた

webView.evalJS('document.getElementsByName("author").item(0).content');

これは動かない。が、

webView.evalJS("document.getElementsByName('author').item(0).content");

これは動く。どっちも同等のコードをブラウザ上で動かすぶんには動くんだけど、Titaniumは現時点では(2.1.4)後者の書き方じゃないとダメな模様。なんでだよ。。