LocalOrz 0.1 Dev 发布
简介
LocalOrz是一个运行于Linux,类似于Cena的本地评测机。目前 LocalOrz 仍属于开发阶段,本来我也不想这么早把它放出来,但是考虑到接下来得认真准备NOI,可能没什么时间继续写,所以还是只能先放出来。好在核心的功能都是有的。
首先列出它现在支持的功能:
- 支持添加编译器和修改编译器选项
- 支持数据路径自动完成
- 支持自动添加其他数据
- 支持评测全部选手
- 支持评测某个选手的单题
- 支持多个输入文件的测试点(未经测试)
- 支持需要额外文件的题目(比如交互式。未经测试)
- 支持Special Judge
- 支持部分分
因为LocalOrz最初的设计目标就是代替Cena,所以Cena有的核心功能都有。当然还有很多Cena的其他功能来不及写,这个可能得等NOI忙完再说了(话说到时候我跟OI毛关系?)。我比较自豪的部分是做数据的部分,做数据很方便,鼠标点一点就能做完,像Cena一样。
因为只是dev阶段,所以有一些十分重要但是并非核心的功能还没有写进去:
- 不支持选手的排序
- 不支持题目/选手信息统计
- 不支持导出
- 不支持收取文件
- 不支持修改题目或测试点配置(这个如果真的需要的话,可以直接修改
data/dataconf.xml
) - 不支持评测单个选手
- 不支持评测指定选手
- 不支持提交答案题(这个可以程序生成器+自定义校验器解决)
- 不支持检验 无输出、无输入 等各种状态
另外,还有许许多多的BUG。如果遇到了BUG或者觉得有什么需要改进的地方,欢迎到
安装说明
因为处于dev阶段,所以就不打包了,麻烦各位手动安装。以Ubuntu为例:
$ sudo apt-get update
$ sudo apt-get install -y gcc g++ fpc
$ sudo apt-get install -y git python3
$ git clone https://github.com/facebook/tornado.git
$ cd tornado
$ python3 setup.py build
$ sudo python3 setup.py install
$ cd ~
$ git clone https://github.com/abcdabcd987/LocalOrz.git
$ cd LocalOrz/core
$ gcc judge_client.c -o judge_client -O2
$ g++ normal_judge.cc -o normal_judge -O2
使用说明
目前为了方便Linux各环境使用,所以使用了WebUI。在终端运行:
$ ~/LocalOrz/LocalOrz.py
保持这个终端不要关闭。接下来,在浏览器中打开
在/test/contest
可以:
- 新建、打开竞赛
- 添加编译器
- 添加试题和数据
在/test/person
可以:
- 查看选手成绩
- 评测选手程序
具体的可以参考视频。切记,每次运行LocalOrz之后,必须Open Contest!
Special Judge
argv[1]: Full score
argv[2]: Standard Answer
argv[3]: Competitor Answer
Judge Information => stdout
Score => __score.txt
详细见core/normal_judge.cc
。
技术细节
内核使用python3
写成。WebUI使用python3
, Tornado
, jQuery
, Bootstrap
。内核在源代码的core/
目录,其余UI均可调用内核。我个人比较倾向于用python再写一个GTK3的UI,比较方便。
欢迎随时Create issues和Push code!