从零到一的评测机(一):背景介绍

Github 项目地址:https://github.com/Military-Doctor/Juicer

说在前面

评测机系列主要介绍 Juicer 的实现原理及过程,最终做出一款可以被大家方便使用的评测机。

项目目标是开发一款可投入生产使用的、安全的、快速的、企业级开源评测器,并且其代码风格是适合人类阅读的。

最终目的是开发一款评测平台,让每一个高校都有举办算法比赛的能力。

立项

2021年在学校举办第一场正式的 ACM 校内赛非常成功,这是一场「IT学院」和「商学院」的同台竞技。

不过遇到了不少问题,最大的问题是评测平台。

我们比赛时用的评测平台是 Vjudge,这也就意味着没有办法让参赛选手断网进行比赛,同时,Vjudge 相当于一个整合平台,实际评测都要走其他平台。这次题目出的比较多的是来自 uva 的,但是 uva 这个垃圾系统卡的要死,高峰期的时候uva出结果特别慢,很容易就把参赛选手的心态搞炸。试想一下,等待了30分钟之后,迎接你的是一个 WA (WrongAnswer)。

于是就有了写评测机的想法,把主动权交给学校或组织,而不是第三方平台。

选型

实现

参考文章 Reference

Sandboxing in Linux with zero lines of code

Veritas501’s seccomp学习笔记