世界是由少数人推动的

April 20, 2008 1:13 pm PDT | In Life, Tech | 21 Comments | hide

很久很久以前,我有过一台电脑,CPU 是 80486SX 33MHz,这个 486SX 没有数学协处理器(floating-point unit、FPU、浮点运算单元,用硬件实现浮点数的快速运算),对现代电脑来说 FPU 已经是一个不可缺少的部件。我记得当年 486SX 上生成艺术字就特别特别的慢,比同速度但带 FPU 的 486DX 慢十多倍,真是土鳖啊。

当年英特尔设计 486DX 有一个缺陷,于是他们搞出一个销售策略是,如果测试出来某个 486DX 主电路是好的,但是 FPU 是坏的,那么就把 FPU 部分砸掉,然后把这个芯片当作 486SX 低价销售。这种销售方式很常见,比方我们实验室买的一种镜子,反射率越高价格也就越高,但是不同反射率镜子的生产工艺和成本完全相同,只不过由于生产过程中各类不确定因素导致镜子质量有好有坏,质量好的也就卖得贵一些。农民卖苹果也会分等级,大的苹果卖贵一些,虽然种苹果的时候他未必在大苹果上多花了力气;如果你跟他讲,苹果大小是一个正态分布,大于 +2σ 叫特等品,恐怕农民是听不明白的。

有不少人认为,世界是由少数人推动的。Kisstar 同学说,学术界真正有用的结果都是 top 10% 的牛校牛人搞出来的,大多数人都是陪练,跟着灌水而已。从时间纵向来看,确实有一小部分人为人类进步做出了很大的贡献。然而从横向角度来看,人类是作为一个整体在进步,个人贡献呈现一个正态分布,这样的分布下,必然会有一小部分人对人类进步的贡献极多。这是地球上这么多人的统计规律,所谓大样本出奇迹,世界是不是由少数人推动的,这纯粹就是一个统计学的解释问题。

就像前文所述的一种销售策略,我们是在出卖自己的智慧寻求人类进步。如果你潜质很牛,那么就不应该浪费这种能力,而应该积极的开发潜能尽力推动人类的进步。而大多数人往往觉得自己碌碌无为,并没有对人类进步做出直接的贡献,这种情况下也没有什么好气馁的,应该看到,我们为牛人出现的极小概率的分母贡献了一份,没有我们这些巨大的样本,奇迹也是不会出现的。通俗点说,你觉得是 100 个人的小村庄里面容易出一个牛顿,还是几亿个人的地球上容易出一个牛顿?

活着,就是对人类的贡献。

Tags: , ,

CSS 裸奔节

April 8, 2008 11:58 pm PDT | In Tech | No Comments | hide

第三届 CSS 裸奔节来了!CSS Naked Day,皆在推动 Web 标准。一个具有良好 (x)html 结构层次的网页,即使没有加 CSS,也应该具有高度的可读性。不过,为啥要裸奔,难道网页有漂亮的风格不好吗?可以看比方这里

祝大家裸奔快乐。

P.S. Firefox 里可以通过菜单 View -> Page Style -> No Style 关闭 CSS。Opera 也有类似的功能。

Tags: ,

Geotagging

April 2, 2008 5:19 pm PDT | In Life, Tech | 7 Comments | hide

Geotagging,一般指给数字化的内容打上地理信息标签,常见的一种形式就是给数码相片加经纬度信息(JPEG 的 GPS tag 属于 EXIF 标准的一部分,不过 GPS tag 在数据结构上和 EXIF 头是并列的关系,嗯……不深究无聊的细节问题了)。现在比较高级的相机都带 GPS 或者 GPS 接口了,对于没有 GPS 功能的相机,一张一张加 geotag 是不可能的,所以一般的做法是随身另带一个 GPS 记录位置/时间(GPS tracklog),然后回家之后把 GPS tracklog 和相片自动同步(两者都带有时间信息)打上 geotag。相机的时间需要预先对准,不过后期也可以用软件调,有些人的做法是对着 GPS 接收器拍一张照片用作后期处理时计算相机和 GPS 的时间差。

前几天出去玩带的是一个 WAAS-enabled GPS,最好的地方显示 5.5 feet(1.7 米)的精度,不过回来把 GPS tracklog 放到卫星图上看貌似有 4 米左右的误差,不知道是卫星图定位有问题还是我这个 GPS 说大话了……后期软件是土鳖的免费的 EasyGPSPhotoMapper,同类软件貌似还有很多。把 GPS tracklog 和同步后的照片缩略图放进 Google Earth 的效果图见上。听说还有人在 GPS tag 里加入照相机朝向的信息(有些 GPS 带电子罗盘,所以这也可以自动同步),真是 geek 到家了。不过给照片加上这么精确的位置信息有什么用呢?似乎也没有什么大用,对我来说就是因为实在太容易搞,所以不搞白不搞。Geotag 的概念倒是不错,有名的旅游景点在 Google Earth 里都有很多网友上传照片,所以无聊的时候可以在里面环游世界(我的虚拟阳光宅男形象呈现出来了……)。

