Django 1.1 release

关注这个Python的框架很久,一直没敢将其应用到一些实际项目中,主要是发现其中Model的一些实现仍然有缺失的特性,而这些特性也会带来一些性能问题。1.1当中对ORM做出的改进恰好解决了我的这些疑虑,如果buglist上出现的反馈不再存在较多的关键问题,那么这个框架就很值得考虑了。

1.1中对ORM的改进主要有三点。Unmanaged Model, Proxy Model和Deffered Fields。Unmanaged Model使Model不再一定要和数据库中的表绑定生命周期,这样使得将已有的项目迁移到Django上更容易,同时也可以使Model对应视图等类型的数据库存储,而且Model的数据结构可以超过数据库表的字段,使用更加灵活。Proxy Model与Unmanaged Model类似,但更适用于纯粹为了给Model增加一些Python-Level的特性和方法的情景。Defferd Fields也是非常重要的特性,按需选择查询的字段,是在项目初中期善用数据库性能的基础,后期也许可以通过更多的缓存和KVDB解决一些长文本字段的问题。

更多的信息可以参看Django 1.1 release note.

Sphinx

关注Python和Django的另一个收获是发现了这个帮助生成文档的工具Sphinx,虽然生成文档的工具其实非常多,也有其它一些是非常好用和成熟的, 比如DocBook。但这个项目还是值得关注和使用的,reStructuredText的语法相对DocBook使用的XML来说,更简单一些,也更接近熟悉的wiki的语法,而且生成的文档也容易定制好看的外观。


Recommend Algorithm

许多网站应用都有一些数据挖掘的应用,这些应用本质上都是通过聚类算法产生的推荐系统。原来毕业设计也就是做相关的课题,其实理论上的算法总体也就那些,Programming Collective Intelligence中已经讲的很清楚了,这些模型大多来自于经济学和统计学的范畴,而比较成熟的应用应该大部分核心都是基于SVD算法,Python里也有一个比较成熟的Package Divisi可以使用。对于这类应用,经常出现的误区是认为好的算法就应该得出好的结果,其实未必然,好的聚类算法模型往往有数据样本的前提,没有正确或者说适合的数据样本,得出的结果有时候也不令人满意。另外可以折腾的地方就是如何提高这个算法的效率,除此之外,并不是经常有新鲜的事情。

P.S 我逐渐发现无论何种便利的工具,都比不上自己再输入一次要更有助于记忆和整理。而记录一些东西在这里,可能是最让我感觉舒适的方式,所以我新建了这个Tech Note的目录。