Home > AoE3 > AgeSrv Archive

AgeSrv Archive

AzaraC

今更だけど気になる記事を発見。(2006年年10月の記事)

■WebアプリをC++で開発するためのテンプレート・エンジンをオープンソースとして公開
http://itpro.nikkeibp.co.jp/article/NEWS/20061013/250667/

CGI++(これもC++でWebアプリを作るフレームワーク)とは違って、
メインとなるロジックと表示ロジックを分割することが出来る優れもの。
まぁ、要はJavaのServlet+JSPみたいなものですが。
但し、セッション管理はないみたいです。phpでも挟んで管理させれば問題ないですが。

ちなみに、agesrvは一度xmlで出力して、それをXSLTを用いてHTMLに変換するという二度手間作業でやってます。
せっかくC++で開発したのに変換で時間が掛かっていて本末転倒な状態。
主ロジックと表示ロジックを混同させたくはなかったので仕方ないんです。

JavaはWeb開発用の色々なフレームワークが存在していて開発が楽なのだけど
JavaはTomcatとかの導入がメンドクサイので嫌。
導入が楽なのはPerlやPHPだけど、あれは言語仕様が気に入らない。。。

AzaraCを使用するように直してみるかなー

AgeSrv 0.1.2

  • 2008年4月18日 23:12
  • AgeSrv

大分遅れましたが、修正版のリリースです。
http://fyuji.fam.cx/archive/AgeServer-0.1.2.tar.gz

設定ファイル(ageserver.conf)に新しい項目(IGNORE_FUTURE_GAME)を追加しました。
この項目を有効にすることにより、未来日時のゲームを無視するようになります。

また、rrdtoolにてグラフを作成する際に、ラベル部の日本語が化けて表示される問題の対応として
agesrv.rc 内のRRDCMDを 「rrdtool」 から 「"LANG=C rrdtool"」 に変更しています。
※rrdtoolで日本語を利用する場合は、別途パッチ(もしくは日本語対応版のバイナリ)が必要
 参照:RRDTOOL日本語化 - http://www.bigfield.com/~hiroshi/rrdtoolja.html


■2008/4/22 追記

Linux環境下、およびGCC4.1以降でコンパイルエラーが発生していたため、ソースを差し替えました。

なお、ver0.1.2から機能の変更はありません。

データ不正

  • 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で動作しない。。。



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

新verのβ

  • 2008年2月26日 23:20
  • AgeSrv

基本機能の実装終わったので試験的に公開してみます。
http://fyuji.fam.cx/agesrv/

ほとんどテストしていないのでバグがボロボロ出るかも

Continue reading

しょーもないチラ裏

  • 2008年2月13日 22:38
  • AgeSrv

agesrvですが、共通的なクラスを除いて一から再構築中です。
今までのスパゲティ的なロジックが消え、非常にスッキリしました。
とはいえほぼ始めからやり直しなので次verの公開がまた随分遠くなるような...
後戻りしすぎだろjk

agesrvとは全く関係ないですが、ITILファウンデーション合格しました。
英語を無理やり日本語に訳したかのような問題が多く、意図を読み取るのが大変。
でも問題自体はさほど難しくない感じ。時間もかなり余る。
学生でこの資格を持ってると就職に有利になる気がするなー

■2008/2/21 追記
・開発ドキュメントを更新しました。(容量の都合で別サーバに移動)
  モジュール間の結合を弱めるよう意識して、役割毎にクラスを分離。
  その結果処理が若干遅くなってしまったような?
  とはいえそれは仕方ない・・・

新ドキュメント(資産はまだ未公開)
http://fyuji.fam.cx/agedoc/

旧ドキュメント
http://fyuji.fam.cx/agedoc_old/

今更?

  • 2008年1月21日 21:04
  • AgeSrv

今まではLinux環境でコンパイル&実行して開発していましたが
Windows上(Cygwin)でもコンパイル&実行ができるようになりました。
# あとで手順書作って残しておこうかな

