人生

https://twitter.com/netgeekAnimal/status/1036600002443980801

今天早上莫名的在 Twitter 时间线上看到了这个动画,仔细一看是因为 Anyway.fm 的 Leon Gao 喜欢而进入我的时间线的。看着这个动画,我竟然有点呆住。

动画本身没什么特殊的,只是一只不知道叫什么,长的像松鼠一样的动物,站在地上,双手拿着有着两片小树叶的小树枝,在啃其中的一片小叶子。背景是一颗大树,和这只动物形成了完美的一幅风景,恰巧被小动物前面的一个摄像机录了下来。

看着这只小动物,就叫它小松鼠吧,在悠闲的吃叶子,开始时我心里一片空白,只是单纯的把这个动画看了一遍又一遍,莫名的心里感受到了一阵舒适与向往。我也好想像这只小松鼠一样,悠闲的站着吃东西呀。

人生或许就是这么无奈,年纪到了,就有了相应的责任。日本职人可以一辈子自在的从事一门职业,欧美人可以去追寻自己人生的目标,但身在我们这样的潮流中,这中行动大概永远是一个美好的向往。自从儒家思想成为主流以来,每天闲着不干事,就成为了大大的糟糕的一种行为,将遭到社会主流的鄙视。存在这种想法的人,也只能想象一下晋朝上品士族的生活罢了。

前一阵子网上流行的段子,具体记不清了,大意是“不要问我的梦想是什么,我想不上班”。当时读来是有些反映出当下年轻人的颓废,但现在觉得,我自己又何尝不想有段不用上班悠闲自在的日子呢?想看的书还有那么多没有读,其实哪怕什么都不做,就那么坐着也好呀。

网络交流新模式

最近我空余时间尝试了一些“比较”新颖的互联网交流模式,主题是试着摒弃我一贯的旧思想,尝试一下拥抱潮流。

比如新浪微博,我在 1999 年刚开始上网不久就注册了新浪帐号,那是我生平第一个电子邮箱,我人生中第一个访问的网页就是新浪网,所以我算是新浪的老用户了。但过去一直拒绝开通微博帐号,因为不开通微博就没法全面访问别人的微博,这种封闭性让我非常的讨厌。昨天我试着开通了一个微博帐号,虽然还没有入门,而且我依旧不喜欢新浪微博,但这个经历也让我考虑了一下比较现代的互联网交互手段。

我过去在这方面的态度一直比较复古,或者我想也可以说是“反动”,当然现在也是。我偏爱电子邮件,反感 QQ;虽然 Twitter 用了很长时间,但至今仍然写博客。后一点不过是导致我的博客的访问量较低,而前一点在过去也给我带来了不少麻烦。不过这也不全是我的责任,谁让过去 QQ 在 Windows 以外的操作系统上总是有各种缺陷呢?我在国外遇到过很多次同学要给我传个文件,结果用了 QQ,我这边一点反应都没有。我让对方用电子邮件发过来,对方竟然没有电子邮件帐号。我当时感觉十分不可思议,我的观点是没有电子邮件还上什么网啊?

现在我渐渐的改变了这种观点。我考虑过我的观点大概是太过于死板,对新生事物都有些“排斥”的意味了。如果死活不接受新生事物,永远认为老的东西是最好的,那这个行业还怎么发展呢?而这些事物之所以流行,归根结底还是市场的选择。绝大多数人认为用 QQ 传东西更方便,因此它就渐渐的淘汰了 email。而分析一下 QQ,发现使用它不需要什么专业知识,你甚至可以在手机上安装 QQ 客户端,然后在里面通过手机号注册个帐号就可以用了,不用管 IMAP、SMTP 之类的设置。而且,多次、小量的内容交互在非正式场合是主流,对于不需要正式的要通过信件交互一样的电子邮件来传递信息的人来说,这种轻量的交流明明更有吸引力。

