Hydro - Next generation high performance online-judge platform - 新一代高效强大的信息学在线测评系统 (a.k.a. vj5)
Hydro 是一个高效信息学在线测评系统。易安装,跨平台,多功能,可扩展,有题库。
对于不熟悉 Linux 或是懒得运维的老师,我们也提供了免费开通即用的在线版本,
详情前往 https://hydro.ac 查看 操作指引
将安装命令粘贴到控制台一键安装,安装后注册首个用户自动获得超级管理员权限。 兼容主流 Linux 发行版,推荐使用 Ubuntu 22.04,支持 arm64 设备(树莓派等)
LANG=zh . <(curl https://hydro.ac/setup.sh)
相关文档若说明的不够详细,请提交 Pull Request 或联系开发组说明。
bug 和功能建议请在 Issues 提出。
Hydro 设计了一套模块化的插件系统,可以方便地扩展系统功能。
使用插件系统,可以在修改功能后,仍然保证系统的可升级性。
Hydro 的所有历史版本均可平滑升级到最新版本。
Hydro 支持所有主流的 Linux 发行版,兼容 x86_64 和 arm64 架构设备,且均可一键安装。
Hydro 可在 树莓派 或是 Apple M1/M2 上正常运行。
使用 hydrooj backup
即可备份系统全部数据,使用 hydrooj restore 文件名
即可导入备份数据。
整个过程无需手工干预。
Hydro 提供了单系统多空间支持,可以方便地为不同的班级/年级/院校等创建独立的空间。
不同空间内除用户外数据默认隔离,且可分配独立管理员,互不干扰。
题目可跨域复制,在系统内仅占用一份空间。
Hydro 的权限可以按比赛/作业分配给对应的用户,也可以将用户分组(班级),按组分配权限。 有关权限节点,可以查看 介绍 下方截图。
Hydro 系统本身是无状态的,这意味着你可以随意增删服务节点,而不会影响系统的正常运行。 评测队列会自动在当前在线的所有评测机间均衡分配。接入弹性伸缩组后,可根据服务器负载情况自动增删评测机。 不像其他系统,Hydro 会管理不同服务器间的测试数据缓存,按需拉取,做到评测机上线即用,无需手动同步数据。
Hydro 支持所有题型。无论是传统题型,Special Judge,还是文件输入输出,提交答案题,IO 交互,函数交互,乃至选择填空题等, Hydro 都有相应的支持。安装相关运行环境后,Hydro 甚至可以做到:
更多的样例可前往 样例区 查看并下载。
Hydro 支持导入常见格式的题库文件,包括 Hydro 通用的 zip 格式,HUSTOJ 导出的 FPS (xml) 格式题目,QDUOJ 导出的压缩包。
可以在 Hydro 题库 下载免费题库使用。
Hydro 同时支持 VJudge,这意味着你可以直接在系统内导入其他平台的题目,修改题面后编入自己的作业或比赛,快速搭建自己的题库体系。
当前支持的平台有:
Hydro 支持多种赛制,包括 ACM/ICPC 赛制(支持封榜),OI 赛制,IOI 赛制,乐多赛制,以及作业功能。
在 IOI 和 OI 赛制下,支持订正题目功能,学生在赛后可以在题库中提交对应题目,其分数会在榜单旁边显示。
在 IOI 和 OI 赛制下,支持灵活时间功能,学生可以在设定的时间范围内,自选 X 小时参赛。
Hydro 的语言设置并非硬编码于系统中,而是使用了配置文件。 只要能写出对应语言的编译命令和运行命令,Hydro 都可以进行判题。
Email:[email protected]
Telegram @undefinedmoe
Hydro 用户群:1085853538
注:加入用户群请先阅读《提问的智慧》。
同时群内可能存在部分令您感到不适或感到冒犯的内容。若对此有顾虑请勿加群。
mdInline
中禁用部分标签 (#767)hydrojudge terminal
入口 (#725)/nix/store
加载插件contest/list
钩子PERM_VIEW_RECORD
权限组 (#753)/record?nopush=1
RuntimeError
详情[md]
标签新功能:
优化与修复:
problemset/download
钩子processTestdata
步骤@hydrooj/blog
插件@hydrooj/eslint-config
包$set
操作ConnectionHandler
支持 @subscribe(event)
Message.sendNotification
格式化异常的问题Types.ArrayOf()
支持%
作为关键词会导致题目搜索出错的问题handler/before/Name#method
的筛选import { ... } from '@hydrooj/ui-default'
引入内置库。ctx.inject('Notification')
支持插入多行文本。UserModel.getListForRender(domainId, uids)
方法。IHandler.response.pjax
属性。ProblemModel.getList()
移除了 group 参数,后续参数前移cordis
升级至 2.6hydrooj install <src>
和 hydrooj uninstall <name>
快速管理插件。ctx.i18n.load(lang, Record<string, string>)
加载翻译文件。ctx.withHandlerClass(name, callback)
获取类原型。本项目中的 examples/ install/ packages/ui-default/ 下的内容仅采用 AGPL-3.0 进行授权。 项目其余部分使用双重许可:
基于 AGPL3 协议第七条,您在使用本项目时,需要遵守以下额外条款:
即:
在您部署 Hydro 时,需要保留底部的 Powered by Hydro
字样,其中的 Hydro
字样需指向 hydro.js.org/本仓库/fork
之一的链接。
若您对源码做出修改/扩展,同样需要以 AGPL-3.0-or-later 开源,您可以以 Powered by Hydro, Modified by xxx
格式在页脚注明。
排名不分先后,按照链接字典序