が、Windows上で実行すると、何らかの原因で標準出力かログファイルでデッドロックが発生している様子。
(2割くらいの確率で正常に動作。残りはNG)

Linuxでは問題ないからまあいいか

設計が悪いとあとに響く

積み重なる修正でソースがもうスパゲティ状態。
まだまだ一部の機能しか実装できてないのにもう詰んだ…(チョットマテ

C/C++の勉強しながら進めていたので、あっちは構造体、こっちではクラスと統一性はないし
ひとつの関数内でデータの取得から加工まで一気にやろうとして5重ネストなんて箇所もあるし
無駄にインスタンス化してたり、共通化に失敗した類似関数がいくつもあったり…etc
悪い点を上げるときりがない。

このまま進めてもストレス溜まって発狂してしまいそうなので(嘘)
しっかりと設計しなおして再チャレンジしようかと考え中。

少なくともオブジェクト指向の概念に沿った作りにすべきで(ry
(始めはCで作ろうとしていたので、関数+構造体がメインだった)

一部のデータが表示されない件について

  • 2008年1月 4日 23:52
  • AgeSrv

帰省してました。

agesrvはプレイヤー情報を取得した際にのみagecomunityから過去のゲーム情報を取得しています。
また、agecomunityは定期的(1週間くらい?)に過去のゲーム情報を削除しているため、
agesrvで最後に表示したタイミングから、agecomunity側でゲーム情報が削除されるまでの間にゲームがプレイされていた場合
agesrv側ではゲーム情報が取得されていないため、歯抜けの状態になってしまいます。
(eloratingは定期的にデータを取得して漏れをなくしているのではないでしょうか)


例)
1/1 ゲームプレイ。その後agesrvでデータを表示
… 内部で1/1以前のデータを取得している
1/2 ゲームプレイ。
1/3 agecomunityでデータ削除が実施。
1/4 ゲームプレイ。その後agesrvでデータを表示するが、1/2のデータが表示されない。
… 内部で1/4以前のデータを取得しているが、agecomunityの1/3以前のデータは削除されているため取得不可。


データ取得~反映を行うバッチを作成して定期的に起動させれば問題ないのですが、
バッチとagesrvの資産の共有ライブラリ化とか色々考えていると面倒になって放置中です。


なお、上記の件以外にユーザー情報の対戦成績の数が合わないバグがありますが、次バージョンで改修済みです。
他にいくつかバグを修正していますが、チーム分け機能が実装途中だったりするため、まだ未公開です。

余談ですが、SPAMフィルタの設定を厳しくすぎていたため、
matsujunさんの2008-01-04 (金) 13:55 のコメントがSPAM判定されて見えなくなっていました。

AgeSrv修正

  • 2007年12月22日 14:47
  • AgeSrv

Apacheだと動かせない件についてですが、
方式を若干変更することによりApacheでも問題なく動かせることを確認しました。

また、インストール方法についてですが
./configure;make;make install に対応させました。
が、htmlファイルの配備等は手動のままです。

インストール手順書についても
今回のアプリ改修にあわせて修正しています。

ダウンロード

とりあえずソース公開

  • 2007年12月16日 15:16
  • AgeSrv

ソース公開しました。(不完全版)

ダウンロード、およびインストールする方法については、
こちらの記事を参照してください。
(src.rpm作ろうと思いましたが、autoconfやautomakeの段階でコケた)

走り書きなので説明不足な点が多々あると思われます。
その場合はコメント等で連絡して貰えれば、何らかの回答は出せるかも・・・?
(知識不足なためあまり期待しないでください)

なお、lighttpdでは動作しますが、
apacheだと正常にリクエスト内容を受け取れず、画面遷移できないというバグが潜んでいます。
結構前から調査中ですが正直わからない。。。

インストール手順

  • 2007年12月16日 14:30
  • AgeSrv

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

Continue reading

バグ修正

  • 2007年11月28日 02:13
  • AgeSrv

内部的な方式の統一化の際に発生した致命的なバグを修正しました。
やっとレートの表示が正常に行えます。
一部のプレイヤーのデータの表示時にエラーが発生していた件も解決です。

なお、無印やTWCのデータを表示しようとした際に
チームメイトや対戦相手のレートが表示されない場合が多々ありますが
これは仕様です。

C++ムズカシ

各ブラウザの対応状況

  • 2007年11月18日 21:00
  • AgeSrv

下記の内容について、各ブラウザで検証してみました。
・日本語名のプレイヤー検索
・日本語名のプレイヤーのリンククリック
・アドレス欄に日本語名を指定
・背景の画像表示
・初期ページでのフッターの位置

■ Internet Explorer 6
×アドレス欄に日本語入れるとXMLエラー
△フッターの位置がおかしい

■ Internet Explorer 7
×アドレス欄に日本語入れるとXMLエラー

■ Firefox
△アドレス欄に日本語入れると???に変換される(該当なしエラー)
△背景が表示されない

■ Opera
・入力欄の縦幅が狭い気がする

■ Sleipnir(IE6エンジン)
×アドレス欄に日本語入れるとXMLエラー
△フッターの位置がおかしい

■ Sleipnir(Geckoエンジン)
△アドレス欄に日本語入れると???に変換される(該当なしエラー)
△背景が表示されない

■ Lunascape(IE6エンジン)
×アドレス欄に日本語入れるとXMLエラー
△フッターの位置がおかしい

■ Lunascape(Geckoエンジン)
△背景が表示されない


総合的にはOperaに軍配が挙がってます。
その次はLunascapeのGeckoエンジン版。

でもOperaもLunascapeも使ってないしー

サンプル修正

  • 2007年11月14日 00:09
  • AgeSrv

サンプル(というかテスト版)の以下のバグを修正しました。
・ソート順不正
・TAD選択時にAgeCommunityのゲーム詳細に遷移できない

また、要望として挙がっていたJST表記の件対応しました。
(実際のデータに+9時間して表示しています)
ちなみに、元々はUTC(+0)表記だったみたいですね。
UTC-6ってのは勘違いでした。

あと、試してみる?
へのコメントについては、とりあえずクローズとさせて頂きます。
バグや要望などはこちら記事にコメントして頂けるようお願いします。

#まだまだ大きな問題点がいくつも・・・
#・他のサーバーにインストールしても動かない(調査中)
#・クラン情報実装中(めんどくさくなって中断。全体的に修正が必要)
#・チーム分け未実装(やろうと思えばやれる)

追記:
戦跡テーブルの一部のデータが歯抜けになってます。
特に気にする必要はありませんが周知だけ。

開発日記2

  • 2007年11月11日 22:15
  • AgeSrv

11がつ11にち 雨

わからんわからん。
別のサーバーにAgesrvインストールして試してたみたものの
Agesrv本体にリクエスト時のパラメータが渡ってていない。
試してみる?の記事で公開しているサーバーと同じソースコードなのに
なぜに動作が違うんだろう
Apacheやらphpの設定の違い?(それしか考えようがない)

ちなみにパラメータを移す際の処理は以下の通り

  1. Apacheがリクエストを受け付け、phpの空きプロセスにディスパッチ。

  2. index.phpが呼び出され、その中でagesrv本体を呼び出す(passthru)

  3. agesrvは標準入力で渡ってきた文字列を解析し、パラメータを取得。

1と2は問題なし。3で受け取れていない模様。
apacheだかphpの設定で標準入力を使わないような設定になっているんだろうか
getenv()を使ってApacheプロセスの環境変数経由だと受け取れそうな気がする
あとで試してみよう。

雨も降ってるせいで土日共に引きこもり。はあぁぁ


追記(11/12)
日曜はろくに飲み食いしてなかったせいで、11/12の通勤中に貧血or脱水症状を起こした。
いきなり倒れたら周りの人迷惑だなぁ。電車止まるし。なんてことを考えながら
気を失う前に電車から脱出してベンチへGO。だいぶ視界失われてた(汗

やっぱ食事は大事。当たり前だけど。

試してみる?

  • 2007年11月10日 19:19
  • AgeSrv

サンプルその2。
http://fyuji.fam.cx/test/

今度は動きます。
バグ報告とかはこの記事にコメントしてもらえれば助かります。
# クラン情報はバグってます。というか実装途中。使わないでください。。。

なお、テスト機は非常にスペック低いのでかなり遅いです。
CPU: 400MHz、メモリ:128MB
# アンカー連打したら(鯖自体が)落ちるかもしれません。
# さすがにそれは自重でお願いします。。。


追記:
testディレクトリ(シンボリックリンク)を作り変えようとしてsamba上で削除実行したら
リンク元のファイルまで削除されてしまった。。。
入っていたファイルはWEB公開用ファイルなので、ブラウザ側のキャッシュから復元すれば事足りる
でもphp等のダウンロードされないファイルはどうしようかね?

追記:
phpは他のサーバーにあった資産から復旧。
おそらく復旧完了。所要時間は1時間ぐらい。
まぁ時間もそれ程掛からずほぼ完全に復旧できたとはいえ
WEB資産もリポジトリ管理しとこう。いい勉強になった(完)

開発日記

  • 2007年11月10日 16:02
  • AgeSrv

11がつ10にち 雨

クロスサイトスクリプティングについて全然考慮出来てないことに気付いた。
</html>で検索すると画面が表示されないって
どんだけ脆弱なシステムなんだ!!!!
「' or not xxx = '」とかのSQL埋め込みにも対応できてないし。

ついでに通信周りも全面書き直し。
元々はCで書かれたソースをC++に無理やり適応させただけだったので
ソケット周りだけソースが気持ち悪いことに。
しかもスレッドセーフにするために無理やり直した感が強い
まぁ動作上は問題ないんだけど。

そんなこんなやってたせいで進捗全然進んでねぇ・・・

途中経過 その2

  • 2007年11月 4日 18:00
  • AgeSrv

たいぶ完成に近づいてきました。

■ プレイヤー情報の取得&キャッシュ処理ほぼ完成
■ レート情報の取得&キャッシュ処理ほぼ完成
■ 戦跡情報の取得&キャッシュ処理ほぼ完成
■ クラン情報の取得&キャッシュ処理10%
■ チーム分け機能0%
■ お気に入りリスト機能0%

ついでにデモ画面(と言ってもHTMLで保存して名前置換しただけだが)を作成しました。
デモ画面

まだまだ長い

開発規約

とりあえず規約みたいなものを作ってみました。
と言ってもまだまだ微量ですが。
しかも依然としてソースコードの公開には至っていないので
基本的には自分用のメモです。

命名規約
・変数名は用途が判ればOK。できれば variableName の形式にする。
・クラス名は ClassName の形式にする。
・C++用の関数(というよりメンバ関数)は MemberFuncName の形式にする。
・Cでも利用可能な関数(単なる関数)は func_name の形式にする。
文字列の扱いについて
・可能な限り AString ( std::stringを拡張したクラス。const char* との互換性を強化) を利用
・一時変数なら std::string でも良し。
・関数に文字列を渡す場合は、引数の型は char* または const char* にする。

あとドキュメントも作ってみました。
口ばかりで実は作ってないんじゃないのか!?と思われるのも嫌なので・・・
ドキュメントはこちら を参照

# MySQL++でバインド変数の使い方が判らない・・・

途中経過

  • 2007年10月15日 01:56
  • AgeSrv

先月の時点ではJavaで開発すると言っていましたが
結局C++で行くことにしました。
勉強にもなるし。

開発の進み具合についてですが、AgeSrvは下記のような処理を行う予定で

1.自前のデータベースよりデータを照会
2.戦跡やプレイヤー情報をAgeComunityから取得
3.データベース内に格納されているレート情報が古い場合、eloratingから取得
4.取得した情報をデータベースに反映
5.ブラウザに返却

今現在、データベースからデータを照会(1)し、ブラウザに表示する(5)ところまで完成しているので
進捗率には40%といった所です。
しかも、チーム分けの機能に関しては未着手なので、実際はもっと進んでいない感じが…
つか、初代AgeSrvのソースコードの量を既に超えちゃってるのに半分も出来てないとは!!

ちなみに、配布形態はソースオンリー(まぁGPL)になりそうです。
X86向けバイナリなら提供できなくもないですが、
i386とかi486とかi686とかそのあたりの違いは疎いので
下手にバイナリ提供するよりソースのみのほうが安全かなと。


アジア拡張版の体験版も公開されたというのに、まだまだ先は長い。。。
地道にゆっくりと進めることにします

開発再開?

  • 2007年9月 2日 20:52
  • AgeSrv

やっと今の案件が一段落ついたので開発を再開しようかと考えましたが
3ヶ月間のブランクを甘く見ちゃいけない
そもそもC++でWebアプリ作ろうとしていたのが間違い?
勉強しながら作ってましたが、もう完全に忘れちゃってます。

ということで仕事でもよく使うJava+JSPにしてしまおうかと。
XML+XSLTも止めてできるだけ単純な作りにしたい。

巷ではPHPやperlのソースをよく見かけますが
PHPもperlもC++ぐらいと同等の知識しかないから無理。

PHPやperlは設置や改修が楽とかよく聞きますが
PHPやperlのように誰でも簡単に設置して使うようなものじゃない
(例えるならCGIゲームのような感じ)と思ってますので、
設置や改修よりも性能を重視して選んで開発言語を選んでます。

ホントはC++が良かったんですが、
最近のJavaも大分性能がよろしくなったので
使い慣れたJavaに乗り換えてみます。

ただ、Tomcatのインストール等を行わなきゃいけないので
準備作業が面倒かもしれない・・・


てか久しぶりにelo見てみたら
Due to performance issues we disabled the XML interface.
If you are using this interface on your website, please make sure you cache the results appropriately.

うぉーぃ
AgeSrv(Win版のほう)が悪さしてるのかね?
次期AgeSrvだとDBにキャッシュ取ってeloの負荷下げるようにする(つもり)なので
早く開発に戻って完成させなくちゃ・・・

agesrv (on server ver.) 進捗

  • 2007年6月 2日 12:49
  • AgeSrv
一応現在の状況を報告
レイアウト周り:
70% まぁほとんどそのまま
xml取得~マージ:
10% 取得&解析のサンプル作った程度
xml->html変換:
0% agesrv(Win)のxslを流用する予定
インストーラとか:
0% むしろテキストによる説明のみに・・・?


ちなみに開発環境は下記の通り(前の記事の玄箱pro)
OS:

Debian GNU/Linux 4.0

Locale:

ja_JP.EUC-JP (システム全体)
ja_JP.UTF-8 (agesrv内ではこっちを使用)

コンパイラ:

gcc (GCC) 4.1.2 20061115 (prerelease)

ライブラリ:

mysqlclient
xerces-c

HTTPD:

lighttpd

DB:

mysql Ver 14.12 Distrib 5.0.32

アジア拡張の発売に間に合うかどうか

agesrvのこと

  • 2007年5月23日 01:20
  • AgeSrv


ソースが読めません


agesrvを改修しようとソースを眺めても処理フローが脳内にさっぱり浮かばない。
自前でキャッシュ検索用のインデックス作成したりなどちょい複雑な処理を加えたせいで
本当に自分で作ったのかが怪しくなるぐらい理解不能。

この際なので、クラサバ方式に変えてしまおうかと思ってます。
サーバ側でXMLの取得とマージを行い、クライアント側でXMLからHTMLへ変換。
負荷も分散されるし、XMLキャッシュの共有も出来て好都合。
ただし所有しているサーバがひ弱のため、多人数のアクセスで死亡する悪寒が。。。

ある程度形が出来たら、ソースやらバイナリ配布して
他の人にサーバ建ててもらうほうがいいかもしれない。
まぁ、また仕事が忙しくなって開発に時間が取れなくなったわけですが。・゜・(ノД`)・゜・。

今更ですが開発をお休みします

  • 2007年2月27日 01:18
  • AgeSrv

次バージョンの開発途中ではありますが、少しの間開発を休止します。。。

Continue reading

AgeSrv ver.0.011

  • 2007年1月15日 23:46
  • AgeSrv

前回のリリースからまもないですが、そこそこ重要そうなバグを修正しました。
・AgeSrv起動時にエラーが発生した場合、AgeSrvが終了できなくなるバグを修正
・端末名やLAN内の端末アドレスを指定してアクセスした場合にも自アクセスとして扱うよう修正
・ゲーム詳細が取得不可なゲームが戦跡に存在すると、エラー画面が表示されてしまう問題を修正
・elorating.comが落ちている場合には、AgeCommunityからPRのみを取得するよう修正

ファイルをダウンロード

# メモリリークしまくってます。ヘタレなJavaプログラマには限界(ry

AgeSrv ver.0.010

  • 2007年1月13日 12:56
  • AgeSrv

バグバグで取り上げたバグを修正しました。

ファイルをダウンロード

小ネタ

  • 2007年1月10日 01:21
  • AgeSrv

AgeSrvで取得した情報を、FireFoxやスレイプニル、Operaを使用して表示した場合
アドレスバーの先頭にaoe3のアイコンが表示されます。

ですが、IE7を使用した場合は通常のWebページアイコンが表示されてしまいます。
どうやらこれはIE7のバグなのか、http://localhost/~で指定した場合のみ
この事象が発生するようです。

なお、IE7を使用した場合でも、以下のアドレスの指定方法では正常にアイコンが表示されます。

http://127.0.0.1/
http://プライベートアドレス/
(ipconfigで確認可)
http://PC名/
(hostnameで確認可)

まぁFireFoxも使えるようになったし、IE7はどうでもいいんですがね。

バグバグ

  • 2007年1月 7日 23:32
  • AgeSrv

動作に影響するバグもたくさん見つかりました。
だめだこりゃ/^o^\フッジサーン

・cacheフォルダがないとエラーになるバグ
・相変わらずゴミファイルが残り続けるバグ
・外部ブラウザで選択したフォルダにlinks.xml等が出力されてしまうバグ
・設定画面でキャンセル押しても変更内容がそのまま維持されてしまうバグ

他にも色々。

AgeSrv ver.0.09

  • 2007年1月 6日 04:33
  • AgeSrv

久しぶりに更新しました。と言っても若干ですが…
・FireFoxで表示するとレイアウトが適用されないバグを修正しました。
・elorating.comに与える負荷を下げるよう修正しました。

なお、複数のアンカーリンクを連打した際の挙動がおかしくなっていますが仕様です。

ファイルをダウンロード

# 動作には影響しないバグがいくつも発見…
# /^o^\フッジサーン

AgeSrv ver.0.08

  • 2006年12月24日 22:53
  • AgeSrv

主にセキュリティ関連を修正しました。
・IPフィルタ機能の追加
・外部アクセス時の認証の追加
他、クイックリンクの簡易追加機能とタスクトレイアイコンの動作選択機能も追加しています。

ファイルをダウンロード

※クイックリンクの簡易追加機能はこんな感じです。
クイックリンクの簡易追加

AgeSrv ver.0.07

  • 2006年12月17日 18:41
  • AgeSrv

・不要ファイルが出力されるバグを修正しました。
(cacheフォルダ内の@で始まるファイルは不要ファイルです。)
・表示データが更新されないバグを修正しました。
・バグ調査用としてデバッグモードを追加しました。

ファイルをダウンロード

# eloratingが死んでばっかなのでこのツールが使用できない・・・
# 拡張の日本語版が発売された影響でeloratingへのアクセスが増えた?
# それともこのツールがeloratingへのアクセスを思いのほか増やしてる?
# 負荷はできるだけかけないように作ってるつもりなんだがなぁ

AgeSrv ver.0.06.1

  • 2006年12月16日 18:45
  • AgeSrv

いくつかバグありましたので現時点で潰せるものだけ潰してリリースです。
・URLに&を使うとリンクが全て消える問題を対応しました。&amp;と記述する必要もありません。
・クイックリンクで空行をダブルクリックするとエラーが起こる問題を対応しました。
・クイックリンクで最下行のリンクを下方向に移動するとエラーが起こる問題を対応しました。

ファイルをダウンロード

AgeSrv ver.0.06

  • 2006年12月16日 17:36
  • AgeSrv

リンクの修正機能とクイックリンク機能を追加しました。
・リンクの修正は設定画面のクイックリンクタブで行なえます。
・リンクの公開をpublicに設定すると外部からアクセスされた場合にも表示されますが、privateに設定すると自PCからのアクセス時のみ表示されます。
・クイックリンクの修正時にポップアップメニューに登録すると、タスクトレイのAgeSrvアイコンを右クリックした際に表示されるようになります。

ファイルをダウンロード

# ろくにテストしていません。恐らくバグバグです。

AgeSrv開発状況

  • 2006年12月15日 00:57
  • AgeSrv

リンク集の編集機能と、タクストレイのAgeSrvアイコン右クリック時のクイックリンク機能の開発を行なっています。
なお、リンクの内容に設定する値は以下の5つ。
・表示名
・URL
・ターゲット(_top/_blank など)
・リンク公開区分(public/private)
・メニュー表示区分(true/false)

XMLにて保存し、変換用XMLにマージする予定です。
ちなみに開発は全く進んでいません。

#ついに拡張の日本語版が発売ですか。
#ますますAgeSrvの開発が進まなさそうだ・・・

AgeSrv ver.0.05

  • 2006年12月 9日 23:40
  • AgeSrv

表示系を修正しました。
・ESOのログインユーザ数などの表示を追加しました。
・チャット欄へのコピペ用の出力を追加しました。
 ※コピペフォーマットに関しては適当です。

ファイルをダウンロード

※IE6使用時に表示不正を起こしていたため、修正後のファイルに差し替えています。

v0.04修正版

  • 2006年12月 9日 10:04
  • AgeSrv

チームのラダー選択が機能しなくなっていたのでファイルを差し替えました。

ファイルをダウンロード

# デグレっちゃうなんて悲しす

AgeSrv ver.0.04

  • 2006年12月 9日 01:18
  • AgeSrv

チーム関連を色々修正しました。
・2on2のレートはXMLでの取得が不可能なようなので、選択肢から排除しました。
・チーム分け支援機能にて拡張非移行のプレイヤーのみを指定した場合に、404エラーが発生する問題を修正しました。
・他、XSL関連で表示項目の追加や削除を行なっていますが省略します。

ファイルをダウンロード

AgeSrv ver.0.03

  • 2006年12月 6日 20:22
  • AgeSrv

チーム分けの支援機能を追加しました。
2on2(駄目っぽい)やOverall等のレートを利用したチーム分けにも対応しています。
他、日本語名プレイヤーやクランが表示できないバグの対応と
エラーメッセージの表示関連の修正をしています。

ファイルをダウンロード

# 会社の会議中に具合悪くなって午後半取って病院寄って帰宅。
# そして家に着いたらAgeSrvの改修。
# 俺って一体何がしたいんだろう・・・

AgeSrv ver.0.02

  • 2006年12月 3日 16:04
  • AgeSrv

elorating.comが落ちている場合でも、自身のレートや戦跡を表示できるように修正しました。

ファイルをダウンロード

初公開

  • 2006年12月 2日 02:31
  • AgeSrv

とりあえずAgeSrv ver.0.01を公開

XMLデータを取得してブラウザにて表示可能な形式(HTML)へ変換するソフトウェアです。
サーバーとして動作するので、外部への公開も可能です。

なお、XMLデータは以下のサイトから取得しています。
・agecommunity.com
・www.elorating.com

ファイルをダウンロード

Index of all entries

Home > AoE3 > AgeSrv Archive

Search
iKnow!バッジ


Feeds

Return to page top