Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2009-08-17

AutoPagerizeの使われてないSITEINFOを可視化(その2)

15:03

の続き。


パワーアップした。

使われた日時の順で並べることにした。デフォルトでは新しく使われた順。"From oldest" をクリックすると、古い順になる。

# Used Today というのは、1日以内に使われた回数。

バックエンドもだいぶ弄った。骨組みはこんな感じでいく。とりあえずベータ版という感じ。


協力してくれる方は、こちらの UserJS をインストールしてみてください。

// ==UserScript==
// @name           SITEINFO Stats
// @namespace      http://d.hatena.ne.jp/edvakf/
// @description    Collect statistics for AutoPagerize SITEINFO
// ==/UserScript==

(function(fun){

  if (window.AutoPagerize) fun();
  else window.addEventListener('GM_AutoPagerizeLoaded',fun,false);

})(function(){
  var flag = false;
  
  window.AutoPagerize.addDocumentFilter(function(doc,url,info){
    if (flag) return;
    var api = [
      'http://atsushuu.appspot.com/siteinfo/vote?',
      'url=', encodeURIComponent(info.url), '&',
      'nextLink=', encodeURIComponent(info.nextLink), '&',
      'pageElement=', encodeURIComponent(info.pageElement)
    ].join('');

    new Image().src = api;

    flag = true;

  })
})

データが溜まると、使われてない SITEINFO は「逆順」で並べた時の最初のほうに来るはず。それが本当に使われているのかは (とりあえず) 手動で確認することになる。exampleUrl があれば機械的にやることもできると思うけど。


id:swdyh さん、id:os0x さん、デフォルト搭載を検討いただければ幸いです。


12時間以内に同じ IP アドレスから同じ内容のリクエストがあった場合は無効にすることにした。

os0xos0x2009/08/18 13:13自分が見ているページの情報を送るというのは抵抗のある人も多いと思うので、ユーザーの承認が必要ですね。
oAutoPagerizeの場合、settingファイルで切り替えできるようにしておく方法が考えられます。
ただ、そうするとONにする人はごく少数になってしまうと思われるので、あまりデータが取れないかなぁと思うところも。
であれば、協力すると良いこと(SITEINFOのリクエストができるとか)があるよとアピールするという方法も考えられますね。

といった辺りを検討中です。

edvakfedvakf2009/08/18 13:50そうですね。opt-in であるべきだとは思います。

アイデアの一つですが、こちらで SITEINFO のバックアップを提供して、oAutoPagerize.SITEINFO.js を不要にするというのも可能かもしれません。
http://atsushuu.appspot.com/siteinfo/vote が SITEINFO 一覧になっていると。
UserJS 側で If-modified-since を出すようにすればこちらは 304 Not Modified を出せばいいので、巨大な転送は必要ないという方向で。
これなら opt-out で oAutoPagerize.SITEINFO.js を使いたい人はそうする、ということでも問題ないと思いますが、どうでしょうか。

edvakfedvakf2009/08/18 14:00あ、その前に JSONP で If-modified-since をコントロールできないや。こっちで Expires を指定することもできるけど、それだと網羅的に集めるのは無理なのか。
まあある程度ランダム抽出でも良い気がするけど。

edvakfedvakf2009/08/18 14:31URL を引数にして送ったらマッチする SITEINFO のリストを返す JSONP は既に作ったことがあるんですけど、それだと、その中でどれが使われるのか特定できないしなあ。

トラックバック - http://javascript.g.hatena.ne.jp/edvakf/20090817
 |