Python

重拾 Perl

最近,我开始重新学习 Perl,尝试用 Perl 来完成日常的开发程序。

原因是前几天听第 27 期内核恐慌时,主持人提到了 Perl 6。然后吴涛说起 Perl 时,感情很复杂。我当时心想,我对 Perl 的感情也很复杂咯。首先是对今天的程序员来说,Perl 太原始了,与 Python 和 Ruby 等语言相比,更显古老。回想起来,自从我学习了这两种语言后,我就再没有正儿八经用 Perl 写过程序。而我真正有了属于自己的电脑,是在 2007 年,那个时候我正好开始学习 Python,之后就没有碰过 Perl。

惊人的 PyBlosxom

好像在 2007 年初那会我对 blog 刚刚开始感兴趣的时候,就听说过 Blosxom 了。它是个非常简洁的 blog 发布软件。其核心程序只有一个 cgi 文件,里面是 Perl 代码。它的功能也十分简陋,连最基本的评论功能都没有。而这些功能都使通过插件来完成的,页面的样式通过 flavours 来安装。我曾经在自己的共享空间里实验过,比较麻烦,不符合我的要求,于是我就没有再管它。

MoinMoin Wiki

今天我终于成功的在自己的 VPS 上跑起了 MoinMoin。

我很早之前就想用 MoinMoin 了。我最早在虚拟主机上运行过 MediaWiki,感觉不错,不过我更希望使用 MoinMoin。首先 MoinMoin 是用 Python 写的,我比较熟悉;而 MediaWiki 用的 PHP 我实在是没有入门。如果我可以运行 MoinMoin,那么我就可以更好的操纵这个 Wiki。

10 分钟写一个 blog 系统

和很多人一样,我第一次听说 Ruby on Rails 的时候知道了“10 分钟内写一个 blog 系统”的视频。Rails 的创始人 David Heinemeier Hansson 边讲边做,七搞八搞,伴随着一声声 “whoops”,一个简单的 blog 就完成了。

web2py 非 web.py

我彻底的晕菜了。

我们这学期的《软件工程2》课的学期项目是一个笔记发布与分享系统,我们组有 11 个人,分为 logic、db 和 UI 小组(其实就是 MVC 了)。我们在开始的讨论时主要确定了两个 web 框架,Rails 和 web2py,以便在第二次的小组会议上选择。

校内状态更新有进展

不愧是水木的Linux版主,yegle直接用wget就能成功的修改了校内的状态。不过话说wget、curl这种看似不起眼的命令行工具还真是牛屄,man了一下yegle的代码里面wget的参数,感觉我过去只把wget当成一个下载软件只是大材小用了。

我测试了他的代码。刚开始的时候一直不能成功,后来经yegle在Twitter上指点后也成功了。只是不会更新“目前”的状态,而是修改的“目前”的上一条状态。换句话说,目前的状态显式“什么都没做”,但从个人主页上可以显式状态被修改的历史。

这已经相当程度的解决了问题了。我对用shell处理xml还不熟悉,不能做到一直在后台更新Twitter的消息,有待以后研究。或者再继续修改那个Python脚本。要么就干脆结合Python和Bash,也可以解决问题。

被Python字符串弄崩溃了

受发芽网上的一段“校内网发帖机”的启发,最近想修改那段代码,让它可以部分的实现Twitter状态和校内网同步。之所以说“部分的”是因为我不知道怎么样让它像Facebook的Twitter插件那样Twitter的消息发送完毕后几乎同时(相差不到10秒钟)把Facebook的状态一并更新。另外一点很惭愧,就是我对HTTP编程不熟悉,目前还找不初修改校内的状态要提交的代码,只能修改一下原来的代码,在写日志上面做文章。

就算这样,也还是遇到了不少问题。我目前的打算是像过去WordPress上用过的一个插件,名字大概叫twitter-post那样,总结一天的Twitter消息,成为一篇文章,发送到校内上去。我开始用的是python-twitter这个包,很方便的就能弄到Twitter的消息。不过在它的GetUserTimeline()方法的说明中说到里面有一个since参数,提交一个“HTTP-formatted time”,就可以获得从那个时间点以后的消息。我觉得它应该能让我获得前一整天的所有消息,虽然需要做点处理,删除今天的消息。但这个“HTTP-formatted time”我实在是不知道是什么东西。昨天下午几乎找遍了我能从网上找到的所有表示时间的格式,怎么测试,它都只给我默认的最近20条的消息。可笑的是,python-twitter的代码里有test可以运行,而里面测试since参数的用例里用得Twitter帐号居然总共才不到10条tweets,这样GetUserTime()返回了所有的tweets,当然都是他要的时间段的啦。没办法,我只好去它的Google Groups里发问,结果今天居然找不到我提交的帖子了,难道是开发者觉得我是捣乱的?!!

翻译Python历史:Python对动态类型的使用

This post a a Chinese translation of Guido van Rossums‘s article “Python’s Use of Dynamic Typing” on his blog named “The History of Python“.

原文地址:http://python-history.blogspot.com/2009/02/pythons-use-of-dynamic-typing.html

ABC和Python间一项重要的区别是类型系统的总体特点不同。ABC是静态类型语言,意味着ABC编译器分析程序中使用的类型并判断它们被正确的使用。如果不是,程序会被拒绝并无法运行。不像今天多数静态类型语言那样,ABC使用类型推断(像Haskell那样)而不是像你在C之类的语言中看到的显式的类型声明那样。相反的,Python是动态类型语言。Python编译器高兴的对程序中类型的使用不感兴趣,所有的类型检查都在运行的时候进行。

尽管这样看上去对于ABC是一种很大的远离,但它并不如你想象的那样不同。不像其它静态类型语言,ABC不是(不曾是?它在今天确实已经是纯历史了:-))仅仅依赖于静态类型检查来确保程序不崩溃,当所有的操作执行时,它有运行期的库来为它们再次检查参数类型。这样做是因为编译器健全的类型检查算法的一部分在最初的语言原型实现中并没有被实现。运行期的库在调式的时候同样有用,因为显式的运行期类型检查可以产生漂亮的错误信息(指向实现团队),而不是解释器毫不检查参数时就盲目的运行而引起的core dump。