信息技术

昨天偶尔遇到的事情

已经想不起昨天我是怎么看到这篇文章了。作者孔令春对我在2007年对他做出的评价发出了疑问。我曾在2007年7月20日左右在Twitter上说了一句“孔令春学习网,纯粹一个抄袭网站。虽然聚合了一些好文章,但确相当可鄙。”,当时我的blog上装了twitter-post这个插件,自动把当天的twitter条目整理成一篇文章,发布在blog上。然后2007年11月份,孔令春在他的百度空间上的文章如下:

维护这个博客也有一段时间了,每次的评论朋友们都说不错,很有帮助!所以才得以支持到现在.

可是今天在百度搜索时无意中看见一位朋友的评价,感触很多!不错,评心而论,这的确称得上是一个纯粹的抄袭网站,因为本站的80%的文章都是转载,我也曾经一再声明过,本站文章不全是自创,有的因原创作者没有要求,有的是因为根本不知道作者是谁,所以大多数并没有标明。

要认真写blog就要付出一点

这是今天在看“老白说真话”上的文章《丧失了表达欲》时突然想到的。而标题里所谓的“付出一点”,说白了指的不是别的,其实就是“孔方兄”。这个想法虽然不一定能让别人认同,但我现在感觉很有道理。

老白的那篇文章里面的一句话我特别赞同:

某个人之所以写独立的blog,最真实的目的是想贡献出一些别处没有的思想、观点、看法。而且,这些是发自内心的。

互联网上,没有人“不”知道你是一条狗

On the Internet, nobody knows you're a dog左边的这副“在互联网上,没人知道你是一条狗”漫画(详细描述请见维基百科上的页面),在过去非常有名。我第一次见到这幅漫画是在小学五、六年级的时候。当时在报纸上见到之后,觉得非常新奇,也确实把互联网的感受给描述了出来。尽管我当时并没有接触过互联网,对互联网也不怎么着迷,但总觉得当时隐隐约约的就感受到了互联网的好处。后来初中后才尝试了互联网,当时并没有很快速的连接,网络上新型的互动服务也不是很兴盛,而IRC之类的传统工具还不是那时候的我有机会体验到的。那时对网络最大的兴趣就是能下载很多软件,那时我读的《电脑商情报》上有推荐软件的专栏,我那时开始收集软件的下载链接,一有机会就弄下来试试。

后来似乎是一瞬间的事情,Web2.0就开始兴盛了。互联网用户一下子从网络的读者变成了网络的作者。用户提供信息在近几年讨论的很激烈,blog、Twitter之类的工具也给用户提供了相当便利的渠道。一下子用户的信息都跑到了网上。过去想了解一个人要靠人脉打听,现在只要把他的信息输入到搜索引擎里,总能弄到点东西。

从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上开写。

让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结尾的页面。我不知道是不是那些地址资历“老”的原因。而在百度里,我新发布的页面都排在前面,刚才又查了一下,似乎旧格式的页面都不在搜索结果里面了。