Ruan YiFeng\'s Blog
昨天,ppip同学留言:
你的js主要是用什么材料学的?推荐用哪本教程呢?
我想了一下,发现自己还真的读过不少书。我在这里做一个总结,希望对想学习Javascript的朋友有所帮助。
我推荐三本教材,这是我通读过全文的,非常了解。它们在国内都有中文版,但是我建议最好去网上找英文版下载阅读。
1. DOM Scripting: Web Design with JavaScript and the Document Object Model

作者:Jeremy Keith
ISBN:1590595335
出版日期:20 September 2005
网址:http://domscripting.com/book/
[说明] 这本书最大的特点就是简明易懂,循序渐进,适合初学者,非常容易上手。曾经有人评论说:“很难想象,那么一点点内容,作者居然写了300多页。”由此可见该书的通俗程度。即使你已经对Javascript已经有了一定的基础,阅读该书也不会没有收获,因为它的提供编码非常简洁规范,具有启发性。
2. JavaScript: The Definitive Guide, Fifth Edition

作者:David Flanagan
ISBN: 0596101996
出版日期:01 August 2006
网址:http://www.oreilly.com/catalog/jscript5/
该书是公认的“Javascript第一书”,基本上所有人都会推荐它。特点是权威、全面、详尽,厚达1000多页,可以当手册用。我现在如果遇到问题,首先就会去查这本书。需要注意的是,该书的中译是第四版,而最新的是第五版,两个版本差别很大。
3. Professional JavaScript for Web Developers

作者:Nicholas C. Zakas
ISBN: 0764579088
出版日期:11 April 2005
网址:http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764579088.html
我从这本书中收获极大,非常推荐。它的阅读对象是有一定Javascript基础的读者,与网页开发有关的所有问题基本上都涉及了,写得很清楚明白,相当实用。
=================
除了以上三本,还有三本(种),我没有读过全书,但是读过部分章节,我觉得也值得推荐。
4.Client-Side JavaScript Guide
5.Unobtrusive Javascript
6.AdvancED DOM Scripting
=================
如果能把上面6本书都通读一遍,那么我估计你的Javascript应该会到高级水平了。但是,那样一来,太费时间,而且也没有必要,毕竟很多时候我们只是希望在网页上加一些简单的动态效果而已。
好在有一个简便的方法,就是在读完我推荐的第一本书以后,去学习使用下面两个别人已经写好的Javascript框架。你完全可以在一无所知的情况下,照搬它们提供的代码,轻而易举实现许多炫丽的效果。
(完)
昨天,我在首页上添加了一个板块,内容是转贴公社最新文章的摘要输出。
效果如下图:

它的位置在首页的底部,会自动滚动显示。但是,它的载入需要一点时间,依网速而定,一般在10秒左右。
原来这个位置上的“每日引言”被去掉了,虽然它也是很好的内容。
如果你也想在自己的网页上添加类似的功能,那么我可以告诉你,这很容易实现。理论上,任何Feed,甚至是Flickr和Picasa上的照片,都可以这样显示。你只要去点击进入Dynamic Feed Control Wizard这个页面,输入Feed的网址,就会自动生成相应的代码。
这项服务是Google AJAX Feed API的一部分。它实际上是Google Reader的一个简易接口,差不多可以用来编写一个简陋但是实用的RSS在线阅读器,请看示例一和示例二。
将不同网站的内容聚合在一个页面上,这被叫做Mashup,很多人认为这是下一代网站的方向。我也是刚刚开始学习运用,感觉很好玩。
最后,希望大家会喜欢这个改动,也欢迎大家将值得分享的文章贴到“转贴公社”中去。
(完)
去年12月21日,《纽约时报》刊登长篇报道《中国成为世界烟囱》(China Grabs West’s Smoke-Spewing Factories),揭露了西方国家转移污染的问题,并且对比了中国和德国的两个钢铁城市,说明中国正走在一条危险的发展道路上。
网上有前三部分的翻译,但是最后一部分的中译迟迟不贴出来。我实在等不下去了,自己动手翻译完了全文。
下面就是这篇发人深省的报道,结尾附有更多图片。
(A coking plant at Hangang, the main steel mill complex in Handan, China. China's produced more steel each year than the United States, Germany and Japan combined. 图为邯钢的一个炼焦厂,这是邯钢的主要部分之一。中国每年生产的钢铁比美国、德国和日本的总和还要多。)
==========================
China Grabs West’s Smoke-Spewing Factories
中国成了“世界烟囱”
原载2007年12月21日《纽约时报》
HANDAN, China— When residents of this northern Chinese city hang their clothes out to dry, the black fallout from nearby Handan Iron and Steel often sends them back to the wash.
邯郸,中国 —— 当生活在中国北方城市邯郸的居民把衣服放在外面晒干时,附近钢铁厂排出的黑烟经常把它们送回去重洗。
Half a world away, neighbors of ThyssenKrupp’s former steel mill in the Ruhr Valley of Germany once had a similar problem. The white shirts men wore to church on Sundays turned gray by the time they got home.
在地球的另一端,德国蒂森克虏伯老钢铁厂附近的居民,也曾遇到过类似的问题。男人每个礼拜日去教堂所穿的白衬衫,回到家时都变成了灰色。
These two steel towns have an unusual kinship, spanning 5,000 miles and a decade of economic upheaval. They have shared the same hulking blast furnace, dismantled and shipped piece by piece from Germany’s old industrial heartland to Hebei Province, China’s new Ruhr Valley.
这两个钢铁城镇,跨越五千英里的距离和十多年的经济动荡,有着一份不同寻常的亲情,它俩分享着同一座高大笨重的高炉。当年那座设在德国鲁尔山谷(Ruhr Valley)钢铁厂的高炉,在被拆除后又被一块一块地从德国老工业中心地带,搬到了河北省这个被称为中国新鲁尔山谷的邯郸市。
The transfer, one of dozens since the late 1990s, contributed to a burst in China’s steel production, which now exceeds that of Germany, Japan and the United States combined. It left Germany with lost jobs and a bad case of postindustrial angst.
德中钢铁厂的转让只是上个世纪九十年代末期,因中国欲提高钢铁生产能力而出现的数十个转让之一。现在,中国的钢铁生产能力超过了德国、日本和美国的总和。
But steel mills spewing particulates into the air and sucking electricity from China’s coal-fired power plants account for a big chunk of the country’s surging emissions of sulfur dioxide and carbon dioxide. Germany, in contrast, has cleaned its skies and is now leading the fight against global warming.
蒂森克虏伯钢铁厂(ThyssenKrupp)带着失业率上升和后工业社会的焦虑离开了德国,但却清洁了这个国家的天空,现在它已成为领导与全球变暖而战的主要国家。相反,中国的钢铁企业正向空气中排放着大量粒子,吞噬着这个国家来自燃煤电厂并造成空气严重污染的电力。
In its rush to re-create the industrial revolution that made the West rich, China has absorbed most of the major industries that once made the West dirty. Spurred by strong state support, Chinese companies have become the dominant makers of steel, coke, aluminum, cement, chemicals, leather, paper and other goods that faced high costs, including tougher environmental rules, in other parts of the world. China has become the world’s factory, but also its smokestack.
在这场急于重新建立曾使西方国家变成富国的工业化革命中,中国已经吸收了也曾使西方国家变得肮脏的绝大多数主要行业。伴随着国家的强大支持,中国公司已在钢材、焦炭、铝、水泥、化学品、皮革、纸张及其它物资生产中占有主导地位,而这种生产在世界其它国家已面对包括更严厉的环保规则等在内的高昂成本。中国已经变成世界工厂,但它也变成了世界的烟筒。
This mass shift of polluting industries has blighted China’s economic rise. Double-digit growth rates have done less to improve people’s lives when the damages to the air, land, water and human health are considered, some economists say. Outmoded production equipment will have to be replaced or retrofitted at high cost if the country intends to reducepollution.
这次西方污染工业的大规模转移,已经损害了中国经济的崛起。一些经济学家指出,两位数字的经济增长率,在对空气、土地、水源和人类健康已被认为造成破坏之际,其实它并没有更多地改善人民的生活。如果这个国家打算减少染污,那么其陈旧的生产设备就需要以很高代价进行更换或翻新。
China’s worsening environment has also upended the geopolitics of global warming. It produces and exports so many goods once made in the West that many wealthy countries can boast of declining carbon emissions, even while the wor

大约一年前,Yahoo!推出了一项奇怪的服务,名叫“Yahoo! Pipes”。当时,我玩了几分钟,就退出了。它的界面很复杂,我不知道有什么用。
后来听说它可以将几个Feed合烧成一个,这个功能并不希奇,我也就没在意。
上个星期,我偶然在网上看到,它能将Feed自动翻译成另一种语言。这可是第一回听说,我赶紧去研究了一番。这一回算是探到宝了,越研究越觉得Yahoo! Pipes不简单,是一个大有用处的工具。
它确实可以将英文Feed翻译成中文。具体的操作步骤,网上有直观的教程,依样画葫芦就行了。我只提供一个实例,大家可以比较一下效果。
下面这个Feed是用Google News生成的美国媒体有关中国的最新报道,请自行比较英文版和中文版。
比较的结果是,翻译得很不理想,只能猜出大意。Yahoo! Translation比Google Translation真是落后很多啊。不过,毕竟还是读中文省时间,因此这个功能还是有用的。
我现在的认识是,Yahoo! Pipes是一种对互联网上规则的、小规模的数据进行加工的工具,可以实现对Feed的“深加工”。
我还发现,Yahoo! Pipes可以将任何一个Feed转为json格式输出。对于会编写javascript的朋友,这可是最最有用的功能啊!
(完)
2007年,我一共写了350多篇网志,差不多一天一篇。
下面是简单的回顾:
在所有的文章中,有三篇文章,我很满意。它们是值得重读的。
有一点需要说明,大概在今年上半年,我开始有一个想法,我想将这里做成一个project(项目),主题是关于“信息处理和电子书”,并且已经系统地写了一些东西。在我的设想中,今后这里就是两个部分的内容:读书笔记和信息处理研究。
在坚持写作Blog四年以后,我依然感到乐趣,因此我还会继续写下去。我也希望,我写出来的东西依然有人愿意读。
(完)
今天,我看到韩国的《朝鲜日报》上有一篇报道《韩国国民婚后买房需要9.4年》。
报道这样写道:
据韩国国民银行统计,韩国国民从结婚,到拥有自己的家平均需要9.4年。这是对全国19个城市的2000户家庭进行调查后得出的结果。
这一结果比去年(8.2年)增长了1年,证明平民拥有自己的家正变得越来越艰难。
看完以后,我就在想,不知道国内有没有类似的统计,普通的大学生毕业以后,平均工作多少年,才能够买房?
我马上就想到了,昨天我看到的另一篇报道《深圳房价本月又降近千元》:
1月份深圳市住宅销售均价为10872元,9月份达到全年最高16777元,从10月开始,价格回落。11月、12月价格调整。本月商品住宅销售价格从11月的15931元/平方米下降至15000元/平方米。
于是,我们知道了,深圳的平均房价是1.5万元/平方米。那么,深圳居民的年收入是多少?我手里没有统计资料,暂且就算平均5万元一年吧。我想不会差得很远。
这么一算,普通的深圳人一年收入够买三平米,三年够买十平米,十年后可以拥有一套三十平米的房子。
事实上,我确实读到过一篇真实的报道,说是有一个99届的厦门大学计算机系毕业生,工作8年后,所有积蓄只够在厦门买5平米的房子。
1999年,吕国华从厦门大学计算机系毕业后,在厦门一家广告公司工作,月收入3500元左右,加上各类奖金补贴,年薪大约5万元。从1999年毕业到今年7月,吕国华存款8万元。他算了算目前厦门的房价,“只能买个5平方米的房子”。
吕国华目前和另两人合租厦门岛内某小区的三房一厅,1200元的房租,他每月分摊400元。
“我不敢想现在真的有开发商会建这样小的房子。”吕国华说,5平方米的房子,一个人可以住,甚至夫妻俩也还凑合,但如果结婚生孩子后,最好是能有一套45到50平方米的房子。
因此,我们可以看到昂贵的房价,已经成了压在普通中国人头上沉重的包袱。青年人需要辛辛苦苦工作、省吃俭用许多年,才能拥有自己的住房。我想,这种巨大的生活压力是我们许多人都切身体会到的。
其实,生存是一件标准很低的事情。只要每天有一斤粮食可以吃,有三尺的空间可以栖身,一个人就能活下去。可是现在,许多中国人就真的是这么活着,然后哪怕想再多要一点点属于自己的空间,就必须付出半生辛勤的劳动。有一种说法,据说在将近60年前,中国人民已经站起来了,我觉得不是这样。像牲口一样,住在一个狭小的破屋子里,所有收入只够用来吃饭和交房租,这算什么“站起来”?
更令人无法接受的是,高昂的房价并不是因为缺少住房,而是因为有些人不想让房价降下来。开发商销售房屋,可以获利;政府出卖土地,可以获利;银行发放贷款,可以获利。唯一无法获利的,就是那个不得不买房子的可怜人。他用自己工作十年或者几十年的积蓄,买一套房子。表面上,他好像得到了房子,但是实际上,他都在为开发商、政府和银行打工,每一家都要分一块他的工资。房价越高,这三家就赚得越多。高昂的房价,真正的实质是建立了一套合法化的剥削机制,将中国人民的血汗钱都源源不断地装入少数人的口袋。(请参考阅读《地主,谋士和长工的故事》。)
另一方面,当房价将青年压得喘不过气时,买一套房子就成了许多人人生奋斗的一个目标。房产和股票,成了全社会都热衷的事情,即使是那些不感兴趣的人,也不得不关心这些事。可是,我总觉得这样的人生非常荒芜,生命只有一次,我们来到这个世界,绝不应该只是为了得到一套房子。
高昂的房价,带来了社会的贫富分化和人性的扭曲。它就像一座大山,将整整一代人的人生压抑得黯淡无光,使他们成为历史的牺牲品。最终,这个国家必将为此付出沉重的代价,长期发展潜力将大大丧失。而我们所能做的,也许只是无可奈何地在寂静的夜里,写一些无用的感叹吧。
(完)
我有一本16年前出版的画册《Cliton: portrait of victory》,记录了比尔·克林顿1992年竞选总统的全过程。
当时,《Time》杂志的摄影记者P.F. Bentley一直跟踪采访克林顿,拍摄了许多照片,里面有不少他的妻子希拉里·克林顿的镜头。对比当年的样子,希拉里现在真的是老多了。16年前,支持克林顿夫妇的都是青年人;16年后,支持者变成了都是老年人,真是令人感慨啊。
我从画册中扫描了几张照片,给大家看看。这本画册的发行量很小,因此这些照片可谓难得一见。我的扫描仪不太好,所以画质很一般。
下面就是这些1992年的照片。








(完)
太阳的体积是地球的130万倍。



类似太阳的恒星在银河系中有1300亿颗,类似银河系的星系在宇宙中有500亿个。
太阳也不过是宇宙中的一粒尘埃,人又算得了什么呢?
(完)
美国《大西洋》月刊的驻华记者James Fallows,每个月都要发表一篇中国报道。今年1月份,他谈了中国的外汇储备,这个我已经介绍过了。最新一期则是关于中国的互联网审查,也就是著名的GFW。
他说,今年8月份,奥运会召开的时候,会有很多外国人来到北京。这些人住进酒店后,第一件事也许就是打开电脑上网。
他们的第一印象也许是,中国的互联网很慢。这是正常的,一个原因是数据传输必须经过太平洋海底的光缆,另一个原因是所有数据都会经过自动审查,所以变慢了。中国互联网的国际出口主要有三个:北京、上海和广州。这三个出口都安装了特殊设备,会自动过滤数据。
有消息说,奥运会期间,网络管制将会放松。在外国人居住的酒店和新闻中心,将可以自由上网。不过当奥运会结束,一切又会恢复正常。
在中国上网,从输入网址到网页最终显示,有四个审查的环节:
1. DNS过滤。DNS是域名服务器的缩写,它的作用是将域名转换成IP地址,这被称为地址解析。在中国,有些网站的IP地址是不被解析的,会显示“Site not found”(网站找不到)的提示。另一情况是,给出错误的IP地址,比如访问google的时候,却会显示百度。
2. IP地址黑名单。当你从DNS服务器得到正确的IP地址后,系统会检查这个IP地址是否在黑名单中。如果是的,那么将出现“The connection has been reset”(连接被重置)的提示。
3. url过滤。鉴于某些网站会经常改变IP地址,所以会直接禁止它们的网址。当你的url中含有这些网址时,也会显示“连接被重置”。
4.内容过滤。每一个网页的具体内容也是被审查的,一旦其中包含违禁词语,连接会立刻被重置。具体表现是,网页只显示了一半,然后突然就断了,怎么刷新也不出来。一旦出现这种情况,系统会自动将你的IP与对方IP之间的联系切断10分钟。值得注意的是,这一步过滤是双向的,从国外访问国内的网页,也会被内容过滤。另外,它对电子邮件也有效,所以Email里如果包含敏感词语,往往无法发送到国外,一定要用加密邮件才行。
违禁的IP地址都会被记录下来,那些经常违禁的地址,最后会出现在政府的名单上。
(完)
在图书馆里,每一本书都要被编目,这样才能方便查找和利用。于是,很早就有人想到,网上所有的资源也需要“编目”。
如果要对网络资源编目,首先就必须有一套“编目规则”。资源描述框架(Resource Description Framework ,简称RDF),就是一套W3C提出的描述网络资源的方法。
RDF的基本思想很简单,就是说任何网络资源都可以唯一地用URI(统一资源标识符,Uniform Resource Identifier)来表示。在这里,可以简化地将URI理解成网址URL。
比如,世界第一大网站Yahoo!首页的网址是http://www.yahoo.com/,那么它的首页就可以用这个网址来唯一代表。
有了这个识别符以后,网络资源的其他特性都用“属性(Property)”=“属性值(Property value)”这样的形式来表示。

请看上图,最顶部的方框表示网络资源http://www.yahoo.com/,下面的两个方框表示两个属性关系,一个是“资源作者=Yahoo!公司”,另一个是“资源名称=Yahoo!首页”。
根据RDF的定义,资源本身是主语subject,属性名称是谓语predicate,属性指是宾语object。对网络资源的描述就采用主-谓-宾的形式。
RDF本身用xml文件的形式表示,比如上图写成xml文件就是:
<?xml version="1.0"?>
<RDF>
<Description about="http://www.yahoo.com/">
<资源作者>Yahoo!公司</资源作者>
<资源名称>Yahoo!首页</资源名称>
</Description>
</RDF>
这个xml文件不是很规范,主要是为了说明问题。
RDF强大的地方在于,它只规定了主-谓-宾这种描述形式,至于谓语和宾语到底是什么,完全可以根据不同需要自由选用。因此,RDF才能定义为“资源描述框架”,而不是“资源描述方法”。
用于RDF的最常见谓语和宾语,是都柏林核心(Dublin Core),简称DC。它是一套用于描述信息的元数据,一共有15个标签,也就是15个谓语和宾语的组合,其中常见的标签包括Title,Creator,Subject等等。
采用了都柏林核心以后,基本上所有的网络资源都可以用RDF描述出来,因此初步实现了对网络资源进行编目的目的,为下一步机器化处理和最终语义网的实现打下了基础。
以下我举一个实例。
2年前的今天,2006年2月25日,我写了一篇网志《学科和采矿》,用RDF对这篇网志进行编目,就是下面的结果:
<?xml version="1.0"encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about="http://www.ruanyifeng.com/blog/2006/02/post_179.html"
trackback:ping="http://www.ruanyifeng.com/cgi-bin/mtype/mt-tb.cgi/251"
dc:title="学科和采矿"
dc:identifier="http://www.ruanyifeng.com/blog/2006/02/post_179.html"
dc:subject="History"
dc:description="今天突然想到一个比喻:选择不同的学科就好像采矿一样。 有的矿是新发现的矿物品种,埋藏浅,品味高,容易开采。选择这样的矿,很容易出成果。某些新兴学科大概就是这样的矿,计算机科学可以算一个例子。..."
dc:creator="ruanyf"
dc:date="2006-02-25T20:52:32+08:00"/>
</rdf:RDF>
这是一个规范的xml文件,可以实际使用。请注意标成黑体的那几行。首行“rdf:Description”,这是RDF规定使用的标签,表示主语subject,后来的“rdf:about”属性用来表示资源的标识符,也就是url,它唯一地确定了一个网络资源。其他属性中的dc:title、dc:identifier、dc:subject、dc:description、dc:creator和dc:date,分别表示题目、标识符、主题、简介、创造者、日期,这几项都属于都柏林核心,等号后面是相应的值。至于trackback:ping属性,这一项在都柏林核心中没有规定,但是也可以加上去,从中可以看到RDF资源描述框架的灵活和强大。
[延伸阅读]
1.RDF Tutorial
2.W3C: RDF Primer
(完)
我们经常需要用缩写的代码来表示一种语言,比如用en表示英语,用de表示德语。ISO 639就是规定语种代码的国际标准。
最早的时候,ISO 639规定的代码是,用两个拉丁字母表示一种语言,这被称为ISO 639-1。但是,两个拉丁字母最多只有262=676种组合,而世界上已知的语言总数可能有六七千种,因此明显是不够的。所以,后来又规定了ISO 639-2,用三个拉丁字母的组合表示一种语言。
常见语言的ISO 代码如下表。
| ISO639-1 Code | ISO639-2 Code | 中文名 | 英文名 |
| ar | ara | 阿拉伯语 | Arabic |
| ko | kor | 朝鲜语 | Korean |
| de | deu | 德语 | German |
| ru | rus | 俄语 | Russian |
| fr | fra | 法语 | French |
| zh | zho | 汉语 | Chinese |
| la | lat | 拉丁语 | Latin |
| pt | por | 葡萄牙语 | Portuguese |
| ja | jpn | 日语 | Japanese |
| es | spa | 西班牙语 | Spainese |
| en | eng | 英语 | English |
| it | ita | 意大利语 | Italian |
| hi | hin | 印地语 | Hindi |
| yi | yid | 意第绪语 | Yiddish |
完整的语言代码表请看这里。
但是只规定语种代码还不够,在同一种语言中,往往还包括许多种变体,比如中文分为简体中文和繁体中文两种,因此还必须规定子代码。
以往,人们常用zh-CN表示在中国大陆地区使用的中文,也就是简体中文,用zh-TW表示在台湾地区使用的中文,也就是繁体中文。但是,这种表示法很不完善,试问中国大陆地区出版的繁体中文书籍,应该如何用代码表示呢?
目前,语言的标签表示法的国际标准是RFC 4646,名称是《Tags for Identifying Languages》。
简单说,这个文件规定,一种语言的标签应该按照如下方式排列:
language-script-region-variant-extension-privateuse
1. language:这部分就是ISO 639规定的代码,比如中文是zh。
2. script:表示变体,比如简体汉字是zh-Hans,繁体汉字是zh-Hant。
3. region:表示语言使用的地理区域,比如zh-Hans-CN就是中国大陆使用的简体中文。
4. variant:表示方言。
5. extension-privateus:表示扩展用途和私有标识。
一般约定,language标签全部小写,region标签全部大写,script标签只有首字母大写。不同标签之间用连字号-链接。
下面列出一些与中文有关的语言标签。
zh-Hans简体中文
zh-Hans-CN大陆地区使用的简体中文
zh-Hans-HK香港地区使用的简体中文
zh-Hans-MO澳门使用的简体中文
zh-Hans-SG新加坡使用的简体中文
zh-Hans-TW台湾使用的简体中文
zh-Hant繁体中文
zh-Hant-CN大陆地区使用的繁体中文
zh-Hant-HK香港地区使用的繁体中文
zh-Hant-MO澳门使用的繁体中文
zh-Hant-SG新加坡使用的繁体中文
zh-Hant-TW台湾使用的繁体中文
此外,还有一些目前仍在使用,但因不符合规范,将被逐步替代(grandfathered)的标签。
zh-hakka客家话
zh-cmn普通话
zh-cmn-Hans简体普通话
zh-cmn-Hant繁体普通话
zh-gan江西话
zh-guoyu国语
zh-min福建话
zh-min-nan闽南话
zh-wuu吴语(上海话)
zh-xiang湖南话
zh-yue粤语
有一点需要注意,任何合法的标签都必须经过IANA的认证,已通过认证的标签可以在这个网页查到。此外,网上还有一个非官方的标签搜索引擎。
[延伸阅读]
*W3C: Language tags in HTML and XML
(完)

前几天,我收到一封电子邮件,标题就是这句唐诗。
我心想,不知是哪个朋友如此雅致。不料打开一看,却是一封垃圾邮件。现在的spammer真是水平越来越高了。
不过,我很喜欢这句诗,将那种春夜思人的孤独感,写得特别形象。
多情只有春庭月,犹为离人照落花。
——《寄人》
在网上一查,原来是《唐诗三百首》里面的第310首。我以前不知道,可见国学修养真的是很糟糕。
作者张泌,1000多年前的古人,哪一年生,哪一年死,史书里都没有记载。现在只知道他是江苏常州人,在南唐后主李煜手下当一个文职小官,后来随了李煜一起降了北宋。《全唐诗》里收录了他三十多首诗词,就是传世的所有作品了。
张泌最有名的就是上面这一行诗,历来被称道,要是他没写这14个字,可能就没人记得他了。我把《全唐诗》里他所有的作品看了一遍,感觉他就是一个纯粹的“花间派”诗人,大多数作品都是闺情绮怨、萎靡无力。只有两联,我觉得还不错,其他都不喜欢。
情多莫举伤春目,愁极兼无买酒钱。
——《洞庭阻风》
千里晚霞云梦北,一洲霜橘洞庭南。
——《秋晚过洞庭》
此外,网上正好有《唐诗三百首》英译本。Witter Bynner老先生的翻译是:
多情只有春庭月
To a court where the spring moon lights for ever
犹为离人照落花
Phantom flowers and a single figure.
感觉译成英语以后,里面的抒情成分都没了,纯粹成了意象的堆积。
(完)

今天,我看到一条科学新闻《科学家称人类活动已将地球带入新地质世》,我觉得这是很重要的消息。
在2月出版的《GSA Today》杂志(美国地质协会刊物)中,英国Leicester大学的Jan Zalasiewicz、Mark Williams及其位于伦敦地质学会的同事指出,工业化带来的巨变已让地球进入一个新的地质世。
这就是说,科学家们认为,人类的活动已经彻底改变了地球,不仅仅是地表,而且连地质年代都改变了。
从地质年代(Geological Epoch)上看,目前所处的年代属于“全新世”(Holocene),大约已经有11000年的历史。但是,许多证据都表明,在1950年以后的几十年中,地球的一些地质特征发生了明显变化。科学家们说,人类活动很可能引发了一个新的地质年代——人类世(Anthropocene)。

请看上面的这张图。横轴代表了时间,一格就是1000年,右边的原点是公元2000年。左边的虚线代表了全新世。
从图中我们可以看到,从1950年起的50年中,人口总数、风化率、大气中二氧化碳含量、全球气温和海平面都发生了异动,与过去10000多年来的变化趋势截然不同。
根据《GSA Today》上的论文,科学家们认为,人类造成的地质变化,主要体现在以下四个方面:
1.地质沉积率的改变(Changes to Physical Sedimentation)
人类使得陆地上的侵蚀和风化大大加速。直接的表现是农业和各类建筑物,间接的表现是修建大坝改变河道。人类引发的风化率比自然风化率高出一个数量级。
2.碳循环的波动和气温变化(Carbon Cycle Perturbation and Temperature)
大气中的二氧化碳含量在2005年是379ppm,比工业化时代前高出三分之一,是将近1000万年以来的最高值。即使是保守地预测,到21世纪末期,这个含量还将翻倍。大气中的甲烷(Methane)含量已经比工业革命前翻了一倍。变化速度之快前所未有。
全球气温的变化滞后于温室气体含量的变化。这可能与人类大量排放硫酸盐有关。但是,20世纪气温的总体趋势是在上升,并且在过去20年中开始加速。科学家们一致同意,二氧化碳的排放是主要原因。有预测说,21世纪结束时的气温,将比现在高1.1 °C到6.4 °C。这将是6000万年以来的最高气温。
3.生物的变化(Biotic Change)
人类造成了很多动物和植物的灭绝。这个过程可能早在1万年前就开始了。并且,人类还造成大多数巨型动物种群的消失。物种的加速灭绝和生物数量的下降,已经从陆地蔓延到了海洋。这种生物种群的变化速度堪与冰河期来临时相提并论。
预期中的气温上升,还将对许多生物的聚居地带来毁灭性的变化。这种变化可能比上一个冰河期时更严重,因为那时环境中没有人类活动,生物“逃生”的路线比现在大得多。
4.海洋的变化(Ocean Changes)
从全新世开始前到工业革命前,海平面在1万多年中,大约上升了120米。上个世纪的海平面只有轻微的上升。有预测说,到2100年,海平面将比现在上升0.19–0.58米。这个预测没有考虑到近期地球的冰带区域出现了加速融化的趋势。在全新世早期,大量冰山崩塌曾经引发海平面的快速上升。现在预测只是一个短期预测,从长期来看,当达到新的均衡状态时,可能气温每上升1度,海平面就将上升10-30米。
相比工业革命前,表层海水的PH值变小了0.1了,这意味着海水变得更酸性了。这主要是因为人类排放二氧化碳。未来海水的酸性化趋势,与二氧化碳排放密切相关。它的后果一方面是物理的(海洋底部碳沉积物的溶解),另一方面是生物的(许多分泌碳来构造自身骨架的生物,将无法成长)。这对海洋中的珊瑚礁和许多处在食物链底层的浮游生物都有巨大的影响。
=====================
这篇论文的全文可以从网上免费下载和浏览。(顺便鄙视一下收费的中国期刊网)
文章非常短,一共只有5页,3000多字。
(完)
上个星期,我翻译了一篇介绍Usenet的文章。今天,我将剩余的部分写完。
(接前文)
8.
第6节介绍了最基本的下载方法:
1) 选择讨论组(groups);
2)下载该讨论组中所有文章的头信息(headers);
3)在文章列表中选择下载对象。
显而易见,这种方法很原始,就好像在电话薄中一页页查找电话号码,效率低,非常费时。
因此,nzb文件就应运而生了。简单说,nzb文件有点像bt下载中的torrent文件,所有下载信息都包含在这个文件中。只要有了这个文件,下载软件就可以自动开始下载了。
这样一来,Usenet下载就变成了,如何寻找nzb文件。
9.
很多网站提供免费nzb文件下载,具体名单可以参考Open Directory Project。
我推荐其中的三个网站:binsearch.info,alt.binaries.nl和newzleech.com。
10.
本节以binsearch.info为例,介绍如何下载nzb文件。
打开网站首页,在搜索框中键入“american idol s07e09”,表示寻找《美国偶像》第7季第9集的下载。然后,点击“search”按钮。

