Home > Archives > 2008年3月 Archive

2008年3月 Archive

データ不正

  • 2008年3月31日 23:36
  • AgeSrv

AgeCommunityから取得したデータがバグっている影響で
agesrv上でも時刻の表示が未来になる場合があります。

そのような場合、下記のSQLを実行し、
明らかに変な未来日データを削除してください。
(XMLデータを取得した際に、未来日のデータは破棄する様に修正する予定)

delete from tbl_recent where id in (
          select id from tbl_game where ts > CURRENT_TIMESTAMP);
delete from tbl_game where ts > CURRENT_TIMESTAMP;

インデックス効かせてないので非常に重いです
だったらinじゃなくexists使えよ、とか言わないでください
(まぁOracleじゃないし・・・?)

変なデータの例(一定期間経過後に修正されてるかも?):
http://www.agecommunity.com/query/games.aspx?gameid=533b0fca-2f55-4df3-82af-c90ba9f51c5c&g=age3y

tsの値が'2008-04-05T10:33:52Z'

ver0.1.1

  • 2008年3月29日 09:47
  • AgeSrv

とりあえず、こちらでは想定通りの動作をできました。

$ rrdtool fetch matsujun_SP_age3y.rrd AVERAGE -s-12hour
                        rateH2H         rateOverall            rateTeam              ratePR

1206709200: nan nan nan nan 1206712800: nan nan nan nan 1206716400: nan nan nan nan 1206720000: 1.8582400000e+03 2.0829400000e+03 1.9175700000e+03 3.5550000000e+01 1206723600: 1.8582400000e+03 2.0913647500e+03 1.9261441250e+03 3.5550000000e+01 1206727200: 1.8582400000e+03 2.0863255000e+03 1.9209164500e+03 3.5550000000e+01 1206730800: 1.8582400000e+03 2.0863000000e+03 1.9208900000e+03 3.5550000000e+01 1206734400: 1.8582400000e+03 2.0863000000e+03 1.9208900000e+03 3.5550000000e+01 1206738000: 1.8582400000e+03 2.0863000000e+03 1.9208900000e+03 3.5550000000e+01 1206741600: 1.8582400000e+03 2.0863000000e+03 1.9208900000e+03 3.5550000000e+01 1206745200: 1.8582400000e+03 2.0863000000e+03 1.9208900000e+03 3.5550000000e+01 1206748800: nan nan nan nan 1206752400: nan nan nan nan

http://fyuji.fam.cx/agesrv/rrd/matsujun1.png
http://fyuji.fam.cx/agesrv/rrd/matsujun2.png

修正後の資産をver0.1.1として公開しています。
http://fyuji.fam.cx/archive/AgeServer-0.1.1.tar.gz

今まで通り、

./configure; make; make install 

を行うと既存の設定まで上書くので、

$ ./configure --prefix=/usr/local/AgeServer-0.1.1
$ make
$ su -
# make install

としてインストール先を指定してもらえますか?(パスは例です)
その後、AgeServer-0.1.1から元のディレクトリへ差分を反映するという形か、
/usr/local/AgeServer-0.1.1 を正としてindex.php、agesrv.rc、cron実行時のパスを修正するか。
(後者の場合は「chmod +x /usr/local/AgeServer-0.1.1/etc/agesrv-crawler」も)


なお、ver0.1.0から変更している資産は下記のみです(コメントのみの修正は除きます)
・bin/agesrv
・etc/ageserver.conf (RRD_RRAOPTの初期値を変更)
・etc/agesrv.rc (rrdtoolコマンドのパスを指定する設定を追加)
・etc/agesrv-crawler (agesrvの呼び出し部分を有効に)

チャートが表示されない件

  • 2008年3月28日 22:53
  • AgeSrv

先に結論から書くと、Agesrv本体のバグです。
現在改修後試験運用中です。

パッチがくると思って大急ぎでリリースしたものの
全然バグ取りが出来ていないというオチ


バグ調査時のログ等は↓

Continue reading

AgeSrv 0.1.0

  • 2008年3月24日 22:59
  • AgeSrv

AgeSrvのver0.1.0です。
こちらからダウンロードできます。

インストール手順はインストール手順(v0.1.0版)を参照してください。

# 実はまだこのインストール手順に沿って確認してなかったり・・・駄目じゃん

確認終わりました。
# が、records.sql からのレコードImport時によく判らないエラーが…
# ロシア語だか韓国語だかが文字化けを起こしているような気がする。
# よく判らないので放置で(汗

インストール手順(v0.1.0版)

  • 2008年3月24日 22:28
  • AgeSrv

前版に続き、詳しい説明は省きます。
なお、パッケージ管理に apt を使用していますが、
もちろん yum でも aptitude でも構いません。

Continue reading

RRDtoolわかんねー的メモ

まずは 3600秒(1時間)毎に4種のレートを格納するリポジトリを作成するわけだ
(半日毎の平均にまとめて格納。12回のうち半分は取得失敗しても許容する)

$ rrdtool create playerA_SP_age3y.rrd --step=3600\
      DS:rateH2H:GAUGE:7200:1000:3000 \
      DS:rateOverall:GAUGE:7200:1000:3000 \
      DS:rateTeam:GAUGE:7200:1000:3000 \
      DS:ratePR:GAUGE:7200:0:50 \
      RRA:AVERAGE:0.5:12:2000

