Carmack在QUAKE3中使用了下面的算法,它第一次在公众场合出现的时候,几乎震住了所有的人。据说该算法其实并不是Carmack发明的,它真正的作者是Nvidia的Gary Tarolli(未经证实)。
今天看到一个快速平方根算法,很是巧妙。据称是Carmack在QUAKE3中使用了下面的算法,它第一次在公众场合出现的时候,几乎震住了所有的人。
float InvSqrt(float x)
{
float xhalf = 0.5f*x;
int i = *(int*)&x; // get bits for floating value
i = 0x5f3759df - (i>>1); // gives initial guess y0
x = *(float*)&i; // convert bits back to float
x = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy
return x;
}
Chris Lomont写了篇论文,关于这个算法:
http://www.lomont.org/Math/Papers/2003/InvSqrt.pdf
At the airport bookstore, there are only about a dozen freestanding shelves of books. It’s Darwinian selection at its most brutal: only the most popular authors, the newest novels, and the most recognizable classics survive. You won’t find the lesser known works of Oscar Wilde or Voltaire or even Hemingway — there isn’t space for them. Jane Austen makes only the briefest appearance, and Edgar Allen Poe shows his face only at Halloween. There are no collections of poetry beyond Dr. Seuss.
Read more…
我在以前的项目里就面试过Master’s Degree的Candidate,当时Tony在train了那个candidate之后和我说:你要是不像给自己找麻烦,就把他换了。这是我第一次感到研究生水平不咋样。
再后来的几次面试,也发现,多数情况下,研究生给我的感觉很差。直到……
我昨天在老妈的Laptop里面找到一个他们工作用的软件,据说是清华大学的硕士研究生的研究课题。在我试用的10分钟里面,不下20次把可怜的软件弄的关闭了。其实就是个C#编写的小程序。具体问题体现在:
- 只有关闭按钮,窗口是Toolbox类型的。(没有最大化最小化)。
- 一共才11个功能,满打满算只有5个能用
- 完全没有输入验证,超长字符串、单引号、%、_,任何一个都能导致出错;日期只支持YYYY-MM-DD格式;主键重复直接从数据库报出来。以上都是直接Exception。
- 未知原因的停止响应(死循环的样子)
- 搜索功能,只能针对主键的完全索引(“=”的关系,不是LIKE)
当时我喊出来:研究生就这水平?!清华的研究生就这水平?!我就是闭着眼,也编不出这么烂的程序。
后来我问了一下,据说这个破“科研项目”居然要了几万块的资金。烂!这么个破软件,10块钱我都不出。
怎么现在研究生就这水平?还不如职高的呢。
亲身经历,实在是太恐怖了。
从春节过后,就发现不少地方(尤其是火车站周边),行人横穿主路变得越来越多了。
周五晚上走东二环路从南向北通过东便门桥,我一直跟着一辆警车开这80km/h的速度在主路上窜着。突然发现警车居然减速了,我开始以为是前面有车在压车,就顺势向右并了一条车道。
就在我的车和警车处于几乎同一个位置的时候,突然发现警车前面并没有车。我下意识的收了一下油门,就在这时,我看到了警车前面有个人影,即将走到我的车道上。赶紧猛踩了一脚刹车。
心里这个后怕啊。你说行人怎么这么胆大啊。
之前Ben就和我聊过关于行人横穿主路的问题,我的问题一向是:
- 对于人车混行的道路或者非封闭的道路:机动车应该尽可能让行人。行人没有违法的时候,车撞了人,就该司机赔偿。
- 对于高速公路、环路这样的封闭道路:车撞了人就该是活该。
《交法》规定的是,车撞了人,都是车负责。原因为人是弱势。但事实上,在封闭道路上,车撞了人,车实际上是弱势的。
另外补充一句,我觉得,对于家长带着小孩以及老师这样的人群,只要是不遵守交法(过马路不走人行横道;过马路不等红绿灯),都是不应该的。一个人也就算了,还带着自己的小孩,还要教授自己的学生。这样的人,怎么做表率?
当然,行人也是挺郁闷的。我就曾发现,有些路口,根本就没有一个行人可以痛快的通过路口的时间。
上次不记得修改了什么,今天启动Ubuntu的时候突然无法直接进入X Window了(不直接也进不去)。不仅如此,即使使用Console进入系统,很多命令也都无法使用,包括startx、vi等。
这样的话,我几乎什么也做不了。我首先想到的是看看日志文件,开始没留意什么,却发现一个log中写着:The directory “/usr/share/…” does not exist。觉得很奇怪,进入/usr,却发现里面什么都没有。/usr里面的内容凭空消失了?觉得问题出在/etc/fstab文件上,查看这个文件,偶然发现,在/dev/hda1的记录上写着:
# Engry for /dev/hda1 :
UUID=a80b3122-dd44-46b7-8fc5-00262a486e32 / reiserfs otail 0 1
注意那个otail了吗?实际上应该是notail。不知道上次在改什么的时候把它给删除了。却发现现在没有vi,没法编辑阿,为了一个字符写个教本也不值当的。
这时我想起了之前介绍的SystemRescueCD, 启动之后,mount /dev/hda1,修改文件,重新启动,搞定!
SystemRescueCD是一个基于Linux的系统紧急工具包。支持Linux各种分区类型(ext3,ext3,reiserfs4等),也通过NTFS-3G支持NTFS分区的读写。包含磁盘分区(Gparted),内存硬盘检测(testdisk、memtest+),FireFox等多种工具。

