ぼちぼち散歩

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-)

ページの先頭へ

Firefoxをこう使ってます的な何か その8

Firefoxは拡張機能を入れてなんぼなところがあるものの,どれを入れたらいいのかわからなかったり,どこまで標準でできるのかわからなくて拡張機能探すのもなんかよくわからんっていうのがあると思う.自分もちゃんとわかってるかは怪しいものの,今わかっている範囲でいろいろ書いてみたので誰かの参考になれば良いなぁと思った.

Firefoxはまだ発展途上のソフトウェアで,年末か来年初頭に出そうなFirefox 3にも魅力的な機能がある.早くもFirefox 4の話も出ていて今からわくわくしながら待っている.

参考リンク

というわけで,このシリーズは終わり.気が向いたら加筆,修正ぐらいするかも知れないし,しないかも知れない.

スポンサーサイト

2007/11/10 23:42 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その7

Greasemonkey

任意のページのに任意のJavaScript(User JavaScriptとか言う)を当てて,ページの挙動を変えたり,機能を追加したりいろいろできる拡張機能.最近では,他のブラウザでもUser JavaScriptは使えるようになっていて,Operaは標準搭載,SafariならGreaseKitを使って,SleipnirならSeaHorse,IE7でもIE7Proでできるようになっているようだ.しかし,独自拡張があったり,そもそもFirefoxと他のブラウザではJavaScriptの挙動が違ったりで互換性のあるスクリプトはそんなに多くはないので,一番ユーザが多そうなGreasemonkeyを使うのが一番便利という感じ.また,IEではXPathが使えないのでスクリプト書くのが面倒くさそう.

他の人が書いたのを使わせてもらっているのを列挙しておく.

livedoorクリップに各種ソーシャルブックマークのコメントを埋め込むGreasemonkeyスクリプト(管理人日記) - むぅもぉ.jp
livedoor クリップから主要SBMのコメントが見れるようになる.
blog.8-p.info: del.icio.us の IME まわりをましに
日本人のdel.icio.usユーザみんなが困ってそうな問題を解決してくれる.
livedoor Clip Cross Post - labs.37to.net
ブックマークは基本的にこちらのスクリプトを借りて,del.icio.usとlivedoor クリップに同時に投げるようにしている.投稿するときのインタフェースはlivedoor クリップになるので,layered del.icio.us bookmarklet (swdyh)のアイディアを拝借して,livedoor クリップ用のを自作して使っている.使いたい人はこれを持っていってください.
そのへんにぺろっと貼ってあるgreasemonkeyスクリプトにインストールボタンを付けるgreasemonkeyスクリプト
はてダとかに貼ってあるGreasemonkeyスクリプトにインストールボタンをつける.
AutoPagerize – Userscripts.org
いろんなページでAutoPagerできるようになる.AutoPagerが何かわからなければこのスクリプトをインストールしたあと,Googleの検索結果のページに行ってみたらわかると思う.いろんなページで使えるように,ページの継ぎ足しに関する情報はWikiで管理されていて,誰もが追加,編集できるようになっている.自動でページをつなげる部分と人力でページ情報を編集する部分がうまく組み合わさっていると思う.主要なサイトはほとんど使えるので,ブラウジング効率がかなり上がり,一番のおすすめ.類似のスクリプトにsilog - script/LDRizeというのもある.こちらはいろんなページでlivedoor Readerっぽい操作ができるようになるらしい.
ldrのレートを++/--できるようにするgreasemonkeyスクリプト
自分は一応livedoor Readerはレートで管理してるつもりになってるけど,適当過ぎてあんまり意味がないので,このスクリプトでちょっとはましになることを期待している.

日常から使ってるのはだいたいこのぐらいだと思う.他にも一時的に試してみてたり,しばらく使ってたけどやめたものがあったりで,いろいろありすぎて紹介しきれないのでこのへんにしておく.次に,自分で書いて使ってるやつ.全然大したことないけどあると便利なので.ちなみに,XPath, $X function, NSResolver < 16 < March < 2006 < nulog, NULL::something : out of the headphoneの$X関数を使わせてもらっている.

mixi show alt
mixiのマイミクシィ最新アルバムとか動画とかミュージックとかが,画像のみでタイトルを出さないから何のこっちゃわからない,と思ったらalt属性にタイトルが入っていたのでそれを表示するスクリプト.$X関数のおかげで簡単にできた.一応Safari 3 + GreaseKitでも動く.
// ==UserScript==
// @name           mixi show alt
// @namespace      relaxedcolumn.blog8.fc2.com
// @description    show alt attribute
// @include        http://mixi.jp/*
// ==/UserScript==

