巴别塔上的雇工


去往Redmond
9月 2, 2007, 6:37 上午
Filed under: Uncategorized

昨天中午12点起飞,飞了12个小,转了一机,到Seattle的时候还是九月一号中午12点:)

坐长途飞机实在是件痛苦的事情,和坐长途火车的感觉一样,不过下飞机感觉还可以,空气明显好一些,从照片上可以看出明显差距。

这张是在北京机场拍的,看不清远处的东西

100_1641

这张是在旧金山转机时拍的,远处的山清晰可见。

100_1648

旧金山国际机场的天花板上的装饰,很奇怪为什么用了二战时的日本领式战机和一战中的德国战机。

100_1655

100_1654

西雅图这里别的其实没什么好说的,就是树多,而且都是大树,不像是后种的,家家户户都被树木包围,显得非常和谐。

100_1666

为了倒时差,下午没有睡觉,和同事们去逛商场买纪念品,美国的商场和北京比就没什么大区别了,我恍惚觉得就是在逛北京的商场。

这个老头很有意思,独自一人在商场弹钢琴,旁若无人。

100_1674

天空很蓝,给人映像最深。

100_1675



我的结婚照
7月 2, 2007, 3:30 上午
Filed under: Uncategorized


新九龙
5月 26, 2007, 2:23 上午
Filed under: Uncategorized
我家附近有一家川菜店叫“新九龙”,味道不错,但我一直奇怪,为什么一个川菜店以香港的地方命名。今天看新闻“四川九龙发生泥石流”,才知道四川也有一个地方也叫“九龙”,这就讲得通了。



丽江印象:第六天:日出
12月 1, 2006, 3:15 下午
Filed under: Uncategorized

听人说过,丽江最美的是清晨,第六天,我起了一个早,有幸看到这辈子都忘不了的壮美景象。

预告7:42日出,我7:30爬上狮子山,眼前是火烧的朝霞下安静的古城。

渐渐的,太阳的光芒从山缝和云层中漏出。

光线越来越多。

这只能用“万丈 光芒”来形容。

仔细看,看得见吗?不行点击看大图,光芒中有一架飞机飞过,和大自然相比,这点可谓先进的科技产物显得相当渺小。

旭日升空,在古城口,大水车在晨曦中熠熠生辉,语言已经无法名状这美景了。



如果我们拥有无限的运算和存储能力…
11月 17, 2006, 1:26 下午
Filed under: Uncategorized

摩尔定律算是注定要终结了,但是假设我们生活在一个魔幻世界中,拥有无限快速的CPU,拥有无限巨大的RAM,我们还用得着研究算法吗?我们还要不要费尽心思把复杂度从O(n^2)提高到O(n*log(n))再到O(n)?

似乎是不需要再研究算法了,反正资源无限,就是用穷举法,也能够搞定,当然穷举也算是一种算法,只不过似乎我们不用做更多更深的算法研究。我一直也就这么认为,但是最近看了点机器学习的东西,发现还真不是这样。普通的问题,都是人脑知道该如何解决,然后编程序让机器一步一步按照人脑的想法去解决,不管这个问题如何复杂,都只是人脑活动的精确再现,如果机器拥有无限的capacity,这样的问题真的似乎不用再提高什么效率了。但是,有的问题人脑也不知道怎么精确定义解决过程,比如判断一张图片是不是色情图片,该怎么教会机器去判断呢?稍微有点理智的成年人都能够做出精确度很高的判断,但是如何去编程序模拟人脑的这个过程呢?人类对人脑的认识还没有达到这个程度哦。对这类问题,目前似乎只能用机器学习的方法去解决,也就是提供一些training data,我们人类讲不清楚,让机器自己通过这些training data去学习去。这里有一个问题,机器学习的结果必须有一点通用性(Generalization),也就是训练好的机器出去别只认识训练样本,不认识真实世界中的东西了。机器是个笨家伙,比如我给它看一万张树的图片看,它也许能全部记忆下来,而且能够高速的检索,但是看到第一万零一棵树,如果没有良好的学习模型,它会说这不是一棵树,因为我的一万张树德database里面没有叶子数量是这么多而且树皮这么多疤的物体,可见要达到机器学习的精确性,不能单单靠运算和存储能力,机器的capacity太高了可能适得其反,当然太低的话,机器会把一个邮筒当作一棵树,因为邮筒是绿色的:)机器就是这样,和rainman一样,计算和记忆力超强,但是rainman傻傻的判断力还不如一个常人。