值得注意的是“Maximum age of post”(发帖时间)这个选项。如果寻找的是很久以前的文件,必须选择较大的值。
在返回结果中,选择“722.38MB”的版本,勾选前面的选择框。

最后,点击上方的“Get NZB”按钮,就可以得到NZB文件了。

11.
nzb文件必须配合下载软件一起使用。我以Grabit为例。
打开软件,切换到右面板中batch选项。然后,点击上方的“Import NZB”按钮。

在跳出对话框中,点击“Add”按钮,选择下载得到的NZB文件。然后点击下方的“Grab“按钮。

Grabit就开始下载了。

(完)
世界上的计算机语言大概一共有几千种,但是真正流行的恐怕只有十几种。
什么样的计算机语言会得到大规模应用?一本书上总结了六个标准,我觉得写得很好。
A.快速的提供原型和部署(Fast prototyping and implementation)
对于常见的情况和问题,它应该提供内置工具或现成的解决方案。
B.支持当代编程范式(Support for modern programming paradigms)
这应该是说,它必须支持对象导向(object-oriented)的编程方法。
C.可升级性(Scalability)
它必须可以应付大规模的使用。
D.优秀的性能(Performance)
用它写出来的程序,必须足够快。
E.互动性(Interoperability)
它应该可以容易地与其他程序进行通讯。
F.扩展性(Extensibilty)
如果它本身不提供某种功能,你可以自己加上去。
(完)

