一月 8, 2008

在一个朋友的聚会上,我问了一个问题:微软,Amazon和costco(www.costco.com,美国最大的会员制仓储式超市) 的共同点是什么?

马上就有人说:“他们的总部都在西雅图”

我觉得,其实更重要的一点是:他们做的,都是平台。

微软提供了一个PC程序的平台,Amazon提供了一个网络销售的平台,costco提供的,是实体的销售平台。他们开始都是主要为别人卖东西提供方便,但是微软后来,把好卖的东西自己做一套来卖,很快发展起来;costco则推出了kirkland signature品牌(costco的总部在kirkland,一个西雅图周围的城市),在costco卖的好的东西,很快就会被kirkland signature的类似产品替代;Amazon也从自己进销存一体化转变到允许其他商家来卖东西,我觉得可以看出类似的发展方向。

这,可以说是平台的力量。做一个好产品不容易,很多时候需要了解用户的喜好,而用户也不知道自己喜欢什么,于是能作出用户喜欢的产品,就跟撞大运差不多了。这个时候,平台可以从众多销售的产品里,很快的发现用户喜欢的产品;而平台的拥有者,就有了赌场老板的位置:不管你手气好不好,赌场是稳赚了。

今天从老白的blog里,看到这篇:

2008,Open API从搜狐开始?

可惜,我的搜狗拼音输入法自己升级了,而我正在用这台老机器算东西,两天不能重起,于是这么一篇祝贺搜狐向平台进军的贺文,居然是用微软拼音敲出来的。真不能想象全国绝大多数网民忍耐了这么烂的一个输入法那么多年,当年开发微软输入法的人,多半跟卖键盘的人有协议。

十二月 25, 2007

都说跟聪明人交朋友是件幸运的事情,你看我这儿刚刚偷偷写点东西,一群朋友呼啦一下都过来了,多让人温暖哪。特别是丁总,抢沙发不说,还特含蓄的指出“数据。还是内容?数据还是表现形式吧。内容才是用户真正关心的。”

没错,从用户角度来说,的确只关心内容。写情书写个“I Love You”,比发个49 20 4C 6F 76 65 20 59 6F 75 ,浪漫多了吧?那么我们看看,从PC时代开始,用户是怎么用计算机的:用户只要在键盘上敲字,用鼠标点点,然后屏幕上就有了内容,音响里就有了音乐,游戏杆上传回振动。这个过程里,操作系统控制硬件,获得数据“49 20 4C 6F 76 65 20 59 6F 75”,跟应用程序交换数据,转化成用户可以理解的内容“I Love You”,或者反过来,把应用程序给的数据进行处理(计算,存储等等)。这个过程里,操作硬件是操作系统关心的细节,对于应用程序来说,只要知道和操作系统交换的数据格式就可以了。用户关心的,只是接受到的反馈,或者说,用户只关心屏幕音响游戏杆构成的这个桌面,就是丁总说的内容。

在互联网时代,这个模式会改变吗?会,但是不是现在,因为没有一家公司敢于让这么多的用户都一夜之间改变习惯,那样赌的也太大了。所以我可以大胆的说,还是老样子:用户和应用程序之间,交换的是内容,应用程序和操作系统之间,交换的是数据。操作系统,只要提供数据就够了。至于怎么操作硬件处理数据,是操作系统自己的事。

那么让我们看看这些互联网巨头们都在干什么:google有自己的互联网搜索API,有自己的地图API,amazon有自己的库存搜索API,facebook可以让你把自己写的程序插到别人的页面上,youtube让你把一段视频放到自己的blog页面上。你只要愿意,就可以从这些巨大的数据源获得数据,甚至数据的表现方式,然后加以组合变化,放到你的用户的桌面上。至于这后面的细节,比如怎么使用数据中心里的那些机器,就不那么重要了。毕竟,机器已经是白菜价了。

十一月 18, 2006

写软件的人,在以前单机软件的时候,最怕的就是被盗。一旦软件被人盗了,收入就算有,也是少了很大一块。到后来,写软件的人把很多工夫花在防盗版上面,反复的检测是否用户在使用盗版。有矛就有盾,有了防盗版功能,也就有了反防盗功能。你前面费尽心机检测这处理那,你最后让不让用户使用,就取决于那个

jne 0×12345678

是跳转还是不跳转。这个行档还真培养了不少的汇编高手。而软件作者也只好提升自己,把汇编技巧玩到极致,什么回退执行,自修改代码,结果软件本身的特色倒不是最花时间的,反而是盔甲穿了一身。最后金山词霸的38元策略,算是给了一个了结:利润低到这个份上,连盗版都不能吸引人了,正版才获得了血淋淋的胜利。