(function() {
    var w = unsafeWindow || window;
    var d = w.document;

    $X('//tr[@class="itemList"]//a/img').forEach(function(item) {
        item.parentNode.appendChild(d.createElement('br'));
        item.parentNode.appendChild(d.createTextNode(item.getAttribute('alt')));
        item.style.fontSize = '10px';
    });

    $X('//tr[@class="itemList"]//td').forEach(function(item) {
        item.style.verticalAlign = 'top';
    });

    function $X(exp, context) {
        if (!context) context = document;
        var resolver = function (prefix) {
            var o = document.createNSResolver(context)(prefix);
            return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
        }
        var exp = document.createExpression(exp, resolver);

        var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
        switch (result.resultType) {
            case XPathResult.STRING_TYPE : return result.stringValue;
            case XPathResult.NUMBER_TYPE : return result.numberValue;
            case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
            case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
                result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
                var ret = [];
                for (var i = 0, len = result.snapshotLength; i < len ; i++) {
                    ret.push(result.snapshotItem(i));
                }
                return ret;
            }
        }
        return null;
    }
})();
Alc modify link
スペースアルクの英和・和英辞書はいつもお世話になっているものの,なぜかリンクが全部JavaScriptで中クリックで新規タブとかができないので,強引にリンクを普通のaタグに置き換えるスクリプト.
// ==UserScript==
// @name           Alc modify link 
// @namespace      relaxedcolumn.blog8.fc2.com
// @description    modify javascript link to normal link
// @include        http://eow.alc.co.jp/*
// ==/UserScript==

(function() {
    var w = unsafeWindow || window;
    var d = w.document;

    var BASE_URL = 'http://eow.alc.co.jp';
    var ENCODING = d.f1.ie.value;
    var WORD     = d.f1.q.value;
    var DK       = d.f1.dk.value;
    var PAGE     = d.f1.pg.value;

    function modifyLinks() {
        var links = d.getElementsByTagName('a');

        for(var i = 0, len = links.length; i < len; ++i) {
            if(!links[i].href.match(/^javascript:/)) {
                continue;
            }

            if(links[i].href.match(/goWordLink("(.+)")/)) {
                links[i].href = BASE_URL + '/' + RegExp.$1 + '/' + ENCODING + '/?ref=wl';
                continue;
            }

            if(links[i].href.match(/goPage("(d+)")/)) {
                links[i].href = BASE_URL + '/' + WORD + '/' + ENCODING + '/?pg=' + RegExp.$1;
                continue;
            }

            if(links[i].href.match(/goWordLinkHistory/)) {
                links[i].href = BASE_URL + '/' + links[i].innerHTML + '/' + ENCODING + '/?ref=wh';
                continue;
            }

            if(links[i].href.match(/goGradable("(.+)")/)) {
                links[i].href = BASE_URL + '/' + RegExp.$1 + '/' + ENCODING + '/?ref=hk';
                continue;
            }

            if(links[i].href.match(/goFairWord("(.+)")/)) {
                links[i].href = BASE_URL + '/' + RegExp.$1 + '/' + ENCODING + '/?ref=sp';
                continue;
            }

            if(links[i].href.match(/goFullText("(.+)",s*"(.+)")/)) {
                links[i].href = BASE_URL + '/' + WORD + '/' + ENCODING + '/?ref=ex&exp=' + RegExp.$1 + '&dn=' + RegExp.$2 + '&dk=' + DK + '&pg=' + PAGE;
                continue;
            }

            if(links[i].href.match(/goBack/)) {
                links[i].href = BASE_URL + '/' + WORD + '/' + ENCODING + '/' + (PAGE == '' ? '' : ('?pg=' + PAGE));
                continue;
            }
        }
    }

    w.addEventListener('load', function() {
        modifyLinks();

        var org_show_link = w.show_link;
        w.show_link = function(flag) {
            org_show_link(flag);
            modifyLinks();
        };
    }, false);
})();
LDR open entire site with key
何でもかんでもlivedoor Readerで管理したいので,フィードを配信してないところは,My RSSを使ってフィード化して読んでいる.ところが,生成されるフィードはそんなに精度が良くないので,ほとんど更新があったかどうかしか情報量がなく,結局元サイトを見に行くことになる.元サイトを開くキーボードショートカットがなかったので,適当にそれっぽいURLを取得して開くのを作った.またもや$X関数のおかげで簡単に書けている.
// ==UserScript==
// @name           LDR open entire site with key
// @namespace      http://relaxedcolumn.blog8.fc2.com/
// @include        http://reader.livedoor.com/reader/*
// ==/UserScript==
//
(function() {
    var w = unsafeWindow;
    var d = w.document;
    var _onload = w.onload;

    var onload = function(){with(w){
        Keybind.add("V", function() {
            w.open($X('//h1//a')[0].href);
        });
    }};

    w.onload = function(){
        _onload();
        onload();
    }

    function $X(exp, context) {
        if (!context) context = document;
        var resolver = function (prefix) {
            var o = document.createNSResolver(context)(prefix);
            return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
        }
        var exp = document.createExpression(exp, resolver);

        var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
        switch (result.resultType) {
            case XPathResult.STRING_TYPE : return result.stringValue;
            case XPathResult.NUMBER_TYPE : return result.numberValue;
            case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
            case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
                result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
                var ret = [];
                for (var i = 0, len = result.snapshotLength; i < len ; i++) {
                    ret.push(result.snapshotItem(i));
                }
                return ret;
            }
        }
        return null;
    }
})();

Greasemonkeyについては語り尽くせないというか,それだけで世界が広がりまくってるので把握しきれてないけど,もはやGreasemonkeyなしではウェブブラウジングできない体になってしまっている.次回に適当になんかまとめっぽいこと書いて終わる予定.

2007/11/10 21:04 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その6

Stylish

