So-net無料ブログ作成

iKnow! を改良しよう その5 [NT]

iKnow! を改良しよう その4 ~prototype.js~ の続き。 smart.fm が作っている JavaScript を解析してもよく分からなかったので、別の方法で回避した。

prototype.js v1.5.0 の使い方 で解説されている Ajax.Responders や Using Prototype and Scriptaculous with Greasemonkey - Jimbojw.com に載っていた埋め込み JavaScript を  Greasemoneky で利用する方法を用いることで、問題は解消。「iKnow! を改良しよう」というネタで続けてきたスクリプトも、ほぼ完成した。

スクリプト適用前:

out2.gif

スクリプト適用後:

out.gif

作成した Greasemonkey 用ユーザスクリプトを適用すると次の機能が smart.fm に付与される。

  • 今日学習したリストには王冠のアイコンがつく。
  • 王冠のアイコンは Bronze、Silver、Gold があり、その日に学習すべきアイテムをいくつ学習したかによって異なる。
  • 一つも学習してないリストは鉛筆のアイコンになる。
  • アイコンをクリックすると、直接 iKnow! か Dictation のアプリケーションが立ち上がる。
  • アイコンの表示される条件は次の通り。
    • ページのロード
    • リストが多く複数ページある場合は、ページの遷移(Ajax的な)
    • ユーザスクリプトコマンドに登録したメニュー

不便だと感じていたから作ったものなので、私としてはとても便利。JavaScript/DOM の手習いにもなったし。

しかし、 改善すべき箇所を見つけた。今日の進捗状況を知るために各リストごとに XmlHttpRequest を発行している。iKnow と Dictatin の 2 つがあるから、私の場合は 1 ページあたり、最大 20 回 のリクエストが発生する。これはとても無駄である。たぶん、リクエストを受けたサーバでは DB を検索してレスポンスを返しているわけで、何とか負荷を下げたいところ。

ということで、簡単なキャッシュの仕組みを作った方が良さそう。キャッシュの作成には Greasemonkey の SetValue/GetValue を使えば良い。

自分だけが使うならサーバにかける負荷なんて無視できるレベルだろうが、公開する場合はそうもいかない...かもしれないし。使う人が少ないなら、気にすること無いのだが...

iKnow! を改良しよう ~その6~ へ続く。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。