博客的没落也是如此。它被微博所替代也不是一下子就完成的,在之前就有很多人在对它进行着演变。从早期的自己买服务器搭建博客,到各大 BSP 的流行,再到 TypePad 之类的优质收费服务,我们有了 Tumblr。相对于过去的那种服务上的优化,Tumblr 是一次模式上的进化。我虽然自己不用这个服务,但看到很多人在用它,我也去它的网站上研究了一番。我发现它的注册过程极为简单,只需要区区几步,填写一点点信息,就可以开始发表内容了。而它的内容也比传统博客的字块有了变化,变得更加轻量,图片变多,文字变少,它的氛围明显在往今天的微博模式在靠拢。前面的量变最终由 Twitter 完成了质变,也给了传统的博客行业致命的一刀。

或许跟我个人的追求复古的性格有关,也跟我本身的硬件实力不足有关,在这些演化发生的时候,我对它们多数是持排斥心理的。就算是我用的很多的 Twitter,我当时也是在一段时间后才明白了 Twitter 的意义,之前我甚至做过注册帐号后又删除的行为。

除了思想上的因素,我的硬件实力不支持也又一定的关系。比如说我在 2012 年 8 月才有了一台大屏幕的触屏智能手机,替换了我用了好几年的运行 Symbian v3 的诺基亚 E50 手机。那个旧手机也就两寸大小的屏幕,我从来不在上面上网。而最新的这些潮流明显在移动方面很有作为,我在没有相应的设施,也没有什么机会来了解这一切,我自然也就对这些新模式漠不关心,直到我有了那个触屏手机之后。

在今天,我虽然不能完完全全的拥抱这些新技术,但我也要尝试着去摒弃过去的那种守旧思想,不要固执于排斥这些新生事物,希望能够有所收获。

没有什么是永恒不变的

今年三月末,我从 Google Drive 换回了 Dropbox。除了是因为两者之间的功能差异的原因,另一个原因是当时因为 Google 要关闭 Reader,我对 Google 的信心下降。

说起我对 Google 的信心,最早是从它好用的搜索功能开始建立起来的。在用 Google 搜索前我用的什么搜索,我现在都有些记不起来了。我刚接触互联网的时候用的搜索引擎是新浪,到好来好像用的是 Yahoo 或 MSN 吧。当搜索引擎还是门户网站的一部分的时候,Google 的专注于搜索的简单界面一下子就把我吸引住了。那时候我整天在学校的机房里搞计算机奥赛,觉得 Google 这个单词很诡异难记(确实它比 Yahoo、雅虎难记多了),还专门收藏了它。

后来从 Gmail 开始,Google 的魄力让我成为了它的坚定拥护者。我对很多事情都有一种“天才情结”,有句话说第一个做了 XXX 的人是天才,第二个是庸才,第三个是蠢材。在免费邮箱容量平均在 10M 的日子里,Gmail 的 1G 容量的邮箱就像黑夜里的太阳,让人无法不沦落。日后出来了一大片上 G 空间的邮箱,它们再也无法吸引我的注意力了。在 Gmail 之后,Google 推出了一系列的服务,它们的质量自然不用说,而且领先的使用了一些新技术,还有它们的思路,直接让人的头脑极大的开拓。在今天的计算机领域里各种新技术都非常火爆,这比早些年活跃多了,我觉得 Google 在其中有很大的推动作用。

今年 Google 关闭了一个 Reader 就让我的信心下降,原因是我想不通。关闭 Notes,同类的笔记服务有很多,还有 Evernote 这座大山让人无法超越;关闭 Wave,因为它太超前、不实用,而且它的一些成果也被吸收进了其它的产品中。而 Google Reader,在在线 RSS 阅读器中,有什么产品可以超越它吗?这个领域并不是过于小众,而且 Reader 可以说已经到了垄断的地步了,我们得知的原因实在是说服力不大。

经过了互联网大发展的浪潮,很多网站都被关闭了,一些个人的 blog 更是如此,这上面的信息说没就没有了。这让我觉得伤心,因为它们中有很多都相当的有价值。Web Archive 挽救了一些,但也只是很少量的。我希望互联网可以有个版本控制,或像 wiki 一样,可以把所有的改动都保存下来,让信息永远也不会丢失。可惜这只能是一个美好的愿望。

