Thursday, March 17, 2011

“懒人”的革命

当慢吞吞的程序不断折磨着你的耐性,当为了找个文件用鼠标不断的点击
你是不是已经发现,计算机的处理能力发展越来越快,自己的工作效率却越来越难提高。如果你已经意识到了这点,那么恭喜你,在可能是人类历史上最大的一次革命来临之前,你已经提前窥见了依稀的曙光。
几十年来,我们始终把目光聚焦到计算机所谓的性能指标上——CPU、存储、带宽……
现在的个人计算 机的性能可以超过数十年前的巨型机,然而,那个时代的机器就已经可以让阿波罗号飞船成功登月,你的计算机理论上甚至能完美的再次模拟这个过程。那么,为什 么我们用它做日常办公用的时候,常常会被它折磨的大喊“不爽”or“郁闷”?到底影响我们日常应用计算机效率的瓶颈在什么地方?是我的操作不够快么?
好 吧,如果你足够幸运,身边有几个真正的IT牛人,你会知道,他们平时只用黑乎乎的字符界面【注1】,他们流畅的敲击着键盘,一串串劈里啪啦的指令不停的发 送到终端,他们从来不碰鼠标,甚至就没有鼠标。再如果你有幸跟他们交流,你惊奇的发现你干了一周的活,他们一天时间就轻松搞定了,于此同时他们还顺手创造 出了大量的脚本,以便下一次干类似的活的时候只用半天甚至短短几个小时。运指如飞——发挥你跟计算机最高的交流速度,这就是现在计算机时代的最高境界。
放 到结绳记事时代,这些人必定是捆绳子最快的人。他们做事情的效率很高,不是一般人能比得上的,他们往往为周围的人所敬仰和器重。如果你是这样的人,千万不 要洋洋自得;如果你不是,你可能会想,如果自己也是这样的人该多好啊,然后如果你有足够的毅力你会去努力,在“衣带渐宽”后,可能自己也会成为让人羡慕的 一员。然后你期待自己会成为能在历史上占有一席之地的“人物”。
然而,很不幸,你的愿望可能不会实现。如果你没有仔细的去 读读历史,起码是科技进步史,那么记住我的这句话——“历史会留给试图改变的人们”。如果不是某个捆绳子很慢的人觉得捆绳子太麻烦,可能现在人类会进化出 4只手来;如果不是某个懒惰的小孩觉得计算太费事,我们现在压根都不会有计算机。
不要因为你的“懒惰”,因为你的不如人而郁闷了,你感觉到了“不足”,这是你可能成为改变历史的“牛人”的第一步,下一步就是“find it”,找出可以让自己继续“懒惰”下去的方法。
办公室里面的人们往往是很勤劳很勤劳的,我不止一次的见识到用“一指禅”神功耐心录入的人,我也不止一次碰见为了找个运行程序一层层点开七八层菜单的人,我更是不止一次的看到那么多新鲜年轻的面孔,他们抱着一堆堆“技巧”、“专家”字样的垃圾书津津有味的品读着。
以这样的方式,再高效的操作,实际的工作效率只能是个零头。
好吧,让我们尝试着改变一点,提高我们工作效率的数量级吧。
即 使你是windows的用户,仍然有一堆的小玩意可以让你的效率成倍的提高(包括launchy、hoekey、Gvim……),简单的try一下,你就 能体会到你以前过的是多么不能让人容忍的生活,简单的把它们分享给周围的人,你就能真正体会到一个高效的环境是多么的让人愉悦。
这个改变够大了么?它已经足够让你成为工作一族中的效率佼佼者,但是,它还不足以让你成为一场大革命的缔造者。
如 果你足够“懒惰”,想必会有这样的疑问,为什么不干脆抛弃慢腾腾的键盘和鼠标呢?为什么不直接用嘴巴告诉计算机:“帮我查查天安门到望京大厦的路线”,甚 至是“写一篇关于火星人古文明的论文”,再夸张一点,就像matrix里面的,直接用思维跟计算机进行交流(现在有做bci的,希望能早点实用起来)。那 样的交流效率已经不是今天可以想象的了。人的生命也会被延伸。。。
这个预言并不过早,我们已经处在了这场革命的开头,“懒人们”,为了捍卫“懒惰”,去开创崭新的时代吧!

