去年说要重做Online Judge,这两天已经开始编写代码了。之前一直在为Windows平台下的评测模块所困扰,即如何创建一个程序运行时的“沙盒”。在询问了Cena(一个用于信息学竞赛的评测软件)的作者之后,得知Cena的做法与我以前的做法几乎一样。“沙盒”比较难做,真要做出来和一个杀毒软件的引挚差不多了,想想还是先放弃吧。
于是先做表面上的功能——整个儿就像一个CMS。其实说白了Online Judge就是一个CMS加上评测模块。既然打算采用MVC设计模式,选择一个开发框架就是有必要的了。因为Online Judge算不上大软件,所以框架也得选择轻量级的,显然Zend Framework就被排除在外了。在比较了ThinkPHP和FleaPHP这两个国产的开源PHP开发框架之后,我选择了FleaPHP。我没有选择国际上出名的CakePHP只是因为我懒得看一大堆英文文档了,再说FleaPHP应该也足够了。
目前基本的业务逻辑层的骨架已经建立好,然后就是不断完善功能和实现页面显示,估计会比较费时间。不过感觉使用框架的效率果真是出奇的高。今天对于FleaPHP的数据库操作功能感受尤其深刻。
不好的一点是目前还不太熟悉如何在Web程序开发过程中采用测试驱动(TDD),幸亏这不是什么特别复杂的项目。不然估计以后可就惨大了……
最后再抱怨一下:FleaPHP的文档资源太少了。