userchrome.cssおよびusercontent.cssを管理したり,CSSの更新チェックができたり,Firefoxの再起動なしに適用できたりする拡張機能で,FirefoxのUIからウェブページまでCSSでカスタマイズできる.ある程度CSSが書ければ好きなようにできるし,userstyles.orgに投稿されているスタイルを適当にインストールして使うこともできる.userstyles.orgなどから使わせてもらっているのは以下のCSS.

Combine Stop/Reload buttons
ブラウザのストップボタンとリロードボタンは機能が時間的に排他的なので同時に表示する必要がないということで,どっちかしか表示しないようにする.Safariでは標準でこのようになっているので,たぶんそれの真似だと思う.
del.icio.us Plus
del.icio.usのような人気サイトはたくさんのCSSが投稿されていて,その中で気に入った一つ.ただし,タグクラウドは元の位置に元の大きさでいて欲しかったのでその部分だけコメントアウトして使っている.
Gmail - display keyboard shortcuts
contentプロパティをうまく使ってGmailのキーボードショートカットを表示してくれるCSS.最近のGmailの大幅な変更にも対応している.
Google Calendar - colorize Sat/Sun (start on Sun)
Google Calendarの土日に色をつけてくれる.
livedoor Clip CSS
自分でもlivedoor クリップのUserCSSを書いているので,記述がかぶってたりぶつかってたりするような気もするけど,気にせず使っている.
livedoor Reader
livedoor Readerの広告とかを消すCSS.ヘルプまで消されちゃうのでそのへんはコメントアウトして適当に使っている.
Remember The Milk - display keyboard shortcuts
GmailのやつのRemember The Milk版.そもそもRemember The Milkをちゃんと使ってないけど気にしない.

続きまして,自分で書いたやつを列挙しときます.ほとんど人様の分をパクっただけのやつもある上に,名前が変だったり,適当過ぎたりするけど大目に見てやってください.

Bookmark Toolbar - Bookmarklet Icon
ソースを失念してしまったけど,多分人様の分を書き換えたやつ.ブックマークバーにあるブックマークのうちBookmarkletなもののアイコンをスパナに変えます.ちなみに,人気の高いreinというテーマにも同様の機能があった気がする.
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
.bookmark-item[statustext^="javascript:"] {
    list-style-image: url("data:image/gif;base64,R0lGODlhEAAQAMQAAHR0dK2trdbW1pmZmby8vO/v74SEhKWlpczMzNzc3I2NjZmZmba2tnt7e8XFxeXl5ff39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUUABEALAAAAAAQABAAAAVlYCSOJKIYCqmKgkEox6oeh3EUxyCLQe0MBsOuMKAFFalVonEIAIOCFWIQCBgaBISM0KgaBgVVQSBgKBg1sCqBapwPXRm1xwAydjDgKYZvFBhBOjsCYwBAfDsRDYsAYYkRDw5ajyEAOw==") !important;
}
Google multicolumn
-moz-column-*系プロパティが真価を発揮するとき - Hatena::agendaのエントリを参考にGoogleの検索結果を二列にするCSS.
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("www.google.co.jp"), domain("www.google.com") {
div#res > div {
    -moz-column-width: 25em;
    -moz-column-gap: 1em;
}

div#res table {
    width: 100%;
}
}
livedoor clip
以前書いたlivedoor clipのタグクラウドをちょっと変えるをもう少し変えたやつ.
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("clip.livedoor.com") {
#content {margin-right: 300px !important;}
#right {width: 285px !important;}
#sidesearchbox {
    width: 285px !important;
}
#tagsearch {
    width: 200px !important;
    margin-left:20px !important;
}


#htmltagcloud {line-height: 1.2 !important;}
#htmltagcloud a:hover {
text-decoration: underline !important;
background: #ffa !important;
}
span.tagcloud0 a{color: #88f !important;}
span.tagcloud1 a{color: #66f !important;}
span.tagcloud2 a{color: #44f !important;}
span.tagcloud3 a{color: #22f !important;}
span.tagcloud4 a{color: #00f !important;}

#header,
#footer,
#sideadbnrmember,
#sideadbnr
{
    display: none !important;
}
}
mixi
mixiのデザイン変わってからアレな感じだったので適当にでっち上げたCSS.広告削って二列にします.あと,細かいずれを直したり枠線引いたりとかそんな感じです.
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("mixi.jp") {
/* 広告削除 */
  iframe {
    display: none !important;
  }

  #adBanner,
  .adBanner {
    display: none !important;
  }

  div#login_main {
    display: none !important; 
  }

/* 幅減らしてセンタリング */
  div#login_all,
  div#headerArea,
  div#bodyArea,
  div#oldMain,
  div#footerArea {
    margin: 0 auto !important;
    width: 725px !important;
    position: static !important;
  }

/* フッター削除 */
  div#footerArea .footerNavigation01,
  div#footerArea .footerNavigation02 {
    display: none !important;
  }

/* 右カラム削除 */
  #bodySub,
  td[width="224"] {
    display: none !important;
  }
  
/* メニュー削減 */
  #globalNavigation li.home,
  #globalNavigation li.movie,
  #globalNavigation li.photo,
  #globalNavigation li.mikly,
  #localNavigation li.top,
  #localNavigation li.video,
  #localNavigation li.photo {
    display: none !important;
  }

/* 検索修正 */
  div.searchForm01 ul.searchCategory01 {
    width: 404px !important;
  }

  li.searchCommunity a {
    width: auto !important;
    padding: 0 2px !important;
  }

  li.searchEventDate a {
    width: 130px !important;
  }

/* mixiプレミアム削除 */
  #myProfile p.statusIcon {
    display: none !important;
  }