正因为如此,我对一些互联网服务行业的大公司都抱有很大的希望。Google 的一系列服务都有这种趋势,而且 Google 给人的印象是它的生命力非常强悍。如果它数年不倒,那我们保存在 Google Docs 里的文件应该永远有效;当然也不能忘了 Gmail,除了电子邮件之外,它还永久的保存了我们的聊天记录;还有搜索记录,等等等等。因此过去我在对 Google 和其它同类产品进行比较的时候,Google 的印象分就有很大的加成,毕竟我们都希望信息永远也不丢失。不过现在我不这么想了。

当然从公司的规模上看,Dropbox 跟 Google 没法比,但云存储就是 Dropbox 的核心业务,我们可以确保 Dropbox 对它更用心,投入的更大,而且根本不会随随便便的就把这个服务给关闭。所以从文件云存储方面,我觉得 Dropbox 永远对 Google 有优势。其它的服务也是如此。

前几天我看到了一篇文章,《Google的社会化梦想与Reader》,文章的最后对今日的 Google 的评论我觉得非常好,Google 变得更加封闭。或许从现在起我要把它从我的期望名单里暂时划掉了。

没有什么是永恒不变的,我期望的是一个相对稳定的环境。哪怕它一点也不输出,但如果可以丝毫不间断的吸收各种各样的互联网的信息,让它们延续的更加长一点也好。

升级了 tweets-page

前几天偶尔上 Twitter 的时候看到别人的一条推,说是 Twitter 可以导出自己过去发布的所有消息了。这是我一直想做的,原因之一是 Twitter 自己限制了它是一个快速更新的消息发布集中地,而已经发布了的消息就不是它所关注的了。所以过去你要是在 Twitter 页面上不断的点“上一页”,能看到的页面是有效的,印象里好像回退到 20 几页就不能再往前看了,不知道现在有没有改进。因此我很早之前就有把我所有的 Twitter 条目都导出来的想法,可惜 Twitter 的 API 也有类似的限制,因此这个想法一直没有实现。

第二个原因是让我在国内的父母可以看到我的推。由于我经常发推,因此从我的 Twitter 记录中可以看到我的生活。这样我父母能更放心一些。

我写 tweets-page 是从 2009 年 7 月开始的。那个时候我刚刚回国,Twitter 已经被封锁了。当时我和家人在北京的饭店住着,父母正好有假期,准备带我在北京转转,看看鸟巢等新建设的地方。我因为时差关系到凌晨三点多就睡不着了。自己住在一间客房里没事干,又不想看电视,于是就想解决从国内上 Twitter 的问题。一开始时我用 ssh -D 给自己开个通道用,一会后嫌麻烦,因为代理的速度不高,一些国内的页面用代理会更慢,而且每次开代理还麻烦(那时我还不会 screen)。所以我就自己写了一个程序,让我可以浏览 Twitter 并发布新推。当时的代码怎么写的我早就忘了,好像也没有备份。浏览了一下当时的推特记录,说是用的 Perl 调用 curl 来用官方的 API 来更新,印象里时一个 CGI 小程序,非常简陋,还有不少的问题,当时仅仅是临时用用。

然后回加拿大后,我用 Ruby 写了一个小程序,通过 twitter4r 来获取我的 tweets,保存在数据库中,然后用程序生成页面浏览。API 在那时已经不支持 since 参数了,我只能从某个时间段开始抓取,之前的内容就只好放弃。程序最终写成了,不过我当时对服务器的知识太少,用的还是 Dreamhost 共享主机,最终用 Crontab 让程序定时运行的时候,发现无论怎么样都找不到我用 gem 安装的 twitter4r。如果程序不能定时运行,我每天要登陆到主机上手动执行一遍程序?非常不现实。所以最后我只好放弃,最后的生成结果部分我也懒得弄了。

印象里之后还试过几次,好像都没有成功。

到了 2012 年 5 月,我重新写了一次,结果弄成了。这次用了 Twitter 库和 Sequel,在服务器上我也不再用 SQLite 了,而是用 MySQL。除了保存到数据库之外,它还能在刷新后立即生成输出页面。输出的页面是一个比较大的 HTML 静态文件,我曾经想写一个分页功能的,后来一直没有兴趣碰它。在解决了 Crontab 的问题后,它就一直在我的服务器上工作着,一直到了现在。

