巴别塔上的雇工


MSDN “Cannot Find Server”
1月 30, 2008, 8:03 上午
Filed under: 技术体会
我的一台工作机不知道怎么搞的,MSDN坏了,通过MSDN找Index的资料,时不时显示不出内容来,安装的是完全版,网络也通畅,上网找了一下,也找不出对策。这问题有一整子了,碰上也就忍了,这几天装上Visual Studio 2008和对应MSDN 9.0,本以为问题会消失,结果还是这样,不能忍了,还是认真找找办法吧,搜索什么"MSDN cannot display"之类的关键词,结果都风牛马不相及,难不成世上只有我一个人碰上这种问题?不可能啊,在折腾的时候,看到MSDN上内容的Tab上显示"Cannot Find Server"三个小词,顺手就搜索’MSDN Cannot Find Server",结果一下子就找到解决办法了。

MSDN利用IE的组件来显示帮助内容,就会把临时文件放到IE的临时文件目录里面去,碰到这种"Cannot Find Server"的现象,其实和Server也没什么关系,把IE临时文件目录清空就行了,具体原因,我是不知道,也许只有VS开发组的人知道:)

一开始总找不到结果,是因为问题没问好,什么MSDN cannot display这样的关键字匹配不上对应的解答。几乎任何困难在Internet上都能找到答案,只要你问对了问题Smile



Syndicated Client Experience + MSDN Reader: 比较像样
1月 30, 2008, 2:24 上午
Filed under: 技术体会

今天偶然发现Microsoft推出了一个叫MSDN Reader的东东,基于Syndicated Client Experience这样一个Kit,的确很酷,交互性很强,感觉User Experience上比Office 2007更进了一步,这东西就是传说中的WPF(Windows Presentation Foundation)做的。

简单的说,MSDN Reader就是一个基于桌面的Feed Reader,只不过显示方式完全可以定制,而且还可以利用WPF提供更多炫酷的功能。一说是Feed Reader,自然让人想添加几个自己喜欢的Feed进去,但是,在Subscription Center里找不到添加Feed的地方,搞了半天我才弄明白,目前这种方式,每个Feed都需要有自己专门的程序,也就是说,现在的MSDN Reader是一个程序,要是弄一个《人民日报》的阅读器,需要再做一个程序,要弄一个《南方周末》,还需要另外一个程序,让人有点失望哦:) 当然,理论上,可以弄一个程序,可以阅读任何Feed,回头有时间自己可以写一个。

这种方式走的是和众多其他Feed Reader不同的道路。普通的Feed Reader获得内容之后,如何显示出来,对所有的Feed都是一视同仁的, 比如Google Reader,我订阅几十个Feed,都是一个模式显示,左边的Panel里面是Feed列表,右边是当前选中Feed的文章列表,最新的在上面,发布时间晚的在下面,所有的Feed都这样。你可以说这样具有“一致性”,也可以说这样每个Feed都没有“个性”,没办法啊,Feed只提供内容,显示权完全由Reader说了算。

image

但是信息发布者有可能不光想提供内容,而且想让内容按照自己“个性”的方式显示,比如说《人民日报》希望Feed像报纸一样显示,抬头四个大红字“人民日报”,下面是大字头条,等等要求,普通的Feed Reader就不能胜任了。目前这个Syndicated Client Experience倒是可以满足这个要求,比如下面的MSDN Reader,布局都是由客户端程序决定的,想怎样就怎样,当然增加的功能不只是可以定制显示方式,Syndicated Client Experience还提供搜索、添加笔记等很多功能,既然是在客户端,这些都不是可能不可能的问题,只是方便不方便的问题,有了WPF,真是一切皆有可能,一切皆方便。

image



得奖
1月 29, 2008, 2:22 上午
Filed under: 工作心情

我们部门改名成Ad Platform China之际,搞了一个海报设计大赛,小弟不才做了几张海报,顺道把之前画的微软十诫贡献出来,兄弟姐妹们看得起我给我投了不少票,让我得了Creativeness和Naming两个奖,感谢同事们的支持,这不是客套话,创作需要源于生活,如果不是和同事们朝夕相处给我灵感和体会,也就没法创作,再次感谢同事们。



王府井的钉子户
1月 28, 2008, 5:15 上午
Filed under: 城市丛林

昨天去王府井,看到紧挨着王府大饭店南侧,有一家被蓝色铁皮墙环绕的三层楼房,里面墙上涂着“誓与此楼共存亡”,还挂了一个条幅“打砸毁吓不倒人”。