网络来了以后,软件可以变成服务,从卖光盘变成了卖广告。张朝阳从美国带来了雅虎的copy,变成了搜狐;邵亦波带来了易趣;于是大家知道了亚马逊,知道了google,知道了digg,知道了blogger.com,知道了icq,知道了你有什么,我就有什么。

别误会,我不是在说当当,百度,板砖,blogbus,QQ他们不好。模仿作为一种商业行为,是无可厚非的。因为前面有经过验证可行的实践,所以模仿是一种降低风险提高成功可能的有效方式。从商业上说,能够规避风险是正当的。我这里想说的问题是:

在互联网时代,一个网络公司的模式可以被几乎无成本的模仿,这是一个事实。那么,作为一个小的公司,如何才能有效的在短期内和模仿者拉开距离呢?

我能想到的有这么几条:

1 资金。如果具体的业务需要大量的资金,那么在找到风投以后,就可以通过资金来摆脱大量的小模仿者。

2 用户群。我一直以为,丁磊是互联网1.0时代理解最深刻的人,他那么早就提出“网聚人的力量”。巨大的用户群本身就是不可替代的资源。

3 规划。一个好的商业模式应该是一目了然的,这话没错。但是一个好的商业模式是否应该是对任何人都是一目了然的呢?我想未必。一个商业模式如果不被挑明,那么最好对大多数人来说是不明确,甚至是不看好的。如何合理的部署资源,在最后才表现出以前部署的用心,需要仔细的规划。

4 技术。尽管中国互联网这行,被很多人说成是技术含量为零。不过,技术的确能够起到壁垒的作用。

 

十月 4, 2006

看到奇迹文库里面的文章“电脑芯片设计获得巨大突破:数据传输不再需要导线”。说几句:

1.为什么用光传播信号比用导线快?

中学物理里面讲过,光也是电磁波,那为什么用光传播信号比用电快呢?两者不是一样的么?区别在于,用导线传播信号,速度是远远低于光速的,用导线传信号,速度(应该是速率)是电子移动的速度,因为传播的是0/1的电平,所以实际上是对导线进行充电(这里导线是一个电容),速度是电子移动的速度。而光则是电磁波的速度。打个比方,两者的速度差,类似风(空气分子移动)的速度和声音(空气分子波动传播)的速度之差(Update:一位没留名的大侠指出,更合适的比喻似乎是:”同时用一根鞭子和木棒击打目标”)。在光纤芯片中,数据传输的速率限制,将是发光部件0/1切换的速率。

2.主导和资助研究的公司是intel,不是IBM,奇迹译文有误。

 

六月 30, 2006

keso那里看见说google passport,跑去看,看keso说:

“你有一个用户,我有一个用户,彼此交换以后,我们各有两个用户。很显然,Google并不满足于它目前已有的注册用户数,通过提供一种互利的Passport服务,获得更多的用户,就像它在与Nike合作的Joga网站上所做的那样。”

我就去看Google Accounts API,可是我横看竖看,左看右看,就是看不出google怎么和别人换用户.哪怕是我的应用承认所有google的用户都是我的用户,似乎也不行.Google Accounts API是在google用户认证成功的前提下,让应用去访问google contents.

打个比方,我的应用是个钟点工公司,员工张阿姨会擦桌子洗碗做饭.谷歌花园的住户贾一饼家里需要服务,张阿姨就来了.到了门口,保安谷阿糠就打电话问:”贾先僧,责个臧阿姨,似您请的吗?”贾先生说”似地似地!”谷阿糠就让张阿姨进去擦桌子洗碗了.只要谷阿糠还记得张阿姨,只要贾先生没有半路打电话来,说”阿糠你帮我把这个张阿姨给哄出去”,张阿姨就可以一直干下去.这从头到尾,都没我的公司另外一个顾客丁无忌什么事儿啊?谁能告诉我,谁能告诉我…

另外,看到谷歌花园的招牌说,这种让阿糠记得张阿姨的办法,比发给张阿姨一个出入平安的钻风牌,要安全快捷.而且阿糠吃了”黑客帝国”里面大妈做的营养小饼,记性特好,不用每次看到张阿姨进进出出的都要打电话问贾先生.不过,我就有个疑问了:

这张阿姨是贾先生请来擦桌子洗碗的,不是请来做饭扫地鉴定古玩的,这万一张阿姨不小心做了点什么贾先生不喜欢的事情,我们钟点工公司是肯定不用了,这谷阿糠,是不是也会跟着倒霉,被埋怨监管不严呢?贾先生的确说不让张阿姨擦书柜,尤其是不要碰那两个花瓶,不过好象谷阿糠没记住.

