Posts Tagged ‘アドオン’
Adblock++がFirefox4で動かなかったのでランタイムを更新
C++で書かれたAdblock++アドオンを使用していましたが、Firefox4で上手く動いてなかった(リストに空になるとか)ので、原因は何だろと探してみたらビルド環境がVisual C++ 2010 Expressに変わってたようです。
PCに入ってたランタイムは2008ぐらいのだったので、Microsoft Visual C++ 2010 再頒布可能パッケージからランタイムをダウンロードし、インストールし直したら動作するようになりました。
ついでに広告配信先が変わって動かなくなってたUstreamのFlash動画内広告を消す方法もアップデートしました。
サイトの最終更新日をステータスバーに表示するアドオン「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
クッキーの編集や削除をする
クッキーの変更に反応してログを吐いてくれる
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;
というのと同様の意味になります。一部地域ではよく見かけるので覚えておくと便利です。
参考サイト
- Progress Listenersでロケーションバーのurl変更されたときに何かする – フリーフォーム フリークアウト
- Latest topics > Split Browser開発のよもやま話(6):分割されたブラウザの作り込み – outsider reflex
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で作る上で参考にしたのは
- SCRAPBLOG : Jetpack 基礎的なAPIの使い方
- Jetpack SDK – あすかぜ・ねっと とても参考になる
- Jetpack SDK Docs
最後の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
選択範囲から新たなページを作る
OneNote 2007 Powertoy to change section colors – OneNote Testing – Site Home – MSDN Blogs
セクションの色を変える
A beta powertoy for OneNote 2007 to extract highlighted text from a page – OneNote Testing – Site Home – MSDN Blogs
A powertoy to make using Adapx pens for OneNote a little easier for me – OneNote Testing – Site Home – MSDN Blogs
ページのサイズを自動で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/
PowerShellとOneNote
The Unknown OneNote Guy’s Blog: OneNote 2007 Xml Viewer
http://unknown-onenote.blogspot.com/2006/09/onenote-2007-xml-viewer.html
OneNoteのXMLをみるためのビューアー
A really great tip to make getting information into OneNote much easier – OneNote Testing – Site Home – MSDN Blogs
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
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のソースコードを見て知ったものです。
xqjsはExecute JSのようなその場でChromeやcontentに対してJavaScript実行できるアドオンです。
話題のCoffeeScriptやJavaScriptの単語補完、マクロ機能、便利なユーティティ関数などが使える優れた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を書く上でかなり便利だと思うので、一度見てみることを進めます。
- userChrome.js – Mozilla Firefox まとめサイト
- http://firefox.geckodev.org/index.php?cmd=read&page=userChrome.js&word=user#g4f5f928