图像224

再往南,在天主教堂对面,有一家东来顺,楼已经拆得只剩下一小半了,不知道谁敢进去吃饭。

图像226

这个角度看更加震撼-:)

图像228

一个笑话,关于China的来源,说外国人来中国,看到都处都在拆房子,就问中国人为什么拆,中国人也听不懂,就只说“拆了,拆了”,外国人听成Chai-ne,所以就管中国叫China了。



Creative Capitalism: Possible?
1月 27, 2008, 3:41 下午
Filed under: 工作心情

微软老大Bill Gates最近在瑞士达沃斯的2008世界经济论坛上做了关于Creative Capitalism的演讲,到这里看看原稿记录吧。

BillG退休在即,全身心搞慈善,所以出来说说自己“创造性资本主义”的想法,之前我一直以为他已经退休了,但是演讲中他说到七月份才全退,这让我想起曾经有一个著名女歌手说要暂别歌坛,到处开演唱会鼓噪“暂别”这事,结果鼓噪了一年多也没暂别成:)

BillG认为经济发展和技术进步让世界变得更加美好,但是美好的世界却不是平衡地被每个人共享的,这是因为资本主义制度就是为金钱服务的,如果你的金钱越多,那么这个制度下的创造力就会更多地为你服务;如果你钱少,那么制度下地创造力就会更少地为你服务;如你你没钱,对不起,没有哪个资本会为你创造东西。BillG说了一个大实话!只有出得起钱的需求,资本才会容许下属的力量去生产产品,不然,怎么发工资,怎么再生产,怎么向股东交代,资本总是追求利益最大化(Profit Maximum)。顺便说一下,BillG的口气,似乎这个世界上只有资本主义(Capitalism),完全没有把我中国特色的社会主义放在眼里哦,算了,他愿意怎么看就怎么看吧:)

BillG觉得这样的资本主义很不好,应该创造新的系统(System),那就是Creative Capitalism,姑且翻译成“创造性的资本主义”吧。这和大企业捐钱回报社会还是不同,像饿狼一样赚钱,然后再做送财童子捐出去,很多资本家都早已这么做了,BillG当然有创新才行:) BillG的Creative Capitalism是要将赚钱和慈善结合起来,或者说是要将企业和慈善结合起来,说白了,就是要愿意做赚很少钱的生产项目,甚至是赔钱的项目,而这些项目会给穷人带来好处。

BillG举了几个Creative Capitalism的范例,都是关于医药的,XXX公司给发展中国家提供低价疫苗,当然Microsoft也曾身体力行销售削价打折软件给俄罗斯等地区。我注意到,这样的案例几乎都是“软件”,疫苗的研究成本很高,但是生产成本就不那么高了,软件生产成本就更加低廉了,这样的“软件”,假如发售了高价赚了一票,真不在乎低价Copy-Paste一批再卖,小赚也是赚,赔点也不伤筋骨。不知道能不能搞“硬件”的Creative Capitalism,比如卖给非洲50美元一台的拖拉机:)

既然BillG说到由于技术太贵导致需要的人无法使用,那一个问题自然出现了:阁下怎么看待开源软件(Open Source Software)运动呢?开源可是让很多买不起商业软件的人用上了同样功能的软件啊,比Creative Capitalism进步啊。就和上面说的一样,这是“软件”,几乎没有生产成本,花一些电力和时间来编译就生产出来了,我们知道有Open Source Software和Free Software,最近我也听说有Open Source Hardware,但是还没听说Free Hardware,硬件这玩意没法Free。我看未来的软件业必然会走向免费,而服务是会带来利润的,比如,巨大的存储和运算服务,不光需要软件,还需要有巨大的硬件和电力支持,这不是OOS能提供的,只能由产生利润的企业提供。只是目前软件业还没走到这一步,Microsoft的主要利润来源还是卖软件,我也希望BillG别突然宣布Windows和Office免费或者开源,不然我下个月工资也许就发不出来了:)

BillG的Creative Capitalism构想能否实现?也许吧,对于大型企业来说,企业的名声也关系到利润,所以也愿意投入一部分力量做赔钱买卖,但是马克思告诉过我们,资本就是要获得最大化的利润,财富会向少数群体流动,虽然个别案例会让一些穷人获得一些好处,我想,个别案例改变不了全局。BillG的和谐世界构想也许比共产主义还要遥远,不过,创造一个赚钱机器已经很了不起了,能够激流勇退转而投身一个超越传统慈善的事业,就更加了不起。



