|
1 | 1 | # 動作環境
|
2 | 2 | - Docker
|
3 |
| -- Docker compose v2.18.1 |
4 |
| -- golang 1.20.2 darwin/amd64 |
| 3 | +- Docker compose v2.27.1 |
| 4 | +- go version go1.22.4 linux/amd64 |
5 | 5 |
|
6 | 6 | # 1. 初期設定
|
7 | 7 | ## 1-1. 必要ソフトウェアのインストール
|
|
12 | 12 | gitコマンドやzip形式でのダウンロードなどを使用して、repositoryをダウンロードしてください。
|
13 | 13 |
|
14 | 14 | ## 1-2. 各種変数の変更
|
15 |
| -(開発が間に合わなかったので)各種変数を以下のように手動で変更してください。 |
| 15 | +各種変数を以下のように変更してください。 |
16 | 16 | `/docker/nginx/conf.d`の`server name:`の`localhost`を使用するサーバのIPアドレスに変更。
|
17 | 17 | `/frontend/pages/index.tsx`の変数`domain`を`localhost`から使用するサーバのIPアドレスに変更。
|
18 | 18 |
|
19 | 19 | # 2. 起動方法
|
20 |
| -## 2-1. 問題セットの設定 |
21 |
| -```$ go run ./cmd/cli/main.go init``` |
22 |
| -設定する問題の数を聞かれるので、問題数を設定します。 |
23 |
| -この操作により、設定ファイルが/judgelight/settings以下に作成されます。 |
| 20 | +## 2-1. ソフトウェアの実行 |
| 21 | +dockerとバックエンド用のgoプログラムを以下のコマンドで走らせます。 |
| 22 | +```$ cd cmd/backend && go run main.go``` |
| 23 | +```$ docker compose up``` |
| 24 | +(それぞれ別プロセスのターミナル)で実行してください。 |
| 25 | + |
| 26 | +## 2-2. 問題セットの設定 |
| 27 | +```$ cd cmd/cli/ && go run main.go set f setting.yaml``` |
| 28 | +この操作により、`setting.yaml`に記述した設定事項がデータベースに記録されます. |
24 | 29 | その後、/judgelight/settingsディレクトリ内のファイルを変更し、問題の設定を行います。
|
25 | 30 | 問題の設定についての詳細は「問題設定について」をご覧ください。
|
26 | 31 |
|
27 |
| -問題の設定後、以下のコマンドを実行しDockerに問題内容を反映させます。 |
28 |
| -```$ go run ./cmd/cli/main.go set``` |
| 32 | +# 問題設定について |
| 33 | +設定ファイルとしてYAMLファイルを採用しています.YAMLファイルにて設定できる項目は以下の通りです. |
| 34 | +``` |
| 35 | +contest_infomation: //コンテスト情報を設定できます |
| 36 | + title: "Contest Title" //コンテストのタイトルを設定できます |
| 37 | + start_time: "2023-01-01 00:00:00" //コンテストの開始時間を設定できます |
| 38 | + end_time: "2023-01-01 00:00:00" //コンテストの終了時刻を設定できます |
29 | 39 |
|
30 |
| -## 2-2. ソフトウェアの実行 |
31 |
| -その後、dockerとバックエンド用のgoプログラムを以下のコマンドで走らせます。 |
32 |
| -```$ go run ./cmd/backend/main.go``` |
33 |
| -```$ docker compose up``` |
34 |
| -(それぞれ別プロセスのターミナル)で実行してください。 |
| 40 | +problem: //問題情報を設定できます |
| 41 | + - number: 1 //第一問目に関する設定です |
| 42 | + title: "Problem Title" //問題のタイトルを設定できます |
| 43 | + score: 100 //問題の得点を設定できます |
| 44 | + limit_execute_time: 10 //実行制限時間を設定できます |
| 45 | + limit_execute_memory: 256 //実行メモリの制限を設定できます |
| 46 | + description: "Problem Description" //問題文を設定できます |
| 47 | + input_description: "Input Description" //入力に関する説明を設定できます |
| 48 | + output_description: "Output Description" //出力に関する説明を設定できます |
35 | 49 |
|
36 |
| -# 問題の設定方法 |
37 |
| -## settings.yamlの設定 |
38 |
| -Webページに表示する問題の数を`/settings/settings.yaml`内で指定する必要があります。 |
39 |
| -六行目の`number-of-problem`の値を設定したい問題数に応じて変更してください。 |
40 |
| -なお、その他の設定項目は将来的に実装予定の項目であり、変更する必要はありません。(変更してもプログラムには何の影響も及ぼしません) |
| 50 | + initial_code: |- //ページに表示されるコードを設定できます |
| 51 | + #include<stdio.h> |
| 52 | + int main(void){ |
| 53 | + int a,b; |
| 54 | + scanf("%d %d",&a,&b); |
| 55 | + printf("%d\n",a+b); |
| 56 | + return 0; |
| 57 | + } |
41 | 58 |
|
42 |
| -## 問題設定ディレクトリについて |
43 |
| -本プログラムは、`/settings`以下のディレクトリ/ファイルを変更することにより、問題を設定することができるようになっています。 |
44 |
| -ここでは、例として`/settings/example`内のディレクトリを参考に説明します。 |
| 59 | + testcases: //テストケースを設定できます |
| 60 | + - input: |- |
| 61 | + 1 2 |
| 62 | + output: |- |
| 63 | + 3 |
45 | 64 |
|
46 |
| -`example`は、以下のようなディレクトリ構成になっています。 |
47 |
| -``` |
48 |
| -. |
49 |
| -├── 1 |
50 |
| -│ ├── examplecase |
51 |
| -│ │ └── 1 |
52 |
| -│ │ ├── input.txt |
53 |
| -│ │ └── output.txt |
54 |
| -│ ├── problem.txt |
55 |
| -│ └── testcase |
56 |
| -│ └── 1 |
57 |
| -│ ├── input.txt |
58 |
| -│ └── output.txt |
59 |
| -└── 2 |
60 |
| - ├── examplecase |
61 |
| - │ ├── 1 |
62 |
| - │ │ ├── input.txt |
63 |
| - │ │ └── output.txt |
64 |
| - │ ├── 2 |
65 |
| - │ │ ├── input.txt |
66 |
| - │ │ └── output.txt |
67 |
| - │ └── 3 |
68 |
| - │ ├── input.txt |
69 |
| - │ └── output.txt |
70 |
| - ├── problem.txt |
71 |
| - └── testcase |
72 |
| - ├── 1 |
73 |
| - │ ├── input.txt |
74 |
| - │ └── output.txt |
75 |
| - ├── 2 |
76 |
| - │ ├── input.txt |
77 |
| - │ └── output.txt |
78 |
| - └── 3 |
79 |
| - ├── input.txt |
80 |
| - └── output.txt |
| 65 | + - input: |- |
| 66 | + 5 6 |
| 67 | + output: |- |
| 68 | + 11 |
| 69 | +
|
| 70 | + secretcases: //非公開のテストケースを設定できます |
| 71 | + - input: |- |
| 72 | + 2 2 |
| 73 | + output: |- |
| 74 | + 4 |
| 75 | +
|
| 76 | + - input: |- |
| 77 | + 0 10 |
| 78 | + output: |- |
| 79 | + 10 |
| 80 | +
|
| 81 | + - input: |- |
| 82 | + 22 2 |
| 83 | + output: |- |
| 84 | + 24 |
81 | 85 | ```
|
82 |
| -上記において、`./1`は問題番号1番に関するディレクトリであり、`./2`は問題番号2番に関するディレクトリです。 |
83 |
| -それぞれに存在する`problem.txt`は各問題の問題文を格納しています。(txtファイルの内容がそのまま改行含めてWebページに表示されます) |
84 |
| -各問題以下に存在する`examplecase`、`testcase`ディレクトリは、テストケースを格納するディレクトリです。このテストケースはいくらでも増やすことができ、`./2`のように、3個以上設定することも可能です。 |
| 86 | + |
85 | 87 |
|
86 | 88 | ## examplecaseとtestcaseの違い
|
87 |
| -`examplecase`内に設定した入力と出力の対応は、Webページに表示されます。 |
88 |
| -`testcase`内に設定した入力と出力の対応は、Webページには表示されず、秘匿されます。 |
| 89 | +`testcase`内に設定した入力と出力の対応は、Webページに表示されます。 |
| 90 | +`secretcase`内に設定した入力と出力の対応は、Webページには表示されず、秘匿されます。 |
89 | 91 | どちらもdocker内でAC/WAの判定に使用されることは違いはありません。**全てのテストケースが**ACで通った場合のみ、ACとなります。
|
90 | 92 |
|
91 | 93 | # 結果の確認方法
|
92 |
| -結果は、全てサーバ内に保存され、`/result`の中にcsv形式で書き込まれます。 |
93 |
| -ファイル名は、画面上部で入力した`学籍番号.csv`となり、`ACした問題番号 , AC`の形で保存されます。 |
94 |
| -これらは全てACした場合にのみ書き込まれるため、万が一全ての提出ファイルがWAの場合はそもそもファイル自体が作成されないので、ご注意ください。 |
95 |
| - |
96 |
| -# F&Q |
97 |
| -- プログラムが全てCEとなる |
98 |
| -→Webページ上部に存在する学籍番号入力欄に、学籍番号を入力してください。 |
99 |
| -- 提出したプログラムがたまにCEになる |
100 |
| -→Dockerの処理の都合上、一人のユーザが連投するとCEを吐き出すようになっています。ジャッジ中はsubmitを連打しないようにお願いします。 |
| 94 | +結果は、全てサーバ内に保存されます.結果を出力するときは以下のコマンドを入力してください. |
| 95 | +```$ cd cmd/cli && go run main.go total -f <出力したいEXCELファイルのパス>``` |
101 | 96 |
|
102 | 97 | # License
|
103 |
| -MIT (c) 2023 [@admidori](https://github.com/admidori) |
| 98 | +MIT (c) 2023-2024 [@admidori](https://github.com/admidori) |
0 commit comments