本OJ
的具体搭建方式:Docker搭建Hydro-OJ系统 · xiabee-瞎哔哔
以下内容为用户文档
超级管理员
- 超级管理员是
OJ
系统的最高权限,能够直接控制OJ
的全部内容,不建议设置多个
使用要求
·
- 拥有服务器
ssh
权限,且能够直接控制服务器容器
创建方法
- 在
OJ
右上角注册一个账号,此时账号的UID
为2· - 回到服务器的终端,使用
docker oj-backend exec -it hydrooj cli user setSuperAdmin 2
将 UID 为 2 的用户设置为超级管理员。 - 使用
docker oj-backend exec -it pm2 restart hydrooj
重启以使管理员更改立刻生效。 - 前往 “题库” 面板,查看创建的示例题目是否正常工作。
设置角色
管理域->管理用户->添加用户
- 输入用户
UID
或者用户名,设置其角色
- 目前已设置好的角色为老师和学生:
自动加域
- 设置加域链接:注册后点击链接直接加入
维护方法
- 具体内容详见官方文档:维护 | Hydro
Teacher
- 老师常用模块为创建/删除题目、创建/删除训练、创建/删除作业
- 未自动加域的老师,可以联系超级管理员,手动加入域中
创建题目
题库->创建题目
填写相关信息和描述,并翻到最下方,点击
创建
若未填写分组,则默认分配至当前组
- 添加测试数据和附件
测试数据文件格式(手动)
对于一般的题目,只需提供
.in
和.out/.ans
文件文件名中必须含有数字,如
1.in
和1.out
。形如sample.in
的文件是不会被自动识别例如手动上传如下文件:
1
2
3
4
5
6
7.
├── a1.in
├── a1.out
├── a2.in
├── a2.out
├── a3.in
└── a3.out测试数据将被自动识别,并使用 1S 256MB 的限制。
测试数据文件格式(自动)
上传
config.yaml
(推荐通过评测设置
在线编辑题目配置)config.yaml
文件格式如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85# 题目类型,可以为 default(比对输出,可以含spj), objective(客观题), interactive(交互题)
type: default
# 全局时空限制(此处的限制优先级低于测试点的限制)
time: 1s
memory: 128m
# 输入输出文件名(例:使用 foo.in 和 foo.out),若使用标准 IO 删除此配置项即可
filename: foo
# 此部分设置当题目类型为 default 时生效
# 比较器类型,支持的值有 default(直接比对,忽略行末空格和文件末换行), ccr, cena, hustoj, lemon, qduoj, syzoj, testlib(比较常用)
checker_type: default
# 比较器文件(当比较器类型不为 default 时填写)
# 文件路径(位于压缩包中的路径)
# 将通过扩展名识别语言,与编译命令处一致。在默认配置下,C++ 扩展名应为 .cc 而非 .cpp
checker: chk.cc
# 此部分设置当题目类型为interactive时生效
# 交互器路径(位于压缩包中的路径)
interactor: interactor.cc
# Extra files 额外文件
# These files will be copied to the working directory 这些文件将被复制到工作目录。
# 提示:您无需手动上传 testlib.h。
user_extra_files:
- extra_input.txt
judge_extra_files:
- extra_file.txt
# Test Cases 测试数据列表
# If neither CASES or SUBTASKS are set(or config.yaml doesn't exist), judge will try to locate them automaticly.
# 如果 CASES 和 SUBTASKS 都没有设置或 config.yaml 不存在, 系统会自动尝试识别数据点。
# We support these names for auto mode: 自动识别支持以下命名方式:
# 1. [name(optional)][number].(in/out/ans) RegExp: /^([a-zA-Z]*)([0-9]+).in$/
# examples:
# - c1.in / c1.out
# - 1.in / 1.out
# - c1.in / c1.ans
# 2. input[number].txt / output[number].txt RegExp: /^(input)([0-9]+).txt$/
# - example: input1.txt / input2.txt
#
# The CASES option has higher priority than the SUBTASKS option!
# 在有 CASES 设置项时,不会读取 SUBTASKS 设置项!
#
# The CASES option has been deprecated in the new version, please use the more personalized SUBTASKS!
# CASES 已于新版本中被废弃,请使用个性化程度更高的SUBTASKS!
# score: 50 # 单个测试点分数
# time: 1s # 时间限制
# memory: 256m # 内存限制
# cases:
# - input: abc.in
# output: def.out
# - input: ghi.in
# output: jkl.out
# 或使用Subtask项:
subtasks:
- score: 30
type: min # 可选 min/max/sum,分别表示取所有测试点最小值、所有测试点最大值、所有测试点之和
time: 1s
memory: 64m
cases:
- time: 0.5s
memory: 32m # 可对单个测试点单独设置时间限制和内存限制
input: a.in
output: a.out
- input: b.in
output: b.out
- score: 70
time: 0.5s
memory: 32m
if: [0] # 可选,传入数组,表示仅在subtask0通过时此subtask才计分
cases:
- input: c.in
output: c.out
- input: d.in
output: d.out
# 提交语言限制
# 列举出所有本题允许使用的语言对应的代码(需要和评测机 lang.yaml 内的语言代码相同)
# 使用语言ID而非名称!对于有子类的选项,请详细至子分类!
langs:
- c
- cc
- cc.cc11o2可以在官方题库中下载数据进行参考
创建作业
作业->创建作业
- 设置相关字段:
创建比赛
- 同上
Students
创建账号
点击自动加域链接,加入域中
可以认领作业、参加比赛、发布题解等