Tags: , ,

康神代码赏析

March 24, 2008 6:41 pm PDT | In Tech | 11 Comments | hide
#!/bin/bash
OLDCONTENT=`find -type f -exec md5sum {} \; | md5sum`
svn up &> /dev/null
NEWCONTENT=`find -type f -exec md5sum {} \; | md5sum`

if [ "$NEWCONTENT" != "$OLDCONTENT" ]; then
  # reload updated configuration
fi

以上是康神写的一个脚本的摘要。值得说的有两点:1、svn up 前后康神对整个目录的文件名和文件内容 md5 消化,这是确认目录是否有变化(包括文件改名)的一个好办法;2、康神用了 &> /dev/null 重定向 stdout 和 stderr,一般土鳖都写成 >/dev/null 2>&1,康神伟大!

Tags: ,

批评一下 PHP

March 23, 2008 10:43 pm PDT | In Tech | 3 Comments | hide

PHP 里函数多如牛毛,加进去又没什么统一规划,搞得现在成了命名法大杂烩,比如:

  • obj_verb 型的:array_slice() http_inflate()
  • verb_obj 型的:create_function() parse_str()
  • verbobj 不加下划线:setcookie() addslashes()
  • 直接把 POSIX 传统函数拿来用的:opendir() fopen()
  • 这种算什么呢:error_reporting() htmlspecialchars() 特别是这个 htmlspecialchars 命名毫无章法
  • 新老 DOM 类函数不一样:一个叫 getAttribute(),另一个叫 get_attribute()
  • 你可能会说,那同类函数可能命名法就一致了吧?也不全是,日历函数:
    • verb_obj:cal_days_in_month()
    • 大写首字母不加下划线:JDDayOfWeek()
    • 突然又全小写了:jdtounix()

(其实 PHP 函数名不分大小写,最后这俩只是文档故意添乱) 晕死。有人说,你真弱,用多了就全熟了。好吧,我是比较弱,可是我知道有人在知名大公司天天写 PHP 还是和我一样晕……PHP 函数命名为什么这么乱?给俩链接:

换个话题,最近 PHP 的 substr 函数被人改坏了。

There was a small inconsistency between PHP 5.2.1 and 5.2.2. In PHP 5.2.1, substr($str, $start) returns the full $str if ($start < 0 && abs($start) > strlen($str)). But starting from PHP 5.2.2, FALSE would be returned. Before 5.2.2, this behavior was conveniently used to extract at most N last characters of a string, e.g. $str = substr($str, 30); limits $str to at most 30 characters and truncate from the beginning if necessary. However, this no longer works! See also: diff-5.2.1-5.2.2, bug 41375. This is likely to change back in PHP 5.3, given what’s recently been done on PHP_5_3 branch.

PHP Doc 有正方呼吁:This is a small inconsistency, one of those things that makes the life of a PHP programmer like hell. Bugzilla 上反方辩护:The fact that it worked up until 5.2.1 doesn’t mean that you should have used it. 这个问题其实最开始只是因为别的原因无意间改错的,但是 PHP 内部却有人坚持错误,有人报告这个问题也被归类为 Bogus(意思就是说,RTFM,回家好好读文档去)。其实文档也不明确,现在基于各种原因,PHP 5.3 分支上又改回去了,真是搬起石头砸自己的脚。

说个微软搬石头砸自己脚的故事。IE 最开始搞出 {client,offset,scroll}{Top,Width,Height,Left} 十二个很有意义的 HTML 属性用来方便的设置/获取对象大小/位置等信息,实在是一个很好很强大的发明,基本也铁定进 HTML5 了。不过 IE 里面的制造标准不明确,各类元素定义略有不同,反倒别的浏览器抄得更和谐。搞到现在的局面是,微软自己发明的东西,反倒被 QuirksMode 说成 IE 里 incorrect/buggy,不如别的浏览器“正确”,真是衰啊。

Tags: , , , ,

Redistribute LVM

