http://qa.atmarkit.co.jp/q/2407 と似た感じでhtmlがロードされたらWebViewの高さを調節するようなことをやっているのだけれど、たまにloadイベントが発火されないことがあるような感じがしている。。どうすっかなぁ。。
「技術」カテゴリーアーカイブ
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 2.x系から3.x系に移行する時はメモリー使用量に要注意?
そもそも作りがアレなのも関係あるんだろうけど、シングルコンテキストで作ってあるアプリをTitanium 2.x系から3.x系に対応しようとしてハマったお話。
そのアプリはiOSデフォルトの「写真」のようなアプリで、windowの上にtoolbarとtableviewとnavigationbarが乗っているようなUI。tableviewには行ごとにtableviewrowが乗っていて、tableviewrowの上にはそれぞれいくつかのimageviewが乗っている。
pecl::imagickで画像を連結する時にRGBとCMYKを混ぜるとsegmentation fault。。
これもなかなかハマったのでメモ。
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/
Titanium Mobile 3.0.2でmoduleがCouldn’t findと言われたら
ti.storekitでハマったのですが、プラットフォームに依存したモジュールはtiapp.xmlのmoduleタグにplatform属性をつけないといけなくなった風。
<modules>
<module version="1.6.2" platform="iphone">ti.storekit</module>
</modules>
参考: http://developer.appcelerator.com/question/148693/problems-with-storekit-and-sdk-302
nginxのlimit_reqの動きで悩んだ
limit_req の制限のかかりかたがなかなか掴めなかったのでメモ。
まずは
limit_req_zone $binary_remote_addr zone=limit_zone:10m rate=1r/s;
limit_req limit_zone;
とすると、leaky bucketというアルゴリズムに基いてIPアドレスごとに1r/sの制限がかかる。超えたぶんは503。
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)後者の書き方じゃないとダメな模様。なんでだよ。。