【注1】如果因为这点,你得以的去show你windows(or vista)的桌面效果,你会后悔的,起了x开启效果后的ubuntu(其他的linux自然也可以装),已经可以跟mac媲美,更何况公认土土的windows
【注2】本文完成于2008年。

Internet: Clean Slate vs Evolution

互联网的clean slate (清白历史?) 和 evolution (演进)之争由来已久。
当今的互联网在设计之初并未考虑到后世会发展到如此大规模,有如此多的应用,占据人类社会如此重要的地位。即使是在现在和可以预见的未来,都很难再找出第二个事物来与之相提并论。随着技术的发展和规模的增加,互联网逐渐浮现出一些难以解决的问题,包括管理、分发、计费、扩展等等。
于是学术界提出了clean slate的想法,基本出发点是放弃原有的设计,去掉一切限制,重新设计架构。这些年也着实作出了不少的成果。另一方面的观点认为,我们应该采取逐步演化的方式,在原有架构上缝缝补补,慢慢改进。可以看出前者带有明显的理想主义色彩,属于学院派风格。后者则更为实用,属于工业界的观点。
其实,这两派观点的出现并非偶然。对于学术界来说,标准的思路是研究人员制定好标准,工程师来将它实现。而互联网从一开始就缺乏一个统一主导的管理者角色,是通过各种技术的竞争演变而来。因此,技术的实用性、代价和反应速度等都很关键。工业界并不在乎某个设计是否ugly,至少它能很快的工作起来,那么就有很大的几率被部署和推广。对于Clean Slate来说,需要花费太大的代价进行迁移。牵扯利益太多,几乎是不可能的,所以只能是作为学术界研讨的课题。
因此,从根本上说,现代互联网,是无统一管理(NGO)的产物,正因为它的发展太过迅速,来不及让人来思考或等待,还没有想好谁来管,它就已经开始运行了。但正如我此前的观点,产业的成熟必然催化垄断。在互联网产业,也已经隐隐有此兆头。学术界,甚至在工业界,技术、标准、监管都已经开始统一化、垄断化。未来的互联网很可能具有极强的管理性,到那时,Clean Slate或许将成为可行。

Thursday, March 10, 2011

互联网的社会史

今天跟朋友聊天,无意中说到互联网产业的发展历史,感觉跟人类社会的历史发展有颇多共同之处。
马克思所说的“生产力决定生产关系”,看起来很简单,却一语道破人类社会发展的根本规律。对于自然科学来说,能够看穿复杂的事物表面,准确把握内在规律,这绝对是大师级人物才能做到;而对更为复杂的社会科学做到这一点,古往今来,不过寥寥数人。马克思能被评为“千年思想家”这不是巧合,绝对是名副其实的。
借用这一观点,互联网产业的发展,根本上是由各个阶段的生产力水平——也即IT技术水平来决定的。
在最初的阶段(实验到DARPA时代,60年代及以前),网络规模小、链路带宽低、用途目的简单,正像是原始社会的部落制度。各个小网之间甚至网络内部联系都十分松散,应用是傻大粗的奔放模式,更多的是作为试验品,缺乏高级的应用。
第二个阶段(70年代~80年代)是TCP/IP的发展和成熟以及一些应用开始出现,包括telnet、UseNet、email等等。这些应用就好比是种植业的出现,使得互联网的实用性和效率都有了显著的提高。同时,互联网仍然是集中在少数国家,集中性相当明显。类似于奴隶制下的集中低效生产模式。
第三个阶段(80~2000年代)则是互联网的进一步普及,美洲、欧洲、亚洲不少大学和科研机构纷纷接入网络,网络规模进一步扩大,DNS出现,NSFnet建成,并由实验网转入商业运营。www协议的出现更是极大的促进了网络的普及。相关机构成立,互联网的管理由几大组织(IETF等)和几大运营商来负责。类似于封建制下严格的等级管理模式。
第四个阶段(2000年至今),互联网相关技术进一步成熟并趋向稳定,创新的大浪潮已经过去,难以出现革命性的变化,新出现的应用多是改进和扩展。云计算相关技术的发展让资源进一步集中,利益划分更为明确。物理链路牢牢掌握在各个政权手中,而垄断的运营商们之间相互竞争和合作,各国对网络上运行的数据信息监控力度加大,现有模式下有大的变化已经毫无可能,正是当今世界凑综复杂制衡格局的极好展现。
总体来说,互联网的出现,极大打破了传统行业中的层级和垄断模式,让无数“平民”等级可以凭借智慧和努力在产业链上分得一勺羹。但随着技术的提高以及网络应用的成熟,互联网的重要性对各个国家都不言而喻,相关的监控或管理力度必然会进一步加大。在互联网产业越来越成熟的今天,想要挤占一方市场将会越来越困难。

