isucon / isucon9-final Goto Github PK
View Code? Open in Web Editor NEWISUCON9 本戦問題
License: MIT License
ISUCON9 本戦問題
License: MIT License
CAUTION: this project is open for only #isucon administrators /webapp /webapp/perl /webapp/ruby /webapp/nodejs /tools /tools/benchmark /tools/domchecker /tools/scoreboard ** Webアプリの基本方針 -処理はすべてリクエストを受け取ってから実施する --DBへのクエリ --テンプレートからのレンダリング -全てのコンテンツをアプリケーションから渡す --js/css/画像も含めて -キャッシュ等はとりあえず全て無し ** 実装するリクエストハンドラ - / -- GET -- articleのリスト(投稿順(id順) 最新10個) --- SELECT id,title,body,created_at FROM article ORDER BY id DESC LIMIT 10 - /article/:articleid -- GET -- articleページの表示 (article + comments) --- SELECT id,title,body,created_at FROM article WHERE id=? --- SELECT name,body,created_at FROM comment WHERE article=? ORDER BY id なお全ページ、左側のサイドバーに「新しいコメントがついた順に記事10件」を表示 --- SELECT article FROM comment GROUP BY article ORDER BY created_at DESC LIMIT 10 - /post -- GET -- 記事投稿用HTML ただしベンチ対象外のURLとする - /post -- POST -- 記事投稿 -- パラメータはform形式で title, body --- INSERT INTO article SET ... -- レスポンスは / へのリダイレクト(成功)、もしくは適当なエラー用のHTTPステータス - /comment/:articleid -- POST -- コメント投稿 (投稿フォームは /article/:articleid の末尾) -- パラメータはform形式で name, body --- INSERT INTO comment SET ... -- レスポンスは /article/:articleid へのリダイレクト(成功)、もしくは適当なエラー用のHTTPステータス ** 添付するstaticファイル - 画像 -- isuconロゴを適当なサイズにして流用、ページトップのバナー画像にする - js -- jquery 最新版の minify 済みファイル -- jquery-ui 最新版の minify 済みファイル -- isucon.js デザイン調整用 - css -- jquery-ui の適当なスタイル用のもの一式 -- isucon.css デザイン調整用
Basic
Cancel
Search
繁忙期の差し込み方
adult
child
departure_time
arrival_time
手元の環境で再現しようとしていますが、一通り手順をなぞってみたもののassets/testdataが生成されずbenchを実行できません。どこかでダウンロードできたりするんでしょうか。
payment api初期化用作っておく
PaymentInformationのdatetimeをISO8601型にする
/api/train/search
列車種別
列車番号
始発駅 (なくてもいいかも?)
終点駅 (なくてもいいかも?)
乗る駅
降りる駅
発時刻
着時刻
乗車区間での空席情報 (○△×)
乗車区間での料金
[{
"train_class": "最速",
"train_name": "1",
"start": "東京",
"last": "名古屋",
"departure": "東京",
"destination": "名古屋",
"departure_time": "2019-09-07T15:57:56.320388422+09:00",
"arrival_time": "2019-09-07T15:57:56.320388668+09:00",
"seat_availability": {
"non_reserved": "○",
"premium": "○",
"premium_smoke": "×",
"reserved": "△",
"reserved_smoke": "○"
},
"seat_fare": {
"non_reserved": 0,
"premium": 180000,
"premium_smoke": 0,
"reserved": 112500,
"reserved_smoke": 0
}
},
{
"train_class": "遅いやつ",
"train_name": "3",
"start": "東京",
"last": "大阪",
"departure": "東京",
"destination": "名古屋",
"departure_time": "2019-09-07T15:57:56.333610242+09:00",
"arrival_time": "2019-09-07T15:57:56.333610516+09:00",
"seat_availability": {
"non_reserved": "○",
"premium": "○",
"premium_smoke": "×",
"reserved": "△",
"reserved_smoke": "○"
},
"seat_fare": {
"non_reserved": 0,
"premium": 96000,
"premium_smoke": 0,
"reserved": 60000,
"reserved_smoke": 0
}
}
]
こんにちは。
ISUCON9決勝データで練習しているときに気づいたのですが、
train_timetable_master
に不整合なデータが多く有るのではないかと思いました。
例えば、こちらの train_master
https://raw.githubusercontent.com/isucon/isucon9-final/master/webapp/sql/90_train.sql
("2020-01-01","遅いやつ",2,"06:00:00","京都","東京","1"),
は遅いやつ2号 京都発東京行き(上り)というデータだと思われますが、それに対応していると思われる
train_timetable_master
では 遅いやつ2号 東京 06:03:56発京都10:55:16着 と読めます。
https://raw.githubusercontent.com/isucon/isucon9-final/master/webapp/sql/94_0_train_timetable.sql
("2020-01-01","遅いやつ","2","東京","06:00:00","06:03:56"),
....
("2020-01-01","遅いやつ","2","京都","10:55:16","10:58:01"),
つまり進行方向逆のデータになっていると思われます。
ベンチマークに関しても 「大阪」→「東京」の最速で検索するテストケースのようですが
期待するデータは到着時間が逆転しています。
バグが有っても初期実装の仕様そのままチューニングするというゲームかも知れませんが、さすが苦しいかなと思いましたので報告します。
ベンチマークでよいスコアがでましたら、このissueにコメントして残していただけると嬉しいです。
ローカル環境でのアプリケーション・ベンチマーカーの起動方法はこちら
ローカルでのアプリケーションの起動方法
ローカルでのベンチマーカーの起動方法
## 日付・時間・ スコア
\```
\```
## 言語
## 環境・PCスペック
## その他条件
※ 環境・PCスペックに関しては、OS情報の簡易なサマリ、コア数、メモリ容量が分かれば他の方法でも大丈夫です
ハッシュ値比較など、変更されていないかチェックする
文字列で受け取るのは大変なのでStructで受け取ろう
ランダムなテストユーザを作成できるよう、ダミーデータ生成をする
適当なクライアントを作成
2019-10-04T00:59:41.266+0900 warn isutrain-benchmarker 予約できないはず {"departure": "根左海岸", "arrival": "維荻学園", "date": "2020-01-02T09:58:03+09:00", "train_class": "遅いやつ", "train_name": "37", "car_num": 9, "seats": [{"row":1,"column":"A","class":"premium"},{"row":1,"column":"B","class":"premium"}]}
このようなエラーが出るとクリティカルエラーのはずなのに、問題なくベンチが終了してしまい、何も減点されない。
http://isucon.net/archives/53916974.html
CPUは2コア (Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz)、メモリは4GBの、オーバーコミットのないインスタンスです。ネットワーク帯域も100Mbpsです。
ref #24
ベンチマーカーのログ書き出しは
warn相当であればstderrに出すけど、そうでないinfo相当はstdoutに書き出す
バルクでキャンセルするやつ実装する
以下について
最初は繁忙期を設けるという話にしていたけど、設定では開業前なので、繁忙期をこの設定にねじ込むのは難しそう
特定の列車、特定の車両を指定して、個別の席の空席情報を返す
その号車、その乗車区間での、全座席の空席状態
PosttestをFinalCheckに名称変更しました (当該フェーズではバリデーションではなく、ISUCOIN計上を行なってスコア算出するだけなので)
静的ファイルのハッシュ値を用いて、参加者が変更を加えていないかベンチマーカーでチェックを行う
別のGo routineでやる
内容は仮なので好きにいじってください
2020年1月1日 のぞみ99号の4号車1番E席を取る場合
dateは要検討
{
"date": "2020-01-01T08:00:00+09:00",
"train_class": "のぞみ",
"train_name": "99号",
"car_num": 4,
"origin": "東京",
"destination": "大阪",
"seats": [
{
"row": 1,
"column": "E"
}
]
}
{
"reservation_id": "123567890",
"あああああ": true
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.