什么是VJ?
我相信CNODE的大家庭中有着跟我一样的ACMer。自从高中时期被MatRush带上了OI的不归路之后,就一直奋斗到现在。
首先作为一名ACMer,在OJ(Online Judge)上刷题是必不可少的。而VJ(Virtual Judge)就类似于N个OJ的集合体。其中国内有代表性的两个VJ分别是HUST的和BNU。本屌虽然是蒻菜,但也不甘寂寞。在完成了自己学校的OJ之后,又闲得蛋疼地准备搞VJ。
这么解释吧,每天跑不同的OJ多累啊,直接在VJ上注册一个帐号,里面囊括了所有该系统所支持的所有OJ题目。你把代码提交上去之后,VJ在后台以自己在各OJ上的帐号提交过去,然后获取到代码之后把运行结果从各OJ上爬下来并做记录。这就是VJ的流程了。
什么是VJ Submitter?
VJ Submitter只是VJ的一小部分——它没有任何前端逻辑也没有任何数据操作,只是简单的提交逻辑并返回结果。它的流程就是
穿参数给Submitter,Submitter将代码提交到相应OJ,爬下结果返回。
为什么要一起参与?
世界上的OJ千千万,本屌只是想大家一起参与完善这个Submitter,加入尽可能多的OJ的提交返回逻辑。当然,既然这个项目是开源的,大家也尽可以拿去给自己的VJ添砖加瓦(如果你也在做的话)。
VJ Submitter是用什么写的?
坛子里逛了一圈,基本上是什么做网站的帖子,做应用的帖子,甚至于是做服务器端的帖子。
可是node.js这种脚本也是完全可以做本地化的操作的,很多情况下它可以做跟bash之类可以做的事。大材小用,我曾经就用PHP-CLI写过一个网站后台跑的发送邮件、短信消息队列的本地脚本。
所以没必要把思想限死,大材小用就大材小用呗,反正开发的开心、简单就好。
所以VJ Submitter是一个基于node.js的项目。
怎么参与?
https://github.com/XadillaX/vjudge-submitter
目前项目发布在我的github上,欢迎fork之类的。目前粗略的写好了submitter的基类,并初步写好了关于两个OJ的提交类。
有兴趣的同鞋可以找我喔~
@adjusted 让每个OJ给你设计一个专门的API是不现实的。我这个项目主要是给VJ的内核提供API——即把各OJ的登录、提交、获取结果都转换成统一的API给各VJ或者说是别的相关的小项目的开发者使用。这个项目的大体框架是好了,现在就是在做各OJ的转换成统一API的逻辑。