谁能告诉我,谁能告诉我…

后记:

我跟公司领班张阿姨说了这个新事物,张阿姨很高兴的说道:”老板,这是好机会啊.您看,经常去谷歌花园做事,人家住户喜欢了,没准谷歌花园的老总会把我们公司收购了呢!”

我说:”好的好的,我相信你们不会跳槽的(身份证在我这里呢).

不过,以后你去做事,就不要让谷歌花园的小红,一直跟在后面了.”

二月 8, 2006

今天照例去keso的网摘里面挖东西,看见这么一位,看了看他的文章,觉得对cache的分析很有趣.

在我看来,cache的存在是因为信息传递的速度有限制.且不说光速这个物理上限,现在芯片内部的信号速度比光速是低了许多倍.而如果要计算,目前体系结构所要求的前提是数据必须在足够接近的地方:比如说加法器里.而数据(信息)的传输是需要时间的,越快的传输通路,价格越贵(否则就都去用又快又便宜的了).因此,在便宜和速度之间的折衷,就是cache.

Cache能够有效果,一个不可忽略的因素是数据的局部性(data locality).CPU要访问的程序的代码(也是数据)和数据,在一定时间内是局限在一定的空间内的,所以cache才能容纳下这些数据,而不至于反复被刷新.Cache容量不够,系统就会throttle,记得好象是翻译成”颠簸”.

折衷是计算机体系结构里边的精髓,绝大多数的优化,无论是速度,可靠性,还是能耗,都是建立在对某种应用的折衷之上的.

推而广之,在计算机之外,internet上也是cache的天下.同样也存在着性能价格比的折衷.而且这里还有availability的问题,服务器断了,可以看做是速度无限慢的一种存储器,就可以归纳进cache的结构里了.

Cache也有自己的问题,主要是一致性.在体系结构里,每两个存储层次之间就要有一致性协议.保持时时刻刻的一致性是没有必要的,同步只要发生在读取之前就可以了,或者使用speculative的算法.速度不同的器件使用的一致性算法也不同.

Cache的另外一面: 

Cache的广泛使用也导致了cache占用了大量的资源,intel的CPU,cache已经接近(或者超过了?)硅片面积的一半,而能耗也增加了,而且更加复杂的置换算法使用的能耗剧增,却没有提高MIPS,整体的结果是bit / watt下降.在我以前和同学做的一个项目里,减少associativity,使bit / watt增加了.所以目前的intel CPU里,容量大的2级cache都是直接映射的.

比较新的研究方向,是把计算和数据放在一起,避免大量的传输数据,减少使用cache.

一月 24, 2006

我在一个关于传播的思维实验里边描述了实验的空间规则.高烧评论说,”信任是关键”.好,这里就谈谈信息传递信任关系.

信息传递:

在实验的世界描述里,信任是点对点的和分散的.基于信任关系的信息传递是不可靠的.

点对点: 信任关系只存在于两个结点之间,既不是对称的.例如:A信任B,并不代表B一定信任A.也不传递:冬宝信任冯巩,冯巩信任戈玲.那么冬宝信任戈玲吗?戈玲是谁啊?

分散的: 每个结点上的边都是有限的,除了结点自己处理能力的限制,还有捕食者P在做限制.

信息传递不可靠: 在世界定义里,信任是信息传递的通路.存在信任关系,才有信息传递的可能.但是信息传递会有噪声.另外,信任关系存在,只保证信息传递可能发生,并不保证信息传递一定会随时发生.

在这样一个不完美的世界里,想要信息在两个没有信任关系的结点之间流动,只有通过其他结点传递.用图论的说法,只要两点之间存在通路,信息传递就可能.但是因为信息传递的不可靠,信息要被切割成信息包来传递.Internet的数据包就是这样.不过这里的讨论不是重复Internet,是讨论一个overlay network.

好,下面说信任关系

A收到它信任的B穿来的一条消息,据说这条信息是F生成的.那么,这条不知道第几手的消息,究竟是不是F写的呢?我怎么才能信任信息的内容呢?比如说,今天接到一条据说是keso@donews.com的消息,声称”洪波从此挂键盘”,那么我信吗?

有几种做法,例如:集中的身份确认,基于内容的确认和数字签名

集中的身份确认是把身份确认和信息发布绑定:我从blog.donews.com/keso看到这条消息,我信任DNS把blog.donews.com这个URL映射到61.135.128.148,我信任61.135.128.148这个server把/keso映射到我以前读的洪波blog上,我信任我的browser没有弄错,于是我信任我看到的,的确是keso@donews.com这个id后面的人说的话.当然,洪波这么说,是否是逗乐,就要看今天是不是4月1号了,这是另外一个问题,在此不讨论.