当我看到了 Twitter 可以导出的消息后,我就导出了我的记录。看着一个几兆大小的 CSV 文件,我有了把它们添加进我的数据库的想法。于是就尝试了一下,中间也遇到了一些小问题。

开始时我觉得 CSV 文件没有什么难度的,于是就直接读取一行,用逗号拆分。但输出的时候我发现了几个空行,查看了一下原来 CSV 文件并不是严格的每行是一条记录的。记录中有的值有换行符,体现在 CSV 文件中就是直接的换行,我按行处理就会出错。我当时的想法是不要这些有问题的条目了,不过它们太多、太分散,我没有完成。之后我用了 CSV 库,它没有任何问题处理了换行。

第二个问题是时区。导出的 CSV 文件中的发布时间是用的 UTC 时间,看上去是这样的 2013-03-12 01:35:28 +0000。我要把它转换成我所在的时区,于是就做了各种尝试。或许由于 Rails 太火的原因,我搜索到的很多条都是如何在 Rails 里完成的,而不是 Ruby。最后经过尝试,我找到了解决方法。

第三点是如何插入数据库的问题。我开始的想法是直接在 CSV 文件中把我已经保存了的条目删除,然后运行一遍我的程序。现在想想这种方法其实也行,弄进数据库中再排一下序就可以了。不过我当时是直接新建了一个表,导入到这个表后检查结果正常后,就把表改名,跟过去用的表换过来,然后我就有了一个比较大的数据表了。

这次我不想生成静态页面了,为了练习,我改用 PHP 写了一个动态页面。我过去从来没有写过 PHP 程序。之前有想过要学一下 PHP,当时的想法是读别人写的代码,反正 PHP 的语法也不难。但是我悲剧的选了 WordPress,因为它是最流行的 PHP 软件之一。我现在对 PHP 的了解不深,对于 WordPress 的代码写的好坏没什么发言权。不过我觉得 WordPress 的代码非常非常非常不适合初学者用来学习模仿,非常不清晰,几下子就能把人绕晕了。所以我到现在都没有认真学习过 PHP。不过 PHP 在我印象中不难,当然不包括它面向对象的部分。我从网上找了一些它跟 MySQL 合作的介绍,选择了 PDO 方式来操纵数据库,写出了不到一页的代码,很容易的就完成了任务。

新的页面在:http://liuf.net/tweets/

当然这个页面目前其实是比较糟糕的。动态页面每次都要生成,这么多条目导致了这个页面的速度比较慢,要将近 10 秒才能完成。所以有机会我一定会给它安上分页功能,或许加点 JavaScript 来动态载入。

旧的代码我还没有修改,其实我想把它生成页面的部分去掉,单独的干刷新数据库功能。等有机会再说吧。

生成的代码我还没有往 Github 上传,因为当中我直接把数据库的用户名和密码写进代码里了,估计从 git 里回滚几下就能看到。虽然我的数据库仅限 localhost 访问,但还是再考虑一下吧。不过代码库的链接在这里

生成 Twitter 静态网页

我从 2009 年就想写一个程序,把我的 Twitter 记录生成为静态的网页,放在我的服务器上,可以让墙内的人浏览。这样,在国内的父母也可以像 Twitter 被封锁前那样通过我的 Twitter 来了解我的生活情况。

当时我完成了一个小程序,但仅仅是做实验用的,有相当多的小问题。当时用的是 twitter4r 库,很多东西都不大成熟,用它写程序挺麻烦的。当时也遇到了各种问题,都在上面的文章中描述过。后来的代码总结在这篇文章里

最近我看了一些关于 Rails 的文档,写了一些程序,受到了一些启发,于是觉得可以重新写一写这个程序了。现在很多东西也变了,有了 twitter 库,获得记录的方法也更方便了。我如今也不再执着于把所有的 tweets 都保存下来了。另外,我对于数据库方面的了解更多,所以没有干巴巴的用 sqlite 接口来写 SQL,而是用了 Sequel 库,在本地用 Sqlite 3 调试,在服务器上就用 MySQL。结果程序很快就出来了,在纸上做设计,把要做的步骤考虑清楚了之后,很容易的就完成了代码。当中遇到的困难之一是对 Ruby 的不熟悉,很多东西我都需要查找例子,这是练习不足的原因。困难之二就是在 Sequel 的文档搜索信息费了我很多功夫。很多东西都不能想当然,我需要摸索着试验。比如说查看一条 tweet 是不是已经在数据库中有了,只要找找有没有相同的 id 就可以了,这个操作就让我费了很长时间来试验才知道正确的用法。

