hydrojudge


# hydrojudge

# 准备

在配置评测机之前,请确认您的站点已经可以访问并正常登录/注册。

您应该预先下载您所要支持的语言的编译器,若您在配置完评测机后 升级/重新安装 了编译器,您需要重新启动评测机。

前往 criyle/go-judge 下载 executorserver。

系统版本 文件名
Windows 7+ executorserver.exe
Linux 4.4+ executorserver-amd64
MacOS ?+ executorserver-macos

Executorserver 需要在后台以 root 权限运行并监听 127.0.0.1:5050 。 可使用 pm2 进行管理。

Tips

如果您是 vj4 用户,请使用“作为独立进程”配置(设置处需设成 type: vj4)。

# 安装

# 作为附加组件

安装 @hydrooj/hydrojudge

yarn global add @hydrooj/hydrojudge
hydrooj addon add @hydrooj/hydrojudge
1
2

重启 Hydro 后 HydroJudge 即可正常运行。

# 作为独立进程

首先需要创建一个有 PRIV_JUDGE 权限的账户,具体方法参照 此处(在部署网页端的服务器上进行)
(vj4 用户需参照 vj4 的方法 创建账户)。

然后在运行评测机的服务器上执行下面的操作。

安装 hydrojudge 插件。

yarn global add @hydrooj/hydrojudge
1

创建目录 ~/.config/hydro,在该目录下创建文件 judge.yaml,配置文件格式如下:

hosts:
  localhost:
    type: hydro # vj4 用户请在此处填写 vj4
    server_url: http://localhost:8888/ # Hydro 运行的网址
    uname: judge # 评测账号用户名
    password: abc123 # 评测账号密码
    detail: true # 默认为 true
1
2
3
4
5
6
7

设置完之后,使用下面的指令即可开始运行(可以使用 pm2 管理):

hydrojudge
1

# 更新

HydroJudge 会发布不定期更新。您可以使用 yarn global upgrade-interactive --latest 来检测并进行更新。

# 关闭

# 作为附加组件

在 系统设置>hydrojudge 中有一栏 Disable builtin judge,将它勾上,然后重启 Hydro 即可。

# 作为独立进程

根据开启的方法关闭即可。

# 卸载

关闭后运行下面指令即可。

yarn global remove @hydrooj/hydrojudge
hydrooj addon remove @hydrooj/hydrojudge
1
2

# 评测设置

# 作为附加组件

在 系统设置>hydrojudge 修改对应的参数,然后重启 Hydro 即可。

# 作为独立进程

如果有需要修改单题测试点数量上限等设置,可以在 ~/.config/hydro/judge.yaml 中添加如下内容。

testcases_max: 100 # 单题最多测试点数量
total_time_limit: 120 # 单题最大总测试时长
parallelism: 2 # 单评测机评测进程数量
# 更多可选配置均可添加在此处,格式与前面的三排类似
1
2
3
4

此处 的设置均可添加到可选配置处。

# 修改编译选项/添加新语言支持

首先需要修改编译指令配置文件。

对于内置评测机(作为附加组件安装的评测机),在 控制面板>系统设置 中修改 judge.langs 配置项即可。
对于独立评测机(作为独立进程安装的评测机),修改 ~/.config/hydro/langs.yaml 文件即可。
按照 此处 格式即可。

如果您添加了新的语言,您还需要前往 控制面板>系统设置 中修改 Language Highlight ID 与 Monaco language modes。
分别表示选择对应的语言后的高亮设置(基于 PrismJS)和 Monaco 编辑器语法规则设置。

# 测试数据格式

参照 测试数据格式 配置。

# 调整沙箱空间大小

Note

如果不调整沙箱的空间大小,当您的评测使用文件 IO 且输入输出文件较大时可能会引发错误。

mount.yaml 下载下来并放置在与 sandbox 相同的目录下。然后修改第 50 行和第 54 行的 sizenr_inodes 的大小至您想要的大小,保存后重启 sandbox 即可完成更改。

# 开大程序运行栈空间

在很多时候系统默认为程序提供的栈空间并不能满足我们的需求,此时我们需要手动为用户程序提供更大的栈空间。

修改 pm2 中 sandbox 的启动参数为 ulimit -s unlimited && /path-to/sandbox 即可。