月度归档:2012年03月

[原]HUSTOJ随笔7-SAE部署

SAE(sina application engine) 是新浪的云计算平台,最大的特点是跟LAMP平台几乎无缝的兼容性。

因此在SAE上部署HUSTOJ的Web部分是完全没有问题的,只需在db_info.inc.php设置

static  $OJ_SAE=true; 

然后参考

http://code.google.com/p/hustoj/wiki/HTTPJudge

进行judged的配置。

这里需要说明的是,新浪云平台具有较多的安全限制,支持的计算平台仅限web,并不能支持编译、运行、监控等操作。

所以,必须另行架设判题机运行judged/judge_client,但是由于SAE已经提供了公网Web出口,所以对于没有自己互联网出口的学校来说就是非常难得的资源。

而judged可以在内网运行,甚至可以不必24小时在线,比如只在8-16点(上班时间)在线,老师可以用自己办公室的机器上装个虚拟机的方式来解决。

实际上HTTPJudge的运行机制正是为SAE量身打造的。

因为传统的judged必须连接mysql来轮询和完成任务,而SAE没有提供外部网络连接mysql的机制,这就逼迫我思考如何让judged能够连接到SAE的数据库上去。

因为SAE唯一的对外出口就是Web(HTTP),因此在HTTP基础上实现一套判题任务的查询、更新机制就是最直接的答案。

当然有很多标准可以采纳,如WebService,XML-RPC,json-rpc等,但是由于我比较懒、也比较笨,所以就自行定制了一套最为简化的实现,类似Unix的管道流的文本界面。

此外,由于SAE不支持文件操作API,所以类似图片上传等功能都不能正常运行。有能力的用户可以自行修改代码,使用SAE的Storage功能实现模拟文件操作。

没有开发能力的用户可以在本地搭建完全相同题库和数据的OJ,在加题后采用SAE的SVN界面进行上传同步,可以最大化减少SAE的维护工作量。

作者:zhblue 发表于2012-3-25 19:33:20 原文链接
阅读:1869 评论:1 查看评论
]]>

[原]HUSTOJ随笔6-彩蛋(隐藏功能)

有用户想删除某些题目,因为通常OJ的题号都是连续的,而且ACMer喜欢用POJ1034等这样的表述方法,所以删除题目这个功能就没做。

(* 现在增加了这个功能,但是需要启用system函数,慎用。只有管理员可以删除,有一次提示)

也许是FPS方式导入题目太流畅了,许多管理员一开始不管3721导入了一堆题,然后又觉得不好。

针对这些用户,HUSTOJ有一个调整题号的功能,但是并不推荐使用,所以做成了彩蛋。

另外还有一个抄题目的功能,实在不好意思放出来,也当彩蛋了。

访问的入口在管理菜单的下面,接近白色的链接,选中就会显现。


作者:zhblue 发表于2012-3-20 20:55:16 原文链接
阅读:1507 评论:1 查看评论
]]>

[原]HUSTOJ随笔5-FAQ

管理员FAQ

相关搜索: 管理员, FAQ
如何获得管理员帐号?
在mysql执行
    insert into privilege(user_id,rightstr) values(‘zhblue’,’administrator’);
zhblue 为需要加管理员权限的帐号 如何进入后台?
以管理员身份登录,点击Admin/管理进入后台。 如何添加题目?
进入后台,点击左侧NewProblem。 如何添加测试数据?
添加题目时,可以在test input/test output添加一组测试数据,大规模的数据(10kb+)和更多的数据,可以在添加完题目后,通过ftp/sftp,上传到题目对应目录,通常是/home/judge/data/题号。命名规则是输入数据以.in结尾,输出数据以.out结尾,主文件名相同。 如何编辑题目?
后台中点击ProblemList,找到需要编辑的题目,点击Edit。编辑时不能修改测试数据,测试数据请使用ftp工具修改。 如何启用题目?
题目添加后,默认是停用状态,以防比赛提前漏题,后台中点击ProblemList,找到题目,点击Resume启用题目,或者组织比赛,比赛中的题目将自动启用。 如何组织比赛?
在题目列表ProblemList中选择使用的题目,在PID一栏打钩,点击CheckToNewContest按钮,进入到比赛添加页面,输入比赛名称,设定比赛时间,语言类型,访问权限提交即可。
也可以使用管理菜单中的NewContest,需要手动输入题目编号,用英文逗号分隔。 如何修改、删除比赛?
点击比赛列表ContestList,选择Edit或Delete。 如何修改公告信息?
点击SetMessage。 如何修改用户密码?
点击ChangPassWD 如何重新判题?
点击Rejudge,输入题号或运行编号。 如何增加用户权限?
Addprivilege, administrator为管理员,source_browser为代码审查,contest_creator为比赛组织者。
通常给使用系统的老师分配代码审查和比赛组织者权限即可。 如何导入、导出题目?
使用ImportProblem,上传FPS文件。
使用ExportProblem,输入起始编号,结束编号,或题号列表,如果输入了列表,起始结束将不起作用。 如何更新数据库结构?
系统升级中,有对数据库的修改,这些修改不能通过SVN实现自动更新,如果发现升级web/core代码后系统报错,可以执行update database操作,进行数据库升级。因为脚本中有测试代码,所以重复执行不会造成影响。 如何下载新题目?
访问FreeProblemSet,查看Downloads列表。
作者:zhblue 发表于2012-3-18 14:27:00 原文链接
阅读:2020 评论:9 查看评论
]]>