2009年03月27日 16:09
电影《浪潮》源于一个真实的故事。一个教师,指定了一些简单的,看似很正义的规则。结果让一个教育试验逐渐失控成了一场极权运动。而这一切,只不过用了一周的时间。
人对自己思想的失控,往往超出自己预期。
昨天,因为丁是丁同学的一篇《偏见》(原文已删,见备份),引发了BT群了一次大讨论。大家普遍都觉得丁同学的观点非常不妥。于是在引用该文章的南桥blog引发了一场争论。猛禽和TR也分别在自己的blog发表了各自的观点。
至此,虽然有人言辞激烈,但总算都是就事论事,一切正常。
今天。在继续争吵之后,丁是丁删除了那篇引发争议的blog。在BT群又引发了一次RP爆发。但是这次,我觉得方向有些不一样了。大家开始揶揄丁是丁本人,甚至打算逼到她关闭博客。
我嗅到了一点"浪潮"的味道。
我想说,对于那件事情本身来说,我和群里的所有人一样,坚持认为丁是丁的观点有很大的问题,而我们的观点是正确的。但是,就算我们站到了正确的一边,并不意味着我们所做的所有事情都是正确的,就可以为所欲为了。
如果看过那部电影,我想每个人都会有一些想法。我的感觉是,之所以浪潮行动会失控,正是因为参与者将“正确的事”和“正确的人”,“某件事正确”和“所有事都正确”混淆了。而失控之后的悲剧结果,相信是所有人都不愿意看到的。
能够区分“事”和“人”,能够做到“就事论事”,我想是避免“浪潮”的一个重要的手段。我不希望“浪潮”的悲剧,有朝一日在现实中发生。
写在这里与君共勉。
2009年03月27日 09:56
本周是RP爆发的一周。
上周五:头疼,呕吐,浑身乏力。去茶水间打水,发现没水了,换水时扭到腰。
周一:看病,诊断结果 急性肠胃炎。在看病的路上发现一群聒噪的中年妇女,本想饭否之,谁知发现手机无法上网,一番折腾之后,发现浏览器被删掉了。
周二:发现BT群抽风,郁闷不已。尝试搭建OpenFire服务器,每到建库那一步就挂掉。屡屡失败,原因不明。
周三:改建IRC服务器,问题多多。暂缓。BT群迁移至新群。
周四:客户提出BT要求,一天都在赶文档。在手机上重装Opera Mini浏览器,装完后发现仍然无法上网。
周五:Opera Mini突然正常了。身体渐渐恢复。一切似乎正在好转。
希望下周能恢复正常。
2009年03月10日 13:17
最近在重新研究Pylons。在读到Authorization和Authentication部分的时候,颇有些头昏脑胀的感觉。自己考虑了一下,感觉是因为关于Pylons的基础没打好。于是回过头去读了一下基础的部分。也做一点笔记在这里吧。
Pylons是一个符合WSGI规范的web framework。那么,什么是WSGI呢?
WSGI(Web Server Gateway Interface)是Python专门定义的一个用于web应用的接口。这个接口由三部分组成:
1、Server/Getaway端。负责接受客户端请求,并且调用应用实例(Application Object),并将基础的环境(environ)和对应答的初始处理方法(start_response)传递给它。最后将application返回的数据通过write方法写回给客户端。
2、Application/Framework端。Application是一个callable的object,它被server调用。根据 Server端发来的environ和start_response,做业务逻辑处理,然后调用start_response处理状态和header,最后返回body信息。
3、Middleware。Middleware相当于是一个Application的Proxy,它本身是一个Application,但是对底层的Application来说它又是Server,它被Server调用之后,可以接受server传入的environ和 start_response,可以对environ做预处理,或者替换新的start_response之后,再用新的环境context调用底层的 Application,实现一些特殊的操作。Middleware是可以级联的。
在WSGI体系中,environ是一个非常重要的数据传递媒介。几乎所有信息传递,都是通过environ来实现的。
我们可以看到,在这个架构里,整个web应用被分解成两个部分,server和application(middleware的本质还是 application),server负责和客户端交互、调用application。application可以处理业务逻辑。而且两部分通过很简单的environ(根据WSGI规范,这是一个标准的Python dict)和start_response(根据WSGI规范,这是一个callable object,返回一个write的callable object)进行交互。两部分都可以各自实现各自替换。互不干扰。而通过middleware级联的application,也为应用提供了无限的扩展性。
而pylons,就是这样一个架构的框架式的具体实现。借助WSGI的扩展性和开放性,pylons的扩展性是非常强的。
pylons并没有从0开始构建框架,它采用了一个更加底层的WSGI framework:Paste作为自己的基础。Paste是一个非常底层的WSGI framework,它实现了一系列的WSGI组件:一个server,一些工具性质的middleware,一系列辅助命令,等等。关于Paste,我在日后会再做进一步的研究。(从pylons 0.9.7开始,一个比paste更加高阶的框架webOb也被引入了,不过这个对上层是透明的。)
Pylons实质上是设计和融合了一系列WSGI的middleware。比如,routes,一个用于URL mapping的middleware;beaker,一个用于管理cookie和session的middleware;authkit,用于authorization和authentication的middleware,等等。这些middleware并非专为Pylons设计,Pylons也并不严格依赖他们。所以,所有这些东西都是可以被轻松替换掉的。我们也可以自行级联更多的middleware来实现更复杂的功能。
pylons也实现了一个自己的Application:PylonsApp,作为Pylons框架的核心。在PylonsApp中,会根据routes的结果查找controller,并会把environ和start_response也同样传递给Controller。(Controller本质上也是一个Application,它的通用实现是pylons中的WSGIController,各项目的基类实现在lib/base.py中的BaseController)。
2009年03月08日 10:25
在经历了若干次MSI U100和Eeepc 1000H之间选择的摇摆不定之后,终于还是选择了1000H。
其实两台机器在硬件上相当接近。促成我选择的一个最大的原因是,微星的机器在硬件支持方面实在是不够,我看了很多人在U100上装Linux总是碰到这样那样的问题。我虽然喜欢Linux,但在绝大多数情况下,我还是把Linux当成是一个合法的操作系统来用而已。除非碰到真的需要解决的问题,否则我还是宁愿要一个即装即用的系统。所以想到U100也许后面需要费劲的折腾我就感觉不寒而栗。(有人问为什么非要上Ubuntu而不选择自带正版WindowsXP呢,因为对我来说,很多操作在Linux下更舒服更自然,我不太喜欢Windows的很多操作习惯。)
而Eeepc则有一个很不错的选择:Eeebuntu,这是一个基于Ubuntu 8.10并且对eeepc有着完美支持的系统。我考察再三,觉得这是一个很理想的系统。于是,为了一个操作系统,我选择了一台机器。
考虑到eeepc没有光驱,我特地买了一个2G的U盘做操作系统的安装盘。回家之后,先在自己的电脑上用早已准备好的Eeebuntu-2-base.iso和unetbootin制作了Eeebuntu的USB安装盘。然后在安装之前,先打开电脑体验了一下华硕原装的Linux。那操作是相当不习惯啊,简直就是要啥没啥。最关键是没有我最需要的terminal,没有terminal的Linux威力就小了一大半。稍微体验了一下一些硬件比如摄像头麦克风什么的,然后就准备关机安装新系统了。
插好U盘,去BIOS里检查一下,第一启动设备是Removable Dev,我想应该是指U盘吧。然后……重启。见鬼,居然又进了内置系统。去BIOS里把除了Removable之外的启动项全部去除,然后再试……还是不行 囧。
莫非是安装盘有问题?于是拿自己原来的笔记本试了一下,可以啊。赶紧去翻说明书,说明书也没有提到U盘安装的问题(摆明了就是不想让你装自己的系统嘛)。于是上网找答案,还真的找到了:原来要在启动的时候按住ESC不放,会弹出启动设备选择的菜单。汗啊,这么多mimi操作……
不过总算是可以开始安装了。速度还好,在分区的时候发现原先的160G被预分了4个分区,一个ext2的boot,一个 ext3的根分区,还有两个隐藏分区,大概就是传说中的系统恢复吧。直接全部干掉,然后参考我台式机的分区方法,1G的boot(ext2),60G的根(XFS),1G的交换分区,剩下的是home(XFS)。
安装没什么好说的,跟普通的Ubuntu一样。不过Eeebuntu用的是天蓝色系而不是Ubuntu传统的土黄色系,看起来清新一点。
装完之后先跑一下eeebuntu config,然后用mirror.lupaworld.com的源,做了一次升级,然后装中文环境、卸载scim,安装fticx。因为是base系统,装完之后什么也没有,于是又装了一些必要的软件,比如文泉驿正黑字体,smplayer、音乐播放器、gvim等等。基本上就结束了。
试用了一下,所有的硬件都可以正常使用,但因为没有装摄像头测试软件,摄像头还没试。于是又装一个cheese,结果……未发现摄像头 囧。
难道是eeebuntu对webcam的支持不够好?应该不致于吧。突然想起来在折腾BIOS的时候,似乎看到有内置device的项目是disable的,会不会就是摄像头呢?重启去看了看,果然。把它enable,然后再进系统,打开cheese,果然看到了。不过摄像效果很一般。呵呵。
又用了一会儿,感觉声音很小,用以前的解决方式alsamixer也没搞定。去网上找了找,有人说在声音设置上点右键选首选项,然后对弹出的窗口里每一下都把音量拉到最大就可以了。我试了一下,似乎真的有效果,声音大了很多,不过不知道原理。
最后去下载了一个BIOS ROM,拷贝到我旧的U盘(FAT16格式,这是必需的),重启之后按Alt+F2进入BIOS升级界面,升级BIOS。这里要注意它对文件名的要求,我一开始将下载的ROM直接复制没有改名,结果认不出,它需要的名字是1000H.ROM。我就没想通为什么华硕不开始就搞成正确的名字呢?不够人性化。不过问题不大,拔下来在别的机器上改个名字再插上去就行了。
自此整个系统就算弄完了,感觉比Windows还要轻松。下面说说用了一个晚上的感受吧。
键盘不错,10寸的键盘用起来还是比较顺手的。不过有的时候会重复击键,不知道跟用了键盘保护膜有没有关系。屏幕的字体大小因为我平时看多了自己的1600分辨率笔记本所以感觉还好,不过一般人看起来可能还是觉得小。电池不错,昨天在没充满的情况下就已经提供了4个小时的续航力。无线网络我换了802.11n的EdiMax 6424路由器,但是似乎eeepc还是只能用到54M,不知道是不是操作系统不支持的原因。但是速度感觉比原来要好一点,可以流畅的在线播放DVDrip的电影。不过昨天还遇到一个问题,就是无线网卡会突然掉线,然后只能重启系统才能继续使用。我查了一下,很多人给出的解释都不一样,有说是驱动的问题,有说是加密的问题,还有说是netmanager的问题,我现在正在尝试代价最小的做法:把加密去掉,用QoS保证自己的带宽。不知道会不会好,还需要继续观察。