メモ: Lion で Firefox をビルド

Building Firefox for macOS - Mozilla | MDN を参考に:

(1) App StoreXcode を入れる

(2) homebrew を入れる

(3) Mercurial を入れる

$ brew install Mercurial
Error: No available formula for Mercurial
Install Mercurial with pip:

    easy_install pip && pip install Mercurial

Or easy_install:

    easy_install Mercurial
$ sudo easy_install pip
$ sudo pip install Mercurial

(4) 他に必要な物を homebrew で入れる

$ brew install pkg-config
$ brew install libIDL

(5) autoconf213 を homebrew で入れる

  • その前に Lonnen から autoconf213.rb をダウンロードして /usr/local/Library/Formula/autoconf213.rb へ置いておく
$ brew install autoconf213

(6) ソースを入手

$ hg clone http://hg.mozilla.org/mozilla-central/ mozilla

(7) .mozconfig を作成

  • webm と libjpeg-turbo はとりあえず使用しないことにした
$ cat > mozilla/.mozconfig
. $topsrcdir/browser/config/mozconfig

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff-dbg
mk_add_options MOZ_MAKE_FLAGS="-s -j4"
ac_add_options --enable-debug
ac_add_options --disable-optimize
ac_add_options --disable-webm
ac_add_options --disable-libjpeg-turbo

mk_add_options AUTOCONF=/usr/local/Cellar/autoconf213/2.13/bin/autoconf213

(8) ビルド

$ cd mozilla
$ make -f client.mk build

(9) 実行

$ cd mozilla
$ open obj-ff-dbg/dist/NightlyDebug.app

hatena_bookmark_ignores.user.js

http://b.hatena.ne.jp/ を眺めている時に、あるサイトの記事は絶対に見たくないというものがいくつかあります。そんなわけで、そのようなサイトの表示を薄くして文字も小さく表示するユーザースクリプト (Greasemonkey スクリプト) をてきとーに書いてみました。

» hatena_bookmark_ignores.txt

利用するには、ファイルをダウンロードしたあと、拡張子の .txt を .users.js へ変更してから Firefox へドロップすれば良いハズです。

ファイル冒頭の配列の URL を変更すれば、好きな(というか嫌いな)サイトを追加できます。

Firebug 1.2.0b4 が使えない

インストールして置くとたいへん不便な状況になってしまったので、アンインストールしたのですが、ないならないでとても不便。困ったものです。

