ようへい

2013年7月18日木曜日

非推奨になった Mutation events を Mutation Observers に置き換えよう

前からDOM3(黒い三連星じゃないよ)で実装されたDOMAttrModifiedや、DOMNodeInsertedをGreasemonkeyスクリプト内で使用していたのだが、これらのMutation eventsが非推奨となってしまったらしい。
じゃあ何を使ったらいいの?ということで、Mutation ObserversというAPIが提供されているらしい。 Mutation Observersの利用方法をまとめてみた。

ちょっと読んでみよう

使う前に、どうやって使うかなど、ちょっと頭に入れておこう。
Mozillaのページにまとめて書いてあるので、そちらを見れば大丈夫かと。
MutationObserver - Web API リファレンス | MDN
https://developer.mozilla.org/ja/docs/Web/API/MutationObserver MutationObserverにメソッドを与えてインスタンスを作成。
インスタンスメソッドのobserve実行時のオプションで、監視する種類などを設定すると。フムフム。

MutationObserverはこう使う

コードを見た方が速いので、まずは使い方から。
たとえば、DOMAttrModifiedMutationObserverに置き換えるとこんな感じ。
$('#hoge').bind('DOMAttrModified',function(event){
  console.dir(event);
});
var mo = new MutationObserver(function(mutationRecords){
  console.dir(mutationRecords);
});
mo.observe($('#hoge').get(0), {attributes: true});
変更前の値も欲しいならこう
var mo = new MutationObserver(function(mutationRecords){
  console.dir(mutationRecords);
});
mo.observe($('#hoge').get(0), {attributes: true, attributeOldValue: true});

Mutation eventsからMutationObserverへ移行しよう

こんな感じかな。
Mutation events Mutation Observers
DOMAttrModified observe( Node target, {attributes: true, attributeOldValue: true} );
DOMNodeInserted observe( Node target, {childList: true} );
DOMNodeRemoved observe( Node target, {childList: true} );
DOMCharacterDataModified observe( Node target, {characterData: true, characterDataOldValue: true} );
DOMSubtreeModified observe( Node target, {subtree: true} );
そして Firefox、Chromeは実装しているけど、Internet Explorerは未実装らしい。さすがやで!期待を裏切らない。それでこそIE。
IEは消費電力で勝負ですもんね。
よいこのみんな!夏は消費電力を抑えるためにIEを使おうね (オイ)
Internet Explorer 10の消費電力はChromeやFirefoxより18%低い, とMicrosoftは主張 | TechCrunch Japan
http://jp.techcrunch.com/2013/06/06/20130605microsoft-internet-explorer-10-is-the-most-energy-efficient-browser-uses-up-to-18-less-power-than-chrome-and-firefox/
関連記事

2013年6月21日金曜日

Firefoxでの HTML5 Notifications (デスクトップ通知) 設定変更方法

Firefox 22から実装されているHTML5 Notifications APIですが、権限がリクエストされた時にこんなポップアップが表示されます。
Firefoxでの HTML5 Notifications (デスクトップ通知) 設定変更方法
Firefoxでの HTML5 Notifications (デスクトップ通知) 設定変更方法
ここで、デスクトップ通知の許可/拒否を設定します。
常に通知を表示する」か「通知をブロックする」に設定した場合、以後はポップアップが表示されません。
許可されると、こんなカンジでデスクトップ通知を受けれます。
Firefoxでの HTML5 Notifications (デスクトップ通知) 設定変更方法
のちのち、この設定を変更したいという場合、どうやったら変更できるのか調べてみました。

設定に無い!

まずオプション画面を一通り見たのですが、該当の設定がありませんでした。
こりゃ困った。
どっかには保存されているだろうと、Firefoxのprofileを覗いてみる。
permissions.sqliteに、typedesktop-notificationとなっているレコードを発見。hostの値も合っているし、これっぽい。
最悪、ここから変更はできそう。
でも、さすがに設定画面が用意されていない事は無いだろう。ということで、Firefoxの画面を一通り調べてみた。

こんなところにあった

ありましたよ。分かりにくいけど。
Firefoxのメニューから、ツール»ページの情報をクリックして、サイト別設定タブを開く。
すると、サイトからの通知の表示というのがあるので、ここから設定できます。
Firefoxでの HTML5 Notifications (デスクトップ通知) 設定変更方法
Firefoxでの HTML5 Notifications (デスクトップ通知) 設定変更方法
一括管理できる画面欲しいなぁ・・・。
FirefoxでのHTML5 Notifications API 通知方法 - ログろいど
関連記事

FirefoxでのHTML5 Notifications API 通知方法

