2009年12月1日火曜日

Heroes of Newerth の統計情報を集めるサイトをつくってみた



ということで、作ってみました。

■そもそもHeroes of Newerthって何?
http://wikiwiki.jp/hon/
βキーが一つ余ってますので先着一名で差し上げます(コメントなりTwitter Dなりください><)


■何これ?
http://www.heroesofnewerth.com/heroes.phpあたりからデータを抜いてきて蓄積し、現在どのヒーローが一番使われているか、どのヒーローが一番勝率がいいか、等を一覧表示しています。

デフォルトのソート順序はUsage %(使用率)です。テーブルのヘッダをクリックするとソート順序を変更することができます。1回クリックで昇順、2回クリックで降順です(たぶん)。

データは1日1回アメリカ西海岸時間の朝9時半ぐらいに更新するようにしています。日本だと深夜1時ぐらいかな。朝起きたらちょうど良く変わっていると思います。

あ、あとspan機能はいま動きません。あのセレクトボックスを選択しても何も起きません。あしからず><


■で、どうするの?
Opheliaたんが余りにも使われていないのを見て嘆き悲しむといいと思います。


■今後
時系列での変化を見られるようにしたいですね。パッチが当たってScout使用率減って涙目とか、Maliken先生勝率アップとか見てみたいです。

Processingはじめました


こんにちは。いろいろ始めすぎて終わってるakisuteです。
今更ですが、積ん読していたビジュアライジング・データを読み始めたので、Processingに手を出してみました。

4873113784ビジュアライジング・データ ―Processingによる情報視覚化手法
増井 俊之 (監訳)
オライリージャパン 2008-12-01

by G-Tools


楽です。とにかく楽です。文法は慣れ親しんでいるJavaですし、グラフィックを描画する以外の一切余計な機能がありません。そして、グラフィックを描画するために必要な機能は一通りあります。まさに、どうやってコンピュータにグラフィックを書かせるか、どうやってアニメーションさせるかを学ぶのに最適の環境じゃないでしょうか、これ。

たとえばこんな感じの弾幕が、


たったのこれだけのソースで動きます。すばらしい。
http://gist.github.com/246029

Processingももちろん素晴らしいですが、ビジュアライジング・データの内容そのものも素晴らしいです!

Google App Engine SDK の dev_appserver.py が自動的に index.yaml を更新してくれない時の対処法

ときどきGoogle App Engine SDKのdev_appserver.pyが自動的にindex.yamlを更新してくれない時があるので、原因を調べてみました。


■いきなりネタバレ
犯人は改行文字


■前提条件
index.yamlは、以下の様な作りになっています。
indexes:

- kind: django_admin_log #手動で定義したインデックス
properties:
- name: content_type
- name: object_id
- name: action_time

# AUTOGENERATED

# This index.yaml is automatically updated whenever the dev_appserver
# detects that a new type of query is run. If you want to manage the
# index.yaml file manually, remove the above marker line (the line
# saying "# AUTOGENERATED"). If you want to manage some indexes
# manually, move them above the marker line. The index.yaml file is
# automatically uploaded to the admin console when you next deploy
# your application using appcfg.py.

- kind: hon_herostatistics #ここから下は、自動的にdev_appserver.pyが追加してくれるindex
properties:
- name: fetchCompleted
- name: hid
- name: datetimeCreate
direction: desc
このように、# AUTOGENERATEDコメントが存在すれば、その下に自動的に必要なindexを生成してくれるようになっているのですが、時々この自動生成がうまくいかない場合があります。


■症状
具体的には、以下のように余計な物をすべて消した状態のindex.yamlを用意しても、dev_appserver.pyが「indexが手動定義されているので、自動生成しないよ」とエラーを吐きます。
indexes:

# AUTOGENERATED
困りました。


■原因と対処
そこでよくよく調べてみるためにvimではないエディタでこのindex.yamlを開いてみたのですが、すると末尾の改行文字がCRLF(dos形式)になっていました。そこで私のMacの環境に合わせて改行文字をLF(unix形式)にしてみたところ、無事にdev_appserver.pyのindex自動生成が動作するようになりました。vimで操作するなら、
:set fileformat=unix
とすればよいです。