中央情报局的网站上有一本《各国概况》(The World Factbook),提供世界各国的详细介绍。
它是我见过的最好的国家介绍,由中央情报局维护,资料详实准确,附有各种地图和表格,每年出一次大的修订版,小的更新则是每天都有。
大家可以看看它的中国介绍,里面包括了许多内容,甚至提供石油进出口量、电话装机数、艾滋病毒携带者人数的最新数据。类似的国家和地区介绍,总共有267份。
最难得的是,它属于公共领域,没有版权,可以自由下载使用。
国内互联网上也有中文版的《各国概况》,新华网、人民网和外交部的网站上都有。
如果你要查找一个国家的基本资料,上面这些来源提供的信息,再加上wikipedia,应该是足够了。
(完)

IMDB号称是地球上最大的电影数据库,几乎所有的电影都能够在里面查到。它是我最喜欢的网站之一。
它的数据库结构是公开的,但是数据库不公开,必须付费才能使用。使用费非常贵,每年最少也要15000美元。
我今天下午看了它的数据库结构,如我所料,对数据格式要求很严格。这意味着用户提交数据非常麻烦,必须遵循繁琐的格式规定,并且还要通过管理员审核,才能正式收入数据库。我猜想,IMDB一定雇佣了很庞大的编辑队伍。
但是,这样的好处是,它的数据高度结构化,查找起来非常方便,可以精确查询和排序每一个字段。因此,它的数据商业价值很高。
下面就是它的数据库结构。
==============
1.
字段名:IMDb Constant Title Code
类型: 7 Digit Number
含义:每部电影在IMDB中的唯一编号。
示例: 0068646
2.
字段名:Title
类型: Text
含义:电影名。
示例: The Godfather
3.
字段名:Year
类型: 4 digit Number
含义:电影首次公映时间。
示例:1972
4.
字段名:Plot Outline
类型: Text
含义:电影情节的一句话总结。
示例:A Mafia boss' son, previously uninvolved in the business, takes over when his father is critically wounded in a mob hit.
5.
字段名:Plot Summary
类型:Text
含义:情节简介。
示例:Don Vito Corleone is the head of a New York Mafia"family". Problems arise when a gangster supported by another Mafia family, Sollozzo, announces his intentions to start selling drugs all over New York. Don Vito hates the idea of drugs, and he is quite happy with the gambling/protection etc. that make him money, so an attempt is made on his life. Sollozzo then kidnaps one of Don Vitos advisors, and tries to make him force Don Vitos son to agree to sell drugs, but the plan goes wrong when Sollozzo finds out that Don Vito is still alive.
6.
字段名:Principal Cast
类型:Text
含义:主要演员,最多不超过5个。
示例:Marlon Brando
Al Pacino
Diane Keaton
Richard S. Castellano
Robert Duvall
7.
字段名:Genre
类型:Text Set
含义:电影的类型,可能的取值为以下几种——Action, Adventure, Animation, Comedy, Crime, Documentary, Drama, Family, Fantasy, Film-Noir, Horror, Musical, Mystery, Romance, Sci-Fi, Short, Thriller, War, Western。
示例:Crime, Drama
8.
字段名:MPAA Rating
类型:Text
含义:美国的电影分级,可能的取值为以下几种——G, PG, PG-13, R, NC-17, X。
示例:USA:R
9.
字段名:U.S. Runtime
类型:Minutes
含义:电影长度。
示例:175
10.
字段名:Trivia
类型:Text
含义:电影花絮。
示例:The phone number Michael calls to find out news about his father is Long Beach 4-5620.
11.
字段名:Goofs
类型: Text
含义:电影中穿帮和不合理的镜头。
示例:In several scenes wine bottles are shown with the DOC Italian wine classification designation shown on the bottle. DOC designations did not come in effect until the 1960s.
12.
字段名:Writer(s)
类型:Text
含义:编剧。
示例:Coppola, Francis Ford;Puzo, Mario
13.
字段名:Plot Keywords
类型:Text Set
含义:情节关键词。
示例:garrote;revenge;father-son-relationship
14.
字段名:IMDb Average User Rating
类型:Number
含义:观众的平均打分,最高10分,最低1分。
示例:9.0
15.
字段名:Link to official site
类型:URL
含义:电影的官方网站。
16.
字段名:Additional Cast
类型:Text
含义:除主要演员外的其他演员,最多不超过10个。
示例:James Caan;Talia Shire;Sterling Hayden
17.
字段名:External Reviews Links
类型:URL
含义:外部影评文章的网址。
18.
字段名:Links to Trailers
类型:Text
含义:预告片的观看网址。
19.
字段名:Producer(s)
类型:Text
含义:制片人
20.
字段名:Distributor(s)
类型:Text Set
含义:发行商
(完)
在一次讲座上,Jon Wiley——Google的“用户体验设计师”(User Experience Designer)——提到了Google的十大设计原则。
1.有用(Useful):以用户为焦点,关注他们的生活、工作和梦想。
2.快速(Fast):争取节省每一个毫秒。
3.简单(Simple):简洁就是力量。
4.魅力(Engaging):能够唤起新手的好奇心,能够吸引资深用户。
5.革新(Innovative):勇于创新。
6.通用(Universal):全世界适用的设计。
7.盈利(Profitable):为现行的和将来的商业模式做好安排。
8.优美(Beautiful):外观具有视觉愉悦性,但是不会令用户分心。
9.可信(Trustworthy):值得用户信赖。
10.人性(Personable):加入人性化因素。
让我们看看,Google如何在它自己的主页上,实践这些原则。首先,它的载入速度很快;其次,这个页面对访问Google的用户很有用;再次,它的设计非常简单,几乎没有分散用户注意力的元素,因此不会令人有压迫感;然后,你几乎本能地就会使用它,不需要查阅复杂的说明手册,除非你想使用一些高级功能;至于这个页面是否具有创新性,可能有不同看法,但是确实有许多其他网站照搬了这种设计; 因为用户可以按照直觉使用它,因此不存在文化壁垒;盈利通过网络广告实现,但是在首页上没有放置广告,因为这样可能会疏远用户;这个页面很宽敞,很优雅,还带着一点幽默感(“手气不错”按钮),随着不同节日而变化的Logo带来了人性化因素;至于可信性,由于所有一切都很直接了当,因此增强了用户的信心,使他们感到这里没有暗藏的机关,Google会为你提供最好的结果。