March 22, 2008 6:45 pm PDT | In Tech | No Comments | hide
umount /mnt/multimedia/
e2fsck -f /dev/vgmain/lvMultimedia
resize2fs /dev/vgmain/lvMultimedia 130G
lvreduce /dev/vgmain/lvMultimedia -L -35G
resize2fs /dev/vgmain/lvMultimedia
mount -t ext3 /dev/vgmain/lvMultimedia /mnt/multimedia
umount /mnt/backup
lvextend -L+35G /dev/vgmain/lvBackup
e2fsck -f /dev/vgmain/lvBackup
resize2fs /dev/vgmain/lvBackup
mount -t ext3 /dev/vgmain/lvBackup /mnt/backup

夏令时是邪恶的

March 9, 2008 2:28 pm PDT | In Life, Tech | 4 Comments | hide

换夏令时啦!丢了一个小时。每年都要调两次时间,每次调时间,都会出点事。

(标题引自 chen3feng 留言)最早认识到夏令时的邪恶是多年前改夏令时那天我刚好赶早班飞机,人还在外地完全没想起来要调时间,幸好我临睡前突然想起来,需要再提早一个小时出发,后来到机场的时候只剩 20 分钟就起飞了,真是后怕……

早期不知道是 samba 还是 windows 有问题,总之调时间以后两边看共享目录的时间会差一小时。有一次我几 TB 的数据被自动重新同步了一次,真衰。

有人在 crontab 里放了两点半执行的命令,结果调夏令时那天事务流程完全乱掉…… crontab man page 专门在 BUGS 一节指出:

If you are in one of the 70-odd countries that observe Daylight Savings Time, jobs scheduled during the rollback or advance will be affected. In general, it is not a good idea to schedule jobs during this period.

因为有了一些教训,有同事写程序开始用 UTC 时间,这样就不会受到本地时间调整的影响。去年不知道哪个土鳖提出来把调夏令时的日子提前一个月,各类操作系统都需要更新过才能正确调整夏令时。有位同学没更新操作系统,看时间不对就直接把电脑时钟拨快了一个小时,结果反而那些先进的用 UTC 时间的程序出错了(因为没有调整时区,所以电脑的 UTC 时间就错了)……

sigh,到底是用本地时间,还是 UTC 时间写程序?

为什么要执行夏令时??不是说夏令时不省能源反而费吗???

Tags: , , ,

德国人的形式主义

March 7, 2008 8:35 pm PST | In Life, Tech | 6 Comments | hide

下面这个材料转载自 Guide to LaTeX(第四版 146 页 7.5.1 节)。如果你直接看第三列,可能会觉得有点别扭,但又不一定说的上来哪里别扭;事实上,别扭的是有些符号之间的水平间距不理想。而第二列则是微调过水平间距的,看起来比第三列好看一些。熟悉 LaTeX 的可以仔细看第一列里相应的水平间距微调命令(这材料很有名,很多 LaTeX 书里都有,如果你看见过不要说我 TOOOOOLD!)。举例来说,第一行根号 2 和后面那个 x 之间需要稍微有点空隙;如果不留空隙(如第三列所示) ,看起来就比较难看。

format.png

如果你没觉得第二列比第三列好看,甚至没看出来两列有什么不一样,这很正常,不要觉得自己有问题!即便是每年成千上万屁挨着地用 LaTeX 生产出来的博士论文里,也只有极少数专门美化了这个水平间距问题,而这里面德国人占了大多数。为什么德国人这么注重形式?我也不知道,可能和他们民族严谨的作风有关。事实上,上面那本葵花宝典 Guide to LaTeX 的作者 Helmut Kopka 和 Patrick W. Daly 就是俩德国人。

说起德国人的严谨,我倒也认识一位严谨的德国物理学家。他光是让别人设计个 FPGA,就要专门写一个 RFC。这可不是拿 RFC 做个标题而已,而是严格按照标准 RFC 格式和风格书写,并且写完了那个 XHTML Strict 文档他还专门去 W3C 通过了验证。他把这个 RFC 发给同事们,结果半个月过去还没有人理他。于是他召集开会,说我老早就 request for comments,你们怎么一点 comments 都没有?你想啊,这么一群笨蛋物理学家,有谁会知道他电子邮件标题里的缩写 RFC 就是要 comments 的意思啊。

该德国仁兄给实验组建了一个内部 wiki,服务器装的是 Debian。在那个 wiki 的某个小角落里,他写了一大段使用 Debian 的理由,其中的废话包括:我最爱 Debian;Debian stable 很 stable;我装的,当然我选!等等……是因为有人和他争论哪个 Linux 发行版好的无聊问题么?不,事实上,整个实验组只有他一个人懂 Linux……

是严谨?还是形式主义呢?

Tags: , ,

« 上一页下一页 »

This weblog is licensed under a Creative Commons License.
Powered by WordPress. Theme based on Pool by Borja Fernandez.