/* 最新情報修正 */
  #mymixiUpdate div.contents,
  #myUpdate div.contents,
  #intro div.contents {
    border: 1px solid #FF9900 !important;
    border-width: 0 1px 1px 1px !important;
  }

  dl.contentsList01 dd {
    width: 280px !important;
  }
  
  dl.contentsList01 dd dl dt {
    width: 8em !important;
  }

/* xxさんの最新情報修正 */
  dl.contentsList02 dd dl dt {
    width: 8em !important;
  }

  ul.actionIcon03 {
    display: none !important;
  }
  
  #newMyDiary div.contents dl.contentsList02 {
    background-image: none !important;
  }

/* マイミクシィからの紹介文修正 */
  #intro div.contents dt {
    width: 72px !important;
  }
}
transparent tooltip
くでんな日々や公開どう? ツールチップを透過させてみるをそのまま頂いたもの.
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

tooltip {
  -moz-appearance: none !important;
  font: message-box !important;
  color: #ffffff !important;
  background-color: transparent !important;
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABmJLR0QA/wD/AP+gvaeTAAAAGElEQVR42mNkYGCoZyACMDEQCUYVUkchANsIAJN3G7QXAAAAAElFTkSuQmCC") !important; 
  border: 1px solid #000000 !important;
}

今回はStylishだけで終わってしまった.他のブラウザにもUserCSSの仕組みはあったりするけど,userstyle.orgのようなサイトからワンクリックでインストールできたり,再起動なしにCSSを適用できたり(できないときもあるけど),というのがStylishのいいところであり,StylishがあるからFirefoxを使っているという面もある.

2007/11/10 19:08 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その5

Firebug

ウェブ開発するなら必ず入れておきたい拡張機能.かなり多機能で,JavaScriptのデバッグ,HTMLの構造やCSSの解析,ネットワークの通信状況の表示と便利な機能が詰まっている.その反面,livedoor Readerおよびlivedoor クリップのページでは動作がおかしくなったり,Gmailを重くしてしまうなので問題もある.幸いページごとに有効,無効を指定できるので,これらのページでは無効にしたり,しょっちゅう使わないなら無効にしておくのが良いのかも知れない.追記(2007/11/17 15:37):Firebugは真剣に一部ページで不具合があるので注意!ステータスバーのFirebugのアイコンを右クリックして,「Disable Firebug for xxx」か「Alloed Sites ...」を選択して,livedoor Reader,livedoor クリップ,Gmailあたりは無効にしておくと良いです.

Web Developer

主にHTMLやCSSを書いたり解析したりするときに便利な機能を提供する拡張機能.ツールバーにWeb Developerのボタンを置いておくとWeb Developerツールバーをトグルできるようになる.Firebugが素敵なので使う機会があんまりないけど,たまにW3C Validator呼んだり,画像やテーブルのアウトライン表示するのに使っている.でも,この程度ならBookmarkletでも十分代用可能なので,そのうち外すかも知れない.BookmarkletといえどもXRAYのような強力なものもあるし,拡張機能でなくても構わないものは入れない方がFirefoxがちょっとは軽くなっても良さそうである.

vimperator

これぞ変態拡張機能(褒め言葉)というべき拡張機能.Vimっぽい操作でFirefoxを操作できるようになる.jkhlで上下左右にスクロールしたり,ブックマークと履歴から補完してタブを開けたりとか,Hit-a-Hintスタイルのリンク選択できたりとか,とにかく何でもかんでもキーボードのみで操作できる.設定ファイルもVimっぽいく.vimperatorrcを置くことができる.設置方法は環境設定ファイル vimperatorrc の詳しい手順 - k0yの日記のエントリを参考してもらうにして,自分の.vimperatorrcを晒しておく.

" options
set activate=quickmark,paste
set complete=bshf
set guioptions=mTb
set hlsearch
set ignorecase
set incsearch
set popups=2
set preload
set showstatuslinks=2
set wildmode=list:full

" key mappings
" Windows環境のCtrl+cでコピーを殺すのを回避
map <C-c> Y 

" 多めにスクロールするようにする
map j 5<C-e>
map k 5<C-y>
map h 5<Left>
map l 5<Right>

echo '.vimperatorrc loaded'

思いっきりFirefoxのUIをいじるためテーマによったら表示がおかしくなるかも知れないし,他の拡張機能とコンフリクト起こすことも考えられる.けど,今のところ奇跡的に(?)自分の環境ではだいたいうまいこと動いている.ただ,FIREGESTURESのステータスバーへの表示が消されてしまう.

また,livedoor ReaderやGmailのようにウェブページ側でキーボードショートカットを設定している場合は全部vimperatorが吸い取ってしまう.Shift+iでvimperatorを一時的に無効にできて,吸い取る問題は回避できるもののそういうのがめんどくさい人には向かないかも知れない.また,Mac環境では(その他の環境は分からない)Flashへの文字入力(ニコニコ動画のコメント入力など)も吸い取ってしまうし,逆にFlashにフォーカスがあるとvimperatorがちゃんと動かなかったりと,不安定な部分もある.その他,不意に操作できなくなったりといろいろあるので,やっぱりチャレンジャー向けな気がする.