集中的身份确认是目前用的最多的,所有的网站都用这个.缺点也明显:站被攻击,或者被封,就没的用了.连内容都没有了.

基于内容的确认是当内容无法被简单伪造的情况:比如说我去买周星星的D碟,只要看到里边是周星星在动,我就买.好处是分布的,没有中心点,不受攻击影响;缺点是对于容易伪造的内容,比如说文本,就不那么容易做到了.碰上认真的主,比如说高鄂(怎么取个名字叫搞恶?莫非也是当年的笔名?),仔仔细细伪造了半本红楼.你还真没办法.没有最变态,只有更变态.

数字签名来分布式的确认身份.每次发出一个消息,都是一个明文的头+一个用作者private key加密的内容.明文的头是作者的public key,用户可以自己去确认,这个是作者的真实签名.确认的地方是一个集中的站点,这个站点可以被攻击,因为用户用它一次以后,记得作者的public key,以后就不用了.利用email也能确认.读内容的时候,软件自动用作者的public key来解密内容.

假设一个攻击者制造了假新闻,企图冒充keso造谣.那么他的明文必须是用keso的public key,否则一眼就看穿了.但是密文不是用keso的private key来加密的,软件解密以后是乱码,就达不到造谣的目的了.

这里顺便说一下版权的事情.我对中国的版权没信心,所以这里也不写什么CC或者版权所有之类的话.请随意转载,能注明出处最好,这里先谢过.另外要说明的是,这里是blog,不是写论文.尽管我自己相信考虑的周全,但是没有把所有的重要细节都写上去.我这里写的,只有整个构想的七分之一左右.就象我一个同学说的,你看了google file system的文章,但是如果你照着做一个,肯定不行.如果转载,请一定把上面这句黑体的也加上,再谢过.

在此感谢keso收录思维实验一文.

最后希望blogbus和donews之间的TB已经好了,如果没好也没办法,裸的技术,能指望的不多.

在一个>=2维的空间中存在一系列结点,每个结点和周围的邻居结点有信任关系.

1. 信任关系的定义是:如果A信任B,那么从B到A有一条有向边.

2. 边的方向性的定义:如果A指向B,那么B拷贝A的信息.

从上面的定义:如果B信任A,那么B拷贝A的信息.注意这里信任关系和信息流动关系是反向的.

信任关系在普通结点之间通常是双向的.存在一些结点,它们有威信,表现在指向其他结点的单向边.

如果信任是单向的,信息的流动要被打折扣,信息拷贝以后会被添加噪声,直到无法辨别.

3. 存在一个超级结点”捕食者”P.它和其他结点之间有单向边,也就是说其他结点通常信任P,但是P不信任其他结点.

P不允许其他捕食者存在,它检查其他结点指向外部的边,当边数超过一定限度,就捕食这个结点.结点被捕食后,或者消失,或者断开很多边,恢复到捕食者的限度以下,但不为0.

4. 信任关系允许信息流动,但是信息的流动是随机的和短暂的.

问题是:在空间增加一个新的普通结点N,怎样把信息从N传播到最多的结点,同时保证N不被捕食?

看到Running Sandwitch的”P2P是人民战争的汪洋大海——知识流通原则(二)“,写的很好,这里指出一个P2P作为传播渠道的缺陷:

信息的真实性.

目前我们看到的成功P2P应用都是针对媒体信息(audio, video)的.这个现状的原因除了媒体文件体积大,对带宽的占用多以外,我看还有一个原因,就是媒体文件不易被伪造:如果你去下载”壮志凌云”,结果弄来一个”反斗神鹰”,那么你一眼就看穿了.

但是如果用P2P来传播文字信息,比如说blog,这个问题就致命了.我从一个不信任的人那里下载一段声称是keso的blog,我怎么知道这是keso@donews.com写的?这个人民战争的汪洋大海里,有人民,也有隐藏的敌人.

我在"Keso,我有个问题:为什么我们一定需要网站?"里说过,集中式的网站虽然有诸多不好,但至少能为我们提供身份确认.如果要把星形的发布结构改变为网状的分布式发布,那么身份确认也要改变为分布式的,否则在集中的身份确认点不能使用的时候(软/硬件故障,被攻击),身份确认无法进行,则分布的发布系统如P2P就可以很容易的被蓄意制造的假内容污染.用户被骗一次以后,这个发布系统就不再可信.

目前知道的可靠分布式身份确认机制是public key / private key加密.说它可靠,是因为对用户的计算能力要求低,但是对攻击者(通常拥有比普通用户强大得多的计算资源),要求则是很高的(只有中国彩票算法才有可能).