Posts Tagged ‘アドオン’

Adblock++がFirefox4で動かなかったのでランタイムを更新

C++で書かれたAdblock++アドオンを使用していましたが、Firefox4で上手く動いてなかった(リストに空になるとか)ので、原因は何だろと探してみたらビルド環境がVisual C++ 2010 Expressに変わってたようです。

PCに入ってたランタイムは2008ぐらいのだったので、Microsoft Visual C++ 2010 再頒布可能パッケージからランタイムをダウンロードし、インストールし直したら動作するようになりました。

ついでに広告配信先が変わって動かなくなってたUstreamのFlash動画内広告を消す方法もアップデートしました。

BENKIi
http://park2.wakwak.com/~benki/index.html

サイトの最終更新日をステータスバーに表示するアドオン「Google Date」

よくTwitterやSBMなどからURLに飛んで、それが書かれたのが結構昔だったりして誤解を生むことがあったりします。
なのでそのサイトの最終更新日を直ぐに確認できるようにした方がいいのですが、意外と日付が書いてないサイトも多いです。
そこでGoogle Dateを使うと、Googleのクロールによる更新日をステータスバーに表示することができます。

元々はGoogle検索の結果に日付を表示するアドオンだった気がしますが、いつの間にかサイト内でも更新日を表示する機能がついていました。

一応、仕組みの方が気になったのでコードを見てみると