しかし,vimperator + SplitBrowser で :sp[lit] コマンド - hogehogevimperator + SplitBrowser のフォーカス移動 - hogehogeといった野心的なことをやっている人もいるし,vimperator自体の開発も活発に行われているようであるし,何より「こんなんFirefoxじゃないとできんやろ!」的な面白さがたまらないので今後に期待したい拡張機能である.

2007/11/10 18:00 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その4

Ctrl-Tab

前回のタブ関連で書き忘れた.朝顔日記 - Ctrl-Tab を試してみたで知ったんやけど,手元のMac環境ではうまく動かないので期待しながら待つ方向で.最新版はFirefox 3 Onlyになってるので,Firefox 3になってからもう一回試してみる予定.

Adaptive Referer Remover

正規表現で,リファラを送らないサイトを指定できる拡張機能.まーなんだほげほげなサイトでもげもげするときに役に立ったり立たなかったり.

Growl Notifications

Mac専用で,ダウンロード終了をGrowlに通知できる拡張機能.Firefox 3では標準で取り込まれるっぽい.

SQLite Manager

名前そのままSQLiteデータベースのビューワ.FirefoxはSQLiteのAPIを持っているので開発者はたぶん便利なんだろう.livedoor Clip IncSearchの日本語検索通らない問題を調べるときに役に立った.

Zotero

Firefoxで文献管理できる拡張機能.ACMとかそういうサイトから適当にスクレイピングして取り込んだり,BibTeXで吐き出したりいろいろできるみたいだけど,あんまり活用してない.文献管理といえばCiteULikeもあったり,デスクトップアプリケーションではBibDeskがあったりするけど,もう一つどれも活用しきれていない.

MozLab

Telnet経由で外からFirefoxにJavaScriptを流し込めるMozReplと,MozUnitを合わせた拡張機能.MozUnitの方はよくわかってないけど,MozReplの方は結構面白いことができる.例えば,2006-10-05 - WDFを参考にしてVimの場合は.vimrcに

function ReloadFirefox()
    if has('ruby')
        :ruby <<EOF
            require "net/telnet"

            telnet = Net::Telnet.new({
                "Host" => "localhost",
                "Port" => 4242
            })

            telnet.puts("content.location.reload(true)")
            telnet.close
EOF
    endif
endfunction
nmap <silent> <Leader>r :call ReloadFirefox()<CR>

とか書いておくと,バックスラッシュ,rと押すことでVimからFirefoxをリロードできる.さらに,ポートフォワーディングも組み合わせるとMacのVimからとなりのWindowsのFirefoxをリロードできたりする.Firefoxを自動リロードして快適開発生活 - Ruby>DRb>MozLab>Firefox:TKMR.blog.showといった感じで,さらに高度なこともできるようだ.

タブ関連でがんばったのが今回はあっさり風味.まだまだ続く.

2007/11/10 17:12 | Firefox | トラックバック(0) | コメント(2)

ページの先頭へ

Firefoxをこう使ってます的な何か その3

今回はタブ関係の拡張機能でまとめてみようと思う.

about:configの設定

Firefoxはロケーションバーにabout:configと入れることで,GUIにない細かい設定も行うことができる.フィルタでインクリメンタルに項目を探せるので,適当に「tab」とか入れるとタブ関連の項目を探せます.タブ関係で自分が設定しているのは以下の項目.

browser.tabs.closeButtons 2
タブの閉じるボタンの表示方法に関する設定.2にしとくとボタンが表示されなくなる.タブを閉じるときは,マウスジェスチャかタブを中クリックかキーボードショートカットなので,ボタンは不要.
browser.tabs.loadBookmarksInBackground true
ブックマークを中クリックで新規タブに開いたときにフォーカスを移さない設定.ちなみに,ノートパソコンのタッチパッドなど中クリックがないときは,Macの場合はCommandキー(リンゴキー)+ クリックで代用できる.右クリックはControl + クリック.Windowsの場合はどうなんやろ?
browser.tabs.loadDivertedInBackground true
たぶん,JavaScriptのwindow.openなどで新規タブが開かれるときにフォーカスを移さない設定.livedoor Readerで記事を読むときには必須.livedoor Readerでは,sおよびjを連打して,面白そうな記事があればvで開くというのを繰り返してタブを垂れ流すという使い方をしてる.あとで紹介するツリー型タブと使うと快適.
browser.tabs.loadFolderAndReplace false
これをtrueにしておくとフォルダにまとめられたブックマークを一気に開くときに,既存のタブが上書きされてしまう.
browser.tabs.loadInBackground true
これはたぶん,設定の「タブ」→「リンクを新規タブで開いたとき、すぐにそのタブに切り替える」に対応してるけど念のため.これもフォーカスを移さない設定にしている.
dom.popup_maximum 9999
JavaScriptのwindow.openなどで新規タブを開くとき,何回まで許可するかという設定.たしかデフォルトは20ぐらいになってて,livedoor Readerから30とか記事を開こうとすると途中でできなくなってしまう.9999もタブを開くことは絶対ないけど,適当に大きな数を指定しておけば際限なくタブを開くことができる.

