- Python 3.8+
- MongoDB Server 4.4+
- Docker
MongoDB
MongoDB 在不同平台下的下载教程:https://www.mongodb.com/docs/manual/administration/install-community/
也可以在这里直接下一个最新的本地 MongoDB Server 安装包:https://www.mongodb.com/try/download/community
或是注册个号白嫖512M云储存
Docker
您可以在这里折腾一个适合您操作系统的Docker:https://www.docker.com/get-started/
具体项说明可以参考模板文件的注释。
记下judger_monitor_config
下的端口号,后续步骤中起评测机会用到。
注意如果你在windows下配置py依赖的话可能需要pip install python-magic-bin
linux环境下需要安装libmagic
详见requirements.txt的注释
pip3 install -U -r requirements.txt
python3 svr.py
第一次启动网站端时终端会提示您建立一个超管账号,请照做。
如果不满意于已经插入的超管账号,请去数据库中删除名为user的collection再重新启动服务。
如果需要手工改数据库的话建议下载一个MongoDB Compass
不要无脑复制粘贴这些命令
构建容器(不要在本仓库根目录下跑下面命令)
cd 某些你方便的地方
git clone --recursive https://github.com/DMOJ/judge.git
cd judge/.docker
make judge-tier3
# 这步没有make可以这么写 cd tier3 && docker build --build-arg TAG=master -t dmoj/judge-tier3 -t dmoj/judge-tier3:latest .
准备存放问题的文件夹,放入一个a+b试机题
你可能有必要检查一下judge_conf.yml里面写的是不是你需要的
mkdir 某些你打算放问题的目录
cp assets/judge_conf.yml 某些你打算放问题的目录
cp -r assets/aplusb 某些你打算放问题的目录
运行容器
docker run \
--name (Docker中显示的容器名,不用但建议与judge_conf.yml中保持一致) \
-v (宿主机问题目录):(映射到容器里的绝对目录) \
--cap-add=SYS_PTRACE \
-d --restart=always \
dmoj/judge-tier3:latest run \
-p (网站端的judger连接端口) (网站端的host) \
-c (容器内的judger_conf.yml的绝对目录,照上文的话是/problems/judge_conf.yml)
注意如果你需要跳过自测的话,结尾加上 --skip-self-test 选项
这里给出一个我在Docker Desktop上起服务的实例命令供参考
docker run --name chaka -v D:\SETU\Problems:/problems --cap-add=SYS_PTRACE -d --restart=always dmoj/judge-tier3:latest run -p 19998 host.docker.internal -c /problems/judge_conf.yml --skip-self-test
至此,网站端的控制台应该显示有judger连入
网站端的命令台:
asyncio.ensure_future(judge_list.gen_judge('aplusb', 'CPP17', '#include<bits/stdc++.h> \n int main(){long long a,b,t;std::cin>>t;while(t--){std::cin>>a>>b;std::cout<<a+b<<std::endl;}return 0;}',None,1))
不用管网站端的报错,看docker里的log如果有三条AC记录即为跑通了:
- 精细化Submission的网页,接好websocket
- 实现Problem的页面搜索和过滤,找到后退可以返回上一个页面的解决方案
- 做SubmissionList网页,提供和ProblemList类似的功能
- 整几个logo换掉模板的mock pictures
- 做好Problem搜索与过滤
- 测试Problem搜索与过滤
- 尽快做出用motor的v2接口
- 比赛系统
- admin管理系统
- OSS上传下载接口
- 测试密码修改接口
- docker中运行,能够自我还原
- 分布式部署
- 支持交互题(checker grader)(testlib)
- 判活、可靠性保证
- 安全性保证
- 编译环境配置与更新容易
- 单数据库多实例模型支持,登录态互斥
- 提供web api
- OSS
- 验证码系统
- 操作日志
- 单条详细提交记录(仿洛谷)
- 批量导入(受信用户)
- 单条编辑、数据、spj导入(非受信用户需要限制)
- 标程预导入、在线数据生成(受信用户)
- 自动处理数据crlf
- 查看错误原因,或testlib那种错误提示(wrong answer expected '1', found '0')
- 代码比较(codeforces那种类似git的Previous Submission和Current Submission的Compare)
- 看榜,外榜
- 基本的交题与罚时
- 公告广播(牛客)
- rejudge,赛时修锅
- 管理端错误点查看(atcoder)
- 简易查重
- Clarification
- IOI、ACM、CF赛制支持
- Hack功能
- 发气球界面
- 自测接口
- 封榜、管理员手动解封
- 题目导入导出
- Validator
- 压力测试、TLE/WA测试
- issue
- 版本管理
- 覆写式合并
- 备份、恢复