月度归档:2011年10月

合理的组织django的settings文件

django在一个项目的目录结构划分方面缺乏必要的规范,因此不同人的项目组织形式也千奇百怪,而且也很难说谁的做法就比较好。我根据自己的项目组织习惯,发布了一个项目dj-scaffold
前些天在reddit上为我的项目dj-scaffold打了个“广告”(见:http://redd.it/kw5d4)。不想评价甚糟,甚至差点被打成负分。其中更也人将这个项目说的一文不值。面对负面声音虽然会有些不爽,但其中的建设性意见还是需要听取的,至于那些纯属个人偏好部分就自动过滤了。
在谈及settings文件如何组织时,coderanger建议参考The Best (and Worst) of Django中的做法。文中的主要观点是开发环境和生产环境的配置都需要放到VCS中进行版本控制。参考文中的做法,我对settings模块做了部分调整。注:代码 https://github.com/vicalloy/dj-scaffold/tree/master/dj_scaffold/conf/prj/sites/settings

local_settings的弊病

为将项目的默认配置和本地配置区分开,最常用的做法是增加一个local_settings.py文件,并在settings文件的最后对该文件进行import。

try:
    from local_settings import *
except:
    pass

由此引发的问题是你不能对local_settings.py进行版本控制,部署环境的配置万一丢失将难以找回。

解决方案

针对该问题,建议的解决方案如下

合理的配置文件组织方式

|~settings/
| |-__init__.py
| |-base.py   #默认配置信息
| |-dev.py    #开发环境的配置
| |-local.sample    #本地的扩展配置在dev和production的最后进行import
| |-pre.sample    #设置当前使用的配置为生产环境还是开发环境
| `-production.py    #生产环境的配置

使用方式

DJANGO_SETTINGS_MODULE

django的admin脚本提供了settings参数用于指定当前使用的配置文件

django-admin.py shell --settings=settings.dev

在wsgi脚本中则可直接设置需要使用的settings

deploy.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = settings.production

简化参数
当然,如果每次使用django-admin.py的时候都要带上settings参数还是非常恼人,所以推荐的做法是在pre.py中配置自己所需要使用的配置文件。

SETTINGS = 'production' #dev

《时间简史》,换个角度看世界

在我看来对宇宙和时间的探索属于哲学的一部分。因为和哲学扯上了关系,所以本文的内容很乱。

跳出常识,换个角度看世界

花了几天时间,断断续续的将《时间简史》给看完了。坦白的说,量子物理学中那些自旋粒子的确有些将我搞晕。不过有时在想,这部分的理论或许并不是懂不的问题,真正的问题在于是是否愿意接受这个理论。就如日心说,并不是日心说有多复杂,只是对当时的人们而言这个理论太过激进,人们不愿意去接受这个事实。

我们总是喜欢习惯用自己固有的常识去理解世界。但是在进入更高一个层次的世界时,传统的常识往往都将“失效”,这时候我们需要利用新的理论来理解世界(古典力学->牛顿力学->相对论->量子论)。另一方面,在你接收新理论后,新理论也变成了你常识的一部分。对我们大多人而言,牛顿力学是常识,相对论和量子论还不是。

微观世界是一个足以颠覆我们所有常识的世界。在微观世界中的”物质“都同时表现出粒子和波的特性,这在我们日常生活中是无法找到相似物的。但我们总是很习惯的用自己的常识去理解微观世界,于是我们将原子解释为,电子绕着原子核运动,就如太阳系一样。

要想理解更高一个层次的理论就必须抛弃固有的常识去接受它。然而这毕竟不是一件容易的事,于是就有了”新理论被人们接受,不在于说服反对者,而是反对者的老去“这一说法。

深入本质

最伟大的理论都必须是简单的,如达尔文的进化论(适者生存),牛顿的万有引力定律(F=K*M1M2/R^2),爱因斯坦的能量公式(E=MC2)。如果一个理论还够简单,那是因为还不够接近本质,太多的噪声掩盖了真相。

所谓的本质其实是探索一切理所当然背后的东西。以前人们认为物体总是掉落到地上是理所当然,牛顿深入下去,于是发现了万有引力。

我有时会想到底什么是引力。两个物体间会有引力,不同电荷间也会有引力。引力看不见摸不着,但确实存在。到底是什么东西让两个看似相互完全无关的物体产生了联系。

到底什么是过去、现在、未来

曾一度在想到底什么是“现在”?“现在”的我为什么会是这个样子,这个年纪。当下次再思考“现在”这词的时候又是什么时候。

所谓的现在是和时间联系的动态。当你说现在的时候,所谓的现在已经成了过去。所谓的现在是一个动态的状态,如果将“现在”孤立的看则是一个没有任何意义的一个时间切片。

物理

一直觉得物理是门挺有意思的学科。在我看来物理属于一个混合学科,连接着理论(科学?)与常识。物理是一门功利性的学科,利用物理知识可以做出不少有趣的东西(小时候非常想)。同时在对宇宙的研究过程中,物理又同哲学扯上了关系。