给HUSTOJ用户提供的源码阅读与修改建议
来源:互联网 发布:淘宝一键发货 编辑:程序博客网 时间:2024/05/21 16:56
0、 准备知识
a) 最新系统源码可以用svn取得,或在下述地址直接浏览
i. http://code.google.com/p/hustoj/source/browse/ 稳定版
ii. https://github.com/zhblue/hustoj 实验版
b) 系统分为Web和Core两个部分
c) 简化ER图http://code.google.com/p/hustoj/wiki/DBdesign
d) Web与core的连接方式有两种,实际运行可选其中一种
i. 数据库连接【默认】
1. Web插入Solution表
2. core轮询solution表,发现新纪录
3. core更新solution表result等字段
4. Web端轮询soltuion显示result等字段。
ii. HTTP方式
1. Web插入Solution表
2. core访问Web端admin/problem_judge.php,发现新纪录
3. core向Web端admin/problem_judge.php提交数据,problem_judge.php更新solution表result等字段
4. Web端轮询soltuion显示result等字段。
1、 Web部分
a) 阅读配置文件,弄清各设置含义
i. 参考http://code.google.com/p/hustoj/wiki/Configuration
ii. 源码http://code.google.com/p/hustoj/source/browse/trunk/web/include/db_info.inc.php
b) 制定自己的前台模板
i. 复制template/bs目录。
ii. 在db_info.inc.php中修改$OJ_TEMPLATE变量为新模板名
iii. 浏览前台,修改新目录中对应的php、css、imgae等文件
c) 模板制定成功以后应该有足够的知识开始修改template目录以外的部分了
d) 论坛
i. 建议集成GPL的phpbb,参考http://code.google.com/p/hustoj/source/browse/trunk/web/bbs.php
ii. 集成Discuz
1. 建议购买商业许可。
2. 参考http://code.google.com/p/hustoj/source/browse/trunk/web/include/login-discuz.php
e) 比赛根据数据通过率排名,而不只看AC数量
i. 数据库solution表pass_rate字段
ii. 把contestrank.php中的solved字段变成浮点对待。
iii. http://code.google.com/p/hustoj/source/browse/trunk/web/contestrank.php#36
f) 对有志于重写整个前台的勇士
i. 希望你选择一种魔法师编程语言。
ii. 如果做不到前面那条,请做好长时间开发的心理准备。
iii. 理论上任何现存web编程模型都可以,推荐JSP/SSH。
iv. 建议实现admin/problem_judge.php的仿真,方便直接集成原版core
2、 Core部分
a) 阅读配置文件,弄清各设置含义
i. 参考http://code.google.com/p/hustoj/wiki/Configuration
ii. 源码http://code.google.com/p/hustoj/source/browse/trunk/core/judge_client/judge_client.cc
b) 查阅Linux文档中关于下述关键词的内容
i. Ptrace
ii. Chroot
iii. Setuid
iv. Proc
v. shm
c) 所有API限定在okcalls.h
d) 代码查重工具sim
i. http://code.google.com/p/hustoj/source/browse/trunk/core/sim/sim_2_67/READMEs
e) 对于计划改造Core来适应你自己的Oj前台的朋友
i. 参考1.c.iv
ii. 在judge_client.cc中搜索关键词wget
f) HUSTOJ的沙箱模型
i. 相对openjudge.net的sandbox libraries而言并不严谨
ii. 对于OJ而言,基本满足需求
iii. 容易理解、容易实现、容易修改
- 给HUSTOJ用户提供的源码阅读与修改建议
- 阅读Openstack源码的一些建议
- 阅读人生-李开复给程序员的七个建议
- HUSTOJ的安装与配置
- 一、zookeeper源码阅读建议
- 全球第一黑客给电脑用户的安全建议
- 给智能手机和平板用户新手的三个建议
- 【给XP用户的五条升级建议】
- 给CSDN博客产品的建议,提高用户体验
- mysql5.7修改用户的密码和给用户授权
- 建议8: 避免给枚举类型的元素提供显式的值
- 建议8 避免给枚举类型的元素提供显式的值
- 给CSDNBlog的建议
- 给CSDN的建议
- 给JHX的建议
- 给初学者的建议
- 给虾米的建议
- 给Linuxer的建议
- Notificaton的使用
- Android NOtification 使用(震动 闪屏 铃声) .
- META-INF/context.xml 限制ip
- [leetcode]Anagrams
- C# WinForm中在窗口标题栏上加按钮
- 给HUSTOJ用户提供的源码阅读与修改建议
- 10款最佳CSS/jQuery开源图片说明
- URAL1255----DP
- poj 1179 Polygon
- C#项目中一些文件类型说明
- GNUPLOT绘制直方图和error bar的脚本
- C++面向对象-思维导图
- A Single Breadcrumb for All SharePoint Pages
- 已知f[0]=f[1]=1 f[2]=0 f[n]=f[n-1]+f[n-3] 求 f[0]~f[50]的最大值