Category: 信息技术 / geeky stuff

  • 人类基因组大概就像一首mp3那么大

    全部的人类基因组序列大致可以放下一张音乐CD(700MB的那种)。这是怎么计算的呢? 人类基因组由23对染色体构成,组成它们的物质是脱氧核糖核酸(DNA)。DNA呈双螺旋结构,由通过氢键相连的碱基对(base pair)链接而成。每条染色体都是这样的碱基对序列,当中包含有遗传信息的片段,称作基因(gene),也包含仅支持蛋白质合成或目前尚未发现功能的片段。DNA中的碱基(nucleotide base)有四种──A(腺嘌呤,adenine),T(胸腺嘧啶,thymine),G(鸟嘌呤,guanine),C(胞嘧啶, cytosine)。由此,碱基对构成染色体,23对染色体构成人类基因组。 碱基对的构成方式是固定的:嘌呤(purine)只和嘧啶(pyrimidine)成对。它们都是有机化合物。嘌呤-嘌呤对在热力学上不合适因为它们的分子距离太远无法形成氢键;嘧啶-嘧啶对也不合适因为它们的分子距离太近会形成静电排斥。因此除了最常见的AT和GC对,只有GT和AC对。但这两者事实上是错误配对,因为氢键的受体和给体模式不匹配。 我们可以如下计算表示人类基因组所需要的信息量: 由于DNA中只有四种碱基,而22 = 4,所以只需要2比特(bit)的信息来表示碱基:00、01、10、11。 人类基因组由3080400000(大约30亿)个碱基构成23对染色体。[1] 8个比特为一个字节(byte)。 1兆字节(megabyte,MB)为210 × 210 = 1048576字节。 所以一条人类基因组可以用2 × 3080400000 / 8 / 1048576 ≈ 734.42MB的信息量来表示。这当中有大量重复的信息,稍加压缩就可以放下一张700MB的CD,一般压缩可以去掉一半。更进一步压缩,这篇文章说他可以把这些信息压缩成大约10MB,差不多是一首稍长些的MP3歌曲的大小。 也许生命的信息本来就是谱成一首歌来传唱的,就像《生命之歌》。 你可以在这个页面下载完整的人类基因组序列。 [1] Stewart Scherer. 2008. A Short Guide to the Human Genome. Cold Spring Harbor Laboratory Press.

  • 请更新本站的地址和订阅

    最终还是不得不放弃用Rails做blog(Typo)。虽说自己写一个proxy很复杂,但毕竟是可以完成的事,然而mongrel server在bluehost上的性能我就无能为力了。不知道是本站的spam过于猖獗还是spider(例如,百度)过于疯狂,这些垃圾访问量十分庞大,导致mongrel的开销很大,经常出现500错误,具体为“Too many open files”问题,只有重启mongrel才能解决。Google了一番,似乎解决只有提高系统的file handler数目。Bluehost定下的是100(ulimit -n),但这个似乎远远不够。询问客服能不能增到比如2048,被拒。我不可能经常去重启mongrel,也暂时不能脱离Bluehost(还有差不多一年),所以只能妥协了,重新回到古老稳定的PHP中。不过等到Bluehost期满后决定转到Amazon S3和EC2中,按需付费,而且拥有整个(虚拟)服务器。 所以现在这个blog使用强大的WordPress,域名仍然是weblog.livepine.org,如果你仍然用以前的链接会自动转到现在的地址。 另外请修改本站的订阅(RSS、syndicate、feed,或者无论叫什么):http://feed.feedsky.com/livepine。当然你也可以用这个站上的,但用 feedsky更利于我的统计,大概也没有被和谐的风险。 此外,本站使用了Spam Karma 2.3来防御垃圾评论。这是一种基于机器学习的方法,比CAPTCHA对用户更友好,当然也有误把你的评论当成垃圾的风险。有好心人帮我测试下么:) 如果你发现不能评论,请发邮件告诉我:livepine _at_ hotmail 点儿 com。 最后,本blog会保持至少一年,到时再折腾诸如EC2、Erlang之类 🙂

  • 本站将继续前进

    前一阵bluehost(本网站的托管商)的ruby on rails突然升级到2.0。虽然也保留了老版本的rails(1.2.6),但不知什么原因原本的blog引擎Typo就是没法用了。正好新的Typo 5.0基于Rails 2.0,趁机转换到新的平台。原来rails的应用是部署在FastCGI+Apache 1.3上,但FastCGI的效率实在比较恐怖。Bluehost装了Mongrel server,于是目前Typo是运行在Mongrel上,看上去还行,除了占用巨大的内存(>250MB)。但愿bluehost不会因此给我造成任何麻烦。 但Mongrel使用的是非80端口,这样会给用户带来困扰(例如很多局域网封非80端口,而且非标准端口看上去很怪异,也不利于SEO),于是研究如何在Apache 2.2上用Mongrel+Typo。最方便的做法就是使用Apache的模块mod_proxy和mod_proxy_http。这种内部代理能够将外部的请求(例如,正常80端口的请求)映射到Mongrel的端口上,这样Apache就相当于一个代理服务,能够和Mongrel一起工作了。Bluehost的Apache 2.2默认mod_proxy没有打开,联系了几次客服,说是由于这个模块一贯有安全漏洞,他们不能支持。 这样就非常麻烦了。没办法,只得自己写了个简单的Perl的proxy程序,模拟mod_proxy的功能,将所有80端口的请求映射到mongrel server的端口(4122)上。对于GET请求还比较简单,但POST(例如,评论功能)请求就有点复杂,需要用perl来模拟客户端行为,将POST上来的数据转换之后再POST到4122端口上。这个挺麻烦,偏偏需要模拟的是一个套Hash的Hash,总是搞不定。可能Perl的数据结构经过HTTP POST之后给Ruby接收就变了样。此外还有Apache ReWrite会丢弃内部锚符(#),这个可能会给现在的Ajax应用带来问题。看来一个好的proxy还是很复杂的,只能先放放了。 所以,这个blog的永久域名是weblog.livepine.org(livepine.org/weblog还能用,但会给自动转换成weblog.livepine.org),但目前你用这个域名来浏览本站还不能评论(会有出错信息)。如果你想评论,请将域名weblog.livepine.org替换成livepine.org:4122,其余的部分都一样。后面这个4122域名应该长期有效,但等评论功能恢复之后不建议使用,毕竟看上去比较丑么。 所以,是的,本站没有死,将继续前进。

  • MacBook Air七宗罪

    有且仅有一个USB口; 没有光驱(当然,有一个烧包的高价外置光驱); 没有以太网卡; 电池不可更换; 不能扩展内存; 太薄,易断; 低端配置,直追MacBook Pro的价格。 苹果自恋情节的再一次完美诠释。MacBook Air大概只适合手无缚鸡之力的“时尚”人士。

  • Powerset初试

    Powerset是一个自然语言搜索引擎。它是一家位于美国旧金山的创业公司,今年早些时候获得了施乐帕洛阿尔托研究中心(PARC)所研发的自然语言处理技术,标榜能够理解人类所使用的自然语言。这同Google、百度、雅虎之类的搜索引擎有极大的不同。后者利用关键字搜索,因而检出的结果同使用者原本的意图可能有很大差别,而且也很难判断自然语言中大量存在的同字不同意等模糊情况。一个自然语言搜索引擎,如果真像其名称所指的那样,就可以克服这些困难,更加准确地达到使用者想要的信息。 然而我总是对这样的宣称持怀疑态度。事实上人工智能发展了半个多世纪,自然语言处理一直是研究热点之一──但主要成果都集中在语音识别上,即将输入的自然语言语音解读成准确的文字。据我所知,还没有任何技术进展能够完整地识别一门自然语言,例如英语。不过,简单的理解并没有不可逾越的困难,例如基于特定句式的单句理解已经有了颇多的成果,人们可以把不太复杂的单句用逐字分析的方法纳入特定的语法结构,然后根据解析出的语法结构来判断单字的意义,并转化成计算机所能够识别的查询条件。 Powerset的搜索技术应该大致基于此。你不可能指望输入──不要说长篇大论──即使是一个小片段,该引擎也能理解并返回相关的结果。这种输入即使能够被允许,目前“智能”的自然语言理解恐怕远没有聪明点的关键字匹配来的有效甚至准确。 Powerset公布已经很久了,可是到目前未知仍然没有开放(说是要到2008年初)。前两天收到了他们的实验网站Powerlabs的邀请(你可以到这里来注册),于是来体验一把。Powerlabs的页面做得不错,充分使用了AJAX(没有Flash!),用户体验很好。网站的功能之一是用户社区,你可以提出改进意见,并且有类似Slashdot的业值(Karma)系统来评价你的贡献。业值高了能够试用更多的功能作为奖励。看样子目前Powerset正处于集思广益阶段,非常倚重社区,希望通过用户的反馈来不断改进服务。 另一个重点就是自然语言搜索演示。与我原本期待的不同,这里你不能随意输入任意的句子,而只能在一大组提供的句式中填空,例如A说了B什么,X画了什么,之类。演示所采用的索引数据库不是整个互联网,而是英文wikipedia。这大概也是因为相对整个互联网散漫的语言而言,wikipedia更有组织,更能够正确建模的缘故。演示将句式分成引用、商业、艺术和体育四大类,这一来方便用户,二来我想wikipedia的内容也可以根据分类优化,从而结果更准确。我测试了下面几个例子: 1、商业。句式 Who works for ___ (谁为___工作?)填入 chinese government (中国政府) 结果(点击放大) 结果看上去不错。黄色高亮标出的是搜索引擎认为相关的结果。第一条来自漫画“Supreme Power”,第一段高亮不太相关,第二段很正确。第二条结果也是第二段正确。 2、引用。句式 What did ___ say about ___ ? (___说___了什么?) 填入 google 和 microsoft(微软) 结果(点击放大) 没有返回搜索引擎认为相关的结果。在我看来列出的结果确实不太好。也许wikipedia里目前没有相关内容?Powerset大概还没智能到联想的地步,比如不能理解Google和Microsoft高官之间的唇枪舌剑就是高度相关的。看来句式复杂一点就会出问题。 3、引用。句式 What did ___ say? (___说了什么?) 填入 steve ballmer(微软CEO) 结果(点击放大) 句式简化一点结果就好多了。不过此公确实经常大放厥词。 此外演示还提供了一个powermouse功能,用图示的方法列出两个名词和一个关系(动词)的结构。例如你可以填写man和woman,然后引擎列出男人和女人之间所有可能的关系和动作。不过还不能智能到归纳所有男人和所有女人,例如结果里就不会田亮和郭晶晶的故事。我试了查询colonize(殖民)关系,其中一方是mars(火星)。结果(点击放大): 结果大致靠谱。也许这是个科幻的话题,结果所列出的关系多出自于科幻小说。有趣的是其中关于中国人殖民火星的结果很多啊 🙂 总得来说Powerset初用感觉还行。总结下来优点如下: 1、对于英语能处理动词的变位,名字单复数,不过这应该是基本能力了吧。 2、界面体验不错,很漂亮。这年头这个很重要。 3、集思广益,充分利用网络的力量。而且自然语言毕竟是人类语言,不范式化的地方很多,所以要理出合理的关系,还要靠大量人工。 缺点: 1、最核心的,这只是自然句式处理。当然人工智能没有重大突破前真正的自然语言理解不可能实现。 2、虽然是这样,还是希望最后的产品能够允许用户自由地输入句子,而不是像现在这样选择并填空。 3、演示中没有更复杂的句式,例如三个以上空的。也许他们已经有了更强大的功能,我业值不高还不能试用? 4、不能联想啊……不过这是不是要求太高了。 […]

  • 亚马逊英国的客服

    这几天在亚马逊英国买东西,第一次碰到发货好久都没收到。到网站写信给客服,回信很快,态度诚恳。过几天又来信,诚挚道歉,因为他们调查发现快递公司把货放错发货站了。承诺马上改正缺点,态度没得说,可是等了一个礼拜仍然没收到……于是晚上发信去质问,没想到两个小时后,凌晨三点就收到回信了──表示您要是真的不满意,我们可以重新发货,或者我们退还所有费用。看看署名是英国的客服,于是十分惊异他们的快速反应和,呃,服务时间。照理在英国这种地方不要说24小时,就是夜间服务也是很少见的,可亚马逊英国的客服竟然凌晨还在上班。总结下这件事情应该有三种解释:1、客服在其它地方,例如美国或者亚洲,那么这个时间差不多;2、他们真有人24小时上班──连机场也没这么勤快啊;3、这是自动回复信件。第三点有些科幻了,因为虽然回信内容可以格式化,完全可以根据不容的情况组合内容,但要看懂我的信的内容应该是个人类。要么,亚马逊已经掌握了如此先进的技术,能够准确识别自然语言的内容了?

  • Colin McRae: DiRT太酷了

    一直都是拉力赛类游戏的爱好者。第一次玩的此类游戏是《International Rally Championship》,1998年的老游戏了。当时一上手就欲罢不能──想想看,一位孤独的赛手在黑色的雨夜中疾驰,穿过漆黑的森林,周围就只有轰鸣的发动机忠实相伴。我几乎是立刻就被这意境迷住了,现在仍然记得那个时候夜夜为此痴狂的景象。 从此几乎每款拉力赛游戏我都不会拉下。Colin McRae(CMR)系列应当是目前拉力赛游戏中最好的。我的PSP中常驻的只有CMR05。如今这一系列就要推出最新的DiRT。下了demo试玩,感觉相当震撼。画面极其精美,大概是命名“DiRT”的缘故,赛车所到之处都是飞沙走石,烟尘滚滚的感觉。不过操控感有点不爽,感觉很“漂”,但愿在正式版中有所改善吧。我的机器看来还不够强悍,在最高档画质的设定下开800×600还凑合,1024×768就难以接受了。来看看游戏截图:(来自GameSpot,点击放大。更多图片)

  • MacBook Pro入手

    我的那台Compaq再过一个月就满四年了。两年半以前换了块更大更快的硬盘,最近一个月终于貌似要归位了──读盘速度大幅下降,怪异声音不断。于是下决心换机。看中苹果的机器很久,主要是为的Mac OS X──最易用的UNIX变种。另一个原因还归功于苹果的市场策划──最初吸引我的就是MacBook Pro网页上电脑屏幕中的那张照片,第一次看到它我其实就决定了。把不太相关的事情用神秘的关系连起来,就是宗教 🙂 原本打算等到Leopard出来之后再出手,没想到给延到了十月份,等不及了。4月21日在网上下单,遭遇银行大宗支付保护机制拦截,只得打电话给银行放行,成功。等到4月25日终于发货,但订购系统说要等到5月7日才能到。这效率真是……早知道就亲自去店里买了。苦苦等到5月7日,没来,打电话给苹果客服,一通废话。次日终于入手(发现其实5月4日才发货),心情大好。我也来赶时髦秀些开箱照── UPS的箱子 黑色的盒子 缓冲泡沫也很有艺术感 打开之后,所有的东西 底下还有一个小盒子,”Designed by Apple in California”,里面是说明书和系统盘 揭开此封,新的旅程开始 当当当当~~~ 还蒙着一层纱 揭开它! 键盘 第一次启动,完成初始化配置之后 说起来Mac OS X的界面对我还是全新的,不过上手很快。最喜欢这硕大的屏幕,初看还不太习惯,觉得很扁,可是很快就爱上这1440×900的空间了。Mac OS X好像没有Windows/GNOME/KDE那种任务栏面板,但Exposé似乎更有效率一些,而且更酷。用了Mac之后才发现原来GNOME从中偷师不少,如今类似Beryl的界面也实现了类Exposé的效果。Mac OS X的内核Darwin基于FreeBSD服务层,也可以使用x11应用,所以从命令行到许多GUI软件看上去都和FreeBSD一致。于是许多事情可以通过终端的命令行来做,也可以vi了。真是不错。 这台机器也有许多SB的地方。例如只有两个USB接口。作为卖得这么贵的玩意儿竟然只有这么少的USB口,真是不厚道。剩下的空间放什么了呢?原来还有两个火线口──我大概永远也用不到的东西。看来苹果还是很矜持自己参与制定,尽管已经式微的标准。最可怕的是键盘,许多键都同标准的或者不标准的PC键盘不一样,尤其是那个回车键好像被虐待似的还没shift键大。最受不了的是,竟然没有delete键──Google一番后才知道原来人苹果压根就没这个,一般退格键就足够了么。看样子我只能被迫适应。此外还有输入法,原配的智能ABC同PC上的智能ABC有一拼──一点儿也不好用。装了一个当下很火的Fun Input Toy,虽然仍差强人意但还凑合。也许搜狗输入法或者谷歌拼音谁可以兼容下Mac? 机器的底部有一行小字:”Designed by Apple in California Assembled in China”。很好地诠释了上游设计,下游制造的市场关系,很直白,也很赤裸裸。要等多少年,衷心希望那时这种高附加值产品能够把这关系倒过来,至少也是”Designed in China”! Designed by Apple in California Assembled in China

  • Ubuntu Linux 7.04试用

    上一次在自家的机器上用Linux还是Redhat 7.2,算起来我不用Linux已经五年多了。当初离开Linux投奔FreeBSD怀抱的原因很多,比如Linux的配置文件凌乱,发行版太多,软件安装方法各异,不喜欢GPL,等等。最近硬盘快挂了,于是将另一块硬盘换上。想到这两天Ubuntu 7.04(代号“Feisty Fawn”)刚刚新鲜出炉,索性装一把试试。 Linux这么许多年来虽然发行版越来越多,配置文件的管理依旧凌乱,但毕竟业界大厂支持越来越到位,开发人员众多社区庞大,还是有长足的进步。Ubuntu号称最人性化的Linux,在桌面上下的功夫真是不少。安装没费什么劲,反而令我惊讶的是安装过程中自动发现了硬盘上Windows XP的分区,并提示是否需要把Firefox,Thunderbird,IE Favorites等的用户配置文件(就是Documents and Settings下面那些东东)导入到Linux里。个人以为这个设计对刚从Windows转过来的用户很贴心。安装完毕进入系统,我选的是中文,觉得默认的界面不错,不过字体貌似有些别扭,一看之下果然是“文鼎上海宋”。文泉驿点阵字体我一直在FreeBSD下用,于是安装下,没有配置XWindow就已经全变成文泉驿的中文字了,不错,赞一个。 这里得说下Ubuntu的软件安装方式。感觉上Linux下最普遍的安装方法还是二进制包,比如Redhat的RPM和Debian的DEB,这同FreeBSD基于源文件编译的ports系统很是不同。Ubuntu就是基于Debian的,所以也用apt-get——这个工具非常强大,可以自动从远程服务器上寻找合适的软件包下载。更为可贵的是,如果你输入了未知的命令,系统自动从软件源中寻找可能的匹配,并提出建议,例如: livepine@PEREGRIN:~$ epiphany The program ‘epiphany’ is currently not installed. You can install it by typing: sudo apt-get install epiphany-browser bash: epiphany:找不到命令 这个功能非常棒!再赞一个。 我想Ubuntu的“对用户友善”的口号名至实归,应了“细节是魔鬼”的概念。 说到这里,我对于Ubuntu 7.04的基础应用非常满意。Ubuntu在桌面方面还是比FreeBSD要技高一筹,至少Flash有官方支持的9.0可以使用,Acrobat Reader、Google Earth(以及我必备的MATLAB)不需要通过Linux服务层来运行。再加上用户友好的apt-get系统、完善的中文配置和一大堆的预装实用软件,绝对是个“生产力系统”。 而更令我兴奋的是那眩目的三维桌面和增强效果。Ubuntu 7.04预置了Compiz引擎,打开可以看到阴影菜单和三维桌面等效果。不过在我的机器上有问题,不是很实用。而在装上了Beryl之后(安装方法见这里),发现原本认为需要很高配置的桌面特效在我这四年的老机器上(P4 2.0,768MB RAM,ATI Radeon 7500 32MB)仍能够顺畅运行,CPU占用很低,想来比那Windows Vista的AERO也不差吧,却要经济得多。眼见为实,请看桌面截图: 三维旋转桌面 真的透明窗口和阴影 桌面切换效果1 桌面切换效果2 “黏性”的窗口效果 窗口预览 总结:Ubuntu Linux 7.04是个适合大多数人使用的实用高效经济的桌面操作系统。

  • 开源OCR项目OCRopus

    IT新闻里想要没有Google真是很难。Google资助了一个项目OCRopus,这个说白了就是古老的OCR的开源项目。OCR(光学字符识别)是模式识别领域的一个传统项目,基本已经有了很成熟的成果,相关的商业软件(例如中文的有汉王)也早已广泛应用。不过这一技术,同许多其它模式识别/人工智能领域的成果一样,非常复杂,不是仍在实验室研究阶段,就是只被一些商业公司掌握。此次Google赞助的OCRopus是基于两个核心-一个字符识别模块和一个页面布局分析模块。前者来自惠普1995年就已经停止开发的一个高性能OCR软件Tesseract,现在HP把它捐献了出来(Google说是前HP雇员从垃圾堆里找出来的),后者没有提及。Tesseract本身也被开源了(地址)。目前Tesseract是作为OCRopus的一个英文字符识别插件,以后还会有其它语言的插件。 我想Google又做了一件好事,虽然Google说他们的野心是“我们已经记录了几乎所有网上的数据,现在是开始记录纸上数据的时候了”,有一些人可能不喜欢。OCR作为技术藩篱存在了近十年,而且它已经不再是模式识别领域研究的热点。十年来这项技术几乎没什么发展。相信Google此次的开源行为会重新激起这方面的热点,让更多的人参与进来,会带来更好的技术。 Google既然已经行动了,很多事情便有压力和机遇了。