June 2009 Archives
June 30, 2009
Mac联网的奇怪问题
室友的同学昨天买了一台白色的MacBook,在学校无法上网,搞不定了让我帮忙看看。我过去一直觉得Mac系统对于这方面的设定应该很容易才对,结果今天竟然没弄好。
先说一下我们学校的网络。我们一共有两个无限网络热点,一个是802.1x加密的,用户名和密码在保存在设定中,链接上立刻就可以访问网络;另一个是非加密的,连上后在浏览器打开网页后,会跳转到https://1.1.1.1/这个地址去,在里面输入了用户名和密码就可以联网。同学需要设置的是非加密网络。
我在过去使用的设定的时候没有任何困难,基本上把无限网络打开就可以了。但今天这种情况竟然无法连上,在系统设定里提示“无法获得IP地址”。我查了一下,大概原因是DNS服务器地址没有获得,因此无法通过DHCP来获得IP地址。弄了半天,比对我的MacBook的设定,也没找到有什么不同。最后没办法,只好叫她趁保修期没过,找时间去换一台。
从网上也没有找到类似的例子。我觉得既然我的本子链接正常,对方的应该也一样可以连上啊。都是相同的软件,也没听说过DNS是硬件管的啊。可惜我在学校,手头没有Linux的LiveCD,否则也可以测试一下。
开始的时候有点灰心,因为我一直觉得Mac系统在西方的日常应用应该畅通无阻才对,没想到今天就给我一个下马威。不过想到我在设置的时候没有任何问题,心情又好了起来。虽然没有修好,不过我对Mac系统的日常使用还是充满信心的,相信这个不过是个例而已。我之前也给Windows Vista的机器配置过无线网络,那个困难也不是这个能比的。
另外,不得不感叹一下:Unibody的MacBook出来这么长时间了,那女生竟然还在买老式的MacBook。看来小白的设计、外观确实很养眼。
June 28, 2009
代沟
今天早上在Google Reader上看到一点挺让人郁闷的事情:周曙光写了一篇文章《GFW在草泥马和绿坝的推广下已经很有名了》,里面放了一位14岁的名叫jiehan的初二学生制作的介绍GFW的非常不错的幻灯片。然后我点进了jiehan网页的链接,发现页面上目前显式这样的内容:
看了上面的话,我有点“意料之外,情理之中”的感觉,原因是我之前就从Twitter上看到过他的一篇tweet:“妈妈叫我删掉这篇文章, http://jiehan.org/archives/229 我不想删,大家说呢... 有没有违法内容?”。而那篇tweet里面的链接我印象里好像是一份要求学生必须国庆活动的的文件。
看了这两件事,我突然想起我的母亲。三年自然灾害时期出生,小时候也经历过文革、跃进,我想这一代人在面对一些今天的敏感话题上会比较谨慎。而且我想人到了这个年纪,什么社会上的敏感事件,已经对自己的身家财产影响不大了,相反,一旦真的动乱起来,反而对目前的稳定生活不利。社会不公也已经不会让她的心有什么波动了,毕竟也快到了“知天命”的年纪。平时不怎么上网,因此GFW对她的影响基本上只有Twitter被封的那几天无法看到我的近况而已。
想到我们这一代,似乎真得在意识形态上与上一代有很大的代沟。我作为一个80后在生活上没有像90后那样叛逆,但在人生、价值、世界等三观上与上一代的差别挺大的。我觉得网络的影响力不可忽视。想我当年在用Tor上了一个网站下载了上面的一本书并缩印下来拼命阅读前,根本不会怀疑任何事情。那大概是2005或2006年的事情。从那以后我的三观就起了很大的变化。
其实问题的关键,还是在最大公约数身上。关于最大公约数这个事情,我觉得有时候不能认真,有时候却又必须认真对待。其实如果认真的算起来,一个最大公约数成员和一个非最大公约数成员之间应该是“势不两立”才对。但我们并不认真的把他们视作最大公约数的成员。我的朋友已经成了预备的最大公约数成员,但我们还是和他们谈笑风生。
代沟这件事情,也确实是个麻烦的问题。我曾经和母亲辩论过一些时事,母亲也比较开明,没有粗暴的打断我。我因为不在大陆居住的关系,网络上一些令人恶心的龌龊事也影响不到我,所以也忍住火气,自觉不公开的谈论敏感问题,因此blog上的内容我母亲也就睁一只眼闭一只眼算了。因此在这方面的关系,似乎有点像“九二共识”。
对于jiehan的blog,其实在我看来也没什么,相关人员估计也不会在意一个未成年人的blog。因此jiehan母亲的做法,有点“自阉”的感觉,或者是防患于未然也可以。我不会说什么不敬的话,毕竟听妈妈的话是应该的,只是希望心中还能留下敢于仗义执言的种子,总有一天会轮到这一代说话的,在那之前别被同化成上一代就行了。
June 27, 2009
曼尼托巴省的法院记录
昨天下午去了一位在这里生活了50多年的香港老太太家,为她处理一些计算机问题。处理完毕之后,她给我看了一些网络上有趣的东西。其中就有这么一个最让我吃惊的:曼尼托巴省法院的网站。
网站令我吃惊的是:每一次法院审判,都有在线的记录,记载了双方当事人的姓名、请的律师、事件简介、开庭时间、判决结果。而真正令我感到恐怖的是:这些资料都可以被任何人查到。在网站左边那一栏里有“Name Search”,点进去后输入一个人的名字,就可以查到对方打官司的记录。那位老太太给我演示了输入她的名字后,她和她前夫离婚的那场官司的记录就显式出来了。
当时我就表达了恐怖之情:这种法院判决之类的东西,应该属于个人隐私的范畴,这样公开出来,让人有点赤裸裸的感觉。如果过去犯过错误,这岂不是随时都可以被别人看到?之前听到过这边找工作会去查你的“案底”,但似乎也不必要把这些让所有人都能够看到啊。
后来我想了一下,这或许和两国人民对待法院的不同态度有关。我觉得中国人至今都有种“生不入官门”的思想,也就是能不打官司就尽量不打,打官司是一种耗时耗力耗钱的事情,因此没有被逼到走不下去的地步,一般不会去法院。况且就算去了法院,能否被公正的审判,在今天的中国还是一个疑问。还有,打官司被人们认为是有点丢人的事情。打了官司后,好像就会觉得人们在背后指指点点,自己也觉得有点抬不起头来。另外,我们从小被教育“法院神圣”之类的想法,似乎进法院就是杀人放火一类的大案。导致我们见到法院就发怯,进了法院就紧张,弄的像开封府一样。加拿大这边的法院似乎更亲民一点,人们也不忌讳进法院、谈论自己打官司的经验。小额债务纠纷这中东西都随意可以进法院解决。这样一来,在法院网站上公布案情细节,就有一定的民意基础了。
从另一方面来讲,法院这样做似乎也为了给人们的道德上加上一道锁。这些信息都是公开的,一旦你犯了案,人们就可以从网上知道。这对将来做任何事情都不算有利,因此约束了人们保持诚信、名誉。
从这个事情来看,老外虽然非常在乎个人隐私权,但在法院这一方面,个人信息还是有公开的。
June 26, 2009
酒吧
今天晚上和同学去了公寓附近的一个酒吧,名叫VIVID的。大致方位如下:
这是我在加拿大去的第三次酒吧,因此进去时也没有什么紧张与好奇感,要了两瓶百威之后就在一边静静坐着喝酒,看电视上的拳击赛。正因为没有了紧张与好奇的感觉,因此整个晚上一直感觉很平静。和多数酒吧一样,里面放着剧烈嘈杂的音乐,低音的鼓声仿佛黄药师的《碧海潮声曲》,引者人的心脏跟着节奏一起跳动。跳动的幅度大到自己都能很清晰的感觉到。
我来这里第一次去酒吧,是在去年年初,去的是一个相对平静的酒吧,人不多,我们喝的也不算多,同时点了一些鸡翅之类的零点。印象里音乐并不剧烈,因此感觉还很好。
第二次是一个里我们家相对远的酒吧,那次第一次感受到人很多,而且音乐特别剧烈,从里面坐了一会就感觉到有些烦躁。那次喝的酒量相对大一些,我主要是做在一边,边喝酒边看人们在舞池里跳舞。
整个看来,我去酒吧的经验并不是特别棒。我不是特别好动的人,因此只能坐在旁边看别人在动,因此感觉相当无聊。我估计如果是我自己的话,可能一辈子都不会去那种地方吧。其它地方还好,那种特别大声的音乐我是实在不喜欢。如果是有把那种音乐换成轻音乐的地方,供人们喝酒聊天,我想我会非常愿意去吧。
June 25, 2009
Movable Type发布的一个小不足
过去在用WordPress的时候,发现WP在发布文章的时候,设定的发布时间是点发布按钮的那一刻。由于过去我写blog不是很及时,又希望让blog显示的时间就是我构思文章的那段时间,就需要在发布之前调整一下发布时间。过去觉得这样有点麻烦,但是比较自然。
Movable Type则有所不同,它的发布时间的设定是在用户点击“建立新文章”按钮的那一刻。因此,不管文章在什么时候发布,也不管中途被保存了多少次,发布后的发布时间仍然是最初的那一刻。我在之前用的时候觉得这样不错,不用再废功夫调了。
不过刚才我意识到了这样子的问题。事情是这样的:我昨天先写了《想写一个类似co.mments的东西》这篇文章,并设定为今天10点左右的时候自动发布,然后写了《关于写blog的频率》,并保存为草稿。结果今天上午我发现原先设定的延迟发布并没有生效,于是手动把文章发布了。刚才把《关于写blog的频率》这篇文章完善了一下之后发布了,但当我浏览页面的时候,发现这篇文章排在了《想写一个类似co.mments的东西》的前面,也就是说,这篇文章所设定的发布时间更早。
稍微想一下就找到了症结所在:写完《关于写blog的频率》之后我没有修改发布日期,结果这篇文章的发布日期则成为了文章第一次被创建的时刻,也就是昨天。而《想写一个类似co.mments的东西》这篇文章,因为我希望延迟发布,则把它的发布日期设成了今天,于是就出现了刚才的状况。
从这一点看来,两种发布时间的策略似乎都有一定的有点和缺点。我一般写完了文章后立即发布,因此更倾向于MT的设定。不过我估计和两者用的编程语言也有一定的关系,和state也有那么一点点边。
关于写blog的频率
想到这个话题是因为前几天找关于Movable Type的文章的时候,又看了一些王建硕的blog文章。他的blog的一个特点就是自从王健硕在2002年9月11日开始写的第一篇文章后,一直到今天基本上是每天一篇,几乎从未间断过。累计到了今天,王健硕的英文blog一共积攒了2418篇blog文章,在我看来是相当惊人的。
之所以能完成这项壮举,原因在于他在写blog的初期,给自己定了一个规则:“一天最多只能写一篇blog”。他在《需要每天都写BLOG吗?》这篇文章中,写到:
我这样定的原因是,希望不要过早把自己对于思考和分享的激情燃烧完。有时候如果有太多的话题,我会写其中一个,把另外的记在列表里,在没有什么好写的时候拿出来作为素材,我的列表总有几个话题候备选,才有了接近三年的细水长流。直到我写了519天以后,我才决定,放弃一年半前的那个死规矩。因为我知道,每天写东西已经成为一个习惯,我不会轻易停下来了。
把blog作为生活的一部分,这是我相当佩服的。在我的感觉是,2002年的时候,在大陆估计也只有像北京、上海这样的开放城市里,才能出几个如此对待blog的人。当时我住的济南,宽带上网才刚刚普及,blog这样东西也只有极少数的人听说过,更不要说对blog持此种想法的人了。而令我更佩服的是,他能从2002年一直坚持到今天,将近7年。而且从2007年之后,blog的形势一直在走下坡路。在王建硕的《在中国网志大会上》这一篇文章里列出的一些blogger的链接,有的人的页面已经无法打开了,有的人到2006年就已经不更新了……能写到今天的人,多数还是那些blog圈子里更被人广为熟知的人物。
“一天写一篇”的策略我也有过尝试的想法,但一直没有实现。我感觉这种方式适合的是生活稳定的中年人,而不适合学生。对于一个已经成家立业的人来说,只要愿意,每天规律的生活作息中总可以开辟写blog的时间。而像我这样的学生,虽然课程方面的日程已经定了下来,但心情上总有或多或少的浮动,要坚持这一点是困难的。
事实上,我的日程能做到相对稳定,也是在我出国之后的事情。在国内的时候,就算平时有时间,没有一台计算机,一切就都无法实现。那时候我写blog的方式,或者是先大体写在纸上,留到周末回家去写,发布的时候把时间设定回实际写文章的那一天;或者是在学校里借同学的计算机来发布。
这样虽然会有倦怠的时候,但对我写blog的频率影响最大的,应该算是开始使用Twitter了。自从开始用Twitter后,一些idea在我脑中浮现后便用手机发出去了,无法在我脑子里停留很久。这样没有大脑对于这个idea的酝酿,无法仔细思考组织成为一篇文章。在想写blog的时候,脑子里也没有了一点存货。回顾我的blog的月份记录,有的月的文章只有一篇或两篇,基本上就是这个原因。在2008年9月到12月正式我第一次感到最忙最累的时候,那段日子我的blog干脆就停止了,没有写过一篇文章。
另一方面,有些时候对与生活细节的挖掘,需要blogger的相当深厚的功力才行。写blog的一个相当大的拦路虎就是突然发现没有东西可写。其实如果给我一个题目,我可以像初中、高中写作文那样构思、铺陈、展开、讨论、结论,形成一篇还算可以的800多字的文章。但最糟糕的情况是根本想不出任何题目,脑子完全不转。我大概是这种人──机缘巧合下能想到题目,什么都好办;没有机缘的情况下,别人给我一个题目,我可以完成比较好的文章;但自己想题目,还不大在行。因此我在2009年四月第一次让文章数目超过了当月的天数,也就是平均一天多于一篇文章。现在回想原因,那时候我选修的一门《计算机伦理》课上讨论的话题给了我相当多的想法,因此那一阵子灵感滚滚而来、源源不断。
自我总结起来,就是我不善于在日常发现生活中小的两点,来组织成文章,只有在外界的刺激下才会对一些话题产生关注。我估计王建硕就属于非常善于发现生活中的亮点的人,否则不能每天都能写出一篇文章,坚持7年之久。我就不行,多数情况下有了想法就要赶紧写下来,要么很快就忘掉了。当然也有例外,基本上都属于话题比较大、我要把想法放在脑中构思几个星期的情况。
blog的延期发布功能我极少用,我想可能是我写过的一些小话题有很强的时间限制,过了目前的时间再发布就没意义了。另外,我的观点是一个人在什么时间想了什么、写了什么也是有记录价值的,如果我的每篇文章都延期发布,那么在将来回过头来看过去写的文章后,时间就会有写对不上号。所以当有时观点多的情况下,只要我不厌倦,我多半会把文章一股脑发布出去,也不管是不是已经发布了两篇了。不过我争取修正这样的想法,但尽量不为了“细水长流”而延迟发文。
另:我之前在MT里设定的延迟发布今天看来没有起作用,有些奇怪。看来在问题解决前,还要手动发布一下。
想写一个类似co.mments的东西
co.mments关闭了好长时间了,我的Safari书签栏上还留着它的添加书签。我一直讶异目前市场上没有这类工具,相反,印象里coComment似乎挺火的。我在最早的时候分不清co.mments和coComment,后来发现coComment提供的是插件,非常麻烦,而且似乎还无法达到我的要求。同时我一直觉得co.mments这个工具应该是人人都喜欢的,因此当开发团队说要关闭这个服务时,我着实的吃惊了一把。
在没有了co.mments之后,对我来说影响没有特别巨大,唯一的一点可能就是我更少的在别人的blog上留言了。很多blog并没有安装回复留言时的邮件通知功能,因此我在留言之后,如果不再去那个网站不断刷新,一旦对方对我的留言有回复,我就很难得知。我这个用MT搭建的blog,每次有人留言的时候,我都能收到邮件,但我回复别人留言后别人能否收到邮件通知,我就不知道了。而我在用WP的时候更没有安装邮件通知插件。
没有这个工具,我一直觉得特别不方便,因此最近有想自己实现一个山寨版的想法。方法也没有自习设计,只要用最简单能用的Quick and Dirty实现就好。先在本地保存一个网页的备份,然后定期去抓取网页回来比较,如果有不同则发送邮件提醒,这些用Perl都很好实现。
只在前天写了几行草稿,最近忙作业,一直也没有动手,真希望能找点时间完成它。另外,如果可能的话,我希望能把它弄到Google App Engine上,这样一来用着就更方便了,而且说不定还可以帮助别人。不过这样似乎就要用Python了。
June 24, 2009
我们是不是没有传统底片可用了?
今天例行清扫Google Reader上的订阅时,看到了瘾科技上发表了一篇文章《再见,过去的美好时光;再见,柯达 Kodachrome!》当中说:
在2009年6月22日,由于生产成本过高不合乎经济效益,并且需要专业的冲印流程,全球仅剩下柯达在美国的一家实验室提供服务,柯达宣布终止拥有74年历史的Kodachrome彩色底片……
我不是特别了解具体情况。这是不是意味着柯达不在生产传统相机的胶卷了?没有了柯达,我们是不是就是再也买不到胶卷了?(除了柯达,我还真想不起别的胶卷品牌了)。
看了这篇文章,我马上想起了我第一次冲洗数码相片的经历(大概也是我们家第一个吧)。那时候是高二或高三,我们学校不知道又搞什么活动,组织班机的团部来打扫校园。我们班领到的任务是校门口的花坛,于是我们班的团支书号召我们小组来做这件事情。打扫校门口其实不是目的,真正目的是用相机拍下学生们努力工作的样子。于是团支书需要征集一个拍照的,后来忘了怎么样就找到了我。我当然答应了,因为负责照相就不用去干活了(反正也不怎么真干)。
照完像后,我把照片文件都给了团支书。在隔了一个周末的下午,团支书突然找到我,说要把照片洗出来,弄成传统图片。我之前没有这种经验,虽然学校的马路对面有一个小照相馆,但对于是否能洗数码的照片我们还不清楚。于是我们在下午的自习课出了校园,跑到照相馆里。我给对方说明了情况,对方说可以洗数码相片,并给我看了价目表。之前我一直以为洗数码照片花费很高,结果看到一张照片才几毛(还是几分?记不清了)时,非常震惊。而且印象里速度非常快,最后拿到的照片我看了,和用胶卷照出来后洗出的照片看不出差别。
从家里有了第一台Sony DSC-p5之后,我们家就没有再用传统相机了。后来大家也习惯了把数码相片洗出来。相反家里过去留下的一些胶卷都被我们淡忘了。
今天看到消息,似乎我们以后就很难买到传统的胶卷了。几年前冲洗数码相片对我还是新鲜事物,这一下子的冲击由不得我不感叹。虽然买不到传统胶卷对我几乎没什么影响,但感觉上却非常别扭,也许一件事务退出历史舞台的感觉就是这样吧。
减少使用Google Analytics和Webmasters Tools的次数
我从上周五开始决心不在每天看Google Analytics和Google Webmaster Tools了。
原因是每天这样做很累很无聊。之前blog流量小,我很少看Analytics的结果,我也只用Webmaster Tools来看一下我的页面是不是被正常的索引。但自从五月份有人在网上推荐了我的一篇文章后,我的blog的访问量有了很大的增加。于是从那时我就经常上Analytics去看看前一天有多少人访问,什么话题的访问量上升的最快;再去Webmaster Tools看看什么关键字在Google的搜索结果中排名更靠前。
这样做并不是一件非常好的事情,至少对于我来说。根本问题就是写blog的目的导向不同了。对于我这个非职业blogger来说,写blog的目的是为了记录自己,可以在将来方便的回顾,顺便可以让别人访问到并获得写有价值的东西。因此blog的流量并不是非常关键的追求目标。
知易行难,道理是懂,但是实行起来难。我在今年年初的几个月经常懊恼的发现,Google的搜索结果里居然看不到我的任何一篇文章,印象里唯一的两个链接还是blog的后台链接。由于之前我放blog的服务器曾经被攻击过导致资料被清空,我一度怀疑Google是不是对这种情况有惩罚。后来在偶然的情况下,发现我在blog的模板里head的部分加上了meta标签,让搜索引擎不索引我的网页。仔细回想才想起是在前一年看过一篇讲SEO的文章,说加入这个标签可以优化搜索引擎索引,造成了那时的后果。
当时我想过:“反正写blog也不是为了让搜索引擎索引,我自管写,不去管索引的问题了”。这种想法在那时出现了很多次,不过每次都是我上上下下的检查blog设置、robots.txt设置、.htaccess设置最后没办法了才这么想的。果然当我的blog被正常索引后,我心情的激动是难以描述的。
前几天blog有了点流量,我几乎是每天都看Analytics和Webmaster Tools的结果。有几天我每天早上起床后的第一件时就是登录上去看看。还有几次是白天,名知道Analytics的结果是一天刷新一次,但还是在同一天看了好几次Analytics的曲线。
从上个星期,我已经意识到这样子不好了。于是下定决心,以后少上那两个网站。这个想法从上周五开始实行,因为了解自己blog的问题还是必要的,因此初步决定在一星期之内都不上这两个网站。从上周五到现在过了五天了,下一次允许自己访问的日子是这个星期五。在这五天内,当中有很多此冲动想上去看看访问量如何,关键字排名如何,但都给我忍住了。实在忍不住,就ssh到主机上看access.log望梅止渴:)
上周六在在搜寻Movable Type的资料时,找到了ProBlogger这个blog。它写一些关于blog的话题、建议、blog盈利之类的文字。blog的作者Darren Rowse在每个周末会推出一篇podcast,放在YouTube上,讲一些关于blog的话题。在其中我看到了一个非常不错的视频,特别适合今天我说的状况:“Forget about Page Rank and Build a Great Blog”。
在视频中,Darren喊道:“build a blog that has something that people will want to read, build a blog that will enhance people's life in someway, build a blog that people will want to recommend to their friends, build a blog that engages with people in someway...”。这才是PR上升的关键。
June 23, 2009
Melody项目
这几天找了一些Six Apart和Movable Type的资料看。昨天从王建硕的blog的留言上看到了majordojo这个blog。它的作者Byrne Reese曾是Six Apart的员工,是一个热情的MT开发者,目前似乎自己在做事。
今天中午刷新他的blog,看到一篇新的文章《Meet Melody》。草看了一下,发现Melody居然是一个基于Movable Type的新项目,于是我一下子来了兴趣。
对Melody的最主要的介绍在作者前一天的blog文章《Introducing Melody》中。作者开头就说:
Melody is an open source content management and publishing application created by people who share an abiding passion for blogging, open source and especially for Movable Type.
也就是说,Melody其实就是Movable Type,但开发方式比较不同。我在看了Melody的FAQ后,也更加明确了这一点。
Byrne谈了Melody和Movable Type的不同,说目前两者在功能上没有什么不同。Melody目前要做的是重构MT的底层,加强核心产品的API,使之在将来更容易开发、扩展。Byrne说“我们打算给(MT)产品的复杂但用的人很少的部分去耦合,比如TrackBack和Postgres支持,并对那些能够帮助人们在设计和建立网站的时候获得更高效率带来成功的部分,比如构建主题和分布,予以重点支持”。因此重构产品的底层是Melody团队目前的第一要务。在6到12个月之后,当这一阶段完成后,Melody才会在功能上和MT有不同。但Melody会在最大程度上与MT保持兼容。
Melody项目和MT的另一个不同,就是他们计划建立一个比MT更活跃的社区。我不知道Byrne是怎么想的,是不是对目前沉寂的MT的社区开发有所不满;但我却明显的感觉MT的第三方开发不如WordPress活跃。比方说,WP社区的插件开发非常活跃,我过去用WP的时候也装了很多插件,但在用MT4的过程中,我使用的全是官方提供的免费插件。我也搜索过一些第三方插件,但多数都要钱,对我的用处也不是特别大。在杨康去年写过的一篇文章《仍然怀念MT3》之中,他说:
我记得A6的商业化过程好像是从版本3开始的。尽管如此,免费的个人版本并没有受到太大的影响,起码插件的使用就是。从版本4开始,情况好像不完全是这样了。A6开始明显对免费个人版本进行限制,当然我们明白这是A6要走的方向,连插件都开始商业化,包括A6开始收购优秀的插件,个人用户无权使用。
目前在网上搜索MT的第三方开发者,发布的插件、主题什么的多数都是收费的,我觉得这在很大程度上阻碍了MT的发展,社区的活动也比较沉寂。Byrne似乎想通过Melody来改变这一点。在目前Melody还处在alpha阶段,他就在网上号召人们参与。