那么我把需要识别的东西,全部收集起来,让机器来记忆和查找,这样如何?对有的问题可以这样,但是实际问题往往样本空间是无限的,比如要弄一个网页内容是否色情的机器判断,绝不可能把全世界的网页都收集下来训练电脑,因为训练样本还是要人脑先来label,确定是色情还是非色情,然后喂给电脑,现在全世界URL数以十亿计,怎么可能去用人力label?所以只能选取有限的有代表性的样本,用算法抽取出样本特征,然后……

即使我们拥有了无穷的的运算和存储能力,在这一点上,算法研究还是少不了的。



Http/1.1 Connection Limit
10月 17, 2006, 1:33 下午
Filed under: Uncategorized

今天看到一个简单的Web Crawler,作者提到简单的使用WebRequest/WebResponse来抓网页存在问题,虽然是多线程并行,但是同一时刻只能有一个线程在下载,所以作者就自己用Socket实现了一个自己的HTTP User Agent。

我试验了一下,代码如下,故意一开始把response.Close()注释掉,由于线程执行次序不确定,输出结果也不确定,但是都只能打印出两行包含ContentType;如果不注释response.Close(),就能够输出10行。似乎某个资源只有两份,不释放别的线程就没法从GetResponse()返回。

 

using System.Threading; 
using System.IO; 
using System.Net; 
using System; 

public class Program
{ 
     public static void Main(string[] args) 
     { 
         for (int idx = 0; idx < 10; ++idx) 
         { 
             ThreadPool.QueueUserWorkItem(new WaitCallback(testWeb), idx); 
         } 
         Console.ReadLine(); 
     } 

     private static void testWeb(object idx) 
     { 
         string uri = "http://www.gmail.com"; 
         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 
         request.KeepAlive = false; 
         using (HttpWebResponse response = 
(HttpWebResponse)request.GetResponse()) 
         { 
             Console.WriteLine(response.ContentType + "; idx = " + 
(int)idx); 
         } 

    // response.Close();
     } 

} 

 

那个Crawler的作者说这种情况“只有一个线程”能下载,不知道他是什么情况,我看到的是两个线程能够同时下载,看到这个2字想起若干天前一个总部测试性能的哥们说过,Http/1.1有这样的限制。查RFC2616第8.1.4节

  Clients that use persistent connections SHOULD limit the number of
   simultaneous connections that they maintain to a given server. A
   single-user client SHOULD NOT maintain more than 2 connections with
   any server or proxy. A proxy SHOULD use up to 2*N connections to
   another server or proxy, where N is the number of simultaneously
   active users. These guidelines are intended to improve HTTP response
   times and avoid congestion.

明显IE和.net framework作为client都贯彻了这一点,正因为这个原因,一些大型的ICP选择把同样页面的内容放在不同的host domain里面,这样浏览器才能够有多于两个线程同步下载页面内容。

上面我的程序,作一下修改,

 

using System.Threading; 
using System.IO; 
using System.Net; 
using System; 

public class Program
{ 
     public static void Main(string[] args) 
     { 
         for (int idx = 0; idx < 5; ++idx) 
         { 
             ThreadPool.QueueUserWorkItem(new WaitCallback(testWeb), idx); 
         } 
         Console.ReadLine(); 
     } 
    static string[] uris = new string[]
     { "http://www.gmail.com", "http://www.live.com", 
        "http://www.cnet.com", "http://www.wikipedia.org", 
        "http://www.msn.com"};
     private static void testWeb(object idx) 
     { 
         string uri = uris[(int)idx];
         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 
         request.KeepAlive = false; 
         using (HttpWebResponse response = 
(HttpWebResponse)request.GetResponse()) 
         { 
             Console.WriteLine(response.ContentType + "; idx = " + 
(int)idx); 
         } 

    // response.Close();
     } 

} 

 

访问的uri属于不同domain,这样所有的链接都会建立。

上面故意不掉response.Close()只是为了体现问题,现实中无论如何都应该及时地把它关掉。其实这样一个问题对普通程序没什么影响,但是对于Web Crawler,一个网页上的连接很有可能大部分都是同一个host domain下的,这样同一时间段内会有很多对同一domain下的访问,一定要注意这个问题。

