-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Suguru Shirai
committed
Sep 12, 2022
1 parent
9b10965
commit cdaf08c
Showing
709 changed files
with
117,399 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,73 @@ | ||
# isucon12-final | ||
# isucon12-final | ||
|
||
## ディレクトリ構成 | ||
|
||
``` | ||
. | ||
+- webapp # 各言語の参考実装 | ||
+- benchmarker # ベンチマーカー | ||
+- docs # Webフロント用の静的ファイル | ||
+- dev/extra/initial-data # 初期データ生成 | ||
+- probisioning # セットアップ用 | ||
``` | ||
|
||
## 概要 | ||
|
||
競技中は下記2つを行うことを想定しています。 | ||
|
||
1. サーバーサイドを起動する | ||
2. ベンチマーカーを起動する | ||
|
||
さらにオプショナルで管理画面とゲーム本体の画面を起動できます。 | ||
|
||
## 事前準備 | ||
|
||
サーバーサイドとベンチマーカーの初期化の際に使用するマスターデータを事前にダウンロードします。[実行には `gh` コマンドが必要です。](https://github.com/cli/cli) | ||
|
||
``` | ||
$ cd dev | ||
# gh コマンドがダウンロードされている状態で | ||
$ make initial-data | ||
``` | ||
|
||
### 1. Adminの管理画面の確認方法 | ||
|
||
|
||
次のURLをブラウザでアクセスすると、Adminの管理画面のログイン画面が表示されます | ||
(ローカルに環境を作った場合) | ||
|
||
``` | ||
http://localhost/ | ||
``` | ||
|
||
ID: 123456 | ||
PASS: password | ||
|
||
でログインできます | ||
|
||
### 2. ゲーム本体の起動 | ||
|
||
ゲーム本体はUnityで開発されています。 | ||
そのためビルドするためにはUnityエディタとUnityライセンスが必要になります。 | ||
そこで本リポジトリにビルド済みの成果物が含まれており、またGitHub Pagesを通じて配信も行っています。 | ||
下記のいずれかの方法にてゲーム画面を起動できます。 | ||
|
||
#### 2.1. ローカルでの起動 | ||
|
||
リポジトリのルートでdocker runでnginxサーバーを起動します。 | ||
nginxサーバーが起動完了したら、ブラウザから `http://localhost:8080/` にアクセスします。 | ||
APIサーバーの接続先を指定して起動ボタンを押下すると、ゲーム画面が起動します。 | ||
|
||
```sh | ||
$ docker run --name isucon12-frontend-nginx -v $(pwd)/docs:/usr/share/nginx/html:ro -p 8080:80 -d --rm nginx:stable-alpine | ||
``` | ||
|
||
#### 2.2. GitHub Pagesを利用 | ||
|
||
[GitHub Pages](https://isucon.github.io/isucon12-final/)にアクセスします。 | ||
APIサーバーの接続先を指定して起動ボタンを押下すると、ゲーム画面が起動します。 | ||
|
||
> **Warning** | ||
セキュリティ上の理由により、Chrome(運営の確認ではChrome 104)では、httpsなページからローカルネットワークに対するhttpアクセスがブロックされるようになりました。 | ||
ローカルで動作確認する場合は、ngrokなどのhttpsトンネリングサービスを利用するか、5.1で紹介した配信用のnginxサーバーの起動を推奨します。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
*.exe | ||
*.exe~ | ||
*.dll | ||
*.so | ||
*.dylib | ||
*.test | ||
*.out | ||
vendor/ | ||
bin/ | ||
dump/*.json |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
.PHONY: build | ||
build: bin/benchmarker | ||
|
||
.PHONY: test | ||
test: | ||
go test ./... | ||
|
||
.PHONY: dev | ||
dev: build | ||
./bin/benchmarker | ||
|
||
.PHONY: run | ||
run: build | ||
export ./bin/benchmarker --stage=prod --request-timeout=10s | ||
|
||
bin/benchmarker: $(shell find . -name '*.go' -print) | ||
go build -buildvcs=false -o $@ . | ||
|
||
.PHONY: run-ci | ||
run-ci: build | ||
./bin/benchmarker --target-host=localhost --request-timeout=30s --initialize-request-timeout=60s --exit-error-on-fail=true --stage=prod --max-parallelism=10 | ||
|
||
.PHONY: clean | ||
clean: | ||
[ -f ./bin/benchmarker ] && rm ./bin/benchmarker |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# benchmarker | ||
|
||
ベンチマーカーです。 | ||
|
||
## 事前の環境準備 | ||
|
||
Go のインストールだけお願いします。Go 1.18 以上で正常に動作するはずです。 | ||
|
||
## ビルド | ||
|
||
裏で `go build` が回ります。ビルド後、`bin/` 配下に `benchmarker` という名前でバイナリが生成されます。 | ||
|
||
``` | ||
make build | ||
``` | ||
|
||
## ベンチマーカーの実行 | ||
|
||
ベンチマーカーが起動し、リクエストが投げられます。デフォルトでは `localhost:8080` に対してリクエストを投げるように設定されています。 | ||
|
||
ISUXBENCH_TARGETの環境変数にターゲットのホストを設定することで任意のサーバーへ負荷をかけることができます | ||
|
||
例) | ||
``` | ||
export ISUXBENCH_TARGET=127.0.0.1 | ||
``` | ||
|
||
make run を利用すると、本番と同等の処理でベンチマーカー実行をできます。指定分間(1分間)連続でリクエストが再現なく送られ続けます。 | ||
|
||
``` | ||
make run | ||
``` | ||
|
||
make dev を利用すると、テスト用に1回だけリクエストを投げるベンチマーカーが実行されます。webapp 側との疎通確認やデモンストレーションなどに利用できます。 | ||
|
||
``` | ||
make dev | ||
``` | ||
|
||
## 本選実施時との差分 | ||
|
||
本選実施から一部ベンチマーカーを修正した部分があります | ||
|
||
アイテム一覧画面にて、itemTypeのチェックが足らなかったため、itemType=0でも聖合成チェックが通っておりました。 | ||
|
||
実際にブラウザでアクセスすると、itemTypeが0だとゲームが遊べない状態です。 | ||
|
||
この部分のチェックを聖合成チェックで追加しております。 |
Oops, something went wrong.