Open6
WikiBlame を近代化したい
モチベ
WikiBlame は古典的なPHP性のWebアプリだが、これはリクエスト時の待ち時間が長くてマイクロインタラクションがイマイチ。しかもリロードなどの遷移時にも都度都度リクエストが走るので遅い。
これをJSベースのSPAに改修したい。
なるべくWikipediaサーバーの負荷も軽くしたい。
REST API
昔の Action API の代わりに REST API を使いたい。
二分探索
アルゴリズムの諸要素をREST APIのアクションに対応付けてみる
リビジョン総数
Get page history counts
cf.
中央値計算
挙動がカーソルベースなので、件数では取れないようだ?
古い Action API なら取れる
rvlimit
ついでに本文もついてくる(やっぱり負荷が心配…)
content
追加・削除判定
-
diff.type
- 1 = 追加
- 2 = 削除
- 3 = 段落内変更。
diff.highlightRanges
参照
-
diff.highlightRanges
-
type
- 0 = 追加
- 1 = 削除
-
履歴取得
20件ずつしか取れないので、何度もリクエストする必要がある。まずはこれで revision の配列を作る必要がある。
revision object は要約しか持ってない。
ページのソースはリビジョンで取れないようだ
代替アルゴリズム
Action API で revision を 500 件ずつ取るのは、相応に負荷が掛かりそうだが、大丈夫だろうか?:
ここはあくまでも REST API に留まって、線形探索にするか?
ただし、20件単位のバッチ処理はする:
テーブル構造
DBに与える負荷を予想したい
ログインするとコメントできます