Archive for July, 2009

Tech Note

Wednesday, July 29th, 2009

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的目录。

一张旧照片

Tuesday, July 28th, 2009

两年小结

Sunday, July 26th, 2009

NOKIA的困境

Tuesday, July 21st, 2009

图书馆

Sunday, July 19th, 2009

数据访问的性能和可扩展性

Monday, July 13th, 2009

一周二三事

Friday, July 10th, 2009