我过去从来没有写过 MySQL 程序的经验,因此在服务器方面也遇到了问题。首先是 MySQL 本身的启动问题,这个放在下一篇文章中专门谈,其次是安装 mysql 的 gem 时的问题,系统在哦年时提示:

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

只是说缺少依赖,但并没有说具体少什么。后来我找到这篇文章,知道了原因,安装了 libmysql-ruby 和 libmysqlclient-dev 库之后就没问题了。

最后是让程序自动运行,我用 crontab 完成。但我平时很少用到这个,因此从网上找了配置的写法,让它每 12 小时运行一次,但现在还不知道我的配置写的是否正确,等到了凌晨的时候看看运行情况。

最后,程序代码在我的 Github 中:link。生成的页面在这里这里这里,我没怎么做美化,毕竟我不擅长这个,等有时间再看看。

乱世用重典?密码泄露中招

今天发现我的 Twitter 客户端显示有未读 tweets,我进去一看,是一堆不认识的人发送的英文推。开始时我以为是谁给我发了一堆广告,结果扫了一眼推的内容发现里面并没有提及我。一时间我有些傻眼,不明白是怎么回事。仔细看了一下推的内容,才大吃一惊。

原来这些都是 reusable.py 这个用户的 retweet。reusable.py 做了一件事,他用社会工程学的方法,分析出了我的密码,登陆了我的 twitter 帐号,用我的 twitter 帐号 follow 了他。这样他的 retweet 就显示在了我的 timeline 中了。reusable.py 有一个网页,上面有个头像列表,说明这些人都被成功的弄出了密码,而这些只是一个小的 Python 程序完成的。网页上还放了一个 password.txt 文件,是一个密码字典,我看了一下我的 twitter 帐号就在里面。

过去 CSDN 弄出过这么一回事来,不过我没怎么在意,因为我的 CSDN 帐号没有什么可以偷的价值,而且我几次用 CSDN 的通行证登陆,都是特别复杂,所以我也懒得去改我的密码。而且我也确实是多个网站只用一个密码,因为我不擅长编造密码再保证不忘记它,小时候上网时我在电脑旁边放个旧本子,把我上过的网站的用户名和密码记下来,后来觉得这样特傻。其实我很早之前就知道我的密码不安全了,当时以为我的密码有大小写字母还有数字,单手输入的时候特别麻烦,再用 MD5 之类的算法变成密文后就不可破解了,结果去了那个网站上把我的密文输入进去马上就得到了我的原文密码,这给了我相当的震撼。不过我也实在是不像在密码上费心,所以一直抱着侥幸心理。上次 CSDN 密码泄露之后,我只是修改了我最最关键的电子邮箱的密码,其它的都保持原样,因为实在是太多了,多了就容易忘记。

我之前就听说过一些辅助记忆密码的软件,比如 1password 之类的,很多人也推荐过,但我对密码的要求之一就是可以随时携带,在任何地点都可以登陆,因此对这类软件都不怎么感兴趣。不过这次 reusable.py 来这一遭,让我觉得应该看一些这类软件。毕竟现在我的帐号可不仅仅是一两个论坛那么简单了,有一天把我的 VPS 帐号给盗了,那就没地方哭去了,银行帐号更是想都不敢想。这些网站,慢一点登陆不怕,就怕密码泄露出去啊。

过去看 Revolution OS 的时候,听 Richard Stallman 说,早期在 MIT 的操作系统里,是没有密码这个功能的,也就是说,登陆的时候只问你帐号而不问密码。我过去在试着登陆一个 ITS 服务器的时候,也确实发现可以随意浏览别人的文件。后来据说是被政府用户要求加上密码这个功能,但 RMS 这帮人蛊惑人们用回车键代替密码,也就是不设置密码。他们为了抵制这个功能,还破解别人的密码,给别人发信息来劝他们不用密码。当然在今天看来这很儿戏,但确实也反映了在互联网发展初期,人们比较倾向于不设防的。在不到 30 年之后,骇客、蠕虫、病毒之类的概念已经铺天盖地、屡见不鲜了。过去在用 Windows 的时候,装完系统的第一件事就是装杀毒软件,病毒也给杀毒软件开辟了一片广阔的市场。后来进入了互联网时代,人们对于计算机安全又有了新的认识。虽然说今天我们没法回到、甚至是想象网络早年人们对于安全的行为,但相比较我们战战兢兢保护我们的密码,不禁让人觉得非常讽刺吖。

