September 2006

You are currently browsing the monthly archive for September 2006.

倒扁歌

今天在水木看到的,弄了一个听听。

Tags:

Goodbye, F-14!

小时候,一起看“航空知识”,“舰船知识”等兵器类杂志的小朋友们,没有不倾倒于F-14的。我还有一架自己亲手制作的仿真模型。更不要说Top Gun进一步得让F-14成为了男孩们心目中的梦想。今天,却是说再见的时候。

USATODAY.com - Navy retires F-14, the coolest of cold warriors


Pictures are all from flickr.com.

Tags:

巧妙的位操作

这几天看了一些编程的东西,发现虽然编程学了很多年,但是可能因为使用范围很局限,一些常用技巧还是很不熟悉,比如说位操作。相对于乘除法,甚至加减法,位操作能够很高效的被底层硬件实现。 所以,很多时候利用位操作可以高效的实现你想要的功能。(当然,某种程度上降低了代码的可读性)。来看几个例子:

1. 如何判断一个数是2的幂(power of 2)?

一个数是2的幂的特性就是在2进制表示中,它只有一个bit是1,所以需要找到一个办法来判断它只含一个1。 假设这个数是num,用1表示true,用0表示false, 可以这样实现:

  1. result = (num & (~num + 1)) == num ? 1 : 0;

如果想要排除num为负数的可能性,可以这样

  1. result = num > 0 ? ((num & (~num + 1)) == num ? 1 : 0) : 0;

这个方法是这样一个思路,假如num只有第i个(从rightmost数)bit是1,那么取反之后,只有这个bit是0,其他bit都是1了。这个时候加1的效果,就是将bit 0到i-1全部置0,而bit i又变回了1。然后与一下,将bit i+1到leftmost的bit又全部清0,这时候又变回了num自己。

补充另一种方法,NavyAnt在留言里也提到了,完整的solution应该是(还是假设1为true,0为false):

  1. result = num &&  !(num & (num - 1))

2. 实现

  1. x ? y : z

只允许使用这些运算符:~, !, ^, &, +, |, >> , <<;,不能使用if/else, for, loop等结构。
这题我在水木的 Programming版请教了一下,讨教到了很多网友的高招,这里特总结一下。首先,我一直忽视了”!”运算符的用法。”!x”可以将任何int变成0或者1 (如果 x = 0, !x = 1; 如果 x != 0, !x = 0)。这是这题一个必用的技巧。假设可以用乘法,一个惯常的想法就是要写成

  1. f(x) * y + g(x) * z
  2.  
  3. int f(x){ return ( x = 0 ? 0 : 1); }
  4. int g(x){return ( x = 0 ? 1 : 0); }

按照这个思路,可以实现为:

  1. ((!!x) * y) + (1 - (!!x)) * z

但是,题目要求不能使用乘法,所以思路需要转变为:

  1. (f(x) & y) + (g(x) & z)
  2.  
  3. int f(x){ return ( x = 0 ? 0 : (-1)); }
  4. int g(x){return ( x = 0 ? (-1) : 0); }

注意, 在2’s complement的机器上, -1就是一个所以bit都为1的数。根据这个思路,则可以实现为:

  1. ((~(!!x) + 1) & y) + ((~(1 - (!!x)) + 1) & z)

注意,这里面用到了一个不允许使用的”-”运算符,所以再改一下

  1. ((~(!!x) + 1) & y) + ((~(1 + (~(!!x))+1) + 1) & z);

这是一个满足条件的解法。但是还可以有很多方法,比如一个思路差不多的(注意 (~0) = -1)。

  1. (y&((!x)+(~0)))+(z&(~((!x)+(~0))))

但是,水木上的高手又提供了另外一种思路,是利用异或运算的性质,对于任何一个数x

  1. x ^ 0 = x;
  2. x ^ x = 0;

可以考虑这样一个实现

  1. (f(x) & (y^z))^z;
  2.  
  3. int f(x){return x ? (-1) : 0}
  4.  
  5. // 思路是
  6. // 0 ^ z = z
  7. // (y ^ z) ^ z = y ^ ( z ^ z) = y ^ 0 = y