Thursday, February 24, 2011

如何让你的“水果”更值钱?

apple

有个很经典的营销学故事,具体细节已经不记得了,下面是我个人演绎的版本。

----------------------------------故事开始------------------------------------

说课堂上,大牌教授掏出一个普通的苹果,问大家,如何卖1块钱?10块钱呢?100块……甚至100万!

卖1块钱,很简单,洗得干干净净的摆在超市,自然会有人买。

10块钱?也不难,例如,我们可以做成水果拼盘或者榨成果汁,在餐厅里也会有人购买。

100块开始就有点难度了。同学们仍然纷纷提出各种主意,例如宣称“这是一个转基因苹果,营养十分的丰富”、“这个苹果曾被带到太空中中”、“这个苹果上有明星的签名”……

100万呢?热闹的课堂一下子鸦雀无声。这太疯狂了,一个本来只值1块钱的苹果,怎么能卖出100万倍呢?

教授等了几分钟后,还是没人回答。缓缓说道:“这是当年砸到牛顿的那个苹果,将由英国女王亲自主持拍卖,筹集到款项将用于拯救饥饿中的非洲儿童,拍到者将被授予爵士勋章……全球仅此一个,底价100万!”

一下子,课堂有热闹起来了,同学们纷纷嚷道“100万?太便宜了!起码能值1000万!”

----------------------------------故事结束------------------------------------

这个故事自然夸张荒诞,相信看到的同学都会一笑了之。然而,类似的故事却在每天不断上演。

几乎同样的配置,IBM当年ThinkPad系列的笔记本要比其他品牌的贵出30%,甚至更多。

凛冽的寒风中,长长的队伍,只是为了一款成本价只有售价1/N的手机;

普通域名注册一年仅需要十几块钱,而某域名去年年底被卖出1300万美金的天价;

就在几年前,一只明朝青花瓷瓶被拍出上亿元的天价;

房子、石油、黄金……

类似的事例在生活中几乎随处可见。

一般情况下,物品的价格由价值决定。那么,到底是什么造成了升值?是需求?是品牌?是炒作?还是大家真的都疯了?

在原始社会,人都是通过打猎为生,相互之间的交换基本上以成本(很大程度上是重量,体型大的动物不仅可以提供更多的热量,也往往意味着更多的平均捕获时间)作为唯一衡量标准。在吃饱饭是第一要务的情况下,几乎没有人愿意花费时间去做除了努力生存下去的其他事情,更没有可能有其他复杂的交易理念。

