Hatena::Groupos0x

FFFF RSSフィード

0xFFのメモです。

2009 May 14th Thursday

はてぶカウンター

| 12:30 | はてぶカウンター - FFFF を含むブックマーク はてなブックマーク - はてぶカウンター - FFFF

SBMカウンタみたいなの。はてなしか対応してないけど。

http://ss-o.net/chrome_extention/

※インストールはAutoPager extension for Google Chrome ver 0.1 - FFFF - 0xを見てね

タブ切り替えたり、バックグラウンドで開いたり閉じたりしたときの制御が面倒で、あんまり正確ではないです。。

あと、toolstripクリックすると左端のタブに移動するバグのせいで役立たず感が…。

将来的には、はてぶ拡張くらいを目指したいな。

2009 May 7th Thursday

AutoPager extension for Google Chrome ver 0.1

| 21:22 | AutoPager extension for Google Chrome ver 0.1 - FFFF を含むブックマーク はてなブックマーク - AutoPager extension for Google Chrome ver 0.1 - FFFF

フライング気味(extensionの実装が固まっていない)だと思うのでこっちでこそこそ(?)と公開してみる。

念のため書いておきますが、ほんと実験的なバージョンなので、自己責任でお願いします。


Google Chrome 2.0.177.1あたりで動くGoogle Chrome extension版の AutoPager です。

まず、Dev版のGoogle Chromeインストールしてください。

んで、crxをファイルをダウンロードして、実行してください。一応、インストールはそれだけです。

http://ss-o.net/chrome_extention/autopager.crx

http://autopatchwork.googlecode.com/files/autopatchwork.crx

名前変えました。アンインストール機能はないので、旧バージョンは手動で削除してください。

Google Chromeが立ち上がると思いますが、初回は動きません…*1

一度終了し、

 --enable-extensions

オプションをつけて起動してください。(初回動かないのはすでに no title に上がってたはず)

パッケージ

Page not found - The Chromium Projectsにあるスクリプトでパッケージにしました。フォーマットはzipなので、普通に解凍できます。

SITEINFOの管理

拡張版AutoPagerizeの特徴は、SITEINFOをキャッシュしている点です。

toolstrip上に変数としてSITEINFOをキープしていて、ページを開いた際はtoolstripとpostMessageでやり取りをして必要なSITEINFOだけ(urlがマッチしたもの)だけを取得します。

なので、PC(主にメモリ)にやさしい作りになっているはずです。

実際、どんな感じなのかソースの要点を少し。

toolstrip.html

toolstripは本来はボタンとかを置く場所みたい。ここに起動中開きっぱなしのWindowが存在するので、SITEINFO置き場として利用する。

chromium.self.onConnect.addListener(function(port) {
//こんな感じでconnectionを開いてメッセージを待ち受ける
	port.onMessage.addListener(function(info,con){
// 第一引数に受け取ったメッセージ、第二引数に(メッセージを送ってきたタブへの)connectionが入る
		var infos = [], url = info.url;
		for (var i = 0,len = siteinfo.length;i < len;i++){
			if (new RegExp(siteinfo[i].url).test(url))
				infos.push(siteinfo[i]);
		}
		con.postMessage(infos);//マッチしたSITEINFOをタブに送る
		con.postMessage({date:timestamp.toLocaleString()});//デバッグ用
	});
});
AutoPager.js
//まず、toolstripへのコネクションを繋ぐ
var connection = chromium.extension.connect();
//toolstripからのメッセージを受け取る準備をしておく
connection.onMessage.addListener(function(infos){
	if (infos.length) {
		infos.some(_autopager);
	} else {
		console.log(infos.date);
	}
});
//ページのURLをtoolstripに送る
connection.postMessage({url:location.href});

postMessageは基本的にJSONでやり取りすることになります。JSONシリアライズできないデータは受け渡しできないので注意が必要です。

APボタン

適当な感じのAPボタン…とりあえず、クリックするとSITEINFOを最新(といってもウチのサーバーにキャッシュしているファイルですが)にします。

予定では、もう少しちゃんとしたボタンにして、クリックした際は管理画面を開くようにしようと思っています。

ソース・ライセンス

AutoPagerizeとの互換性を保ちつつ、ソースは新たに*2書き直したので、ライセンスはMITあたりにしようと思っています。ソースをどこに置くか決めつつ考えます。まあ、GitHubかGoogle Codeの2択なんだけど。gitがいいけど、Google的にはMercurialなのかなと。

参考リンク

404 Not Found

Page not found - The Chromium Projects

*1:ただ、すでにオプション付きで起動していればすぐに動くようになります

*2:実際には、Twitter用AutoPagerize - os0x.blogがベース

hanabusahanabusa2009/06/03 19:08installしたextensionはchromeのアドレスバーに
chrome://extensions/
で、インスコ済みのextensionが表示されてuninsllボタンをクリックすれば再起動いらずでuninstallできますね

os0xos0x2009/06/03 19:23お、そうですね。
Dev版では Chrome 3.0.182.2 からuninstall機能が付きました。