about:configに関しては,about:config と user.js による Firefox のカスタマイズ - えむもじらが詳しいので参考になる.また,About:config entries - MozillaZine Knowledge Base(和訳:about:config - Firefox - index)に,各項目の説明がある.さらに,FirefoxやThunderbirdのメモリ消費量を劇的に減らす方法 - GIGAZINEというのもあるが,自分はやっていない.

タブ関連の拡張機能では,Tab Mix Plusが有名だけど,about:configの設定や以前に書いたFirefoxが便利になる小技Firefoxが便利になる小技2にある小技の運用や他の拡張機能で,思い通りの動作になるので使っていない.

ツリー型タブ

タブを縦置きにして,かつ,新規タブを開く際には親子関係を認識してツリー型に配置,さらには,ドラッグ&ドロップで再配置まで可能な個人的には神のような拡張機能.特に,livedoor Reader(以下,ldr)との組み合わせで力を発揮する.ldrでvで新規タブを開くとldrを表示しているタブの子としてタブが追加されていき,さらにそのタブから参照されているリンクをタブで開くとldrから見ると孫の位置にタブが開かれる.というわけで,どのタブがどのタブから開かれたのかを視覚的に保存するため,効率的にブラウジングできる.調べものをする際にもGoogleの検索キーワードごとにタブを作りそれぞれからタブで開けばキーワードごとのツリーを作れるし,あとで並べ替えたりもできるので情報を整理しながら検索できる.

ただし,テーマによっては,縦置きしたときにタブの表示がおかしくなるので,困ることがあるかも知れない.これはLocationbar2も同様で,せっかくかっこいいテーマがあってもコンフリクトすることがある.ちなみに自分は,Kempeltonというテーマがお気に入り.

マルチプルタブハンドラ

複数のタブをまとめて操作できる拡張機能.特に便利なのが,「すべてのURIをコピー」で,設定で「ページのタイトルとURI」や「HTMLのリンク」にしておけば,まとめてタイトルとリンクをコピーできるので,人に複数ページを伝えるときにはかなり簡単にコピペできる.例えば,「PHPについて聞きたいんやけど?」と言われれば,livedoor Clip IncSearchで「PHP」で絞り込んだのち,適当によさそうなのをタブで開いていく.もちろんこのときツリー型タブでlivedoor Clip IncSearchのタブの子としてまとめられるので,他の作業中でもタブが混ざったりしない.そしてさらに内容を吟味して3?4個に絞り込んだらまとめてコピーして,メッセンジャーなりメールなりで投げるといった感じ.

ツリー型タブとマルチプルタブハンドラの作者は同じ方(piroさん,サイト:outsider reflex)で,かなりの数の拡張機能を作っていらっしゃる.どれもがFirefoxとブラウジングをよく理解し,かつ安定した実装となっていると思う.しかも,いくつかの機能はFirefox黎明期より存在したタブブラウザ拡張の機能としても実装されていたとかで,驚きである.つまり,世の中のほとんどの人がまたタブブラウザの「タ」も知らなかった頃から「タブをツリーにしたら良さそう」とか「タブはまとめて選択して操作できるべき」などと考え実装していたのである.Latest topics > 使う道具が人の考え方を決めるということと、自分が「自分を変えたくない」と思いこの場所に留まり続けているということ - outsider reflexというブログエントリでも,インタフェースに関する哲学が感じられるし,本当にすごい人だと思う.

テキストリンク

タブは関係ないけど,piroさんシリーズということでここで紹介しておく.これは,リンクになっていないURLっぽい文字列をダブルクリックで選択したり開いたりする拡張機能.ウェブ上では何故かリンクが貼っていなかったり,意図的に貼っていないURL文字列らしきものが多くあるので,これを入れてくと簡単に開けて便利.よくあるhを削ってttp://...となっているのも開けたと思う.

もひとつpiroさん関連で,Latest topics > 大量のタブを管理するための様々なアプローチ - outsider reflexのエントリにてタブ関係の拡張機能が分類,まとめられているので参考になると思う.

iswitchb-tabs

タブをたくさん開いていると,タブ間の移動も大変になってくる.マウスがあるときはいいけど,キーボードで何でも操作したい派なので,今度紹介する予定のVimperatorに加えて,この拡張機能も使っている.これは,F9でタブ一覧が開いて,そこからタブ名で絞り込みをかけてタブを選択できるというもの.Vimでもバッファをインクリメンタルに絞り込んで選択するfuzzyfinder.vimというプラグインがあるので同じようなのがないかと思って探したらあった.

ショートカットキーはデフォルトはF9キーだけど,ExposeとかぶるのでMacでは「システム環境設定」→「マウスとキーボード」→「キーボードショートカット」にFirefox.appを足して,「M-x iswitchb-tabs」にControl + b(^Bと表示される)を追加している.Firefox関係ないけど,Macではこんな感じでメニューの項目名に直接ショートカットキーを割り当てることができる.さらに脱線すると,Leopardからは,/System/Library/CoreServices/Finder.appに「パッケージの内容を表示」を割り当てられるようになっている.どうやら非表示でメニューに「パッケージの内容を表示」が追加されていて,ショートカットキーを割り振れるようになったらしい.Command + Option + oとかに割り当てると便利.