很快,随着生产力提高,社会分工自然出现,事情就变得有趣起来。一方面,个人不必再把大量事件花费在维持生存上,自然就有了更多更高的需求,例如吃饱了饭之余,还希望能吃点水果帮助消化;另一方面,同样的工种之间开始出现了竞争。同样都是种苹果的水果商,我家的苹果个大还好吃,大家就愿意拿出更多的钱来买(在这里,先不讨论充满了欺诈和无耻的西方金融骗局)。于是,第一个影响价格的重要因素就出现了,那就是质量。质量好的,就更值钱!

社会的发展是飞速的。人的需求发展也是飞速的。有聪明的人发现,把苹果轧成果汁更好喝,而且还省时省力。还有人发现,人们不但喜欢吃苹果,还希望有机会尝尝其他口味的水果,特别是比较少见的稀有的水果。聪明的水果商于是宣布,提供更高级的水果产品,不仅包括洗干净、包装好的完整水果,还提供水果汁、水果酱……等一系列产品。并且,为了满足大家的口味需求,还将从遥远的国度运来大家从未听说过的水果品种,购买者还能得到去皮去核的服务。当然,这个价格嘛,要适当的涨涨。对此,大家也都选择了接受。虽然不喜欢花钱,但为了更好的服务享受,多花点钱也是值得的。因此,服务可以提升价格

交通的发展极大促进了商业的发展。聪明的水果商人们发现不同地区的人们对于水果的需求是不同的,愿意为之掏的钱也是不一样的。为了赚到更多的钱,我们不能光呆在一个地方。水果商们唱着小曲开开心心地四处拓宽市场。一个新的问题出现了。到了一个新的地方,水果商需要付出大量时间和代价让人们认识自己的产品。但过些年再回来,可能新的人们就不知道自己了。反反复复,水果商伤透了脑筋。于是有聪明人想出了个点子,我们每家水果商都起个代号吧。毕竟,人们记住代号要比记住水果商本身简单一些。于是,品牌出现了。优秀水果商的品牌被人们牢记,并被四处宣传,他们的水果也就容易卖出。新出现的水果商要想卖出水果,需要花出更多的代价。于是,各个水果商为了提升自己的品牌影响力,纷纷使出各路神通,明星代言、慈善活动、各种广告……可见,品牌是提升价格的重要因素

人的欲望是没有限制的,商人赚取利润的天性也是没有极限的。大的水果生产商每天都在琢磨怎么才能赚取更多的钱。他们通过观察发现,小水果商因为成本有限,往往无力去运输极远地区的稀有水果。于是,大水果商决定联合起来,成立一个“保护稀有水果维持公平竞争联盟”。联盟内部成员统一运输和贩卖稀有水果,联盟外成员不允许贩卖,否则将被处以重罚。小水果商要想加入联盟,很简单,需要每年缴纳“会员费”。小水果商打掉牙往肚里咽,缴纳了会员费的拣点边缘利润,缴纳不起的只好宣布破产或转行了。到了这一步,大水果商终于可以高枕无忧了。实际上,垄断是自由定价的唯一先决

好了,分析到这里,已经可以回答大部分的问题了。IBM、Apple之类的大生产商,东西比别家贵,无他,质量、服务是很重要的因素,品牌跟垄断也是不可忽视的。同样的道理,其实也适用于各行各业。一般来说,质量是实在的,也是难以短期内体会或比较到的。形成垄断,对于普通企业来说,更是难以实现的。因此,服务跟品牌这两大虚拟价值,就成了信息时代里相互竞争十分关键的因素。而这两者的根本都在于用户体验。当我们点开一家公司的网页,惊奇地发现页面设计毫无美感,技术毫无规范(例如仅支持IE、gb2312编码等),我们就知道,这家公司其实并不在乎它的服务跟品牌,并不在乎它的用户(特别表现在用户体验);同样的,当我们拿到一个申请人的简历,发现布局混乱、信息极难获取的时候,我们也会不自觉的认为这个人不尊重这个申请,甚至将其直接忽略。如果你还有所怀疑的话,可以去留心成功企业的宣传和所作所为。

