八卦编程

代码片断啊,类库推荐啊,语言学习心得啊,所有一个程序员碰得到的东西,都归这儿。欢迎各位同行肆无忌惮的踩。

Django 1.2 beta released

日Django发布了1.2 Beta 1,诸位童鞋可以在Django的下载页面下载,另外这儿是相关发布信息

SAE again

Sina App Engine第二次内测终于开始,终于也申请上了自己的账号。不过这两天忙公司年会的事也没时间弄,之后过年应该也搞不了了……等年后再试试吧,先占个位子……

各位还没有账号的童鞋,去这儿申请试试吧。反应速度还是满快的,1个小时不到我就收到了邀请码,嗯。

生成一份本地的Django文档

我所知,使用Django的开发人员对于Django的文档都是非常满意的。但是使用起来有一个缺点,就是“必须”在线翻阅。这对于没有网络或者是网络速度烂如我公司这般的情况来说是相当不便的。那么,怎么办呢?其实,如果你试过通过svn获取django代码的话,应该会看到,checkout出来的内容中有一个docs的目录,我们需要的东西其实就在里面。

由于一般使用的django版本都是正式发行版,所以从trunk获取文档一般都不是最合适的。比如我使用的是1.1.1的版本,那么就应该使用如下命令

svn co http://code.djangoproject.com/svn/django/tags/releases/1.1.1/docs django-docs

来获得相应版本的文档。如果你使用了其他版本,你可以到Django Code上去查看相应的文档位置。

在获得文档源码之后,我们还需要安装sphinx来继续余下的翻译过程,在Archlinux上执行

sudo pacman -S python-sphinx

安装完毕后就简单了,进入刚刚checkout出来的django-docs目录,执行

make html

就可以在_build目录下生成一份html的文档。当然你也可以生成latex等格式,这个就萝卜青菜了。

为了方便诸位懒得执行上述步骤的童鞋,就顺道上传了一份1.1.1的文档,民那可以到这个地址下载。

Django 1.2 Alpha

Django 1.2 Alpha 版本现在已经发布了,各位童鞋可以到Django的下载页下载尝鲜,在这儿可以看到相关的发布信息

注意,这只是Alpha版本,Django官方也不推荐在产品环境使用。正式版预定是在今年的四月份发布,有耐心的童鞋请继续持鼠观望。

Django的数据库垂直分层

,Django的多数据库支持来了,ms是用起来还是相当方便的,在settings里面定义好相应的数据库别名,就可以在model/manager中是用using字段指定使用哪个数据库。这下该用RDB就用RDB,改用KV就用KV,大家随便玩哈。

哦对了,目前只有SVN版本支持,文档地址是Multiple Databases

修正django admin raw_id_fields bug

Note: 上午还说 最近更新可能会比较缓慢的 ,结果下午就又上来发了一篇,我自己也很囧啊……

Django Admin中使用ForeignKey是一个比较痛苦的事, 默认使用的是 Select 在数据量比较大的情况下要选中需要选择的对象实在是太难了…… 最近刚刚好又碰到了这个问题,为了图方便,干脆就祭起了 raw_id_fields 这个属性来把外键的选择简化为直接输入id。

可是使用下来出现了问题,如果输入的id无效,Django并不会返回期望的包含错误信息的form,而是直接报了个 django.template.TemplateSyntaxError 的错误。情况很奇怪,FK使用的是 ModelChoiceField ,理论上对无效id的错误已经做了捕捉,那问题到底出在什么地方呢?

继续阅读

区别emacs同名buffer

件同名是经常出现的事,其他编辑器是咋样的我不清楚,未经过配置的Emacs会在同名buffer后面加上<2><3>这样的序列来区分。但是这种做法并不直观,同名的buffer开多了就会搞混了。

事实上emacs已经提供了保持每个buffer名唯一的功能,在菜单栏依次点击 Help > Search Documentation > Lookup Subject in User Manual(抱歉,我一直没找到这个菜单项对应的命令……),然后在mini buffer里输入uniquify的话就能看到相应信息了。

继续阅读

Django测验

刚发现了一个Django小测验,有兴趣的童鞋可以到这个地址做着玩玩,明日公布答案。不过结果也别太在意了,毕竟有些东西平时使用也用不着呢。

继续阅读

Django和Nginx的接合问题

J-Lite使用的就是Nginx和Django,使用fastcgi的方式接合,配了有好一阵子了吧,一直相安无事。所以总以为发布Django还是一件很简单的事的,可是昨日在单位却碰到了问题——URL总是出问题……具体的情况是无论输入什么URL,Django都会报404。可是事实上使用Django自带的runserver和werkzeug都是没有问题的,直接跑shell下resolve也是解析得欢得很,问题很诡异。

苦苦纠结良久未果,只好向同事请教。还是同事有经验,很快就指出了问题所在。原来是项目的设置出了问题,settings.py里有一个FORCE_SCRIPT_NAME的字段需要设置为空字符,以此来覆盖掉nginx传递请求给django时传过来的脚本名称。试了一下,果然OK了。

问题是解决了,可是总觉得有点奇怪,因为我记得很清楚,J-Lite并没有复写这个参数,怎么就碰不到这个问题呢?重新翻开vps上的nginx.conf才发现,原来自己上次配置是fasgcgi的参数并不是用include fastcgi_params这样的方式引用缺省参数表,而是在server段直接定义的。再继续挖掘,在fastcgi_params中找到了这么一条代码:

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

这应该就是Nginx传递脚本名称的设置了。果然,在删掉这段之后,即便不定义FORCE_SCRIPT_NAME,之前的问题也不会出现了。

由于问题比较诡异,所以立马写下来做个笔记,免得又给忘了这事。

Firefox扩展页面系统将使用Django

息来源:http://micropipes.com/blog/2009/11/17/amo-development-changes-in-2010/

AMO团队在上周山景城的会议上制定了2010年的开发计划,其中一个就是将AMO的系统从CakePHP向Django转移,主要原因是Django提供了更好了数据库抽象、高效的单元测试和更好的debug功能。Django site将再添新丁,可喜可贺, おめでど~