SystemRescueCd 的 ISO 映像文件的大小为121MB,非常适合刻录为小CD盘片,可从下面下载。
Download SystemRescueCd 0.3.3
每天从朝阳门到中关村软件园折腾,好歹也是研究出在早晚高峰时间开车的最佳路线。
早高峰上班:
从朝阳门出发,二环路是必不可少的,东二环北段,到北二环东段。基本路线有这样几种:
- 八达岭高速-北五环路-圆明园西路(肖家河桥出口):这是我认为最好的一种走法。堵点只在二环进入八达岭高速的出口、八达岭高速收费站。(进入五环是不用收费的,领卡,但进入五环的入口没有收费站)。
- 中轴路-北辰西路-北五环路(林翠桥入口)-圆明园西路(肖家河桥出口):这是备选方案,也不错,只是中轴路红灯比较多,北辰西路部分比较窄。
- 中轴路-北四环-中关村北大街-上地西路(上地环岛向西转弯):优点是距离近(比上述两种路线少3~5km,但不少堵车的地方。
晚高峰回家
晚高峰回家,目前只有一种比较好的走法。就是上面第二种方案的逆序:圆明园西路-北五环路-北辰西路(林翠桥出口)-中轴路-北二环(经常辅路比较好走)-东直门北小街
今儿个跟着公司领导和日本来的客户交流了一下。发现,这日本人的英语真不是盖的。就连公司在国外生活好几年,能拿英语当母语的人,也都听不懂,老parden。
那个日本人说英语,估计自己都觉得烂,说话又慢,又结结巴巴的说不清楚。真是急死人。
微软最新启动了一个 I’m活动。I’m,是微软的一个资助慈善组织的活动。你可以在你的 Windows Live Messenger的昵称前加上一串特殊代码,以表示你支持九个慈善组织中的其中一个,而你的昵称前也会出现一个的标志
。所有参加此活动的慈善组织都将在此活动的第一年获得最低10万美元的捐款,最高不限上额。而最高能达到多少,则取决于有多少人愿意在自己的昵称前加上该组织的代码。
以下是参加活动的组织:
- American Red Cross —— I’m准备提供帮助,代码:*red+u
- Boys and Girls Clubs of America —— I’m为孩子提供理想的环境,代码:*bgca
- National AIDS Fund —— I’m与艾滋病(AIDS)抗争,代码:*naf
- National MS Society —— I’m参与到解决多发性硬化症(MS)的运动,代码:*mssoc
- ninemillion.org —— I’m帮助9百万流离失所的孩子,代码:*9mil
- Sierra Club —— I’m探索和保护这个星球,代码:*sierra
- StopGlobalWarming.org —— I’m阻止全球变暖,代码:*help
- Susan G. Komen for the Cure —— I’m寻找乳腺癌的治愈方法, 代码:*komen
- UNICEF —— I’m救助生死边缘徘徊的孩子,代码:*unicef
Update 16:24:真是不能小看,早上我刚收到的消息,下午再看的时候,就已经满MSN的
标志了。顺便说一句,上面的东西只有在Windows Live Messenger 8.1和以上版本才有效;8.0和以前版本只能显示那些代码。
Update 3/14 9:38:中国用户参与该活动,不会对捐助资金有实质性帮助。
Recent Comments