Skip to content

Commit

Permalink
公開用のファイルを整理
Browse files Browse the repository at this point in the history
  • Loading branch information
Suguru Shirai committed Sep 12, 2022
1 parent 9b10965 commit cdaf08c
Show file tree
Hide file tree
Showing 709 changed files with 117,399 additions and 1 deletion.
74 changes: 73 additions & 1 deletion README.md
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サーバーの起動を推奨します。
10 changes: 10 additions & 0 deletions benchmarker/.gitignore
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
25 changes: 25 additions & 0 deletions benchmarker/Makefile
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
48 changes: 48 additions & 0 deletions benchmarker/README.md
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だとゲームが遊べない状態です。

この部分のチェックを聖合成チェックで追加しております。

0 comments on commit cdaf08c

Please sign in to comment.