来源:Google Operating System(中国大陆访问者需使用代理)
PS.
本文是这个Blog的第1000篇文章。我从未想过能坚持这么久。
(完)

上个周末,我从网上下载了《数学精英》(Men of Mathematics)这本书,然后一直在看。
这本书是数学科普名著,英文版出版于1937年,内容是20世纪之前大数学家的传记。
下面是我做的第一章《导言》的摘录。
===========
1.
笛卡尔说:“给我空间和运动,我将给你世界。”
2.
抽象性和精确性是数学的两个方向。
3.
数学本身就像一个巨大的墓地,不断添进需要永久纪念的新死者。
4.
每一个探索者,都必须有追随者,由后者去告诉世界,前者发现了什么。
5.
整体而言,大数学家是一些多才多艺、精力充沛、机智敏捷、对数学以外的许多事情有着浓厚兴趣的人。
6.
在许多人看来,他似乎把生命耗费在对一种美的自私的追求上,而这种美在他的同胞们的生活中没有直接的反映。
7.
一些数学家对他们一无所知的事情固执己见、过分自信,但大多数数学家宁愿重复伟大的拉格朗日的话“我不知道”。
8.
伯特兰·罗素曾经说过:“一定经过了许多年代,人们才发现了一对野鸡和两天都是数字二的实例。”
9.
全部历史中任何三个最伟大的数学家名单,都将包括阿基米德的名字。通常还有牛顿和高斯。
10.
要是古希腊的数学家和科学家,追随阿基米德,而不是追随欧几里德、柏拉图和亚里士多德。他们可能在2000多年前就进入了由笛卡尔和牛顿在17世纪肇始的现代数学时代,和由伽利略在同一世纪开辟的现代物理学时代。
11.
毕达哥拉斯把“证明”引入数学,这是他最伟大的功绩。在他之前,几何学中都是凭经验得出的规律,没有人想到这些规律能从一些数量相对少的公设中推出。
12.
据说,柏拉图学院的入口处刻着“不懂几何学者勿入”。
13.
现代数学始于两大进展:分析几何和积分,前者明确形成于1637年,后者约1666年形成。
14.
分析几何的创始人笛卡尔,度过了特别充实和吸引人的一生。
15.
按照莱布尼兹的说法,到牛顿时代为止的全部数学中,较为重要的一半应归功于牛顿。这是指牛顿提出的方法的力量。人们至今仍把牛顿的《原理》视为由单独一个人对科学思想所作出的最大贡献。
16.
拉格朗日认为,只有当一个数学家,能够对街上遇到的第一个人清楚解释自己的工作时,他才完全理解了自己的工作。
17.
数学有四个伟大时代:巴比伦时代,希腊时代,牛顿时代和始于1800延续至今的时代。最后一个时代是数学的黄金时代。
18.
十九世纪对数学知识的贡献,约为以前所有时代的五倍。
(完)