这里利用了这样的想法,可以实现为:

  1. (((!x)+(~0))&(y^z))^z

3. 下面这行代码实现了什么功能?

  1. x ^= y ^= x ^= y;

先仔细想想异或的性质: 如果有三个数A, B, C,那么如果 A ^ B = C,则 A ^ C = B,B ^ C = A。再来看上面那行代码(从右到左)

  1. xx = x ^ y; // x = xx;
  2. a = x ^ y; // xx == a;
  3. yy = y ^ a = x; //使用了异或的性质, 并且yy就是y的最终值;
  4. b = y ^ a = x;
  5. x = x ^ b = xx ^ b = a ^ x = y;
  6.  
  7. // 所以最终结果是
  8. x = y, y = x

这行代码其实实现的是 swap(x, y)的功能。

今天翻wikipedia的时候,碰巧看到关于这个算法的详细解释

备注: 以上的所有代码并未经过严格测试,根据硬件的不同,编译器的不同,可能产生不同的结果。这里只是谈个思路。

Tags:

This Film Is Not Yet Rated

This Film Is Not Yet Rated是一部新片 — 记录片,讲述了导演(Kirby Dick)对MPAA的迷一样的电影评级制度的调查,以及讨论其对美国文化的影响。RottenTomatoes上目前的评价还可以。从海报和预告片来看,这不一定是一部好得记录片,但应该是一部有趣的电影。 可惜,这部电影目前只是在纽约和洛杉矶的少数影院内上映。

海报很Cool:

在Youtube上能够找到两个Trailer,不知道那个是官方的:

Tags:

Digg: Google Homepage on 9/11
                      
Google Blogoscoped: BlogGoogle on 9/11
                      
The Effects of September 11 on the Leading Search Engine

最后这篇文章分析了Google在9/11发生之后的连续几天内的种种举措,值得一读。因为Google是一个搜索引擎,它本身不是content provider,遇到了类似9/11这样的real-time breaking news,如果用户希望Google能够提供即时的信息,是那个时候的Google作为搜索引擎而做不到的;而与此同时,因为request过多,很多on-line的新闻网站都发生了严重的堵塞而无法正常连接。 所以,在9/11发生之初,Google在首页上建议用户从传统媒体上(电视,广播)获取信息。随后,Google在首页,陆续加入了CNN,Yahoo! News等网站的链接,并提供Cache。随后的几天里,Google更开始手工的提供了类似Portal的页面来提供最新消息的链接。当年的10月份,Google改版了首页,提供了Tab设置,方便用户切换到不同的搜索中去。 这篇文章写于2001年9月18日,最终版完成于当年10月3日。那个时候还没有Google News的服务。不知道9/11对Google News的形成有多大的促进作用。而传统媒体,尤其是电视,直到今天,在这种real-time breaking news上无疑还是有着超过internet的优势,如果你能够守在电视机前看最新的报导。而Internet上的新闻网站们如今也越来越real-time了,并且可以做到电视做不到的事情, 比如可以做出详尽的分类,配合搜索技术,帮助你迅速找到你想要看到的信息,以及RSS这类技术,更可以把最新的消息直接送到用户的新闻阅读器中。

另外一点比较有意思的是:9/11当日,很多新闻网站都不堪重负,而Google却没有遇到任何performance的问题,Google的一个官员评价到:

“[There were] no performance issues. Google currently handles about 120 million searches every day. Traffic was not significantly impacted by Sept. 11’s events.”

也就是说无论有没有9/11,Google每天总是要处理这么多的搜索请求,而9/11当日所不同的只是,用户们更集中于搜索9/11相关的词目。从另外一个侧面反映了Google的用户群的庞大以及Google的技术能力。

Update 1:

2001年9月12日Search Engine Watch的一篇文章:Finding Disaster Coverage At Search Engines。这篇文章是总结了当日各大搜索引擎对于9/11这一突发事件的应对。

Update 2:

Google Video今天有一个特殊的页面: 911 Anniversary On Google Video。主要内容是一部记录片: 7 Days in September和其他一些911的footage。

Tags:

出自phdcomics.

