6月4日,星期四,晴
2009年06月04日 09:42
这一天终于来了。虽然有人希望这一天不存在,但它终究还是会来的。
早上听音乐早餐的广播,主持人有意无意的说了一句“89年的同学”,听得我心头一热。尽管什么也没说什么也不能说,但我知道,这样就够了。
昨天看到有人批评我们只会玩数字游戏。在这种环境下,不玩数字游戏还能做什么呢?既然不能说什么,那不如就留下一个数字密码,让好奇者自己去探索密码背后隐藏的真相。以这种方式,将信息传承下去。
史书记载:仁帝三年,六月乙酉,晴,朝野无事。乙辰,仁宗废。
2009年06月04日 09:42
这一天终于来了。虽然有人希望这一天不存在,但它终究还是会来的。
早上听音乐早餐的广播,主持人有意无意的说了一句“89年的同学”,听得我心头一热。尽管什么也没说什么也不能说,但我知道,这样就够了。
昨天看到有人批评我们只会玩数字游戏。在这种环境下,不玩数字游戏还能做什么呢?既然不能说什么,那不如就留下一个数字密码,让好奇者自己去探索密码背后隐藏的真相。以这种方式,将信息传承下去。
史书记载:仁帝三年,六月乙酉,晴,朝野无事。乙辰,仁宗废。
2009年06月03日 14:26
本来是想等到明天再写点什么的。不过今天早上看到的一长串名单耳熟能详的网址让我决定还是先写点什么。
这几天,中国的互联网可以用一个字概括:折腾,那是相当的折腾。现在的控制,已经从“危险网站”扩大到了很多非常大众的网站了。而这一控制的结果,也可以算是成效显著:很多原本什么都不知道的80后90后,从这些变化中感觉到了什么,开始打听到底发生了什么事。而我们知道,谣言的传播速度,是超乎想象的。
这是一个非常好的结果。我曾经担心过,有些事情会像投入水池中的小石子一样,荡起一波涟漪,然后消失,就像从来没有存在过一样。实施证明,我的担心纯属多余,每年的某天,某些希望别人忘记的人们,总是会用一些非常愚蠢的办法,来提醒大家事情的存在。
那么,就让我们记住它,一直记住它,直到某天,真相公布于众时,让大众给出自己的判断吧。
而我越来越觉得,这一天不是那么遥远了。
附:
被影响的网站(更新中)
2009年05月31日 10:57
前天跟猛禽碰了一下头,讨论了一些狗屎皮项目的问题,其中不可免俗的再次提到了开发框架的选用问题。当然,我坚持认为Pylons是一个很有前途的好框架,但是为它选择各种middleware也是一件非常累的事情。于是我们又想到了Turbogears 2.0,这个基于Pylons的框架。于是去它的网站一看,运气不错,TG2.0正式版5月27号新鲜出炉。于是我当然是非常有兴趣去看一眼了。
TG2的开发团队,显然对这个新的框架很满意。他们说,
TurboGears 2是对TurboGears的再造,它回到了TurboGears的根源。
TurboGears2之于Pylons就相当于Ubuntu之于Debian。
他们想做一个用户体验更好的环境,但是当用户需要更强大的能力时,他们也能提供。实际上他们也基本上做到了这一点(得益于Pylons的优秀架构)。它基本上完全继承了Pylons的一切,只是做了少量的改进(有一部分不能算是改进,只能算是对TG1的兼容性考虑),集成了不少第三方开发包(有一些其实也是TG1已经在用的)。
当然,一些改动也不可避免的造成了开发习惯和风格的变化。下面我就具体的说一说目前我了解到的一些区别。
1. TG2的安装比Pylons稍复杂一些,虽然也使用了virtualenv和初始安装脚本tg2-bootstrap.py(非常类似于Pylons 0.9.7的go-pylons.py),但安装的东西明显多了,而且因为使用了respoze.who作为权限认证框架,必须要安装zope_interface库,而这个库是需要现场编译的(所以在Ubuntu下必须要安装python-dev,安装文档还要求装build-essential,很吓人,不过我实际测试下来build-essential应该不是必需的。)。而且比较奇怪的是,在安装完TG2之后,创建项目时,文档要求你再做一步 python setup.py develop,这个步骤又会补充安装一部分组件。很奇怪,不知道TG2为什么要把组件安装分成两个步骤来做。
2. TG2创建项目的命令是 paster quickstart 而不是 paster create -t turbogears2(不过根据paster的帮助信息显示,后者应该也可以用,具体有什么区别还不知道)。
3. TG2默认会创建一个root.py的controller,而不像Pylons那样用命令新建Controller。而且它的URL是使用TG1风格的expose而不是Pylons的routes。(虽然Routes仍然可用,而且实际上TG2还是基于Routes的)。这个变化会导致TG2的开发风格跟Pylons有所区别。不过对于大多数情况来说,expose确实要比routes简便一些。而且单controller的风格也减少了过度使用Controller的风险。(我个人认为,一个Controller应该是一个大的功能块,比如前台界面是一个controller,后台管理是另一个。在Pylons里因为没有硬性限制和风格导引,有些人会把controller当作功能区分来用,这样其实会比较混乱。TG2的风格导引我认为是比较正确的)
4. 在创建项目的时候,TG2会问你是不是需要使用Authorization和Authentication的功能。如果你选择Yes的话,TG2会自动帮你创建user、group、role等的一套数据模型,并且会产生一个security.py的controller,里面写好一系列差不多算是演示性质的代码。这对于新手而言,当然是比较方便,因为居然有一系列现成可参考的代码在那里。不过,其实我不太喜欢这种做法,你生成出一堆对我来说无用的代码,还要我来修改或者删除,这是何苦来哉。不过,应该是可以在生成的时候选“No”,然后自己手工增加Auth功能,虽然没试过,不过根据我使用Pylons的经验,应该没太大问题。
5. TG2选择了ToscaWidget来做自动生成Form的工作,这个东西,从文档介绍来看,似乎不太合我的胃口。具体使用效果要待观察。不过,大不了我可以不用。
6. TG2的文档比Pylons要好很多,毕竟它是一个“立即上手”类型的框架,对于很多实际开发中的问题都做了阐述和解决。不过大概是2.0刚刚正式推出,文档的完善程度和准确度还需要提高。
7. TG2默认的模板引擎是Genshi而不是Pylons默认的Mako,不过TG2可以相当方便的切换默认模板引擎,Mako也是它默认支持的引擎之一。所以换成Mako是非常方便的。而且TG2还支持多模板引擎混合使用。
目前大概就了解成这样。总体来说,我对这个框架印象还不错,最不济我可以把它完全当作Pylons来用。而它提供的那些集成功能,有多大程度能帮到我,需要进一步做试验。但是我想,完全没用的可能性是不大的。
2009年05月19日 22:39
最近一段时间因为新版本要上线,忙得焦头烂额,自然也不顾上写blog了。
今天晚上上了一下线,有人告诉我说,PivotX 2.0正式版发布了。
于是就小小升了一下级。因为是从beta升到正式版,改动相对不算太大,外观也没有什么变化。仅仅在这里记录一下。
虽然这个blog并不十分完美,现在也懒得再折腾了。能用就行。
2009年05月11日 13:59
上周一周在北京出差,基本上处于与世隔绝的状态,因此直到回上海之后才开始听说并关注了一下杭州的70码事件。
在这些天里,网上的评论已经铺天盖地,对事件的介绍也是比比皆是。该说的,该骂的,都做得差不多了,我本来也没什么更多的可以说,不过因为自己在文二西路那一带也曾经工作生活过一段时间,所以还是想说点什么。
不算是评论。对于事件本身,我没评论。
1. 撞人的小子凭他那态度,再被骂狠点也不解气。
2. 但他不应该成为这次事件的替死鬼。
3. 这件事被闹大的原因,比这件事本身要重要得多。
4. 这件事,以及很多很多其他的事情,不应该在热闹一阵子之后被渐渐遗忘。
就这么多。
2009年04月28日 12:51
Authkit是一个很不错的用于WSGI的权限认证框架。Pylons Book的 权限和认证部分也讲到了它。然而,它的文档实在是太糟糕了!太糟糕了!包括Pylons Book在内的全部文档都语焉不详,对实际开发起不到太多的指导作用,而很多其他的资料和讨论都已经过时了,里面的参数之类全是错的。不得已,我只好通过 Google大法和阅读源代码,搞清楚了很多问题。为了不让别人走太多的弯路,我愿意将我所了解的东西分享。
下面我将根据我的实际使用为例,逐步介绍AuthKit的使用和定制方法。希望能为大家在真实世界中使用AuthKit提供一点经验和帮助。
因为排版需要,全文另存,请移步至
http://ch-linghu.3322.org/article/authkit_practice/article.html
参观。
原文无法评论,有看法和意见请在本文留言,谢谢。
2009年04月12日 17:37
二、如果发现mplayer做不到,请参考第一条。
[以下是一点解决问题的笔记,希望能帮到跟我一样曾经痛苦过的人]
事情是这样发生的:
两周之前我在杭州的朋友家里拷贝了一本《一个无政府主义者的意外死亡.rmvb》到我的Eeepc上。在旅途上看了一个开头,觉得很不错。
因为一些原因,在那周的周末,我决定重装我的Eeepc,做成Windows和Eeebuntu的双系统。于是,在主观认为eeepc上没有任何有价值的文件之后,我直接重做了分区。那个文件也随之消失了。
在重装完成之后,我又想起那个片子来了,不过因为是部视频文件,我倒也不担心,再去下载便是。于是在VeryCD上重新找到了这一部片子,下载之。
下载的是一个bin/cue格式的VCD光盘映像。本来我想了很多方法尝试去把VCD转换成普通视频格式。后来,偶然中用mplayer播放了一下,发现mplayer居然可以直接播放bin/cue格式,只是没有声音。从输出看,在尝试了一系列的音频解码器之后,mplayer报了一个“Cannot find codec for audio format 0x50”的错误。
于是我想当然的认为是片子出了问题,想去下载其它的格式。没想到这个片子比我想像的要难找,找了半天也没找到除了VCD映像之外的可以下载的格式。在花了一段时间未果后,我想,干脆看看是不是能解决原来的片子的声音问题好了。
没想到在网上一番搜索之后,还真的找到了解决方法:为mplayer加 -aid 0参数即可。因为某些视频制作软件在制作的时候,会音频标记为mp2和ac3两种格式(实际上的格式是mp2)。而mplayer会很固执的按照ac3格式寻找解码器,直到所有尝试之后报错。而 -aid 0 的意思是强制使用MPEG格式解码音频,于是就正常了。
经过了包括这件事在内的一系列视频播放问题的解决之后,我再次坚信,mplayer是万能的,如果mplayer做不到,请参考前条。不过,说句实话,面对mplayer多如牛毛的参数和参数组合,想要不依赖google解决问题,还真是一件相当艰巨的任务呢。
2009年04月03日 09:08
父母带着小虫回家上坟去了。这周开始又恢复了二人世界的生活。
没有人帮我们打理,一切又要完全靠自己了。
生活也逐渐有了些变化:每天上班,下班,烧水,做饭,洗碗,聊天,看片,睡觉。单调而有趣。
小虫不在的日子,思念会一下子涌上心头。但现在每天在电话里听到小虫的声音,居然也能让我产生巨大的幸福感。这是以前每天回家都能看到的日子里所体会不到的。
有段日子没烧过菜了,动手的时候不免笨拙。不过想着把冰箱里的菜烧成什么花样,每天都有变化,对我而言也是很不错的脑力游戏。
最痛苦的是洗碗。不过每天虽然抱怨连连,但最终还是能把任务完成,想想这也是要靠毅力的。呵呵。不过LP听到了我的抱怨,洗碗机已经摆上了议事日程。
现在不能像以前那样回到家就打开电脑跟网上的朋友侃天说地,每次忙完固定的活,就要八点多了。不过没有了网络的生活,也增添了几分家的温馨。
昨天接到父母的电话,家里有些别的事情,估计要再待上一段时间。我们的这种生活大概还要持续一段时间。
其实,我还是蛮喜欢这种痛并快乐着的生活的。