Skip to content
漩涡 edited this page Jul 6, 2014 · 4 revisions

#oj2.0 oj2.0是由一群大神学长发起的、几个弱菜学长实现的Online Judge系统。(请允许我做一个悲伤的表情) oj2.0基于linux系统(测试环境ubuntu12.04-server-64),目前与老OJ对比还差很多功能,例如user搜索、比赛模块、about us等。已经工作的学长们精力有限,所以诚邀各位来继续搞一搞我们的oj2.0,整体架构已经搭建起来了,往里面填就可以了。 ##预热 oj2.0虽然很渣,不过对于本科阶段的大家应该算是一个不错的试验品,如果整个OJ搞懂的话,你会学到linux基础、nginx服务器搭建和使用、django web开发、js、html、python、数据库应用、rabbitMQ+celery消息异步传递架构,足够拿一个好offer了。(简历上可以这么写,具有linux系统下开发经验、熟练使用python、shell等脚本语言、了解nginx服务器的使用、有django框架下的web开发经验balabala……秒杀90%的acmer没问题)。当然,上面都是尚未解锁的成就,如何解锁上述成就:

  1. 看看linux入门书籍,比如鸟哥私房菜,学会mkdir、chmod、cd、ll、vim等一些基础命令、了解linux文件系统、权限系统,会在命令行下使用linux系统就可以了。
  2. django框架,网上有中文教程和视频教程,如果没有MVC经验的话,入门需要一段时间,请坚持。
  3. python学习,相信大家已经有了一两年的c++使用时间,学语言的速度应该很快,python学习应该不成问题。
  4. 前端学习,w3c+bootstrap,你们懂得。
  5. 数据库,计算机、软件专业必修课。
  6. rabbitMQ+celery,考察你们英语的时刻到了,官方文档都是英文的,如果英语很好,官方文档你会读得得心应手。否则,有道翻译吧,或者看csdn cugb1004101218,最好还是去官网看。
  7. git入门学习。
  8. 这些都可以谷歌百度得到。上述的列表不一定要学完之后再去搞OJ2.0,各个模块可以单独学习,例如你学完python后,可以搞一搞判题内核;学过前端,就直接可以搞一搞我们OJ的web界面了。不要在意这些细节,这块试验田随便搞的(反正也没人用,呵~呵 -_-!)。

##整体架构

###架构图 +--------+ +--------+ +---------------+ +--------+ +--------+ | nginx |<------->| django |<------->|rabbitMQ+celery|<------->| core |<------->| data | +--------+ +--------+ +---------------+ +--------+ +--------+ ↑ | ↓ +--------+ | mysql | +--------+ ###各个模块

  1. web框架使用的是django,木有接触过的可以自行百度之。主要特点是灵活性、高复用性、与其他组件接口完善且丰富。
  2. web服务器是nginx,一种高性能服务器。
  3. rabbitMQ消息传递中间件,用来传递判题消息至判题内核。
  4. core判题内核,qiang.he负责的,感兴趣的童鞋找他。
  5. data本地题库,放题目数据的。
  6. mysql存oj信息,user、problem、submit等。
  7. 还有个bootstrap没有写到架构图上,这个是一个前端的框架。

##环境搭建

  1. 上述的几个模块,官网都有安装步骤,不赘述。(可能过程比较痛苦会遇到各种坑)
  2. 将代码git下来。
  3. 搞吧。

#各个模块详细文档(有待各位完善) ##nginx ###nginx部署 ###nginx配置 ###nginx调优 ##django ###django部署 ###oj2.0中的模型和模板 ###django+uwsgi+nginx部署 ##mysql ###mysql部署 ###django中的mysql接口 ##rabbitMQ ###rabbitMQ部署 ###rabbitMQ配置 ##celery ###celery部署 ###celery+django+rabbitMQ配置 ##core ###判题流程 ###判题内核对外接口 ##前端 ###js ###html ###bootstrap

#本来是想将整个架构每个模块都详细写一写,后来考虑到可以交给学弟学妹们找感兴趣的模块边学边记录文档到这里,既能完善我们的文档、又能让学弟学妹们学到对应的知识,所以每个模块的文档有待学弟学妹们来完善了。(其实就是懒,找那么多借口-_-!,期间遇到任何问题联系763687347,一起讨论)

Clone this wiki locally