不要问我这两个问题哦….
:P

Tags:

赌博证据

大半个月前,领导出差不在家。无聊之极,就和Mcdull,Cynthia去Delaware Park玩老虎机。具体经过,Mcdull已经在他某天的日志里有详细记述。今天,Cynthia突然把当日用手机照下来的一张照片发了过来。简单的说,我们那天经历赢钱到把赢得钱全部输光的过程。这张照片,就是我们赢钱时候的一个小小证据 — 赌博的证据阿。纪念一下。

Tags:

偶然间逛到这个网站 -- World Heritage Tour,觉得不能不推荐一下。我将它翻译为在线世界文化遗产之旅。

网站的首页在不停得刷新着来自全世界文化遗产得精美照片,让人忍不住马上点进去看看。

网站的Mission写得很清楚:

– Making of a documentary image bank with panoramic pictures and interactive virtual reality movies for all sites registered as World Heritage by the UNESCO.
– Dissemination of these virtual reality movies for documentation and promotion of the World Heritage.
– Using multimedia techniques in an edutainment mode to raise awareness on the preservation of the World Heritage.
– Promoting the notion of sustainable tourism in the head of local administration, tourists and travelers.

也就是说这个网站收集了很多被联合国教科文组织(UNESCO)选定的世界文化遗产的所在地的照片。而这些照片都是全景照片(panoramic pictures),利用Quicktime做成了互动式的,让你可以某种程度上身临其境。赶快进去一览世界美景吧。从首页的照片点进去后,你将看到一幅世界地图, 选择你想要访问的国家,比如中国,就看到一幅中国地图,然后再选择目的地。

作为云南人,我来直接给出一系列丽江的Tour (注意看页面右下方的操作说明):

目前WHTour这个网站,已经收集了162个联合国世界文化遗产(一共有830个)所在地的图片,缓慢增长中,详情看这里

喜欢这个non-profit的网站的使命,构架,和多媒体互动技术的使用,也喜欢它的这句话:

To all governments, organizations, companies and individuals : act responsibly. Don’t commercialize, pollute, trash or blow up World Heritage Sites.

Tags:

一个比较难的Sudoku

今天在Number Logic玩Sudoku,玩到一个难的,如下面所示:

做了很长时间(郁闷阿,费了好些时间), 最后虽然做出来了,但是有个把步骤是猜得,并没有达到完全逻辑推理的境界,很不爽。

Number Logic上说:

  • There is only one solution, and it can be reached using logic.
  • Guessing is not necessary!

我这里还是Guess了,所以即使做出来了,也没有什么成就感,:P。

大家有空来试试?

在线玩:Number Logic: Puzzle 1205

Tags:

国内的一个仿Slashdot的网站 — Solidot今天早上宣布将准备关闭

关闭的主要原因是站长无力在业余时间维护整个架构,并且随着用户人数的上升,对服务器的要求也超过了资金允许的范围,所以不得不关闭。

Solidot虽然远远没有达到Slashdot那么成功,但是总还是能看到有用的信息,可惜了目前的4349名RSS订阅者了 (我也是其中之一)。 看来,网站成功到了一定程度之后,如果无能力继续维持,反而面临关闭。

可惜了。

Update:

站长把Solidot放上易趣拍卖了。我觉得这不是明智之举。首先,很难卖掉。其次,既然是拍卖,什么人都可以买,即使是那些对网站长远发展根本没有计划或者不关心的人也可以买走,那拍卖还不如直接关站呢。

09/12/2006 Update:

Solidot又宣布将继续运行,已经被某科技网站收购。

Tags:

« Older entries

Pages (2): [1] 2 »

Syndication

  • |  (comments)
  • Subscribe in Bloglines
  • Add to Google
如以上的Feed无法订阅,请使用feedsky提供的feed:

Calendar

Archives

Categories

random posts:

recent comments:

  • interracial dating: well..im short and sweet and just cute as hell..(...
  • Wojian: 可以透露一下这次旅行的预算么?3K,5...
  • only: 倒着读完了,很有帮助,备用...
  • only: Seattle is so beautifu...
  • yj: 漂亮...

Technorati

Meta

Other