NOJ——基于 Laravel 的开源 Online Judge 实现

2019-06-06 10:31:02 +08:00
 zsgsdesign

NOJ 是一个基于 PHP+Laravel 的现代化在线测评系统,评测机部分使用 Docker。

上一个版本的 NOJ 已经有十年历史了,bug 无数,最初是和 NUAA 合作的但是被人家甩了,所以去年年底我们终于下定 决定重构一个现代话的版本,一扫垃圾 UI。

所以寒假里,我一个人从除夕写道开学,搞了一个全新的 NOJ。经过多次版本迭代,NOJ 目前已经非常成熟了。多个校级比赛已经采用 NOJ 进行了,可惜的是今年省赛我们还是使用了 DOMJudge。

目前我们校队的训练中大量使用了 Virtual Judge,于是 NOJ 顺水推舟继承了 Virtual Judge 功能,未来 NOJ 将会以每周一个 OJ 的速度上线一个新的 OJ。

当然,作为一个 OJ,必要的功能也是不能少的,NOJ 使用 Docker 作为判题核心,采用了网站服务评测机分离的模式,同时我们也支持了评测机集群,还有一个虚假的负载均衡(误

目前 NOJ 的技术栈主要有 PHP+Laravel+MySQL+Redis,评测部分 Go+Docker,还有一些例如测试用例生成使用了 python 实现,甚至,甚至还有为了兼容 Windows 而写的 vbs......

NOJ 已经在开源社区 GitHub 上线,收获了 100+star,欢迎大家来 Star,Fork 或者提 Issue 哦~

GitHub: ZsgsDesign/NOJ

Wiki: ZsgsDesign/NOJ/wiki (非常不全)

Demo: NOJ (最近一周晚上封外网,只能白天访问)

有什么问题或者建议欢迎在下面回复。

谢谢啦~

3919 次点击
所在节点    分享创造
21 条回复
azh7138m
2019-06-06 10:44:25 +08:00
先 O 了。
判题端使用的 https://github.com/MarkLux/JudgeServer 吗?
zsgsdesign
2019-06-06 10:53:15 +08:00
@azh7138m 基于那个版本二次开发,其实开发中包括 [QingdaoU/JudgeServer]( https://github.com/QingdaoU/JudgeServer) 也有参考,以后可以一起开个源。
azh7138m
2019-06-06 10:59:46 +08:00
docker 是方便呐
借楼安利下一个 win 下的判题实现 https://github.com/Azure99/OpenJudger
jsnjfz
2019-06-06 11:01:31 +08:00
南邮校友支持一波,真的不错
msrcatn203
2019-06-06 11:21:17 +08:00
ZLBNB (
xiang578
2019-06-06 12:11:46 +08:00
帮定,之前只能忍受 hustoj 的界面,可惜现在用不到 oj。
azh7138m
2019-06-06 12:34:18 +08:00
@xiang578 界面也想重写一下的,可是没有时间呐......
zsgsdesign
2019-06-06 12:47:26 +08:00
@azh7138m HustOJ 同时代的感觉都很古老了,感觉都可以重构一个下一代版本了。话说是 HustOJ 开发者?
azh7138m
2019-06-06 13:01:07 +08:00
@zsgsdesign 呃,算是老用户,平时主要回答一些如何重启判题姬的问题(
也在试着给 hustoj 打 deb 包
cctv1005s927
2019-06-06 13:14:18 +08:00
不错👍🏾,但是从前端的角度上来说,交互上还是需要提升的。

就比如说 status 中的 table 翻页,可能是为了复用 loading,才导致整个 dom 要重新渲染的。

实际上 Table 翻页不应该出现白屏的
zsgsdesign
2019-06-06 13:24:22 +08:00
@cctv1005s927 我们在考虑 ajax 化翻页,目前是因为 paginate 组件纯后端的缘故,改写的话可能要花点时间。同时 PJAX 支持也已经在计划中了,不过估计距离完全实现还有一段时间。
cctv1005s927
2019-06-06 14:58:18 +08:00
@zsgsdesign 浏览器一般有支持的,如果是新的请求 dom 和原来的差不多,就不会完全白屏,所以我建议你们可以在 Table 那里把 Loading 取消
mrcn
2019-06-06 18:10:28 +08:00
不错
JC1027
2019-06-06 18:31:23 +08:00
希望加一个 hustoj 迁移到 noj 的功能,现在好多学校都在用 hustoj (我校也是 ),感觉本 oj 最大优势是集成了 vj。
iovo7
2019-06-06 21:00:12 +08:00
装了下,不错,star。
不过这后台在哪进,没弄明白。
JohnChiu
2019-06-06 21:28:20 +08:00
UI 很漂亮,支持一下
zsgsdesign
2019-06-06 21:50:24 +08:00
@JC1027 可以啊,可以提 issue 呀,假如喜欢的话 PR 也可以哦。我们可能会在未来直接支持 HustOJ 的 FPS 格式,也可能推出自己的标准,都还在讨论中。
zsgsdesign
2019-06-06 21:51:32 +08:00
@JohnChiu 谢谢哦,现在的 UI 都是我一个人设计的,同学说有点性冷淡 2333,我们最近扩招了全职前端,以后会更棒哦⊙∀⊙!
zsgsdesign
2019-06-06 21:53:37 +08:00
@iovo7 现在还是半成品还不太适合用作生产,麻烦谅解哦,目前我们的后台还在开发中,地址是 /admin,需要手动在数据库添加用户,以后我们写了安装脚本后会一键生成,不过目前还不行的,可能会有些麻烦。(其实我们自己都是改数据库维护的)
azh7138m
2019-06-07 12:33:37 +08:00
@JC1027 emmm,hustoj 现在有什么问题吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/571401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX