对脚本语言的感觉

今天上午考完了《面向对象》这门课,往后一段时间就不用再接触继承(这还好)、Shadowing、Refinement、Overloading之类的概念了。相对来说我还是更喜欢可以快速开发的脚本语言的。

从Twitter更新校内状态成功!

继续上篇文章,紧天吃午饭的时候觉得那里说的两种方向都不太容易解决。Python的那个最诡异,实在不知道是哪里的问题,而且Python那个脚本,用了几个库,好像我目前手上能用的虚拟主机上(Dreamhost和SDF)都没有;Bash的那个,我实在是不想把目前的宝贵时间花在学习一门新语言上。然后就想到了我过去最喜欢的Perl,既然它被称为是一门“粘合语言”,应该在里面可以直接调用yegle写的wget语句,而且前两天用Perl写过海词客户端简化版,里面就用了正则表达式来处理了HTML。相对与海词的那个排版混乱的HTML输出,Twitter给的XML可简单清晰多了。

我不知道Perl里怎么解析XML,不过Twitter的XML很简单,我几下就弄出了需要的最新的tweet文本和那一条tweet的时间。然后用yegle的wget语句提交,一下子就成功了。然后就发现了一个困扰了我长时间的问题:如果tweet里面是中文,就无法提交(实际上是提交了一个空信息)。然后让程序打印初那条tweet的文字,发现都成了写这样的东西,然后就到处研究怎么把它转换成正常的文字。后来从这里知道了需要用HTML::Entities来处理(代码里第38行)。做了这一步后那些wget语句就又好使了。

校内状态更新有进展

不愧是水木的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里发问,结果今天居然找不到我提交的帖子了,难道是开发者觉得我是捣乱的?!!

看图不说话:雁

昨天走路去学校的路上,分别用手机照了两张照片,里面是温尼伯当地的一种雁。冬天会南飞到美国,夏天就会飞回来。

第一张照片是去学校的时候照的,离我比较远,不是很清楚。

成功的一面

今天下午研究了一個台灣的blog小團體“憂鬱馬戲團”的歷史。這個團體成立與2003年,是幾個人一起的松散小組織。有一位負責技術的人用Movable Type在個人主機上搭建blog程序,團員們集資支持,然後就可以不用管底層的技術,專心寫blog了。這種運作模式有點像TypePad。

转移了过去的blog

我在2007年3月份开始在独立空间上写blog前,曾经在几个BSP上写过blog。过程分别是Blog.com.cn -> Blogger -> Blogsome -> Blogger(beta)。

最早在blog.com.cn上写了几篇后,发觉Blogger更优秀一些(现在时间长了,我对blog.com.cn都没有了什么印象,它好像不是WordPress搭建的),于是就从Blogger上开写。

看图不说话:面条……

Someone wrote on the wall of toilet

注:Mr Noodle是加拿大常见的方便面,有袋装的和桶装的,也分不同口味。我刚来加拿大的时候吃过几次,味道能让人淡出鸟来。感觉有点像92年左右我第一次吃的方便面──“鸡汤方便面”的味道,一般是一小块面饼加上一小袋调味粉。当时叹道:论方便面,还是中国的最发达啊!

让Movable Type生成Sitemap

上一篇文章里说,我目前的blog在Google索引里总是旧的链接排在前面,而新的排在后面。新的链接和旧的相比几乎没有变化,两者间唯一的不同在于旧链接的结尾是/,而新链接是以.html结尾的。把/换成.html就可以访问到新的页面,否则就会得到404错误。我是没有问题,但不知情的人从Google里搜索到我的页面,获得404错误就不大方便了。

因此我在上一篇文章里写过,我在想法子让Google把顺序调整过来。我当时的主意是先在robots.txt里面加上“Disallow: /”这一句,粗暴的阻止任何搜索引擎索引我的全部页面。等Google搜索结果里面不含我的站点的任何结果后,再去掉robots.txt里面的那一句,让Google重新索引。相当粗暴的办法,我也不知道有没有效。但写文章的时候我自己提到了Sitemap,我才想起可能我的问题可以用sitemap来解决。

Google 和百度对我的 blog 收录的观察

最近在新的blog系统上花了些心思,并在搜索引擎收录的方面有了一点心得,记录如下。

1 百度懂得找新页面

我过去用WordPress的时候,单篇文章的URL用的是/年/月/slug/的格式。而现在用的Movable Type所产生的静态页面的URL却是/年/月/slug.html格式的。这样一来在搜索引擎里的单篇文章地址就有许多过去留下的错误链接,这些链接都无法访问。在Google里面,挺奇怪的是我过去的那些文章都排在了前面。大约前3页以内没有.html结尾的页面。我不知道是不是那些地址资历“老”的原因。而在百度里,我新发布的页面都排在前面,刚才又查了一下,似乎旧格式的页面都不在搜索结果里面了。