次に、
現在(`date +%s`の結果が '1205846000' と仮定)から1時間置きに24回レートを更新したと仮定するわけだ

$ rrdtool update playerA_SP_age3y.rrd 1205846000:1700:1800:1900:25.0
$ rrdtool update playerA_SP_age3y.rrd 1205849600:1710:1810:1910:25.1
$ rrdtool update playerA_SP_age3y.rrd 1205853200:1720:1820:1920:25.2
$ rrdtool update playerA_SP_age3y.rrd 1205856800:1730:1830:1930:25.3
$ rrdtool update playerA_SP_age3y.rrd 1205860400:1740:1840:1940:25.4
$ rrdtool update playerA_SP_age3y.rrd 1205864000:1750:1850:1950:25.5
$ rrdtool update playerA_SP_age3y.rrd 1205867600:1760:1860:1960:25.6
$ rrdtool update playerA_SP_age3y.rrd 1205871200:1770:1870:1970:25.7
$ rrdtool update playerA_SP_age3y.rrd 1205874800:1780:1880:1980:25.8
$ rrdtool update playerA_SP_age3y.rrd 1205878400:1790:1890:1990:25.9
$ rrdtool update playerA_SP_age3y.rrd 1205882000:1800:1900:2000:26.0
$ rrdtool update playerA_SP_age3y.rrd 1205885600:1810:1910:2010:26.1
$ rrdtool update playerA_SP_age3y.rrd 1205889200:1820:1920:2020:26.2
$ rrdtool update playerA_SP_age3y.rrd 1205892800:1830:1930:2030:26.3
$ rrdtool update playerA_SP_age3y.rrd 1205896400:1840:1940:2040:26.4
$ rrdtool update playerA_SP_age3y.rrd 1205900000:1850:1950:2050:26.5
$ rrdtool update playerA_SP_age3y.rrd 1205903600:1860:1960:2060:26.6
$ rrdtool update playerA_SP_age3y.rrd 1205907200:1870:1970:2070:26.7
$ rrdtool update playerA_SP_age3y.rrd 1205910800:1880:1980:2080:26.8
$ rrdtool update playerA_SP_age3y.rrd 1205914400:1890:1990:2090:26.9
$ rrdtool update playerA_SP_age3y.rrd 1205918000:1900:2000:2100:27.0
$ rrdtool update playerA_SP_age3y.rrd 1205921600:1910:2010:2110:27.1
$ rrdtool update playerA_SP_age3y.rrd 1205925200:1920:2020:2120:27.2
$ rrdtool update playerA_SP_age3y.rrd 1205928800:1930:2030:2130:27.3

最後にグラフを作成するわけだ

$ rrdtool graph chart1.png --start=1205846000 --end=1205928800 \
      --title "playerA AoE3 TAD : SP" \
      DEF:H2H=playerA_SP_age3y.rrd:rateH2H:AVERAGE LINE1:H2H#CC0000:"1vs1" \
      DEF:Team=playerA_SP_age3y.rrd:rateTeam:AVERAGE LINE1:Team#00CC00:"Team" \
      DEF:Overall=playerA_SP_age3y.rrd:rateOverall:AVERAGE LINE1:Overall#333333:"Overall"
$ rrdtool graph chart2.png --start=1205846000 --end=1205928800 \
      --title "playerA AoE3 TAD : SP" \
      DEF:PR=playerA_SP_age3y.rrd:ratePR:AVERAGE LINE1:PR#0000CC:"PowerRating"

今までずっと中身が空で生成されていたのに(原因不明)
これ書くために再度試したら問題なく生成されてる ( ゚Д゚)
updateの時刻指定でも間違ってたんだろうか…まあいいか

画像を拡大して表示する


画像を拡大して表示する


結論:
RRDtoolの使い方はなんとなく判りました。
パッチまでに間に合いそうな予感!!

残タスク

  • 2008年3月12日 01:58
  • AgeSrv
  • 自動クロールによる自動最新化
    →外部ファイルに取得するプレイヤー名を列挙し、シェルスクリプト(bash)で読み込んで プレイヤー分ループしながらagesrvを実行する
  • レートのグラフ化
    上記の最新化を行う際に、RRDファイルに反映する。
    案1)agesrvのバッチモードの標準出力でrrdtool updateコマンドを出力し実行
    案2)perlでagesrvのDBにアクセスしてレートを取得し、perlのRRDsモジュールを用いてRRDファイルに反映
    →案2のほうが良さそうだがperl判らんしなぁ
  • URL等の定数を1箇所で管理する
    →定数クラス等を作るか、基底クラスで定義させるか

新verのβ2

  • 2008年3月 6日 02:48
  • AgeSrv

チーム分けを実装しました。
http://fyuji.fam.cx/agesrv/
上記URLのリンク集最下段の「チーム分け」にて行えます。
※またもFirefoxで動作しない。。。



なお、現在のチーム分けの判定基準は、
各チームのレートの合計値の差が最も小さくなる組み合わせになります。

Index of all entries

Home > Archives > 2008年3月 Archive

Search
iKnow!バッジ


Feeds

Return to page top