一直认为作为一个开发人员应该把自己的每个项目都当作自己的孩子一样悉心栽培,但是很多时候总是事与愿违。总有一些外来因素,要把你和你的“孩子”区别开来,使你不得不认为:他是别人的。
8年的从业经历中,绝大部分时间都是在为实现别人的梦想而编码,很少为自己做点什么。
首先,我要感谢@彭波VS,作为曾经的创业伙伴和现在的兄弟,你活跃的思维总能丰富我的业余生活。失败和多次夭折的想法,让我们明白,创意和执行力比起来,真的不算什么。
寻宝图是我的第一个 python 项目,让我处于实验阶段的“小媳妇儿”第一次站到外人面前,没有羞涩,只有无比地期待。
寻宝图基于 web.py 实现,由于第一次用 python 做 Web 开发,在代码管理上也不知道有什么合适的规范,于是按照自己的想法进行管理,代码文件目录树片段:
xunbaotu/
├── controllers/
│ ├── afflatus/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── ...
│ ├── common/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── ...
│ ├── discounts/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── ...
│ ├── projects/
│ │ ├── __init__.py
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── ...
│ ├── ...
├── static/
├── templates/
controller 按不同的实体分了目录,每个目录下都分别有一个 models.py 和 views.py,分别对应数据业务层(这里把数据层和业务层合成了一个)和表示层,这样做可能在 python 达人眼中有点可笑,不过这的确比较实用,同类代码更容易被查找。
数据库使用的我最喜欢的mysql,严格按照范式定义的数据结构,各表外键从属关系明确,这和我以往的习惯大不一样,毕竟在高并发应用中,违反范式的设计比比皆是,况且并不是所有的程序员都有幸能够从头设计一个项目。
Javascript 方面,作为一个“不要重复发明轮子”理论的拥护者,使用了大量 jQuery 社区中的智慧结晶——通常只选择那些轻量简洁的插件,根据自己的需求做适当修改。
CSS 方面,第一次如此亲密的接触样式兼容问题,以前过度依赖前台人员所留下的弊病暴露无遗,不过好在有惊无险(感谢@丽娟,@星哥)。
最后说说服务器方面,CentOS 和 Nginx 是必须的,但是最后决定尝试使用去年无意中发现的 Tengine ,主要看重它能将多个静态文件请求合并为一个请求的功能,再加上淘宝的金字招牌,忍不住试用了一下。Web Server 使用的 spawn-fcgi。
寻宝图目前还处于开发阶段,离正式发布第一个版本还有大概20%的工作量。最后借用@寻宝图旅游情报的话作为结束:“不稳定,不美观,甚至不完整,但寻宝图开始了”。