Firebug 1.2.0b4 が入っていると…

  • 例えば自分のはてブ ( http://b.hatena.ne.jp/ganaware/ ) を見に行くと prototype-1.4.0.js の 548 行目でデバッガが動作する。
    • new ActiveXObject('Msxml2.XMLHTTP') が失敗するので、デバッガが動作するようです。
    • Firebug の「スクリプト ⇒ 使用するサイト」で、b.hatena.ne.jp を「停止中」にしておいてもデバッガが開いてしまう。

つまりエラーが起こった時にデバッガが動作する機能を無効化する方法がないようなのです。JavaScript のエラーは日常的に様々なサイトで発生しているので、Firebug がしばしば動作することになりとても困ります。以前の Firebug ならば、通常時は無効化しておいて必要な時だけ動作させることができたのですが。

(7/1追記) 結局 1.2.0b3 を入れなおしました。

AutoPagerize を少し高速化 (update 0.0.31)

高速化の動機や方法については「AutoPagerize を少し高速化 - GANAwareはてな版」こちらに書いてあります。

id:swdyh さんのオリジナルがバージョンアップ (AutoPagerize0.0.30 - SWDYH) したので、高速化版もバージョンアップしました。

利用するには http://github.com/ganaware/autopagerize/tree/master の download リンクをクリックしてダウンロード後、展開した中身の autopagerize.user.js を Firefox へ drug & drop してください。

しかし Firefox3 上で使えばオリジナルのものでも快適なので、高速化版を使ってもあまり意味はなさそうです。 と思ったのですが、ふだん利用しているマシンではオリジナルのものだとスクロールが遅いので、やはり高速化版を利用したほうが快適でした。

また、マージした時点のオリジナルのバージョンが 0.0.31 になっていたので、高速化版は 0.0.31 をベースにしたものとなっています。

(6/30修正)


マージ手順はこんな感じ。(git はまだわからないことだらけなので無駄なコマンドを入力しているかもしれません)

$ git fetch swdyh
$ git checkout swdyh
$ git pull
$ git checkout master
$ git merge swdyh/master
$ git push origin master

github 上ではこのようなリビジョングラフが表示されます。分かりやすい!

Firefox3速いね

Firefox3 がリリースされましたね。

使ってみてすぐにわかるのは、とても速いということです。Gmail の新インターフェースも快適に利用できるようになりました。

いくつかの拡張機能がまだ利用できないのですが、個人的に一番痛いのは Google Browser Sync です。http://lifehacker.com/396112/google-browser-sync-discontinued-no-firefox-3-support によれば開発中止だそうです。

代わりに Mozilla Weave を使うことができると快適そうなのですが、残念ながらまだ開発中なのでユーザー登録に制限がかけられていて使うことができません。

仕方ないからしばらくはてブで我慢です。

AutoPagerize の SITEINFO を書いてみた。

http://wedata.net/items/1510

どこから手をつければ良いのか分からず途方にくれたので、やったことをメモしておきます。

最初に自分の手元でテスト

Greasemonkey の「ユーザースクリプトの管理」から AutoPagerize を選んで「編集」します。そして var SITEINFO の中身を編集します。(notepad.exe では編集不可能ですので、改行コード LF を扱えるエディタを使用する必要があります)

http://wedata.net/items/1510 の内容なら、

var SITEINFO = [
    {
        url:          'http://wiredvision\.jp/(gallery|news)/[0-9]+/[0-9]+.html',
        nextLink:     '//div[contains(@class, "galleryContent")]//ul[contains(@class, "navigation")]/li/a',
        pageElement:  '//div[contains(@class, "galleryContent")]',
        insertBefore: '//div[contains(@class, "gallery")]/ul[contains(@class, "menu")]',
        exampleUrl:   'http://wiredvision.jp/news/200805/2008051923.html',
    },
]

こんな感じになります。nextLink, pageElement, insertBefore は XPath で記述します。記述すべき XPath を知るには Firebug を使うのが便利です。

編集しセーブした後は Firefox で該当ページをリロードするだけで反映されます。

うまく動作しない場合は、編集ミスを見つけるために JavaScript コンソールを表示しておきます(ツール ⇒ コンソール)。コンソールに何も役に立つことが出ていないようなら、以下のような手段を使ってデバッグします。

  • 要所要所に GM_log() を挿入してどこで問題が起こるか見極めます。
  • 他人の設定を無視するために launchAutoPager(〜) をほぼ全てコメントアウトします (launchAutoPager(SITEINFO) だけは残しておきます)

うまく動作するようになったら var SITEINFO の中身をどこかにメモしておいて、AutoPagerize をアンインストールし、http://userscripts.org/scripts/show/8551 からインストールしなおします(自分が行った編集が原因で AutoPagerize が誤動作しないように、オリジナルを入れなおすのです)。

Firebug が有効になっているとユーザースクリプトをうまくインストールできないことがよくあるので、必要な時以外は Firebug は無効にしておくと良いと思います。

Wedata へ登録

SITEINFO は Item - データベース: AutoPagerize - wedata へ追加することでみんなが幸せになれます。Wedata へ追加するためにはまずログインする必要があるのですが、そのためには OpenID が必要です。

はてなダイアリーの利用者の場合は、はてなOpenID を提供してくれているのでそれを使うのが楽かもしれません。私のアカウントならば http://www.hatena.ne.jp/ganaware/OpenID です。最後の / は必須です(おかげでうまくいかなくてしばらく悩みました)。

SITEINFO の追加が終わったら、AutoPagerize のユーザースクリプトコマンド (右下の Greasemonkey のアイコンを右クリックして出てくるメニューの中にあります) から AutoPagerize - clear cache を実行しておきます。

できた!

これで自分の好きなページが便利に見られるようになりました。

しかし幾つか疑問もわいてきます:

  • もっとスマートなやり方はないのでしょうか?
  • 他人が書いた SITEINFO の url と被っている場合、どうなるのでしょうか?
    • その場合、他人の SITEINFO を編集して、自分のものと被らないように修正すべきでしょうか?