谢谢饭否

fanfou昨天在查看blog的流量统计时,翻到了之前写的一篇文章。那时饭否刚刚开始自己停止了服务,官方上的说法还是几天后会重开。那个时候我也觉得饭否想避过那时的风头,等着过几天会重新开放,但没想到饭否会一直死到今天。

我在那篇文章里说,同样是无法访问,饭否是主动封锁,用户用什么方法都无法登录,而Twitter是被动封锁,只要能翻墙,还是可以使用的。当时我没有想到饭否会一直无法恢复,因此心里也没有现在这么肯定,也一直在担心。担心的点是Twitter在长期被封锁下,会导致中国用户的离开。我在Twitter上follow用户的原则是只follow我认识的,其它的一些名人什么的一概不管。确实名人们的Twitter会有丰富的信息,但也会让我的信息负载加重,反而影响了我对需要信息的获取。这个原则让我的follow列表长度保持在20之内,也就是说我经常交流的Twitter用户只限于不到20人。而里面经常发言的又更少了。如果这些人之中有人离开了Twitter,我的交流渠道就会大大减少。

新浪微博发布时,我觉得可能会是一个冲击,不过并不十分担心。因为我一直觉得新浪对于blog、微博这些东西掌握的不好,做出来的东西华而不实,不会吸引Twitter用户,而国内微博服务的用户的去留与我无关。另外,新浪微博的封闭性也阻塞了它的流传。除了API方面的种种之外,首当其冲的是其封闭注册的性质。而更过分的是,不注册却无法浏览别人的页面(最近好像有改善),这直接阻止了我对其进行评估,也断掉了我使用的可能。而且邀请注册的吸引人的前提是别无分号的东西,gmail邀请的时期其成功是因为没有免费的1G邮箱,Google Wave邀请的抢手也是如此(顺便说一句,手里还有19个邀请,不过我谁也不给,哈哈)。新浪微博在这种情况下弄个邀请,如果除了对自己的服务确实没有信心,那就纯是在装逼作秀了。

真正让我担心的,其实还是像饭否这种国内的专注于微博服务的公司。首先是它们有口碑,对人的吸引力更大;其次是它们的服务,对于普通用户来说,确实也能与Twitter一拼,而且像客户端什么的也都挺火爆的。所以我那一阵子是挺怕那些公司把Twitter上的用户吸引过去的。不过它们自己本身也有问题,最大的问题是天生就有的。“合则力强、分则力弱”,本来在国内还算小众的微博用户群,被几家给瓜分了,就更加难与Twitter抗衡了。Twitter不像电子邮件,目前使用者被固定在一个公司的服务中,就很难和别的服务互通。什么时候这个问题被真正解决了(嘀咕那种的迂回同步不算真正解决问题),国内微博才有能力真正和Twitter一拼。不过就算这样,我也不希望我follow的Twitter用户离开。

而饭否的关闭,则帮了我一个忙。

首先是饭否用实际行动证明了微博服务在国内的不可控性。你的发言,可以在任何情况下,仅仅因为一个理由,就全都消失一空,朋友之间的联系也因此而丧失。饭否是国内微博服务的佼佼者,口碑数一数二,由“老大哥”来做示范确实很有效果。而且,饭否在这么长时间之后都没有兑现当初说的十几天之后恢复的承诺,反而积极删贴的新浪微博倒还好好的,这也告诉了用户──除非饭否做到新浪那个份上,否则饭否则很难继续下去。这也让用户知道了,真正能体验微博服务,只能找国外的公司,也就是Twitter。所以现在,尽管我的follow列表里在国内的同学都无法正常发推,但总有工具可以帮助他们和我完成Twitter上的交流,而且他们的发言频率也并没有因此而减少。

