我们学校的 Online Judge 开源了,基于 Python 和 Docker, https://github.com/QingdaoU/OnlineJudge ,求 star

2015-09-17 17:06:17 +08:00
 virusdefender

每个学校 ACM 队在训练或者招生的时候可能都需要一个 oj ,我们常用的 oj 是杭电的,但是有些不是很满意的地方。

首先是界面,国内的 oj 除了 pat 、 codevs 等大多数都很丑很丑, 10 多年前的风格,可能因为 oj 就是 10 年前写的吧。

用起来也有些不是很方便的地方,比如提交题目要新开页面,要再选择题号,再手动刷新看结果。自己内部比赛有些规则也没办法去设置,自己没法去添加题目去查看测试用例等等。

所以我们实验室三个人用了大约暑假一个半月的时间,自己写了一个 oj ,我们的定位不仅仅是 ACM 训练,还有学校平时教学的作业考试等也可以在上面进行。 老师作为普通管理员可以创建小组,相当于一个班级,内部举办比赛,创建修改题目,外人不可见,超级管理员才可以管理公开的题目和比赛。

后端涉及到的技术有 Python 、 Django 、 Docker 、 MySQL 、 Redis 、 Celery 等,后台的前端是一个 SPA 页面,使用 avalon js 。

GitHub: https://github.com/QingdaoU/OnlineJudge (顺手 star 一个吧~)

文档: https://www.zybuluo.com/virusdefender/note/171932

demo: https://qduoj.com

给大家提前注册了账号,用户名 V2EX (都是小写的,论坛会自动转换为大写),密码 123456 ,欢迎去试用一下。

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

谢谢啦~

20344 次点击
所在节点    分享创造
56 条回复
ChiangDi
2015-09-17 21:34:05 +08:00
哎哟不错哦,支持
virusdefender
2015-09-18 10:08:56 +08:00
@learnshare 可能是高考遗留问题。。但是成绩不好
tuteng
2015-09-18 19:00:19 +08:00
好炫呢
Changxu
2015-10-10 23:16:41 +08:00
docker 最近新加入了一个特性,是--kernel-memory 参数,据说可以用来解决 fork 炸弹问题: https://github.com/docker/docker/issues/6479

另外,常见的攻击 OJ 的手段都有什么?
virusdefender
2015-10-11 11:48:30 +08:00
@Changxu 调用各种命令 删除修改文件 fork 占用大量内存 include </dev/random>等
virusdefender
2015-10-11 11:49:03 +08:00
@Changxu 我在系统调用上限制了一下,直接 fork 应该不行了,其余的我也不会写。。
nisekoi
2015-10-13 12:20:23 +08:00
已 star..不过按照文档配置了一下,返回 Server Error (500),不清楚是什么问题
virusdefender
2015-10-13 12:39:22 +08:00
@nisekoi 看日志
nisekoi
2015-10-13 18:37:30 +08:00
@virusdefender 已解决。说说我遇到的问题:
提示 TemplateDoesNotExist: oj/index.html
将 /qduoj/template/src 中的 src 改为 release

可以访问后静态文件没显示出来?
由于我把静态文件放在了 /root/下,换到其他目录即可
virusdefender
2015-10-13 19:31:06 +08:00
@nisekoi 你是不是没设置环境变量啊,会判断环境变量来决定配置文件的,一个是 src 一个是 release 。

要不你就是没打包 js , python tools/release_static.py 就行,这个时候会生成 release 目录。

不打包的话文件很大,有的页面 1M 多。
nisekoi
2015-10-13 20:08:10 +08:00
@virusdefender oj_env 么,那应该是没有设置环境变量了
junnplus
2015-10-17 10:06:28 +08:00
我们学校也在开发新的 OJ ,测试地址 http://oj.sdutacm.org 目前功能还没写完
virusdefender
2015-10-17 10:31:38 +08:00
@junnplus looks great~
junnplus
2015-10-17 11:27:45 +08:00
virusdefender
2015-10-17 11:49:16 +08:00
@junnplus http://oj.sdutacm.org/u/1/ 我们也在写这样一个个人主页,仿 github
virusdefender
2015-10-17 12:45:55 +08:00
@junnplus 看了下你们的后台,也是 django 的?
junnplus
2015-10-17 13:54:07 +08:00
@virusdefender 后端是 flask
junnplus
2015-10-17 13:54:50 +08:00
@virusdefender 方便的可以交流下,微信 jun_nplus
kzzhr
2015-10-18 00:15:33 +08:00
作为一个折腾过 oj 的人。挺支持这样做的。
不过有一些个人看法,浙大在很多年前开源了一个判题的 core ,我觉得其实够用了。并没有必要去用 docker 从头搞。但是其他地方,我们称之为用户体验吧,确实应该改一改。功能上很多不足,应该才是需要花很多精力的
snnn
2015-10-18 01:04:20 +08:00
直接刷 UVA 什么的不好吗?

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

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

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

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

© 2021 V2EX