たぶんタブ関連はこんなもんだと思う.さらに続きます

2007/11/10 16:23 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その2

It's All Text!

フォームのtextareaを外部エディタで編集できるようにする拡張機能.ついでに,あとで紹介する予定のStylishのCSSも外部エディタで編集できるようになる.textareaにEditボタンを表示するけど,うっとうしいので非表示にしてコンテクストメニューかショートカットキーから利用するようにしている.どっちかと言えばStylishのために入れているような感じ.また,リンク先にもあるようにMacへの対応が中途半端で外部エディタのパスの指定をちょっと工夫しないといけない.例えば,CotEditorを使うなら,

/Applications/CotEditor.app

ではなくて,

/Applications/CotEditor.app/Contents/MacOS/CotEditor

と,パッケージの中の本体を指定しなければならない.

Make Link

コンテクストメニューから,表示中のページのURLやタイトルを適当に整形してクリップボードに転送する拡張機能.ブラウザの特性上,よく考えるとページのタイトルをコピペするのはめんどくさいので,あると便利.例えば,このエントリを書いてるときも,前項のIt's All Text!でブログの新しい記事を書くところのtextareaを開いて,前回のエントリにあるStart Commandを使って目的の拡張機能を検索して,Make Linkでアンカータグ作って貼って,といった具合である.あと,メッセンジャーで人にURL教えるときもタイトルとURLを同時にコピーできるようにしておいてさくっと貼れるので便利.複数ページをコピペする場合は,あとで出てくる予定のマルチプルタブハンドラの方が便利かも知れない.

livedoor clip IncSearch

livedoor クリップのブックマークをローカルに同期して,タイトル,タグ,コメント全部ひっくるめてインクリメンタルサーチできる拡張機能.同種類の拡張機能の中では圧倒的な速さで検索でき,自分の場合4600件以上ブックマークがあるのだが,ほぼ一瞬で検索できる.del.icio.us IncSearchHatebu IncSearchもあるけど,自分の環境ではdel.icio.usはたまに同期通信がつながらなくて,はてブは使ってないので,livedoor クリップ版を使っている.ちなみにあとで出てくるGreasemonkeyを使ってdel.icio.usとlivedoor クリップに同時にブックマークしてるんだけど,なぜか両者でブックマーク数が微妙に違う.

あと,かなりレアなケースではあると思うけど,Macでは日本語検索が通らなくなるケースがあるので紹介しておく.MacではGUIアプリケーション(X11含む)の環境変数を設定するために,ホームフォルダに.MacOSXというフォルダを作ってその中にenvironment.plistを作ることがあるけど,そこでLANG変数をUTF-8などに指定していると日本語検索ができなくなる.livedoor clip IncSearchでは内部的にFirefoxのSQLite機能を使っていて検索用のフィールドを持っているようなのだが,そこに文字列を登録する際にアルファベットの大文字小文字を無視するためにUPPER関数を通してあって,そいつがLANG変数の値によっては日本語部分に悪さをするようである.environment.plistがないと困るひとは両立が難しそうだが,特に理由もなくenvironment.plistを置いてる人は消しておくと良い.

More Tools Menu

Firefoxに拡張機能をたくさん入れているとメニューバーの「ツール」のとこがいっぱいになって何がなんだかわからなくなるのだが,デフォルトのメニューは「ツール」に残しておき,新たに「追加ツール」という項目を作って拡張機能によって追加されるメニューを分離する拡張機能.単に表示を分けるだけなので,なくても困らないけどメニューが若干すっきりして分かりやすくなるので入れておくと良いと思う.

ちなみに,この拡張機能はThunderbirdでも使える.Thunderbirdについては,以前にThunderbirdのいいところというエントリを書いたけど,最近はWindowsではSylpheedもかなり良さそう.Thunderbirdを使ってるのは縦3列表示がかなり大きな要因の一つなのだが,Sylpheedでも実装されそうなので,実装され次第移行するかも知れない.MacではGmailと.MacをIMAPで受信してるけど,Mac版ThunderbirdのIMAP同期が遅すぎて話にならないので,Leopardに移行してからはMail.appを使っている.WideMailを使うと縦3列表示にできるし軽いので今のところ一応満足.ただ,キーボードショートカットによる操作が弱いのでMail Act-Onでなんとかしてるけど,その辺はまだThunderbirdの方がよい.Sylpheedは一応Macでも使えるけどX11になっちゃうのがネック.3つのいいとこが合体したようなメーラないかなぁ.

MR Tech Local Install

拡張機能を管理する拡張機能といった感じの拡張機能.現在インストールしている拡張機能のリストを書き出したり,バージョンの都合で対応してない拡張機能を強引にインストールしたりできるようになる.その他,細かい挙動も変更できる.今のところ,次に紹介するResize Search Boxのために使っているようなものなのだが,Firefox 3でResize Search Boxが本体に取り込まれるし,アドオン管理も少し改良されるのでゆくゆくはこの拡張機能は使わなくなりそう

Resize Search Box

検索ボックスをハンドルでリサイズできるようにする拡張機能.Firefox 2に対応していないので,前項のMR Tech Local Installを使って無理矢理インストールしている.前項でも書いた通りFirefox 3で本体に取り込まれる.ちなみに,Safariには昔から同様の機能が実装されている.FirefoxはUIに関してはかなりMacを意識しており,Windows版であってもツールバーをドラッグ&ドロップで並び替えれたり,オプション画面もMacのものを模倣した感じになっている.

今回はここまで.次回からはさらにディープな拡張機能になっていく予定.

2007/11/10 14:28 | Firefox | トラックバック(0) | コメント(0)

ページの先頭へ

Firefoxをこう使ってます的な何か その1

超久しぶりの更新.

友人がFirefoxを使いはじめるというので,何回かに分けて,Firefoxの使い方というか,最近はこうやってウェブをウロウロしていますよ的なことを書こうと思う.過去のFirefox関連のエントリは以下の通り.古い内容やけど,まぁ参考までに.

とりあえず,どこから書いたらよくわからないから,入ってる拡張機能を適当に列挙して,そこから話を広げることにする.と,その前にFirefoxのインストールから.

Firefoxのインストール

Firefoxはオープンソースなので,その気になれば誰でもビルドすることができる.公式にダウンロードできるやつは,どの環境でも動くようにビルドされているので最適化がもう一つなので,最適化ビルドを入れる.Windowsでは公式ビルドを使ってるけど,Macの場合はフォーム部品がちょっとだけかっこよくなるおまけ付きのlzycビルドを使わせていただいている.

FIREGESTURES

Firefox用のマウスジェスチャ拡張機能は,Mouse Gestures(Macではちゃんと動かない)やAll-in-One Gestures(Macでも動く)が有名どころやけど,最近はFIREGESTURESを使っている.Mouse Gesturesは柔軟にカスタマイズできるけどMacでは動かなくて,All-in-One GesturesはMacでも動くけどもう一つ柔軟性に欠けると,Macユーザとしてはジレンマに悩まされていた.その点,FIREGESTURESの作者のGomitaさんはMac,Windows,Linuxのどの環境でも動くように気を使ってくれていて,Macでもすこぶる順調に動作する.しかも,機能的にも必要十分な感じで大変すばらしいと思う.ちなみに,一応,Macでの動作確認には協力させていただいている.設定としては,ホイールジェスチャとキープレスジェスチャのみ有効にして,右クリック + スクロールを「前のタブへ」「次のタブへ」にしている.さらに,「マッピング」の「特殊機能」で,「[ポップアップ]検索エンジンを選択してWeb検索」を適当に割り当てておくと,ページ中のテキストを適当に選択しておいて,登録済みの適当な検索エンジンで検索することができる.

検索エンジンといえば,多くのブラウザで検索エンジンをカスタマイズできるが,Firefoxでも可能である.Mozilla Japan - アドオン - Firefox - 検索エンジンMycroft Project: Sherlock & OpenSearch Search Engine Pluginsで,適当によく使う検索エンジンを追加しておくと便利.学生なら,ACMやGoogle Scholar,WeblioやWikipediaあたりを追加すると良いと思う.その他,Google Map,Google Image,Amazonあたりが多分便利.自分の場合は,StartCommand ソーシャルコマンドサービスを使って,さらに何でもありな感じにしている.tsukkeeのスタンドページ - StartCommandが一応自分のページ.PHPやらRubyのリファレンス引いたり,Vim ScriptやFirefox,Thunderbirdのアドオンを検索できるようにしてある.関係ないけど,Vimもだいぶ慣れてきたのでそのうちエントリ書こうかなぁ.

マウスジェスチャの話に戻ると,「タブを閉じる」を下方向のみのジェスチャ,「閉じたタブを元に戻す」を上方向のみのジェスチャに割り当てている.あとでまた書くと思うけど,Firefoxの使い方が大量にタブ開いたり閉じたりする使い方なので,気軽にタブを閉じたり勢い余って閉じちゃっても元に戻せるようにしてある.

dragdropupload

ファイルのアップロード時に,わざわざファイル選択ダイアログを開かずともドラッグ&ドロップでファイルを指定できる拡張機能.ドロップ時にはファイルパスを表示する部分ではなくて,ダイアログを開くボタン部分にドロップしないといけないので注意が必要.Safariなんかは標準でこの機能があったりする.Gmailで複数のファイルを添付したいときなんかは,いちいちダイアログを開かなくてもいいので楽である.これは標準機能として取り込まれてもいいと思う.

Locationbar2

Firefox 3に機能が取り込まれることが決定している拡張機能.ロケーションバーを見やすくするというか機能を拡張してくれる.デフォルトでは,httpとかhttpsとかいうプロトコル部分が消されるけど,設定で「非表示プロトコル」を空欄にして,さらにFaviconも表示している.便利なのが「リンク化」機能で,上端のみチェックして,階層をさかのぼりたいときは,ロケーションバーに上からカーソルを入れてクリックしている.中クリックによる新規タブで開くも有効なので,検索とかで深い階層のページがひっかかったときでも,マウス操作だけで上の階層を辿れるのが便利.

そろそろ,しんどくなってきたので,今回はこのへんで.まったくスクリーンショットもなく適当に書いたので分かりにくいけど,まぁいいや.今アクティブになってる拡張機能は24個あるので,まだまだ先は長い

2007/11/10 14:27 | Firefox | トラックバック(0) | コメント(1)

ページの先頭へ

トップページへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。