2009年3月17日

昨天有点不舒服,有点老毛病,但好像还和吃的东西有点关系,回来全倒出来了。之后就倒到床上睡觉了,一般到今天快点8点多才起来。

最近的工作环境有点压抑,难道是我太固执了吗?不会给任何人面子,还是我太不成熟,不善于隐藏呢?不过我相信,这些发生的事情就像《Slumdog.Millionaire》所说的一样It is written。今天至少是一个特殊的日子,但对我来说也不是太特殊,原因是我依然再做以前一样的事情,已经有太长的时间没有被改变了,我是否应该来一次越狱呢,希望我还没有变老。

你是嫁给爱情还是爱人?突然从一部电影中看到的。

哈哈,祝我生日快乐吧。

PHP中的include

这几天在做一个PHP的模板引擎,这是一个有许多对象的东西,但是在PHP中没有命名空间,所以一般会采用PEAR的命名方法来组织类,这样的话就有许多的类分布在大量的小文件上,这样在加载的时候会造成性能的损失。为了解决这个问题我研究了一下include这个东西,通过查看源码和一些网络上的资料,发现在include和eval在底层实际是同一个东西,如果在一个文件中加载所有的类,这样只要包含这个文件就能获得所有的类了,还能保存不会存在类的命名空间问题。如果再通过apc这类中间码缓存系统,性能应该会更好。

实际上,在ZF1.7中的Zend_Loader就有这样的缓存方案,并且在官方文档的性能优化章节也说明了。

我关注的经济学家

我不知道我是什么时候开始喜欢关注经济学的,最近看一些经济学家对现在世界当前的危机的一些研究,感觉已经到了非常严重的边缘。

我关注过的和看个其著作的有:宋鸿兵,郎咸平,茅于轼。郎咸平的书还没来得及看,其它两位都看过一本。经济学家们虽然都是研究经济学的,但研究方式都不一样,说起来就是那种百家争鸣的那种感觉。像茅于轼老先生的言论和著作都比较理想化,向大家说道理,但有时候良言不是那么让人接受,所以老人家默默的在做小额贷款,来证明自己的理念。你要想想别人80岁的老人家在通过自己的实践来证明自己的研究。某些网民们就为了开始证明其存在,而破口大骂。一句老话送给这些网民们,人心不足蛇吞象。

知道宋鸿兵最初是看了货币战争这本书,算是对经济战争有了大概的了解,此人的文章看得不多,不过今天刚看了一篇名为《宋鸿兵:金融海啸第二波即将登陆(全文)》的文章,感觉有点意思,6个月后我们来验证下其相似度。

郎咸平其实是我最迟关注的经济学家,也认同其讲的一些原理。感觉这个人比较有特色。

虽然经济学家们都有自己的看法,但你自己怎么去看这些人是你自己的感觉,不应盲目的去追捧某一位经济学家的言论,叫各家之长才是重点。

附上这位的博客:茅于轼 宋鸿兵 郎咸平

昨天重装了系统

昨天,突然没事想装个杀毒软件用用,就下载了一个最新的卡巴斯基试用。然后扫描,还找到几个木马之类的东西,之后干掉之。

结果晚上回来开机后,尽然出现蓝屏问题,在自助重启后,键盘不能使用。最终还是重装了一次系统,才解决。马上这台电脑就快过保了,不知道还能用多久。下台电脑一定要买苹果的。

当Python2.4.3碰到Gmail

最近,再使用Django发邮件的时候出现一个问题,就此记下。我是通过gmail的smtp来发送邮件的,但在服务器测试的时候发现The read operation timed out的问题,后来在网上一查,原来是Python2.4.3中smtp库的问题,不过这个问题已经在python2.4.4中fix了。

原文在这

signals的存放位置

根据官方文档signals一般放在app中的management.py文件中,但我在使用svn中的版本时候,发现通过view的时候尽然不会调用signals,但在命令行和测试中都可以。

如果你也有这样的问题,那么把management.py中的代码放到app的__init__.py中,这样就没有问题。

最新的开发版本中的session修改

原来,想实现一个记住我的功能时,需要修改django的代码,因为session中间件对处理记录sessonid的cookie过期时间是写死的。在最新的开发版中,对session对象添加了几个有用的方法,set_expiry(),这个方法根据接受的参数的不同的有不同的效果。

在一般情况下,站点默认使用cookie关闭浏览即取消,当使用记住我的时候,cookie则在某个时间内取消。

首先,需要把SESSION_EXPIRE_AT_BROWSER_CLOSE = True

然后,写个装饰器:

def remember_me(view_func):
    def _dec(request, *args, **kwargs):
        if request.POST.get(‘rme’) == ‘1’:
            request.session.set_expiry(request.session.get_expiry_age())
        return view_func(request, *args, **kwargs)
    return _dec

其中rme是记住我的表单项,对django.contrib.auth.views.login使用这个装饰器,呵呵这样就在不用修改login代码的情况下添加了记住我的功能。