mof-brown

ずっとモフモフしてたい

jQuery から Zepto.js に移行した時のメモ

 

先日、開発中のサービスのパフォーマンスがよろしくないという指摘が上がり、

原因は色々あるのだけどまぁフロントエンドでもやることはやろうということで、

ライブラリとして利用していた jQuery から Zepto.js に移行してみました。

 

Zepto.js は jQuery と比較してファイルサイズが小さく、初期化処理が高速なので、移行するだけでパフォーマンス改善が期待できます。

ただし、jQuery の完全サブセットというわけではないので、jQuery への依存度によって移行の難易度は変わってきます。

 

今作っているサービスでは、以下の対応で無事移行することができました。

同じような状況の方の参考になれば。

 

 

 

 

Deferred が無い

 

simply-deferred を導入して解決しました。

ただ、$.when を利用した時に全ての Deferred の戻りを resolve に返してくれないので、その部分をパッチしました。

(この件はそのうちエントリ書きます)

 

simply-deferred

 

$.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 の実装を行なって対処しました。

転職前に思っていたことをつらつらと

久しぶりのエントリとなってしまいました。

10月に人生初の転職をして、新しい職場で今のプロジェクトにアサイン後すぐに忙しくなり、

気付いたらあっという間に12月になってしまいました。

社会人になると本当に時間が経つのが早い。

今日は代休をもらったので、狂ったようにドラクエ10のレベル上げをしてたのですが、ふと転職前に感じてたことを思い返していました。

せっかくなのでブログに投下。

続きを読む

iPhone 5 の電池の消費が早い場合の対策メモ

iPhone battery

iPhone5 の電池の消費が iPhone4 より極端に早くねーか・・・?と思い、色々設定を試してたところ、どうも Siri がオンの場合に電池の消費が早いような感触です。

常に必要とする機能じゃないし、オンにされている方は一度オフにしてお試しください。

MNP で au の iPhone 5 に乗り換えた話

iPhone5

長かった!

iPhone4 を使い続けて早2年。本日 MNPSoftBank から auiPhone5 に乗り換えました。

今回 MNP を選択したのは、割引のメリットが大きいのと、 SoftBank のウンコ回線にウンザリしていたので au を試してみたかった、というのが主な理由です。

LTE にしても月額あんまり変わらないしね。

続きを読む

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」と入力。

以上で無事インポートが完了します。

Oracle DB の LogMinor を利用してREDOログを解析する

先日仕事で、想定外のタイミングでデータベースの commit が走っているっぽい不具合が報告されたので、データベース上でどんな更新SQLが実行されているか調べるために LogMinor を利用しました。

LogMinor とは Oracle DB のREDOログを解析するための機能です。

続きを読む

ジーニアスバーで iPhone 4 を交換してもらってきた

ジーニアスバー

先日 iPhone の電源ボタンが押したところ、変な感触と共に一切効かなくなってしまいました。

 

以前からホームボタンの効きも悪くなっていたので、これは修理するしかないかなーと思って調べてみたところ、ジーニアスバーでの交換なら ¥13,800 で済むことが判明。

発表が噂されている新 iPhone に機種変しても、今の iPhone 4 は使い続ける予定なので、

この機会に交換してもらうことにしました。

 

ジーニアスバーは事前の予約が必要です。

Apple のサイトか、Apple Store アプリから予約ができます。

なぜか Apple の予約サイトは日本語化されていないので、苦手な方はアプリの方が良いかもしれません。

 

で、予約した渋谷のジーニアスバーに本日行って来ました。

症状を伝えると、特に実機の確認もせずに交換の説明に。

えーーそんなんで良いの?

同じ機種で交換するか、機種変かの選択しがあったのですが、

交換すると決めていたのでその後の手続きもスムーズに。

フィルムの交換も手伝いますよ?と言ってくれたのですが、

使い続けて汚くなっているのでやめておきましたw

 

ジーニアスバーの対応は超迅速と聞いていましたが、ガチで5分で交換が終わりました。

対応してくれた方が異常に早口だったのも要因かもしれませんが。

復元がちょっと面倒だけど、iPhone が新しくなって満足です。

交換、悪くないかも。