所以我昨天看到了之前写的文章,不由的觉得应该对饭否说声谢谢──你给国内的微博用户上了宝贵的一课。

另外,今天看到月光贴了篇文章,说百度发布了自己的微博产品──i贴吧。我过去看了一看,里面也有一些名人的头像。我点进去看看,感觉就像是一个论坛上的某位用户的发帖列表,里面没有几篇发言。不过每一篇下面的用户回复则几乎全是“沙发”、“留名”之类的东西,我于是知道了什么是中国特色,同时也完成了对于i贴吧这个产品的定位,并对Twitter的稳固地位更加放心了。

简论《Twitter 大脑》

这篇文章停留在我的浏览器中已经很久了,当第一遍看的时候就想写点什么,但由于忙一直没有总结出来。思路也不怎么清晰,不知道该怎么总结。到今天看到它还在浏览器中,遂决定不等了,脑中想到什么就写什么吧。

我在今年四月份,写了一篇文章《母体外的人》。文章来源于Kevin Kelly在TED的演讲,在web存在了5000天的时候,预测web在5000天之后的样子。我在看到《Twitter 大脑》这篇文章之后,马上就想到了我的那篇文章。

Kevin Kelly在演讲中的观点是,在5000天之后,我们只需要一台电脑。这台电脑是最稳定的,我们用的掌上设备,不过是这台电脑的一个终端,这台机器的操作系统就是网络。而从我们的角度上看来,这台电脑大约可以等同与我们的大脑。我们大脑由神经元组成,由神经连接,而网络由网页组成,由链接来链接起来。但不同的是,我们的大脑不会每年扩充一倍。也就是说,假以时日,我们的网络会在计算量和存储量上超越我们的想象。我们几乎就生活在这台电脑里,就像在电影《Matrix》一样。我们忘了朋友的手机号,我们不去找备忘录,只要在搜索引擎上搜索朋友就可以了。Kevin Kelly也讨论了连接Data而不是Page,这一点主要由HTML的创始人Tim Berners-Lee来讲述的,他为之起名Linked Data。

我在自己的blog上搜索了一下之前写过的此方面的文章,还找到了不少,比如这篇。也讲述了同样的道理。与apple4us上的文章一样,这些演讲讲的道理是同一个:当基数无限增大时,似乎一切的问题都将解决。《Twitter 大脑》上说,根据Twitter发展的速度,在2013年,Twitter网络就可以形成一个发育中的婴儿大脑了。

这是令人兴奋的。虽然靠基数来解决问题,有点作弊的感觉。但在我们无法在技术上再进一步的情况下,这也似乎是我们唯一的途径。不过我对由Twitter来完成这一个任务抱有怀疑,因为Twitter上几乎没有机器可以识别的Data可言,让机器来达到能提取Data的程度,又需要我们前面说的网络。这似乎是一个永动机一样的东西,是不可能完成的。不过这毕竟为我们的计算领域提供了希望。

少写Twitter多写博

Twitter无疑是互联网界的一大革新。从几年前它推出一来,这两年它的如火如荼的发展,让我们都承认──Twitter革了blog的命。不过,Twitter革命的不彻底。在我看来,它在形式上让群众参与互联网有了新的等级;但在结果上,则不那么尽如人意。当然,我们都热爱Twitter,想尽量的把自己展示在Twitter上与大家交流,但我还是觉得,我们应该多分一点时间在blog上面。

这个想法是我在上周日突然明确的出现在我脑中的。我的同学ZH打算总结一下常见的(荒谬的)大众想法,于是就开始一条一条的把他的想法推了上去。我当时看到了他总结了有六条之多,虽然语言上不是那么完美,但也已经让我觉得惊喜,挺有价值的。当时我就想到,这么好的东西,过不了几天就被新的tweets给挤到后面去了,几乎无法再挖掘出来。而Twitter的服务器不保存/公开早先的tweets,也就是说,一段时间之后,他在周日总结的想法就彻底的消失了。

这是多么可惜的啊,不过目前的Twitter也只能做到这种程度了。我在过去手写程序保存自己的tweets的目的之一就是想解决这个问题,但也只能是某种程度上的。

