jQuery から Zepto.js に移行した時のメモ
先日、開発中のサービスのパフォーマンスがよろしくないという指摘が上がり、
原因は色々あるのだけどまぁフロントエンドでもやることはやろうということで、
ライブラリとして利用していた jQuery から Zepto.js に移行してみました。
Zepto.js は jQuery と比較してファイルサイズが小さく、初期化処理が高速なので、移行するだけでパフォーマンス改善が期待できます。
ただし、jQuery の完全サブセットというわけではないので、jQuery への依存度によって移行の難易度は変わってきます。
今作っているサービスでは、以下の対応で無事移行することができました。
同じような状況の方の参考になれば。
Deferred が無い
simply-deferred を導入して解決しました。
ただ、$.when を利用した時に全ての Deferred の戻りを resolve に返してくれないので、その部分をパッチしました。
(この件はそのうちエントリ書きます)
$.data が型変換を行わない
jQuery では自動的に型変換が行われますが、Zepto では全て文字列が返ります。
JavaScript の型変換を利用しないポリシーで実装していたので、明示的に型変換を行う対応が必要になりました。
$.ajaxError が無い
$.ajax でエラーが発生した場合に共通的なエラーダイアログを表示するために利用していました。
今回は $.ajax をラップしたモジュールを共通的に利用していたので、$.ajax().fail() に実装を移して解決しました。
$.ajaxPrefilter が無い
iOS6 で POST リクエストもキャッシュされてしまう問題に対応するため、
POST 時に URL にタイムスタンプを付与する実装を入れていました。
($.ajax の cache: false は POST 時に有効にならない)
前述の通り、$.ajax の利用箇所を1つにまとめていたので、$.ajax コール前に URL を書き換えることで解決しました。
$.event.special が無い
$.event.special を利用することで、jQuery は独自のイベントハンドラを定義したり、既存のイベントハンドラをフックすることができます。
これを利用して、Mobile Safari での click event による 300ms delay を対処するため、独自の touch イベントを定義していました。
Zepto では別途 tap というイベントが利用できるので、こちらを使うことで解決。
CSS3 アニメーションライブラリが動かない
利用していた CSS3 アニメーション用 jQuery プラグインが $.queue を利用していたため、queue 実装を持たない Zepto.js では全く動きませんでした。
これはとりあえず独自に queue の実装を行なって対処しました。
iPhone 5 の電池の消費が早い場合の対策メモ
iPhone5 の電池の消費が iPhone4 より極端に早くねーか・・・?と思い、色々設定を試してたところ、どうも Siri がオンの場合に電池の消費が早いような感触です。
常に必要とする機能じゃないし、オンにされている方は一度オフにしてお試しください。
Java でオレオレ証明書をインポートする手順 (Windows)
自己証明書をサーバーから落としてくる
サーバーに「xxxx.cer」があると思うのでそれを落とす。
コマンドプロンプトを管理者として実行する
ここ重要。
管理者として実行しないと、キーストアへインポートする際にエラーになる。
Java の keytool を実行してインポート
[shell]
cd C:\PROGRA~1\Java\jdk1.6.0_xx\bin
keytool -import -alias original_ca -keystore C:\PROGRA~1\Java\jdk1.6.0_xx\jre\lib\security\cacerts -file (xxxx.cerへのパス)
[/shell]
keytool を実行するとキーストアのパスワードを聞いてくるかもしれません。
特に設定した覚えがない場合はデフォルトパスワードである「changeit」と入力。
以上で無事インポートが完了します。
ジーニアスバーで iPhone 4 を交換してもらってきた
先日 iPhone の電源ボタンが押したところ、変な感触と共に一切効かなくなってしまいました。
以前からホームボタンの効きも悪くなっていたので、これは修理するしかないかなーと思って調べてみたところ、ジーニアスバーでの交換なら ¥13,800 で済むことが判明。
発表が噂されている新 iPhone に機種変しても、今の iPhone 4 は使い続ける予定なので、
この機会に交換してもらうことにしました。
ジーニアスバーは事前の予約が必要です。
Apple のサイトか、Apple Store アプリから予約ができます。
なぜか Apple の予約サイトは日本語化されていないので、苦手な方はアプリの方が良いかもしれません。
で、予約した渋谷のジーニアスバーに本日行って来ました。
症状を伝えると、特に実機の確認もせずに交換の説明に。
えーーそんなんで良いの?
同じ機種で交換するか、機種変かの選択しがあったのですが、
交換すると決めていたのでその後の手続きもスムーズに。
フィルムの交換も手伝いますよ?と言ってくれたのですが、
使い続けて汚くなっているのでやめておきましたw
ジーニアスバーの対応は超迅速と聞いていましたが、ガチで5分で交換が終わりました。
対応してくれた方が異常に早口だったのも要因かもしれませんが。
復元がちょっと面倒だけど、iPhone が新しくなって満足です。
交換、悪くないかも。