而且,Melody项目也建立了Facebook页面、Twitter帐号来帮助宣传这个项目。通过活跃的社区活动,Byrne打算吸引MT社区之外的人来加入到开发中,他目前的目标有CPAN队伍和jQuery团队。我对jQuery项目不是很熟悉,但MT的基础是Perl,如果能有CPAN的开发者来为Melody开发,那对整个MT“生态链”都是一个相当大的助力。另外,Open Melody Software Group也成立了,作为Melody社区的官方组织。
这么一个OpenMelody组织,让我一下子就能想到OpenSolaris项目。我还不清楚目前Six Apart对前雇员创立这个Melody项目有什么看法,也不知道Byrne创立这个Melody项目是否是6A授意而为。不管怎么样,我想Melody项目对6A的生意应该只有好处没有坏处的。
目前Melody和MT的关系,我感觉挺像OpenSolaris和Solaris商业版的关系、以及Fedora和RedHat Enterprise Linux的关系、以及过去的OpenDarwin和Macintosh的关系。如果两方面能够处理得当,Melody发挥MTOS的作用,积极领导6A外围的社区开发,然后把开发成果反馈给商业版本的MT Pro,间接惠及TypePad和VOX产品,我想应该是一条光大Movable Type的康庄大道。
目前Melody尚处于alpha版本,还没有打包下载。项目的代码放在Github上,想尝鲜的人可以通过这个页面的说明用git来下载。我在DH服务器上测试了一下,目前和MT4一模一样,后台也基本上没有Melody的字样。我目前发现的唯一区别是发表文章时,默认是不开启评论和TrackBack的,需要手动打上勾。
通过昨天对MT 3.37的试用,我对上个版本的速度有很深的印象。我对Melody和MT的最大期待,是后台的速度能弄上去。功能什么的日后再说。
又:在写完这篇文章后从网上搜了一下,看到了MT的创始人Ben Trott的这篇文章《Meet Melody》,发现Ben对于MT的外围项目是支持的。他也认同Melody会促进MT的发展的这个观点。我想在Melody诞生之前,Ben他们就已经知道这个计划了吧。
小故事,新感受
昨天写blog的时候回顾之前我写的比较短的文章,找到了这篇《无关时事,一个故事》,于是重新看了一遍,突然有了新的想法──原来国王才是最精明的。
国王给小孩们出的这道题目是什么呢?国王依王法管理年轻人,至于能干什么,不能干什么,能干的就干,不能干的就别干。很明显,国王给小孩们一颗煮过了的种子,就是告诉小孩子们我不想让你们真的种出花来。而一些自作聪明的小孩子,翻墙获得了正常的种子,虽然种出花来了,但不听话,只想着往外跑的孩子,将来不会容易管理。而能揣摩国王用意的孩子,在关键时刻才会“挺身而出”,接受采访,发表“心神不宁”的感受。
June 22, 2009
终于知道了为什么人们怀念MT3了
我接触Movable Type的时间很晚,虽然在2007年9月左右用Movable Type 4建立过一个短期的英文blog,但严格算起来从今年4月开始用MTOS-4.25才算正式使用。而Movable Type 4一下的版本我是连见都没见过。
我在2007年3月自己搭设blog的时候,从网上能见到的blogger基本上都是用WordPress来搭建blog的。那时从网上了解到的是,WordPress非常容易,而Movable Type比较复杂、非开源,需要交费使用。然后当我用WordPress顺利的搭建起blog后,满心喜悦的我根本没有去关注Movable Type。因此那时候能见MT3最后一面的机会,就被我错过了。当我在2007年尝试Movable Type的时候,就已经是MT4的时代了。而且那次的MT体验对我来说也不太好,我几乎不会设置。blog的字体难看不说,放置的路径也不是我希望的。因此直到今年,我对使用MT一直有点发怵。
我从这一次把blog程序切换到MT后,才真正仔细的关注MT的消息。然后发现网上的著名老MT用户,如王建硕、飞猪、Herock、Fenng等人都表示对MT4比较失望,并怀念MT3。飞猪目前的blog还是处于MT3平台。我对MT3平台没有任何感官上的认识,因此也没有觉到MT4有什么不足。可能是因为近期Dreamhost硬件和服务升级的原因,我在服务器上也没有感受到Fenng说的MT4的500错误。
不过看那帮老blogger对MT3那么怀念,我一度想尝试一下。不过目前Six Apart的网站上已经找不到MT3的下载了,去网上搜过几次也没有结果。我也考虑到那些MT的老用户应该还留着MT3的安装程序,如果发邮件去索要应该也能得到。不过后来转念又想,就算得到了的话又如何呢,还不是一个旧版本,早晚要淘汰的,何必为了好奇心去骚扰别人呢?于是就打消了发邮件的念头。
刚才,一个偶然的机会,我看到了曙光博客的MT用户手册这个页面,看到作者写了一个新版本的MT用户手册,就想下载来看看。作者把PDF文件放在了Google Code上。让我没想到的是,在作者的Google Code的下载页面上,我看到了MT-3.37的安装程序!
瞬间的惊喜让我愣了一下,然后我马上尝试了一下确实可以下载。于是我立即在我的另一个备用的域名下安装了一下。之前有过MT的安装经验的基础下,安装很容易就过了。那个版本的MT就已经支持sqlite数据库了,这对我用来测试的话非常有利,不用麻烦创建与设定mysql数据库了。一切完毕之后,我看到了之前只从屏幕截图上看过的MT3的后台界面,果然与MT4有非常大的不同。后台的设定也大同小异,我很快的就设置好了第一个blog。
真正让我吃惊的是我在设定好第一个blog后的发布。几乎在我回过神之前就发布完毕了,这第一次发布,相当于重建整个站点,虽然还没有一篇文章,但比我用MT的时候快太多了。然后我试着从这里导出整个blog再在那边导入,结果告诉我文件太大了。这个导出的文件有1M,我过去用MT4导入没有问题。然后我从这里复制了一篇文章,在那边发布,速度也很快。默认的分类、tag、basename设定没有打开,可以很方便的调整。唯一的不足是默认没有安装Markdown,我猜应该可以通过插件来支持。
除了发布的速度外,另一个给我震动的是MT3生成的页面。MT4默认生成的页面,我认为用“奇丑无比”来形容也不为过。其它的倒还好,中文字体的设定实在是让人无法忍受。我第一次用MT建立的blog是英文blog,所以我忍受了下来。但今年4月用MT来建立我的这个blog,我就受不了了。因此在我实际解决了这个问题后,我一直在用Unstyled这个风格,没有任何字体设定,完全按照浏览器的默认来显示,反而更好看。后来建立了一个新的风格,修改了字体部分的CSS,才算解决了这个问题。而我在MT3下发布了一篇文章之后,才发现原来MT3的默认设置输出的页面就已经非常好看了,我做了一个截图:
这样的页面,对于没有特别要求的人来说,已经相当舒服了。看到这个页面,再加上MT3的敏捷的速度,我都有点想把blog程序换到MT3了。不过想到由一个较新的版本换到较老的版本就失去了一些功能,再加上导入也会比较麻烦,会耗费我很多时间;而且目前的这个blog除了生成页面的速度外,已经被我调适的比较好了,所以我马上打消了这个念头。
所以我现在知道为什么人们都这么怀念MT3了。参照MT3,我特别希望MT4的速度能提上去,这是我现在使用MT4感到的唯一的一点不足。
写短文对我来说比较困难
基本上自从我开始写blog一来,我就很少写短文(指字数在200~300字的小文章)。而常常在其它的blog上看到有人用100字就可以写一篇比较精彩的文章了,还是比较羡慕的。短文对于非职业blogger们是有好处的。在可以表达清楚的情况下,文章写的越短,写blog所花的时间越少。这样就相当于节省了很多时间、获得了更高的效率。
写短文的另一个好处或许更为重要──今天有很多人都没有心思来读一个陌生blogger的长篇大论。一旦文章比较长,读者就失去了阅读的心情,特别是在读者很忙或者心情不好的情况下。我就有这种情况:面对Google Reader里的一篇长文,实在没有读的情绪,又不舍得放弃,只好先把他设定为未读,留到下次再看。结果下次有是同样的情况。久而久之就有了“当断不断,反受其乱”的感觉,于是一狠心就把几篇文章永远跳过了。前一段时间Google的研究员吴军写了一系列非常棒的文章《浪潮之巅》,讲IT的发展以及一些创业公司的历史细节。当我读到讲风投那一部分时,由于对经济不敏感,当我在疲劳的时候看到了这样的文章,就没有阅读的兴致,于是就暂时跳了过去,留待周末有精力的时候再细读。由于Google Reader的一些细节缺点,有未读文章在前面挡着后面的文章时会比较麻烦。因此在一段时间后,我只好狠心跳过了那些文章。
我自己写文章的时候,往往容易写到自己的极限状态下,而不是事先就计划好要写多长。所谓我的极限状态,简单来说就是话都说完了,再也写不下去的状态。原因我想是另一个极端──我写不了长文。我在高中无聊的时候尝试写过比较长的小说,但写着写着就乱了,自己计划的情节也搞不清了。后来我读tina等人写的长篇小说时,都佩服他们头脑的清晰。我觉得写长文的话记忆力一定要好。我现在想好要干什么时,过了半小时就要努力的回忆,有时候还回忆不起来,我想是非常不适合写长文了。
似乎是由于从初中到高中的训练,我现在写起文章来,字数大概在800左右。开头也比较少进入正题,而是先努力把背景、起因铺陈妥当了,再把关键部分放上去。现在我做结尾的能力弱了很多,因此经常不知道文章该怎么结尾。虽然结尾部分弱了很多,但字数还是那个数量级。现在想到我小学阶段不会写作文的状态,真是无限唏嘘啊。小学的时候我一直不知道该写些什么,老师给了题目后也不知道如何开展,因此那时最害怕的就是作文。那时候的作文作业,一般都是我母亲给我起草稿,我再誊到作业本上。但考试的时候就不行了,我小学三年级语文期末考试时的作文,我现在还清除的记得,题目是写一篇日记。我考试的时候想起一年级的时候母亲给我讲的日记,于是就在卷子上写了三行。结果那次语文成绩我得了74分,是过去不敢想象的低分。我印象里第一次考试时写出了长度比较理想的一次是小学毕业考试那次,虽然我不知道那次我作文得到多少分,但毕竟成功的,也不算费力的达到了题目要求的字数。
结果现在在我的多数blog中,基本上我都是写那么个数量就停止,不管是多么大或者多么小的题目。除了文章开头的时候说的那两点,这样写作也无法肯定的说有什么好处或坏处。有时候我挺像尝试一下“刘韧体”的,用带有数字标号的几句话就把要讲的比较零碎的东西表达清除,无奈似乎功力还不到。
说句题外话,在Mac下似乎还没有适合中文的字数统计软件。刚才为了写这篇文章,想统计一下我最近的文章的字数大概是多少。我机器上安装了Pages,我第一个选择就是用它。结果当我把文章复制进去后,Pages说我的前一篇文章有1000多个字、再前一篇文章有800多字,我看上去怎么也觉得不像。然后我有上网上找,搜索“在线字数统计”后找到两个网页,但把文字复制进去后点提交按钮却没有任何反应,Safari 4和Firefox 3.5rc都不行,也不确定是那两个页面本来就不行还是就是设计为IE only的。我看了一下其中一个网页的代码,其实就是用javascript来扫描提交的内容,用正则表达式之类的判断那个字符属于中文还是英文还是标点。而Mac本地的wc似乎对中文不支持,刚才试验了一下,得到的结果很奇怪。等我有了时间,一定用Perl写一个。
June 21, 2009
select标签的兼容性问题
注:题目可能起的不恰当。我对网页编程没什么经验,想不出一个合适的题目来说明问题。
我们这次的《分布计算》课程的作业中的第二部分,是让我们实现一个简陋的分布式任务管理软件。要求是打开网页后,上面显示目前被分配了任务的用户列表,点击用户名称后,会显示这个用户目前的所有任务,这部分要求在不刷新网页的情况下完成,也就是用AJAX技术。然后要让使用者可以添加任务,如果也可以用AJAX实现则有加分。题目只要求必须能在firefox中正常使用(也就是说不需要处理IE6的ActiveX)。
之前我对网页的理解只限于HTML和CSS的阶段,看了题目要求有些怕怕的。我大概在上周四开始尝试,但在XML文件解析那一步不得要领,在上周五终于通过自己写了一个简单的例子搞懂了如何解析XML。并完成了用户列表的部分,可以在点击用户后显示用户的ID。在昨天完成了显示任务的部分,通过得到的用户ID来获取对应的task,并生成表格。
看似进展顺利,但我心中还是有根刺──在实现用户列表的时候,我就发现在Safari下可以正常工作的程序,在firefox下就不行。当点击用户名称后,应该达到的情况是在列表下面显示用户ID。这在Safari下可以,但在Firefox下则显示undefined。因为我对FireBug不太熟悉,而Safari 4的Develop菜单下的调试工具相当直观,一下子就显示出我的javascript程序中的错误,而且在Mac下Safari比Firefox快一些,所以我从一开始就用Safari测试的。本以为Firefox的兼容性出色,Safari对标准支持的也不错,在Safari下测试通过后在Firefox下应该没问题,没想到竟然出了这种状况。当时我百思不得其解,只好先不管这一块,在Safari下继续开发测试。
到了昨天晚上显示任务列表的部分也完成了后,我又再Firefox下测试了一下,还是老样子。当时我还在学校的电脑上用IE7测试了一下,居然也完全正常,当时就直接崩溃了。然后我绝望的发现,老师给我们的例子和我有一样的情况。
那个例子通过一些音乐的播放列表来选择歌曲,并在用户点击相应的歌曲后,在下面显示歌曲的发行日期、风格、售价之类的信息。这个例子在Safari下工作很正常,但在Firefox下,当点击歌曲后,下面显式的是“n/a”。查看页面的源代码后,我发现例子中通过select标签来选择歌曲,并设定了onchange属性,给处理函数发送一个event,然后处理函数通过这个event来获得选择的结果。而出现“n/a”的情况,正好是处理函数中判断event为null的情况。我的程序就是这么实现的,例子程序都错了,让我怎么解决!想到周一晚上就要交这份作业,就算给老师发邮件指出错误,他能不能即时改动还不好说,我当时有点绝望,只好先回家。
今天早上起的莫名其妙的早,6点多一点就起来了,而在周末学校的自习咖啡厅在12点才开门。我在看完了Google Reader、通过Twitter和国内同学扯了点淡、刷完牙、洗完澡后,实在没事可作,就想着看看能不能解决一下昨天的问题。于是就在Google上搜索“ajax example”,找到了这个页面,然后就一页一页的看代码。当我看到AJAX Database Example这一页时,发现例子中也用到了select标签,里面用到了和我不一样的语法。打开TextMate,写一个小的页面测试一下,Safari和Firefox都显示正常了!于是就修改了我的源程序,在Firefox下终于也正常了。
过去我用的方法是这样的:通过“<select size="10" onchange="showTask(evt)">”标签来生成选择框,然后在处理函数中接受evt作为参数,通过下面两条语句处理:
evt = (evt) ? evt : ((window.event) ? window.event : null);
var selection = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
中间判断evt和selection的空值情况,然后selection中就是option标签里value的属性值了。例子程序中也是这么写的,在Safari和IE7下也工作正常。而改动后的程序反而简单了,select标签改为“<select size="10" onchange="showTask(this.value)">”,然后showTask收到的参数直接就是option标签中value的属性值了。
搞定了这一部分,对今天完成整个程序更有信心了。
June 20, 2009
QotD: Why did you start blogging?
6A的QotD功能延伸到了TypePad上了,似乎是挺早的事情了。今天看6A的CEO Chris的blog,看到最近的一篇居然是回答QotD的问题的。是CEO以身作则来推广公司的服务吗?挺有趣的。QotD在一定程度上解决了人们不知道该写什么的问题,主席Mena在回答flypig的采访的时候,比较明确的解释过这一点:
问:“每日问题”(QotD)为Vox解决了哪些问题?(对我来说,它解决了从何开始的问题)
答:根据我们的经验,人们之所以不写blog主要会有三种原因。第一是他们觉得无话可说,每日问题就是用来帮助人们发现,其实是许多小事让生活变得有趣起来的。第二个原因是他们没时间,其实这意味着他们没有建立一个易用而充满吸引力的模板功能,比如说那些设计好的模板。第三个原因是许多人不愿意将个人信息公开发布上网,这就是为什么我们要建立这样一个无微不至的隐私功能,让用户可以精确地控制读者可以看到哪些内容。
黃國倫的異想世界在2009年3月23日采访吳听徹。当黄国伦问他为什么要写歌的时候,吳听徹回答说“是因为自己想唱歌”。不知道为什么,我刚才在上厕所的时候突然就想到了这个场景,然后就一下子就联想到了“为什么要写blog”这个问题上了。
因为自己想唱歌就自己写歌,在我这个作曲的门外汉看来,确实是挺牛的。但如果从说这句话的人的角度(排除他说大话的情况),为了自己想唱歌而写出来的歌曲,是不是一定会是自己喜欢的歌呢?我想多数情况下是的。
我没有能力写我想听、想唱的歌,但我有一定的能力写我想读的文章。虽然我在这之前没有意识到,但现在想来,我这个blog上三年多来自己写的的250多篇文章,都是我想看的文章。虽然以现在的眼光看早期的文章,在思想上和文字上都有一定程度的不足,但我在三年后还喜欢看2006年我写过的文章,还能从那些文章中得到新的感触。
我相信有很多人都不是这样子的。我看过一些blog的文章,很难想象它们的作者自己喜欢读这样的文章──没有思想,没有内容,文字也很少、很短,基本上连流水帐都不如。如果我写了这种文章(我小学确实写过这种作文),我一定不好意思再回过头来仔细阅读它们。还有的人看到好文章就一定要在自己的blog上再发一遍。这种绝对不是我自己喜欢读的文章。我从小学起写的作文从来没有抄过(虽然多数都是母亲代写的,那时候我最怕写作文),如果知道是自己抄的作文,我绝对不敢拿出来炫耀。而那些“锲而不舍”做转载的人,做的事其实和小学生抄作文选交作业没什么不同。
因此,我不确定别人是怎么理解blog质量的,我的感觉就是文章至少是自己也喜欢看的。想看文章,于是自己写blog,这算不算是从某个方面回答了那个QotD问题呢?
试用TypePad Connect
今年四月份左右开始使用Movable Type之后,开始关注开发MT的公司Six Apart的一些产品,当时就接触了TypePad Connect(后面简称为TPC)。尽管我还不清楚TPC的功能,但从它的样子来看,它是一个对MT构建的blog的加强工具。TPC的后台有个评论列表,还有一些“未发布”、“发布”、“spam”之类的分类,我估计可以把blog的评论功能搬到TPC上进行整合,但介绍TPC的中文资料很少,我也没有确认。而且我那时对MT的了解还很浅,不太敢动模板,于是一直没再碰它。
刚才解决了我的blog的folder问题,心情大好,顺便研究了一下。按照它的说明来修改comment模板,也很简单。设定完成的效果,官方有个视频,做了比较全面的演示,我就不罗唆了。
我在安装成功后,在上一篇文章中做了几个留言测试。在我的blog上留言并回复的效果如下:
而在我的TPC后台显式的留言列表是这样的:
可以看到,所有的留言都统一设定,支持TypePad Profile头像,而且界面比MT的后台漂亮了不少。
体验完后,我还是把TPC给删除了,恢复到MT的默认留言配置。在我看来,虽然TPC很方便,但对我而言还是有一些问题:
其中最大的问题就是把blog的留言功能交给了一个具有不确定的网站。之所以这么说是因为之前TypePad被封锁过,虽然听说已经解封,不过谁知道会不会被再次封锁呢?一旦TPC被封锁,那么使用TPC的留言管理功能的blog是不是就失去了留言了呢?如果我的blog使用英文,主要浏览对象是外国用户,那么TPC是很吸引人的功能,但如果写中文blog,还自己掌控所有信息更让人放心。
TPC的头像功能。我在测试的时候假借Zola的名字和邮箱留言,就是想看看TPC是不是支持Gravatar的头像,答案是否定的。毕竟我身边的人使用的都是Gravatar,TypePad Profile虽然非常优秀,但用户数量还是较小。我一直觉得Six Apart几年前的商业化手段是个败笔,让大量用户流失到了别的网站。如果那时候Six Apart像今天一样可以提供一些开源的、免费的服务,或许TypePad Profile就可以做起来了,用TPC也顺理成章了。不过TPC给匿名用户提供的头像比Gravatar漂亮许多,这点倒是值得Gravatar学习。
TPC留言还可以方便的让对留言的回复层叠,浏览的时候更加清晰,不过还不足以抵消上面提到的两个缺点。尤其是第一点是我最顾忌的,我想要真正解决,还需要不少时间吧。
终于解决了Movable Type的folder问题
其实我不确定是不是新奇感在作祟,自从我把blog后台由WordPress换成了Movable Type之后,就一直觉得Movable Type用起来更舒服一些。
我曾经考虑过,其实MT相比WP,在一些细节方面还是有缺陷的,尤其是中文支持这方面。当时为了改进后台的输入框中难看的令人发狂的字体,我还是花了不少功夫的。另外,我感觉WP在建立完毕后,如果要求不高,就可以正常使用了,而MT的Archive页面等问题,我到现在也没有解决掉。因此按理说,我应该是更喜欢WP才对,但感觉上就是更倾向与MT,也说不上来是因为Perl的关系还是因为Ben & Mena的关系,或者纯粹因为我“喜新厌旧”的关系。
所以即使我现在用的MT有或多或少的问题,我还是努力的让自己来写,在意识到Twitter让我的表达欲望下降之后,我有意识的克制自己,因此更换blog程序后反而比过去写的更积极了。虽然如此,Movable Type的一些小问题还是让我比较头痛,其中的绝大多数我忍受了,但有一个问题是非常难忍的,可以用“心头刺”来形容了。这个问题我在《三周里总结的Movable Type的问题》中写过,就是其中的第一个问题。那篇文章里有当时的sidebar的Pages部分的截图,在“关于我”这个页面链接下面,有四个粗体的目录名字,不能点击,相当丑陋。之前有几次我反复检查Manage->Pages里面的设定,总是不得要领,所以只好不去看那里,装作没有。
刚才在偶然的情况下,看到了Manage菜单下面还有Folders的选项,当时隐约感觉和我的问题有关系,就点进去了,结果里面显式的项目正式在sidebar下面的四行!
因为那些目录和我上传的图像等文件有关,因此我没敢直接点Delete,先ssh到服务器上,备份了其中的2008年6月目录,然后就试着删掉了06那个folder。重新发布后,果然sidebar上没有了06这一项,而服务器上的06目录并没有被删除。这下我放心了(虽然我还是先备份了整个uploads目录),全选、删除、发布,搞定!这时激动的心情是难以言表的。
这个是我成功后的截图:

虽然“页面未找到”这个404页面不应该显式在这里,但我不知道怎么控制页面是否在sidebar上显式,也没有太大影响,暂时忽略。
至此,我在《三周里总结的Movable Type的问题》中提到的种种问题,除了basename的自动生成外,基本上都解决了。邮件中文乱码的问题,也按照Fenng的方法解决了。之后对于这个blog,剩下的都是小问题了,如Archive页面找文章不方便、首页太过冗长之类的了。我刚看到TypePad Connect好像可以加强默认的comments功能,等有时间试试。
June 19, 2009
根本上的问题?
近期算是中国互联网的多事之秋。前几天绿坝闹剧还没有了结,昨天又看到了央视曝光谷歌搜索含有大量色情淫秽内容的消息。其实自从长大之后,我对国内各式各样的扫黄的举动越来越感到困惑了。
大概从初中开始,学校里就开始教育我们要提防这类不良信息,媒体也差不多同时跟进,报道过类似的事件。基本论调总是浏览的人、发布的人做错了事情,违反了法律,受到各种各样的惩处。而我们也一度确实相信了这些话,就算浏览这些信息,心理也存有很大的内疚感。这种内疚感随着我们年龄的增长渐渐减弱,不过在那个时候,我想我也可能会在记者面前说出“很黄很暴力”的话吧。
对于“性”这个东西,国家对于所谓的“淫秽信息”总体上是持反面态度的。我觉得高层人士们想解决这个问题,但如果像他们那样从负面的看待这个问题,无论怎么解决,都会感到它是个“烫手的山芋”。我想同辈的人们应该有这种印象,从各种媒体上都能听到上面口口声声的说要正规“性教育”,但在学校,基本上无论是健康教育课还是生物课,到了课本上的那一张都会跳过去不提。连这么个基础的介绍性的知识都不敢碰,那学生获取相关知识的途径岂不是只剩了一条了吗?
上面的想法是我几年前的观点,现在我有了很大的改变。自从接触了“三权分立”之类的民主思想后,我常常考虑,当我们的“基本原则”从根本上就是错的话,我们无论再怎么努力奋斗,都难以达到我们被宣传的目标。性这件事也是一样。我们不断的从根本上被误导,结果是我们自己遇到类似情况的时候都会感到像做了错事一样内疚,我们如何能发展出正确的观念?有人说宣扬这方面的时会导致人们精神腐化,我觉得不然。原因很明显,西方国家甚至我们的邻国在这方面都比我们开放了许多,他们的社会也不曾因此乱过。如果我们一旦开放就乱了,那为什么别国人在性面前就能把持自己,而中国人不行?可能的解释只有一条──中国人从人种上就比外国人低劣!我相信那些卫道士绝对不愿承认这一点,但他们已经陷入到悖论当中了。
从最近央视批评谷歌这件事看来,不难看出央视有多么的荒谬。抛开谷歌本身没有内容只是索引这方面的技术问题不谈,想象一下,就算我们能够正常浏览色情网站,又有什么关系呢?社会因此就大乱了吗?我看并不会。
上一篇文章谈到了商业与道德的平衡问题,我觉得高层在性这个道德问题上走了歪路。旧时代人们视性为洪水猛兽,但新时代的人就会因此而不能领悟吗?商业与道德真正的平衡,在性这方面上来看,道德上不应该约束性,而应该的约束在于“商业”这边,也就是法律。正常的商业规律是在不侵害别人的利益下,我有权利做任何事情。因此我们在法律这边惩处强奸等行为就好了。像其它的问题,比如卖淫、夜总会、权色交易之类的问题,只要双方自愿,也没有什么不妥。
往深处看,国家对“性”的防范,实际上只是对公民种种限制的一种。如果不把根本的问题解决,我想是难以解决性压抑这个问题的。
June 18, 2009
谈谈商业
我很早就想写这么一篇文章了,本来定的题目是《我讨厌商业》,起因是听到了一句话。后来构思了一个多月,总觉得题目不是非常的适合,似乎话题也有点过大,而且其中的一些问题我还没考虑清楚 。但考虑到时间长了终究会忘,而且最近发生的一些事情也需要这个想法作为基础而展开讨论,于是就先把不成熟的想法摆在这里。
这个想法的起因是一次和一位朋友吃饭的时候,听他说他的近况。他提到他想申请美国的研究生,申请的一个对他非常有利的条件就是他在这里跟一位行业里比较知名的老教授做实验。而他和这位老教一起做实验的基础,是他让老教授一位他在将来会读老教授的研究生。最后他说了一句:“我做这些都是从一个商人的角度进行的”。
虽然我不认同这种做法,但想来也有一定的道理:一个商人的最终目的就是追求利益最大化,而中间用了什么手段则并不重要。如果从一个商人的角度来看,事情没有做错的话,那么是不是“商人”这件事情本身有了问题呢?我的想法就从此开始的。
宏观看来,在今天的中国,“商业”的观点似乎充斥着年轻人的大脑。不用看真实商场上的“尔虞我诈”,或者申请学校中使用的不诚实的手段,我们在日常生活中就有很多“按照商业观念办事”的行为。之前我没有注意这些,但是刻意的观察与回想,让我看到了许多例子。举其中的两个:
对音乐的看法。我注意到身边有一些人,对音乐本身的美感并不关心,音乐的好与差在他们眼里只有一个标准──是否表演起来够“帅”。够帅的表演为了什么呢?泡妞!今天人们少听纯音乐,也有一些这方面的原因。
对3C设备的喜爱。很多人拿在手里的手机、随身听都非常高级,但很多都有他们用不到的功能。原因是什么呢?提高自己的“身价”。我在高二的时候曾经听一个手拿PDA手机的同学给我说过:“在将来你要是没有手机,没有PDA……别人连落落都不落落你”(注:“落落”是山东方言,发“luo”三声,后常加儿化音。意思可以理解为“搭理”。)
事事都从个人利益的角度去考虑,让人很容易联想到“世风日下”。我甚至想过,当年汉文帝说“夫农,天下之本也”,倡导重农抑商的政策,是不是已经想到了商业导致人们一味追逐利益的后果了呢?在那个年代,商人们没有地位,而知识分子的待遇非长高。在一个正常的社会中,知识分子们学到的儒家思想,指导人们行礼义之道,使得社会的整体道德水平提升。
西方国家很早之前就实行资本主义,同样以商业利益为追求目标,但为什么没有出现人们想象中的道德败坏,反倒比中国这个后来才开始发展商业的国家更为和谐呢?因此似乎目前大大小小的“道德败坏”问题并不能完全归咎于商业。这是我一直在考虑的问题。
在我看来,如果把商业与道德比为同一条线上的两个极端的话(当然比较勉强,我也想不到好词来精确描述),在一定的时间各自发展的基础上,两者必定会取得一个平衡。这有点类似与传统的阴阳学说──“孤阳不生,独阴不长”,一个社会长久的发展一条道路都是难以保持正常的。但普遍来说,基本上所有社会都是发展其中的一条方向,到了极致后再超相反的方向回归。
以现实情况来解释的话,西方国家在进行了几百年后的商业社会发展后,也许人们认识到纯粹的从商业角度来追求利益并不利于社会的整体发展,于是开始逐渐开始朝另一方面发展,也就是道德。从早期社会制定的保护资本家利益的法律,到后来的保障全体公民利益的法律,应该也是对这一方面的体现。而社会的整体道德水平也和几十年前天差地别。反观中国,并没有在道德这条路上坚持很久,每个朝代的末期基本上都是道德败坏的情况。如果中国能一直坚持以儒家思想为中心,进行社会的进步,当发展到极端的情况下,再反过来发展商业,是否能像今天西方国家一样,商业与道德全面进步了呢?我觉得是有可能的。而目前的情况是,我们在上世纪90年代初期开始发展商业,社会性质在事实上已经向资本主义倾斜,而现在似乎正处于资本主义“最黑暗的”发展期,道德回归建设尚未全面进行(虽然社会一直在强调发展道德,但因为不是走先把一样发展到极致再回归到另一样的道路,因此效果不大,最终应该会完全失败),因此目前的社会上才会有了这么多荒谬的事情。
今天的社会毕竟与几十年前已经有很大的不同了。当今世界格局下,中国或许不需要按照传统路径,在其它宏观因素的相互作用下,也许会发展出一条不可复制的方式来完成道德与商业的和谐发展。
June 17, 2009
说说论坛
尽管我身边有朋友热爱论坛,多过热爱blog,但我总觉得自己越来越讨厌一些论坛了。
当然我并不是讨厌所有的论坛,而是讨厌论坛带来的“森严”的等级制度。论坛提供给管理员一系列权利来控制用户,如果管理员善用这些权利,论坛就会发展的欣欣向荣,讨人喜欢,如Ubuntu中文论坛;相反我看到的更多的是人为的划分用户等级的不涉嫌盈利的论坛,让我非常不解。
其中最常见的问题就是从Google上通过关键字搜索到在一个论坛上的文章,点进去看却说需要登录才能访问。在不知道Google Cache或关于这个网页没有Cache的情况下,或这必须要看到全部内容的时候(比方说要下载),如果之前没有来过这个论坛,我会注册一个帐号。注册后往往要收邮件激活,这又是一道难题──很多时候那些论坛服务器发送邮件的速度很慢。经常是我中午注册了一个论坛帐户,晚上才收到激活邮件。激活之后再登录进去,却得到权限不够的消息,这不是相当令人火大吗?
如何获得权限呢?基本上就是要不断回复。这又带来了另一个问题──灌水。现在的论坛管理员和版主不知道是怎么想的,常常是一方面用权限的方式鼓励用户灌水,另一方面却要清查所谓的“恶意灌水”。为了迅速获取一定的权限而灌水,难道管理员想指望这些用户写一些有价值的内容吗?
其实灌水本身就是无价值的,很多人都想不开,倡导什么“看贴回帖是美德”之类的理论。看了这种文字,都忍不住心理骂一句。我实在是难以理解自己的文字下面有这么多“顶”之类的字看上去有什么快感。更可笑的是,我经常看到,在一个(标榜)不以盈利为目的的论坛中,有人质疑为什么要回复才能看贴时,有人反问“难道别人就应该义务为你发帖?”看到这种话,我连骂都不知道怎么骂了。一方面我才知道这人发帖不是为了推广一样东西,而是为了获得接受别人回帖赞赏时的快感;另一方面这人几句回复赞美就让他觉得应该“尽义务”,这人还真好打发/满足。
论坛这种等级模式,我认为是不健康的,必然会导致人们不会在上面讨论问题。从另一个角度看,如果发帖的人真要讨论问题,是肯定不会设定浏览权限的。而常见的有浏览权限的帖子都是什么呢?下载帖!多数情况下下载的附件都不是发帖人原创的。拿别人的东西来获取自己的快感,总让我有道德沦丧的感觉。
当然有些论坛这样做,是为了强制用户分享。比方说我开头说的那位朋友,在高中的时候喜欢泡一些资源分享的论坛。用户在达到一定的级别之后,就有权利下载更多的资源。而获得资源的方式则是上传一定的资源。记得当年他为了申请论坛的“高级会员”而在课余时间用FTP软件挂机。虽然从表面上看来这是好事,但从普通用户角度上来看是痛苦多于实惠的。而且在我的感觉里,强制贡献就让贡献的味道变了,如果我被强制要求贡献,我是不愉快的。而且这种方式在技术上也是相当落后的,今天有了peer-to-peer的时代,那种论坛策略早晚会没落的。
论坛策略很多程度上反应了管理阶层到道德问题。换句话说,论坛的管理阶层是为了用户还是自己在维护一个论坛。如果是为了自己(留言数目让自己的虚荣心满足、留言量让论坛的搜索排名上升等),让用户分级浏览则非常说得过去了。这类论坛,给我的感受是丝毫没有社区这种“家”的感觉,只有交易的感觉,因此很难让用户第二次访问。而一些真正让我喜爱的论坛,都是比较好维护了用户的“归属感”的。比如说上面提到的Ubuntu中文论坛,虽然我很早前就不用Ubuntu了,但我时不时就会上去看看,如果自己力所能及,也会尽量回答新手的问题。而且我确实记得从那个论坛上看过一个帖子分析为什么这里火,原因之一就是没有用户限制的开放性。
写这篇文章之前,我试着用前几篇文章中提到的“互联网的混乱和秩序”的观点来分析一下论坛的用户分级制度,但不得要领。说起来这个分级制度应该算是制造混乱的一种方式,但它同时也限制了混乱程度。不过从论坛全局来看,很难说它是一种秩序的东西。与blog相比,它的混乱程度应该是更高的。尽管用处不大,我还是希望论坛这种东西被新技术取代的。
与洪峰的邮件交谈
上一篇文章中说我记不得什么时候知道洪峰这个人了,当时我估计是2007年。因为之前和他通过邮件交谈过,于是我去我的旧gmail邮箱找到了那封信,发现那时候居然是2005年10月份,看来我的记忆确实不行了。
和他通过邮件交流,是因为我对他说的新一代操作系统和TeX实现非常困惑,于是发邮件去询问。他在邮件中也回复了我一些东西,可惜由于我自身水平的问题,还无法全面理解邮件中没有什么私人内容,因此贴出来洪峰应该不会有意见,而且说不定有心人看到了也许可以增长知识,也算是大功一件。
下面是第一封信的截图:

当时是我之前已经给他发了一封信询问,但可能由于编码问题,洪峰那边看不到,于是让我再发一次。我重新发送了一次后,对方给了我第二封邮件:

里面对方(根据邮件的落款,我怀疑前面的几封信不一定是洪峰本人回复的)用英文对我的问题逐一回复,我简单的用中文复述一下:
关于第一个问题,对方说:“事实上,FreeBSD和GNU/Linux已经在中国获得了它们的市场,尽管多数PC用户仍然在使用M$。”(下一段)“MING/OS(或MNM OS)与Un*x的哲学不同,你在它的基本观点中找不到文件和进程,他们都被Scheme的s-exp和线程取代了。”
关于第二个问题,对方说:“NeoTeX是MING/OS的桌面。它支持互联网应用程序,特别是与专家系统的接口。”
关于我询问的他们的杂志从哪里可以买的问题,对方回复:“请把你的通讯地址用中文写给我,我可以给你寄一份。”
然后我回复说我还无法理解这样做有什么优点,而且也不理解为什么Un*x系统把一切视为文件的哲学需要革新,然后洪峰(落款是他)回复了一份比较长的邮件,复制如下:
我说:“基于元内核的系统或许是一个新概念,但我不理解它是否能给我们带来什么好处。就如您所说的那样,MING/OS中将不再有文件和进程的概念,也许这很先进,但我们真的需要它吗(这让我想起了微内核与单一内核之间的争论)?(我很想听听您关于Un*x不足之处的讨论)。”对方回复:
如果你知道了 UN*X 的缺点, 也就会开始明白 MING/OS 的一些优点了.
UNIX 的设计哲学是基于文件系统和进程的, 实际上, 进程也是当作文件来操作的, UNIX 的根目录下有 /proc 子目录, 在开机之前, 目录是空的,机器启动了, 操作系统运行之后, 各种与进程有关的东西就写进了这个目录的文件中. 所以 UNIX 的进程是当作一种特定的文件被调度的.
这里隐含的问题有两大类(无论是微内核还是整天内核):
整个UNIX 内核是一个编译了的二进制代码快, 其语义对于开发人员之外的广大用户是不可解的, 因此对于用户而言, 内核的运行时系统的行为是不可随意改变的,
文件系统中的文件(对于内核而言)是一个没有语义的容器, UNIX 设计哲学把语义的处理交给了应用程序的开发人员去处理. 在 UNIX 历史的早期, UNIX系统上有五花八门的文本处理工具: 从 shell (光shell的种类就有差不多一打), sed+awk, troff, Perl,.. 都是以文本为基本的操作对象, C 语言起初就是一个字符处理器(CHAP, CHAracter Processor), 这就是为什么 C 语言故意把字符串设计为字符数组的根本原因, 因为 UNIX 系统是作为字符处理系统设计的.
还有一个问题(当然这个问题在 UNIX 诞生时不存在): 那个时候计算机网络没有流行, Internet 的前身是分组交换网络, 是1968年才提出, 1970年UNIX 诞生时还处在其他实验室的科研人员的头脑中, 一个程序在单机上能运行起来就不错了.
文件中内容的语义缺失是问题的核心, 没有语义的暴露, 那么文件的内容是不可理解的, C 编译器在编译 C 程序时产生了符号表, 语义树就记录在那里, 你调试C 程序时, 这个符号表帮助你的调试器工作, 但是编译结束后, 程序可以正常运行时, 符号表就被扔掉了, 因此你得到的 C 的二进制代码(包括 UNIX 内核) 的语义随之消失了.
这就是 UNIX 的核心问题, 也是当今软件工业界面临的最最根本的问题.
解决问题的对策仍然在对文件这一概念的改造上, 如果文件这个容器中的内容含有一种通用的结构来表示语义, 那问题就有求解的可能性.
基于数组的结构很紧凑, 从存储效率和访问效率上它最好, 但是,当你向数组插入东西,删除东西的时候,问题就马上出来了, 因此, 数组存在多媒体等大容量不用插入删除修改数据很好, 但是文件的内在结构不能定位在数组这种结构上, 因为文件是需要经常被插入和删除数据的, 如果你对数据结构课程的内容很清楚, 你马上会明白链表是正确的选择. 链表在访问效率上比数组差一些, 但是在数据的插入和删除上远远好于数组.
前面提到的符号表(symbol table), 在编译器中一般采用 hash-table 来存放和表示, 而哈希表可以利用递归的方法采用链表来表示. 即通过链表的嵌套表示. 因此这一切都回到了 LISP 的设计哲学上, LISP 是 LISt Processor, 它是列表处理器!
W3C 的 XML 就是 LISP 的列表的一种变形, 在列表的基础上, W3C 在拼命工作, 推出各种语义的规范, 所以, 万维网的实质是什么你现在应该看得很清楚了 --- 它在利用形式语言标准化各种数据的语义.
在我看来, W3C 不会彻底成功, 充其量只能成功一半. 这是因为数理逻辑的研究结果已经指出, 只有一阶谓词演算是可靠的, 多阶或者高阶谓词系统不能满足公理系统的完备性和相容性 (具体参考哥德尔的工作). 这个结论很残酷, 但是, 它给语义问题的研究划出了一条边界线.
任何一个基于一阶谓词的逻辑系统, 例如我们定义语言的形式语言, 它所建立的边界的闭包都是静态边界. 在这个边界内部的推演(按照形式语言定义的规则)是可靠的. 当时对边界之外的东西, 这个系统是无法辨异同的, 我们不能判定其真假.
计算机互联网扩大了计算的边界, 因此, 它要求可以动态调整语义系统的定义, 从而(按照计算的需要)动态地扩充其闭包所能覆盖的范围, 具体的做法就是, 你随时可以从网络上弄来一个语义树, 把这棵树安装到你原来的系统中的某个节点上, 一旦完成了安装, 那么你就建立了新的闭包, 因为新引入的树引入了新的拓扑空间.
UNIX 内核无法满足这样的任务, 很难想像对一个没有语义的二进制代码块如何在运行时系统中引入一棵新的语义子树.
"明"操作系统的元内核设计彻底扔掉了文件系统的概念, 在明系统的元内核看来, 一切东西都是 Scheme 的符号表达式(S-exp). 元数据和元程序都是它, 从而同一了数据和程序的表达方式, 再对自然语言的基本语义块进行标准化, 即可一举连通"人-机, 机-机, 人-人"网, 形成一个泛系网络.
现在你可以看出这么几点:
- 数学修养的重要性;
- 自主创新绝对需要独立思考, 不能人云亦云;
- 新时代下的创新往往是多个学科交叉的结果,
我说:“我有一个感觉,洪先生领导的MNM Project想把Lisp Machine和ITS系统带到今天,重现当年黑客们的理想(就如Eric Raymond的《黑客文化简史》中一样)。如果真是这样,那么MNM Project一定将是一个非常有趣的项目,尽管我尚未完全理解,我也希望你们能成功。”对方回复说:
在 LISP 前辈的基础上, 我比前辈们做的工作更加深入, 这没有什么奇怪的, 因为我生活在一个物质基础完全不同的时代.
明系统的元内核已经完成了, 现在进入了第二阶段, 把 NeoTeX 设计出来, 即这个系统的用户界面. FPGA 的引入将是第三阶段的事情, 我明年去瑞士 ETH 后要完成它.
致意,
洪峰
June 16, 2009
洪峰是什么
记不得到底是那一年知道洪峰这个人的了。最近感觉到自己对近期时间的概念弱了许多,我以为我在2007年偶然从网上知道了洪峰,但也不确定是不是06年或是05年。不过之所以听说他,大概是我在网上搜索TeX相关的资料找到他的吧。说实在的,他的那篇《排版、印刷和网络出版》写的是相当不错的,加深了我对TeX的理解。
顺着那篇文章,就找到了他当时的网站“http://www.rons.net.cn/”,这个似乎是他给自己当时弄的公司的网站,上面有很多他的文章,比如《黑客道与教育传统的复兴》、《泛系、自由与“一、百、万”工程》都让我很长见识。他还在那个网站上提到了自己的计划,写一个操作系统Ming/OS、写一个新一代TeX实现NeoTeX,两者都是以Scheme为基础的。当时我对他说得这个操作系统和TeX实现还非常迷惑,发邮件给他询问,来回也传了三、四封,其中的一封回复还相当长。
我后来写过一篇文章,因为那一阵子发现那个洪峰的网站上不去了,便疑问是不是他不干了。我一直觉得他说的那个MNM计划没什么未来,因此觉得不干也挺正常。但那些文章就找不到了,当时着实可惜了一把。后来发现web archive这个工具,找回了一些文章,非常高兴。
不过我心理一直有个疑惑,而且这个疑惑越来越强烈──洪峰虽然在文章中推崇Richard Stallman为自己的榜样,但我只觉得这是洪峰自我标榜的手段,他并没有真正像RMS学习。理由是洪峰的所有工作都非常封闭。
洪峰在最早的网站上就提到过自己写了很多书,搞黑客道培训。看那些书名能让我馋的直流口水:《Scheme之道》、《C 指针编程的艺术》、《Assembly Environment and Tools》、《Compiler Construction in Scheme》、《The Algorithm Language Scheme》…… 这些书从来不在大陆发行,只在国外的出版社发行,这倒无可厚非。不能在大陆正常渠道卖,这我也理解。但难以理解的是书购买方式真得很不方便。最近洪峰发行了一本书《黑客道诠释》,在他的个人网站上有封面和目录,上面除了洪峰一贯推崇的吴学谋外,倪光南也给他写序。虽然倪光南经常写一些让人鄙视的文章,但好歹名气也在。这么一本书竟然在Amazon上找不到。洪峰说这些书由瑞士的“Singularity Press”出版社发行,但到了它的主页上也找不到这本书的影子。
另外,他的书一贯的昂贵的价格,让我怀疑洪峰是不是像他文章中说的真得是中国武汉长大的孩子。在他早期的网站上有个页面上列出了他的书的价格,我找不到了就不说了。刚才我从网上搜到这个页面,是他新办的一家名为“超新星”的公司出售他的《黑客道诠释》这本书。整本书有848页,每册的售价加上邮递费和“人工处理手续费”一共1000元。在国内什么时候有人花1000元买一本书?在他的这本书的封面背面印着售价瑞士法郎150元。我刚查了一下,瑞士法郎与人民币的汇率,和加拿大元与人民币的汇率都差不多,在6.x:1左右。我在加拿大书店买本计算机书,120加元的书已经相当不得了了,真难想象150加元的书是什么样子。
与洪峰推崇的RMS比较一下,很容易就看出不同。RMS的Free Software Foundation也出售他们的操作系统的光盘,似乎售价也不低,但他的软件都按照GPL协议发行,公开源代码。从GNU的ftp服务器上,还可以下载到各种格式的RMS写的文章。而洪峰效仿RMS,公开的只是他的书的封面和目录!因此我常常有感觉,这个洪峰是不是个骗子?
另外,我上面说我给他发邮件问过问题。我在给他的邮件中顺便询问过他在网站上说的他们推出的关于自由软件的杂志在哪里可以买到。他回信说杂志已经不发行了,让我把地址给他,他会给我邮寄一本,结果我发过地址后就没有了回音,我也没好意思再问。
洪峰以在国内推广自由软件为己任,但他的做法实在让我有种“敛财”的想法。中国绝大多数TeX用户聚集的社区CTeX中文社区对洪峰的印象也不好。洪峰曾经在国内召集过一次国际TeX会议,据说请了一群外国TeX开发者来演讲,说自己提出的新一代TeX中文解决方案收到了很多国际TeX开发者的赞赏与支持,但我一直觉得他对中文TeX推广做得远不及CTeX中文社区的人们的万一。
但至于洪峰究竟是不是像我说的那样,我毕竟不了解实情。只是我相信多数人看到了洪峰的做法后,都很难认同洪峰吧。虽然我还是希望他真得做出了一点东西,至少现在中文Scheme资料不多,他能写一点中文入门教程公开发布,也比他现在的行为的影响来得深远!
June 15, 2009
成语列表
今天浏览TopLanguage的时候,看到有人提到成语接龙,于是想自己也试试。找到一个成语列表似乎是基本的一步,但从Google上找了一会,居然没有。看到问典上有个还比较全的成语列表,可惜是按照音调排在了不同的网页里,于是自己写了几个Perl脚本,把成语提取了出来。这几个脚本是相当quick & dirty的工作,不求功能完整,也没有整合起来,手工分成几步完成了全部工作。
1 获取这个页面的源代码,保存成本地文件,作为参数执行下面的代码。这个页面的HTML不知道是什么软件生成的,没有换行,全部都在一行上,于是就把其中的一个tag替换成了换行符。
#!/usr/bin/env perl $_ = <>; s/<\/a>/\n/g; print;
2 把上个程序的输出导出到一个文件中,作为参数执行下面的代码。这一步就纯是提取每个音符开头的成语列表页面的链接,并加上链接头。当中有些链接是‘#top’,弄个if语句过滤掉。程序的输出就是一行行的链接了。
#!/usr/bin/env perl
while (<>) {
if (/href='(.*)'/) {
if ($1 eq '#top') {
} else {
print "http://www.wendian.com.cn/idiom/$1\n";
}
}
}
3 把上个程序的输出导出到一个文件中,作为参数执行下面的代码,就会得到每行一个的成语列表了。这一步首先通过LWP包获得一个链接的HTML代码,然后转码,最后把包含成语列表的那一行找出来,提取初单个成语输出。运行时程序会在stderr提示宽字符之类的警告,可以忽略,用重定向符输出到文件时不影响。
#!/usr/bin/env perl
use utf8;
use Encode;
use LWP::Simple;
while (<>) {
$page = decode("gb2312", get($_));
@lines = split(/\n/, $page);
foreach $line (@lines) {
if ($line =~ /首字拼音为/) {
@words = split(/<li style='font-size:15px;'>/, $line);
foreach $word (@words) {
if ($word =~ /<a href='.*'>(.*)<\/a>/) {
print "$1\n";
}
}
}
}
}
June 14, 2009
版权的演绎
这篇文章本来是昨天该写的,可惜由于太忙,因此到晚上回家就忘了这个事。今天其实过的也算蛮失败的,但亡羊补牢一次。我是昨天吃完早饭+午饭后,坐同学的车去学校的路上考虑这个问题的,当时胃部忙于消化,脑部供养不足,在车上昏昏欲睡,因此思考的也没什么逻辑。
现在想不起来当时的细节了,大体意思是,对于中文文章,组成的元素就是一个个单字,而一个字是没有版权的。把一些没有版权的字组合起来,就有了版权,那么所谓的版权,大概就是这种组合了吧。
过去看过一个幽默,说是千万不要尝试计算π(pi)的二进制形式,因为一旦你成功,你就有了任何一个软件、任何一部电影、任何一首mp3……的二进制版本,也就是侵犯了数不清的版权。二进制的pi不过是0和1的组合而已,却可以和版权作品所重复,相当神奇了啊。
我似乎也考虑了字符雷同的问题。因为保不齐两个人可能想到一块去了,虽然他们之前没有任何交流。如果二进制的pi的故事有发生可能的话,那么两个人写出相同的文字也是有可能的吧。就算可能性不是那么大,那两个人写出雷同的东西来的可能性就大多了。
在商业领域中,一个作家出了一本书后,要考虑、跟踪是否有人弄雷同的东西,是不是很麻烦且无聊呢?在网络上,如果自己写的文章,被别人随意转载,也是相当令人不快的。不过现在我似乎已经麻痹了,有时候面对现实的无奈,一定要与之较真的话,确实很麻烦,我还不是那么有毅力的人。
另外,我考虑过一个网络上的作者,应不应该为自己文章的可访问性负责人呢?前几天我偶然看到月光和玩聚的郑昀在网上互相攻击的消息,于是追踪了一些文章。其中的一个点是,玩聚保存了文章的快照,月光的意思是这些快照影响了原文的排名,郑昀的理由是一些人的文章过了一段时间就访问不到了,链接成了死链,不利于玩聚的读者。这个出发点无疑是好的,但我比较困惑──是不是原作者没有管好自己的站,实际上是损害了公共利益的不道德行为?一方面,我遇到过找到一篇文章,进去却返回404错误的无奈;另一方面,虽然我的文章成了死链比较遗憾,但我还是不希望我的文章的内容在网上出现多次,有这种想法的人也是有的。我比较偏向的回答是:当有一天一篇文章成为了死链,文章的作者的责任是为0的,如果他不同意别人保存文章的快照,他不应该有任何道德上的指责的。对于保存文章快照方面,人们的说法不一,不过Google目前的方案还是取得了大多数人的认同,就是使用robots.txt文件。玩聚的出发点是用户,似乎还没有支持robots.txt。
我自己也有这方面的经历。今年四月我变迁blog程序的时候,单篇文章的链接也随之发生了改变。Movable Type也支持WordPress默认的那种目录式的链接格式,不过那时更认同Movable Type的默认格式,于是就没有改动设置。结果Google Webmasters Tool里失效链接一片一片的,别人引用的老旧链接我也没法更改,于是只好激发自己找解决方法。但没有能力让所有老的链接都来个301转向,因此只好在404页面里加上说明。好在现在Google搜索结果里面,老的链接基本上都没了。另一件事情是我写过一篇《好的blog阅读习惯》,没几天李笑来推荐了这篇文章。但后来由于我的blog服务器被攻击等原因,我重建blog后也没恢复那篇文章,结果有人在李笑来的blog上留言说找不到那篇文章了,弄的我很尴尬。
这种链接失效的事情当然很遗憾,但我也讨厌自己的文章被转载。其实我没有损失太多,多数情况下我的原文在搜索引擎里的排名是在最前面。这里说“多数情况下”是因为有一个例外──JavaEye。它有自己的blog系统,我曾经注册过。但没有实际用过它,只是在里面保存了我的blog的RSS地址。因此当我的blog发表新的文章后,没一会JavaEye上就有了同样的文章。但不知为什么,似乎JavaEye做的SEO比较好,因此有一阵子JavaEye的链接在Google里的排名总是比我的原文靠前的,而JavaEye又不支持删除blog,因此我除了取消了导入设定外,只好修改JavaEye上的blog的标题为“请访问我的blog XXX”之类的。到现在搜索一些关键字还可以看到JavaEye的搜索结果。
其实我最近受了玩聚网的不少好处,我的一篇关于Google Wave的文章,经人在玩聚上推荐,导致这个blog的访问量大增。不过我对制造网上的数据冗余还是持反对态度的,虽然这样显得对读者很不友好。不过现在看来,玩聚找到了两者间的一个相对平衡点,很少有人抱怨了。
上面的都是题外话,说到版权方面我似乎总有说不完的话,最近听到这学期修“计算机伦理”课的同学说,学期论文的题目是版权,而我上学期修课的时候学期论文的题目是“网络中立”,让我一度后悔早学了一个学期。
其实对于文章开始时说的话题,经过一天时间我已经有很大一部分记不清了。但最后总结的一小点还是比较明确的:如果原文的作者不通过文章来获利,是否对于版权的关心就少很多呢?昨天我想来想去,得到的答案是“是的”。在网络环境上也是,别人转载自己的文章也就算了,但如果正式媒体没有经过允许就放上自己的文章,基本上是要讨个说法的。印象里是在2007年,某报社的董路在杂志上未经原作者许可就放上了原作者的文字,甚至没有提到原作者的名字,并在原作者询问这件事的时候回复态度恶劣。原作者是谁我也记不清了,事情最终怎么解决的我也快忘了,只是后来再在网上见到董路的名字就有点阴影。这种情况大概解释了版权和利益的关系。
而CC协议是一个比较特殊的东西。它几乎不与利益挂钩,虽然解决方案没有完全解决数据冗余的问题,有点令人无奈,但至少让原文作者得名,这是相当正面的。因此我觉得CC协议制约的只是网络上的转载者,而对传统因在纸上发行的媒体的约束力不大。似乎是一年前,Apple4.us网站(我的下一篇文章应该也与之相关)宣布放弃CC协议转为copyright也引起过争议,我是认同的,这其实也算从另一个角度来阻止数据冗余。另外,也防止了传统媒体钻CC协议的空子。
经过今天一天的失败生活,文章写的很零散,最早的想法也算差不多了。失败啊。
June 12, 2009
互联网应用的趋势
这篇文章是我之前的一篇文章《Web 2.0和熵》的延续和补充。
在那篇文章里,我说混乱是互联网的趋势,因为世界趋于混乱,人心也趋于混乱,混乱符合大众的要求,因此帮助人们制造混乱的工具会火。于是Facebook火了、Twitter火了,不止如此,他们的一众模仿者也都或多或少的火了。然而今天我突然意识到,这个观点只描述了事实的一半。世界趋于混乱是真的,但我们还是需要秩序的,只有两者在维持一定平衡的状态下,世界运转才正常。不止网络如此,这应该是普适的真理。
抛开宗教传说不谈,我感觉混乱始于秩序形成。自从人类进化成功,第一个状态就是蛮荒的原始人状态。那时候的人类更多的是遵守下一层次的秩序,也就是动物的秩序。人类混乱到一定程度后,秩序诞生,这就是母系社会的由来。相比之后的黄帝开启的时代,母系社会的秩序相对松散,因为如果没有秩序,母系社会的混乱度应该远不及黄帝的那个时代。后来人心渐渐复杂,混乱程度加深,于是出现了王法,由百姓对君主效忠的形式,维持了社会的秩序。如果没有秩序而一味追求混乱,我想人类也不能走到今天。
互联网就符合这个趋势,在上世纪90年代初期,万维网刚刚诞生,可以访问的网页屈指可数,人们没有想过需要一个工具,用户输入关键字后能返回包含关键字的网页。后来网页逐渐增多,记住所有网站成了不可能的任务,于是人们对于秩序的要求早就了斯坦福的两个年轻人──杨致远和David Filo。2000年之后,网络进入了高速发展期,Web2.0的诞生更导致了网络内容大爆炸,网络进一步陷入混乱之中。这时的雅虎已经无法完成对高速增长的网页进行索引的工作了,于是我们接受了Google。
因此我觉得,在将来,人么需要的互联网工具有两种:一是能帮助人们创造混乱的工具,另一种则是帮助人们从混乱中提取秩序的工具。
混乱是趋势,但混乱的信息对我们的帮助很小。我们喜欢不受限制的输出信息,也就是说,我们把输出的东西弄的越混乱越好,但我们只容易接受有秩序的信息。被秩序的总结起来的信息,不仅能被计算机正确处理,也能更容易的让人脑接受处理。因此Google在这几年发展迅速,正式由于网络的“混乱化”进程发展的非常迅速,给Google创造了更大的空间的缘故。
目前的情形,混乱还是占据了一些优势的。比方说Twitter,到今天为止,发布的每条消息,基本上就成了泼出去的水,再要找出来就困难了,更别说从中提取初什么有价值的信息了。Facebook之类的SNS服务也是如此。还有一个例子是微软的“大饼”,Google目前做了很多,但面对越来越混乱的信息,还有点力不从心的感觉,微软的“饼”标榜自己是个决策引擎,其实就是想在Google之上对混乱的信息进行进一步的整理与提取。
还有一点,对于制造混乱的工具,自然是越多越好;提取秩序的工具,我想在未来只需要一家就够了,这是混乱和秩序的定义决定了。制造混乱的工具多了,会让网络愈加混乱,而提取混乱的工具多了,本身就是一种混乱。比如先在对中国人来说的Google和Baidu,两者功能相近,两者结果的不同也给用户带来了一些困惑。
因此在将来,我们需要的是一系列制造混乱的工具,和一个最强的提取秩序的工具,我想这就是未来互联网应用的趋势。
一年
这篇文章描述的是我昨天下午回家前的突然感受。那是下午四点半左右,因为我前一天晚上和再前一天晚上熬夜准备第二天的内容,差不多都是凌晨三点半才上床的,早上十点左右就起床去学校,每天靠三杯咖啡来撑着。把这个星期熬过来后,昨天下午我终于无法再坚持了。一般每天我都要在学校呆到十点到十一点之后才回去,但昨天下午四点开始我就无法集中精力了,虽然不是很困,但感觉很烦躁,于是就提前回家。
回家前感觉肚子挺饿,想到一天没好好吃饭,就在咖啡厅买了一杯咖啡和两块点心,准备边走边吃。走到楼外面,觉得手中拿两块点心加一杯咖啡有点困难,又看到室外的一群桌子那里没有人,就从那边坐下来,吃完东西再走。
昨天的天气相当不错,前几天的雨已经结束,温度非常适中;夏天的酷热还没开始,虽然阳光明媚,但并不感觉灼热。外面的树都已经绿了好几天了,叶子的颜色虽然已经不是翠绿,但还没有变深,满眼望去是温柔平静的绿,让人感觉平和中庸,神气清爽。
我是个容易怀旧的人,昨天坐在那里,呼吸着新鲜的空气,享受温暖的阳光,不由自主的想到了一年前的生活。那时候我已经从别人的地下室里搬了出来,但没有置齐家具,因此住到了同学的家里。那时我的课程已经上了一个月,一门《数据结构与算法》非常简单,不用听都能过;一门《离散数学》,我们系的元老给我们上,课程也不复杂。两门课都是晚上,但因为我在家不能学习,我的同学早上又有课,我于是就跟着他早上就去到了学校,在一个我现在很少去的自习室里学习。
那时候我用Mac系统不久,刚刚从网上找到了iSync的Nokia E50插件,可以让电脑和我的手机同步iCal项目、通讯录等信息。那时候我的每天严格在iCal中制定每日的日程,严格按照日程来操作。早上去学校的第一件事就是把Google Reader里的未读项目都“消灭”,然后把TopLanguage上面的未读邮件都“消灭”。后来到了八月份,我的另一门课临近考试,我就再也没有贯彻每天把邮件列表读完的习惯,结果到了现在,TopLanguage上面的未读邮件是17591封。
我的同学到中午12点半左右就上完课,我们吃完午饭后的活动,基本上就是去草坪上扔飞盘。小时候没有见过正式的飞盘,都是把硬纸剪成方形或圆形来扔着玩。当时比较好的材料是得利斯或这奶丝瑞的生日蛋糕的盒子的盖子,外面一圈可以很容易的撕下来,正好留下里面的一个飞盘大小的圆形。有一次我和同学去学校的书店转悠,在门口看到了飞盘,于是就买了下来。当实际扔起来,才发现飞盘有门道的。力度、角度的控制要刚好,而且也不是扔的越远越好,而是要给对面的人制造尽量舒服的角度、速度、与力度,来把飞盘接住。本来我以为飞盘的角度应该是斜着向上,边缘把空气破开,才能往前冲,后来才体会到应该是盘面超前的飞,这样才能尽量稳定,而且飞盘下落的时候能撑住空气,换换的落到对面的人的面前,因此接飞盘就不需要什么技术了。
飞盘这项运动虽然只是把飞盘扔来扔去,但运动量却不小。我们玩完后就已经满头大汗了,去图书馆用水龙头的凉水洗完脸,在外面和可乐的感觉别提多爽了。
一年前,我还不懂走路上学有什么好的。每天早上和同学走路去学校,心里想的是买的月票废掉了。现在,我每天走更远的路去学校、回家。不过我仍然相信我在一年前和同学走路上学的感觉是不好的。因为我后来发现,我的腿只能让我以相对较慢的速度踱步,而要人模人样的按照标准的走发,不一会我两遍的小腿就疼的要命了。现在也是一样,我上学的时候腿很疼,但回家的时候就算绕远路也不觉得怎样,估计就是这个原因。
现在似乎很多人都回国去了,每天只有一个人在学校打拼的感觉。我果然还是不适合写这类文章。
June 11, 2009
传教
今天上学路上,在穿越两条大马路的一条纵向小路上,被两个女的拉住给我讲宗教。起先我们是相对着走的,比较接近后我朝另一边偏,把道路错开,没想到他们反而叫住了我。
上来问我有没有时间听她讲讲宗教,还没等我反应过来,就劈头问我一句:“Do you know where are we from?”。我之前听朋友说过经常有人来给人传教,这次是我头一次真实经历的。
其实我对宗教方面还蛮有兴趣的,要不是我要赶着去学校,而且我们不同路,我还是挺愿意听的。可惜我们不同路,我只好婉拒了。她又说了一大堆才放我走路,最后给了我一张名片大小的卡片,说上面有网址,希望我有时间可以看看。接过卡片来一看,原来对方传的是摩门教。我对摩门教的了解很浅,之前的印象似乎它的名声一般。
我走了以后,发觉刚刚自己没反应过来。当对方问我“Where are we from?”的时候,其实我蛮可以回答“Fuck”的。
附:对方给我的卡片照片,我是用MacBook上的iSight镜头照的,分辨率不高。
正面:

背面:

绿坝创建更和谐的互联网
自从我写的那篇关于Google Wave的文章被人们在网上分享后,我的blog的浏览人数升高了不少。这是我写文章的时候没有想到的。
写blog始于看一些名家的blog,因此在blog建成初期,我总是希望访问量上升,最好能像keso、王小峰那样有影响力。但希望总是希望,我的blog的主题决定了这是不可能的事情。习惯了之后,觉得这样子不错,写blog本身就不纯是为了给人看的。一段时间后能回顾过去发生的事情、脑中的想法,blog起到了日志的作用,对我来说就足够了。而每天平均50的访问量,多也好、少也罢,对我来说不过是blog的附加价值了。
尽管如此,我还是觉得自己在维持blog的社会化方面的工作还是比较积极的。基本上每个留言我都会回复一下子。说来惭愧,我自从改用了Movable Type作为blog程序后,还没有认真的测试过blog的功能,因此我也不知道我回复了别人的留言后,别人能不能收到提醒。我也没有安装这方面的插件,主要也是因为没有精力来搞这些。
这个月开始浏览量有所上涨,因此blog上多了几个留言。我本着每条留言必回的原则,或多或少的回复了每一条留言。我这时候才发现,其实留言多了也是有烦恼的。对于我这种小型blog,留言中讨论的问题基本上都是有争议的,比如中国的网络应用环境之类的问题。而我最近可能太久没回过的原因,国内的一些劣质网络应用长期依赖给我积压的怨气,让我毫不考虑措辞,带“尸”带“肉”的字直接就敲上去了。这时候一些人看了就受不了了,于是就留言与我辩。
这类评论,我看到后的第一个感觉就是“荒谬的可笑”。不论对方说的是对是错,我为了写一篇文章,总要把里面的论点想个遍,而留言正好和我的观点相反,很容易让我网这方面想。然后就真想回一句“傻屄”了事。不过这毕竟是自己的blog,我也不想让人觉得我不讲道理,于是就在脑中思考一下留言中的观点,把语言在脑中组织一下,再分析对方的逻辑问题。
来来回回几遍后,我也确实烦了。有的问题,不同人在不同的环境、立场中思考的方向不一样,观点不同是必然的事情。比方说最近我的blog上讨论QQ的问题,我在目前最后的一次回复时,想到这个问题实际上是没有意义的,从一开始的第一个留言过来质疑开始就没有意义。当时一度想给对方说“这个问题很无聊,没有任何实际意义,争论的结果到最后不过是互相向自己证明对方是个傻屄而已。从一开始你回复我的文章开始,你就开始浪费了不少时间了,不如在此打住,回去干你的正事去”。不过觉得事情也没到这个份上,于是还是从逻辑上作了解释与回复。
只是那一瞬间,我突然更深的体会到了为什么王小峰称他的blog上的留言者为“黑猩猩”了。
我也有过这种冲动:看到别人的blog上让我感觉二的文章,就忍不住去留言骂他。不过我都忍住了,去年下半年开始我就直接懒得回复了,脑中的措辞都懒得想。但我发现有些人似乎脾气更暴躁,看到别人说了不同的观点,不管有没有用,上去就去批评别人,很少站在对方的角度看问题。即时从对方的角度看过去合理,也一定要说对方的角度就不对。我是衷心的希望这种留言消失掉的。
我一度怀念过去的互联网,那时候即时在大学里,也只有计算机专业的学生才有机会使用互联网。网上的非技术资料因此只有科幻小说之类的东西而已,而那些欠考虑的留言则永远不会出现。不过这种想法常让我觉得不妥:首先是过去的互联网,意味着退步;其次是只有计算机系的学生才能使用互联网,也有歧视的意味。
不过现在这个问题被中国政府的官员完美的解决了──有选择的让网民浏览网络不就好了吗?像这些容易引起争议的话题,里面常常会有一些“脏话”,如“操”、“傻屄”之类的词。开发一款软件,把这包含这些东西的文章过滤掉,不就可以杜绝这类留言的出现了吗?于是官员们通过公开招标,选出了同类软件中的佼佼者──绿坝·花季护航,并在电脑出厂后就安装上它,这样一来,以后的网络就会越来越和谐了。已经买了电脑的人也不用失望,绿坝这款软件的安装十分简单,选择路径什么的统统不用管,这类软件才叫人性化的国际领先软件。
怪不得有人说:“给一个学科带来变革的人,往往是另外一个领域的”。
June 10, 2009
Web 2.0和熵
昨天从Google Reader上看到某人分享了一篇Solidot上的文章《大多数博客已放弃更新》,当时想想确实如此。我在2007年写过一篇文章,提到当时人们对blog并没有很大的热情。当时我希望在几年后这一情形会有所改善,结果没想到由于微博、Facebook之类的东西的逐渐强大,现在不光国内,国外的blogger也越来越少了。
当时有一种奇怪的感觉,一直想提炼出来写成一篇文章,一直到晚上躺倒床上之后才和“熵”联系起来。我不是物理专业的,没有系统的学过“熵”有关的概念,不过也大体的了解作为热力学的单位之一的“熵”能度量“混乱程度”。因此“熵”在我的印象中就是来衡量“混乱程度的”。
之前听过一句话:“宇宙的自然趋势是越来越混乱的”。互联网的发展,现在想来,是相当符合这句话的。互联网的大规模兴盛始于万维网,也就是网页的增多。最早的网页都是些html代码,浏览器负责解释并渲染,信息的流动都是单向的,也是相对秩序的。后来Web 2.0的兴起,给了网络大众的用户改动网页的机会──页面有了交互系统。Blog相对于传统网页的优势之一就是读者也可以留言,这样也使得一个留言活跃的blog页面会相对于传统静态网页越来越“混乱”。混乱不是坏事。从某种角度上说,混乱是符合自然规律的,因为整个宇宙的大趋势就是混乱。所以blog自然而然的顺应人心,在前几年着实火了一把。
但这样似乎还不够,人们要求更低成本的制造混乱的方法,因此微博、SNS等系统就营运而生了。
从静态网页到微博一路看来,混乱的程度果然越来越高。静态网页一旦完成,信息就在那里,我们只要索引了就可以方便的找到信息;blog介于两者之间,正文部分很像静态网页,留言部分很像微博系统,因此我们在正文中找信息还算容易,在留言中找信息就要话很多功夫了;新一代动态系统则更为混乱,信息的搜索在目前的技术下很难实现。想想看,要从Twitter上找到2007年发布的一则tweet是多么的困难,从校内里面搜索之前看过的一篇文章,应该也相当麻烦,或者根本不可能。新一代动态页面有“即时”的特色,也就是说,我们关注的是近期发生的事情,过去了的就不再关心了,即使想关心都很难。
正因为“混乱”是自然、也是人类的天性,因此网络的潮流也朝着混乱发展。由此看来,blog的没落是必然的事情。如果有一天我们发明了更混乱的东西,今天流行的SNS也要被淘汰了。
从另一面说,在今天还在坚持写blog,甚至还在写静态页面的,基本上都算是“违反潮流”或“逆天”了吧。不过这也不是坏事,有个比较古老的关于修仙的观点是:修炼的过程其实就是逆天行事的过程。人类的“天命”就是出生、成长、衰老、死亡。而修炼让人返璞归真:胎息、先天呼吸什么的,就是人在出生前在母体中的呼吸方式。从一个人修炼到子宫中去,可不是逆天么。逆天虽然艰苦,但确实修炼的大道。看到网络上,现在还在写blog的人,或者还在写静态网页的人,我觉得就有点违逆潮流,从混乱中提炼秩序,总结成文章。因此写一篇blog,比在Twitter、校内上扯几句淡容易多了。
结论怎么下,我也不知道。不过不管是混乱还是秩序,都是自然的。因此,我们不能让blog回复几年前的光景,也只好由他去了。不过也不需要对blog有所质疑,秩序比混乱要来得艰苦,但更有价值。如果能坚持写blog,哪怕更新频率为一年一篇,也相当有价值。
June 9, 2009
谷歌翻译辅助系统好棒
今天早上看Google Reader的时候,从Google黑板报上看到了“谷歌翻译辅助系统”(Google translate toolkit)发布的消息。开始的时候我没在意,只是顺手点了一下产品的链接,继续看其它文章了。等进去一看,却让我吃惊的有点合不拢嘴──这正式我想了很久的东西了。
我过去曾经翻译过或多或少的英文计算机相关的文章,一来锻炼英文,二来也算“造福大众”。在今年2月左右,我翻译了几篇Guido van Rossum写的《Python历史》。那时Guido刚刚开始写,我本来想的好好的,Guido出一篇,我就翻译一篇。不过翻译了几篇后我的进度就再也跟不上了。最后的一次是Guido似乎那一阵子比较闲,放出一大长篇后,没几天又放出一大长篇。Guido的英文风格让我看来有点过于复杂的感觉,不知道是不是因为他母语是荷兰语的感觉,翻译他的文字比翻译标准英语母语的人(比如Andy Hertzfeld)要吃力。
后来我曾经仔细的想过这个问题,发现我在翻译中最大的困难是没有好的工具。我的翻译方法是:先把要翻译的英文存成文本文件,在emacs里面一段一段的翻。经常在写下措辞了很久的中文翻译后,要花很长时间回去找下一句英文。我也不是那种做一件事能非常专注的人,经常在回头找英文的时候就走神了。因此,让我做少量的几篇翻译我大概可以胜任,但在一段时间内连续的翻译就不行了。
我曾经想找这么一个工具:把一篇英文文章交给它后,它会分析这篇文章,一句一句的把文章分开,并在对应的地方留出我填写中文的空间。因此我可以方便的把注意力集中在一句英文上,并把想好的中文句子填上,然后进行下一句。我从网上简略的搜索过,没有找到免费的相关产品。后来我觉得用Django或Rails做一个这种工具似乎是可行的,可惜一直没有找出时间来。这次又让Google领先了。下面是我的截图:
谷歌翻译辅助系统就是一个我描述的系统。左边是英文原文,右边是用Google Translate自动翻译的中文译文。右侧有一个悬浮窗口,显式当前翻译的句子,同时左边被翻译的这句会被高亮标示出来。当我们翻译完一句后,可以点悬浮窗口的Previous和Next跳到前一句或者后一句,这样的东西对不当专业的翻译人员的外语爱好者来说已经相当足够了。
另外,谷歌翻译辅助系统又加上了分享(我没试过,我猜可能会是多人同步翻译,如果个Google Wave结合起来,应该会更爽)、翻译进度百分比、单词统计这样的功能,更是锦上添花。而且它还支持Wikipedia、Knol之类的在线wiki,我虽然没尝试过,不过我想大概是可以分析它们的页面语法,也许会通过API在系统中直接完成编辑并上传也说不定。
目前发现的唯一的缺点就是还没找到修改文件名的地方。我在上传一篇文章的时候,以为可以像Google Docs那样点一下文件名就可以改动,没想到点了半天连点反应都没有。如果真的有这个功能的话,我觉得大概藏的太深了。
June 8, 2009
为项目填写迭代细节
“迭代细节”一次,是我根据“iteration detail”直接翻译过来的。中文名词里是什么,我不清楚。
我们项目的第一阶段终于完成了,最后的任务就是填写迭代细节表格:包含了用户需求、使用案例、估计时间与风险时间、任务说明以及最后的迭代细节。其它的部分我们一开始都填好了,但迭代细节我们一直留着没填。这本来应该是在项目开始的时候填写的,为什么留到现在才弄呢?
原因和过去一样,我们选择了一条偷懒的方法。开始的时候就填写迭代细节,有点无的放矢。虽然这样做并不是正确的方式,但相对来说容易一些。我们的另一门课《分布运算》课上老师给我们讲过类似的情况:以往的第二个作业是做一个服务器-客户端模式的任务管理系统,交作业的时候要叫做出的成果和设计的报告。本来设计报告是要在项目实际操作之前写的,但老师发现学生们都是先完成系统,再写报告。于是后来老师就把这么一次作业分成了两次作业了,于是现在的第二个作业成了设计一个这样的系统,提交设计的报告,而第三次作业则成了实现你设计的系统。
虽然道理我明白,不过过去我一直觉得做文字上的设计会影响一瞬而逝的灵感,应该抓住灵感后马上开始写代码。想我们项目这种巨细靡遗的迭代细节,我是连想都没想过的。Knuth倡导的Literate Programming,像在程序里写文学作品一样的做法,我是更无法接受的。
通过上次的经验,我体会到完成详细的文档对后面的维护是相当必要的,因此我才话了很长时间为几乎每个函数都写了尽量详细的Javadoc。过去我看Java api的源码,感觉似乎注释比代码还要多。现在我觉得这是应该的了。
June 6, 2009
为blog创建了404页面
我在2009年4月份,借由网站搬家的契机,把blog的后台程序由WordPress换成了Movable Type。为了效率方面的原因,我选择让Movable Type生成静态页面,因此,我目前的单篇blog的URL由过去的“/年/月/标题/”变成了“/年/月/标题.html”的形式。这样有个很大的缺点:搜索引擎收录了很多老文章,都是用旧的格式发布的。如果有人在搜索引擎里点击了一个旧的URL,就会在浏览器里得到404错误。虽然只要把URL结尾的“/”手动的改成“.html”就能正常访问,但由于用户不了解,用户就无法看到正常的页面。
理想的解决方案是设定RewriteRule,加上一条规则,把旧的链接301转向到新的链接。这样不仅用户可以没有障碍的直接浏览新的页面,旧链接在搜索引擎里累计的权重也会转到新链接下。但我对.htaccess的语法始终不了解,今天晚上试了很久,都是得到500错误,最后不得不退而求其次,选择设定一个404页面,提示用户手动修改链接,虽然很囧但也只能如此了。
让浏览器在遇到404错误的时候自动转到别的页面的设定很简单,只要在.htaccess文件里加上一行
ErrorDocument 404 /404.html
就行了。其中“/404.html”是我的404页面的存放地址。
有了这一行,只要弄个404.html文件放在blog的根目录下就OK了。我用Google Webmasters提供的javascript代码试了一下,确实可行:浏览器不是给出错误信息,而是给出一个Google的搜索条,默认设定为用Google搜索本站文章。不过不是很美观,我想把它嵌入到我的正常blog背景里去,而不是突兀的放一个搜索条。
其实方法很简单,在Movable Type里建立一个页面,文件名设为404.html,然后把内容输进去就行了。我现在感觉自己相当的蠢──我把它想的太复杂了。
我想的是把代码放到Movable Type的Templates列表里面去,让Movable Type来给我自动生成。我看到有个叫“Dynamic Error”的模板,感觉挺像,就把自己写的代码插了进去,结果不管用。后来我看到“Template Options”下面有“Link to File”的设定,想也不想就在里面填入了“404.html”,还是不行。不光如此,我发现Movable Type用我本来写的404.html文件替代了原本的模板,而我也无法再undo回去了。
没办法,就用quick and dirty的方法,从另一个目录安装了一个Movable Type(MT支持sqlite非常方便,不用设定数据库),想把相同的设定拷过来。实行之前我偶然点了一下模板编辑的右下角下拉菜单里的“Refresh Template(s)”选项,结果装完了Movable Type之后发现默认模板莫名其妙的已经恢复了。-_-||
然后就是我领悟了开头写的方法,把在404页面上要放的文字和Google Webmasters给的javascript代码放到页面里去,一切搞定。
项目体验
我们《软件工程》课上的项目作业快到了第一阶段的截止日期了,因此近期我们的工作量都大了起来。之前我从来没与别人合作写过程序,也从来没有写过复杂逻辑的程序(从来没用过Java的package),因此这次也学到了很多。
今天我花了一天的时间在完善项目上,感觉到了一个比较严重的问题──怎么也想不起来这个函数是什么时候写的、谁写的以及做真么用的了。每次遇到这种情况,我都要从项目的第一天回溯过来,想这段代码是怎么演化到今天的。如果是自己写的还好说(我们两人写后端,绝大多数的代码都是我输入的,同伴主要出谋划策与设计算法,因此印象比较深刻),但由于我们两人的代码量较大,另两个人完成他们的部分后,开始帮忙做我们的部分,有时他们会改动一些内容,这就常常让我困惑不已。
今天把多数工作都完成了后,我决心改善这种状况──为几乎每一个函数都写Javadoc。几乎的意思是除了一些非常明显的accessor外,每一个都注明用途、变量性质、返回值性质等说明。这样的好处有二:一是在将来忘了函数作用后可以方便的查看Javadoc;而是因为我为每一个函数都加上了注释,也相当于我又从头开始复习了一下整个程序,对整体的了解也更进了一步。
June 4, 2009
搬家整一年了
一年前,我晚上请同学开车两趟把家当运到刚租的公寓里,来加拿大后第一次搬进公寓,里面什么也没有。正好我的一个同学的室友回国,我跟他联系了一下,暂时住在他的家里,同时置办家具。和那位同学也挺长时间没联系了,于是晚上和他约着去饭店吃火锅。我在晚上有课,上到9点,于是一下课我就赶着坐车往饭店赶。我对地理信息一直不敏感,再加上晚上天黑,坐的又是一趟不熟悉的车,因此坐到一半的时候我就下车了。下车后感觉不对,于是给我同学打电话问路,于是半走半跑的赶去饭店……
那时候的假期,我刚完成了正式的第一个学期,暑假也选了三门课:《数据结构与算法》、《离散数学》和《经济学原理》。除了最后一门是选修,而且是在7、8月份才开课;前两门都是我们专业的必修课。因此搬家的时候,我正在学的课就是这两门。当天晚上上的课正是《离散数学》。《离散数学》这门课,由于高中数学的基础,我感觉不难。《数据结构与算法》就更不用说了。不过我每天带笔记本电脑去学校的习惯就是在《数据结构和算法》课上养成的。之前我只有在《图论》课上用电脑记笔记,因此老师写的笔记很多,我写英文字母的速度很慢,用键盘输入就快多了。但我在其它课上都没有用计算机的习惯。
但从《数据结构与算法》课程上,我发现有同学用电脑记笔记,而且那门课的笔记又实在简单,再加上我又知道了FreeMind这个东西,于是就试着用FreeMind来记笔记。同时,过去上学时背的小挎包,也变成了背包,因为我的电脑放不进小包里。正因为我每天带电脑去学校,我就没必要在家里用电脑了。因此从那时开始我在学校的活动时间大大加长,基本上从早上9点左右就去学校,在那里上自习,等到晚上去上课,上晚课回家。也是从那以后,我几乎再也无法在家里静心学习了。
================岁月的分割线================
一年以后,学校生活似乎成了再平常不过的事情。和一年前一样,我依旧只能在学校学习。但学习的动力似乎减少了许多,据我同学说是因为长时间维持一种单一生活的原因,如果中间抽时间回趟国就好了,我觉得挺有道理的。
在过去的一年里,每个大学期选的课都是四门,难度也有了加深,因此课业压力也远非一年前的时候可比。今天早上收到《软件工程》课工程小组的同学发来的邮件,标题为“AHH phase 1 is due soon!!!”。第一期的项目到下星期就要交了,我们还有几个难关没有攻破。赶作业在过去的一年中成了常有的事。
最近几天,对于一年前的感觉越来越深刻了,总是怀念过去的生活──那时的闲适,今天看来多么宝贵啊。那时每天早上到学校,先扫完Google Reader,然后看TopLanguage上的讨论,每天都让未读数目保持为0。虽然讨论的内容有的还不能完全理解,但总有一种饱足感。今天我的Mail.app程序显式TopLanguage子目录下的未读邮件已经将近2万封。虽然我偶尔也上去看一下感兴趣的话题,但看着这个未读邮件数量,心理总有一种无力感。
在构思这篇文章的时候,才幡然醒悟,今天对于中国人来说是个特殊的日子。之前一直没有把两者联系起来──看网上言论的时候想时事,回忆往事的时候就想过去,从来没有现在的“这两者原来都是在一天啊”的感觉。我现在已经想不起在一年前的晚上,和同学吃完火锅往回走的时候,脑子里想没想过那件事了,印象里似乎没有。
June 3, 2009
如果我们的Notes是XML
在我这个学期学的三门课中,一位老师用PowerPoint,另外老师手写板书。其中一位在传统投影仪上写,另一位在tablet上用OneNotes。这两位老师都不在网上贴notes,全靠我们自己抄。
一旦老师手写笔记而不是用键盘输入,似乎就有了更多的随性的成分。一个主题该在什么地方缩进,用什么标号,经常就搞混了。用OneNotes的老师还好,算是有自己的一套模式,也可能是因为我之前听过他的课,有些我当时不能完全理解的,照着老师的格式精确的抄下来就可以了;而用传统投影仪的老师,我还没有完全的琢磨透,必须聚精会神的盯着他的笔记。而且他的笔记是标准的手写体,不像用OneNotes的老师写的有点印刷体的感觉,有时候一个单词就要辨认很久。
我过去以为,搞计算机的人应该有nerd的成分,对于notes这种东西应该严格按照科学的角度来弄才对。就像写XML一样,严格的按照要求,甚至写完后把它送到XML Validation里看看是否符合标准。谁知那位教《分布计算》的老师,在notes里写的HTML甚至不符合XHTML的严格tag标签标准,唉……
June 2, 2009
中国的网民用不用的到电子邮件?
我在前几天写的一篇文章《Google Wave的震撼》里感慨“国内的网络用户弱智到连电子邮件都不会发”,写了这句话后觉得似乎有点过份,不过当事情发生的时候我确实是比较恼火的,于是没动就直接留在上面了。发布后没想到有人留言说“国内用户用不着email,这不叫弱智”,看来是觉得自己被冒犯到了,嗯……:)
我先说一下发生过几次的事情,这要从我的计算机软件使用经验说起了。自从2007年10月左右,Ubuntu7.10 beta 4版本发布后,我就再也没有在自己的电脑上使用过任何版本的Windows系统。那时我用的电脑是DELL XPS M1330,买的时候一些硬件还很超前,因此当时用官方寄送的7.04的LiveCD无法进入XWindow。但7.10 beta 4就可以正常引导并安装了,于是我从那时候装用起了Ubuntu。在2007年12月,适逢一个学期结束,我试着在机器里安装了Gentoo,后来一直用到2008年3月份。那时我的这个垃圾DELL劣质笔记本就出了问题:屏幕发花,无法显式初图像。正好那时我的室友买了一个MacBook,我那一阵子没有机器用,就借用了几天他的,结果发现MacBook的日常使用体验真的是非常的棒。于是2008年4月1日我买另一台电脑的时候,几乎是毫不犹豫的选择了一台MacBook,一直用到现在。
这中间没有用Windows,日常必备的IM软件,我就有机会使用了Pidgin和Adium这两款优秀的软件。过去我在Windows平台下用过MirandaIM,不过因为没有自己的电脑,因此没有用很长时间,只是玩玩而已。用了Pidgin和Adium后,我就不愿意再用官方的IM程序了。我目前经常使用的IM有:Google Talk,MSN,和QQ。在Pidgin和Adium里面,都可以支持文字传输。这样满足要求后,即使官方有Linux和Mac OS X版本,谁还要傻乎乎的开三个程序呢?
问题就在于QQ。国内同学几乎只用QQ,这让我相当烦恼。腾讯公司不公开QQ的接口,因此Linux和Mac下的第三方QQ库根本无法和Windows下的QQ相比。因此当同学要用到Windows版本的QQ的一些“高级功能”时,我们就无法兼容了。比方说同学要我帮忙解决计算机问题,用QQ截图给我看,我就只能收到几行16进制的字符串。传文件也不用想了,我这边连提示都没有。到了这个时候,我一般都建议同学把文件用电子邮件发给我。结果让我晕倒的是,一些人居然告诉我他们没有电子邮箱!
我的天哪!
不知道是不是我太传统,在国内的时候,同学打开电脑后的第一件事情大概就是上QQ了,而我的第一件事情一定是打开浏览器,去我当时的GMail里面看看有没有新邮件。当时我非常无法接受这种差异,我当时觉得,当网民上网后的第一件事情不是看邮件而是上QQ时,中国的网络就已经变味了。
我曾经写文章说过“人们上网的目的不同:我身边的很多人把上网当作一种娱乐的方式,而不是信息交流的手段”。当时是看了李开复在Carnegie Mellon大学的演讲里总结中美两国网民上网目的的图表后的想法。李开复的图表里说美国网民的平均年龄是45岁,而中国是25岁,因此我说中国网民上网的主要目的是“娱乐”,而美国网民上网的主要目的是“生活”。
上网第一件事情是上QQ,这本身就是“娱乐”的一种。QQ也确实是针对年轻人的服务,也从来没有让我感觉到正式过,因此当我看到有公司把QQ作为主要联络途径的话,对这个公司的印象也相对下降了一些。而如果网民在网上做的事情只有“娱乐”(包括上QQ、上校内、看八卦、“抗日”、当黑猩猩……)时,也确实回应了我开头是提到的留言“中国网民用不到email了”。
而我为什么不喜欢QQ,其中一个方面也是中国的一些傻屄网民。不知道是QQ培养了这些傻屄,还是QQ为了取悦这些傻屄而变的傻屄,用QQ的很多人都让我觉得似乎很屌,好像只有自己是对的一样。我经常遇到的情况是,同学用QQ要给我传个截图或别的什么文件,我收不到的时候,对方的回应常常是“你用的什么破东西”。让他用email发送还埋怨“麻烦死了”。肏!
OK,理性的来说QQ的缺点。QQ最大的缺点就是封闭!因为封闭,我们在Linux和Mac平台下没有好的客户端。封闭导致QQ不思进取,这么大用户群的东西,这么多年了,还一直被限制在一个单一操作系统的胖客户端上面。再举一个更熟悉的例子,QQ的普通用户的聊天记录一直存放在本地,在这个不断呼喊“云”的时代简直有点落后的“惊天地,泣鬼神”了。而Google Talk在一出来就可以把所有记录存在自己的Gmail里面。像Gmail Chat这样不断给我们惊喜,自身也不断敢于突破的东西,我能不爱吗?
最近又有一个好消息,腾讯关闭了几个QQ群,甚至包含付费用户的群。虽然这不完全是腾讯的问题,但想想这种东西就觉得不安全。而电子邮件的的开放性就完全没有问题。可以被禁止访问的,只是邮件服务的网页,而要发送一封邮件,用上一定的手段后,要想拦截是很困难的。
真正在网上生活的人,绝对是需要电子邮件的。在网络发达的国家,与商业公司交流,正式的话绝对是用电子邮件的。也只有当中国网民能真正的“用”网络,而不是“玩”网络的时候,才能意识到这一点吧。
Twitter不能访问时的更新方法
今天早上,看到Twitter上的同学说Twitter不能访问了,后来从另外的同学那里得到了确认。当时我的第一个想法就是想个办法来让国内的同学可以更新Twitter。
办法很简单,就是让国外的同学来帮忙代发,只要国外的同学得知了国内同学要发布的消息就帮忙发送到Twitter上就OK了。另外,国外的同学可以帮忙代取Twitter上的消息,让国内的同学看到,也算解决了浏览的问题。Twitter开放API,很容一就可以写一个完成这种操作的小脚本,放到cron里面自动运行。小规模操作起来应该没有危险,而如果单单发布的话,就算是已经被墙了的国外主机也可以完成。
当时没有仔细考虑这个问题,只是在Twitter上说了几句。结果同学回复我说月光已经总结了好几种方法。我看了一下都挺不错的,在国内少也没想到用别的网站做中介的方法,不过基本原理也是一样的。
我为什么这么想找到解决方法呢?因为微博和聊天工具一样,虽然几千条的更新有一定粘性,但长时间这么搞下去,用户总会越来越少。要是有一天我在Twitter上的好友都去了饭否之类的网站,我也没办法。虽然不一定会用饭否,但可能要写个小脚本来同步更新了。
虽然现在听说网上有点怨声载道的感觉,不过我觉得也只能这样了。我希望负责此事的人等风头过去后别忘了再恢复回来,一直这样子就不好玩了。
浮躁的loser
昨天在CTEX中文论坛搜索如何设定ConTeXt的双倍行距时,找到了一篇帖子,名为《對中文 LaTeX Companion 的意見及建議》。第一眼扫了一下没有我要的东西,但里面对于中文TeX的发展的讨论我比较关心,于是在解决了我的问题后,仔细的看了一下那个帖子,有点百感交集的感觉。
先描述一下帖子大意。这个帖子是CTEX中文论坛的管理员Neals在另一篇发布lshort中文翻译的帖子里面提取出来的一个由scyfo引起的讨论。scyfo认为TeX对于新手来说还太难,没有好的入门文档。scyfo理想的“入门文档”是“像龙族,番茄,深度,这些论坛发布的软件”所带的文档,有截图,有箭头指点该点那个按钮……在几位用户回复后,scyfo接着说
假如TEX是商业软件,早就死了1亿次.估计当年Knuth就是高瞻远瞩的看到它的软件难学这一点,才没有申请专利.不得不佩服他的远见卓识.
以及现在的“TeX高手”没有忘记了自己当初学TeX的艰辛,成功后没有回头照顾后来的新手,CTeX套装自带的WinEdt问题多多等一些列问题。
看完了整个帖子,我的第一感觉就是:Neals浪费了很多时间在和一个名为scyfo的loser做无谓的讨论。后来scyfo到底说了他认为TeX教程应该告诉新手什么“字体/字号/颜色/加粗斜体下划线/着重号波浪线”,我就彻底的鄙视到底了。
连TeX什么性质、什么优点都没搞懂,就来给高层提意见!如果这是当今国人的通病,是多么的让人悲哀啊。scyfo的情况是在这个论坛的一个特例,我在网上也见过很多类似的人。这些人不肯花功夫去学一样东西,倒喜欢凭自己的想法对那样东西指东指西。当对方认真回复是就乱砍一通,对方觉得无聊不理这种人的时候就会发酸骂街。比如,下面两句是scyfo在那个帖子里说的:
sigh,我发现我又无聊了,因为这里的人是不会理睬我的.
sigh,说了那么多,我觉得我开始犯一厢情愿的幼稚病了.跟那些小青年差不多,整天评论政府说这些不好那些不好,可是,要么缺乏高角度,要么缺乏大局观,所以改变总是缓慢的,停滞总是有理由的;推动改变的,几乎从来不是评论和政客,而是时间.
sigh,那么多人跳出来朝我扔鸡蛋,我得冒着多大的勇气继续说话呀!
sigh,我为什么要来吵架呢?那么多高手对我一个人。
每说一次就叹一次,好像自己受了多少委屈,为TeX初学者仗义执言一样。让人恶心。
从本源说起。现在的国人似乎已经丧失了学习的能力。似乎一旦学校生涯熬出头,就不用再学习了。小学、中学、到大学的学习都是老师父母所逼迫的,走出校园后,一个大学生在30分钟内还学不会的东西,一定是那个东西有问题。看看scyfo在论坛上是怎么举例的:有人在下周要用幻灯片,想用LaTeX做,于是在周末去学beamer……不知道什么时候流行起来的“快餐文化”,让人们都不扎实了。
确实,我认为初学者对于任何用户圈子都是宝贵的基础,一个不发展新用户的软件是不会长久的生存下去的。但连lshort都觉的难的用户,我们是不是还值得教导他?如果他是80后的正常上学的青年,我认为这种人都不配用LaTeX。用Eric Raymond的话说,就是一个loser,有了问题不去Google,就知道上论坛问。别人说Google上有,又抱怨对新手不友好。这种人进了用户的圈子,只会引发无尽的口水仗,因此还是离远一点好。
然而LaTeX真得难吗?我在2005年从王垠的网页上得知了TeX,从老妈的办公室下载了CTeX中文套装和中文字体包,回家安装的时候也没有王垠说的那些问题,完全自动化完成。比照lshort后,很快就可以自己排文章了。lshort号称90分钟的LaTeX入门,我不相信scyfo花了一半时间阅读lshort后还会有他提到的那些问题。
至于scyfo说得TeX和Word的类比,还谈什么市场问题,我是见一次鄙视一次。scyfo还理直气壮的说:
老虎,这样说吧,不管怎么说,word都是目前事实上的使用用户最多的文本编辑器&排版软件。如果要让哪些只会用一种文本编辑器&排版软件的人中投票,word仍然稳做第一把交椅。
我们承认,不同的编辑器&排版软件,会在界面、功能、使用、输出各个方面有差别,甚至是显著的差别。但这并不妨碍我们参照word来考察,一个文档生成的过程中,最频繁用到的那些功能……
遇到这种人,找到我的话,我只能说:“请你用Word,别蹚TeX这潭浑水”。
后面又谈到什么WinEdt不好用,还说CTeX自带WinEdt和微软卖Windows绑定IE没什么区别,我也只能说他不是我这个世界的人了。UltraEdit比WinEdt好用太多,我不知道scyfo用的是不是正版的。国外有没有这种人,我不清楚,但用着盗版软件还那么理直气壮的人,我只在国内遇见过。什么时候人们对于学习的浮躁可以去除后,中国人的学术水平才真正能上升吧。
June 1, 2009
在ConTeXt中设置双倍行距
今天写《分布计算》课程的第二次作业。老师要求我们设计一个项目管理系统,本次作业不要求实现,只把想法说出来就好了。这个老师对微软的东西不太感冒,他喜欢的是苹果货。我虽然对苹果的东西也不太感冒,但好歹相对来说开放一些,是好事。老师要求的作业格式是“portable”的,也就是说淘汰了需要商业软件才能阅读的Word、Pages等文档格式。比较portable的例子是txt、PDF等格式。正好我选择用ConTeXt来生成PDF格式。
这边的作业几乎全部要求双倍行距。我在写好了内容之后,却怎么也找不到在ConTeXt中设定行间距的办法。过去写别的科目的作业或者记笔记的时候,只是设定了段落间距,用的是
\setupwhitespace[medium]
结果就是找不到设置双倍间距的方法。我几乎找遍了ConTeXt的最流行的两份文档:《ConTeXt: the manual》和《ConTeXt: an excursion》,不知道是文档里面没有提到还是我找的不得法,就是找不到了。
于是去Google搜索,我才体会到一个独特的名字是多么重要。如果是TeX或者LaTeX的问题,加上相应的关键字,出来的95%以上的都是相关结果。ConTeXt吃亏在有个叫context的单词,因此Google得到的结果很多都是无关的。去bbs.ctex.org搜索论坛上有没有人提问,结果并没有找到解决方法,反而是一个人的签名档是:
圡人不会用 Plain TeX / ConTeXt……
结果搜索的结果包含了很多这位老大发言的帖子,我直接晕倒·#@&^#@%!
如何在LaTeX下设定行距,我早就知道。把文档改改用LaTeX编译倒也可以,但就是有点不大甘心。到最后继续看硬盘上的文档,终于在一份名为《LaTeX in proper ConTeXt》的文档上找到了答案,Berend de Boer不愧是造福众生之人啊……
做个记录,以便自己将来搜索方便,答案是(设定双倍行距):
\setupinterlinespace[line=2\bodyfontsize]