Archive for the 'Python' Category

Saturday, March 20th, 2010

本来,想给这个随笔起个更眩的名字:《跟随赖神学协程——之一》,原因嘛,自然是因为赖神的协程三篇之一(协程初接触)。不过,怕赖神k我,所以标题党还是朴素一点吧。 至于标题里的问号,是我有意加上去的。原因是在推上赖神认为“python 语言和标准库是不支持协程的(3.x部分支持)”,并且如果 python 自身支持协程,“stackless py 该有多么惭愧啊, ”(stackless python 的协程详情请看这里)。但是因为 PEP 0342 的描述,令我很迷惑。python 自身是否可以实现协程,这个值得商榷。我不确定,保守点好,给自己个后路走。加个问号吧……如果这不算协程,大家就当我实现了“伪协程”吧。嘿嘿……

Monday, February 8th, 2010

Twisted 的 defer 是个强大但是诡异的东西,遗憾的是,除了官方文档和这些文档的翻译,其他资料不多。而基于 defer 的客户端协议实现资料就更少了。Memcache 的协议实现也是利用 defer,但是除了一个单元测试的代码外,很难看到其他可以参考的实现。搞了几天,总算是有一个简单的封装,可以避开 defer,无须让所有参与开发的技术人员一定要弄懂 defer 才能用 MemCacheProtocol。 上代码吧,这样封装,应该是比较好理解的……

Tuesday, November 10th, 2009

这几天在帮忙开发一个 python 项目。使用 netbeans 的时候,遇到一个诡异的问题。 如果使用“运行”来跑项目,一切正常。而如果使用“调试”来跑项目,当执行到 import 第三方的库的时候,就会产生“ImportError: No module named xxxx”。郁闷不已,上网查了半天,没找到可用的信息。 毛主席教育我们“自己动手,丰衣足食”。于是就祭出“观察、归纳和总结”的科学的研究方法,对这个灵异现象进行了一番探索。

Monday, September 21st, 2009

关于配置文件,在 PHP 的 Zend Framework 中我做过一些简单的关于性能的测试:http://www.mikespook.com/index.php/archives/36。将 ninnypro 的配置文件从 ini 修改为 xml ,并且声称能提高传说中的性能。 最近被调到另外一个在用 python 的组帮忙,阅读了他们的实现服务器端的 python 代码之,配置文件近二十余个,全是 xml 文件。为了使用着些配置文件,从 XMLFile 继承,实现了二十余个 Config 类。 这看起来似乎没什么问题。

Tuesday, May 5th, 2009

尝试用 Django 写了一个简单的企业站,部署过程中出了不少问题,不过还好都一一解决了。 “激动不已”的看到了首页,长出一口气:“总不会再出什么其他问题了吧!”随手点了一个内部链接: ————————————————— TypeError at about ‘NoneType’ object is not iterable ————————————————— 这回可晕倒了,怎么会有这样一个错误? 接着往下看,发现错误是由于丢失了一个反斜线引起的: Request Method: GET Request URL: http://www.i-fang.comabout Exception Type: TypeError Exception Value: ‘NoneType’ object is not iterable Exception Location: /usr/lib/python2.5/site-packages/django/core/handlers/base.py in get_response, line 77 Python Executable: /usr/bin/python Python Version: 2.5.2 Python Path: ['/home/www/www.i-fang.com/', '/usr/lib/python25.zip', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', [...]

Tuesday, August 26th, 2008

这部分内容虽然不多,但是看了好多天。 在 tgadmin 自动生成的 appname/appname/controller.py 中有如下代码: 1 import turbogears as tg 2 from turbogears import controllers, expose, flash 3 from cherrypy import request 4 # from sandbox import model 5 # import logging 6 # log = logging.getLogger(“sandbox.controllers”) 7 8 class Root(controllers.RootController): 9 @expose(template=“sandbox.templates.welcome“) 10 def index(self): 11 import time 12 # log.debug(“Happy TurboGears Controller [...]

Tuesday, August 19th, 2008

Zope3 很强大,但是一直徘徊在 python 2.4 不升级。学习的兴趣骤减。Django 版本一直停滞在 0.96 不前。据说 12 月会出 1.0,但是兼容性似乎不能保障。偶然的机会看到一篇 TurboGears 的文章,似乎停简单。于是乎,先学安装。 TurboGears 的安装已经简单到了及至:easy_install turbogears。 在 ubuntu 下使用 easy_install 这个命令需要安装 python-setuptools 这个包。 在终端中执行 tg-admin 这个命令,一切正常,除了会有一个警告:UserWarning: Your installation of Python doesn’t have a profile module.原来还需要安装 python-profiler 这个包,使用 apt-get 安装之后,这个警告就不会再出现了。 使用 tg-admin quickstart 生成一个项目,比如 sandbox。进入自动生成的 sandbox 目录,执行命令 ./start-sandbox.py 一切 OK,只要 8080 端口没有被占用,TurboGears 就正常启动了。 在开发模式下,如果需要修改 8080 端口,找到 [...]