为什么没有http://hen.hao.hen.qiang.da?
1月 25, 2008, 2:34 上午
Filed under: 八卦杂谈

最近搞出来的“很黄很暴力”事件,引出了一个网站http://hen.huang.hen.bao.li,不得不惊叹有人下手很快,这个域名的注册可以与http://del.icio.us有一比了Smile

前几天突然想到,“很黄很暴力”之前有“很好很强大”,http://hen.hao.hen.qiang.da这个域名不知道有没有被注册,输入这个网址,无法解析,心中窃喜,难不成我是第一个想到注册这个域名的?不过,哪有这样的好事Wink

http://del.icio.us之所以能注册,是因为存在顶级域名us,山姆大叔的国家域名;http://hen.huang.hen.bao.li之所以能注册,是因为存在顶级域名li,代表Liechtenstein,列支敦士登,夹在瑞士和奥地利之间的一个小国;但是没法注册http://hen.hao.hen.qiang.da,因为da不是一个定级域名,全部顶级域名在这里可以看到。



终结者:what is lesearch.com?
1月 23, 2008, 11:14 上午
Filed under: 电影电视

Fox电视网推出的《终结者(Terminator》电视版,剧情延续了电影版:1999年,未来人类领袖John Connor也长成大孩子了,老妈依然火辣,但是未来的“天网”系统没有放弃追杀John,继续派出机器人杀手,当然,未来的John也派出了机器人保护者,一场大战不可避免……

电影版的结尾其实是无法自圆其说的,既然阿诺扮演的机器人保护者将包括自己在内的来自未来的高科技芯片全都毁了,那么,就不会有天网系统,也就不会有来自未来的机器人战士,那怎么又会有终结者毁掉自己呢?说不清楚,当然这自相矛盾的情节不影响当年的票房:)

电视版无疑算是要给个交代,很简单,天网系统派遣新的机器人杀手来了,虽然现在没放多少集,但是我想最后人类还是难逃审判日之劫,机器人杀手的任务(或者说作用)似乎不是杀死John,而是要把芯片带回过去Smile

也许编剧既想把John和他的火辣老妈保持在一个年轻的状态,又不想让时代背景太落伍,所以第一集就安排两人和机器人保护者从1999年时光穿梭到了2007年。想想看,跳过了8年时间,错过了9/11事件,错过了两次“反恐”战争,错过了iPod和iPhone的发布,错过了Web2.0的兴起,错过了……太多了,难怪John到了2007年之后难不住性子跑到电子产品市场去见识一下新事物。

Wo~wo~wo,我们未来人类的领袖一下子被Windows Vista吸引住了。

vista

立刻试用一把,这个Dell笔记本的型号和我用的很像,但是肯定是Design For Vista的。

dell

毫无疑问,这是Microsoft/Dell运营的一个动作,Fox为什么不安排John去用一个Mac上网,因为Microsoft/Dell给了广告费嘛Wink

John玩了一通很酷的Vista Sidebar之后,打开了一个有前进后退按钮的类似浏览器的东西,可以选择Search Engine,缺省是LeSearch.com,让我愣了一下,这是什么搜索引擎,为什么不是Live.com?

lesearch

这个搜索引擎果然很好很强大,一下子就让John找到想要的东西了。

search

我疑惑了,莫非Fox受了Microsoft Windows Vista的广告费之后,说要做Live Search的广告还要再收一份钱,然后Microsoft市场部门发现钱用光了,算了,不显示live.com拉倒。

上网试了一下,无法访问lesearch.com这个网站,GFW应该也不会干扰这样一个不出名的“搜索引擎”,看样子就是说根本没有这个网站了,那么为什么是lesearch.com呢?大胆猜想一下,Fox没收成Microsoft两遍钱,就想收google的广告费,估计google也不惜得这个广告,反正fox也没从google那里得到好处,一想也不甘心给人做免费广告啊,所以就用google后两个字母le,加上search,炮制了lesearch这样一个“搜索引擎”,以上纯属猜想,如有雷同,纯属巧合:)

网上有人对这一段做了很细致的描述,可以参考一下。 PS.我老婆给了我一个提示,le是google的最后两个字母,也分别是live的首尾字母,l和e是google和live共有的两个字母,Fox怎么想的?Nerd



