Naoki Kurosawa
naoki_kuros****@ybb*****
2003年 2月 13日 (木) 00:54:30 JST
黒澤です。 #すいません。このメール結構前に書いたんですが、 #送り忘れてました。 L> 下記のその1〜4を作るためには、 L> もう一つWebの構成も考えないとだめですね。 L> 現状では、 L> ・トップ(各リーグの3位まで)->各リーグの全順位(最新シーズン) L> ・ユーザ一覧->ユーザ詳細 L> これを、 L> ・トップ->(シーズン指定)->Division詳細->(ロボット指定)->Division対戦結果詳細 これは、こんな感じでしょうね。 ■シーズンの結果表示 シーズンの結果が全部一気に出るのがいいのか、 それともDivision毎に出るのがいいのかは、 台数によりますね。 システム負荷的にはどちらでもたいしたことないので、純粋に見易さで。 HTMLがでかくなるとネットワーク的に厳しくなるかな? 表示内容は現状TotalScoreまでしか出ませんが、 TotalScoreからSurvival3rdsまで表示しちゃえばいいですよね。 全順位表示のときには出ないほうがいいですか? L> ・ユーザ一覧->ユーザ詳細->ロボット詳細(ver履歴)->過去対戦成績詳細(ver別) L> と言う感じでしょうか。 ロボット詳細(ver履歴)まではいいんですけど、 過去対戦成績詳細(ver別)というのが、提案したもののどういう画面になるのか イメージ湧いてません。すいません。 あと、ユーザ詳細で一番よく見るのは自分のでしょうから、 トップから一気に自分のユーザ詳細に飛べるといいですね。 L> > その1 L> > まずは、シーズン指定で結果ページに飛んでいけるように^^; L> L> LeagueとSeasonを指定ですから、 L> これは今のもので変更するのは、jsp内部だけで出来そうですね。 ええ。これはもともとそうやるつもりでバックエンドとのインターフェースを 作りましたから。 手が回らなかったので、現状のようになってます。 L> > その2 L> > 順位表示はDivisionごとでしたよね。 L> > で、自分がどのDivisionにいるのかを見るのに L> > ドロップダウンリストボックスで自分のロボットを選んだわけですが、 L> > その選択状態を覚えておいてくれるとうれしいですね。 L> > Cookieで保存することにしませんか? L> > それか、ジャパンカップでは選択したロボットがハイライトされましたが、 L> > ログイン状態で対戦結果を表示するとそれとは別に自分のロボットが常に L> > ハイライトされているとか。 L> L> LeagueManagerBeanかSeasonManagerBeanに、 L> LeagueとSeasonとDivision指定でDivisionResultのようなものが L> とれるといいのかな。 L> SeasonResultからdivisionId指定で L> SeasonRobot[]が取り出せてもいいのかな。 シーズン結果表示が一気に全ロボット表示される、 現状のような表示ならば、ドロップダウンリストの選択状態保存は要りませんね。 自分のロボットがハイライトされるようにするには、 Sessionに自分のロボットのrobot_idの一覧が保持されればいいですね。 L> 今JSPをいじっててよくわからないことが、 L> リンク時に引数を2つ以上わたすときと、現在使っているオブジェクトを L> 引数に渡したい場合です。 L> 同じデータをSQLで検索して取り出すのはもったいないなぁと L> 思うのですがどうすればいいのか??です。 リンク時に引数を渡す、というのは、 <a href="actions/GetSeasonResult.do?league_id=x&season=x>...</a> というのをどうやるかですね? Strutsのhtml:linkタグは引数一個 or Mapに全引数を入れておいて渡す のどちらかなので、面倒です。 JSPにJavaコードを書くか、FORMにするのが一番手っ取り早いです。 Javaコードを書く場合はURLEncoderを使ってHTMLエスケープしないと クロスサイトスクリプティング脆弱性の元になるので、 気をつけないといけません。 本当は、 <html:link action="..."> なにそれはこちら <html:parameter paramName="league_id" paramValue="1"/> <html:parameter name="getUserDetailForm" property="userId"/> </html:link> なんていう風にできるといいんですけどね。 こういうタグライブラリ作りましょうか。 現在使っているオブジェクトデータをリンクやFORMに全部入れる 必要はないと思います。 検索で取れるデータは毎回検索しちゃって、 検索にかかるコストを下げたほうが問題がおきなくていいです。 ということで、トップページ(現在毎回進捗状況を集計)なんかは、 実際に検索するのは何分かに1回とかいう風に(つまりキャッシュ) しようと思っています。 厳密に言うと、トップページに表示される進捗状況はleaguesテーブルや seasonsテーブルに集計結果が書かれている (battle_count,completed_battlesなど) んですが、分散サーバによる対戦結果アップロード時に更新がかかり、 その間はその行に対するロックがかかってしまうので、 トップページの表示が遅いんです。 L> > その4 L> > 対戦したロボットごとにスコア情報が見たいです。 L> > このロボットには勝てるけど、このロボットには勝てないとか、 L> > そういう情報もほしいですよね。 L> L> これいいですね。 L> ロボリーグのやつより分かりやすいといいですね。 L> 対戦相手のデータって保存されてるんですか? L> 検索のしかたは、version,robotIdでがっさり取ってこれると L> ありがたいですね。 L> L> > さらに、それが自分のロボットのバージョン別に見たいですね。 L> > バージョンアップした結果勝てるようになったとか、 L> > 知りたいですし。 L> > ま、アゲインではロボットのバージョンアップはできませんから、 L> > これは後回しでもいいでしょう。 L> L> 後回しするのはいいですけど、考慮して作っておかないと L> 変更量が多くなると大変ですよ。 L> バージョン別にデータ保存されてるってことですね。 L> 古いバージョンのデータは破棄されてると思ってました。 まず、ユーザがロボットをバージョンアップしても、 新バージョンが対戦するのは次のシーズンからです。 あるシーズンを戦ったロボットのバージョンはなにか、 という情報が取ってあるので、 あるバージョンの結果を取ってくるには、そのバージョンが戦った シーズンの結果を集計すればよいということになります。 対戦結果情報は、シーズンごと、かつ対戦ごとに保存してあるので、 かなり細かく取れると思います。 あとで変更量が多くなると大変というのはまったくおっしゃる通りなので、 やるとしたらどうやるか、ちょっと考えてからにしましょう。 -- Naoki Kurosawa <naoki_kuros****@ybb*****>