
正文
包含Windows做oj系统的词条
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oj系统用什么方法获取编译器的信息
Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。
相关问答
Q1: 如何在网站服务器上搭建OJ?
操作系统的选择
网站放在Linux或者Windows上其实问题都不大。但是鉴于,如果你的平台今后要拿出去办比赛等活动,那么一个正版的Windows商业授权是需要的。所以为了更加经济,选择Linux平台可能更好一点。
但是你的判题核心的部分一定要放到Linux环境下。一个,正式比赛的最终判题环境是Linux;二者,Windows上使用GCC系列的编译器毕竟和Linux下有不少的差距,最终可能会导致很多蛋疼的问题。
Web部分
这部分没啥好说的,基本上用啥都行,和普通的Web方案没啥区别。Django、ROR、.Net、J2EE、PHP等等,没什么特殊的地方。
判题节点
判题部分是整个OnlineJudge网站的核心所在。一般建议把判题部分单独抽出来成为一个服务,这样便于随时通过增加判题节点来加快判题的速度。
我们目前的思路是,Web端通过发送判题的请求给RabbitMQ等消息队列,每一个判题节点就是一个worker,这样可以非常简单的扩展判题节点的数量。
如果网站需要提供代理POJ、ZOJ、HDU等OJ的判题功能的话,可以同样的使用上述的思路,构建代理判题的节点,自由扩展。
判题核心
判题核心就是实际去编译、运行用户提交上来的代码的程序。可以成为一个sandbox沙盒。由于本人对Windows的API不是很懂,所以是在Linux上写的。安全性问题,可以参看这个回答Online Judge 是如何解决判题端安全性问题的?,基本思路都是这样。通过fork出另外一个进程,通过设置时间、内存等限制,通过ptrace进行监控,对系统调用进行限制,来解决安全性问题。
但是现在有一个新的思路,就是对判题核心很简单的运行用户的代码,计算时间、内存的使用量,把所有的安全性问题交给Docker来解决。因为Docker是一个非常轻量级的虚拟化方案,启动一个Docker容器就和启动一个程序一样快速,所以把判题核心的程序放到Docker里,就算用户代码搞破坏,最终挂掉的也就是Docker的容器。只要处理好和Docker的交互就可以了。但是这只是一个设想,还没有最终实现,还处于开发阶段,但是思想应该是可行的。
Q2: hustoj支持windows吗?
hustoj -- 请一定认真看完本页再动手安装,以免无谓的折腾!
根据你选择的发行版不同,从下面三个脚本里选一个来用。
不要相信百度来的长篇大论的所谓教程,那些都是好几年前的老皇历了,会导致不判题,不显示,不好升级等等问题。
尤其别装apache
近期github的svn访问缓慢,可以到release中下载tar.gz版本,然后用install目录下的*-bytgz.sh脚本安装。 但是注意这样安装的实例,将来升级时只能手工升级。
首先安装Ubuntu14.04(最稳定),然后用下面脚本快速安装OJ:
wget
sudo bash install-ubuntu14.04.sh
或者安装ubuntu16.04(拥有更新的编译器版本),然后用下面脚本快速安装OJ:
wget
sudo bash install-ubuntu16+.sh
发烧级用户ubuntu18.04(至少1年以上debian系Linux使用经验,欢迎帮忙踩坑测试,有问题会尽快修复)
wget
sudo bash install-ubuntu18.04.sh
假如你不得已非要用centos7 (有的语言可能不支持),可以用下面脚本快速安装OJ:
wget
sudo bash install-centos7.sh
安装完成,用admin作为用户名注册一个用户,自动成为管理员。
安装后几个重要配置文件的位置
/home/judge/etc/judge.conf
/home/judge/src/web/include/db_info.inc.php
/etc/php5/fpm/php.ini 或 /etc/php7.0/fpm/php.ini
/etc/nginx/sites-enabled/default
如果用户量比较大,报50x错误,可能需要修改/etc/nginx/nginx.conf中的设置:
worker_processes 8; #其中数字8可以取CPU核心数的整数倍。
events {
worker_connections 2048;
multi_accept on;
}
如果遇到比赛人数多,比赛排名xls文件无法下载,请修改/etc/nginx/sites-enabled/default,在fastcgi_pass一行的后面增加
fastcgi_buffer_size 128k;
fastcgi_buffers 32 32k;
保存后,重启nginx
REDHAT / CENTOS 用户请浏览
docker安装,仅供docker熟练用户参考使用,假如你不知道什么是docker,请假装没看见这一段!
docker run -d -it \
-v /data/docker/docker-wxy/data:/data \
--privileged \
--name hustoj \
-p 80:80 shiningrise/hustoj:latest
docker测试安装
docker run -d -it --name hustoj -p 80:80 --privileged shiningrise/hustoj:latest
仅安装C++版本
docker run -d -it --name hustoj -p 80:80 --privileged shiningrise/hustoj:cpp
树莓派用户请用rpi分支源码(实验性质)手工搭建web,并编译安装core目录下的judged和judge_client。
更多安装方法
有问题请先查阅 FAQ 和 Wiki 或使用搜索引擎。
使用上需要帮助,请加用户交流QQ群23361372,仅支持开通支付功能的手机QQ加群,不接受其他方式加群。 群共享有题库 安装盘 文档 ,群内可以讨论 答疑 。 新加群,请改群名片,5分钟后可以发言 。 请尊重开源软件开发者的辛苦劳动,出言不逊者将被踢出,群费不退。
Linux不熟悉的用户推荐使用: HUSTOJ_LiveCD(关注微信公众号onlinejudge获得百度云下载链接)
HUSTOJ_Windows(仅支持XP,QQ群23361372共享文件)进行安装。
使用说明见iso中README,也可以参考LiveCD简介
Linux新手请看鸟哥的私房菜
建好系统需要题目,请访问TK题库 和 freeeproblemset项目
前台演示
常见问题自动应答微信公众号:hustoj
关注后回复: 新装系统、升级、目录等关键词,系统会自动回复相关帮助。
HUSTOJ is an GPL FreeSoftware?.
HUSTOJ 是采用GPL的自由软件。
注意:基于本项目源码从事科研、论文、系统开发,"最好"在文中或系统中表明来自于本项目的内容和创意,否则所有贡献者可能会鄙视你和你的项目。使用本项目源码和freeproblemset题库请尊重程序员职业和劳动。
论文请引用参考文献基于开放式云平台的开源在线评测系统设计与实现
如果打算进行二次开发,Wiki和这份文档可能有帮助。
(摘自github:网页链接
Q3: 怎么做一个judge online平台啊谢谢了,大神帮忙啊
Online Judge简称OJ,意思是在线评测平台,多指信息学在线评测平台。 知名的OJ有:URAL,SPOJ,vijos,USACO,sgu,pku(poj),zju(toj),tju,uva等。 著名OJ网址: 北京大学pku: (most English) 美国官方USACO: (America, English) 高效信息学评测系统vijos: (维护中) 南开大学nkpc: (most English) 首先是国内比较老牌的知名OJ: PKU/POJ(Peking University Judge Online For ACM/ICpc) 地址: 介绍: 北京大学的题库,我主要在做的一个.题目数量很多,OJ的各项功能也很完善,而且还提供免费的OJ系统下载,可以利用提供的系统自己搭建OJ.题目数量很多,有几千道,但水题也很多.关于这一点,因为题目数量大,所以水题自然就多,但这不说明PKU的题目质量不高.PKU的难题还是不少的,而且做不做水题还是要由做题人自己决定的,和OJ无关. 推荐程度(最高10): 8 推荐做法: 如果是初学者或者仅仅想提高变成准确性,那么按照AC率做,保证1Y率;如果是有一定水平的OIer,可以每页完成40~50题;如果是大牛,那么尽量做吧;如果想专门训练某个项目,可以去网上搜pku题目分类,个人觉得pku里的dp题和数学题比较多. ZJU/ZOJ(Zhejiang University Online Judge) 地址: 介绍: 浙江大学的题库,国内起步最早的几个OJ之一.题目数量也接近2000.我没有太多的做zju的题目,所以不好说题目质量如何.OJ系统的友好性不如pku,但功能并不差.应该可以作为pku的替代品. 推荐程度: 7 推荐做法: 无(可以参考pku做法) 然后是一些不太知名的或比较新的: Vijos(Velocious Informatics Judge Online System) 地址: 介绍: 说到现在的OJ,就不得不提Vijos.Vijos是Vivian Snow(就是湖南师大附中的刘康,个人主页是 , 现在似乎上不去了=.=)搞的一个Judge系统,本来是作为创新大赛作品的,后来就搞起来了,现在人气很旺.但是Vijos的各种事情很多,而且服务器不稳定,速度慢不说还时不时的关闭.关于Vijos的事情大家可以参考Dragon.Dai在Vijos的1周岁时候写下的这篇Vijos的过去,现在和将来( ),这里不再赘述.Vijos上所有人都可以上传自己的题目,虽然增加了很多灵活性,但由此导致的是题目水平参差不齐.而且上传题目的人在选择题目难度的时候很难做出同样的判断,都有自己的个人见解,所以本来题目难度是很好的一个设计,现在却成了鸡肋. 推荐程度: 5 推荐做法: 用来测试竞赛原题,另外可以做一做AC率较低的题目.不推荐做大量的Vijos题目(yours牛别打我...). TJU/TOJ(Tianjin University Online Judge) 地址: 介绍: 可能大家都以为是同济的题库了吧=.=,其实这个是天津大学的,因为笔者是天津人,所以对这个OJ有独特的感情...虽然没怎么做过.总体来说比zoj稍差,题目质量不确定(我说了我没怎么做过...),一般我都用来做Contests. 推荐程度: 5 推荐做法: 无,可以做做Contests.注意是Online Contests而不是Virtual Contests,Virtual那个...打开就能知道,是利用TOJ自己的题库出Contests...其实这个设计很新颖,所有人都可以出测试.适合队内搞测验... NKOJ(Nankai Online Judge) 地址: 介绍: 这个是天津市南开大学的OJ,想必大多数人都不知道吧?在看下面的介绍之前,你可以先上去看看,体会一下.你一定会发现,通过大量Ajax技术的应用,加上清新的界面,你会感到十分舒适.而且nkoj似乎有一个功能是自己不出现在Rank List和Status里面,这个功能很贴心.题目是nkoj最大的弱点,数量不大,质量一般.不过因为是中英文题目夹杂且中文题目数量不少(和pku比),所以想做中文题的除了Vijos也可以来这里看看.其实nkoj比vijos要漂亮的多,速度比vijos稍快,稳定性...应该比vijos好不少吧. 推荐程度: 5 推荐做法: 做中文题. rqnoj(RenQingNet Online Judge,任青网络信息学奥赛(OI)在线判题系统) 地址: 介绍: 一个新兴的OJ,题目质量一般,数量也不多.除了去刷Rank,没有什么值得做的. 推荐程度: 2 推荐做法: 无. 接下来说一下国外的OJ: SGU(Saratov State University Online Contester) 地址: 介绍: sgu是俄罗斯斯坦福州立大学(大概是这个名字)的OJ,很老牌了.题目数量很少,但题题精炼,每做一道题都会让你的编程水平上升.在有一定编程水平之后可以试着做做,要争取做出每一道题.如果sgu能全部AC的话...那这个人不是抄袭就是神牛...注意status需要通过左边的"status online"链接来看,而且sgu速度稍慢并且不太稳定.总之是非常特别以及及其应该推荐的OJ. 推荐程度: 9 推荐做法: AC每一道题,可以按照AC Rate来做. Ural(Timus Online Judge) 地址: 介绍: Ural是Ural State University的一个OJ,题目不是很多,但都是原创,而且比较经典.如果sgu做着费劲,那么试试Ural吧. 推荐程度: 8 推荐做法: 试着做做每一道题吧,可以按照AC Rate来. 追问: 怎么全是讲做题啊??? 麻烦您讲下具体步骤啊........ 是做平台啊,不是做题啊
Q4: 搭建OJ系统
[toc]
本文介绍如何利用开源OJ系统源码快速搭建OJ系统
开源青岛大学oj的搭建(傻瓜式操作) : Uncle_drew
docker-compose up解决错误ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?





