Naoki Kurosawa
naoki_kuros****@ybb*****
2003年 4月 8日 (火) 15:59:31 JST
黒澤です。 デッドロック問題解決のためにユーザ一覧とユーザ詳細を変更しました。 テストサイトには反映済みですので、まずはご覧ください。 ■ユーザ詳細ページの変更内容 ○スキーマ変更 robot_achivementsテーブルを追加しました。 各ロボットの各リーグにおける最新の成績を保持します。 1つのロボットが複数リーグに存在している場合、 robot_achivementsテーブルにはリーグ数分行が存在します。 含まれるデータは、 主キー:リーグID、ロボットID データ:最新シーズン番号、ユーザID、ランク、前シーズンのランク ○robot_achivementsテーブルのメンテナンス 各シーズン終了時にSummarizer(新設)が呼ばれます。 こいつが、そのシーズンの結果をrobot_achivementsにコピーします。 ○ユーザ詳細ページの表示方法 ・UserManager#getUser ユーザ情報取り出し ・RobotManager#getRobotSummary robot_achivementsからのデータ取り出しとソート ・LeagueManager#getSeasonResultByRank 代表ロボットの最新対戦結果を取得 を行って表示を行います。 ここは暫定で処理方法を変えてしまったところです。 代表ロボットの決定方法を各ロボットの各リーグにおける順位の「平均」 を出し、その値が最も小さいものを代表ロボットとするように してしまいました。 ソートしたあとに代表ロボットを決定するようにしてしまったことによる んですが、いかがでしょうか。 #もとの代表ロボット決定アルゴリズムだと、ソートキーによって #代表ロボットが変わってしまうようになってしまったので。 また、対戦結果が出ていない時点での代表ロボット選出機能を OFFにしてしまっていますが、こちらもご意見お願いします。 ■ユーザ一覧ページの変更 ○スキーマ変更 user_achivementsテーブルを追加しました。 robot_achivementsに載っているロボットから ユーザごとに代表ロボットを選出し、そのユーザの最高記録ということで、 user_achivementsテーブルに1ユーザ1行という形で保存しています。 usersテーブルにrobotsフィールドを追加しました。 そのユーザのロボット数をカウントしています。 バージョンアップしても1つのロボットは1つとカウントされる… ようになってたかな? ○user_achivementsテーブルのメンテナンス 上記と同じくSummarizerが処理します。 robot_achivementsを処理した後、各ユーザの代表ロボットを 「平均」アルゴリズムで算出します。 ○ユーザ一覧ページの表示 ・UserManager#getUsersWithBestRobot ユーザ一覧とuser_achivementsを結合・ソートして返します。 その結果を用いてページを表示します。 -- Naoki Kurosawa <naoki_kuros****@ybb*****>