是的,这就是让水果增值的所有秘密。如果阅读后你觉得自己懂得了点什么,那么无论是不是一个企业家,每天睡觉前都可以尝试问问自己——

今天,你的水果更值钱了么?

NOX -- 现代网络操作系统

[注]本系列前面的三篇文章中,介绍了软件定义网络(SDN)的基本概念和相关平台。按照SDN的观点,网络的智能/管理实际上是通过控制器来实现的。本篇将介绍一个代表性的控制器实现——NOX。
现代大规模的网络环境十分复杂,给管理带来较大的难度。特别对于企业网络来说,管控需求繁多,应用、资源多样化,安全性、扩展性要求都特别高。因此,网络管理始终是研究的热点问题。

从操作系统到网络操作系统

早期的计算机程序开发者直接用机器语言编程。因为没有各种抽象的接口来管理底层的物理资源(内存、磁盘、通信),使得程序的开发、移植、调试等费时费力。而现代的操作系统提供更高的抽象层来管理底层的各种资源,极大的改善了软件程序开发的效率。
同样的情况出现在现代的网络管理中,管理者的各种操作需要跟底层的物理资源直接打交道。例如通过ACL规则来管理用户,需要获取用户的实际IP地址。更复杂的管理操作甚至需要管理者事先获取网络拓扑结构、用户实际位置等。随着网络规模的增加和需求的提高,管理任务实际上变成巨大的挑战。
而NOX则试图从建立网络操作系统的层面来改变这一困境。网络操作系统(Network Operating System)这个术语早已经被不少厂家提出,例如Cisco的IOS、Novell的NetWare等。这些操作系统实际上提供的是用户跟某些部件(例如交换机、路由器)的交互,因此称为交换机/路由器操作系统可能更贴切。而从整个网络的角度来看,网络操作系统应该是抽象网络中的各种资源,为网络管理提供易用的接口。

实现技术探讨

模型

NOX的模型主要包括两个部分。
一是集中的编程模型。开发者不需要关心网络的实际架构,在开发者看来整个网络就好像一台单独的机器一样,有统一的资源管理和接口。
二是抽象的开发模型。应用程序开发需要面向的是NOX提供的高层接口,而不是底层。例如,应用面向的是用户、机器名,但不面向IP地址、MAC地址等。

通用性

正如计算机操作系统本身并不实现复杂的各种软件功能,NOX本身并不完成对网络管理任务,而是通过在其上运行的各种“应用”(Application)来实现具体的管理任务。管理者和开发者可以专注到这些应用的开发上,而无需花费时间在对底层细节的分析上。为了实现这一目的,NOX需要提供尽可能通用(General)的接口,来满足各种不同的管理需求。

架构

组件

下图给出了使用NOX管理网络环境的主要组件。包括交换机和控制(服务)器(其上运行NOX和相应的多个管理应用,以及1个Network View),其中Network View提供了对网络物理资源的不同观测和抽象解析。注意到NOX通过对交换机操作来管理流量,因此,交换机需要支持相应的管理功能。此处采用支持OpenFlow的交换机。
nox

操作

流量经过交换机时,如果发现没有对应的匹配表项,则转发到运行NOX的控制器,NOX上的应用通过流量信息来建立Network View和决策流量的行为。同样的,NOX也可以控制哪些流量需要转发给控制器。

多粒度处理

NOX对网络中不同粒度的事件提供不同的处理。包括网包、网流和Network View等。

应用实现

NOX上的开发支持Python、C++语言,NOX核心架构跟关键部分都是使用C++实现以保证性能。代码可以从http://www.noxrepo.org获取,并遵循GPL许可。

系统库

提供基本的高效系统库,包括路由、包分类、标准的网络服务(DHCP、DNS)、协议过滤器等。

相关工作

NOX项目主页在http://noxrepo.org
类似的项目包括SANE、Ethane、Maestro、onix、difane等,有兴趣的同学可以进一步研究参考。