而我近一年对blog的看法,也相对过去有了改变。我觉得blog不一定要搞的那么正式,你日常生活中的一些小事,只要对你有意义,就可以把它写下来。人脑的记忆是有限的,很少人能记得一年前的一天发生的一些事情。我就经常想到在过去的某一天做了什么事,但具体事情是怎么发生的,我怎么想也回想不起来了。而这时,如果有了当时写的一篇文章来刺激,事情就会容易的多了。我每次浏览我过去的blog文章时,都有深刻的这种感觉──要不是当时写了这么篇文章,我说不定一辈子都难以回想起这么多细节来了。

刚才蔡智浩发布了一篇文章《我的電子記憶》,讲了他是如何克服自己对过去发生的某件事情的遗忘的。蔡智浩使用了Twitter、GPS 軌跡記錄器、數位相機、相片定位和智慧型手機来帮助自己记录每日发生的事情的细节,在将来回顾起来就有了依据。其实我觉得可以再加上一条──常写blog。我没有蔡智浩的那些数码定位设施,但通过写blog,就能在未来或多或少的回顾今天发生的事情。

当然,我也知道在今天,很多人都放弃了常常更新blog,我过去就发现一些人都不更新或很少更新了(比如[1]|[2])。据我猜测的原因有几条:一是到了一定的年纪,可能就不大写blog了,网上写blog的人是我的晚辈,我不大知道而已;二是有很多的东西可以分散想法,让你难以把它留在脑中“发酵”并在合适的时间整理成文章。

比如说我,在2007年开始用Twitter后,对blog的更新就少了。从我的blog的月份archive上看,有的月竟然没有一篇文章,那就是我的一些观点都用来更新了Twitter了。写在了Twitter上,就不想再在blog上写一次了。我有一段时间怀疑,现在有了Twitter,我的这个blog还有没有存在的必要,甚至有段时间我想把blog做成静态的HTML网页,反正写的也少,也没有什么评论。现在我对那种想法已经不以为然了。我的Twitter现在有了8500多条,中间肯定有一点好的idea,现在也早已被其它的废话给湮没了。如果我当时能把它们抽时间整理成文章,现在都可以很好的保存。

有的时候坚持写blog确实不容易。我身边的很多人在几年前也顺应潮流开通了blog,现在也早就停了。我依稀记得从王建硕那里看到他说,坚持写blog是个习惯问题。养成了习惯后,就会自然而然了。有人说平时太忙,没有时间写。但我觉得,现在再忙,挤出一点时间来把自己的想法总结归纳一下,在将来就会产生大用途。现在我的学业也特别忙,但也在时常找时间写。至于现在我养成习惯了没有,我还不清楚。不过我相信我现在比别人写了更多的blog,在将来一定会有收获的。原因很简单,因为两年前写的文章,已经让今天的我有所收获了。

Twitter备份的代码

我前天写过文章,说写了一个保存Twitter记录的工具。今天把代码整理了一下,上传到了网上

目前我只完成了数据获取的部分,至于报表生成的部分我还没有写。写个cgi来输出HTML表格,我上学期学过,应该不难。

程序中用到了sqlite3-ruby和twitter4r这两个库,它们都可以通过RubyGems来安装。

对数据库的操作,我用了最直接的方法,没有进行任何优化。一是考虑到这个程序对速度的要求不高,二是我这学期才开始学数据库,对于SQL语句的优化还没有什么概念。

最后,说一下Ruby中的YAML配置。考虑到不管是数据库的初始化还是更新数据库,都需要Twitter的用户名和密码,而且我也想把一次抓取多少条tweet这个变量也提取出来。本来想的是在程序的开头设置变量,但这样会让程序的使用变得麻烦──修改Twitter的用户名和密码后,需要在两个程序里做出改动。因此写个配置文件就是比较必要的了。过去我一直觉得写一个带配置文件的程序是比较困难的,因为需要自己解析。但Ruby中的YAML让一切变得非常简单。正好借这个机会,学习一些YAML的解析。

中文网页很少,我没有搜到什么结果。最后从一个外国blog上看到了例子,才知道Ruby中用YAML原来是这样的简单。想看的同学自己去看看就会用了。