LocalOrz 0.1 Dev 发布

简介

LocalOrz是一个运行于Linux,类似于Cena的本地评测机。目前 LocalOrz 仍属于开发阶段,本来我也不想这么早把它放出来,但是考虑到接下来得认真准备NOI,可能没什么时间继续写,所以还是只能先放出来。好在核心的功能都是有的。

首先列出它现在支持的功能:

  • 支持添加编译器和修改编译器选项
  • 支持数据路径自动完成
  • 支持自动添加其他数据
  • 支持评测全部选手
  • 支持评测某个选手的单题
  • 支持多个输入文件的测试点(未经测试)
  • 支持需要额外文件的题目(比如交互式。未经测试)
  • 支持Special Judge
  • 支持部分分

因为LocalOrz最初的设计目标就是代替Cena,所以Cena有的核心功能都有。当然还有很多Cena的其他功能来不及写,这个可能得等NOI忙完再说了(话说到时候我跟OI毛关系?)。我比较自豪的部分是做数据的部分,做数据很方便,鼠标点一点就能做完,像Cena一样。

因为只是dev阶段,所以有一些十分重要但是并非核心的功能还没有写进去:

  • 不支持选手的排序
  • 不支持题目/选手信息统计
  • 不支持导出
  • 不支持收取文件
  • 不支持修改题目或测试点配置(这个如果真的需要的话,可以直接修改data/dataconf.xml
  • 不支持评测单个选手
  • 不支持评测指定选手
  • 不支持提交答案题(这个可以程序生成器+自定义校验器解决)
  • 不支持检验 无输出、无输入 等各种状态

另外,还有许许多多的BUG。如果遇到了BUG或者觉得有什么需要改进的地方,欢迎到提交Issue。

安装说明

因为处于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

保持这个终端不要关闭。接下来,在浏览器中打开,即可见到一个简陋的WebUI。

/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!

Comments