Firefox 22からHTML5 Notifications APIがサポートされるという事で早速使ってみた。 とりあえずこんな感じで使える。
function notifyReq(){
  Notification.requestPermission(function(permission){
    console.debug("Notification permission: "+permission);
    if(Notification.permission == "granted"){
      notify();
    }
  });
};
function notify(){
  switch(Notification.permission){
    case "granted":
      new Notification("デスクトップ通知テスト", {
        icon:"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixMhqVE-KPC4uFvSew7A5jZ64O0oJVsUXtBJVwv6JTF0BRIV_dI0hyYUh8qEGR6pdJ-WJaYd9xk97foeo_VCFIXc1O6vI8wWbl6grHGpbItKdrIMbn4tU8w4Zeaqj05ynBJdbhEHtkyWgE/s220/logroid_150.png",
        body:"デスクトップ通知のテストです",
        tag:"notification-test",
      });
      break;
    case "default":
      notifyReq();
      break;
    case "denied":
      console.warn("デスクトップ通知が拒否されています");
      break;
  }
};
notify();
こんなカンジで通知されます。
FirefoxでのHTML5 Notifications API 通知方法
Notification.permissionで現在の権限を見ることができる。
デフォルト状態(ポップアップ表示)なら"default"、許可されていれば"granted"、拒否されていれば"denied"の文字列が返される。
表示が許可されていない場合はNotification.requestPermissionで、権限をリクエストする。こんなポップアップが表示される。
FirefoxでのHTML5 Notifications API 通知方法
FirefoxでのHTML5 Notifications API 通知方法
その後、new Notificationにタイトルとオプションを設定したハッシュを渡す。
ハッシュの中のiconはURLでも良いし、base64の文字列でも良い。
tagを設定すると、デスクトップ通知が多重表示されるのを防げる。
という感じ。
また、new Notificationで得られるインスタンスには、oncloseonclickonerroronshowイベントが登録できる。
onclick時に得られるEventのtargetはNotificationオブジェクトとなっている。
通知クリックで、該当のウィンドウ(タブ)をアクティブ化とかできれば楽しそうだったけど、無理っぽい。

デモ

Firefoxでの HTML5 Notifications (デスクトップ通知) 設定変更方法 - ログろいど
関連記事

2013年6月14日金曜日

HTC J butterfly(HTL21)、 HTC J One(HTL22) スペック比較

OTAアップデートされたHTL21、新しく発売になったHTL22、ともにS-OFFが出来るようになったということで、そろそろ購入を検討。
値下がりしてカラーバリエーションもあるHTL21もいいけど、新しいHTL22も良い。
どっちにしようかという事でスペック比較してみました。
HTL21 HTL22
発売日 2012/12/9 2013/6/1
OS Android 4.1 Android 4.1
CPU Qualcomm Snapdragon S4 Pro APQ8064 1.5GHz Qualcomm Snapdragon 600 APQ8064T 1.7GHz
CPU コア数 4 4
RAM 2GB 2GB
ROM 16GB 32GB
ディスプレイ
サイズ
5インチ 4.7インチ
ディスプレイ
解像度
1920×1080 1920×1080
メインカメラ
画素数
800万(F値2.0) 400万(F値2.0)
microSD 最大2GB 最大2GB
microSDHC 最大32GB 最大32GB
microSDXC - 最大64GB
バッテリー容量 2020mAh 2300mAh
連続通話時間 約750分 約820分
連続待受時間
(LTE)
約270時間 約370時間
連続待受時間
(3G)
約360時間 約450時間
充電時間 約170分 約150分
サイズ 約143 × 71 × 9.1 mm 約138 × 69 × 10.5 mm
質量 約140 g 約157 g
S-OFF 可(2013/06/13現在) 可(2013/06/13現在)
HTL22はHTL21よりコンパクトだけど、ちょっと重いんですね。なんでだろう。
HTL22の決定打が少ないんだよなぁ。
せめてレッドとかあれば惹かれたんですけど。
とはいえ、長く使うと思うのでHTL22のブラックにするかなぁ。
HTL22が3つボタンだったら良かったのになぁ・・・。
関連記事

2013年5月2日木曜日

Mozilla Firefox のアイコンを変更しよう (Firefox 21対応)

Mozilla Firefoxでは、以下のような手順でカンタンにブラウザアイコンを変更する事が可能です。

手順

ディレクトリ作成
Firefoxインストールパスに以下のようなディレクトリを作ります。
Firefox インストールパス(e.g., C:\Program Files\Mozilla Firefox)
└─browser
    └─chrome
        └─icons
            └─default
※Firefox 21で、ディレクトリ構成が変更になったので注意です。
アイコン配置
defaultディレクトリ内に、アイコンを置きます。
アイコンのファイル名は、アイコンを変えたいウィンドウに合わせて変更する必要があります。
main-window.ico
メインウィンドウ
places.ico
履歴とブックマークの管理
downloadManager.ico
ダウンロードマネージャ
CookiesDialog.ico
Cookie
PermissionsDialog.ico
例外サイト - 画像の読み込み/Cookie フィルタ/許可サイト - アドオンのインストール/オフラインデータ
SignonViewerDialog.ico
保存されているパスワード
certmanager.ico
証明書マネージャ
devicemanager.ico
デバイスマネージャ
全てのウィンドウのアイコンを変えたい場合は、main-window.icoplaces.icodownloadManager.icoCookiesDialog.icoPermissionsDialog.icoSignonViewerDialog.icocertmanager.icodevicemanager.icoという名前でアイコンをdefaultディレクトリ内に置いてください。
確認
Firefoxを起動してみましょう。
(起動中の場合は再起動しましょう)

アイコンは変わりましたか?

私はFirefoxのいろんなチャンネルを使っているので、stable版とbeta版のアイコンが同じで見にくかったので、beta版のFirefoxのアイコンを変更してみました。
before
Firefox のアイコンを変更しよう (Firefox 21対応)
どっちがbetaかワカラナイ・・・
after
Firefox のアイコンを変更しよう (Firefox 21対応)
一目瞭然
う~ん。わかりやすくなりましたね。
関連記事