那个简单Crawler的作者选择自己用Socket实现,也怪MSDN没有在HttpWebRequest/HttpWebResponse部分标注,其实可以通过设置ServicePointManager.DefaultConnectionLimit这个属性来改变对同一domain最多两个连接的缺省行为。我试验了一下,似乎有些问题,修改了这个属性,有的运行可以产生效果,有时候最大连接数并没有达到我设置的值,还是那句老话:文档往往都是错误的:)



Vista
9月 30, 2006, 9:15 上午
Filed under: Uncategorized
今天领到一台LapTop,以后就是在家也要干活,开会可以写Blog的人了:)
以前的工作PC都在呼呼的忙,正好把LapTop装上Vista来试用一下,IT部门工作效率还挺高,下午送去下去就装好了。
这篇Blog就是在笔记本上敲出来的,刚刚用,不习惯,以后还要好好适应这样敏感的键盘。


911
9月 8, 2006, 11:55 上午
Filed under: Uncategorized

快到911事件五周年纪念日了,各种机构开始反思回顾这件事情,我也说一说:)

五年前发生这件事情的时候,我还在学校,晚上听到这个消息,开始还以为是开玩笑,然后一个研究生班的男生挤在唯一有电视的寝室里面观摩CCTV《晚间新闻》报到这一大事件,当时大家的反应就不多说了:)

很巧的是,几天后中国科学年会在长春举行,杨振宁受邀来访,就在9月12日,还到我们学校做演讲,有幸我们班也有机会去做观众,我们一开始想,杨老已经是美国籍了,大概会哀悼一下他的同籍异胞呢,哪知道整个演讲他就说了了一堆他的经历,教导我们要爱国好学,911只字不提,就好像根本不知道这么回事一样。几天后科学年会大会我们又去做观众,我记得至少两个教授的讲话拿911做了调侃,一个讲纳米技术的浙大教授在说道纳米技术的好处时说“要是纽约世贸大楼是用纳米技术做的话,就不会那么容易倒塌了”,全场哄笑。

五年转眼过去了,美国把阿富汗和伊拉克都打下来了,杨振宁都找了年轻妞了,我也工作多年了,就看伊朗只争朝夕地提炼浓缩铀的劲头,不难理解世界变化如此迅速。

布什蹦出来提出“反伊斯兰法西斯战争”的概念,之前还把反恐和反纳粹和反共产主义相提并论,过几天觉得不妥,改口说是反“苏联式”“列宁式”的共产主义,这样的改口真没水平,“苏联”对中国人中的映像可能不是很好,但是列宁在中国人心目中那是一个好人伟人,建议他再改口就说“斯大林式”的共产主义。

我一直订阅Dibert的漫画和Blog,今天Scott Adams发表了一篇Who is Crazy,主要内容是攻击伊朗总统。本来Dibert讲的都是软件/电子工程师的故事,Scott的Blog也讲的都是工程师角度的世界,这次谈得是政治,而且政治倾向很一边倒,看看这篇Blog的Comments就知道招来什么反应了。

Who is Crazy的Comments中看到一个Video的链接,名字叫Loose Change,美国人自己做的纪录片,讲的是911其实是美国政府策划的一个阴谋,这个video非常有震撼力,其中似乎还用了Google Earth做地图。可惜Google Video对中国不开放,上面的链接在家没法看,不过可以到www.youtube.com上搜索一下,速度可能比较慢。根据wikipedia.org,这个纪录片第一版中有一些错误,在第二版中,作者修正了一些,但是故意保留了一些错误。Korey Rowe, the producer of the "Second Edition", claimed in an interview, “We know there are errors in the documentary, and we’ve actually left them in there so that people discredit us and do the research for themselves.”



血本无归
6月 28, 2006, 12:59 上午
Filed under: Uncategorized
水木BBS上面的维克杯世界杯竞猜,昨天我把之前赚到的23879点全部压在倾向于西班牙的投注上,血本无归啊!
 


总裁和女秘PK的结果
5月 10, 2006, 3:56 上午
Filed under: Uncategorized
 
嘛叫两败俱伤鱼死网破,这就叫两败俱伤鱼死网破
穿鞋的怕光脚的啊