JUnit Assert
1月 22, 2008, 1:51 上午
Filed under: 技术体会
说到Unit Test,得要说一下所有xUnit的祖宗JUnit ,有一个类叫Assert,里面所有关于判断的函数都是以assert开头的,比如assertEquals、assertTrue、assertFalse,当初我看到这个类,觉得这样的命名挺多余的,既然这个类叫做Assert,为什么每个方法还要再带一个assert前缀干什么呢?现在一想这样其实很合理,一目了然,这些方法是用来assert的,有可能抛异常,而且,由于TestCase类继承Assert类,所以在测试方法中直接使用这些方法就行了,感觉不出是父类Assert定义的方法,如果没有前缀assert-,也没法清晰的表明自己的功能。

Quote

Assert: It is AreEqual, Not Equals

用Visual Studio建了Test Project,使用Microsoft.VisualStudio.TestTools.UnitTesting命名空间(namespace)中的类来做Unit Testing,写了几个Test Case,全部都通过了,感觉是不是太顺利了,用Debug模式一跟,发现被测试的输出结果很多不对,怎么Assert.Equals就不报错呢?

一试验,就连Assert.Equals(1, 2)这样的语句也不会报错,Visual Studio不会留这么大一个bug下来吧,难不成有鬼了!找同事看,也看不出什么问题来,看Intellisense的提示,还好Intellisense的提示是按字母顺序排列的,一眼看见原来Assert类有个AreEqual函数,这个AreEqual函数才是用来做单元测试判断两个对象是否相等用的,而Equals继承自System.Object类,也是用来判断对象是否相等,但是如果不等,只是返回一个false,不是像AreEqual一样抛出一个异常,一个值为false的表达式作为一个单独语句,不会对整个test case方法有任何影响。

这倒是暴露了一个方法命名的一个问题,初用太容易选择Assert.Equals而不是用Assert.AreEqual了,理想一点,Assert类应该override这个Equals方法,让其抛一个类似Deprecated的异常避免误用,但是两个参数的Object.Equals又是一个static方法,Assert类没法override,还是只能以后自己小心注意一点吧。



Assert: It is AreEqual, Not Equals
1月 21, 2008, 6:40 上午
Filed under: 技术体会

用Visual Studio建了Test Project,使用Microsoft.VisualStudio.TestTools.UnitTesting命名空间(namespace)中的类来做Unit Testing,写了几个Test Case,全部都通过了,感觉是不是太顺利了,用Debug模式一跟,发现被测试的输出结果很多不对,怎么Assert.Equals就不报错呢?

一试验,就连Assert.Equals(1, 2)这样的语句也不会报错,Visual Studio不会留这么大一个bug下来吧,难不成有鬼了!找同事看,也看不出什么问题来,看Intellisense的提示,还好Intellisense的提示是按字母顺序排列的,一眼看见原来Assert类有个AreEqual函数,这个AreEqual函数才是用来做单元测试判断两个对象是否相等用的,而Equals继承自System.Object类,也是用来判断对象是否相等,但是如果不等,只是返回一个false,不是像AreEqual一样抛出一个异常,一个值为false的表达式作为一个单独语句,不会对整个test case方法有任何影响。

这倒是暴露了一个方法命名的一个问题,初用太容易选择Assert.Equals而不是用Assert.AreEqual了,理想一点,Assert类应该override这个Equals方法,让其抛一个类似Deprecated的异常避免误用,但是两个参数的Object.Equals又是一个static方法,Assert类没法override,还是只能以后自己小心注意一点吧。



Viral Social Network
1月 18, 2008, 1:33 下午
Filed under: 原创卡通

image

还是关于Social Network,一个大的“卖点”就是宣称你和世界上任何一个人之间最多有6层社会联系(Social Connection),似乎也有说7层的。想象一下,你本人和希拉里.克林顿没有什么联系,但是隔6层关系之内,你和她有了联系,给人感觉很神奇的样子。

在这个高度国际化的世界里,这个理论应该成立,但是我还是很怀疑从我自己到本.拉登之间只有6个社会关系连接,可惜本.拉登肯定不会上facebook,或者说至少不会用真实身份上facebook,所以没法通过facebook验证这一点。

如果可能,真想发明这样只能传染6次的病毒,但是再一想也没法验证,首先,我和我的很多社会关系很长时间都不会有面对面的接触,还有,本.拉登他老人家肯定也不会和他的大部分联系人有物理接触。信息时代让我们拥有了更多的朋友,但是这些朋友却往往离我们很远——我说的是我的朋友,本.拉登不是我的朋友:)