doGetDate: function() {
    var doc = gBrowser.selectedTab.linkedBrowser.contentDocument;
    if (doc.location.href != "about:blank" && doc.location.href.match(/^http:\/\//i)) {
        if (typeof this.reqUrl[doc.location.href] != "undefined") {
            document.getElementById("googledateStatusDate").value = this.reqUrl[doc.location.href];
        } else {
            var uri;
            if (this.reqCnt % 2 == 0) {
                uri = "http://www.google.co.jp/search?num=1&tbs=qdr%3Ay15&q=site%3A" + encodeURIComponent(doc.location.href);
            } else {
                uri = "http://www.google.com/search?num=1&tbs=qdr%3Ay15&q=site%3A" + encodeURIComponent(doc.location.href);
            }
            this.reqCnt++;
            var httpOj = new XMLHttpRequest();
            httpOj.open('GET', uri);
            httpOj.onreadystatechange = function() {
                if (httpOj.readyState == 4 && (httpOj.status == 200 || httpOj.status == 304)) {
                    var str = httpOj.responseText.match(/<span class="f std">.*?<\/span>/i)[0].replace(/<\/?[^>]+>/gi, "");
                    document.getElementById("googledateStatusDate").value = str;
                    googleDateHttpRequestObserver.reqUrl[doc.location.href] = str;
                }
            }
            httpOj.send(null);
        }
    }
}

site:http://efcl.info/2011/0218/res2272 – Google 検索みたいな感じでサイト内検索の検索結果から日付部分を正規表現で切り取ってる感じでした。
Googleにクロールされてないサイトでは日付取得ができませんが、日付の精度自体は使ってて問題ない感じになること多いのでとても便利です。

Google Date :: Add-ons for Firefox
https://addons.mozilla.org/ja/firefox/addon/google-date/

Firefox Developers Conference 2010 アウトラインメモ

去年に引き続きFirefox Developers Conferenceに参加してきました。
一応メモをとりながら聞いていたのでとても読みにくいですが公開。
内容がまとめきれないのは仕様です。

公式に動画と各発表者の資料リンクをまとめたものが公開されました(2010/12/22)

Firefox Developers Conference 2010
http://mozilla.jp/events/2010/fxdevcon/

Twitterのハッシュタグ#fxdevconを保存しておいたもの。

Togetter – 「Firefox Developers Conference 2010」
http://togetter.com/li/71239

@teramakoさんによる発表者の資料や参加者の感想などをまとめたブクマ

はてなブックマーク – 特別でないただのブックマーク – fxdevcon
http://b.hatena.ne.jp/teramako/fxdevcon/

takanoさんによる動画(一部は著作権上の問題などがあるためない)

YouTube – fxdevcon2010
http://www.youtube.com/results?search_query=fxdevcon2010&search=tag

キックオフ

瀧田さんによる挨拶から始まる

基調講演 Browsing Without Borders

Jay Sullivan (ジェイ・サリバン、Mozilla Corporation 製品担当バイスプレジデント)

Firefox1.0から6年が経った。
Mozillaはユーザーの立場に立って努力できる。(他は企業なのでできることとできないことがある)
6年か変化(4回)したFirefoxのロゴ
インターネットの環境も大きく変わってきたので、Mozillaのロードマップも考えていく必要性。

問題
mobile
    中立性をどう持つのか
クラウド
    コスト
    個人情報を何も考えずに入れちゃう人が多い
アプリ(apps)
ソーシャル
    法律とかが追いついてない
    Mozillaはユーザーに立場に立って何が起きてるのかを考える。
    共通基盤がないので、デベロッパーとしてはどうなのか。

mobile
    多種多様な端末が存在するので対応が大変。
    HTML5はその中はネイティブアプリの80%はできる。
クラウド
    同期がまず第一歩
    暗号化や安心などの点から選択が生まれる
アプリ
    mobileアプリはシンプル
    HTML5のアプリケーションを作るのに問題点としてビジネスサイドの問題がある。
    →app storeのような販売する場所が整ってない
ソーシャル
    ブラウザは立ち上げ台になるかも
    シンプルなAPIが欲しいとこ

ミッションに対する課題はインターネット環境の変化に伴って変化しているので
Mozillaもそれに対応していかないといけない。
その中心にブラウザはあるもの

最も高性能なものとしてでるのは「ゲーム」がある。

mobile
    モバイルブラウザ
    Android1.xにバックポートはしない
    ユーザーはモバイルとPCで同じUXを求めてるのかは疑問的
アプリ
    モバイルと密接な関係
    アプリは収益化のモデルが必要とされてる
    Open Web Appsを開始した理由
    まだ販売環境が整ってない感じなのでスタートアップしにくい。
    これのアプローチを探るためにOpen Web Appsの着手。
    現実世界の例をWebのapp storeに適応したらどうなるか?- 返品、競争 - apps store同士の競争
クラウド
    同期の重要性(Sync)
    データはクラウドに格納してどこでもアクセスできるユキビタスになると思ってる。
ソーシャル
    F1は手順を考える必要を省く手軽さを求めた

Love Hack!!

質問
幾度も繰り返された質問だけどiDeviceへのFirefoxの搭載について
    appleは許してくれない
    Firefox Syncとかの探り
アプリストア
    唯一のストアにはなるわけではない
FirefoxをOSに昇華してみては?
    市場出る必要があるので、投資が必要になる。
    Google Chrome OSとアンドロイドの場合は市場がAndroidを選んだ。
    市場をよく見る必要がある。
    FirefoxPhoneを考えたことはあった。そこからHTML5の課題を学ぶことができた。

John Resig feat. Shibuya.js

ライトニングトークいろいろ

ECMA4の話 - John Resig
    クラス、継承など今まで全く違ったJavaScriptと別物だった。
    →これは多すぎるんじゃないかという問題
    Firefox、Adobeは賛成  VS ダグラス様、Google、MSは反対
    ECMA4のほとんどを削ってEMCA5が誕生した。

LLTiger報告 - gyuque

JS Modulatoreの話
    まだdevice要素がないので、送信しかできない

iPhoneをアレコレする - ku
    iEがない
    だけどデバッガーがないので、デバッグしにくい
    もっとデバッグを便利にしたい
    →Peekというアプリの誕生
    ソースコードの表示、インスペクト、

http://github.com/ku/peek

pixiv-tan - yksk
    pixiv wonderlandの解決(自分もpixivの中、直したいです…)
    prototype.jsとjQueryが混在してる
    →jQueryにまとめる
    まずグローバル関数の解決
    テストが余り書かれてない
    URL ディスパッチャー + LAB.js

processing.js  -John Resig
    exCanvasを使ったIE対応
    マウスストロークを追うコードが3行で書ける
    1.0ではWebGLもサポートしてる

JavaScriptをテストするときに考える10のこと - t_wada
    カスタムイベントでまとめることで、ロジックは同じものが使える
    ブラウザなくてもテスト可能にする
    テストの自動化
    まだテストの決定的なものがないなり

Chrome As A Server -kato kazuyoshi
    ChromeでMozRepl
    V8Debuggerを使ってる。
    Emacs上からブレークポイントをうてる

Node.jsにまつわる7つの誤解 - meso
    サーバーサイドJS
    イベント駆動I/Oのブロック問題はNode.js側が解決する。
    Node.jsは個人管理を脱却した

jQuery Mobile - John Resig
    いろんなモバイルデバイスをサポートする
    jQueryをモバイルに分けることはしたくなかったのでJQuery Coreを改良
        TestSwarmというツールを使用
    jQuery Mobieのフレームワークを作成
        UI、デバイスの幅に対応して"機能する"ものを作る

NetFront4のJavaScriptエンジンについて -ACESS

http://ja.wikipedia.org/wiki/NetFront_Browser

    レジスタベース(NO JIT)
    Inline Cache
    組み込みデバイスのスタックサイズの制限
    エラーしても強制的に落ちないように
    C言語で書かれていて、コンパイラによる違いを回避するため柔軟性持たせる
    SpiderMonkey < NetFront 4(No JIT) < TraceMonkey(JIT)
    時間かかかるしょりがあるとウォッチドックに引っかかるかもしれない
    → VM Executorを介して実行させる

Java MIP on HTML5 and Flash - yukoba
     JavaのクラスファイルからJavaScriptとFlash
    画面共有は命令だけを送って高速化

ECMA5の実装 - Constellation
    ECMA5の判断基準
    iv / lv5 (C++)
    仕様書に忠実なものを書きたい
    Shellを書いた
    ステートメントの区切りを管理して複数行継続が行える
    Spidermonkeyは脱ぐとスゴイ(JITなしで比較するとすごく早い)

Firefox 4 & Mobile

加藤 誠 (Mozilla Japan テクニカルアドバイザ)

Firefox4とスピード
起動時間
    汚いプロパティでボトルネックの調査(Talosテスト)
    メインスレッドのI/Oを減らす
     * 可能な限り非同期処理
     * Omni JAR
    StartUp Cache
        利用するJavaScriptファイルをJARにまとめる
WebGL
    OpenGLサポート
    Direct 3D 9
GPUアクセラレーション
    GPUアクセラレーションの利点は速度ではなく、CPUが空くことと電力効率の高さ
DirectWriteのサポート
    文字のジャギがきれいになる
    DirectWriteはα値が入ってるので少し薄く見える
Composition
    ハードウェアアクセラレーション
    Canvas
    CSS Transition
Video
    色空間変換(YUV->RGB)をGPUで行う
    動画はRGBではないので
    ブラウザにシェーダーが入ってる
JavaScript
    TraceMonkey
    jaegerMonkey
        x86プロセッサではSSE2サポートが必須
        Chrome上に対してはオフ
    Krakenというベンチマークで比較
Firefox 4 UI
    タブの位置
    Firefoxメニュー
    リロードボタンはsafari風
    ステータスバーが無くなってる。
    →リンクはアドレスバーに移動した
    →代わりにアドオンバーになった
Firefox Syncはデフォルトに
Panorama
Addon Manger
    アドオン管理画面の変更
Networking
    HTTP Strict Transport Secrity
XSS
    Content Security Policy
バリデーション
    ダウンロードしたコンテンツから悪意を防ぐ

モバイルFennec
    デスクトップと同じレンダリングエンジンを使用
    UIはUXのために変更してる。
    モバイルは画面サイズが違うのでPCそのままは残念なものになる
    FennecはChromeとContentでプロセス分離してる。
    →PCのFirefoxでもやるよ。

Firefox Panorama

mitcho (アーリーワイン・マイケル芳貴)

タブの管理は面倒
人は空間というメタファを記憶することができる
    どこに何があるかを空間で把握してる
AzaがいくつかのUI実験を繰り返して作ってみた。
タブをグループ管理、Undo、Redo
→何かの作業に集中できる

Panoramaの開発
    TabCandyアドオンの開発(jQuery使ってた)
    jQueryをアドオン専用のiQというものにフォーク
    TabViewという名前になって、Panoramaという名前に正式決定。
    iframeのtabview.htmlが本体
    つまりPanoramaの中身はDOM的なもの

iQ
    邪魔なものは排除、Firefox/Gecko向けに特化したライブラリ
タブの整理の仕方
    溝を作ってタブグループの吸着をよくする
    場所が無くなったら縮小
    ウィンドウを小さくするとグループを縮小して空間の間隔を維持する

Jetpack SDKからrquire("panorama")
    TabItemsとiQオブジェクトにアクセスできる

Jetpack に乗っかれないロートルのための、再起動いらずなアドオンの作り方 ~ Bootstrapped Add-on 詳説 ~

再起動なしのアドオン作成の作り方
Jetpack prototype
    再起動の仕組みはGreasemonkeyと似てる
Jetpack SDK
    ライブラリ+ビルト環境+テスト環境
    再起動なしの反映
        Bootstrapped ExtensionsというFirefox4からの仕組み
        3.6と4.xで再起動なしの仕組みが違う
Bootstrapped Extensionsの話
自分でinstallからuninstallまで管理しないといけない。
関数の書き換え系は危険なのでDOM 0なイベントの書き方はアウト。

loadOverlayはunloadできないのでJetpackでは使えない。
要素の変更は順番で駄目だったりすることがある。
=>元に戻せるならOK、可逆的な変更のみ
「完全には元に戻せない時の不整合が蓄積」=>これまで問題では無かったところが問題になることがある。
結論的にはJetpack SDKを使いましょう。

トークセッション: HTML5 時代の技術で Web プラットフォームはどう変わるのか

*矢倉 眞隆 (株式会社 ミツエーリンクス、W3C HTML5 Japanese Interest Group 議長)
*村岡 正和 (HTML5-WEST.jp 共同設立者)
*浅井 智也 (Mozilla Japan テクニカルマーケティング)

"HTML5時代の技術" => HTML5の関連の技術という意味ではない。

*矢倉
TPAC 2010(W3Cの総会)についての話
    CSS WG - レイアウトの話
    HTML WG  - アクセシビリティ
    WebApps WG - 多種多様活発
        DOM 、Eventとかいろいろ
        Web DOM Coreを現実的な仕様へ
    DAP WG

WebApps WGとDAP WGが面白い

*村岡
    関西で活動

大ライトニングトーク

途中で電池切れました
メモできてないけど、ES Hamony の Proxy について #fxdevcon で LT してきました – mooz deceives you よかった。

*swdyh - クロスブラウザ拡張ライブラリ
     * Chrome
     * Firefox(Jetpack SDK)
     * Safari
     * Opera それぞれに拡張機能ができた
    それぞれブラウザでやり方が異なる。
    →それを吸収するライブラリを作成する
    Extension.js
    ブラウザ拡張の互換性を吸収するライブラリ

*齋藤幸士 - モダンブラウザによるWebサービス拡張
    ソーシャルメディア時代
    Webサービスをもっとリッチにする(Twitter)
    オレオレ短縮URL

*kawanet - 3D JavaScript
    3次元の世界
    CSS3で実装
    トグルが実装されてた

*Takesako - Firefox HTML Parserの歴史
    ブラウザ毎に認識が違う
    IMGタグの認識で振り分け

*Gomita - Tab Scope 1.0 ~ CSS transition で魅せるXUL拡張機能 ~
    Firefox4向けにTab Scope拡張
...

メモ感想

去年と比べると全くの聞いたことないようなものってはかなり少なくなった。
どこかで一度聞いた、誰か言ってた気がするみたいな浅いレベルの情報があった感じが多かった。
仕様書はあまり読んでなかったので、知らないことがあった。
NetFront4のJavaScriptエンジンの話は何か新鮮だったので、もっといろんな話が聞けたら良かったと思う。
John Resigさんに書いてる本がNinjaなのに表紙がSamuraiな件なのを聞くの忘れました。
ライトニングトークが多すぎる気がするので、もっと他の事に機会(時間)を与えた方がいい気がした。

はてなブックマーク – 特別でないただのブックマーク – fxdevcon
http://b.hatena.ne.jp/teramako/fxdevcon/
Togetter – 「Firefox Developers Conference 2010」
http://togetter.com/li/71239
Firefox Developers Conference 2010
http://mozilla.jp/events/2010/fxdevcon/

Firebugを拡張するアドオンをまとめてみた

Firebugを拡張するアドオンを紹介

Firecookie

クッキーの編集や削除をする
クッキーの変更に反応してログを吐いてくれる

Software is hard | Firecookie

NetExport

通信タブの記録をHTTP Archive 1.1 (HAR)形式で保存
通信タブの表示を画像としてクリップボードにコピー

Firebug Autocompleter

FirebugのCommand EditorにJavaScriptのコード補完機能をつける。
(Firebugにもデフォルトで補完機能はあるが、一行Command Lineにしか反応しない)

Firescroll for Firebug

“Auto-Scroll” 自動でFirebugのログをスクロール
“Log to top” Firebugのログで上が最新になるようにするTweak

Widerbug

Firebugを縦置きにするTweak

Firebugmonkey

Greasemonkeyをスクリプトタブでデバッグする
UxU(うず)のように内部でGreasemonkey APIのエミュレートをしてる
Greasemonkeyはスクリプトタブに表示されずブレークポイントをうつなどのデバッガーを使ったデバッグが行えない
デバッガーでデバッグできない理由はevalInSandboxで実行されていて、evalInSandboxはC++実装だから。(多分Firebugでも同じ)
Greasemonkey のユーザスクリプトは Venkman the JavaScript debugger でデバッグできない:experiment:So-net blog

JavaScript Deminifier

Firebugのスクリプトタブで表示するJavaScriptを整形表示する
整形表示した状態でブレークポイントを打てるので圧縮されたファイルでもブレークできる
IE9 PP6 F12 開発者ツールのJavaScript整形みたいな機能
整形はjs-beautifyを使用、FireRainbowと競合する

FireRainbow

FirebugのスクリプトタブでJavaScriptのシンタックスハイライト表示を行う
HTML、CSSも一応対応

Eventbug

要素に適当されているイベントハンドラを表示する
clickしたらどの関数が実行されるかなどが分かる
(バージョンで動かない事が多い)

FireQuery

jQuery言語の表現をFirebugでも認識できるようにする
jQueryがないページでもCommand LineからjQueryを使える要にする
jQuery Lintの有効化

YSlow

ページ表示にかかる時間を計測
ページのボトルネックを調査

Firepicker

FirebugのCSSタブでカラーピッカーを使えるようにする

FireXPath

FirebugにXPathとCSSセレクタの確認ができるタブを追加する

Firequark

Firebugに選択要素のCSSセレクタをコピーできるようにするアドオン
(デフォルトはXPathしかないのでね)

CodeBurner

FirebugにHTML+CSSのリファレンスを追加する
他のソフトウェア向けにも出している

Adobe BrowserLab for Firebug

Firebugで加えた一時的な変更をAdobe BrowserLabを使ってプレビューする。
ページを変更してスクリーンショットで各ブラウザ表示を確認できる。

Pixel Perfect

指定した画像をFirefox上に重ねて表示してデザインがずれてないかを確認する

Arboreal

DOMツリーを視覚化して表示する
似たようなものとしてはView Source Chart

Illumination for Developers

ExtJSやjQuery UIなどのコンポーネントやデータの状態を表示する
現在はExt JSとSencha Touchに対応してて、有料で正式リリースする
Illumination for Developers によるとクロスプラットフォームを目指している

XRefresh

ファイルを監視してエディタで編集されたらブラウザをリロードする
クロスプラットフォーム対応

CSS Usage

読み込んだCSSで、それぞれのstyleが閲覧ページ内で本当に適用されているかどうか確認する
使われてないstyleを見つける

Firefocus

閲覧ページのどの要素にフォーカスがあるのかをHTMLタブに表示する

FireFile

サーバーサイドにスクリプトを用意(FireFile Instructions)することで、Firebugで変更した内容を反映させる事ができる。
また、Firebugで変更を反映したファイルをダウンロードすることができる。

FireUnit

Firebugで使えるユニットテスト
何か放置されてるような気がする

Log to Netpanel

JavaScriptから通信タブにマーカーを挿入可能になる
Teun.ToString(): Announcing Log to Netpanel – by Teun Duynstee

Omnibug

Omniture、WebTrends、Google Analytics、Urchin、Moniforceなどの計測データを確認。
utm_*などのアクセス解析のログを見やすく表示する

FireLogger

Python、PHP、RubyからFirebugへログを吐く

Flashbug

FlashのログをFirebugに表示することができる。
1.6からAMF dataにも対応

FlashFirebug

AS側にO-Mindsを仕込んでおくことでFirebugを使ったデバッグをできるようにする


書いてる途中でWikiがあるのを思い出して、大体被ってた気がしたけど問題ない。

Firebug Extensions – FirebugWiki
http://getfirebug.com/wiki/index.php/Firebug_Extensions

ページ移動時などに音を鳴らすアドオン「KIRISAKE」

またJetpack SDKで1つアドオンを作成してみました。
リンクをクリックしてページ移動などの通信が始まった際に、風を切り裂くような音を出すアドオンです。

作った理由ですが、
移動する際に音を出すと、ちゃんとリンクをクリックできたかなどが聴覚的にも認識できるのと、上記のような音を使う事でブラウザが少し早くなったような感じがします(I shallplease)

という後付けの理由があったりしますが、HTML5のAudioタグを使って見たかったというのが第一の要因です。
そういう気分になったのは中国のJetpackerのLT資料を見つけて、pageWorkerでhtmlファイルを読み込んでその中でAudioタグを鳴らすというサンプルが載っていたので実践してみました。
見つけたLTの資料はこれJetpack SDK: The new possibility of the extensions on browser

処理的にはたいしたことはやっていませんが、Jetpack SDKにはページ移動(ページを読み込みじゃなくて、通信が始まった瞬間)に反応するAPIはまだないような感じなので、nsIWebProgressを使った普通のFirefox拡張機能と同じように直に書きました。
Components.interfacesとか使う必要性が出てくるわけですが、Jetpack SDK0.6からはCiやCcというエイリアスがデフォルトではなくなったので、以下のようにrequireしてから使う必要があります。
Jetpack SDK 0.6 がリリースされました « Mozilla Developer Street (modest)

var {Cc, Ci} = require("chrome");

ちなみにこのvar {a,b} = obj;みたいな表記は分割代入というJavaScript 1.7からの機能を使ったもので、

var Cc = require("chrome").Cc , Ci = require("chrome").Ci;

というのと同様の意味になります。一部地域ではよく見かけるので覚えておくと便利です。

参考サイト

Components.interfaces

Google Web Historyに見たページを自動記録するアドオン(Jetpack SDK)

GoogleにはGoogle – ウェブ履歴というものがあり、検索してどのページを訪ねたかなどが記録されています。
またその記録は検索ページで既読リンクの色にするなどの判定にも使われています。
Google検索から訪ねたサイト以外のURLもウェブ履歴に登録するFirefox拡張機能を作成してみました。
既に

などGreasemonkeyやTomblooパッチなど代わりになる手段は山ほどある気がしますが、Jetpack SDKを使いたかったのと、意外にもFirefoxアドオンとして同じ役割するものが見つからなかったので作ってみました。

他のスクリプトとの違いは大して無いと思いますが、できるだけ無駄な送信を控えるようにしています。

  • 最近訪れたサイトは重複送信しない(100件ぐらいでクリアされます)
  • https://はホストのみを送信
  • ローカルやIPアドレスベースのURLの場合は送らない

ダウンロードはAMOからできるようにしてあります。
Firefoxアドオンのxpiを簡単における場所が無かったので、AMOに登録しておいてあります。

Jetpack SDKでコンパイル?前のソースコードはこちらに

Jetpack SDKで何か作るには

Jetpack SDKで既に3つほどアドオンを作成していますが、0.5だとJetpack prototypeとできることはそこまで変わってないです。(prototypeのギャラリー無くなったみたいですね。8個ぐらい作った気がする)
Jetpack SDKで作る上で参考にしたのは

最後のJetpack SDK Docsはcfx docsで開いて、jetpack-coreあたりに現在使えるAPIが載っているのでそれを見て使い方を調べるとAPIの使い方は分かる感じ。(Jetpack prototypeの頃よりはドキュメントにサンプルもあってマシになりました)
一番ハマるところはcfxとかコマンドでエラーがでるとかその辺だった気がする。
環境はWindows Vistaです。
cfx testallすら通らない場合は-aとか-bオプションを指定してみるといい。 Jetpack SDK 0.4でcfx testallを成功させる方法 (windows) – Cherenkovの暗中模索にっき
毎回オプションを付けるのが面倒になったらlocal.jsonを作りデフォルト値を決めてみましょう。
自分はjetpack用のプロファイルを作りそれを指定してます

{
  "configs": {
    "default": [
      "-a", "firefox",
      "-b", "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
      "-P", "%appdata%\\Mozilla\\Firefox\\Profiles\\h545wqkn.jetpack"
    ],
    "ff37": [
      "-a", "firefox",
      "-b", "C:\\Program Files\\Mozilla Firefox 3.7\\firefox.exe",
      "-P", "C:\\Users\\admin\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\testuser"
    ]
  }
}

package.jsonを作り、libフォルダを作りmain.jsを書いて → さあcfx runで起動しようとしたら、まずはpackage.json内にidが自動生成されます。そしてもう一度cfx runすると下のようなエラーが出てくることがあります。

Traceback (most recent call last):
  File "D:\jetpack\bin\cfx", line 6, in 
    cuddlefish.run()
  File "D:\jetpack\python-lib\cuddlefish\__init__.py", line 475, in run
    include_dep_tests=options.dep_tests
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 267, in generate_bu
ild_for_target
    add_dep_to_build(dep)
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 254, in add_dep_to_
build
    add_section_to_build(dep_cfg, "lib", is_code=True)
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 232, in add_section
_to_build
    validate_resource_hostname(name)
  File "D:\jetpack\python-lib\cuddlefish\packaging.py", line 65, in validate_res
ource_hostname
    raise ValueError('invalid resource hostname: %s' % name)
ValueError: invalid resource hostname: jid0-英数字-フォルダ名-lib

これはpackage.jsonのnameに大文字やマルチバイト文字やスペースなどが含まれていると出てきます。(んなの分かるか)
なので小文字英数とハイホンあたりでnameを決めておきましょう。

console.logはコマンドプロンプトの方にでてくるので、それを使って(他に何かあるのかなー)デバッグしながらmain.jsなどを完成させて、xpiをcfx xpiコマンドではき出せば完成です。
まだ設定画面やパネルなどのGUIが簡単に使えなかったりしますが、用途が合えば簡単にアドオンを作成できるのでなかなか面白いです。

Google WebHistory Updater :: Add-ons for Firefox
https://addons.mozilla.org/ja/firefox/addon/213956/

OneNoteのプラグインまとめ

そろそろOffice2010がでますが、今更OneNote2007を使い始めたのでOneNoteのプラグイン(add-in)のまとめです。
最後の方はプラグインというよりは関連ソフト。

 

 

Calendar/Planner

http://blogs.msdn.com/johnguin/archi…r-onenote.aspx

A new OneNote Favorites Powertoy – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2008/03/03/a-new-onenote-favorites-powertoy.aspx

ページをお気に入り登録する感じでお気に入りリストを作る。
→最新版 http://blogs.msdn.com/b/johnguin/archive/2008/09/11/onenote-favorites-updated-with-user-requested-feature.aspx

Canvas for OneNote
http://www.officelabs.com/projects/canvasforonenote/Pages/default.aspx

サムネなどでノートの全体を見る。参考 Canvas for OneNoteの感覚的な情報整理 : could

ダウンロードはIEからで無いと崩れていて難しいです。TRY ITのとこをクリックでダウンロード。

OneNote PowerToys – A Collection of PowerToys for OneNote

http://www.onenotepowertoys.com/2007/06/23/onenote-search-and-replace/

検索置換を行うプラグイン。

結果をプレビューできる。

Merge Pages

http://blogs.msdn.com/johnguin/archi…-powertoy.aspx

ページをマージする。

Printout to OneNote Manager

http://blogs.msdn.com/johnguin/archi…o-onenote.aspx

印刷のレイアウト調整OneNote PowerToys – A Collection of PowerToys for OneNote

Word Count

http://blogs.msdn.com/descapa/archiv…ord-count.aspx

文字数カウント

Template Manager

http://blogs.msdn.com/johnguin/archi…note-2007.aspx

http://blogs.msdn.com/olya_veselova/…templates.aspx

Outlook To OneNote AddIn

http://blogs.msdn.com/descapa/archiv…ote-addin.aspx

Text Importer

http://www.onenotepowertoys.com/2007…text-importer/

テキストファイルをインポート

OneNote PowerToys – A Collection of PowerToys for OneNote

http://www.onenotepowertoys.com/2007/12/03/html-importer/

HTMLファイルをインポート

Better Living through Software » Blog Archive » OPML import for OneNote

http://www.netcrucible.com/blog/2004/04/28/opml-import-for-onenote/

OPMLファイルをインポート

Journal to OneNote Importer – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2007/12/21/journal-to-onenote-importer.aspx

Journal ファイルをインポート

Rambles In The Brambles: PowerPoint To OneNote

http://www.borlik.net/blog/archives/000097.html

PowerPointファイルからインポート

Notebook Cleaner & Privatizer

http://blogs.msdn.com/johnguin/archi…-powertoy.aspx

作者情報などを取り除く

Image Rotator

http://blogs.msdn.com/johnguin/archi…note-2007.aspx

画像を回転させる

Sort Sections

http://blogs.msdn.com/descapa/archiv…-powertoy.aspx

セクションでソートを行う

Sort Pages

http://blogs.msdn.com/descapa/archiv…-powertoy.aspx

ページでソート

Table of Contents

http://blogs.msdn.com/johnguin/archi…-powertoy.aspx

ページの一覧をまとめてテーブルページを作る。OneNote PowerToys – A Collection of PowerToys for OneNote を参考に

Table Sum Powertoy for OneNote – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2007/12/10/table-sum-powertoy-for-onenote.aspx

テーブルで計算を行う。

Make Subpage

https://blogs.msdn.com/johnguin/arch…vo-update.aspx

A beta powertoy for OneNote 2007 to extract highlighted text from a page – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2009/08/24/a-beta-powertoy-for-onenote-2007-to-extract-highlighted-text-from-a-page.aspx

選択範囲から新たなページを作る

OneNote 2007 Powertoy to change section colors – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2010/06/10/onenote-2007-powertoy-to-change-section-colors.aspx

セクションの色を変える

A beta powertoy for OneNote 2007 to extract highlighted text from a page – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2009/08/24/a-beta-powertoy-for-onenote-2007-to-extract-highlighted-text-from-a-page.aspx

A powertoy to make using Adapx pens for OneNote a little easier for me – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2009/03/09/a-powertoy-to-make-using-adapx-pens-for-onenote-a-little-easier-for-me.aspx

ページのサイズを自動でfitするように。

Copy page to OneNote Mobile notebook

http://blogs.msdn.com/johnguin/archi…le-device.aspx

OneNote Math AddIn | Dragonshorn Studios

http://dragonshorn.info/node/4?page_id=372

数式を書くツール

OneNote Web Exporter

http://www.codeplex.com/ONWebber

ノートブックをWebページとして出力する。

Powertoy: Double Hyperlink « Tablet PC – A Student’s Perspective

http://tabletpcstudent.wordpress.com/2007/11/17/powertoy-double-hyperlink/

ページ作成時のナビゲーションを補助

Export OneNote to PDF (OneNote2PDF)

http://onenote2pdf.codeplex.com/Wiki…te2PDF%20Usage

Onenoteのファイル.oneからPDF形式に変換する。

Send to OneNote 2007 powertoy – Daniel Escapa’s OneNote Blog – Site Home – MSDN Blogs
http://blogs.msdn.com/b/descapa/archive/2007/02/15/send-to-onenote-2007-powertoy.aspx
エクスプローラからOneNoteへファイルを送る

OneNote PowerShell Provider « Brian’s Brain

http://bdewey.com/2007/07/18/onenote-powershell-provider/

PowerShellOneNote

The Unknown OneNote Guy’s Blog: OneNote 2007 Xml Viewer

http://unknown-onenote.blogspot.com/2006/09/onenote-2007-xml-viewer.html

OneNoteXMLをみるためのビューアー

A really great tip to make getting information into OneNote much easier – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2009/04/02/a-really-great-tip-to-make-getting-information-into-onenote-much-easier.aspx

OneNoteへコピペするためのAutoHotKey

任意のキーにセットして使う。

Clip to OneNote :: Add-ons for Firefox

https://addons.mozilla.org/ja/firefox/addon/12003/

Firefoxから落書きノートでスクラップするアドオン

他のまとめ

A summary of the OneNote powertoys from the test team for 2007 – OneNote Testing – Site Home – MSDN Blogs

http://blogs.msdn.com/b/johnguin/archive/2008/01/17/a-summary-of-the-onenote-powertoys-from-the-test-team-for-2007.aspx

21 OneNote Power Toys | Sarah In Tampa | Channel 10

http://on10.net/blogs/sarahintampa/20844/

OneNote PowerToys – The Daily Ramblings of an SMS Engineer

http://myitforum.com/cs2/blogs/socal/archive/2008/03/30/onenote-powertoys.aspx

意外とソースを公開しているものが多くていいね。
C#とかでプラグインを作れるようなので興味がある方は作ってみるといいかも。

記事の元ネタにいろいろ追加と説明を加えた。

Favorite Plugins – www.ms-news.net
http://www.ms-news.net/f2614/favorite-plugins-10277983.html

Send to OneNote 2007 powertoy – Daniel Escapa’s OneNote Blog – Site Home – MSDN Blogs

http://blogs.msdn.com/b/descapa/archive/2007/02/15/send-to-onenote-2007-powertoy.aspx

エクスプローラからOneNoteへファイルを送る

GreasemonkeyにGrowlのような通知を呼ぶ機能を加える「Dbus Notify」

紹介するDbus Notify for GreaseMonkeyはGreasemonkeyスクリプトにGrowlのような通知を行うAPIを加えるアドオンです。
Greasemonkeyにcallout.notifyというAPIを追加するだけのシンプルなアドオンです。
使い方は単純でDbus Notify for GreaseMonkeyをインストールして、Greasemonkeyスクリプト内にcallout.notifyのAPIを使った記述を加えるだけで動きます。(当たり前だが、インストールしてない環境だと動かない)

APIは凄くシンプルで、callout.notify(title, message, [options])となっていて、タイトルはそのまま、メッセージはタイトルの下に表示されていて、optionのhrefが設定されている場合はリンクになる。

optionで設定できるのもhrefとiconぐらいで、Greasemonkeyからページの外側に通知を出したいなーって思う人はそれだけを求めるならアドオンなどにしないでこれを使うのもいいかも。

簡単なサンプル

gist: 426775 – Dbus Notify for GreaseMonkeyのテスト- GitHub
http://gist.github.com/426775

APIの解説

lackac’s callout at master – GitHub
http://github.com/lackac/callout

Greasemonkeyに何か機能を加えるアドオンって意外と見かけない感じがする。
Greasemonkey でクリップボードを扱う…悪い方法(?) – Griever でも言っているように受け口を持つと悪用の可能性も出てくるが、セキュリティ的な影響がでないように狭い範囲で機能追加できれば楽しそうだなーと思った。

拡張機能の有効状態を保存復元するuserChrome.js

Firefoxの拡張機能(アドオン)の有効になってるか無効になってるかを記録して保存できます。
またその保存したものから各アドオンの有効の有無を復元することができます。

例えば、Firefoxの動作がおかしいなと感じて、どのアドオンが原因なのかを調べるときに、調べる前の有効状態を保存してから、一個一個アドオンを無効化して試し、原因となるアドオンが分かったら有効状態を復元して直ぐに元通りにできます。

似たような事を行えるVimperatorプラグインがあります。

アドオンの有効無効状態を保存&復帰できるプラギン – Death to false Web browser! – vimperatorグループ
http://vimperator.g.hatena.ne.jp/nokturnalmortum/20100203/1265202872

このスクリプトはuserMenu.jsが必要となるので、userChrome.jsでメニュー拡張を追加できる「userMenu.js」 | Web scratchを読んでuserMenu.jsを導入してからChromeフォルダのtoolmenuフォルダに入れてください。

アドオンの状態はextensions.scriptprefs.GM_modoki.%u30A2%u30C9%u30AA%u30F3%u6709%u52B9%u72B6%u614B%u3092%u4FDD%u5B58.extsDisable

に保存されています。(JSON.parseして使う。)

userMenu.jsに付属していた0000.アドオンリストをタブに表示.L.jsを元にしました。

他の参考にしたもの

nsIExtensionManagerで使えるもの
nsIExtensionManager.idl

ダイアログの使い方。
nsIPromptService – MDC
https://developer-stage.mozilla.org/en/nsIPromptService#confirmEx()
ダイアログの使い方。日本語ですがいろいろ抜けてます。
Dialogs and Prompts – MDC
https://developer-stage.mozilla.org/ja/Code_snippets/Dialogs_and_Prompts

userChrome.jsでメニュー拡張を追加できる「userMenu.js」

userChrome.jsでJavaScript Actionsのようなスクリプトの実行コマンドをサブメニューのネスト, タブメニューやメインメニュー、コンテキストメニューなどのメニューに追加する形のスクリプトを扱いやすくしたり、GreasemonkeyのAPIと似たような機能を持つライブラリが使える要にするuserMenu.jsの紹介
ダウンロードは以下の場所から
userChrome.js – Mozilla Firefox まとめサイト
http://firefox.geckodev.org/index.php?cmd=read&page=userChrome.js&word=user#g4f5f928

いろいろバージョンが置かれてますがuserMenu.js ver. 1.21mod 一式(Fx3以降)と最新のものをダウンロードして、ver1.21はあらかじめtabmenuなどのフォルダがあって分かりやすいので、それらを最新版で上書きすると良いでしょう。

こんな感じのファイルが入ってるので、とりあえず動作させるために、FirefoxプロファイルのChromeフォルダにそのまま中身を突っ込みます。

Chrome
│  0.UCJSToolkit.uc.js
│  GM_modoki.jsl
│  jsa.jsl
│  JSA_modoki.jsl
│  preload.sample.txt
│  scripting.txt
│  userMenu.js.readme.txt
│  userMenu.pl.js
│  userMenu.uc.js
│  ここにはuserChrome.jsなども存在
│
├─contextmenu
│      Add Copy.se.js
│      Element Killer.js
│      Google cache.nl.js
│      Google Translate.se.js
│      Open IE.nl.js
│      Open Selection.se.js
│      Reload Image.im.js
│      Use JavaScript.auto.js
│      Wayback.nl.js
│
├─tabmenu
│  └─Order.ct
│          FrameOrder.ct.auto.js
│          ImageOrder.ct.auto.js
│          JSOrder.ct.auto.js
│          PluginOrder.ct.auto.js
│          RedirectOrder.ct.auto.js
│          userContentOrder.ct.auto.js
│
└─toolmenu
        0000.アドオンリストをタブに表示.L.js
        Inspection Here.js
        Rebuild User Menu.js
        Reload userContent.css.js
        Restart Firefox.r.js
        ~.---

移動させて再起動すると、コンテキストメニューやツールメニューにいろいろな項目が増えていれば成功です。

一つ一つのスクリプトの機能は数が多いので適当に見れば分かるので、開発したスクリプトをメニューに表示させる方法へ。scripting.txtやuserMenu.js.readme.txtを見ると詳しく書いてありますが、contextmenuやtoolmenuといったフォルダがそのままの構成でメニューと対応してるので、それらのフォルダに作ったスクリプトをjs拡張子にして入れるだけで簡単に登録できます。(スクリプトのファイル名ルールでショートカットなども設定できる)
例えば、右クリックに表示されるスクリプトで複数のものを一つのフォルダに入れれば、それが一つの階層になります。

contextmenu
└─JSAction
        Add Copy.se.js
        Element Killer.js

また先ほど紹介したようにGreasemonkeyのAPIと同様の機能を持ったものが一部使えます。
GM_setValueやGM_xmlhttpRequestなど。

デバッグ方法としてconsole.ほげ()というFirebugで使われるメソッドが使用できると書いてあるのですが、イマイチ動かなかったので、
GM_modoki.jsl (GreasemonkeyのAPIを定義してるファイル)の先頭部分に

// fbug(x)でFirebugのコンソールに出力
function main(){
  var windowManager = Components.classes['@mozilla.org/appshell/window-mediator;1']
                                .getService(Components.interfaces.nsIWindowMediator);
  return windowManager.getMostRecentWindow("navigator:browser");

}
function fbug(x){
   var {Firebug} = main();
   if(Firebug.Console.isEnabled() && Firebug.toggleBar(true, 'console'))
     Firebug.Console.logFormatted(Array.slice(arguments));
   return x;
}

と書き足して、fbug(x)でFirebugのコンソールに出力するようにしました。
Services.jsmが使えるなら以下のような感じで書けるようです。xqjs – ’ellaneous が元ネタです。

Cu.import('Services.jsm');// 読み込み先にresource:// かfile://
function main() Services.wm.getMostRecentWindow('navigator:browser');
function fbug(x){
   var {Firebug} = main();
   if(Firebug.Console.isEnabled() && Firebug.toggleBar(true, 'console'))
     Firebug.Console.logFormatted(Array.slice(arguments));
   return x;
}

上記のfirebugコンソールへの出力はxqjsのソースコードを見て知ったものです。
xqjsExecute JSのようなその場でChromeやcontentに対してJavaScript実行できるアドオンです。
話題のCoffeeScriptJavaScriptの単語補完、マクロ機能、便利なユーティティ関数などが使える優れたFirefoxアドオンなので、JavaScript ShellやFirebugのコンソールで入力するのが微妙だなーと思う人は一度使って見るといいかと思います。
fbugでFirebugのコンソールにもlogを吐けるので連携させるとなお便利。
Firebugで定義されているXpathやCSSセレクタもマクロで定義されており、copy関数なども存在します。

詳しくは作者さんのページとAMOとソースを読む。

xqjs – ’ellaneous
http://d.hatena.ne.jp/murky-satyr/20100504/xqjs

話が完全にすり替わりましたが、userMenu.jsはuserChrome.jsを書く上でかなり便利だと思うので、一度見てみることを進めます。

userMenu.js
http://firefox.geckodev.org/index.php?cmd=read&page=userChrome.js&word=user#g4f5f928
プロフィール: azu(アズ)
Firefoxの事やソフトウェアの紹介や使い道、Greasemonkeyの作成
  • OS:Windows Vista, 7
  • ブラウザ:Firefox
  • Twitterのアカウントはこちら
  • azu_re
  • メールアドレス(Twitterの方が確実)
  • info@ドメイン名
リンク

WebMoney ぷちカンパ