posts - 80,comments - 749,trackbacks - 2

http://sourceforge.net/community/cca09/nominate/?project_name=XMind&project_url=http://www.xmind.net/

支持XMind,支持国产开源软件!

开源软件的新丁,帮助我们在纷繁芜杂的状况下理清思路,发散思维,从而创造价值。她可以让你更快地完善商业计划、更有条理地进行信息管理、更有效率地进行知识管理。这就是XMind,一个利用计算机软件技术和全脑思维艺术将我们的大脑和思维带入一个更加积极、高效的可视化工具。

《电脑时空》杂志(2007年6月)在《让思考可视化》一文中所说:“随着思路的跳跃,以及思考的不断发散,XMIND让这一切都看得见 …… 同时XMIND的易用性是其最为突出的特点,中心主题确定思考的起始点,按回车键横向扩展思维分支,按TAB键则纵深拓展思维深度……”

XMind基于Eclipse RCP,并提供了数十个扩展点,为开发人员扩展功能、提升易用性提供了便利,也为其它类型的软件提供XMind已经很成熟的UI交互模式。

投票办法:
1)点击上面的链接
2)Category选择Best Visual Design
3)点击Category下面的小加号(Nominate for another category),然后选择Best Project for Academia
4)填入邮箱提交,并点击邮件中的链接

注意:每个邮箱每个项目每个category只能投一票。

谢谢大家!别忘了告诉你的朋友中支持开源软件的!

posted @ 2009-05-30 12:33 Brian Sun 阅读(3173) | 评论 (15)编辑 收藏
再谈谈Mozilla

最近看到Keso也在责备Mozilla中国。老实说,如果现在让我见宫力,我兴许也会有诘问的语气。我也看到很多网友说“如果Chrome支持插件,我就放弃Firefox,但是保留IE”。我想这里面还是有点误会的,所以写了这篇帖子。一会我会以简短的方式解释这两个问题:
1)有了Chrome,我们为什么还需要Firefox?
2)Firefox为什么有那么多插件?Chrome会有吗?

首先,请允许我简单说说历史。

[开源社群的中流砥柱]

1998年1月Netscape宣布将开源,组成一个叫做Mozilla的项目,并于3月31日交付给大众(public)。那个时候人们并不知道什么是开源软件。可以说Mozilla来到世上,首先带有着普及和推广开源运动的使命。这个使命它完成的非常好。今天有超过1/3的开源项目在使用Mozilla Public License(MPL)或MPL-like license,更有很多项目在双license中使用MPL作为最后的屏障。Mozilla的这一贡献在历史上恐怕只有GNU运动能与之媲美。

我常常跟别人说,做开源社群,Eclipse,Apache,Mozilla是三个榜样,做开源软件,MySQL,Ubuntu,Firefox是三个榜样。这其中只有Mozilla即做了开源社群的榜样,又做了开源软件的榜样。Mozilla为人类提供了软件开发的全新模式,它告诉人们4000人如何同时开发一款产品,这样的产品又与Eclipse,Apache,MySQL不同,后三者都是与开发人员或网站维护人员接触,如果有bug,面对的也是行家里手,Mozilla面对的每次都是最终客户,稳定和易用要重要的多的多。也就是在这样的情况下,Mozilla做了很多软件开发共性的事情,比如Cross Platform,其实你知道的很多著名软件都是用Mozilla Build编译的。另外,Bugzilla也是它的一项发明。

[2004年之前的窘境]

但是,千万别忘了,Netscape在开源时,它其实是个失败者。Microsoft IE以迅雷不及掩耳盗铃响叮当之势如破竹。。。席卷全球。Bill Gates还未动用6 billion备用金。我在以前的帖子里说过很多次,IE的成功不仅仅是商业战略的成功,也是技术的成功,我们今天看到的很多W3C标准(我是指标准中的一些条款)都可以上溯至IE3~IE6的某个版本最先引入。比如IE4就率先开始用CSS,而ActiveX则在各方面赢了Java Applet。Netscape呕心沥血创造的市场,已经属于别人了,谈笑间墙橹灰飞烟灭。

1999年,就在Mozilla开源一年后,Netscape卖给了AOL。2003年,Mozilla才成立Foundation,独立发展。2005年,我们才看到因为在Firefox的事情上挣到很多钱,为和Google签合同方便,Mozilla成立了今天的Mozilla公司,并将Mozilla.org和Mozilla.com分开。再往后才有了Mozilla中国也就是谋智网络。

在2004年之前的几年里,主流媒体很少有Mozilla的声音。我们当中的很多人都是在1998年之后才上的网,所以对Mozilla更没有感情了。记得1998年有一次去看一个电信展会,里面的互联网业务柜台有很多台式机都在跑Win95+Netscape,第二年再去同一个展会,全都是Win98+IE了。

这里还要说明,Netscape曾经是收费的,但是IE好像开始就是免费的。1997年我还见过PCMAG分发免费的IE光盘,因为Windows 95里并没有捆绑IE,所以要单独安装。Bill Gates已经开始扬言Windows/Office/Internet Explorer是微软的三大品牌。

[Firefox的追求]

不知道有没有人注意到,2008年Google推出Chrome时,Mozilla高层曾经出来说过一番话(请同志们帮忙找找原文),其中很重要的一点是,Mozilla希望其他桌面应用程序的开发人员,在开发非浏览功能的时候,也能leverage浏览器技术,这可能是Mozilla的追求和Chrome/Webkit完全不同的地方。

这就是我要揭示的,Firefox的由来。Firefox面世时,它与其它Mozilla-based的浏览器有两个大的不同,一是单一的浏览功能,那是因为Mozilla Suite(也就是现在的SeaMonkey)不仅仅包含浏览器,也包含邮件客户端、日历和一个HTML开发工具,大概相当于IE+Outlook+FrontPage。大部分用户不喜欢这种套装方式。二是Firefox是基于XUL的。XUL是一种用XML描述桌面应用程序界面的规范,当同Javascript同时使用时,它就有了快速开发的特点,对于需要很多web功能的应用非常适合。想象一下类似iTunes的应用,因为iTunes Store非常类似一个web app,而播放器又还是桌面的比较舒服,所以很适合leverage浏览器技术。呵呵,事实上这个例子已经是Mozilla非常自豪的一个案例了:Songbird。所以,XUL其实是一个超越了它所诞生的时代的技术。XUL本应该成为现在的XAML,Silverlight,Adobe AIR等的强大对手。但是,XUL发挥的能量并不少于Silverlight,因为它造就了Firefox的奇迹。

还不明白?正是因为有了XUL技术,Firefox才有那么多“插件”!!唉,非要我说的这么明白。

一次跟Apple朋友聊天,才意识到由于一个翻译误区,使得我们没能搞清楚插件和扩展的区别。我们平时经常用到的Flashgot,Adblock,DownThemAll,Firebug等,其实应该成为扩展(Extension),而Flash,Java,RealPlayer,Quicktime才应该成为插件(Plugin)。事实上,Firefox的“插件”一点也不比其它浏览器多,这些插件Safari全有。这些插件的开发考虑操作系统的差异大于跟浏览器的差异,(这是由于IE和Safari都实现了Netscape的接口),所以我猜想开发它们的Chrome版也并非难事。但Firefox“扩展”则是XUL带来的最大优势。

Firefox的红火使得Mozilla把一切可以利用的资源都利用了进去,进而把Thunderbird等分神的项目都赶走了,这当然是为了尽全力。然而,我真正担心的是,XUL在2009年之后还会成为克敌制胜的法宝吗?我猜不会。Chrome声称很快将支持Greasemonkey。这是否是在嘲笑Mozilla的追求?因为我们知道,Greasemonkey非常火,编写一个Greasemonkey的脚本,跟编写Firefox扩展能实现很多一样的功能,所不同的是javascript的编程技巧是web app开发人员的常识,而XUL毕竟还有一个学习曲线。另外Greasemonkey很快会被大部分浏览器支持,这也就意味着cross-browser。

[2008,第二次浏览器大战狼烟再起]

我多次强调过,不要小看第二次浏览器大战,不要对微软抱有任何幻想。IE的market share并不比道琼斯坚挺。但这并不表明Firefox是赢家。这是一场战争,谁胜谁负很难预料,不过我对未来的预期是多极化,就像智能手机市场,真的没有哪个公司能一统江山。浏览器也是多极化比较好,比如在Mac上,Firefox已经非常像Mac本地软件了,令人诧异的是Safari却越来越不像Apple公司的产品了,结果呢,还是喜欢Firefox的继续用Firefox,喜欢Safari的继续用Safari。

不过我还是希望HTML引擎减少至两个:Mozilla和Webkit。理由很简单,没有人需要重复发明轮子。面料很少革命,但时装千变万化。每个大公司都可能有一款自己logo的浏览器,但内核太专业了,所以不需要那么多。现在非Windows也非Linux的操作系统,有多少人在用呢?所以我一直建议IE转成Webkit内核,这对IE没有半点坏处。

为什么我总是支持Mozilla?你自己看看,Mozilla的对手哪一个是省油的灯?Microsoft,Apple,Google,全都是财富500强不用滚屏就能看到的!Mozilla与他们排在一起,并不表示一个小公司的自不量力,而是在昭示整个开源社群的生生不息。这个叫长尾,一般人很难理解啦,但学经济的多少都能领悟一点。千万不要以为Mozilla的成功来源于微软的IE太烂!!虽然很多中国人都是这样认为的。商业公司遇到的困难,Firefox没有,Firefox遇到的困难,商业公司没有。你今天看到的Firefox的缺点,最终都能改掉,因为有这么大的社群在支持,所以也没什么好担心的。我也支持人们用Mozilla为内核创造新的浏览器,比如Flock,还有Camino。

我为什么不太支持Chrome?也不是啦。Chrome刚出来我就发现很多想法不谋而合,爱不释手,为了用Chrome我甚至常常开虚拟机跑Windows就为了浏览。不过我确实为Chrome担心,生在豪门的痛苦不是我们能懂的。在Google Code上看看有多少好东西吧,它们都没多少经费也没多少人,跟创业的小公司没什么两样。就连Gmail也是凭呕心沥血数载创造的流量说话,才获得Google高层的真正重视的。除了流量大户,比如YouTube,其它的Google产品能不能过的了这场危机谁也不敢说。

我爱Mozilla,也不比任何人少。Mozilla的对手并非Google,而是大财团的游戏规则,Mozilla的机遇则是浏览器市场的多极化,和云计算时代的到来。


闲聊的泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])




posted @ 2009-03-25 18:48 Brian Sun 阅读(5204) | 评论 (14)编辑 收藏
开发人员为什么要支持非IE浏览器的四个故事

最近一不小心陷入了对第二次浏览器大战的深思,并参与了几次网上讨论。颇有心得,不知何处分享。下面要讲的四个故事,都是客户(或者你的雇主)对你我(这样的开发人员)讲的故事。来源于生活,高于生活。

1)
你受雇于Z商银行专业版开发团队,不久结识了负责专业版客服的漂亮MM。爱情的滋味让你忘记了工作的烦恼,但是你却清楚的记得那一天走进心仪MM的办公室,她的老板正在抱怨客户的投诉。原来很多江浙一带的有钱小老板,一直是Z商银行的忠实客户,可是人有钱就有了精神追求,他们这两年纷纷配备了Mac的本本,有白色的有银色的。。。明白了吧?!现在他们的钱都转存至浦东发展银行和深圳发展银行了。

数据显示,MacBook和MacBook Pro在中国的销量每年都在高速增长,这还没有统计从香港出货而最终用户是大陆人的数量。Mac上人们常用两个浏览器,Safari和Firefox,Safari非常酷,而且对标准的支持非常好,Firefox插件多,安全性好。最重要的是,如果你已经具有开发IE Web App的能力,那么就已经具备开发标准Web App的能力了。只要有心,万事不难。微软自己也不再喜欢ActiveX了,他们经常游说你们团队用Silverlight。这次,你的老板还会上当吗?千万别忘了,这还是微软的私有技术,即使他们承诺Silverlight将跨平台,你也会觉得难用无比,别忘了他们曾经做过让网页设计师谈虎色变的IE for Mac。

前事不忘后事之师。我们能有今天的幸福生活,一要感谢党,二要感谢开放的国际互联网。HTML5,CSS3,以及其它的W3C标准共同组成了我们通常所说的Open Web。很多人误解了,以为ActiveX是Web安全性的不二选择。其实安全性向来都是开放平台、开放架构、开放源代码远胜于专有平台、专有架构、专有技术。HTTPS已经非常安全了。选择Open Web之后的最重要工作,就是让每个程序员都有一颗安全性第一的心。

到了晚上,MM完全没有约会的心情了,她一个劲的问你,这两个银行很小啊,根本没有什么研发力量,为什么他们能做的事情,你们不能做?这怎么办?你又不能认错又不能让MM对公司失去信心,虽然她的信心已经失去了,虽然这根本不是你的错。憋了半天,你只能来一句:“他们不主流,我们不标准。”

2)
你大学毕业不到5年,与朋友一起创业做Web 2.0网站。专家给你们团队的建议是:用户第一,理念第二,技术第三。你非常赞同这一说法。作为主力开发,你非常希望产品能带给用户不一样的感觉,让用户在第一次就记住这个网站,而不是在浏览器还没有渲染完页面时就关闭页签。你非常羡慕Google的很多应用,简约而不简单,易用性强,速度快。

作为Web开发的老手(还不敢称专家),让我来给你一些建议。第一,你要坚持在团队中宣扬少用图片的口号。第二,使用更多的Ajax异步装载,不断提升性能,优化用户体验。第三,大量用客户的计算资源,(反正客户的资源丰富而且几乎无成本),减少服务器的压力。第四,宣扬瘦服务器的理念,因为公司小,业务变化很快,投入服务器的资源不容易变换,如果设计成瘦服务器,成本投在客户端,因为客户端环境单一,全部重来也没有多少成本,容易随需应变。好,我们首先假设这些建议你已经接受了。

接下来,5年从未遇到的问题来了。由于客户端代码越来越多,越来越复杂,影响了项目进度。老板开始质疑你的这种方式是否可取。再有,公司重金请人做网页设计,结果你总是提减少图片,设计师不悦,常常产生私人恩怨。更麻烦的是,连你自己都开始担心,因为前端代码常有bug,导致IE弹出对话框,打破了你一直的梦想。

好吧,既然你能看到这里,我打算教你点绝活。在IE中使用直角矩形,而在Firefox/Safari/Chrome中使用圆角矩形。如果你的设计师喜欢圆角矩形,就给他/她看Safari中的效果,设计师都喜欢Safari,如果他/她喜欢直角,就给看IE!因为在Firefox/Safari/Chrome中,圆角可以用CSS实现,完全没有贴图。这一招还要用在阴影上。我太太最近还在跟我炫耀她能用CSS3直接实现雕刻字体效果,不过也不是在IE中。至于Ajax等开发的复杂性,建议你常年使用jQuery和jQuery插件。这个系统的所有API都是跨浏览器的,零学习成本,会用Javascript就会用,零host成本,因为Google帮你host。这样你可以在Firefox上用Firebug开发,或者在Safari 4里开发(透露一下,Safari 4的调试功能真的超级棒),然后在IE上跑,没有任何问题。2008年年初的调查,jQuery市场占有率不足20%,年末已经过70%了,所以我常把2008年称为jQuery年,这是国际开发者社群的共同选择。

很多开发人员拒绝非IE浏览器,是因为他们害怕浏览器间的差异,带来开发成本,尤其是CSS上的差异很大。不过别忘了,资本主义世界只要有利润,人们就会勇往直前。那么多大公司(包括微软)都在奋发图强开发Web App,包括IBM的Lotus产品线,你遇到的难题,别人都遇到过。我们搞开发的就是要站在Google/IBM/Apple这些大公司的肩膀上。

在感受了一次成功的喜悦后,绝大部分开发人员还是会相信:支持非IE浏览器,俺,能跑!!

3)
你大学毕业就进入了一家大型软件公司工作,ERP/CRM是公司的主要产品线类型,工资和福利是你与同龄人相比的骄傲,虚荣心是你参加同学聚会的动力。不久你升任产品经理,前途似锦。但困扰你的是每次与客户面对面,客户都对你的个人魅力毫无兴趣,而是反反复复的提一个字:“省”!

你花了一个月的时间和客户吃住在一起,通过IT部门了解客户的IT支出到了哪里?尽管如此,客户还是希望你能够拿出一个方案让他们在2009~2010年经济危机的时候每年节省几百万。怎么办?把客户的员工裁了?还是把你裁了?减少买你们公司软件的支出?(这两年你们公司也不好过,这跟把你裁了是一样的。)还是减少。。。等等。。。硬件?对,硬件!

一方面,如果客户对新员工和需要更换的笔记本采用Netbook,就可以节约大量成本。另一方面,如果采用云计算的产品,可以把需要支出的服务器端软件改为租用方式,用浏览器访问。两个方面前后一致且顺理成章。Netbook之所以存在市场就是因为大量的软件应用由Web App取代。新员工只要有浏览器用就可以访问ERP/CRM这些你们公司的拳头产品。

好,于是你再次向客户提出了这10年来全球的IT大公司(除微软)不断向客户提出的建议:Linux。

今天就是尝试Linux的最佳时间。Dvorak,这位以批判大公司出名的IT评论家,现在建议每个人都要尝试一下Ubuntu。真的很好用。你可以不相信我但是不能不相信Dvorak,他从不盲目追随新技术,加上年龄的原因,他总是比我们这些年轻人对新事物更抵触。据说俄罗斯的国立中小学已经全部是Linux教学了。你心里的小算盘开始响了,如果每位员工减少本本方面的2000块支出,几百万不在话下。

如果被客户问及Ubuntu不好用怎么办?你嘴角微微一笑,没关系,反正客户大部分时间都只干三件事:聊天、看电影,用办公软件。这些都是Ubuntu的强项。聊天?QQ和MSN、Skype都支持。看电影,有跟暴风影音一样强的(还不止一个)。办公,OpenOffice存取MS Office格式照常使用。至于你的软件,早就Firefox罗。

怎么?客户还要培训?你挣钱的时候到了。Windows的钱都省了,出点服务费咋了?

4)
年过30的你急于在事业上攀到新的高峰,才能给妻子和正要上小学的孩子一个交代。天赐良机你被一个中型企业挖去做CTO,而你的老板,则是个精明的美国商人。(怎么听起来像小说《最后期限》?)为了拿到VC的钱,老板要求你夜以继日的扩大用户群。怎么办?八仙过海。

大量的软件公司正在尝试把他们最挣钱的产品移植到Web上。这种趋势从2004年就已经开始了。不过用户还是不太喜欢Web Service或者SaaS这样的技术术语,比较讨用户喜欢的概念是“云计算”。然而金融危机到来,VC变得非常谨慎,不见兔子不撒鹰,除了大规模用户数量的增长,其余免谈。在这个冬季临危受命的你,光靠国内市场是显然不够的。加上笃信《世界是平的》,你决定到全球市场去碰碰运气。无论你是否相信,只要支持中英两种文字,就支持了全球半数以上的网民。你六级不都过了吗,这有什么难的?

想象一下很多厂商靠iPhone和Android活着。如果让你选择一个作为平台,你愿意选哪一个?呵呵。你猜我选哪一个?Both!其实很多人不知道,如果做了iPhone的Web App就等于做了Android的Web App,他们是完全相同的浏览器内核Webkit。不相信?那你看看iPhone上的Gmail和Google Reader,是不是跟Android一模一样?以前是不是一直以为Google做了iPhone版?上当了,Google并未用Apple的风格,而是使用自己的风格,但是看起来易用性一点也不输给本地iPhone应用。更多的喜讯还在后面,Nokia S60也是Webkit,Blackberry上也有Webkit了,Gnome的缺省浏览器很快也是Webkit了。。。

所以,坚持所有Web产品都支持Safari/Chrome的开发团队,获得了史上从未有过的光荣。这不仅是来自VC的青睐,也是直接来自客户的认同,更是钱在向你招手。。。(抱歉我总是想着钱,可谁不是呢?)。。。

Firefox呢?也是不可多得的marketing阵地!因为Firefox插件多,而且非常容易开发。很多小公司靠这个活着呢。因为Firefox的用户基数大(比IE7大),所以一点细小的易用性改进都能吸引大量用户的眼球。这么多人痴迷与Facebook App和开心App,也是同一个道理。

所以,我们的口号是:支持非IE浏览器,他好,你也好!用户好,投资人好,老板好。大家好,才是真的好!(怎么样?被我雷死了吧。)

结语)

还是前面说的那句话,用户第一,理念第二,技术第三。不要为你的技术找借口。更好的为用户服务就是你的使命。在世界平坦化的今天,把国人的聪明才智展现于世界舞台就是你的机遇。努力的去做吧。正所谓你不下地狱谁下地狱!

欢迎大家续写这些故事和添加故事。谢谢!


不怕危机的泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])


posted @ 2009-03-22 20:25 Brian Sun 阅读(5449) | 评论 (9)编辑 收藏
本文是对这篇文章的回应:
http://www.cnbeta.com/articles/79869.htm
http://news.cnblogs.com/news/detail.aspx?id=45399

这位仁兄很有自知之明:)  但是我并不打算骂你,我打算跟你讲讲道理。

首先,在讲道理之前,我先要说明一个事实,Mozilla的前身是Netscape Navigator,人类第一个商业浏览器,即做了非常成功的产品又做了非常成功的创业企业。(我去年还在一本旧的San Francisco的画册中读到本市市民把Netscape,Apple和Intel看成本市的骄傲。)所以说IE的历史更长是不对的。

接下来我将揭示一直困扰你的问题:为什么你能接受GT轮胎和NOKIA的手机?OK。准备好了吗?

那是因为他们都支持标准!!!!!!

GT轮胎虽然没有你说的米其林、普利司通那么高贵,但是人家也兢兢业业的做事情; NOKIA的手机虽然已经做到全球第一,但是仍然坚持使用webkit作为浏览器,没有自己开发独立的标准。但是你再看看微软,只要这个世界上挣钱的IT活,他都想做。好吧,今天不是讨论这个的时候。你看看财富500强的企业有几个是这种文化的?有几个IT企业“坚决抵制开源软件”?有几个大老板不准自己孩子用竞争对手产品?

来个深的例子吧。不知道你有没有听说过双拼。智能ABC有双拼,微软拼音也有双拼,不过双拼用户大多数不用。因为双拼的标准并不统一,所以提供多个双拼表就变成一项标准,谷歌、搜狗、拼音加加、紫光都接受了,微软没有接受,所以几乎没人用。在人和机器相互适应的过程中,大家都要付出,大家都要前进,最后的结果是很微妙的。

还有一个问题也是你忽视的。你说用户买一台电脑回来就有了Windows,但是你没有计算那个用户因为使用Windows而花费的成本。(比如杀毒软件)。再比如全国的大中小学都在教Windows,这投入了大量的社会资源,并不是说不该投入,而是说如果资源被更趋于平均的投入Linux/Mac/Windows三个系统上,就会更合理的利用。这不是我编的,这是“边际效用递减原理”,经济学专业学生不知道这个连学位都没有。

很多企业主表示他们不再愿意为Windows付钱,所以他们想用Linux,但是一想到Firefox不能上招商银行,他们就犹豫了。这其实就是资源不能得到有效配置的表现。你说Firefox需要下载才能使用,这是一个缺点。但是为什么没有人认为QQ需要下载才能使用是一个缺点?原因很简单,Windows预装的聊天工具不能像QQ一样满足用户的要求。如果Windows中文版直接预装了QQ会怎样?如果Windows中文版直接预装迅雷呢?如果Windows在欧洲直接预装Firefox呢??哈哈,你我都知道这是不可能的啦。

比较合理的方案是,微软选择Webkit作为以后的IE内核,科斯的理论告诉我们,微软做浏览器内核是不合适的,浪费了大量的人力物力。如果IE用webkit仍然会保持现在的市场占有率,而相当程度上扩大了用户的利益,对IE这个品牌有百利而无一害。Google就是这样做的。Google也是大公司,市值和微软在同一个数量级上,如果Google自己做浏览器内核,也不一定比Webkit好。

我们正在步入一个云计算的时代(这一点Bill Gates和Steve Ballmer一百个同意),已经很多企业把大量应用放在web上。日本邮便局全部采用Salesforce,AMD也是。IBM和微软正在说服他们的客户。Sun称自己为云公司。《世界是平的》会告诉你其实很多上海的小老板在用云计算。唉,说这些太累了,其实我就是想说,那几秒钟对你可能不重要,但是对每天把工作放在Web上,回家还要看youtube和传flickr的人来说太重要了。没什么比这个更重要~~

所以,我可以负责任的回答你的文章里那个问题:“这个商品经济、市场经济的年代,当然是用户的需求说了算!!我们搞技术的,都很重视技术,也都很重视用户的需求。一定要坚持用户至上!!”而且我们技术人员用IE,也从来没有“不老实”!!

最后一点是夸微软,但不是现在的微软,而是2000年以前的微软。那时的微软充满了创新,充满了活力。其实我已经分析过很多次,IE在第一次浏览器大战中击败市场大头Netscape,一统天下有两个重要原因。一是Bill Gates说的一句话:“浏览器是操作系统不可分割的一部分。” 这句话就像“买鸦片是中国(清朝)人民的需要”一样无耻,但是确实是杰出的商业手段。二是IE确实在各个方面超过对手,尤其是技术。老一辈的网页设计师会告诉你,那个年代他们爱死IE了!技术问题我不想说,我们心里都清楚过去的8年中,IE是如何“发展”的。我想说任何人,哪怕是再大的公司,停滞不前8年还靠市场占有率说话,就是对资本主义与民主原则的践踏。

谦虚使人进步,骄傲使人落后。这是我中学时墙上贴的字中唯一记得的一句。我把这句话送给所有正在读这篇帖子的人。



==========================
Brian Sun
http://www.XMind.net/



posted @ 2009-03-21 21:47 Brian Sun 阅读(1265) | 评论 (0)编辑 收藏
XMind Ltd.
http://www.xmind.net/

创业软件公司,采用开源+商业软件模式,市场在欧美,产品XMind 2007/2008/3.0都颇受好评,是同类产品中的佼佼者。公司注册地在香港,工作在深圳市南山区。

要求:
1.有创业意识,积极融入创业团队。
2.喜欢小团队工作,有协作精神,有独当一面的能力和责任感。
3.学习能力强,喜欢接受新事物。
4.精通Java,热爱Java。懂设计模式,懂Eclipse。有Eclipse开发经验者优先考虑。
5.坚信世界是平的。
6.英语不要太差。

有意者直接回帖,或发送简历到hr@xmind.net

谢谢!


posted @ 2009-03-18 11:39 Brian Sun 阅读(1536) | 评论 (7)编辑 收藏
1.100%纯中文。
XMIND改变了中国人没有自己的思维导图工具的现状。国外的所有软件厂商都没有把中文版列为其发展方向之一,且在处理中文的过程中,几乎无一例外的存在Bug。使用MindManager一段时间之后的很多中国用户都发现一些Notes丢失了,一些中文变成了乱码。但XMIND没有,它是100%纯中文设计,中文处理非常稳定。以至于新加波的代理商都以“the best practice of using Chinese”为由代理XMIND。且XMIND的研发团队在国内,各类服务都比较方便。

2.适合中国人的思考方式。
XMIND不仅考虑了中文处理和中文界面,还更考虑了中国人的思维习惯。国内权威IT产品评测杂志《个人电脑》在2007年第5期中介绍了XMIND 2007,经过详细评测给出的评价之一就是“与国外的同类软件相比,XMIND2007更加符合我们的思维习惯。”

3.更易用,零学习曲线。
三个特性体现XMIND的易用性:

3.1 XMIND的过滤功能非常直观,用户可以通过图标将思维导图分成很多层,可单独查看其中的一层,是个人计划、项目管理等领域的法宝。

3.2 XMIND的图例功能非常有用,让用户再分享自己绘制的思维导图时可以方便的看到图上所用到的所有图标,以及图标的含义。有了此项功能,用户才愿意打印思维导图到纸上。

3.3 XMIND的外框功能与MindManager有很大分歧。后者认为外框的含义在于强调,所以一个外框只能加在一个分支上,但XMIND认为除了强调外,外框还应该能体现“弱分类”的功能,所以XMIND可以随意选择几个分支添加外框,相近的分支被安排在同一个外框中。

4.神奇的关联图与强大的工作簿。
XMIND允许用户将多张图放在同一个文件中,这种设计更类似于现实生活中的图纸与工作簿。用户将相同或相近主题下的图放在同一个文件中也便于与他人分享。

此外,同一个工作簿中的图可以具有一定的关联性,这是XMIND的独特创造。两张图中具备关联性的分支除了位置和关系不同外,文字和图标都是相同的。很多用户用关联图表达相同内容的不同分类法,也有很多用户用此来表达概述和详细内容之间的关系。

5.个性化窗口布局提高工作效率。
XMIND可以根据您的喜好随意改变窗体的布局,大小,层叠样式。在XMIND中可以拥有您自己的风格,将某些窗体拖拽到您认为最合适的位置和大小,或者选择打开某些窗体,关闭另一些。当您在工作簿页签栏上双击时,整个工作簿就会以最大化的样式呈现,再次双击又会回到原来的布局格式,改变灵活自如。这样,您的XMIND就可以在一台电脑上为不同个性,不同喜好的用户提供让大家都满意的布局格式和窗体效果,满足各类个性化需求,在符合各类人群使用习惯的基础上进一步提高效率。

6.兼容其它思维导图保护客户投资。
作为一款出色的思维导图软件,XMIND充分考虑到使用者已有的资源及习惯,方便的将其他格式的思维导图(如FreeMind格式和MindManager格式)导入成XMIND支持的.xmap格式,可以充分保护客户对XMIND的投资。一旦拥有XMIND,可以拥有多种思维导图软件带来的资源和信息,不必担心集成与兼容,更无需浪费时间重复劳动,给与客户极大的使用便利性。

7.降低客户的成本。
XMIND在海外市场和国内市场的零售价均不到MindManager的三分之一。提供整体解决方案的价格也远远低于MindManager。

XMIND官方网站:http://www.xmind.org/


posted @ 2007-05-21 10:08 Brian Sun 阅读(15480) | 评论 (9)编辑 收藏
很久没关心Eclipse基金会的动作了,只是不断在使用,不断在开发,不断在教别人使用和开发,然后就是等待Eclipse的下个版本。那么,Eclipse基金会究竟在干什么呢?我不想写篇很长的Blog了,只是随便谈谈最近的几个映像:

1。Eclipse 3.3
如果我的推算没有问题的话,今年的第三季度我们就可以拿到正式版的3.3了,3.3好像没有什么太大的动作了,我只记得3.2的时候搞了一个MDC(百万下载挑战),据说在预订一半多的时间里就实现了百万下载量。回头看看Firefox好像几乎没花什么精力下载量就达到千万级别了,不是一个类型的软件确实没法比啊。

看了3.3M6的一些表现,Forms包的外观有些改善,但是不知道有没有结构上的调整;Application扩展点的API改了很多,名字也比原来合理了,不过最近正在开发中的一些项目又要重构了,呵呵;最令人激动还是View终于可以折叠到一边了,而不是原来那样最小化了之后还占很多位置,而且最大化也更酷炫了,得益于View的新折叠方式。

2。越来越重视MacOSX
SWT 3.3的“New and Noteworthy”可以看到这个趋势。记得我去年与Sun公司的James Bai谈到Eclipse与NetBeans时,我就表达了自己的观点,好像Blog里面也有。事实上,“惯用法和外观”在MacOSX系统上的重要地位是没用过苹果电脑的人无法想象的,Eclipse在Windows确实很漂亮,但是之前的版本在MacOSX上还是远不如NetBeans的。我自己也遇到了这样的问题,我们在Windows上开发有“助记符”的问题,比如文件菜单,应该写成“文件(&F)”,这样F下面有条小横线,用户按Alt-F就可以直接打开文件菜单,但是在Mac上没有这样的设计,Eclipse展示出来仍然是这样,就显得有明显从Windows移植的痕迹。除了Mac的菜单外,Mac的窗体、Mac的工具栏、Mac的任务栏、Mac的快捷键都有很多与Windows不同的地方,Eclipse要加油了啊~~

回到说SWT,3.3在MacOSX上有了不少改善,增加了TrayItem,增加了彩色鼠标指针,还改了一个reparent的bug。

3。Ajax是大方向
前段时间炒作了一条新闻,说Eclipse基金会同时发布了三款用于Ajax开发的插件,这个说法是欠妥的。因为这三个项目都是很久以前就有的,现在把他们拿到一起来说,根本原因就是为了回应现在炒作很凶的Ajax。其中“Dynamic Languages Toolkit”没什么稀奇的,NetBeans也已经做了,但我相信Eclipse在易用性方面一定又是做到最好;“Ajax Toolkit Framework”也就是ATF是三者中最红的,现在要合并进WTP了,是为Dojo、Rico、Zimbra这些API的开发人员提供集成,套用行话说,就是“Ajax开发人员终于有了自己的IDE了(欢呼+大笑)”;唯独只有“Rich Ajax Platform”(RAP)最值得一提。

这是一个与众不同的项目,非常具有前瞻性和远见性,这也是Eclipse一贯的做事风格。RAP的缩写是来自于RCP的,RCP已经家喻户晓了,很多知名项目比如Lotus Notes 8和RSSOwl都是基于RCP的,RCP的程序员也很多,“如遇危难,RCP可以将兵!”但是面对Ajax一夜来袭,很多Rich Client应用程序开始希望自己能够搬到Web上去的,可是怎么搬呢?把Java代码翻译成javascript吗?我们都知道真正伟大的程序员都是在Java平台上的,而Java程序员大都不喜欢javascript这样高效但不严谨的风格,尤其是不好调试这一项,使得javascript项目的成本随规模成几何级数递增,这种事情放在Google这样钱花不掉的公司身上还行,但是要放在小公司上就捉襟见肘了。

所以行业内的专家经过这几年的反复斟酌,得到的结论是,终极的解决方案还是要让程序员手写Java代码,出来的却是javascript效果。那如何实现这样的转变了,有两个方案。一是写一个编译器,首先给出一个限定的Java API库,只有utils包、io包、lang包的少数功能和标准控件,最好是SWT式的,大家都很习惯了,如果程序员仅用这些API(和自己编写的API)写代码,就可以被这个编译器丝毫不差的编译成javascript代码,在本地执行和在Web上执行达到相同的效果,这样完全可以调试,也可以扩展这些API。这种解决方案以Google的GWT为代表。二是写一个服务器,这样就可以用全套的Java API,但是不能用AWT和Swing,再给出一组标准控件,(最好是SWT式的,大家都很习惯了),程序员所写的Java代码其实是在服务器上运行的,服务器根据这段代码的操作,把相应的结果反馈给Client端也就是浏览器,而浏览器以javascript的方式展现和接收事件。这种解决方案的代表,就是RAP。

还要说的一点就是后者其实有个帮手,也算很多Ajax网站的诀窍,就是JSON。JSON是把一个Map(名值对组)序列化成XML的工具,如果这样解释好像没什么新奇的。。。那么好,应广大JSON粉丝的强烈要求,我把JSON的解释改成:“JSON就是一个你在服务器端把JavaObject给它,就能在浏览器端取出一个javascript object的神奇而又强大的工具,而它的实现机制,只不过是把一个Map序列化成XML”!

这两个方案有明显的差别,可以说根本不是一种技术,但是他们很可能都有前途,都是王者之道,一个齐桓公一个晋文公,都有机会成为霸主,也完全有可能鼎足而立,开发人员选择谁,完全是根据项目的情况,甚至有可能。。。开发一个联合的方案。。。把GWT封装成一个Eclipse RAP的插件。

4。看看Summer Of Code
不小心点进了Google的Summer Of Code,之前就已经关注过一些,但是好奇心还没有驱使我点Eclipse Foundation进去看,今天终于按奈不住了。。。先简单介绍一下Google SoC[http://code.google.com/soc/],其实是这样的,很多开源软件基金会想花钱请一些比较牛的大学生来开发一些代码(这些都是最著名的开源软件,也是最肥的),但是不知道去哪里找大学生。Google的影响力比较大,所以就挑了个头,先把这些开源项目的ideas登上去,让学生们挑,学生再把自己的简历投给Google,Google安排一个统一的时间由开源组织去选,选中的学生由Google撮合双方见面或不见面开发,主要是利用了学生在暑期的80天空闲时间,然后老板把钱付给Google,Google付给学生,中间40天的时候Google还要搞个“期中考试”。。。看了一下Eclipse的ideas,挺惊讶的,虽说这不是Eclipse项目发展的主流,但是也从一定程度上显示了Eclipse的不小野心。

其中我最感兴趣的是“Eclipse Open Office Integration”,它旨在把OpenOffice.org的组件嵌入到Eclipse的编辑器中去,而在此之前,Eclipse已能方便的嵌入Microsoft Office的组件了(得益于ActiveX)。这样的功能如果能实现,对我们平时的开发也是很有好处的。另一个我感兴趣的就是“Eclipse install based manager”,现在的RCP没有自己的安装程序,只是在Eclipse的帮助文档中有一篇制作RCP Install的指南,但这是远远不够的,我花在做安装程序上的时间太多了,不值得,因为这些都是共性的工作。除此之外,我还对“RCP real-time collaboration based upon ECF and Google Talk XMPP-based messaging service”感兴趣,如果Eclipse不做,我们也要做这样的功能。最后要提到的一个好玩的功能就是“NetBeans in Eclipse”,两种插件接口对Java阵营还是不利的,如果我为NetBeans编写的插件能够跑在Eclipse上的话,那NetBeans的新特性就会都变成Eclipse的新特性了(够自私了吧!)

5。RCP仍是无冕之王
Eclipse官网的黄金位置还是留给了RCP,RCP在全球还是有大量忠实粉丝的。不久前发现汇丰银行某个分行的CRM系统是基于RCP的(客户端),不久前又发现英国一个咨询公司专门提供RCP开发的咨询业务,不久前IBM正式进入公测阶段的Lotus Notes 8/Hannover也是基于RCP的,只是为了外观重写了Workbench,不久前。。。被人发现我们的软件也是基于RCP的,而且随时提供RCP方面的咨询和培训。

6。跟Mozilla结个亲家吧
忘了提Eclipse 3.3的又一大特性了,叫做“Moziila Everywhere”,是指在任何平台上都可以创建一个Browser控件但是使用Mozilla内核(及时该平台上没有安装Firefox)。这是怎么实现的呢?其实很简单,它要求你必须安装一个xulrunner,后者是Mozilla的全部内核,包括Gecko布局引擎、Javascript解析引擎、XUL解析引擎和XPCOM,其中每样东西都足够写一本书,有了这些,仅用XUL+Javascript就可以写出一个Firefox来,Eclipse洽是利用了这个特性,用Java连接XPCOM所以创建了一个Mozilla的Browser,但是没有任何行为,包括右键菜单。

这个Browser控件和缺省的Browser控件是不一样的,我们平时见到的缺省Browser控件,在Windows上用的是IE内核,在MacOSX上用的是Safari,在Linux上。。。不知道,所以它是最最简单的浏览器,不具备任何可以定制的功能,除了显示一张HTML页面外,没有任何用处。(你该不会想用Eclipse写一个傲游出来吧)

但是Mozilla内核的浏览器控件就不同了,它意味着如果程序员平时为Firefox写插件的形式,也可以被应用到RCP应用程序上来,设想一下我们拥有一个RCP+xulrunner的平台吧,RCP接收Java扩展,xulrunner接收xul和javascript扩展,那我们的平台——要么叫Fireclipse,要么叫Eclifox——就所向披靡了。即使不利用它的可扩展性,单单就是能保证在不同平台上提供对Web应用程序的一致性展现一条,就足够臭美的了,更可以用写Eclipse插件的形式来限定浏览器的行为。。。。。。唉,刚才是不是说过一个NetBeans in Eclipse啊?把那玩意扔了吧~~

总结。

活活,还真是好久没有写Blog了呢。本来只想谈谈Eclipse基金会的,没想到越说越多,连MacOSX、JSON、Google、Mozilla都说了个遍,是不是说了你的偶像什么坏话,我常干这种事,直接跟我联系吧,我愿意分享我的一切感受和看法。忙了,再聊!

下一个大泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])

posted @ 2007-04-18 18:53 Brian Sun 阅读(5163) | 评论 (18)编辑 收藏
人们常说,人类发明的任何一样东西,都是对人类的一种本能或功能的延伸。人类发明哈勃望远镜,是对人眼的延伸;人类发明手机/电话,是对人耳和嘴的延伸;人类发明汽车,是对人脚的功能的延伸;人类发明起重机,是对人手的功能的延伸;那。。。人类发明电脑呢?是对人脑的延伸吗?可是有谁敢说,电脑简化了我们的脑力工作了呢?

今天要和大家谈的是一种全新的办公方式和全新的思考理念。

在谈这些内容之前,我想先请大家回到自己的办公室,翻翻曾经用过的草稿纸,或看看会议室里的白板,还有书桌上的便签,似乎有点什么启示吗?有没有注意到我们平时——我是说我们每个人都一样——尤其是当我们大脑高速运转的时候,当我们思路如潮水般涌上心头的时候,当我们激动的想把一个好想法传达给别人的时候——呵呵,我们其实写不了几个字的。取而代之的是,我们画了一些图,仔细的看,会发现这些图其实是有共同点的,这就是平时所说的模式。当然,生活中充满学问只是缺乏一颗好问之心。我们平时都不会注意这些东西,很少有人专门去总结这些。也就是说,我们一直都在进行着一种“可视化思考”,你的大脑比你清楚。

可视化思考是一种全新的办公理念,可能你从来都没有听说过这种理念,但是,当你做事情的时候,你就会不自觉的在使用这种理念。但是,英国大脑协会主席托尼·巴赞就注意到了这一点,所以他提出了思维导图的概念。这是一个伟大的概念,他从理论上让人们进一步认识到大脑的使用有技巧可言。巴赞曾经见过一个朋友的女儿,她上课特别认真的记笔记,但是成绩就是提高不了(这个在中国太正常不过了),于是巴赞责备了小女孩记笔记太认真,让她放弃这个体面而整洁的习惯,改用随意乱画式,很快她就发现,听课更容易懂了、老师讲的更生动了、成绩上去了。这个原理很简单,因为节省下来的精力全部投入了“听课”上。

这是可视化思考的一个典型案例,他告诉我们少许技巧就可以让大脑放下负担,达到无限创意的状态。如果你现在已经意识到了可视化思考的力量,那么我们就正式开始研究了,我研究问题都是采用极其简单和有限的方法(因为智商比较低),这样正在读我文章的你也不用把思路绷的太紧,我们都放轻松点吧。我们只来看可视化思考的特征和模式。

前面那些图的主要标志就是关键字散落在纸面上(或白板上),这是第一个特点,关键字的最大功效在于组合,这个Google比我们理解的深刻,如果一个关键字能表达1分的力量,两个就能表达4分,这是一个3维的递增级数。

第二个特点是它们往往呈发散方式展开,这是人大脑的样子,树突的组织结构,人们常说真正的画家其实都是在画自己,大脑是真正的画家,所以他画出来的东西也是特别像自己。

第三个特点是关键字与关键字之间存在联系,表达联系的方式可能有很多种,但联系的实际种类却只有两种,一是类属关系(常常被称为父子关系),二是非类属关系(又是也叫弱关系)。不信你自己找找,除了父子关系和弱关系外,关键字还有哪些关系?

第四个特点就是你不自觉的就找到了三个帮手,他们分别是线条、形状和颜色。形状往往表达本体,线条往往表达联系。当然最后那个帮手不是随时都能跳出来帮你的,如果用软件就好办多了。所以很多培训师包括巴赞,都建议作为你的大脑的唯一仆人的你,应该为你的主人准备好几只彩色笔,这是激发潜意识与创造力的最低成本的手段了。

第五个特点,也就是我现在正在用的技巧——数字的技巧。你会发现你写出的关键字大多被在前面加上了一个数字,它们大多标识一种时间序、重要程度、优先级,或干脆就是简单枚举,仅作计数之用,更复杂的数字可能被用来表示精确时间和百分比。总之,这些数字是思考的魔法,它帮你立即理清思路。

无论如何,这五个特点都不是为了美观,它们都是可视化思考的工具。但最终,如果这些思维图要被别人分享时,你也可以添加图片和照片,让思维图看起来更像是一个成品,而不是半成品。“一个青年,畅想在艺术的海洋里,那些光影,那些线条。。。”

现在,我们已经从特征上分析,得出了什么是“可视化思考”。我们常常不自觉的就在用可视化思考的理念工作,但是我们只觉得自己在画图,这些图(可视化思考的成果)被我们称为思维图,大量的思维图如果不加整理就只是一个过程了,有心的秘书会把老板的这些思考过程装订成册,保存起来。你有这样的帮手吗?如果有,现在这些工作簿定是一笔宝贵的财富,把它们打开你就会从中找到一些模式,模式是固定不变的东西,但它没有形态,只有被总结和概括,还有名字。可视化思考也有模式,有些人把它总结了出来并取了名字,其中的一种普遍存在的模式被称为“思维导图”,它是360度发散结构的;另一种形似鱼骨头的被称为“鱼骨图”;一种2维的被称为“矩阵图”;其它的还有“组织结构图”、“树状图”等等。

等等,打住,不会觉得被我骗了吧,我可不是思维导图的推广员。我要说的不是大家来学习画这些图吧,这可不是学的,这不要学,你的大脑天生就会。人天生就会直立行走,但是狼孩就不会,因为他长期不用这项功能,就退化了。可怕啊。我们的大脑天生就会可视化思考,但是如果长期不用,就会不灵,人就会失去思考的勇气和激情,失去创意的源泉,失去创新的动力。所以你需要的不是学习,而是放松,放松你的大脑,让它呈现在beta波的状态(有点学术了啊),找回大脑的本能。“日画思维图300张,不辞长做地球人!”正如郑渊洁对孩子们说的:“去玩吧,今天别写作业”。

最后这个理论距离完备性还差最后一件事情,读者可能已经提出这个问题了。如果我长期使用可视化思考会培养良好思考的习惯吗?我不是脑科专家,不能给你标准的答案,但是我只相信爱因斯坦的一句话:“头脑一旦到达一个全新的层面,就再也不会回去了。”

但是,这一切美好的发现,都会因为我们的下一个发现而变得不美好起来。现在请打开您天天为伴的电脑,看看里面有多少思维图?答案很可能是:一张没有。回到我们在本文开头时的那个问题。电脑不是对人脑功能的延伸,因为它丝毫没能表达人脑的功能和意图。而电脑仅仅是对人脑思考的结果产生一个呈现和组织,Word/Powerpoint这两个办公最常用的软件,它们已经成为其它办公软件模仿的对象,但仍然只是线性的呈现文字。它们把办公的结果从纸张搬上了计算机屏幕,于是人们就从提笔忘字转而到了“打开Word忘字”,看着白白的屏幕,一句话也写不出来。友人说人类花了200年关闭你的大脑,而我说不是,人类只花了20年就做到了。人们仅有的办公软件已经足够“办公”使用了,人们不需要新的办公软件,而是需要新的“可视化思考”软件,需要软件来帮助人们理清思路——理清思路带来的价值是不言而喻的,进一步就是提高效率。

我想说我最近读了本书,是MIT媒体实验室主任写的《未完成的革命》。书上说汽车革命已经结束,它结束的标志就是我们随时可以为汽车加油和买新零件安装,这是因为汽车已经被标准化了,而计算机软件的革命尚未完成,它完成的标志一定也是这样,软件可以随时被扩展、购买零部件、和安装,这一切都只需要普通技能。我的观点是,软件的革命已经进行了至少20年,但它仍然才刚刚开始,它需要一个强有力的变革来将革命推向高潮,这个变革是对以往变革的延续,但却常常被人们认为是全新的力量。我想说,思维导图软件已经有了很多,MindManager和FreeMind是其中的佼佼者,但是它们太像了,是同一种软件,所以这场革命尚未结束,只有全新的产品的到来才能结束它,开启新的篇章,而这种产品,它将不再只是“思维导图”软件,而是“可视化思考”软件!

可视化思考的泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])
posted @ 2007-04-18 12:44 Brian Sun 阅读(4267) | 评论 (7)编辑 收藏

developerWorks里面一篇非常不错的文章,我在订阅邮件里发现的:

Java 专业人士必备的书籍和网站列表

摘要:

书籍

每个程序员都会有一些由于经常被当作专业资料参阅而磨坏的书。下列书籍应该是 Java 语言程序员的书架上必备的。书很贵,所以我有意将这份列表弄得很短,仅限于重要书籍。

Thinking in Java (Bruce Eckel)

Thinking in Java, 3rd edition (Bruce Eckel; Prentice Hall PTR,2002 年)
Java 编程思想:第3版 (陈昊鹏 等译; 机械工业出版社,2005 年)
Eckel 的书对于学习如何在 Java 语言环境中使用好面向对象技术极其实用。书中大量的代码样例解释了他所介绍的概念。文字出自一个并不认为 Java 技术总是正确答案的人,所以相当地实用。Eckel 具有多种语言的大量经验,还有用面向对象方式进行思考的扎实技能。本书将这些技能放到实用的 Java 语言环境中。他还在写一本新书,名为 Thinking in Enterprise Java

Effective Java (Joshua Bloch)

Effective Java: Programming Language Guide (Joshua Bloch; Addison-Wesley,2001 年)
Effective Java 中文版 (潘爱民 译; 机械工业出版社,2003 年)
本书是理解优秀 Java 程序设计原则的最佳书籍。大多数材料从其他的 “学习 Java ” 的书中根本找不到。例如,Bloch 书中关于覆盖 equals() 这一章是我读过的最好的参考资料之一。他也在书中包括了很实用的建议:用接口替代抽象类和灵活使用异常。Bloch 是 Sun 公司 Java 平台库的架构师,所以他透彻地了解这门语言。事实上,他编写了该语言中大量有用的库。本书必读!

。。。。。。

。。。。。。

。。。。。。

posted @ 2007-04-14 13:14 Brian Sun 阅读(4733) | 评论 (6)编辑 收藏
几乎每年在4月1日这一天都要提心吊胆,可能是因为自己比较笨,所以经常上当。

今年非常“幸运”,没有人骗我,当然也就没有被骗,可能是创业阶段每个人都很忙,没有心思玩这种游戏了,正准备写篇Blog庆祝一下,结果——今天是4月5日,直到今天才发现其实还是被骗了的,只不过直到今天才明白过来是被骗的。冤枉啊!

被Google骗了!2日早上(在Google看来是1日)早早来公司登上Gmail一看,居然出了Gmail Paper!居然说随时随地可以选几个邮件由Google打印出来寄送到你的手里!

地址在:http://mail.google.com/mail/help/paper/index.html
更详细的信息在:http://mail.google.com/mail/help/paper/more.html

当时的想法立即就是(现在把当时的想法一个一个倒出来,给大家看看笑料):

1。2004年4月1日Google推出了Gmail服务,G是Google的缩写,也标志该邮箱起始空间有1G之多。当时也被人们认为是愚人节的玩笑,结果是真的。第二年同一天Google声称Gmail已经变成2G了,结果也是真的,从那以后人们再也不敢小看Gmail,包括它的愚人节狂语。正是!正是这一想法!大意了!大意了。。。

2。与Yahoo和Windows Live的差异化竞争,目前已经迫在眉睫。事实上Gmail在欧美的市场占有率并没有我们想象的高,还远远在Windows Live/Hotmail和Yahoo Mail之后。在这个节骨眼上,Google作出什么出格的事情都是可能的。

3。几乎很少有商业用户通过Email寄送合同、遗嘱等法律文本,而企业的正式文件也很少有电邮版本,顶多也就是用电邮发送下载地址,Google作为开拓新业务的前兆,推出这样的服务是明智的,用户会觉得这是在帮客户解决问题,“我可能用不上,但我的客户兴许会用上!”

4。这样推理的话,这个服务应该是收费的吧。等等,我看到了一个more页面,里面有个类似FAQ的段落,第一个问题就是“免费”!

5。那就意味着应该有广告罗?等等,FAQ上的第二个问题说“没有广告”!

6。继续往FAQ下面看,居然还是可回收的纸张!如果邮件附件中有照片,居然还用照片打印纸打印!!页面上的几张图片也很迷惑人,有个年轻的“Google员工”在分发Gmail Paper,还有一个长得像联邦快递的大叔在递一个印有“Gmail Paper”的盒子。。。看来成本不低啊。。。那。。。那。。。那Google怎么挣钱啊?

7。冷静下来之后,突然想到前不久报出新闻说Google每年的现金流都花不掉,前年的累积到了去年,去年的又累积到了今年,所以导致股价下跌,如果从这个理论上讲,之前又有新闻说Google想在大城市铺上免费Wi-Fi的提案受阻,这样看来Google还是很急于把手上的钱花掉的。

8。再冷静的想想,当此项服务稳定下来之后,成本并不高。可能开始会有用户处于好奇,狂打了一些邮件,但实际上真正有用的企业文本和急用的商业信函应该是随要随打,不会借助Google的打印机。所以Google应该已经核算好了最后所需的成本。

9。可能暂时不会向中国用户提供此项服务,在国内Gmail Paper所需要的纸张成本、打印成本、快递成本都比较高。

10。综上所述,Google真TMD高明!总是想别人想不到的事情。

更令我受不了的是,这张网页上还贴出了一些试用用户的反馈意见,相当~逼真。而最令我受不了的是——我已经把Gmail Paper的消息向很多人宣讲过了,也就是说,他们都被我骗了,或间接被Google骗了~~



从这件事情中,我们也并不是没有学到东西。既然Google这样的大腕都开的起这样的玩笑,我们这样的小人物又为何总是出出小心,裹足不前。在这个世界,需要的不是稳重中的激情,而是激情中的稳重。我只相信四个字,志在必得。


(爬树的泡泡)


posted @ 2007-04-05 14:39 Brian Sun 阅读(2429) | 评论 (2)编辑 收藏

[什么是芒果软件?]
芒果软件,全称“北京市朝阳区芒果软件研究所”,是依法成立的民办科技类非企业法人。。。。。。

这个话怎么说的这么不顺啊,换种说法。芒果软件,是一群技术精英的名字,我们来自四面八方,为了一个共同的前途走到一起,开始了一款软件从创意、设计到开发、测试、上市、销售,以及未来将成为国产软件之骄傲的传奇之旅。。。。。。

我们所说的这段软件,就是XMIND!它是第一款可视化思维工具,也是目前市场上唯一的同类产品。登陆我们的网站可以看到它的介绍和截图:
http://www.mango-software.com/
以及免费下载beta版:
http://www.xmind.cn/

[什么是可视化思维工具?]
很多管理咨询公司和培训公司,以及很多中学和大学的教师,他们在传授一类方法,或开设一门课程,题目可能是“如何提高你的工作效率”。 这类课程80%的内容是很无聊的,学员也不太喜欢,但是有20%的内容是激动人心的。我们发现这激动人心的提高工作效率的方法就是用形象的思维工具帮助思 维。比如很多管理咨询公司和培训公司会开设名为“思维导图”的课程,课上要求学员们用纸和笔把自己脑海中随时冒出来的创意随时记录下来。

记录的方法是在纸的中央画一个椭圆,里面写上中心主题,从这里发散出去想,想到的内容标为分支主题,每个分支主题还可以再发散,字写在线上,线划到 哪儿都要多划一点,这样就促进了自己的思维,这种思维方式比写文章要快很多倍(如果你没试过是无法想象的快),很快你就写满了整张A3纸!

即为别人培训又会做软件的我们就想到用软件来实现这一切!因为软件绘制思维导图,可以大大提高绘图制品的价值,不仅可以自己看,还可以与别人分享, 最重要的是即使修改。如果在纸上绘制的时候把一个分支错误的连接在了另一个分支的后面,就无法修改了,如果是重要的图,就必须重新绘制,但是软件就不怕 了。另外,软件还可以排版,或者将某个思维导图导出成Word/Powerpoint的格式,再进一步利用,这就延长了办公软件的流程,从用户脑子里想的到纸上打印的完全的连接了起来。

作为补齐最后一公里的软件产品,可视化思维工具还是跟其它Office软件有很大的不同,首先,Word和Powerpoint几乎都是以线性的方式组织文字和内容的,这和人脑的结构有很大的不同,因为人类都是以发散的方式思 考问题的;其次,Word和Powerpoint在调整篇章结构上太繁琐也不直观,很多用户都反映,他们在写文章或制作幻灯片之前都先用XMIND列提 纲,以便于谋篇布局,然后再为每个分支填入内容,之后还可以持续优化篇章结构,完全确定了以后,再用XMIND导出成最终需要的格式,修改错别字和最后排 版。

除了绘制思维导图以外,XMIND还包含了很多其它符合人类基本思维方式的图形,我们将这类图形统称为“思维图”。XMIND提供了在线更新的功能,XMIND的用户还可以从芒果软件的网站上源源不断的下载更多的思维图的种类。当然,我们只作最重要的,适合大多数人的,具有个性化的图形还是要靠用户自己用XMIND丰富的个性定制功能自己设计,并提取模版,相互交流。

可视化思维工具的另一大类用途是与他人交流思想。我们有很多客户是大企业的销售经理,他们在向客户演示自己产品和服务的过程中引入了XMIND,并获得了很好的反馈效果。因为它的形状是最适合人脑思维的,所以能表达的信息也最多最精确,也最容易被别人接受。XMIND的图标库也为用户绘制的思维图提供了额外的亮点,图形+图标所具有的表达能力是非凡的。此外,咨询公司和培训公司还辅导学员们利用XMIND帮助记忆和会议记录。最后,XMIND可以将同一个主题的所有思维图整合在一个文件里,因为用户愿意将“晨会计划”、“晨会内容”、“参会人员”和“会议反馈”等主题放在一个文件里,便于发给自己的boss。

上面这些就是可视化思维工具的主要功能,了解一下XMIND 2007就会发现它的功能还远远不只这些。芒果软件的宗旨就是为广大用户提供最适合思维的软件,而XMIND的宗旨就是整理您的思维、发掘您的潜意识、激 活您的创意灵感,最后,帮助您绘制漂亮的图形。让Google去搜索网络吧,我们搜索的是您的大脑!

[谁将会是XMIND的用户?]
XMIND有两类大的用户群:

1。高层经理、白领精英、办公室一族、政府公务员
特征:每日工作用脑量很大,处在现代办公环境中,常常需要计划、决策、记录、创意、演示、与人交流等等,工作节奏很快,工作时间中使用电脑占一定比重。

2。中学生、大学生、中学教师、大学教授
特征:每日学习、工作用脑量很大,常常需要记录、总结、归纳、综合、交流等等,工作、学习繁忙,使用电脑占一定比重。

posted @ 2007-01-16 19:36 Brian Sun 阅读(6068) | 评论 (16)编辑 收藏
[名称和商标]

我们和芒果网不是一家,一个是“芒果软件”,一个是“芒果网”;一个是“Mango Software”,一个“MangoCity”,将来也不会有商标权力上的问题,请大家放心。我们的中文全称是“北京市朝阳区芒果软件研究所”,目前的项目研发代号是“Brainy”。

[不是汉化软件]

我们不是MindManager的汉化版本,也不是其它国外软件引入国内的成果。我们是完全自己开发拥有自主知识产权的软件产品。

说起MindManager,我们不得不说它是一个强大的竞争对手,它已经得到了我们全部的重视,芒果软件的战略层视MindManager犹如百事可乐看待可口可乐一样。我们的技术目标是比MindManager做的更专业,就芒果软件目前的实力来说,这个目标是可以实现的;我们的商业目标是首先在国内站稳脚跟,因为我们是国内第一家,同时在国际市场上分得MindManager的一杯羹,进而和它平起平坐,最后超过它的市场份额。但这个目标并不表明我们是先做国内市场后做国际市场的。

[15%的问题]

我们的推广材料上说“以15%的成本为用户提供15%的解决方案”,导致了很多不必要的误解。其实国内很多企业都宣称他们的解决方案是“100%的”、“完全的”或者“全套的”,我们从心底反对这种说法,这是在欺骗消费者,目前为止人类还没有一种软件能满足消费者的100%需求哪怕这种需求只是一个方面。(任何一款汽车也不行)。我们的产品是面向商业用户和教育用户的,拿前者来说,一个商业用户在办公的过程中需要一个软件来帮忙他整理思路,这是他完全可以使用Brainy,但很有可能并不仅仅使用Brainy,他用Brainy快速记录脑海中所想到的信息,用Quicktime录下自己的声音,再用Firefox通过Google搜索自己需要的图片,把图片加入到用Brainy绘制的思维导图上,再导出成Powerpoint文件,经过修改以后交给领导。

我们所说的15%成本,其实是在说为用户在思考问题的总成本降低了85%,很多企业在提高员工的办公效率方面投资不少,但收效甚微。而国外很多学者论证过,思维导图确实是符合人的思维模式一种图形,它的效果说是说不清的,用了才知道。此外还有一层含义,是说我们的产品在面市之后,价格会很便宜。

[“符合中国人思维”的问题]

很多朋友发来消息说他们期待我们能推出“符合中国人思维”的思维导图软件,我们非常感谢这些朋友的关注,但我认为这种说法不妥。首先我们要研究一下中国人和外国人的思维方式是否有不同?如果有,那么不同在哪里?我不想长篇大论,但我想说中国人和外国人思维方式的不同,是在于我们的文化,而不是我们大脑的结构。思议这种差异在我们的“芒果可视化思维工具”里是体现不出来的。

[“技术狂人”问题]

很多很热心的朋友担心我们作为一个企业的方向问题。事实上,我们不是由“技术狂人”组成的,(哈哈,大笑,作狂人状),我们是一些有想法有热情而又时刻叮嘱自己保持清醒的年轻人。作为我的Blog读者的你,应该清楚这一点。我们注重市场,我们是从去年上半年开始思考这个创业方案的,但是直到今年5月份才开始着手去做。在开始创业前的一年的时间里,我们都在思考,思考市场、思考客户、思考营销、思考人员管理、思考国外的软件行业、思考国内的同行、思考产品、思考渠道、思考销售模式、思考市场合作与活动,甚至思考定价和折扣!而后,我们决定去做!事实上,我们直到现在也不是很成熟,但是让我们成熟起来的唯一途径就是大胆去做,我们已经感觉比国内的很多同行都要成熟了。

在广泛的和朋友共享我们的创业思路的过程中,我发现了有趣的现象。当我和技术精英介绍我们项目时,他们往往担心这个东西做好了以后卖不出去,而丝毫不会担心这个产品能否面市;而当我和软件销售人员聊这个项目时,他们往往会担心这个东西做不出来,而丝毫不会担心做出来了以后能否卖的掉。这可能就是领域思维吧,当每个人谈及自己很擅长的领域时,都对我们赞不绝口,但也都表示,对他们不擅长的领域,十分担心(幸好情况不是反过来的)。我非常感谢这些朋友,也请你们相信,我们不会让你们失望!

[“盗版软件”问题]

国内软件行业的版权问题确实不容乐观,作为进入这个行业的创业者,我们丝毫不会粉饰太平,也不会掩饰我们对于这个问题的担心。事实上,我们要正视这个问题,盗版是个大问题。但是担心终究要转变成一个解决问题的思路,如果你不想转行的话。我们对待这个问题有一套完整的想法,那就是“战略上轻视它,战术上重视它”!什么?具体一点?那就请听我娓娓道来。

从战略上讲,盗版软件并不可怕,著名的Microsoft软件公司,盗版横行,据说,全中国只有3%的微软软件是正版的,但是微软公司在中国区的利润仍然很高,是全球利润最高的一个地区。国内的金山软件,其金山词霸和金山毒霸两大产品线都同时是盗版猖狂和利润丰厚的。

从战术上讲,微软和金山这样的产品型企业为什么会在盗版横行的今天才能挣到这么多钱呢?原因有三:其一是抓大客户,主动向大客户推销,并保证大客户不在使用盗版,多数大企业尤其是跨国企业是不愿意使用盗版软件的。有些中型企业如果已经在使用盗版了,那就说明他们需要我们的产品,再可以由销售人员以赠送培训或打折的形式将正版软件推销出去。如果对方仍然执意不听,那么就只能用律师函的形式警告之,综合起来,就是“以法律为依靠,以谈判为途径,以价格为手段”。

其二是技术反盗版,矢志不渝。上面所提到的这些手段,如果没有技术支撑就毫无疑义,你无法知道谁在用盗版,甚至给盗版软件提供正版的服务,这些没有技术上不断的进步是很有可能发生的,在这个方面,有很多做的很好的第三方技术可以被我所用,比如在线激活等等。

其三,是商业手段和技术手段的联合使用。比如正版软件带有大量的资源光盘,这使得盗版的产品体积非常大,不易传播,很多盗版商为解决这个问题会精简产品,这违背了很多用户的意愿,导致这些用户不得不去购买正版,金山词霸就是这个策略。再比如版本混淆,很多软件产品出很多版本,每年每个系列都再出一个,盗版商往往只盗版其中的一个版本,然后以欺骗用户的方式把这个版本以多个版本发放,这使得用户常常得不到自己想要的版本,只好购买。还有一个更高级的策略就是在线升级,因为不断的更新正版软件的鉴别方法,且在升级时必须检查软件的合法性,所以导致很多用户使用了盗版软件之后不能自动更新,杀毒软件厂商,多数都是这个办法。

[“通用软件和盒装软件”问题]

当我在网上公开这个想法时,很多朋友,甚至是软件界的朋友,表现出了他们对“通用软件和盒装软件”的前途的不信任感,他们认为这样的产品可能没有出路。很高兴这些朋友能够提醒我们这个问题。当我在思考该如何回答他们时,我发现可能由于一种“恨屋及乌”的作用,他们真正的想法并不是这样,而应该这样表述:“如果一种软件,仅仅通过零售渠道来销售,那么他们是没有前途的”。我非常及其已经特别的支持这种观点,因为通用和盒装软件的销售如果只有一种渠道的话,确实不太好做,况且现在个人软件零售市场还相当不健全。但是如果将它错误的表述为“通用和盒装软件没有前途”,那就大错特错了,纵观现在的软件界哪个领域不是通用软件在打头阵?哪个领域不是盒装软件的利润率最高?哪个财富500强企业不是通用和盒装软件的客户?不用说国外的微软国内的金山,单举数据库的例子就可以了,DB2主要的利润源是“通用数据库”而主要的竞争对手是Oracle的什么什么i和微软的SQL Server。


芒果软件的泡泡


posted @ 2006-09-24 11:27 Brian Sun 阅读(3236) | 评论 (3)编辑 收藏

很久没有写Blog了,与其找理由说“没时间”,不如老实交代说“没心情”,更不如发觉一下潜意识说“没感想”。

昨天晚上,温习了阔别很久的夜生活,和一个演艺圈的著名主持人,一个微软亚洲研究院的实习生。所以,我的感想,也分成两个截然不同的部分。

我不得不在彻夜长谈之后对微软亚洲研究院顶礼膜拜,即使是一个像我这样嘴上没德的评论者,也难以抵挡这种情感,就像学生总是对自己的老师心存敬畏一样,我为亚研院设在北京而感到脸上有光。但话也说回来了,这样的新认识并没有改变我们对于微软在走下坡路的判断,我们只是说亚研院不会跟随微软走下坡路,只要M$还有$就可以了。在“比尔一路走好”的情感和深思中,我们期待着微软能更多的更快的将亚研院的一些研究成果产品化,毕竟,用技术上的东西来改变人类的生活,这才是微软存在的唯一理由。而我们,又何尝不是呢。

尽管我们一个做研究一个产品,但还是有太多的话题可以聊,主持人对我们的行业很陌生,但是也喜欢看热闹。当她加入到我们的话题中来时,我们已经开始散扯了。在星巴克打烊之后,我们又一直坐到一家酒吧打烊,因为我们都很喜欢并擅长散扯,所以我们聊的很hi,但是到了最后10分钟,散扯的气氛陡然消失,从主持人的心底发出了几句肺腑之言。我立即被感动了,一种酸酸的东西涌上心头。我很真诚的望着她真诚的眼睛,晚上刚见面时想大声喊美女的心情已经渐渐的渐渐的转变成了另一句话,她还是我的初中同桌!虽然都出来混不久,但是平时的生活中已经很少再说肺腑之言了,假大空占领了我们的语言,做秀占领了我们的生活,我们必须带上面具,把从心底发出的呼唤封在咽喉。况且,她所处的环境和行业,比我们的压力要大的多。

我们都谈到自己是技术员工,连主持人也是,作为脑力民工的我们,更要用今天清醒的头脑来面对明天所可能发生的一切。你没有权力选择明天的命运,但是你可以选择今天的头脑。谢楠,作为粉丝,无论你走怎样的路线我都会支持你;但是作为同桌,我还是希望能成为一个散发知性光彩的女主持,可能是我只看CCTV2的缘故,我一直觉得这样的人才太少太少了,太需要太需要了,而偏综艺的主持人一抓一大把。

同样的忠告也给看我Blog的其它朋友,我相信我们中的多数都是脑力民工,把握自己唯一的、终身的、天赐的、永恒的权力——选择你的心态!

posted @ 2006-09-14 11:09 Brian Sun 阅读(1941) | 评论 (1)编辑 收藏

芒果软件实验室(Mango Software Labs)是国内首家从事可视化思维工具类软件开发的机构。我们由一群技术精英组成,致力于使用先进的软件技术帮助用户真正意义上提高生产率,以15%的成本为用户提供15%的解决方案。

芒果软件实验室正在研发中的项目Brainy(利用盛行于欧美,风靡于全球的思维导图理论)将会成为未来人类离之不得的全脑思维伴侣,它利用计算机软件技术和全脑思维艺术将人们的大脑和思维带入一个积极、高效的全新领域,Brainy将会在人们日常办公和生活中帮助用户增强记忆、规划写作、促进团队合作和内部沟通,在客户演示、会议记录、个人计划、项目管理、青少年教育等方面更是发挥着不可估量的作用。

Brainy不能取代任何Office 办公软件,却能和当前的Office紧密集成,成为办公软件生态环境中的一员,Brainy存在的目的是为了填补用户的大脑和办公软件制品之间的鸿沟。多数用户可以在五分钟之内上手,并在第一次试用之后就离之不得。尤其对于英文区国家的从小在这种氛围中长大的用户而言更是容易接受这种理念。也正因为如此,芒果软件实验室从成立之初就把国际市场当作最重要的市场来看待。

目前Brainy仍在开发阶段,芒果软件实验室需要有理想有抱负有能力有信心的“四有”技术骨干和创业精英的加盟。我们以Eclipse RCP为产品的运行平台,以测试驱动为产品的开发过程,以大量开放标准和开源软件为降低产品成本的有效手段,以全球第一的思维导图软件为产品的战略目标。

芒果软件实验室在技术上重视重构和复用,在经营上重视产品化和全球化,在管理上重视“团队综合能力”和敏捷开发,实验室还会定期聘请“武林高手”现身讲座,让每位员工每周都有培训的机会,每月都有培训别人的任务,定期参加Code Review,量身订做技术课程。

思想为箭,芒果做弓。一群充满激情和个性的年轻人正试图通过他们的努力去改变人们的思维方式,乃至改变整个世界。

加入我们,你一定会大开眼界!


公司主页:  http://www.mango-software.com

有意者请联系(邮件请包含个人简历):hr.mangosoft@gmail.com

(申请职位请注明信息来自BlogJava,将会得到更多的关注)

招聘职位1:
【软件设计师:RCP方向】

职位描述:
通过重用Eclipse组件搭建桌面应用程序,完成所有的设计要求,将产品的易用性提高到专业水准。全部代码使用Java5.0。(同时招全职/实习研究生)

职位要求:
1。精通Eclipse RCP,Eclipse插件开发,SWT/JFace架构。
2。精通设计模式,熟练使用重构优化软件设计。


招聘职位2:
【软件设计师:ODF方向】

职位描述:
担任Brainy的核心模型的主要开发工作、文件格式设计、导入导出等。全部代码使用Java5.0。(同时招全职/实习研究生)

职位要求:
1。了解ODF。
2。精通JCE者优先。
3。精通设计模式,熟练使用重构优化软件设计。
4。熟练使用Eclipse开发环境,了解测试驱动开发的开发流程。


招聘职位3:
【Java程序员】

职位描述:
担 任Brainy项目组的开发人员,从开发开始做起,逐渐参与设计、测试、需求等环节。全面认识并使用Java5.0、Eclipse3.2、 Graphical Editing Framework、Apache Ant、Jakarta Commons、iText、TrueZip、BouncyCastle等开发平台和编程环境。适合立志在软件行业发展的同学。(同时招全职/实习研究 生)

职位要求:
1。精通Java语言。
2。有绘图软件开发经验者优先。
3。有桌面应用程序开发经验者优先。
4。精通设计模式,熟练使用重构优化软件设计。
5。熟练使用Eclipse开发环境。
6。了解测试驱动开发的开发流程者优先。

 

posted @ 2006-09-09 12:34 Brian Sun 阅读(3926) | 评论 (8)编辑 收藏

北京,创业型软件公司,走商用化产品化路线,目前正致力于开发某商务软件套件,特别需要以下人才,有意者请联系:

Brian Sun
 briansun.vip@gmail.com
 13811410545

邮件请包含个人简历,欢迎暑期实习。

【软件设计师:UI方向】
兼职全职均可。
要求:
1。了解什么是轻量组件架构,熟练使用其中的一个(最好是Swing或Draw2D)。
2。精通GEF者优先。
3。了解基本的图形学算法。
4。精通设计模式,熟练使用重构优化软件设计。
工作简介:
使用Draw2D编写一个类似GEF的100%MVC架构,并用该架构编写并维护一个编辑器。全部代码使用Java5.0。
需要人数:2人

【软件设计师:RCP方向】

兼职全职均可。
要求:
1。精通Eclipse RCP,Eclipse插件开发,SWT/JFace架构。
2。精通设计模式,熟练使用重构优化软件设计。
工作简介:
通过重用Eclipse组件搭建桌面应用程序,完成所有的设计要求,将产品的易用性提高到专业水准。可能需要对插件进行分拆、替换或重写。全部代码使用Java5.0。
需要人数:2人

【软件工程师:Java方向】
兼职全职均可。
要求:
1。精通Java语言,具备一定的Java5.0知识。
2。精通设计模式,熟练使用重构优化软件设计。
3。熟练使用Eclipse开发环境,了解测试驱动开发的开发流程。
工作简介:
担任某桌面应用程序的主要开放工作。
需要人数:2人

posted @ 2006-08-01 16:55 Brian Sun 阅读(2555) | 评论 (7)编辑 收藏
我喜欢喝咖啡,但每周最多只能喝两杯,过量饮用总是导致身体不适,尤其是胃。一个医学界的朋友告诉我这是由于中国人的胃是为茶而进化的,西方人的胃是为咖啡而进化的,所以中国人不适合多喝咖啡。由于抱有个人感情色彩,我总是试图反对她的这种观点,但苦于没有合适的理由,最近,我终于想通了这个问题。中国人喝茶的历史不过几千年,在几千年的时间里迅速的进化一个器官,即使达尔文的进化论毫无毛病可挑,这也在数学概率上难以圆说。也许这个问题刚好相反,我的意思是,反过来想就对了。事实上,是中国人在几千年的茶叶种植中不断的精选和改良品种,使得茶叶总是在向味觉和营养两个方向上发展,是中国人创造了适合中国胃的茶叶。所以,进化了的是茶,而不是胃。

当然,这只是我的一个猜测,因为我不是医学工作者,也不是进化论专家,所以对这个问题没有发言权,而我想说的真正主体是:软件。

在过去的20年中,人们眼睁睁看着微软从一个小企业成长为软件帝国,很多人把这种变化归功于微软的商业技巧和蛮横的霸权主义,我对这一观点十分非常以及相当的赞同,但也该想清楚的是,全世界的人们不会在短短20年中进化到额头上有个“M”,就像老虎的额头上有个“王”一样。真实的情况应该是,忠实的用户调教出了微软,而不是微软培养了广大的用户群。成功的软件总是在人们心里最痒痒的地方狠狠挠了一下。

很多M打头的软件在易用性方面有太多值得我们学习的细节了,我们完全有理由比微软做的更好那是因为我们站在巨人的肩膀上。例如我非常喜欢的IE7,尽管它在很多方面仍然不如Firefox,但在其它一些方面却很快将成为标准,比如合并在一起的前进后退按钮,会不会又是一个进化的结果呢?又会不会对其它软件的Undo/Redo功能产生影响呢?

在软件开发领域亦是如此。比如很多软件都需要浏览的功能,其中多数软件会选择使用一个成熟的浏览器产品来达到这个功能,IE对大家说的一句话是:“请将我嵌入您的应用程序!”,而Firefox对大家说的一句话是:“请和我一起组建您的应用程序!”人们更容易接受哪一种呢?我们同样看到的是“为软件开发人员进化”和“让软件开发人员为我们进化”两种力量。

请将我所提及的观点同“面向”分开,我拒绝说“面向用户”,因为这会导致将责任推给用户。我建议很多软件企业(尤其是那些正在为自身软件的易用性发愁的企业——比如:用友)将内部宣传的口号改为“为用户进化”,因为这是一个动态的概念,区别于“面向用户”;也是一个自主的概念,区别于“用户驱动”。

也许全世界最应该得到我的这些建议的是Google。Google正企图从零开始创造另一个物种,也许我应该把它比喻成中式咖啡,在这个过程中,创新并不是最重要的,无论我们要谈论的是态度还是方法。要知道,用户一时的激情只能让你一夜暴富,却不能让你称王称帝。

posted @ 2006-08-01 16:16 Brian Sun 阅读(2146) | 评论 (4)编辑 收藏
先做一个过期的广告,前些日子有幸参加了世界可用性日(WUD)北京站的活动,这是世界可用性日的第一年,活动在多个国家同时举行,今年北京站的活动是一 次半讲座形式的聚会,来讲的除了主办方UIGarden的人外还有一些可用性行业里的著名人士。Windy没来是个遗憾,IBM的赵晨博士来了是个惊喜。 有些不足的是在下面聆听的很多人是学生,因此一互动起来,整个活动的基调就略微有些稚气了。

会上一个问题引发了很热烈的讨论,问题是这样的:

我们现在所能接触的多数ATM机,都是采用先吐钱后吐卡的工作流程(取款业务流程的后半部分),但是现在,全世界的ATM机正在经历一场变革,把这个顺序改为“先吐卡后吐钱”,理由是占信用卡丢失原因排行榜和丢失危害排行榜双第一的是“取款时忘了取卡”!

问题抛了出来,两方面的声音也同时响了起来。支持变革的一方把这个问题归结为国内多数ATM机的可用性问题太差,尤其是一些海龟们,认为这是不可理喻的事 情——全世界都在改为什么中国没有改。很多人认为“危害大”是一个很重要的原因,因为在后面排队的人可以不费吹灰之力取道前面那个人卡上的所有钱,如果不 幸的事发生的话。另一个理由是“拿到现金”应该标志着此类交易的完成,因此它应该是最后一个环节,在此之后应该没什么事轮到用户做了。

反对变革的人认为,为什么不会有人在取卡后忘了拿走现金呢,那样危害不也是很大吗?况且很多人已经习惯了这个顺序,如果突然发生改变,肯定会有人出错。这 些人通常认为,只要ATM机在吐钱后给出类似“请不要忘记信用卡”的视觉和听觉的双重提示就可以了,没必要为此而变化交易流程,后者对全社会的成本远远高 出了丢卡人的成本。

我个人在下面坐的时候,比较同意后者的观点,尤其同意“记得卡却忘了现金”的那种说法,但我有自己的原因。<<事务处理>>这门 学科不仅仅是为软件从业人员准备的,这门学科里有这么个概念就是“事务的原子性”问题,在用户的潜意识里,ATM机吐出现金和从信用卡上划走相同数量的金 额是同一件事情,同一个事务,因此应该是同时发生的事,吐钱了卡没划和划卡了没吐钱都是不可以被接受的事情。。。(阿,等等,前者好像可以被接受)。。。 先吐出卡往往给人的心理暗示是已经把钱划走了,接下来用户们担心的就是如果ATM机坏了不吐钱怎么办?!要知道机械设备的可信度要远远低于电子设备。

当然,我这么想并非不支持变化。作为软件从业人员,我相信变革以后的流程事实上比之前的流程安全性要高了很多。因为这给了ATM的软件以更多处理安全性的 机会,比如先通过卡号和密码获得本次交易的“凭证”,吐卡,然后凭该凭证向服务器端申请划走卡上的金额,这时,问题已经变为原来的交易流程了,ATM机只 要保证该凭证在服务器端的生效和ATM的吐钱在同一个事务内就ok了。

可用性泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])

posted @ 2005-11-18 09:37 Brian Sun 阅读(3206) | 评论 (22)编辑 收藏
这是一篇写给初学者看的文章。在前一段时间的招聘软件设计师的过程中,我对每一个看似初学者的人都会问这个问题,“您觉得平台相关性和平台无关性哪个更好 一些”,呵呵(偷笑),其实这是唬人的,多数回答者都会顺着出题者假装的思路回答“我个人认为平台无关性比较好”,可是只要有点软件设计经验或是对这个问 题有所思考的人都知道其实这个问题不只两个标准答案。

关于平台无关性,我不想说什么,说什么也没用。大量软件设计或软件架构以此来标榜自己的优秀和出众,其实这没什么,因为大部分平台无关性的工作不是由你来 做的。如果你正在写一个Java程序,并依照Sun的100% Pure Java的要求来做,那么应该就是平台无关的,如果你正在写一个Eclipse应用或直接用SWT/JFace组合来写应用程序,那么也是平台无关的,如 果你喜欢C/C++,并在用wxWidget写应用程序,那么也是平台无关的,如果你实在是很牛,在依照OSGi的规范写代码,那么ok,你的程序已经可 以从微设备到大型机统统可以用。

平台无关也是一个相对的概念,在多个操作系统上运行可以称为平台无关的,以往在多个不同品种的CPU上运行可以称为平台无关性,还有一件搞笑的事情,某个 公司出了一套系统,可以在Java和.NET两个平台上运行,但却只能依赖于Windows系统(因而只能依赖于x86芯片),居然还可以称平台无关性, 可见这个概念有多么混乱。我个人评价是不是平台无关的仅有一个标准,那就是——你有没有为平台无关做出贡献!如果你为了能在多个平台上跑出你的代码而做了 很多工作,那么你就可以称自己为平台无关的,而如果你仅仅依赖SWT工作,那就不能称自己为平台无关的。不过话又说回来,如果你把SWT包含在自己的软件 中,并为此出了该软件的多个版本(每个SWT的版本是一个发行包),那么你也可以称此为平台无关的,虽然这个贡献并非出自你手。

平台无关也不见得总是个优点,很多系统为了坚持平台无关而牺牲了很多特性,或不必要的提高了成本。比如前几年很多系统原意搞WEB界面,导致了很多易用性 方面的问题,Cooper说Web使人机交互技术倒退了10年,的确如此。我还读过一段源码,大概是一个单机版个人软件的源码,令人惊奇的是,该软件很 小,却把很多笔墨花在了业务对象和JDBC访问层之间的一个“抽象数据存储层”,理由是便于将来移至非JDBC平台,天哪!会有多少用户有机会使用不支持 JDBC的数据库??!!这种设计和下面一种设计是一样的效用:“为了让这段代码支持非OO语境,我决定整个软件只用一个类!”。这种追求可以用四个字来 表述就是:“过渡设计”或者“吃饱撑着”!

相反,这个世界上有80%的软件是平台相关的,这没什么不能理解的。就像“民主和专制的TCO哪个高”这个问题的答案一样,如果我现在要招聘的是部门经理 或副总裁,我很可能会问这个问题。事实上是,在整个人类的发展历程中,总成本最低(即总效率最高)的几个“社会时期”,几乎全是专制,但如果你不假思索,你的 答案一定是民主!当然,平台相关也是相对的概念。

说到这里,有兴趣的读者可能会说结合二者是最好的选择,我不喜欢这种说法,因为太辨证了,我喜欢的是首先考虑依赖于哪个框架,再找寻该框架的平台无关性, 如果没有必要,尽量不要为平台无关(实际上是一种优先级非常低的非功能性需求)做任何事情,但如果有必要且成本允许,再做少许考虑,最好还是能够重用开源 世界的产品。

仍以OSGi为例,这个例子很好,它对Java语言本身(还不是面向对象的公共语义)非常依赖,直接依赖至VM的spec,当然也写了些代码以避开 ClassLoader的个性,即使如此,OSGi事实上实现了从微设备到大型机全套支持,借助Java的平台无关性,既没有易用性、性能和成本方面的丝 毫损失,也为上层平台提供了平台无关的环境。同样,为Mac OSX设计的很多非常优秀的软件都没有考虑平台无关的问题,而是用在PC上再做一套的方式来解决,这些都是值得思考和借鉴的解决方案。

有点忙的泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])


posted @ 2005-11-17 09:19 Brian Sun 阅读(5698) | 评论 (10)编辑 收藏

重温2005年1月期的《个人电脑》,一篇文章引起了我的思考,这篇文章的思想是说虽然每种电子产品都努力成为未来时尚,但任何电子产品都不会成为 未来时尚,因为在它们被普及之前它们就已经被淘汰了。(我认为作者是这个意思,但如果不是,请原谅)。文章以iPod为例,iPod?我没用过,但是我身 边这位同事,正在使用。

事实上这个世界上所有绝对创新的产品——注意,是绝对创新——都是超前的,不易被人理解的,流行不流行都是它的表面现象,它的本质是颠覆了人们之前 的某种理念。历史证明这种创新很难成功,想要举出一个伟大的发明因不合时代要求而饱受磨难的例子非常容易,找个小学生就可以了;历史证明这种创新很难成 功,但iPod不是失败者中的一员;历史证明这种创新很难成功,除非。。。。。。

除非什么?先看看我常说到的三个例子。

iPod是人类历史上的一个歹怪的东西,它违反了人们之前对MP3播放器的要求,它既不轻也不小,没有击中人们对随身听的主流需求;但是iPod引 入了另一些优点。。。可以播放很久。。。你都不知道自己想听什么。。。华丽的外观。。。等等等等;事实是iPod取得了市场的胜利,传统MP3厂商推出了 大量模仿iPod的产品也丝毫未能撼动它的地位,iPod嘲笑别人“你们不了解客户的真正需求”,抨击iPod的人则说“iPod将用户导向了一个错误的 领域,用户是缺乏理性的,他们并不了解自己的需要”,这就像辩论赛的双方,正方说反方没有读懂辩题,反方则说正方在歪曲辩题。

另一个例子来自Google Talk,现在我已经基本离不开它了,虽然在几个月前我曾扬言“聊天工具我只要QQ”。Talk的出现来自对传统及时通讯工具(IM,Instant Message)和“因特网实时聊天”工具(IRC,Internet Realtime Chat)的反叛,这些工具经过近10年的发展已经越来越趋向复杂和娱乐化,互联网上随处可见“QQ大战MSN”之类的帖子,评价它们娱乐功能之间的差 异,但是Talk却以简洁的外观和几乎可以称为“功能不全”的软件设计杀入市场。与前一个例子相比,Talk并未取得什么可以称道的成功,但它的成功是必 然的,我有我的理由。

问题出在哪里?为什么会有些违反市场原理的所谓绝对的或彻底的创新取得胜利了呢?问题场出在我们的意识上。这就好比你遇到一位美女,你把她跟老婆做 了一个简单的比较后发现她比老婆更性感,但没有老婆可爱贤惠,这时美女向你表达了爱慕之心,怎么办?哈哈。我用脚趾头想一下也知道会有两种结果发生,一种 是在犹豫痛苦了很久之后终于还是回到老婆的怀抱,让美女失望即使她取得过短暂的成功,另一种可能是和老婆之间产生了越来越多的隔阂(不知道这些隔阂是从哪 来的)最后“不得不”分手,然后在痛苦了一小段时间之后又找到了新的归宿。而我要表达的观点是,这两种结果产生于两个不同的隐喻。在前一种情况里,美女向 你示意的结果是你认为她可以成为你的老婆,也就是说,她的目的是老婆,她的竞争对手是老婆,你必须在她和老婆之间作出选择。而在后一种情况里,她为自己设 定的隐喻是“情人”,她的目的是成为你生活中的另一个角色,因此你很快就接近了她并在不经意间帮助她取得了最后的胜利。

这个例子足够夸张了吧?再看看前面两个例子,开头那篇文章引起了我的注意,因为作者的观点是iPod的隐喻并不是一个MP3随身听,而是一个晶体管 收音机的替代品。(做惊讶状)试想人们为什么听收音机,是为了随时随地可以听到已经录制好了的节目,这些节目包括多数具有听觉享受的声音内容,并可以随意 切换,而现代收音机的缺点是这些节目不能随意组织,有时还会被地理位置影响收听品质。iPod没有地理位置的影响,节目可以随意组织,(也可以 Shuffle),更重要的是,现在的互联网和BT下载等技术已经可以很方便的找到所以你喜欢的节目,除非你喜欢某个电台的DJ,或者喜欢打热线电话参加 互动游戏,否则iPod都可以胜任。此外,我们应该对网上可以下载的声音内容越来越丰富充满信心,我之前的一个室友一直以听mp3的评书为杀时间的主要方 式。

我已经离不开Talk了,自从我跟一个武大的MM常用Talk聊天之后,现在跟老婆也总是用Talk聊天,Talk的好处是轻磅,速度快,窗口小, 不占空间(桌面空间和内存空间),没有乱七八糟的提示和广告。与Gmail良好集成,最近还发现它的一个好处是使用开放协议,所以在我刚买的iBook上 没有Talk我还可以用Google帐号跟Talk用户聊天(用iChat),这样又充分利用了iChat的优点。上次见到dudu(很久了)的时候还谈 起Talk,很多人认为Talk的优点在于跟Gmail的良好集成,这意味着Talk存在一个很有竞争力的隐喻:“能聊天的邮件提醒器”。如果你大部分的 网络生活都跟Gmail联系在一起,那你真的会离不开它。

隐喻的魅力是可以让一个不易被人理解的创意变得易于被人接受,不理解不要紧,感情上的接受是最重要的。事实上,隐喻并不是对事物表面现象的某个概括 或总结,而是对事物本质的歪曲的描述。虽然歪曲,但毕竟是体现本质的。不仅不同的隐喻可以导致不同的后果,同一个隐喻也可以导致不同的后果。最初老师在课 上讲“菜单”,很多学生都笑,“此菜单非彼菜单也”。Windows中提到的主菜单有很多,每个窗口都有一个,优点是菜单的内容与窗体(甚至窗体的内容) 相关,在同一个桌面上可以看到主菜单的比较,缺点是带来了大量的视线转移,且存在菜单被遮蔽的可能性。Mac系统上的主菜单是全局唯一的,随当前激活的窗 体的改变而改变,优点是为不会出现用户“找菜单”的局面,缺点了降低了菜单在应用程序功能中的地位,好在多数用户在从“初级”向“中级”的转变中,对菜单 的依赖越来越少,对快捷键(Mac上称“键盘迅捷”)的依赖越来越多。

泡泡很久不见

posted @ 2005-11-15 16:54 Brian Sun 阅读(2761) | 评论 (8)编辑 收藏

首先要做个广告,UMLChina(http://www.umlchina.com)是一家致力于在国内普及UML工具和方法学的一家网站,UMLChina目前已经举办过17期公开课,第17期于上周六周日在北京举行,主讲是国内第一批该领域的先行者潘加宇,熟悉<<程序员>>的朋友们应该非常熟悉这个名字。我有幸去听了这次公开课,虽然课程的内容多数对我来说是很熟的了,但是课程的形式上还是让我感受到了一丝震惊,我已经很久没有认真听过课了(大三的时候我喜欢学校里几个教管理学的教授,挺的很认真,此后就再也没认真听过课了),但是这次为期两天的课程还是给我感觉吸取了很多能量。作为一个学生的观点,我认为能吸引学生是合格的老师的第一道门槛;作为一个老师(我偶尔也走上讲台),我认为一节课能让学生领悟到一个或两个道理就已经很了不起了,而老潘就是这种讲师。(本条广告不收费)

第二件事还是做广告。在上课的空余时间里,我看了<<UML Distilled>>这本书,最新的版本是第三版,里面涵盖了UML 2.0的主要内容,Martin Fowler的书我全买了,也全看了,每一本都是经典,没有一句废话。可是令我有些不爽的是这本书的翻译。这本书的翻译者和本书第二版的翻译者是同一个人,可能这位翻译者在翻译上一个版本的时候UML界的一些术语的译法还没有统一,所以用的词和我们后来看到的多数关于UML的主流文档和书籍中不太一样,为个人阅读带来了一些不便,这一版他还沿用了上一版的译法,可能是译者很满意于自己以前的作品的缘故吧。(本条广告也不收Martin Fowler的钱了)

最后一件事是想讨论一下这本书里的一个译法:译者把所有的Use Case都翻译成了“用案”,而不是我们闭着眼睛也能说出来的“用例”。事实上China-pub上曾经还有翻译成“用况”的,并且讨论也十分激烈。关于这个词的翻译我想了很多,(没有利用上课的时间想,呵呵),最后我还是觉得可能“用案”更贴切一些。我的理由是这样的:case一词在国内用的最多的地方一般都翻译为“案例”,主要出现领域是管理咨询业和大学教育,所以为了保持其字面意思,还是翻译成“用例”或“用案”比较好,至于“用况”,不容易让人联想起Case来,要知道技术翻译最重要的一点就是“隐喻”,任何翻译都应该保证“Use Case”和“Test Case”在本质上是一种东西,二者的差别应该体现在用途和形式上。就像男人和女人的本质都是人一样。如果Test Case能翻译成“测况”的话,那我就实在佩服这位译者的想象力和勇气了,因为“测况”很容易让人联想起“测试实况”。接下来比较“案”和“例”,因为案有书面表示的意味,与公文打叫道的工作常常被称为“文案”;而“例”既有依据的意思,又有规定的含义。我认为使用“用例”一词的译者认为用例既是一种依据也是一种规定,所以应该用“例”。但事实上使用Use Case一词的老外也许并不是这种看法,他们可能既不是想要依据,也不是想要规定(Specification),而仅仅是想要一种结构化的文档,该文档以定义角色和封装角色的目标为表现手法,很好的为需求的描述和特征的枚举提供了。所以,“案”更能表示其英文原意。而Test Case则可以翻译成“测案”,如果不舒服,就叫“测试案例”好了。下面附上<<国际标准汉语大词典>>对这两个字的分别解释。


1.长形的桌子或架起来代替桌子用的长木板:~子。~板。书~。条~。拍~而起。
2.提出计划、方法和建议的文件或记录:档~。备~。议~。提~。方~。有~可查。~卷。~牍。
3.事件,特指涉及法律问题的事件:惨~。血~。~件。~例。~犯。破~。
4.古代有短脚盛食物的木托盘:举~齐眉(形容夫妻相敬)。


1.可以做依据的事物:~证。~题。举~。~句。~如。
2.规定:~外(不按规定的,和一般情况不同的)。体~。凡~。条~。破~。发凡起~。
3.按规定的,照成规进行的:~会。~假。~行公事。
4.调查或统计时指合于某种条件的具有代表性的事情:事~。病~。案~。

我本人英语水平很烂(不是谦虚),所以对于翻译也没什么发言权,更不想跟技术翻译精英们叫板,这篇随笔仅是随便聊聊,弥补一下中秋之夜没有写blog的憾事罢了。

posted @ 2005-09-19 14:37 Brian Sun 阅读(2818) | 评论 (7)编辑 收藏
南京有四家Starbucks,分别是东方商城店、大洋百货店、1912店和北极阁店。我在南京待了8个月,除了最后一家我没有去过外,其余全都去过。粗 略的估计一下,总共去过Starbucks不下40次,喝过店堂咖啡不下50杯,买咖啡豆3包,杯子两个,点心尝过不下10种(显然每种只吃过一枚),由 于南京Starbucks没什么特别的熟客,所以我这样的记录,已经可以排上TOP10了。

如果有人问我南京最让我感到舒服的地方在哪?那么我只能说,家、单位、Starbucks。所谓家,只是租的房子而已,不认识几个邻居,所谓单位,不过出 差办事而已,不认识几个同事,唯独Starbucks的服务员认识的多,比我的邻居和同事加起来还多。我觉得Starbucks“第三空间”的营销对我来 说最有效不过,事实上我把Starbucks当成一种寻找灵感的场所。对于学习来说公司太死板了,家里太安逸了,只有Starbucks可以读下有内涵的 书;对于工作来说公司不安静,家里没感觉,只有Starbucks可以想清楚平时想不清楚的问题;对于交友来说公司和家都不可能,只有Starbucks 最有品味。可以说我在南京除了在家、公司和在交通工具上的时间,剩下时间的80%都是在Starbucks渡过的,真的要走了,却难免有些舍不得。

但是,当要我评价南京这三家Starbucks所提供的服务时,我突然想不到什么褒奖的话了。我总是发现一些弄不明白的奇怪现象。

东方店是我第一次去的店,因为恰好在新街口的有力位置,标志又比较大,容易被发现,不好的一点就是店面太小,有些拥挤,来往的客人杂乱,三教九流什么都 有。更让我不明白的是,我第一次去的时候就和里面一个服务员谈的猛投机,把跟咖啡有关的一切都谈了,她还教会了我很多我不懂的东西,我买了一包豆子一个杯 子以表示感谢。奇怪的是从那以后我每次去她都不认识我,然后我每次去都要再跟她聊一遍之前聊过的东西,实在很搞笑,像遇到了某部电影中患有失忆症的女主 角。虽然她的态度依然跟第一次认识一样好,可这种事情我还是头一回遇到,实在不知道该怎么办才好。

后来我主要的去处就是1912店,这家店的优点就是人少,空旷,屋顶高,非常符合开放式办公场所的要求。我跟这里的每一个店员都很熟,跟店长也聊过一次。 我喜欢跟这里的人聊天,要知道,我通常是他们从开门的时候(上午11点)坐到晚上8点,如果没人聊天,仅仅是读书和写东西,那将是多么枯燥的一天啊。不知 道是不是不善于聊天的缘故,我发现她们在聊天时都不太放的开,其实她们的水平和内涵可能要高于她们给客人的感觉,她们中的一些给客人的感觉是平庸的南京女 孩,另一些把自己打扮的很时尚并更愿意跟老外聊天。我曾建议Starbucks为她们的店员加薪,以鼓励她们多读一些有内涵的杂志和了解一些重要的新闻便 于和客人交流。如果我是Starbucks的咨询服务供应商,我会建议她们在开下一个店时以更高的薪水聘用学历更高和更有品味的男性服务生,而且由于 Starbucks的定位是“第三空间”而不是“休闲场所”,所以服务生的性别和长相并不重要。其实1912店仅有一个服务员给我的影响最好,成熟中带有 一点理性,老成中带有一点随和,给人一种驾驭生活的自然感,可惜半个月前以薪水为主要理由离开了Starbucks,到附近一个地产商那里做物业去了。还 有一个叫Apple的女孩,看起来很像她的名字,很可爱也平易近人。

令我奇怪的还不是这些,我在最后一两个月里惊奇的发现,她们对我的态度正在逐渐下降。当我刚成为这里的“超级熟客”时,每一个人都对我非常好,只要有空就 会主动跟我讲话,跟我分享工作的心得。但是最后的一段时间里,因为我也不知道的原因,她们对我越来越冷淡,以前一些基本的要求比如加热已经冷了的咖啡也变 的吞吞吐吐一脸不情愿的感觉。当然,我的感觉也可能随心情而变得不太准确,因为我之前来的时候多数心情不太好,现在来的时候多数心情很好。但我也觉得可能 另有原因,或者是我的一些琐碎的小事做的不对导致的累积效果,比如下面一件事情。

不久前我在1912店居然认识了一个大洋店的服务员,当然她也是以顾客的身份来的,她跟本店的服务员都很熟,这使我忽视了她们存在略微的竞争关系,而后来 我们聊的很投机,我跟多数学管理出身的本科生都能聊的很投机。后来我去过一次大洋店,那是我去的唯一一次,那里的缺点是太吵,人很多,几乎可以跟KFC、 PizzaHut这样呼吸困难的场所媲美。后来我曾想把博客园的一次4人规模的聚会定在那里,可惜沙发已经被坐满了,我们被迫换了地方。

写到这里,我突然发现我对刚刚所说的问题其实没有发言权,因为我只是一个普通的顾客,没有投资经验,没有开店经验,也没有为这类企业做过咨询,也许她们有 着某些特殊的苦衷我不知道,如果本文对南京Starbucks有任何冒犯的地方,敬请原谅。如果再要我为Starbucks提一次建议,我可能不会再提起 任何与服务员有关的问题,我可能会说:“请让所有的Starbucks店面都通上Wi-Fi,谢谢。”
posted @ 2005-09-04 20:59 Brian Sun 阅读(4156) | 评论 (16)编辑 收藏
“居住在一个洞穴之中,有一条长长的甬道通向外面,它跟洞穴内部一样宽。他们从孩提时代就在这里,双腿和脖子皆被锁住,所以总是在同一地点。因为被锁住也 不能回头,只能看到眼前的事物。跟他们隔有一段距离的后上方,有一堆火在燃烧。在火和囚徒之间,有一条高过两者的路……” ——柏拉图《理想国》

这将导致一个结果,就是在洞穴中的人即使他们都可以交流,都有思辩能力,都有人类与生具来的理性和道德观念,他们也依然会认为他们所看到的就是真实的世界,即使这个世界是无声的。苏格拉底说“这是难以避免的。”

1。Matrix I(译:黑客帝国/母体/矩阵/二十二世纪杀人网络)
肉体被作为庄稼一样在surface种植,灵魂在AI中享受欲望的折磨,这正是对能源的追求从来没有停止过的人类,这既是极大的讽刺,也是历史的终结—— 撒旦为上帝的子民创造了另一个上帝!因为人类从生下来开始,身体所接收到的所有信号都是来自Matrix的电子信号——通过插在脑后的管子——所以死都不 知道自己一辈子都躺在培养皿里,这就是洞穴寓言。片中著名的一句对白是“——Why do my eyes hurt?”“——You've never used them before.”千万不要以为洞穴寓言就是“井底之蛙”,其实柏拉图的思想跟中国古代的老祖宗们的想法是很不一样的,或者说背道而驰。中国人强调不要用肉 眼看世界,要用心眼,而柏拉图却说不要用心眼,要用肉眼——是的,你可能never used them before!

2。Matrix I & II & III(译:黑客帝国/母体/矩阵)
是的,我没有搞错。我一直认为黑客帝国I是一部电影,而黑客帝国I加II加III合起来是另一部电影!这部电影讲述了在未来的世界(当然,是否是未来的世 界还需要证明,考,难道是现实世界?!),AI创造了两个虚拟现实环境,黑学者(比如我)们称之为虚拟现实游戏,就像未来版的RPG,一个称之为 Matrix,另一个称之为Zion,人们首先在Matrix中玩,玩的好的人继续玩,玩的不太好的人(比如头疼)可能会被选中玩另一个游戏Zion。具 有反抗意识的人通常会被选中,但是结局是什么,取决于你的多次“选择”。"Choice" is more important than "Real"!但是,如果你要问“哪一个世界是真的?”那么不好意思,you asked the wrong question!

3。The Thirteenth Floor(译:第十三层楼)
人类创造了一个虚拟现实游戏(跟上面讲的是同一个概念),游戏中的AI玩家居然发明了同样的一个游戏!也就是说AI发明了AI,这就像机器制造机器一样, 是人类一个时代的结束。现在的问题是“哪一个世界是真的?”我不知道导演是否想到了这一层,但至少影迷想到了!如果电影中男主角到的最后一个世界是真实世 界的话,那么他怎么可能通过杀死他自己而互换位置呢?这只有一个可能,那就是——没有真实的世界!那我们现在的世界会不会也是?。。。。呵呵, sorry,joke!是不是有够“洞穴寓言”啊?!是不是比“洞穴寓言”还“洞穴寓言”啊?除了这个想法在当时比较新颖以外,这部电影没什么其它优点 了。

4。Avalon (译:阿瓦隆)
AI的起源在哪里?我觉得这是评价某个硬科幻的思路够不够科幻的一个重要标志。“第十三层楼”认为AI是某个天才科学家的发明,这不符合人类目前的社会和 历史原理;“我,机器人”和“黑客帝国”认为人类为了解放生产力和提高人民的生活水平而创造了AI,已经比较符合实际可能的情况了;但是, “Avalon”更强,他认为人类为了娱乐而创造了AI,想想看,现在世界上最先进的芯片技术在哪里?在Intel吗?不是,在显卡芯片制造商的手里!这 不正是为了娱乐业而发展的技术吗?个人认为这种想法更符合现实状况,这使得在数十年或数百年后这部电影所说的故事成为现实的可能性大大增加。

不好意思,有点跑题。“Avalon”告诉我们,未来的人类大都沉浸于一部游戏之中,游戏里的人分不清真实的世界与虚幻的世界,只有女主角还好。但是,影 片的结局却告诉我们其实女主角所在的那个世界也是虚幻的世界。ok,所以同黑客I&II&III一样,没有真实的世界,每个人都处在岩洞 之中,并认为影子就是世界。

5。Island (译:逃出克隆岛)
新片,昨晚才看的。与前几部电影不同,这部片子不是讲人工智能的。它描述了人类为了拯救自己而创造了很多个克隆人,克隆人们从小就生活在一个笼子里(地下 军事掩体),他们被欺骗说外面的世界被污染了,我甚至怀疑骗他们的人还拍了部科幻电影告诉他们这是真实的记录,有点类似韩国动画片“晴空战士”。最终他们 还是怀疑自己一直被欺骗,并逃了出来,当看到外面的世界时,他们惊呆了,因为他们的智商相当于15岁的孩子,且从未见过红绿灯,也不懂性。与洞穴寓言不同 的是,他们仅仅是人骗人,而不是肉体骗灵魂,也不是灵魂骗肉体,所以难免故事情节会有些单调。更令人气氛的是,这部电影充满了微软公司的广告,包括醒目的 Xbox的绿色标志和MSN的蝴蝶标志。Michael Bay的行为应该收到全球影迷的声讨!

看电影的泡泡

posted @ 2005-09-03 15:51 Brian Sun 阅读(5682) | 评论 (5)编辑 收藏
还记得我的文章吗?http://www.blogjava.net/briansun/archive/2005/03/21/2274.html

现在,有两件事情需要补充:
1。我当时(3月份)的猜测已经得到证实,Borland已经宣布作为独立软件的JBuilder已经走到了它生命的尽头,下一个版本的JBuilder (可能是2006,今年年底将发行Beta版)将建立在Eclipse的基础之上。也就是说作为Eclipse对头的JBuilder已不复存在,现在的 JBuilder将是以一组Eclipse的插件形式提供给它忠实的用户和粉丝的。

2。BEA已经把AspectWerks贡献给AspectJ这个已经不是新闻了,但是直到今天我才意识到这一战略的真正含义!原本AspectJ由 IBM一手主导的情况已经被改变了(施乐已经交出了AspectJ整个开发小组,现在的领导人是IBM的Adrian Colyer),现在的AspectJ是由IBM和BEA联合控制的产品。看看有关AspectJ 5的随便一篇报道吧,长期以来在AOP领域内的楚河汉界——语法方面和XML方面——转眼便成了一条通天大道!而AspectJ昔日的最大竞争对手今天也 手拉手肩并肩的走在了一起,就好像那些战火和硝烟只存在于日记中一样。

2004年,AOP的创始人Kiczales曾有过一段访谈,大概介绍了AOP的标准化之路,其中给出了两条道路供世人选择:以AspectJ为标准,或 者,以AspectJ来制定标准,现在看来IBM和BEA已经代表人类作出了选择。想到这。。。。。。我真的无话可说了。

而且,BEA的野心还不仅仅局限于此。“在开源的世界里,什么是贡献?”这个问题不好回答,但是下面这个问题要简单一些:“靠昆虫传媒的花为什么都要好看 一些?”BEA贡献出AspectWerks的代价是得到了整个AspectJ,并且它已经多次表示将在JRockit中全面支持AspectJ了!设想 一下这是什么样的局面吧,作为中间件巨头的BEA,现在已经具备了随时可以将它庞大的产品线全方位的平移到轻量级容器的路线上去了,因为它可以从虚拟机的 级别支持AOP,釜底抽薪式的对所有开源容器发起新一轮的剿匪运动!IBM怎么办?IBM也没办法啊,除了应招之外还能干什么,好在IBM的精力全在这方 面了,又有AspectJ的主控制权。再假想一下——最后一次假想,如果IBM和BEA联手转向轻量级容器。。。。。。宁可。。。不要让。。。漏网!—— 嘘,小声点!

写日记的泡泡


posted @ 2005-09-02 17:23 Brian Sun 阅读(2672) | 评论 (5)编辑 收藏

1。随处可见猜想。
在未来的软件开发过程中,AOP将以一种基础编程能力的形式出现,与OOP共同发展,成为主流开发环境的一个组成部分。而目前为止,AOP只是作为一种开发工具、或运行时代码而存在。到了那个时候,可能没有哪个产品声称:“我使用了AOP”,因为没有哪个产品没有使用AOP,就像现在没有哪个产品没有使用OOP一样。就算你的源代码中没有应用到编程语言的AOP能力,你也可能调用了某个应用了AOP的基础库。事实上,AOP之父Kiczales认为AOP可能首先在操作系统上有一定规模的应用。

2。语言级猜想。
AOP的真正实现是在一个特定的语言基础上的。比如数年之后,人类开始普遍使用K语言(K是J的后一个字母),K语言在语言本身上就可以编织和横切。此时AOP才得到真正的成熟,因为程序员在编写代码时可能根本不知道自己用到的是曾经的OO还是现在的AO,只有了解K语言虚拟机构造和背后实现的人才知道。但是,可能由于人固有的思维方式的问题吧,AOP仍然不会比OOP要使用的更多,甚至有可能仍然是Kiczales所提到的15% Solution!但是,从语言的角度去实现AOP也许会给人类的编程观念带来巨大的变化,这种变化就像OO所带来的一样。

3。存在AOD/AOA猜想。
OOP对人类的影响远不如它的两个弟弟OOA/OOD,后两者已经为整个软件开发行业带来了一次意义深远的革命,它至少使得全世界开发团队的人数扩大了10倍,开发工具和平台的复杂程度增加了10倍,完成客户某些简单要求的成本降低了90%,唯一的遗憾的是,软件开发的效率几乎没有数量级上的变化(依据《没有银弹》)。既然存在AOP,我们猜想也会存在AOD/AOA,比如会存在面向方面的重构手段,面向方面的设计模式,面向方面的最佳实践,面向方面的过程管理,以及在UML的未来版本中看到为面向方向而专门做的改进,甚至添加一个新的UML图类型。当这些东西都产生的时候,AOP才真正发展到了鼎盛时期。

4。可执行用例猜想。
AOP是一个广泛适用的充满想象空间的新技术,但是目前人们对AOP的研究方向过于狭窄,大部分声称正在研究AOP的开源项目其实是把AOP当成一个辅助工具来使用,这些项目中又有相当一部分是在做企业开发环境下的容器,他们并没有针对AOP本身进行开发。事实上,依照Jacbson的说法,AOP将直接导致软件的开发分为两种形式——对模块的开发和对用例的开发,现在的用例仅仅是图纸,必须要转变为OO代码才能执行,但是一旦有了AOP,AOP可以直接依据用例的定义,将多个不同的模块(可能来自不同的开发单位)连接起来,形成方面,而方面本身是可以执行的(语言级猜想),所以用例也就不再是图纸而是可以执行的了。这对于以UML为核心的现代软件过程来说,是个极好的信号。

5。标准化猜想。
OO的成功经验告诉我们,要想取得最后的胜利,就要一致对外,统一了内部的概念,剩下的争论就只有实现问题了。我个人认为,多数OOP语言在概念上都是一致的,这种概念被语言学称之为语义,多数OOP的语义来自Smalltalk和C++这些早期尝试者,少数来自Java这种在技术的成熟期涌现出的商业产品。AOP目前还面临着这个问题。业界对AOP的标准化过程有两个猜想,一是由AspectJ领头,各大AOP实现都以AspectJ的语义作为研究问题的基本用语,设计和实现沿用现在的思路;另一个猜想是由权威组织,(开源、商业、或全球研究组织),如Eclipse/IBM/OOPSLA等等拿出一个统一的AOP语义内核,所有AOP项目都以该内核为基础开发。Java虚拟机是前一种思路的成功案例,后者则以XML为代表。

6。全静态编织猜想。
下面讨论一个实际的技术问题。时下多数AOP项目采用的编织技术无外乎两种:静态编织和动态编织。前者是指在编译前(预编译期)、编译期、和编译后编织,后者是指在运行期编织。Kiczales认为虽然没有明显的技术缺陷,但动态编织可能会面临一些发展远景的问题,他称之为“软件的演化问题”。不知道我对大师观点的理解是不是准确,我认为由于被编织的代码是在变化(发展)中的,我们总是希望这种变化对编织本身的影响最小,这时静态编织面临的问题最多就是重新编译,而动态编织可能不会那么简单。此外,全静态编织会导致另一个优点——这听起来有点奇怪——就是能力较弱,因为全静态编织继承了OO语言本身的约束,比如Java的约束和.NET之CLR的约束等等,这对于更规范的使用开发利器是大有好处的。“应该对人类准备大规模应用的每一种新工具小心钳制。”

7。AOP的诞生之迷猜想。
Kiczales先生在从事AOP的研究和开发之前也曾接触过其它对OOP的改良研究,其中包括反射和元对象技术。事实上,心平气和的说,后两者的变通能力和灵活程度都在前者之上,但是正因为如此,语言学家们认为,这些技术并不能有效的改善OOP的弊端,甚至还有可能引狼入室,带来新的“狼人问题”。后来,当Kiczales发现AOP时,他明白这才是人们真正需要的,他认为他们抓住了问题的咽喉。时至今日,AOP的实现技术已经千姿百态,百家争鸣了,但是,AOP创立之初的种种想法也在这种百花争艳中渐渐被人们遗忘,现在利用反射、元对象技术以及种种双刃剑式的技术来实现AOP的想法已经像争抢参院席位一样争夺市场的认可,这是事物的发展还是理想的倒退?AOP何时才能回归它的本原?上天为它安排的命运究竟如何,我们拭目以待。

最近,我和我的几个朋友正在组织一批开源斗士们合作编写AOP.NET,这是一个开源软件,在博客园上可以看到部分有关该项目的消息。但是由于种种原因,我们对一些基本的问题还没有达成共识,本文来自我对AOP的一贯看法,也是我对社团里很多问题的一个集中性回答吧。

开源泡泡
(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.blogjava.net/briansun])

posted @ 2005-08-31 13:53 Brian Sun 阅读(4037) | 评论 (3)编辑 收藏
这一天必须要写一篇blog,这是我对自己的要求,因为这一天对我来说太不平常了。

首先要庆祝一下中国情人节,因为七夕是按农历算的,而后面我要说的几个纪念日都是按西历算的,所以这在同一天纯属巧合。记得我在今年西洋情人节的那一天也 写过一篇blog,呵呵,算是呼应一下吧。祝愿天下所有的请人都能过好这一天,尤其是中国的请人,不要吵架,不要闹别扭,不要过得太平庸免得后悔,不要在 这一天表白免得被据了以后终生难忘,不要在这一天去太远的地方玩,别忘了小偷们也想过好情人节,最后,一定要记住,日子是慢慢过的,所以不要花太多钱,哈 哈。

这一天之所以对我的一生都有巨大的影响,其实真正的原因发生在1995年。那一年我小学毕业,按照(我家里的)惯例,我要在假期学一样东西。从小学到初中 我学过国际象棋,学过英语(那时候小学是不教英语的),学过数学竞赛(我拿过不少奖,自己赞一下),学过骑车,学过游泳,其中数学竞赛成绩最好,但是每一 样都对我的一生产生了巨大影响,让我受用终生。下面该学什么也是家里一直争议的话题,父亲在这件事情上具有最终决定权,他很想让我学电脑,但是说实话,电 脑是什么,我们家没人知道。后来父亲大约花了几百块买了一台“小霸王学习机”,现在看来就是一个有QWERTY键盘的游戏机,但是有些学习功能,比如五笔 字型,广告是成龙做的,很有吸引力。我整个七月份就在家里玩学习机,玩的很开心,父亲发现我的指法越来越熟练,觉得我学电脑可能会有天赋,就给我报名参加 了一个学习班,他哪里知道,我后来学习的东西同指法几乎没什么关系。

学习班是由父亲的一个朋友办的,我在后来的很多年中都跟他保持密切的联系,他是那种入门很早的人但是有点玩世不恭的人,其实他没有教过我一天课,但我仍然认为 他是我的启蒙老师。学习期共有15天,安排的很有意思,5天DOS,5天五笔字型、汉字系统和字处理软件(UCDOS/WPS),最后5天Basic,老 师在考虑要不要教Foxbase,后来决定还是basic,容易让人接受,也许我应该认认真真感谢一下这个决策,如果当年我学的真的是foxbase,我 一定会听不懂或者因为无聊而不会走向编程的道路的。

我一下子就被Basic的世界吸引了,一行一行有意义的单词和数学公式的组合,竟然能“跑”出一个自动化的程序来,太神奇了,我立即被这种力量征服了,并 且在未来的10年中从未停止过对这种力量的追求。后来的一个老师说,人类发明每一样东西都是对人的一种自然属性的延伸,我觉得很有道理,人类发明汽车是对 人脚的延伸,发明望远镜是对眼睛的延伸,发明电话是对耳朵和发声能力的延伸,而发明电脑则是对思维能力的延伸。对于一个在小学时就对丰富多彩的数学世界充 满兴趣的人来说,对思维能力的延伸是多么必要而有价值的一件事情啊。

这一期学习班是从8月1日到15日,所以如果我记得没错的话,10年前的今天我第一次接触了编程!这难道不是个值得庆祝的日子吗!

学习班的最后一天是多媒体电脑的演示,因为当时刚刚出现VCD2.0,MPEG协议也刚刚引进国内,所以用电脑放出来的清晰电影实在令人着迷,(所谓清 晰,是指在13寸弧屏上的效果),看完侏罗纪公园一之后,学习班就结束了,人们也回家了,只有我还在一台80286上用basic写各种各样有趣的东西。 刚刚提到的那个老师给了我一项任务——写一个统计成绩和平均分的程序,可惜当时不懂得保存,这个程序现在已经失传了,但它确实是我写的第一个软件。

因为接触了编程语言和排序算法,从某种意义上说也就算是个完整的程序员了。开学以后我就报名参加了中学生计算机竞赛,恰好竞赛也是编程性质的,很多年以后 我才知道省里的竞赛AOI(Anhui Olympics of Infomation)是仿NOI(National...)的,而NOI是仿IOI(International...)的,而IOI则是仿ACM ICPC(国际大学生编程竞赛)的。在竞赛班上的学习对我的启发和帮助就不言而喻了,你可以想象一个初中生每天都跟离散数学、组合数学、图论、数据结构、 Quick Basic/Turbo Pascal/Turbo C、和一些叫不出名字的算法(比如笛曲克斯拉)打交道的样子吗?这些都使我至今收益,其中最值得赞一下的成绩就是连续3年在本市的竞赛中夺魁,但是由于本省人才济济,以数十分之差 (数十分在竞赛中不到一个TestCase)没能进入省队,后来进入省队的几个人都拿了全国金牌并参加了国际竞赛,还有人拿了国际金牌。我想假如我在别的 省可能已经进了国家队,但是我仍然不后悔,那样我不会很早学OO,不会选文科,也不见得会有现在的独特思维方式。

成绩也常常伴随着失败存在。第一次参加竞赛的失败使我看清了Basic语言本身的缺陷,这使我决定要学习一种纯面向过程语言,Pascal语言由于描述算 法和数据结构的能力及其在竞赛中的普及程度首当其冲,但我没有选,而是去安徽大学学了C语言,这也是一次对我后来发展路线产生巨大影响的决策,而这个决策 也发生在8月,安大的这一期培训班,也是在8月中旬。

除了这两件事情之外,今天还有一个值得纪念的地方,那就是半年前的今天——2005年2月11日,我写了自己的第一篇blog,哈 哈,dudu别急着感动,那篇文章好像是批评BlogJava的。:) Blog是我职业生涯非常重要的一件事,以前常常苦于有想法没机会表达,不表达自己都记不住,或者由于没有被语言化而使得很多 想法都转瞬即逝,或流于表面不能深入思考,blog真是个好东西。

不多说了,该吃中饭了,回到我们前面的话题,我小时候就想知道牛郎织女到底是一年见一次还是一天见一次呢,天上一日地上一年啊,哈哈,搞不懂。

posted @ 2005-08-11 12:00 Brian Sun 阅读(1920) | 评论 (9)编辑 收藏
     摘要: {关键字}
测试驱动开发/Test Driven Development/TDD
测试用例/TestCase/TC
设计/Design
重构/Refactoring

{目录}
TDD的目标
TDD的优点
TDD的步骤
FAQ
Best Practise
关于单元测试
实例:Fibonacci数列
关于本文的写作
后记:Martin Fowler在中国
鸣谢

什么时候重构?
什么时候设计?
什么时候增加新的TestCase?
TestCase该怎么写?
TDD能帮助我消除Bug吗?
我该为一个Feature编写TestCase还是为一个类编写TestCase?
什么时候应该将全部测试都运行一遍?
什么时候改进一个TestCase?
。。。。。。

(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.briansun.com])  阅读全文
posted @ 2005-07-31 02:08 Brian Sun 阅读(14643) | 评论 (26)编辑 收藏
英文名:About Face 2.0 - The Essentials Of Interaction Design
中文名:软件观念革命——交互设计精髓

作者:Alan Cooper,Robert M. Reimann

泡泡的评价:
本书第一版几乎引发了一张全球软件界的革命,然而这次革命的影响却由于种种原因未能在今天的多数软件中体现,这不是人类的悲哀,这是我们要为之奋斗的事 业。自从我们选择入了软件这一行,我们就有义务为用户提供经过出色设计的软件,可尽管如此,我们当中仍然有很多人根本不知道什么叫设计。本书的作者 Alan Cooper为微软拿到了为数不多的几个Jolt大奖中的一个——Visual Basic2.0,也为我们提供了为数不多的几本好书中的一本——About Face2.0。我们崇拜大师,并不因为他们是上帝,而是因为他们是上帝的布道者;我们渴望设计,并不因为设计代表一切,而是因为一切都依靠设计。书的扉 页上写着:“因为设计,所以出色”。

China-pub的简介:
本书是一本由一位在交互设计前沿有着10年设计咨询经验及25年计算机工业界经验的卓越权威撰写的设计数字化产品行为的启蒙书。它探索了一个独特的设计领 域,即复杂系统行为的设计——特别是软件激活技术。本书论述一种具有革命意义的设计观念——人类驱动设计过程。 本书是一本难得的大师经典之作,应该是一本产品规划师、界面设计师以及可用性工程职业人员或者程序员都想得到的书。

目录:

第一篇 了解你的用户

    第一部分 弥合差距
    1 目标导向设计
    2 实现模型和心智模型
    3 新手. 专家和中间用户
    4 理解用户:定性研究
    5 用户建模:人物角色和目标
    6 脚本提纲:将目标转换为设计
    7 综合好的设计:原理和模式

第二篇 设计行为和形式

    第二部分 除去障碍,达到目标
    8 软件姿态
    9 和谐与流
    10 消除附加工作
    11 导航和调整
    12 理解撤销
    13 重新思考“ Files ”和“ Save ”

    第三部分 提供高效能和愉悦
    14 设计体贴的软件
    15 设计智能的软件
    16 改进数据检索
    17 改进数据输入
    18 为不同的需要进行设计

    第四部分 应用视觉设计原理
    19 外观设计
    20 隐喻. 习惯用法和启示

第三篇 交互细节

    第五部分 鼠标和操作
    21 直接操作和定点设备
    22 选 择
    23 拖 放
    24 操作控件. 对象和连接

    第六部分 控件及其行为
    25 窗口行为
    26 使用控件
    27 菜单:教学向量
    28 使用菜单
    29 使用工具条和工具提示
    30 使用对话框
    31 对话框礼节
    32 创建更好的控件

    第七部分 与用户的交流
    33 消除错误
    34 通知和确认
    35 与用户的其他交流方式
    36 安装过程

    第八部分 超越桌面的设计
    37 Web 设计
    38 嵌入式系统的设计

posted @ 2005-07-29 13:29 Brian Sun 阅读(3210) | 评论 (2)编辑 收藏

1。项目概述
简单的说就是“WHAT IS”。向任何对该项目感兴趣的角色传达这些基本的必要的信息。

2。风险列表
以头脑风暴的方式列出项目可能遇到的所有风险。风险列表一定要是客观的,既不能推卸责任也不能表决心献殷勤,要实事求是。

3。用例
需求的规范表现形式。用例并不一定要用UML用例图来表示,但是颗粒度是用例最难以把握的问题之一。

4。设计图
通常用于总体设计,可以是UML图,也可以是CRC卡,还可以是更灵活的一些东西,视项目组成员的习惯和水平而定。

5。构建工具
如Ant脚本,目的是实现每日构建。

6。版本管理
悲观锁如VSS或乐观锁如CVS/SVN,都无所谓,关键是要能管理不同的分支和历史工作成果。

7。测试用例
按TDD的说法,测试用例应该打成包,随产品已经发布,这样在每次修改代码之后或发布一个新版本之前都可以确保之前的代码仍然是有效的。

8。产品
包括二进制发布包和所有导致该发布包的源代码或原始配置文件。

9。发布说明
简述这一版与上一版的不同。当然还要包括版权声明、其它商品的版权声明、和许可证。

10。开发计划和迭代计划
项目过程中产生的制品,为日后开发其它项目提供参考资料。

RUP泡泡

posted @ 2005-07-22 09:46 Brian Sun 阅读(1905) | 评论 (4)编辑 收藏

近100年来美国经济学界和管理学界的主流理论和理论框架,都会或多或少的在其它领域的主流理论和理论框架中产生映射,这是很多主修经管专业的学生改行进入其它领域后总的心得。在下不才,也是其中一员,并且也有一点自己的心得。

最近十年管理学界对体验经济的理论层出不穷,形成理论界的一大热点。总的来说,体验经济是将未来的经济模式,同产品经济、商品经济和服务经济相区别,对这个概念不了解的朋友可以先看一个写在《体验经济》一书扉页上的这个案例:

Rebecca的妈妈小时候过生日,Rebecca的奶奶自己亲手做蛋糕为她庆祝,她的原料比如奶油、鸡蛋、面粉等等都是从邻街的小店里面一美分一美分买来的。Rebecca小时候过生日,妈妈打电话给附近的一家蛋糕店,蛋糕店立即送来的美味可口的蛋糕,这样Rebecca可以请邻居家的小孩来过Party,这个蛋糕只要花十几美元。现在Rebecca的女儿过生日,Rebecca将整个生日交给Disney公司去办,公司的姐姐们带Rebecca的女儿和她的小伙伴们去城郊的一个小山坡野营。在那里,孩子们学会了自己搭帐篷,挤牛奶,采野生的葡萄酿酒,整理破旧的茅草屋。在一天的猎奇旅程之后,公司送每一位孩子回家,Rebecca付给了他们一张$146的支票。

尽管体验经济首先是在餐饮、旅游、娱乐、零售等行业首先发展并扩散开来,但是我相信,它迟早会在软件领域展露头角。我的这种想法由来已久,在最近一段时间里这个想法被激发,导致我写这篇文章,我认为体验经济至少应该在下面四个方面对软件界有所帮助:

1)近似帮助的导航。
如果你还没有下载Eclipse 3.1,那么你还不能真真了解我的意思。看看Eclipse的Million Downloads Challenge吧,3.1版正式版推出的第一天全球下载量就接近20万份,这绝不是宣传的效果,而是全世界的软件开发人员和关注软件界成长的人们共同的精神支柱。3.1版在易用性上又有大幅度的提高,随处可见的Html风格的说明信息,从一个对话框到另一个对话框的“超链接”,首选项的搜索与过滤,首选项的编辑导航(前进、后退等),FastView可以变成内嵌Frame,任意输入框里的工具条,任意输入框里的感叹号、问号和小红叉,等等等等,无一不在3.0版已经很“花里胡梢”的界面上再“锦上添花”。并且,知道内情的人都知道,这些对用户眼球产生极大刺激的小技量,对于Eclipse来说是多么的轻而易举。这么说吧,这些东西放在你的应用程序里面叫做“特性”,放在Eclipse里面叫做“对特性的应用”。

2)软件为什么不能用画的。
既然标准控件可以拖到窗体里变成代码,为什么用户不能用笔画一些代码出来呢?我想未来的软件应该会以某种“更自由”的方式向用户提供体验。比如,用户可以画一个圆作为输入框;用户可以画一条线来表示状态条;用户可以画一个图标或写一个单词,再和一个程序定义好的Action建立链接;用户可以画一个小人提供导航;用户可以规定什么样的状态用什么样的符号表示;用户还可以规定在哪里可以显示固定的及时帮助,什么时候可以显示浮动的及时帮助;最后,用户被要求画一个区域(可能是不规则的多边形)来把刚才画的那些东西装进入,这个区域就是我们所说的窗体(想想很多播放器都支持不规则的图形作为skin)。

3)同时面对新手和熟练工人。
关于气泡式的及时帮助,业界有很多的争议,这些争议大都来自不同领域的不同需求。比如一个面向客户的财务系统,开发者可能希望随时随地都能让使用者知道下一步该怎么办(或者这一步该怎么办),可是一个面向企业内部的财务系统,投资商则更愿意花费少许培训费用来使该系统的使用者更加熟练,这些费用可能会比在软件中加入大量的帮助更为经济,更重要的是,去除这些气泡往往会提高使用者的效率,给企业带来更多的好处。所以体验经济要求我们的软件理念能在两种模式之间自由切换,甚至可能会同时体现在同一个系统上,比如某个在线游戏,新手希望能随时随地得到提示,而老玩家则希望在某个选项页上关掉这些提示——以速度取胜。

4)功能微调和界面微调。
多数软件已经开始向Extendable转变了,少数精英已经开始向Pluginable(这是我自己造的词,被画上红线别怪我,呵呵)转变了。有图形处理和媒体制作软件,如Photoshop、Fireworks、Flash,有开发工具IDE,如Eclipse、SharpDevelop,有浏览器如Firefox,有小工具如我正在使用的EmEditor等等,在SourceForge的排行榜第一名上待了很久不愿下来的Azureus - Java BitTorrent Client也是Pluginable的。更有令人惊奇的,有一个叫Java Plugin Framework(JPF)的项目可以为所有Java软件增加Pluginable的能力,这个项目吸收了Eclipse的思想,但是比Eclipse的插件平台更通用,更具扩展性,也更严格。至于界面上的微调,Eclipse也为我们作出了榜样,它可以允许成千上万个View和Editor并存在同一个窗体里,并提供了最大化、最小化、FastView、内部Frame等多种展现形式,(意思是说它们不会太挤),甚至可以在界面上搜索和过滤这些parts,这样做的主要目的是将用户工作中能遇到的交互事件划分成更细小的颗粒。我认为未来的软件能让用户在更小的颗粒度上调整UI,比如某个用户会在用软件时自言自语:“这个的Label我不喜欢,我要变成Icon;那里有个Table太繁琐了,换个饼图看看;哦,对了,这里有个讨厌的文字框,小样儿,我早就看你不爽了,干掉,直接写进log吧!”

在本文的最后我还要告诉大家的是,虽然很多软件用XP结尾来标称自己是“用户体验版”,比如Windows xp和Office xp,但是我仍然认为体验经济的时代要求未能很好的表现在当前的主流应用中,无论是操作系统、办公软件、在线应用,或者ERP,但是我们已经可以在一些游戏、及时消息软件或大师作品中看到一点希望。重复本文开头时的论点,我相信体验经济在软件的时代即将到来,如果您手上正在做的软件没有考虑这一点,那么还是请考虑一下吧,我们都不希望在这次浪潮中国产软件再次落后,如果要我给出一个理由来支撑我的观点,那我只想说——这是经济学的规律。

(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.blogjava.net/briansun])

posted @ 2005-07-21 10:38 Brian Sun 阅读(3958) | 评论 (10)编辑 收藏
NXUnit是一个基于.NET Framework的具有NUnit风格的XML单元测试框架。它是对NUnit的一个扩展,使你可以简单的在XML应用程序中加入断言,使你可以集中精 力在你的XML应用程序中的业务逻辑,使你提升测试驱动开发(TDD)的技巧,使你可以直接比较两个XML字符串或流,或者断言它们相等,就像使用 xUnit断言两个整数是否相等一样简单。如果没有NXUnit,你就必须把注意力集中在XML字符串中的空格、空节点、空属性、节点序、属性序、注释等 等。在某些方面,NXUnit有些像XmlUnit。

NXUnit的当前版本是2005年7月的NXUnit 1.0rc1,下面是该版本的8个特性,这些特性你都可以在XMLAssert类中找到相应的方法:
1。断言两个XML输入是否相等。
2。比较两个XML输入并找出它们的不同点。
3。断言两个XML输入的XML定义是否相等。
4。断言两个XML输入的文档类型是否相等。
5。断言一个XML输入是否有效。
6。断言一个XPath表达式在一个XML输入上执行返回的值是否是期望值。
7。断言一个XPath表达式在一个XML输入上是否存在。
8。断言一个XML输入是否包含另一个XML输入。

并且,你可以改变一个XMLAssert实例的属性来配置一个断言或比较,目的在于:
1。忽略节点和属性名称中的大小写。
2。忽略XML注释。
3。忽略XML定义或文档类型。
4。忽略空的节点或属性。
5。忽略节点和属性的顺序。
6。忽略不重要的空白。

posted @ 2005-07-20 10:09 Brian Sun 阅读(2339) | 评论 (5)编辑 收藏
1。拳击运动员
他一生中的每一时刻,都在痛苦和希望之间徘徊。一个没有被打倒过的人不算是真正的拳击手,只能算是拳击运动的爱好者和参与者罢了。没有人愿意跟一个没有失 败过的人打,就连电影百万宝贝中的女人也这么想。这并不是说一个人若想称为真正的拳击手就要主动尝试被人打倒的滋味,而是说如果你从未有过被人打倒的经历 和体验,你就不能很好的知道什么时候该勇往直前,什么时候该保护自己,如何保护自己,保护自己的哪里,用什么来保护自己,甚至,牺牲自己的什么来保护自 己!一个男人必然不会是一生都不需要保护自己的人,当然,一个男人也不能时时刻刻都在保护自己,正在保护自己的男人是痛苦的,他不得不忍受“我是男人,而 男人应该去保护别人”这样狗屁不通的理论对自己的煎熬,别人的非议就更不用说,但是希望有随时都会在他的心中点燃——下一刻,我将挥出我复仇的一拳!


2。赛车手
他一生中的每一时刻,对他来说都是一次信心的考验。尤其是排名世界第二的赛车手,如果他挑战自己的极限,他有可能命丧黄泉,如果他见好就收,他毕生取得的 成就都会在他死后烟消云散,甚至在生命的最后一段时间里不仅要忍受老去的躯体的折磨,还要忍受昔日崇拜者鄙视的目光。多数处在这个位置的男人都会选择继续 挑战人生,毕竟只有第一能够博得终身的成就和死后殊荣,但这样做的结果往往也是死路一条——现实生活不会总像电影Troy那样气势磅礴。在这一点上,商界 的很多男人选择激流勇退,这样做对他们来说叫做“留得青山在,不怕没柴烧”,不知道这算不算是一种理性,倘若是,那这种理性究竟是人性的倒退,还是人类发 展的必然未来?

3。潜艇艇长
他一生中的每一时刻,都要隐藏自己内心的恐惧。他不能有恐惧,是的,就是这样,或者说,他不能让别人发现他的恐惧。在数百尺深的海底,每个人都会一定程度 的丧失他在陆地和海洋表面的理智与信心,而潜艇之长,作为几十人到数百人的领导,更要无所不知,无所不能,且每时每刻都要让别人感受到他的信心、乐观与积 极,连他自己有时都被自己的表象所欺骗,简直就像一个四处散发信心的广播。更重要的一点,也是电影U571要向我们描述的一点是,一个合格的水手可以为了 别人牺牲自己,这无可厚非,可是一个艇长不仅仅要有随时牺牲自己的勇气,还要有为了整艘船牺牲个别船员的洞察力和决策力。这往往也是一个男人不易被人理解 的地方:该牺牲自己时牺牲自己,该牺牲别人时牺牲别人。

(转载本文需注明出处:Brian Sun @ 爬树的泡泡[http://www.blogjava.net/briansun])

posted @ 2005-07-19 23:21 Brian Sun 阅读(817) | 评论 (2)编辑 收藏

What is NXUnit?

NXUnit is a NUnit -style unit testing framework about XML for .NET Framework. It is an extension to NUnit. It brings you the ability to do unit testing easily in XML applications. It helps you to concentrate on business logic of your XML application and improve your Test Driven Development(TDD) technics. You can directly compare one XML string or stream with another, er assert that they are equal, just like doing the same thing to two integers using xUnit. But without NXUnit, you must pay attention to whitespaces in XML strings, empty elements or attributes, unimportant order of elements or attributes, unneccessary comments and so on. It's similar with XmlUnit in some aspects.

Features

The current version is NXUnit 1.0rc1, July 2005. The following is the 8 features of this version, which you can find in the facade class XMLAssert:

    * Assert that two XML inputs are equal.
    * Compare two XML inputs and find all differences between them.
    * Assert that declarations of two XML inputs are equal.
    * Assert that document types of two XML inputs are equal.
    * Assert the validity of an XML input.
    * Assert that the evaluation of an XPath expression on an XML input will return the expected value.
    * Assert that an XPath expression exists for an XML input.
    * Assert that an XML input is included by another.

And you can change the properties of an instance of XMLAssert before an assertion or comparition, in order to:

    * Ignore the case of the elements' and attributes' names
    * Ignore XML comments
    * Ignore XML declarations and document types of both inputs
    * Ignore empty elements and attributes
    * Ignore orders of elements and attributes
    * Ignore unimportant whitespaces

Sample

 1    using System;
 2    using System.IO;
 3    using System.Xml;
 4    using NUnit.Framework;
 5    using NXUnit.Framework;
 6
 7
 8    [TestFixture]
 9    public class Sample
10    {
11        private XMLAssert xa;
12
13        [SetUp]
14        public void Init()
15        {
16            xa = XMLAssert.CreateInstance();
17        }

18
19        [Test]
20        public void TestMethod()
21        {
22            // Init the xml input
23            string s1 = "";
24            string s2 = "";
25
26            // Init the options for your purpose
27            xa.IsOrderSensitive = false;
28
29            // Assert two XML inputs are equal
30            xa.AreEqual(s1, s2, "Assertion Failed!");
31
32            // Compare two XML inputs and find all differences between them
33            CompareResult r = xa.Compare(s1, s2);
34            foreach (Diff d in r)
35            {
36                Console.WriteLine(d);
37            }

38            CompareResult another = xa.Compare(s1, s2);
39            r.Add(another);
40            for (int i = 0; i < r.Count; i++)
41            {
42                Console.WriteLine(r[i]);
43            }

44            if (r.AreEqual)
45            {
46                // They are equal
47            }

48
49            // Assert two XML declaration of the two XML inputs are equal
50            xa.AreDeclareEqual(s1, s2, "Declarations are not equal");
51
52            // Assert two document types of the two XML inputs are equal
53            xa.AreDocTypeEqual(s1, s2, "DocTypes are not equal");
54
55            // Assert the validity of an XML input
56            XMLAssert.IsValid("");
57            XMLAssert.IsValidFile(@"C:\");
58
59            // Assert the evaluation of an XPath expression on an XML input will 
60            // return the expected value
61            xa.AreXpathEqual("<a/>""/r/a[2]", s1, 
62                "The xpath expression doesn't return <a/>");
63
64            // Assert an XPath expression is exist for an XML input
65            XMLAssert.XpathExist("//@b='c'", s1, 
66                "The xml document doesn't have the xpath expression");
67
68            // Assert an XML input is included by another one
69            xa.IsIncluded(s1, s2, "The {0} is not included in {1}", s1, s2);
70
71            // The Counter
72            Assert.AreEqual(6, xa.Counter);
73
74            // XMLInput can use in all the samples above
75            xa.AreEqual(XMLInput.CreateFromString(s1), 
76                XMLInput.CreateFromString(s2), "Assertion Failed!");
77        }

78    }
posted @ 2005-07-15 13:22 Brian Sun 阅读(2294) | 评论 (3)编辑 收藏
首先,要向大家致以我深深的歉意,因为我已经有两个多月没来关心我的这个与朋友们交流的平台了。原因有很多,最主要的原因就是太忙了。起先是忙写毕业论文,这件事很让我头疼了一把,因为我要一边上班一边完成毕业论文,于是每当我打开Blog想添一篇新文章的时候我就会立即想到还要论文要写,于是立即打开 word毫不含糊。论文忙完了之后,我着手写一篇很长的文章,记录了我这三个月来对“测试驱动开发(TDD)”的理解和体验,这篇文章对我来说非常重要,也是我一段时间工作的总结,于是我想等我把整篇文章写完之后再奉献给大家比较好。这篇文章刚有了构思和提纲之后我又收到北京总部发来的消息,要求我们每日加班到9:00,周六也工作,这耗费了我之前用来写Blog的几乎全部时间,再之后就是转出消息领导要来南京视察,尤其是视察我们小组的工作,于是我又要加班加点的赶进度,因为我们小组的几个人进度都不能另自己满意(更不用说领导了)。再之后就是领导没来,但是要求我们尽快去北京参加评审和一些开不完的会议,于是我们又Z50去Z49回来,中间转正花了一周开会花了一周。然后我就回家洗了个澡,睡了个安稳觉,然后就到今天了。

还有一件事情也是最近一段时间值得骄傲的,要提一下,就是我花了点时间把自己写的一个小工具包装成了一个开源软件,在SourceForge上登了出来,是一个单元测试工具(当然也可以叫TDD工具啦,哈哈,),对NUnit的一个扩展,使其可以方便的比较和断言两个XML,希望能对遇到同样问题的朋友们带来一些帮助。所谓“花了点时间”是指我把每个周日都耗在了提着笔记本在Starbucks要一杯Frappuccino然后写十几个小时的代码和文档上了。

但是,再多的借口也不能弥补我在春夏换季时不写Blog的罪过。所以我决心从今天开始洗心革面,重新做人,每周都写Blog,大家再给我一次机会吧!。。。。。。

致歉的泡泡

posted @ 2005-07-15 12:47 Brian Sun 阅读(2302) | 评论 (7)编辑 收藏
这篇文章来自我读了Mango Du“水银看人力资源外包”一文的读后感,或者说是对该文的一个评论,只不过这个评论是以另外一种形式发表在我的Blog上的。确实可以说这两年人力资源外包被提到了很高的地位,有人说这是分工过细所致,有人认为是专业化所致,还有人认为这是企业为了降低成本,我却认为不是这样。

1。关于分工细化。
分工细化不足以产生一个行业。比方说,我们做软件的都知道软件设计、软件实现和软件测试都应该被分为很细的方面,至少应该被分为这三个方面,于是有很多人很早就预言软件企业会分裂为专做设计和专做编码两类,事实上当初我也是这种想法的坚定支持者之一,但是现在开来这是一个很幼稚的想法。在最近的几年里这种划分还不会出现,因为软件设计和实现在今天的技术框架和过程惯例下耦合度仍然很高,交流的成本非常关键,因此将这两个部分分裂成两个企业会导致企业的外部成本迅速升高,我们都知道这是违背企业存在的意义的一种做法,这一点科斯在上个世纪给出了一个著名的论证。所以人力资源外包肯定不仅仅是一个分工细化的问题,因为人力资源的工作同其它工作的耦合度确实不小。(这一点我后来想了一下,可能某个行业有自己特定的人力资源游戏规则,那样的话人力资源工作可能会和该行业内部的企业耦合度减小,规范度增大,咨询师和电视节目制作人都是这样的例子)。

所以促使一个企业外包人力资源的根本原因不仅仅是分工存在细化的问题,还有部分交易外部化的问题,也就是说如果一件事情本公司的人做不如外公司的人做成本更低效果更好,那么就可以外包。比如员工满意度调查,在公司内部进行可能会有失公允,因为很多员工都担心调查材料不能严格保密的问题。

2。关于降低成本。
降低成本和提高利润是企业一切动作的基本动机。因此人力资源的外包也有成本的原因,但可能并非是成本驱动的。比较一下在企业采购方面的例子,有很多提供采购服务的服务商在帮助企业采购(比如电子商务),我曾见过一个创业方案是关于“买手(buyer)”公司的,但是采购的很多情况是根据企业的不同而不同的,所以在操作上和决定权上仍然是买方做主。这种方式实际上可以被理解为执行和战略的分离,并且我相信这种方式在最终会在企业管理的很多方面体现出来。

简单的说就是企业把握人力资源管理的战略方面,而执行方面交给外包商去做,比如今年的招聘,公司给出计划;抽象招聘流程,公司给出安排;招聘人员的鉴定,公司给出方法和人员;但是具体招聘的安排和实际招聘的对象则是由外包商完成,比如何时招聘,在哪个学校,招多少人面试多少人笔试,谁主持,都是由外包公司完成的。

3。关于专业性。
我个人认为企业之所以会把人力资源外包出去,并非专业性的问题外,或者说专业性只是一个很小的方面,比如财务管理已经是一个规范度极强的企业了,可是把财务部门外包给服务商去做的企业可能也不是很多,原因很简单,一方面财务部门比较私密,战略性意义也比较高,另一方面财务人员市场上有的是,不需要多花几个钱就能顾的起,所以财务部门无需外包。但是仔细想想,后面一个理由是否站得住脚,为什么财务人员专业性高却资源丰富呢?原因很简单——制度完善。真正专业性很强的工作已经由金融机构和会计公司完成了,剩下的是成本低廉的非专业工作。问题又来了,企业为什么会花钱顾一些非专业性强的员工,而把专业性强的工作交给别的公司完成呢??这难道没有违反企业存在的意义吗??

OK,我想通了,现在我改变了自己的看法,我认为企业要外包自己的人力资源正是出于专业性的原因。事实上,合理的方式应该是为企业直接创造价值的部门(以前我们称为直线部门)我们用专业性强的员工以提高能力,不为企业直接创造价值的部门(以前我们称为职能部门)我们用非专业性强的员工以降低成本,而这些部门的专业性工作我们交给专业的企业去完成,这应该就是未来企业的部门组织,That's It!

4。小结。
现在我们总结一下我们的理论,为什么企业会把人力资源工作外包出去做?答案是提高人力资源工作的效果、更着眼于战略因素、和外部专业化内部非专业化以降低成本。现在我们再抽点时间看看其它外包服务是否也遵循同样的原理。企业外包财务给财务公司是为了提高财务的效果(严格、准确、安全、可靠),更着眼于战略因素(管理会计和金融部门),外部专业化(注册会计)内部非专业化(会计和行政助理)以降低成本。企业外包IT部门给提供服务的信息服务供应商是为了提高信息技术以加速管理的效果(有效、安全、科学化、降低管理成本),更着眼于战略因素(信息收集和信息处理的方式和制品,而不是技术),外部专业化(软件设计和实现)内部非专业化(实施顾问和硬件采购)以降低成本。还需要其它的例子吗?


差点搞HRM的泡泡



“别人看到了偶然,而我却看到了因果。”
                                      ——<<The Matrix>>
posted @ 2005-04-23 09:27 Brian Sun 阅读(2617) | 评论 (7)编辑 收藏

在写完了前面那篇“4月16日评点IBM”之后的某个早晨,我和领导共进早餐,由于我们吃饭的地方其实是方正的餐厅,所以席间略谈了几句方正。这是 我猛然发现,方正原来也是一个技术型很专一的企业,这几年逐渐变得平庸了,即使没有像经不起风霜的小企业一样完蛋,也不能否认这么多年屹立不倒多少也有吃 老本的嫌疑,但是,究竟是什么使这样一个显赫一时直至今日仍然在自己的领域是龙头老大的企业失去当年励精图治的成就呢?

我想答案可能与那 篇文章中提到的IBM面临的情况类似,当PC革命到来的时候,作为一个以计算机技术(整体中的大部分)为主要研究对象的龙头老大,岂能眼睁睁看到这样一块 风水宝地被后生抢走,岂能眼睁睁看着交手多年的竞争对手大把大把捞银子,岂能眼睁睁看着国内外企盼PC技术给人类带来巨大变革的一双双渴望的眼睛,即使这 种变革像雾像雨又像风,来得快也去得快!

其实仔细想想这样一个大公司的困惑吧。一个像IBM、方正、HP、Intel这样的企业,在PC 诞生之前,他们就已经名声显赫,有万贯家产,可是他们越是德高望重,面临的困惑也就越大。究竟是顺应时代变革、勇攀新的高峰,还是任凭风吹雨打、我自岿然 不动!究竟是抢占先机、舍我其谁,还是浅尝辄止、随风应变!在尝到甜头的时候,究竟是见好就收、预防否极泰来,还是孤注一掷、争取利润最大化。在遇到困难 和暂时性的挫败时,究竟是浪子回头金不换,还是去留肝胆两昆仑!(不好意思,话说大了)。很小的时候度过一本留美博士写的书,书的大概内容是讲IT发展史的,但是由于作者是DBA出身(是MBA的升级版,不是数据库管理员),所以商业思考多于技术见解。这本书中很多部分就是以这样的两难选题开始的,这在管理学中是非常可怕的战略选择,它足可以决定一个企业的生死,例子嘛,IT界有的是。

想想刚刚提到的IBM,在这样的PC大潮中不能见好就收,致使偏离了自己的轨道;方正,没有将有限的资源投入到原来那分很有前途的职业中去,当 诸多外敌进入市场时不能很好的守住阵地;HP,任凭PC部门摊薄优质资产的利润率。反过来说,IBM,成长和发展的途中没有丢弃自己计算机技术霸主的地 位;方正,依然是闪亮的明星;HP,尽管付出了沉重的代价,总算还戴上了自己梦寐以求的王冠;苹果,在尝试了诸多路线之后才发现岿然不动才是属于自己的致 胜之道。

这些毕竟都是有得有失之人。有完全失败的吗?有!王安,在不能应对突如其来的开放架构的战争中全军覆没;Novell,在不能应对突如其来的互联网大潮中几乎夭折;宏基,风采不见已经多年。

有完全成功的吗?当然也有!Intel,由于把握了合适的时机,已经时常拿Mr.Incredible(超人)和自己比较了;Microsoft,得益于IBM的培养成为人类历史的篇章。

有浅尝辄止的成功者吗?有~。想想GE吧,当PC的时代即将到来时,华尔街无一例外的认为GE将寻觅时机和IBM正面交锋,结果是人家玩的很潇洒,不知道是不是某个尚未公布的战略矩阵计算的结果。

退 一步讲,这也许就是一个大企业应该承担的责任,越大的企业应该面临越难的抉择、应对越大的风险、抵御越大的诱惑、同时享受越多的利润。但也应该注意的是, 战略选择在这样的环境下对大企业有更多的意义,所以大企业更应该重视战略问题,从自身的特点和行业的特性出发,把握任何对时代脉搏的真实未来的预言。但愿 这些对国内的企业是个借鉴。

提供有限咨询的泡泡

posted @ 2005-04-21 10:23 Brian Sun 阅读(2733) | 评论 (9)编辑 收藏
有人问为什么总是以“评点”命名我的Blog文章,我说那是我取错了名字,应该叫“小议”;有人问为什么总是“几月几日评点什么”呢,我说那是因为虽然我 的想法总是来源于平时的思考,但我的写作欲望却来源于一时的冲动,所以我要记住我这次冲动的日期;但是,还有更重要的一点,那就是我一时的冲动并不表示我 对一个事物的完全认识,所以我以后还会再“小议”这个事物,那时我又要写“几月几日再评点什么”了。^_^

事情要从扬州说起,昨日在博客园领导dudu的解说下游览了扬州著名的两个景点,瘦西湖和大明寺,还品尝了暴多扬州美味小吃,(全劳dudu破费,再次感 谢),既非常疲惫,又欣喜万分。席间我们谈到IBM,我又大发神经,把我对IBM的很多认识统统说了一遍,情绪十分激动,虽严重影响了周围客人的食欲,但 滋生了评点IBM的欲望,于是赶回南京,写了这篇,正在进膳的朋友免看。^_^

1。IBM的开始。
IBM的年龄比目前世界上大多数人要大,它的早期辉煌出自两代Thomas Watson夫子之手。老Thomas Watson缔造了IBM,并使得IBM的基调始终停留在商用机器的领域,当时是没有电子计算机的,所以IBM的主要产品是打孔机和计时器,但此时的 IBM已经是名利双收,它的名来自它为当时全国性的一次人口普查提供了全部设备,它的利则来自二战时不得不生产的军火工业。小Thomas Watson和他爸爸有同样的名字,只是中间名字不同,崇拜技术要多于崇拜老爸,他经常为了一点点小的技术方面的问题同老爸争的不可开交。比如曾经有一个 年轻人拿着一个旅行箱大小的设备来见他们父子,这台机器只会做基本的加法和减法,显然他的目的是找IBM要投资,这个人演示了这台机器,老Watson发 现这台机器算的还不如一个熟练使用中国算盘的小姑娘,立即觉得这个东西没有,而小Watson却觉得既然它可以算加法以后一定可以算乘法,于是很想投资。 父子两为了这件事整整吵了一夜,第二天人们发现他们在房间抱头痛哭。这个例子只是为了说明父子两对技术的重视程度,事实上,当小Watson接手IBM时 他也没有再投资那个年轻人,但是这个时候他对整个计算机工业的投资已经启动了。

小Watson和他老爸一样重视技术,记得他曾单独嘱咐过两位科学家:“一定要把System/360搞好!”这两个人当中资历比较小的那个叫做Fred Brooks,他深信自己的体系结构是正确的,而老前辈却认为他自己的体系结构是正确的,于是那段日子,Watson总裁几乎天天和他们泡在一起,他好像 一个辩论赛的教练,倾听总是多于发表意见,他让Brooks说他的体系结构有哪些优点,然后让前辈说这个结构哪里不对头,又让前辈说自己的体系结构,再让 Brooks说哪里不对头。就这样反复来回几十遍,问题总会走到两个人都满意的位置上去。最后只剩一个问题解决不了的时候,三个人同时发现这就是真正的争 议所在,这时Watson就拍板说让前辈全权负责,有最终决定权,然后前辈也没有辜负老总的一片期望,选择并培养了Brooks,并最终让Brooks担 当了System/360的主设计师。

那是一个怎样的年代,老总可以和两代技术专家坐在一起谈论一个系统的实现细节。而且这还是IBM的老总,这是一个现在想都不要想的场景,而这一切印证了 Time对IBM的一句评语:“IBM生于崇尚技术的年代!”事实上,Brooks在System/360成功很多年以后才入选IBM Fellow(名士),说明IBM的科研人才之多,可谓富可敌国。

2。IBM的衰落。

这样神话般的日子持续了几十年,历经了两代老总的时间。但是对于生来就是贵族的小Watson而言,工作并不是他的全部,所以他很早就辞掉了在IBM的全 部职务,回家过安闲的晚年。在他执政IBM的最后一段日子了,个人电脑业兴起了,Steve Jobs的一夜暴富让很多人红了眼,HP和IBM都在其中,这两大电子工业的巨头在口水快要淹死自己的同时都冲向了这个广阔的天地。IBM的PC——个人 电脑——其创意也是直接出自小Watson之手,但他万万没有想到的是,这个发明改变了整个世界的面貌!

在此之后的几十年,IBM同HP同一些兴起的小公司一起争夺PC业的霸主地位。像所以其它的事物一样,这既是IBM鼎盛时期的开始,也是必将衰落的标志, 原因很简单——它背离了自己的灵魂。在与这些公司竞争的过程中,IBM渐渐力不从心,这段时间的历史被载入了很多大学MBA的案例教材中,简单数数就会知 道,作为PC发明者的IBM很少能在这个领域呼风唤雨,成本是Dell的,新技术是Compaq的,家用电脑是HP的,时尚是Apple的,同时它还免不 了要看看Sony和Fujistu的脸色。为什么当年能在技术界称王称霸的IBM会和这些以制造业为基础的企业处在同样的竞争集团呢?这个问题的本身就是 答案。一个企业当他在自己的发明上挣够了钱之后,他就面临做精做细的问题,有些公司能处理的好,比如Adobe,有些不能,比如Apple,这不是能力问 题,这就是生活,他总是多姿多彩的,玩的起的人上天堂,输的起的人走四方!

不是谁发明了什么就一定能把它做好的!可惜绝大部分技术出身的人不能想通这个问题,即使想通了,轮到自己了也不会去做,这需要多大的勇气啊,让技术人员去 选择技术根本就不是一个稳重的大公司会做出的决定,可惜直到90年代IBM才意识到这一点,此时的IBM已是内忧外患,四面楚歌,这个时期的最后一位 CEO曾计划将IBM拆成13个子公司,彼此业务比较独立,(幸好没有让他得逞,否则人类将失去真正宝贵的财富),自身的危机和整个行业的不景气已经让他 成为一头“瘦死的骆驼”,而接下来的三个字也特别需要一位具有独特思维方式的CEO才能续写。

3。IBM的复苏。
IBM求贤若渴,董事会雇佣的猎头公司几乎跑遍了每一家IT企业,去挖他们的CEO,其中最富有戏剧性的,就是猎头公司居然找过GE的Jack, Apple的Jobs和Microsoft的Bill Gates!韦尔奇认为IBM需要认真考虑自己的业务,不该做的就不要做,至于IBM究竟哪些是不该做的,韦尔奇认为IBM在很多领域已经不占优势,最好 的办法就是IBM开拓新的领域,不仅可以卖电脑,还可以卖其它电器。Jobs认为IBM应该和Apple合并成一个公司,专心致志研究如何生产个人电脑。 Gates则认为IBM应该老老实实生产大型机,不要干预低端业务和个人领域。董事会在一次又一次的会议中几乎失去了他们所有的耐心和信心,这些疯狂的人 是不能引入IBM的,可如果没有一个能力和洞察力的双料冠军,IBM就不得不面对拆分的境地。还好,猎头公司没有让人们失望,他们为IBM找到了一个再一 次被收入主流MBA案例教材的借口——一个不懂技术的人可以入主计算机技术的发源地吗?——而他,就是Louis Gestner。

Gestner坚决反对拆分IBM,他认为IBM最重要的一件事就是调整姿态,把自己摆在一个正确的位置上。他问每一个员工:“IBM是一个怎样的企 业?”员工回答:“IBM是一个科技企业。”STOP!不要再说“IBM是一个科技企业了!”IBM哪里有一个科技企业的样子。Gestner说: “IBM是一个服务型企业!”他率先带领管理层代表团访问了很多大客户,比如P&G,此举令P&G受宠若惊。他广泛采纳客户的意见,他经 常动辄邀请200个大客户参加一个会议,为的就是想要知道客户需要什么。技术圈里的人们总是固执的认为,卖一件具有高科技含量的商品才是挣钱的道理, Gestner却要告诉人们“挣钱没有道理”,要想发展科技,就要养活一批高科技人才,要想养活这些全球顶尖的人才就要钱,大量的钱,而这些钱只能靠卖服 务来挣。在Gestner执政的时间里,IBM发生了历史上最大规模的变革,且是两代Watson父子想都不会想到的。

IBM从此变成了一家以客户为核心的价值整合型企业。在硬件方面,Gestner坚信不能要的就是不要。他首先卖出了IBM的大型机部门,可是IBM发明 了大型机!Gestner说“不是谁发明了什么就一定能把它做好的!”不久,他又卖出了IBM硬盘事业部,可是IBM发明了硬盘!Gestner又说“不 是谁发明了什么就一定能把它做好的!”如今,IBM又卖了他的PC部门,可是IBM发明了PC,Gestner虽然已经卸任,他也丝毫不回避这笔他一手创 造的买卖,“不是谁发明了什么就一定能把它做好的!”

在软件方面,当Gestner把玩IBM的数据库时,人们的惯性思维认为Gestner也要把数据库部门给卖了,因为是IBM发明了数据库,可是大人物做 事往往出人意料,Gestner不但没有卖掉数据库部门,反而大规模追加投资,让IBM派出史上最强大的研发力量把数据库包装成他的第一个软件品牌 DB2。此后Gestner悉心听取客户的意见,客户说需要具有协作能力的Office,IBM就强行收购Lotus;客户说需要加强网络管理,IBM就 买下了Tivoli;客户说需要中间件,IBM又包装了所有此类的产品为Websphere;即使在Gestner临卸任之前,他还谈妥了IBM收购 Rational的事宜,至此,IBM已经从一家做硬件的厂商,转变为拥有五大软件品牌的新蓝色巨人。

Gestner终于可以说一句“瘦死的骆驼比马大”了,虽然IBM已经不再是从前的IBM可是Gestner让他重新找回了自信,好比一个失去光芒的普通 石头,在Gestner的手上变成了另一种形式的艺术品,再次散发出了迷人的魅力。这些岂能是韦尔奇、Jobs和Gates能想到的!这就是一个非技术人 员成为IBM的CEO之后的事。此后,很多大公司纷纷效仿,HP请来了漂亮了女总裁,微软换了富有亲和力的鲍尔曼,都企图显示出自己重视客户的一面,改善 其与大客户之间的关系。然而Gestner绝没有他们想象的那么简单,在让IBM转型为一个服务企业的同时,Gestner又重新重视起IBM的科研力 量,失去的军方订单又回来了!IBM在恢复了商业巨头的形象之后又恢复了他的科技巨人形象,很多在抢夺PC业霸主地位时停滞的项目又重新焕发出了生机,这 些都是其他CEO没有想到的,他们面对的又是一个双料型的IBM,他们不得不再次朝圣以维持对计算机前沿技术的追随,Gestner没有让IBM偏离了轨 道,而是让他重新回到了大小Thomas父子领导IBM的那个年代,让他重新拥有了崇尚科技的氛围,让他重新回归了自我,百年IBM,百年回归!

4。IBM的神话。
Gestner几乎让IBM上演了一出“The Return Of The King”,这在其它公司眼里仿佛是一种潜移默化的变革,而在Gestner眼里却是一种长期战略部署和细节性技术态度的有效结合。在硬件的领域, Gestner要说的只有一句话,做不好就不做,没什么大不了,他认为官僚并不是IBM的致命弱点,相反,官僚有官僚的好处,那就是稳定,可信赖。想想 吧,一个像微软一样的公司,对于以往的技术说不干就不干了,大客户怎么放心的下;一个像HP一样的企业,总是因为分脏不均就赶走自己的总裁,大客户怎么放 心的下。Gestner认为IBM最大的问题不是他的官僚,而是他不能轻便的革新。在他入主IBM时,Sun主席Scott McNearly曾讥笑IBM要变成International Biscuit Maker(因为Gestner以前是雷诺的接班人候选,后者拥有全美最大的饼干生产企业Nabisco),Gestner没有让IBM去生产饼干,但他 却把IBM变得像一个饼干生产商一样灵活。没有什么是IBM一定要做的!没有什么是IBM一定能做的好的!没有什么是IBM能做好却又不做的!概括成一句 话就是“谁说大象不能跳舞”!

在软件的世界,Gestner仍然笃信这句由他自己创造的名言。他从不回答“哪些技术是IBM要做的,哪些是IBM不要做的”这样的问题,他总是会说“我 不是个搞技术的,这个问题我不懂”,可他却有独特的眼光和思维方式。对于任何一个软件技术,他总是带着IBM分四步缓慢进入:
1。观望。这时的IBM会说“我不做,但不排除我以后不做”。
2。研究。你会在IBM的alphaworks上看到很多关于该技术的文章,此时的IBM在向人们传达的讯息是“我不做,但是如果我的客户做,我奉陪!”
3。浅尝辄止。你会发现alphaworks上出现了该技术的专栏,IBM将相当一部分应用迁移到了该技术,可是这又怎么样,IBM在说“我做,不过随便做做。”
4。全力出击。到了这个阶段,你会发现IBM给其它该领域的竞争对手以窒息的打击,IBM像是在说“现在轮到我了,你们都不要做了!”正如Gestner在自 己的书里写的一样,“问题不在于大象能不能跳舞,而在于一旦大象开始跳舞,蚂蚁必须离开舞台!”一旦IBM开始动手,其他人才反应过来已经为时已晚。

如果你不信,可以看看Java的例子,当1995年Java诞生在Sun手里的时候,IBM持的态度是观望;1997年www蓬勃兴起,大量Java小应 用程序被应用在Web领域,IBM也做了很多,还做了JDK,此时是研究;到了1999年,Java企业版开始红红火火,大规模大利润的应用服务器浮出水 面,IBM终于看到了切入的时机,Websphere的出台让IBM“随便玩玩”;直到人们看到了以Eclipse命名的产品在2001年出台时,人们才 真正意识到IBM的野心,“一旦大象开始跳舞,蚂蚁必须离开舞台!”再看看Linux的例子吧,当IBM对Linux的支持如日中天成为Linux社团一 道亮丽风景的时候,当Linux的崇拜者们仰视IBM,等待IBM抛出一个主流Linux产品的时候,IBM却浅尝辄止,只要他的大部分产品都可以平滑过 渡到Linux就可以了,“我随便做做,你们玩吧”。

有时我们也在想,如果Gestner不是Gestner呢,如果他是一个懂技术的Gestner他还能不能做到今天的这种战略思维呢,我们不得而知,历史也不允许假设,但有一点可以肯定,只有创造奇迹的人和见过奇迹的人,才会相信奇迹的存在。

谁说泡泡不能跳舞

posted @ 2005-04-16 08:09 Brian Sun 阅读(3168) | 评论 (26)编辑 收藏
又是很久没有写Blog了,这两天大量的时间贡献给了两件事,一是看Eclipse的源代码(工作需要),二是不断回复以前写的文章的评论。今天请了假, 抽了点时间来讨论讨论重构。下面写的东西您可能不太赞同,可能没有遇到,也可能有其它更好的办法,而我的观点来自于我对Eclipse源代码的理解和感 悟,无论您有什么想法请评论告诉我,不甚感谢。

1。如果让您随手写一个类,多半人会写出一个以名词命名的类,是的,我们的软件中大量的类是以名词来命名的。一个名词表明了一组对象的共同类型,那么这个类型一定包括该组对象的共同属性和共同方法。

2。在几次迭代之后我们发现类的属性和方法都增多起来,这种粗放型的发展不利于软件系统的整体结构。而事实上,有很多类在80%的时间只需用到20%的属性代码,而20%的时间却需要用到80%的方法代码,因此,将访问率不同的属性和方法分开是必然的趋势。于是有了Descriptor模式,它将一个原始类分成属性集中化和方法集中化的两个类,属性类的命名方式采用原类名+Descriptor的方式,方法类可能沿用原名称,或重新取个名字以动词命名。这种重构还有一个好处就是属性类随时可以加载,而方法类可能要到需要用时才懒加载。

3。在经过多次迭代的增加该类的代码之后,我们发现Descriptor类的属性增多起来,过多的属性使代码变得重量化,同时使结构变得不清晰,一个拥有 过多属性的类也会因知识过多而不易维护,此时最好的方法是将这个类分裂为两个,或多个。分裂的方法也有横向和纵向两种。横向的分裂使类变成两个不同的类, 它们往往叫两个不同的名字且都为名词,同时也可能互相持有对方(Change Unidirectional Association to Bidirectional

4。纵向的分裂方法(Extract Class)往 往会将比较公共的部分分离取名为原类名+Model,另一个类名称不变,Model类是后者的父类。加过Model以后的类轻磅了很多,更便于管理,责任 也更轻。至于哪些属性应该放在父类界限不是很严格,通俗的办法是和原类名紧密相关的(特有的)属性应该留在原处,不是紧密相关的(特有的)放在Model 类,比如ID、Label什么的就应该放在Model类。

5。上面的方法反复用几次,属性集中的类就会变得越来越多。这时软件结构虽然看的很清晰,可是使用起来大为不便,因为很多相关的属性可能会在同一个场合下使用,而它们的实体却可能分布在不同的对象中。解决这个问题的方法只有增加接口的数量(Extract Interface),多使用一些小接口,每个小接口表达了一个方面的含义,使用者在使用这些小接口时无法触及它的实体对象(Prototype), 这种方法的优劣性在于使用者对于架构的理解,如果用的好这种方法会显现出很多面向方面的特性,如果用的不好则是画蛇添足,导致了接口的泛滥(还记得Dll Hell吗,Java是不是正在形成一个Interface Hell?Eclipse是不是正在形成一个Plugin Hell?)。

6。在大量应用了方面接口之后,我们又面临着这样的问题,很多使用这些Model的人其实只是关心其中的一部分固定属性,和几个为数不多的固定方法,有时连重量级方法都不关心,只关心用以交互的查找型get方法,对于这些使用者,我们只需提供一个门面(Facade)即 可。一个Facade包括在一个Model类和Descriptor类的群体中提供一组可以找到任何一个属性的线索,其中的每一个线索都开始于 Facade,结束于存放对应属性的属性类,且遵循“最常用到的属性,其线索最短”的原则。因而Facade绝不仅仅是一个类,而是一个完整的体系结构。

7。接下来还有一个持久化的问题。如果一个类型存在对一个复杂类型的引用,这个复杂类型很可能被深深的隐藏在Facade之后,而且很可能是个不可持久化 的类型,那么如果前者要持久化,它只能保存一个该复杂类型的关键码,并在持久化唤醒时很容易通过某个服务取到该关键码所对应的对象。这个复杂过程没理由要 求Facade以外的类来完成,因此有了Reference模式(Change Value To Reference),即为那个复杂类型定义一个类,类名为原类名+Reference,其责任是保存原类型的关键码和查找原类型的真实对象。Reference类通常定义为可持久化。该模式的另一个好处是不必要常常访问Facade,因为一个Facade也有可能极其复杂。

8。在分析完属性集中化的类和类群之间的关系之后,我们来看看方法集中化的类。这个类也有可能面临方法激增的问题,此时想把一个类拆分成多个可没有拆分属 性集中化的类那么容易了,因为它们往往相互调用,耦合度极高,但又不能不拆(还记得Kent Beck曾经说过的吗,“如果一个类的责任超过三个,我们就必须把它拆开以保证每个类的责任都不超过三个”)!幸好我们有Delegate模式可 供选择,一个方法类可以由它的访问子和工作子两个角色来完成,就像销售部门和生产部门一样。访问子还以原类名来命名,但是它不做实际的工作,只作实际工作 的准备工作(比如收集信息)和后续工作(比如转换结果),生产性的工作交给工作子完成,后者通常以原类名+Delegate命名。这样做的另一个好处就是 Delegate类可能很重磅,并面临大量的资源分配,因而可以懒加载。

9。现在我们有了一个不错的体系结构,它包括一些轻量级的类、类的关系和设计模式,但是,不要以为这些东西是开始时就设计好了的,即使神仙也做不到那样,令人惊奇的是,它们都是从刚刚您写的一个名词开始的。^_^

经常重构的泡泡

posted @ 2005-04-13 10:54 Brian Sun 阅读(2463) | 评论 (4)编辑 收藏
最近接二连三看到好几篇讥讽Firefox的文章,文章的作者大都是拿出现在几款流行的浏览器软件相互比较一番,然后得出“Firefox无论性能还是功能都不够好”的结论,然后再说Firefox社区的网民都TMD“不够冷静”,国内国外都像炒股票似的把这个原本“不怎么样”的产品抄的沸沸扬扬,如此如此,这般这般,我真的实在是受不了了,是到了我们这些人出来为Firefox正名的时候了!

首先,我们从Firefox的来出看,Firefox是由Mozilla基金会开发的轻磅浏览器,在此之前,Mozilla已经有很多浏览器了, Mozilla Suite,Netscape都是Mozilla开发的浏览器。那么在这种情况下Mozilla为什么还要做这样一个浏览器呢?我给出的答案包括两个部分:有效性和必然性。有效性参看我的另一篇Blog[]。必然性则是因为Mozilla 迫切需要一个平台来展示他的思想、理念,并告诫正在以网页为经营手段的人们标准化的重要性!请永远记住下面这个等式:

开源软件基金会 = 软件界的传道者

他们做这些事情根本就是无利可图,只能依靠别人的捐助作为开发软件的成本。比如Firefox在刚刚上市放出beta的时候,为了扩大影响力, Mozilla决定登一则广告,于是四处筹集资金,最终从数千家赞助商那里筹集了25万美元的资金,并于2004年12月中旬在The New York Times上打了两个全版广告!你想想啊,数千家软件企业的期望,就为了这两个页面的广告如果说句不好听的话这两页纸会被多少人在上厕所的时候阅读然后索性用来擦屁股完全可以通过广告业的市调公司通过概率算出来!这是为了什么?我记得自己刚刚上网的时候就有人告诉我网络上什么人都有,但至少可以分为四种:商人、教父、狂热者和迷途青年。微软是彻彻底底的第一种人,Mozilla、Eclipse、Apache、JCP都是第二种,Maxthon是第三种,幸好这个世界还有传道者们的存在,否则我们都会变成第四种人,只会跟着商人和狂热者们走路。

是的,Mozilla正是要通过Firefox教诲我们他的圣经。有些人认为Firefox就是一个使用Gecko的Maxthon,我想说这些人大错特错,根本没有理解Firefox。引擎的不同是小事,遵从于标准才是正道。MSIE使用了大量的“专有技术”,使得别人针对MSIE开发的网站在标准化(一般指W3C标准)的浏览器上不能正常显示。也许有人会问,这个很重要吗?既然现在MSIE的用户数量如此庞大,那我们针对MSIE开发自己的网站又有什么错呢?答案是很重要!有错!我举个简单的例子,我们比较一下两个互为竞争对手的网站:IBM和Dell,他们都卖个人电脑,Dell的网站只能在 MSIE上正常显示,IBM的网站无论哪个浏览器都可以,这说明IBM遵循的是行业标准,而Dell使用的是微软特性。然后我们再看看他们两家公司的产品:IBM的电脑,捆绑什么操作系统的都有;而Dell的个人电脑,全部捆绑的是Microsoft Windows!还用我再解释吗?

有人认为Firefox占用太大内存了,我想问问他有没有用过Java,感受如何?Firefox占内存不是Firefox的问题,而恰恰在于操作系统 Windows的不合理性。Firefox的存在就有一个很重要的任务那就是跨平台,Firefox要用底层代码实现一个平台无关性体系结构,既是为了传道,更是为了那些从开源软件中收益的人们。有人认为Firefox结构太复杂,我想问问他有看过xpi文件的结构吗?xpi文件就是一个zip包!这一点又是Firefox从Java世界学来的,这还能叫复杂吗?比dll文件还复杂吗?Firefox还有比Java更绝的——允许插件使用COM!并且能在非Windows平台上虚拟出一个COM服务,这使得为Firefox编写插件变得更为简单,和可移植。如果Google为MSIE写了一个插件,那么他把这个插件移植到Firefox上的工作量只占10%。

有人认为Firefox功能太少,天哪,你不知道自己下插件啊!Firefox从一开始就没有把Maxthon作为自己的竞争对手,你知道是为什么吗?因为Maxthon在增强用户体验方面确实做的很好,而“Maxthon不足的地方不是Maxthon本身的问题,仅仅来源与它使用的是IE内核,所以 Maxthon会有很多安全性和稳定性方面的问题”。Firefox的对手是MSIE,为了更好的和对手较量,Firefox把增强用户体验的工作也交给了第三方插件开发商,毕竟Mozilla没有多少人手啊。Firefox所实现的都是不得不实现的,这恰是现代成熟的软件开发方法论所要教诲我们的。你看看:多页签是能力问题,换皮肤是架构问题,搜索条是易用性问题,DOM是规范化问题,JavaScript和XUL描述界面是平台无关性问题,XPCOM 是平滑迁移问题,而RSS则又是另外一个标准问题!哪一项是还可以从Firefox中剥离出去的?

至于插件吗,Firefox的主管说的很好,他说Firefox面世后只用了两个月的时间就获得了Maxthon花两年时间都没有的插件数量,这还不能说明问题吗?最近拜读了一位ACM老牛人写的关于插件服务的文章,其中提到良好的插件服务有两类,一类适用于单用户环境下大幅度提升可伸缩性,这种架构的完美实现就是Eclipse,另一类适用于多用户环境下大幅度提升安全性、稳定性和一致性,这种架构的完美实现就是Firefox。Firefox率先使用 RDF来描述插件,使用jar文件来打包资源描述,使用“中间定义语言”IDL来描述公共的COM接口,这些都是其它软件体系结构所没有的,也是大量软件架构师敢想而不敢做的!

最后一个问题就是Firefox不仅仅是个浏览器,还是一个RIA,就像Eclipse不仅是个IDE,还是个Platform一样。可以参考我的另一篇 Blog[](我今天怎么老是做广告啊),以后我还打算写更多关于RIA的文章。

在批驳了这些人的文章之后,让我们再来看看Firefox究竟是个怎样的产品。下面我仅仅列出我所看到的Firefox的优点,至于这些优点是否会让您迁移到Firefox平台,我并不奢求,这是您的价值取舍问题。

1。标准化。

2。简洁化,最小内核化。

3。平台无关性。

4。安全型RIA。

5。多用户环境下的插件管理。

。。。。年轻人,开在我们有缘的份上,我决定卖这本<<如来神掌>>给你。。。什么?这本不合适啊?别急!还有很多本。。。。。。


说三道四的泡泡


posted @ 2005-04-08 23:53 Brian Sun 阅读(4321) | 评论 (25)编辑 收藏
下面介绍几种具有坏味道的代码结构,其中很多经验学习自Eclipse,与Martin Fowler不同的是,我找到的几种坏味道都存在于设计理念之中,而不是缺乏设计模式的抽象,也不是未重构的代码。先别急着反驳,也别急着嗤之以鼻,先想 想这些设计理念的优点,看看是不是微不足道,再看看这些理念的缺点,是不是有可能铸成大错,作者还给出了去掉这些坏味道的某个思路,即作者自己的思路,仅 供参考。最后,别忘了想想自己手中的软件的设计,看看会不会遇到其中的熟面孔啊。。。。。

1。味道:控件耦合。
“如果第一个复选框被选中,那么下面的文本域全部失效。”通过这种方式表述的效果在软件开发中经常遇到,很多人称之为“界面逻辑”,想想看,界面逻辑真的可以直接变成代码吗?
典型重构思路:有限状态机。
状态与控件属性集一一对应,控件属性被改变时,状态机收到事件,检查状态是否发生了迁移,如果是则向控件属性集的控制器发出状态迁移事件,控制器批量改变控件状态。

2。味道:控件/绘制器存在状态。
有人认为Motif和Windows已经差别很大了,有没有想过它们和IBM收银机上的字符界面差别有多大呢?既然差别这么大的绘制器仍然存在相同的复杂了(有时是很复杂的)状态,那我们为什么不把它们extract出来而要让它们冗余呢?
典型重构思路:视图的模型。
视图有视图的模型,并不是MVC中的模型,这种方式就是Swing的基础。

3。味道:视图发出有意义的事件。
什么?你的意思是视图应该发出无意义的事件咯?不是这样吗?视图应该不了解任何业务逻辑,也不应该了解任何界面逻辑,如果界面逻辑真的存在的话。
典型重构思路:事件翻译器。
视图发出无意义的事件,比如鼠标事件,键盘事件,或某个控件的事件,事件翻译器把低级事件翻译为高级事件,再把高级事件包装成请求,请求被传递给一个根控制器。

4。味道:动作/命令知道自己的形象。
很多时候,一个Action或者一个Command都知道自己叫什么名字,能不能被禁用,有没有被禁用,图标如何,甚至还知道及时帮助的字符串,执行需要什么条件,返回什么结果等等,如果这么做的话Action和Command就有了自己的视图状态,发出了第2种味道。
典型重构思路:动作代理。
重磅的工作交给代理完成,动作/命令只是一个视图的模型罢了。在UI系统装载之初,动作/命令被装载并绘制在界面上,直到用户点击或触发了这个动作/命令,它的代理才被调入并开始工作。

5。味道:模型知道自己的每一个用处。
有n种视图对应同一个模型,比如对一个网页制作工具来说,一个html文件至少有三种视图:代码、设计、预览。如果模型同时能满足这三种视图的需求的话,这个模型就太重磅了,而且还不好添加一种新视图。比如Dreamwaver的代码/设计页面。
典型重构思路1:一个模型,多个维度。
如果一个模型拥有n个维度,则n个对象,就可以确定一个事实,n-1个对象就可以得到一个线性聚集,n-2个对象就可以得到一个二维表。每个维度就是一组Interface,而事实的类型,其实是不可见的,(内部的巨大类型),只能通过维度确定事实,再提取事实的属性。
典型重构思路2:适配器模式。
模型首先实现最必要的接口,然后当需要模型实现某个非必要接口时,模型会主动或被动的适配为一个满足需求接口的“意外”对象。

6。味道:控制器变成顾问类。
有些人认为我们的社会需要复合型的人才,因为每个人都要具备管理的能力,控制器也要懂管理,它要负责视图和模型之间的交互。但是仔细想想,如果被模型以外的对象知道了业务逻辑的话,那模型还可以替换吗?
典型重构思路:控制器标准化。
控制器将请求包装为命令,并将命令交给命令堆栈执行。控制器并不了解模型,模型只能由模型自己了解,控制器也不知道领域逻辑,它只是做一些机械的翻译工作,并利用视图和模型提供的(互补相关)的素材,创建和模型相关的命令。

7。味道:模型变成无所不知博士。
在没有发生上面六种情况的时候,千万不要大意啊,你很有可能发生了这一种情况,恰恰是因为控制器和视图都不知道业务逻辑,模型才有可能发展为Dr.Know。但是视图往往是树状结构的啊,它怎么和Dr.Know合作呢?通过代理?还是Facade?
典型重构思路:复杂模型结构(树状、图状、知识/操作分离)。
如果有可能,模型也是树状的,可以和视图一一对应;如果这一点做不到,不要紧,可以把大模型划分成轻量小板块,或者迭代子,再用关系对象解释它们之间的关系;如果还不行,那总得做到知识和操作分离吧。。。。。。。

做软件的泡泡



posted @ 2005-04-08 02:57 Brian Sun 阅读(2430) | 评论 (5)编辑 收藏
终于有时间让我们冷静下来好好谈谈Google。好在现在是凌晨,我打开了窗户,这样很冷,但是可以让我的脑子更清醒一点,看看这个我们的生活已经离之不得的工具——尽管几年前我们还没有——看看它到底有什么可谈论的话题。

在我们谈论它之前首先我要感谢它,愚人节那天Google将我的邮箱升级到了2G,感谢它给我的这个节日礼物,尽管我半年内只用了5M。

1。Google以前做什么
在Google出现之前人们只有一种搜索引擎,那就是分类引擎,这个想法来源于Yahoo,或者可以说来源于图书馆。后来人们在想如果网页不是由“人类” 添加上去的,而是“机器”自己找到的那该有多好,实现这个理想就意味要用大量的Spider搜寻整个互联网。“嘿,等等,机器怎么知道鸡肉的味道?我是说它们很可能搞错了,这有可能是三文鱼的味道!”就像<<黑客帝国>>所担心的一样,Spider怎么才能知道我们需要什么能?于是有了动态的给每个网页评分的办法,这个办法就像小朋友们做游戏,别人对你的评价要远远重要于他们对你的拜访,PageRank就是这么来的,在结合了几种天才的想法和可行的技术细节之后,人类智慧的结晶,人工智能的当代经典,Google诞生了。

Google用大量的服务器(数以万计)做着每日的网页查找,每个线程就是一个Spider,每个Spider的工作就是从一个网页去另一个网页,检查他们是否已更新,是否废弃,是否存在新创建的页面,评价他们之间的关系,生成快照,并将数据存入数据库。Spider需要很好的协调以避免重复的劳动,同时他们需要确定工作范围的优先级,否则就会“跟不上时代的变化”或者干脆淹死在某些每秒种更新数千次的网页中。在确定了两张网页的关系之后,Google分别更新他们的PageRank得分,这个得分显然已经不是一个公式能够说清楚的了,它总是处在动态更新之中,但PageRank的大意就是,别人对你的连接数量越高你就越有价值,Google就越让你的位置靠前。

Google的出现使互联网的应用向前大大迈出了一步,大量可用性很强的信息资源立即出现在它的需求者面前。为此,权威的PC Magazine将Google和同一年出现的<<The Sims>>同时称为人工智能的经典作品。但也正是Google的这种优秀表现使人们开始了先知式的担忧,著名评论家Dvorak认为 Google的存在改变了以往“小公司大喇叭”的商业格局(借用了Chuck Martin的说法),它再次使互联网变成庸俗的经过资本市场洗礼的温顺绵羊,人们真正需要的东西可能会被排在后面或者根本找不到(比如我的Blog,),而商业化的东西往往占据重要的位置(比如MSN的Blog!),最麻烦的是一旦人们依赖了Google,它就会不自然的扼杀人们对通过其它途径找寻信息的兴趣和勇气。从个人感情角度来讲,我认为这个论调是很有道理的,可这个问题的提出方式已经超出了本文讨论的范围,就像是一个生活态度问题:即使麦当劳再提供100倍的温馨服务,它也无法击败我家楼下买锅贴的;也不能指望USR公司自己维护NS-5机器人的安全,v这些都只能靠别人。同样,假如Google真的谋杀了互联网的本质,那么我相信拯救我们星球的会是一个更体现互联网本质的Hero,而不是Google自己。

2。Google后来做了什么
正如我们所期望的,Google迅速成长为互联网企业的新兴代表,不断优化的引擎使我们获得了快速获取免费信息的途径,在一片叫好声中,Google开始向其它网络产品扩展。比如Google新闻,就是对Google这个巨大资源库的一种非结构化应用。现在Google新闻不仅有了搜索能力,还有了自动选择能力,这是在公开的抢报纸编辑的饭碗。再比如Google图像搜索,也为我们解决了不少难解决的问题,还有Google Group,这些服务使Google看起来更像Yahoo,或者MSN这样的门户网站,而事实上Google用来实现这些功能的成本比其竞争者要小的多,原因很简单,他们用的是人,Google用的是Spider!Google就像互联网领域里的Matrix,随处可见。

在提供了这些网络产品的同时,Google还在客户端与竞争者们一决高下,首先是浏览器的工具条Google Toolbar,起初我觉得很有用,后来觉得没什么用占地方还损失性能,但是现在看到Firefox和Google结合的这么好,又开始使用了。然后Google推出了用于推广它自己的极好工具,这就是著名的Google API,在付出少许费用之后,你就可以在自己的程序里使用Google了(通常是Java),我曾经还一度想做一个Flash版的Google呢。此外还有用于处理“科学难题”的网格计算:Google Compute,模仿捐献家用计算能力以分析外星人电波的SETI@home,后者由Stanford提供。

Froogle也是一个伟大的设想,虽然它还没有中文版,但我已经领略到了它的能力。它提供一个商品的搜索引擎,让你可以在需要时浏览商品的价目和图片。这使得Froogle有时看起来很想ebay,况且Froogle还有它的WAP版,也就是移动版。Google Local又是一个有价值的作品,它使得Google可以作为旅游指南或者地图使用。即使是Google的web搜索也有了很多衍生用法,比如瞧天气啦,找手机归属地啦,当计算器用啦,当词典用啦,反向搜索啦什么的。

3。Google现在做什么
在客户端的竞争中Google并没有占到什么优势,MSN反而成了受益者,你想啊,搞软件设计谁能搞得过“买块肉SOFT”,Netscape、 Apple、IBM都尝试过,也不怕Google多尝试一次。但是Google却在这种内忧外患的情况下上了市,而且市场反映一片叫好!为了推陈出新,保持股价的攀升,Google采用了上市公司最喜欢华尔街最欣赏股民们最容易被欺骗的手法——虚伪扩张!一方面,Google大量投资研究操作系统、数据库和应用服务器这些网络商最赖以生存的技术;另一方面则投入大笔资金扩展业务领域,这种手段的优点是可以转嫁主营业务的成本和风险,做出更漂亮的财务报表,缺点是片面注重表面上的资源优化,往往错过改革技术和商业策略的最佳时机。

在Google陷入寻找新的扩展点而不能自拔时,一个新新人类的话题摆在了Google前进的道路上,这群人就是Blogger,他们要玩的就是Blog。说时迟,那时快!只见乌云密布,雷鸣电闪,咔喳一声晴天霹雳,Google站在Blogger.com面前,笑里藏刀的说:“天下英雄,唯使君与操尔!”在收购了Blogger之后,Google基本放弃了它建造blog.google.com的计划。

2004年愚人节,对于网络邮箱供应商来说简直就是一个鬼节,这一天Google推出了它的Gmail服务BETA版,它采用了非常具有神秘色彩并借助六度分隔和150法则而更具有神秘色彩的邀请发放方式。最令人头疼的是它提供1G的空间和压缩邮件(压缩意味着物理空间1G,而很多邮件供应商公布的空间是压缩之前的占用空间)。2005年的愚人节,Google更“丧心病狂”(开玩笑)的将这个数字增加到2G!跟进还是卖出?!这是其它邮箱供应商必须面对的一个抉择!

GDS(Google Desktop Search)是Google的另一个重磅炸弹,这个是用来对付微软的。是的,你没听错!当微软在它下一版Windows(长角)的计划中露出新版文件搜索引擎的设想时,Google已经把成型的产品送到了客户面前。但是在试用了几次之后我有点纳闷,为什么这个备受好评的GDS在我的机器上跟Lucene 一样难用(对不起一次骂了两位),它几乎搜不到什么有价值的文件——难道因为我用的是英文版?抑或是我没有掌握使用技巧?

4。Google遇到了什么困难
多少年来一个问题一直困扰着我,“一个以高科技著称于世的企业不会不在正面战场上胜过一个商业成熟的企业呢?”几乎每个受到工业革命和文艺复兴影响的人都会相信这句话。可恰恰是这句话导致了很多企业的失败。Google并未在正面击败Yahoo,相反,在与Yahoo的竞争中Google已经渐渐显出劣势的一面,这是由于“机器不能理解鸡肉的味道”的缘故吗?我们不得而知,但是有一点可以肯定,促使巴别塔停止建造的原因也在困扰着Google,简单的说就是全球化和本地化。在中文搜索引擎市场上,简体中文的第一是百度,其次是Yahoo,繁体中文的第一是Yahoo,其次是Google,日文版市场排名第一的还是Yahoo,第二名是MSN,俄文搜索引擎的老大也是俄罗斯的本地化引擎。面对这个局面,Google只能说OMG!(Oh!My God!)。下面这段文字摘自<<Google中文的三大软肋>>:

……据iResearch(艾瑞市场咨询)研究报告分析,百度仅用4年时间,远远领先于Google,百度拥有目前世界上最大的中文信息库,比Google中文更准确,更全面,快照功能也占优势……
……雅虎一直很重视本地化,收购3721则是最好的一例。在国内市场上,3721的本地化购物搜索非常好,再上本地化的商业搜索,更具竞争优势。从某种意义上来说,3721网络实名的目录,就是一个典型的中国本地化企业产品的目录。所以说,拥有3721之后,雅虎如虎添翼,对Google构成了更大威胁……
……在中文语言处理能力上,本地搜索公司的优势更让Google难堪。比如,《功夫》公映之前很久,在百度上检索“功夫”就能直接指向周星驰的电影,可是 Google搜索相同的“功夫”,则大失所望。因为这些时令性的关键词都需要专业团队去随时添加,由于Google缺乏专门针对中国市场的开发力量,尤其是对中国互联网信息检索存在的问题了解不透,所以,Google对于国内市场需求的反应速度很慢,本地化技术服务力量也跟不上,无法解决国内网民遇到的一些实际问题……

Google的新闻搜索也引来很大的争议,我们都知道如果一家媒体要摘录别人的新闻作为自己的新闻,那么他必须付费,可是如果这条新闻是搜索引擎搜出来的怎么办?如果这条新闻是和它的提供商几乎同时登出又怎么办?Google当然不会为他搜出来的每条新闻付费,而且,就像前面说的那样,Dvorak这样的同志又要大骂Google了,因为它扼杀了消费者冲浪的乐趣和获取别人没能及时获取的信息的喜悦感,以及Google的意志代替了互联网的意志等等。

5。Google以后会做什么
目前还不知道Google下一步想做什么,但是我们都知道了资本的魔力和技术的信仰在控制着它,这使它成为人类有史以来最有想象力的公司之一。

我们猜想Google不久就会开放它的Gmail供人们随意申请,但申请时仍需要提供一个唯一的其它邮箱的帐号,(就像非Logitech的老鼠标加钱换新罗技,随意一款老洗衣机加钱换新荣事达一样),现在Gmail的策略是每个用户可以邀请50个新用户参加,此外每20人次的Google Web Search使用就会放出一个新的邀请。

Picasa也将是Google发展的重头戏之一。前者是一个图片文件客户端,看起来好像很简单,肯定没有ACDSee做的好,但是在图片共享方面 Google可是从来没有放弃过啊。现在,Picasa又和Gmail结合到了一起,每个Gmail用户都可以用Picasa将图片上传到Gmail,这项功能大大加强了Picasa图片共享的能力。

此外,人工智能和大型计算技术也是Google发展的重要方向。不久之前Google发布了它的企业搜索服务器,虽然引来一路臭骂,但还是有一些专家认为这是个利好消息,说明Google正在别的盈利点上发觉自己的价值。概念已经有了,天价只是技术之不成熟性使然。这一趋势不仅可以从Google的产品上看出来,从Google的挖人策略也一样可见一斑。前不久,Google正式宣布它挖到了Java世界一只下金蛋的鹅——Joshua Bloch,这个人经常在我的梦中出现,要卖一本<<如来神掌>>给我! 对不起,记错了,是一本<< Effective Java>>。说说J.Bloch的历史,可能很多人都会感到惊讶不已。他首先创造了曾在危难时期令整个Java世界恢复自信的Collection Framework,并获得了当年的Jolt大奖;后来为了让更多的Java程序员从Collection Framework的设计模式中收益(当时设计模式还不是很流行),他又以此为题写了<<Effective Java>>,并再次获得了Jolt大奖;为了在Java世界引入元模型的魔力,他继而提出了JSR175(A Metadata Facility for the JavaTM Programming Language),并成为其首席专家;在Sun最危难的时刻挺身而出接掌Tiger(JDK 5.0)的大旗;在这之后,关于他的唯一新闻就是被Google挖走了。此外,Google还高薪挖走了无数把名字倒过来写我们都能认识的科学家, CSDN这样报道:

……接着,Google又把BEA的首席架构师Adam Bosworth拢入自己旗下。Bosworth在软件行业作为技术主管受到广泛的尊敬。在为新创企业Crossgain(2001年被BEA收购)工作之前,Bosworth曾在微软任职数年,并成功地从事于一些项目的开发,如微软的Access数据库。
他的跳槽来得太突然了,两个月以前,他还在供应商的“年度eWorld秀”中担任重要角色,并他的主题演讲中介绍Alchemy项目----一个建立下一代移动浏览器的计划。
Google的招兵买马计划一直在有条不紊的进行着,曾在SUN微系统工作的David Stoutamire,现在在Google工作。就在上星期,Neal Gafter,SUN公司的javac主管,也离开SUN转向Google。
不仅是Java方面,Greg Stein,曾是CollabNet项目经理,管理Subversion 项目并且发布了他们的SourceCast产品,现在在Google的博客软件组工作;Rob Pike,曾是贝尔实验室最初Unix团队成员之一,参与过Plan 9 和Inferno操作系统的开发,如今也投奔Google。
Google一直渴求人才,对于开发者来说,Google也是一个充满吸引力的地方。他只雇佣最棒的、最聪明的、近乎于天才的那些家伙,在笼络人才这方面,也只有微软可与之媲美。最近Java人才不断涌入Google究竟是巧合,或是Google准备尝试基于Java做一些事情,我们拭目以待……

如果我没记错的话,Google前不久还从微软挖走了一位足可以称为WindowsNT之父的人,Google之野心路人皆知。看看下面这则招聘启事也许你就会更了解这一点了:

Passionate about these topics? You should work at Google.
• algorithms
• artificial intelligence
• compiler optimization
• computer architecture
• computer graphics
  • data compression
• data mining
• file system design
• genetic algorithms
• information retrieval
  • machine learning
• natural language processing
• operating systems
• profiling
• robotics
  • text processing
• user interface design
• web information retrieval
• and more!
Send your resume and a brief cover letter to great-engineers@google.com.


6。Google应该做什么
这一节我们将抛弃所有商业的想法,认认真真的坐下来考虑一下技术问题,当然,这会使得我们对Google的要求过高,我们会把很多未能被实现的我们曾经的梦想都交给未来的Google,就像我们把Sun没有做到的强加给IBM,把IBM没有做到的强加给微软,把微软没有做到的强加给Netscape,把Netscapge没有做到的强加给Yahoo一样。

首先,Google应该认真考虑考虑语义网的问题了,我个人仍然认为这是互联网发展的正道。虽然RDF标准的发展雷声大雨点小,可是现在RSS已经如火如荼,这还只是语义网技术的一小部分,(就像WAP没什么用,但短信却发展起来一样),XSL和XSLT也是语义网的一小部分,它们将作为语义网与其展现之间的接口。我为什么要提语义网这个东西呢?举个例子你就能明白,比如我的Blog每篇文章每一页上都有菜单,都有最新评论、阅读排行榜和自定义列表,这些加速了访问者的效率,是富有亲和力的展现形式,但是对于Google来说这些都是垃圾,因为它们错误的表达了网页的含义,如果我要搜一篇阅读率极高的文章,可能搜出一堆没用的东西,而这些东西又不可能从页面上拿掉,所以Google必须自己去认。

反向快照可能是解决这个问题的临时方案。它的主要思想是Google首先发现别人是如何“描述”该网页的(通过链接的文字表达),再在该网页中找到与这个 “描述”相关的内容,把这部分内容作为该网页的高优先级内容,再把该网页与相同目录下的其它文件比较,将相同的部分列为低优先级的内容。(这是我个人想出来的方法,不知道可否奏效,估计可能会遇到性能问题

其次,Google将面临语义搜索的问题。这是MSN正在开发的技术,我相信Google也一定在做。这项技术的目的是让使用者同计算机之间的交互变得更人性化,看起来好像是用户像计算机提出了一个问题,计算机利用Google这颗大脑找到答案然后告知。哈哈,这个镜头是不是有点眼熟,它多次在好莱坞的电影中出现,比如<<AI>>中的Dr.Know(无所不知博士)和<<时间机器>>中的图书馆管理员,他们都是语义Google的愿景和Use Case。其中最有趣的是Dr.Know,他首先让用户选择类别,然后提问,问题按个数记费,答案往往只给出一个——当然是人工智能觉得最符合问题的一个。这提示了我们带类别的语义识别可能将成为语义识别技术迈出的第一步。再看看Google英文版目前提供的收费服务Google Answer~~~有点意思吧?

第三是模式学习。不客气的讲,Google一直在以自己的想法在搜索。不是吗?Google把Spider找到的所有页面都认为是资源,所以对其涵盖的内容一视同仁,对其表达的形式漠不关心,而正确的方式应该是将页面和搜索用户都看成用户,把页面人性化,从页面中吸取人类思维的模式,进行模式学习。这种技术给Google带来的好处是巨大的,其实现技术也简单于语义理解。打个比方,对于Sina被盛大收购,很多新闻网站都作为专题加以报道,而对于Google来说,要等很久才能把新浪和盛大这两个单词联系起来,这中间的时间包括其它由人来更新的网站的更新时滞,其它网站对这些网站的连接的更新时滞,这些更新被Spider发现的时滞,发现后PageRank更新到合理数值(中间可能经过多次迭代)的时滞等等。这使得Google明显慢于人的反映速度,这也就直接的造成了上面所提到的<<功夫>>不能及时搜到的原因。靠人工智能实现本地化,这是一条路。

第四是信息源的深层发掘。这使得Google能触及互联网的死角,就像洗衣粉尽量触及衣物的死角一样,(“有汰渍,没污渍”),例子很简单,如果我在网页中加入一段Javascript,就可以很容易把网页引到另一个地址,而这个地址很有可能是Google没有涉及到的,浏览器却可以访问。

第五就是不得不提到的网格计算。因为Google的客户来自世界各地,一个日本人拜访Google和一个印第安人拜访Google在99.99%的概率上是不会访问相同内容的,因此将这两个人所要访问的内容放在一起实在是一种性能上的损失。最近听说Yahoo已经将中文搜索服务器迁到国内,这正是为了性能考虑的啊。当然,分布式服务器已经可以做到这一点了,那为什么还要网格呢?解释这个问题首先要从解释BT的原理开始,BT之所以让人们下载的那么快就是因为BT让Downloader成为其它Downloader的服务器,这种P2P的方式充分利用了Downloader的机器的计算能力和上行带宽。Google也可以做到这一点,例如我、我的邻居、李彦宏(百度总裁)和杨志远(Yahoo创始人之一)四人同时搜索了同一个关键字,假定服务器在中国,李彦宏首先获得了响应页面,我再访问时,Google通知我找李商量一下,李毫不犹豫的给了我页面,杨志远的请求收到处理,因为它不便于访问李彦宏或者我的机器,所以Google又给他开了一个响应页面,最后处理的是我的邻居,他的请求被推给了我,因为我们处在相同的子网内所以交流更为方便。原本四次的检索变成两次,即使加上两次简单的响应,总时间也大大缩短,假若我们四个人拜访Google的机会分别是10:10:2:1,结果就更不言自明了。如果Google在网格方面多追加一些研发资金,自然会比Yahoo做的好,这是由Google软件的架构决定的。

写这篇文章花了我整整一天的时间,我写这篇文章的开始时间是4日凌晨0点04分,现在已经快到5日的0点04分了,可是我还意犹未尽,为了不影响手头上的工作我决定就此打住,如果您有什么想法,请回帖指教,谢谢。

累死了的泡泡

posted @ 2005-04-04 00:04 Brian Sun 阅读(8862) | 评论 (49)编辑 收藏
插件片段和功能部件

[参考:http://www.uml.org.cn/zjjs/zjjs24.htm]
[参考:http://www-900.ibm.com/developerWorks/cn/linux/opensource/os-ecfeat/index.shtml]

Eclipse 由插件组成,但在开发 Eclipse 的插件时,还要慎重考虑另外两个级别的组件 — 插件片段和功能部件。

插件片段(如名称所暗示的)是完整插件的组成部分 — 目标插件。片段提供的功能与目标插件的功能合并。片段可以用于将插件本地化成各种语言;在无需形成一个全新发行版的情况下,以增量形式将功能部件添加到现 有插件,或者提供特定于平台的功能。在许多方面,片段与插件一样。主要的区别就是片段没有插件类 — 片段的生命周期由其目标插件管理。此外,片段的清单文件叫作 fragment.xml,它列出了目标插件的标识和版本号,以及片段的标识和版本号。

另一方面,插件功能部件根本不包含编码。在 Eclipse 体系结构术语中,功能部件是将一组相关插件打包到完整的产品中。例如,JDT 是包含了象 Java 编辑器、调试器和控制台这样的插件的功能部件。名为 feature.xml 的清单文件描述了一个功能部件归档文件。在其中,该清单文件包含了对该功能部件所包含的插件和其它资源的引用、关于如何更新该功能部件的信息、版权信息和 许可证信息。

如果没有功能部件,插件是难以驾驭的,通俗地说,不属于功能部件的插件是未被管理的插件。Eclipse 平台的启动过程包括一个配置的步骤。如果一个新的插件被拷贝到 \plugins 目录,或者以其他方式使 Eclipse 在启动的时候可以找到,配置过程会发现它,但只是通过将新插件的 splash 图标闪烁两次来通知您。Eclipse 之所以会发现新的插件,是因为存贮在 \.metadate\.config\platform 中的当前工作区的配置校验和发生了变化;由于您没有向平台提供一个可以引导用户做出配置修改的功能部件,Eclipse 也只能是通过 splash-flash 来提示这一变化。将您的插件打包为一个(或两个)功能部件,您将获得如下好处:

    * 在 Eclipse 的配置过程中列出您的组件(在 feature.xml 文件中)所要求的先决条件
    * 使您的组件可以作为 Eclipse 配置的活动部分来管理
    * 创建标记信息,让使用那些使用运行期环境的用户可以识别您的组件,并通过一个欢迎页面来告知用户您的功能部件所提供的功能(在关联到您的功能部件的 welcome.xml 文件中)
    * 用 Eclipse 更新管理器可以对您的组件进行修改

不要等到您的插件开发完成后再打包为功能部件。反映在功能部件定义中的设计结果会影响您如何构建您的插件。例如,大多数的 Eclipse 组件都有 UI 功能部件和核心(不是 UI)功能部件。如果您的插件没有按这种方法进行划分,您可能会马上考虑重新设计它们。功能部件也可以用来自动编译处理被引用的插件。

posted @ 2005-03-30 18:11 Brian Sun 阅读(2080) | 评论 (11)编辑 收藏
1、 情况不同

一只小猪、一只绵羊和一头乳牛,被关在同一个畜栏里。有一次,牧人捉住小猪,牠大声号叫,猛烈地抗拒。绵羊和乳牛讨厌牠的号叫,便说:「他常常捉我们,我们并不大呼小叫。小猪听了回答道:「捉你们和捉我完全是两回事,他捉你们,只是要你们的毛和乳汁,但是捉住我,却是要我的命呢!」
立场不同、所处环境不同的人,很难了解对方的感受;因此对别人的失意、挫折、伤痛,不宜幸灾乐祸,而应要有关怀、了解的心情。

2、 自己

小蜗牛问妈妈:为什么我们从生下来,就要背负这个又硬又重的壳呢?
妈妈:因为我们的身体没有骨骼的支撑,只能爬,又爬不快。所以要这个壳的保护!
小蜗牛:毛虫姊姊没有骨头,也爬不快,为什么她却不用背这个又硬又重的壳呢?
妈妈:因为毛虫姊姊能变成蝴蝶,天空会保护她啊。
小蜗牛:可是蚯蚓弟弟也没骨头爬不快,也不会变成蝴蝶他什么不背这个又硬又重的壳呢?
妈妈:因为蚯蚓弟弟会钻土, 大地会保护他啊。
小蜗牛哭了起来:我们好可怜,天空不保护,大地也不保护。
蜗牛妈妈安慰他:「所以我们有壳啊!」
我们不靠天,也不靠地,我们靠自己。

3、 鲨鱼与鱼

曾有人做过实验,将一只最凶猛的鲨鱼和一群热带鱼放在同一个池子,然后用强化玻璃隔开,最初,鲨鱼每天不断冲撞那块看不到的玻璃,耐何这只是徒劳,它始终不能过到对面去,而实验人员每天都有放一些鲫鱼在池子里,所以鲨鱼也没缺少猎物,只是它仍想到对面去,想尝试那美丽的滋味,每天仍是不断的冲撞那块玻璃,它试了每个角落,每次都是用尽全力,但每次也总是弄的伤痕累累,有好几次都浑身破裂出血,持续了好一些日子,每当玻璃一出现裂痕,实验人员马上加上一块更厚的玻璃。后来,鲨鱼不再冲撞那块玻璃了,对那些斑斓的热带鱼也不再在意,好像他们只是墙上会动的壁画,它开始等着每天固定会出现的鲫鱼,然后用他敏捷的本能进行狩猎,好像回到海中不可一世的凶狠霸气,但这一切只不过是假像罢了,实验到了最后的阶段,实验人员将玻璃取走,但鲨鱼却没有反应,每天仍是在固定的区域游着它不但对那些热带鱼视若无睹,甚至于当那些鲫鱼逃到那边去,他就立刻放弃追逐,说什么也不愿再过去,实验结束了,实验人员讥笑它是海里最懦弱的鱼。
可是失恋过的人都知道为什么,它怕痛。

4、 神迹

法国一个偏僻的小镇,据传有一个特别灵验的水泉,常会出现神迹,可以医治各种疾病。有一天,一个拄着拐杖,少了一条腿的退伍军人,一跛一跛的走过镇上的马路,旁边的镇民带着同情的回吻说:「可怜的家伙,难道他要向上帝祈求再有一条腿吗?」这一句话被退伍的军人听到了,他转过身对他们说:「我不是要向上帝祈求有一条新的腿,而是要祈求祂帮助我,叫我没有一条腿后,也知道如何过日子。」
试想:学习为所失去的感恩,也接纳失去的事实,不管人生的得与失,总是要让自已的生命充满了亮丽与光彩,不再为过去掉泪,努力的活出自己的生命。

5、 钓竿
有个老人在河边钓鱼,一个小孩走过去看他钓鱼,老人技巧纯熟,所以没多久就钓上了满篓的鱼,老人见小孩很可爱,要把整篓的鱼送给他,小孩摇摇头,老人惊异的问道:「你为何不要?」小孩回答:「我想要你手中的钓竿。」老人问:「你要钓竿做什么?」小孩说:「这篓鱼没多久就吃完了,要是我有钓竿,我就可以自己钓,一辈子也吃不完。」
我想你一定会说:好聪明的小孩。错了,他如果只要钓竿,那他一条鱼也吃不到。因为,他不懂钓鱼的技巧,光有鱼竿是没用的,因为钓鱼重要的不在<钓竿>,而在<钓技>有太多人认为自己拥有了人生道上的钓竿,再也无惧于路上的风雨,如此,难免会跌倒于泥泞地上。就如小孩看老人,以为只要有钓竿就有吃不完的鱼,像职员看老板,以为只要坐在办公室,就有滚进的财源。

摘自:Papaya Fly [^] 感谢Papaya!

posted @ 2005-03-29 18:07 Brian Sun 阅读(1555) | 评论 (3)编辑 收藏
尽管我已经在不少原创的文章中评点过现代版权制度的是是非非,但是在Blog里说这个话题还是头一回。提到版权制度,我的观点就是,我理解那些版权所有者的愤怒,我同情那些版权支持者的执着,但我同样批评那些版权制度的维护者,他们正在错误的道路上越走越远。

1。软件版权
自青年才俊Bill Gates将版权制度引入软件界以来,盗版软件一天也没有停止过。拿国内市场来说吧,自王江民在磁道与磁道之间写正版信息,到金山红色风暴疯狂降价,自联 邦软件“我自豪,我用正版”精神激励法,到各大杀毒软件网上自动更新,正版软件与盗版光盘市场的竞争始终是软件从业人员优先考虑的问题。可是结果呢,这些 策略都以失败或基本不成功告终,即使正版软件的销量的增长速度大于PC使用者的增长速度也不能说明问题,因为盗版光盘仍然占据着大部分的市场。

但是今天,我们已经看到了盗版光盘生产商的末日即将来临,这不是因为正版软件采用了什么加密手段,而是得益于互联网的飞速发展,现在Google+BT就 可以下载到几乎所有需要的软件,我们完全有理由相信在不久的将来盗版软件光盘会把市场占有率降低到10个百分点以内。这种说法听起来有点搞笑,正版软件没 有了老对手,却不得不面对更强大的新敌人?!是的,问题不在于盗版,而在于正版。一个软件厂商想写点代码,做个可以在PC上跑的好玩好用的东东就可以一夜 暴富的时代一去不复返了,现在,正是软件厂商好好考虑考虑自己所提供的服务的时候了。我从没见过Eclipse或Apache或JBoss为盗版头疼过, 我也没见过网易或盛大或QQ视盗版为敌人的,原因很简单,他们不把软件当成产品卖,或者不把软件当成盈利点,他们卖的是服务!我并不主张所有的软件公司都 要放弃产品改卖服务,像用友金碟这样做ERP的企业照样卖产品也没什么问题,别人即使盗版了也没办法用。我也不是主张所有的软件公司都要开源,Java虚 拟机既不开源也不开放,但一样有上十亿美元的业务。为什么?因为他们都没有把自己和盗版商栓在同一个炸药包上!

这就是版权制度的问题,凭什么写代码就能赚钱?!现在已经不是程序员是稀有动物的年代了。想想吧,AIX和HPUX和MacOSX三种操作系统的盗版加起 来还不到1%o的市场占有率,Linux的正版常常会比盗版卖的更便宜,同样是操作系统,WindowsXP就惨不忍睹了,国内盗版的品种(光我看见的 就)不下20个。如果这还不能引起Bill Gates他老人家的注意的话,那么为什么连微软自己的核心工程师都认为DotNet没有前途了呢,原因很简单:一个软件公司,即使市值几千亿,也斗不过 整个开源社区。

2。书籍版权
书的盗版问题不是一个全球性的问题,也就是说,是个国内问题。国内书籍的盗版主要集中在两块,一块是制度问题,另一块,还是制度问题。

首先,书籍的销售渠道没有为正版铺平道路。比如说以前中央搞过“百城万店无假货”,虽说没有把假货斩尽杀绝,但是起码也树立起了真货的形象,让想买真货的 消费者知道了它的存在。书籍就不同了,因为很多消费者认为买盗版书没什么太大问题,所以就没有人提出“打击以假乱真”的问题,我在合肥时想表扬一家书店做 的不错,他们把正版书和盗版书放在不同的书架上出售,并明确告知消费者,这些是盗版,有一种没有欺负人的感觉。当时我就随手拿起一本盗版书翻了一下,没 买。一周后我偶然发现这本书出现在正版的书架上,书签还留在上次我翻阅时放置的位置!!!:(

其次,书籍的出版发行印刷渠道也有问题。现在的伪书特别多,很多书都写着“拿破仑·希尔 著”或者“杰克·韦尔奇 著”,其实他们根本没写过这些书,中央电视台告诉我们判别这些伪书的最好方法是去Amazon,搜这本书的书名,如果有再看看作者,如果也有再看看样章, Amazon上都有样章,简单翻译两句对比一下就知道是不是伪书。这种方法很有效,可是太麻烦,如果书店的进货伙计能够帮消费者这么做就没问题了,这就需 要数据库提供方与书店的合作了,假如某家书店同CIP合作,搞个什么诸如“powered by 中国版本图书馆”一定生意很火爆。

3。音乐版权
Napster早就被打到了,还在<<Italian Job>>上被人羞辱了一番,尽管他的创始人曾经和Bill Gates、Michael Dell一并称为IT三大神童。如果把Napster的倒台看成是音乐版权商的一次维权行为那就大错特错了,那是腐朽的音乐版权商向新兴的开放音乐服务供 应商发起的一次猛烈的报复行为,就像封建贵族必然会反对革命一样。我们希望那是最后一次了。另我们无法忍受的是,Napster仅仅是像ICQ和 Netscape一样的工具提供商,他没有从卖软件的方式上得到过一分钱,却一直在做正确的事情。另我们更无法忍受的是,Dvorak的数据表明, Napster出现之后,正版音乐光盘的销量比Napster出现之前提高了140%!这说明开放音乐市场无意中刺激了很多消费者的购买欲望,而音乐商们 却对这个数字视而不见。

在我看来,音乐版权最后的归宿也应该同软件一样,从卖产品转而卖服务。不信我可以给你举出很多成功的例子来,Real Networks是不是一个,MTV是不是一个,Channel V又是不是一个,他们都是不怕盗版的。想想吧,现在哪一首歌能比网络歌曲的流行速度那么快?又有哪一首歌在网上没有人把自己的翻唱版交付下载。我可以付责 任的告诉你,不久你就会发现某个新新歌手,刚刚灌第一张唱片,就已经被人翻唱过了,导致很多人不知道这首歌的原唱到底是谁?!此外,演唱会也是一种很好的 方式,就好像盗版DVD再多也不会影响电影制片商的“正常利润”,因为票房和广告收入是他们的主要经济来源。我相信,最终,真正合理的版权制度应该让歌手 的利益得到保障,至少是让他们不要为经济利益而担忧,这样他们才能全身心的投入艺术创作中去;对于有明星梦的人,应该降低他们进入演艺圈的门槛;对于消费 者,应该有效保障他们付费是为了质量和服务,而不是什么虚无飘渺的版权;对于版权商和唱片公司,则应该进一步浓缩他们在产品上的利润率,而促使他们转向更 合理的商业模式的进化。

聊天的泡泡

posted @ 2005-03-27 23:44 Brian Sun 阅读(2539) | 评论 (19)编辑 收藏
这是我在我租的房子里第一次上网,从前天到今天,在经历了Modem战役、Modem电源战役、拨号软件战役、电话线战役、用户名和密码战役、ADSL分频器战役、死机战役等等战役之后,终于在今天下午14点整登上了分别已久的Blog。

这两天在读一本讲RUP的书,这本书的所有案例都是围绕软件PSP Tools开发的全过程展开的,(猜对了,就是<<小型团队软件开发>>!),因为已经很久没听人讲过PSP了,所以倍感亲切,一时间免不了多了些感想,记了下来,与大家分享。

PSP者,个体软件过程也。第一次跟朋友提到PSP时,朋友问“要那玩意有啥用?”我当时就愣住了,半天没说出个所以然来,我还真不知道该怎样回答这么突 如其来的问题,或者应该说我还真没想到回有人问出这样的问题来。朋友的理由也很坦荡,讲过程就要讲团队如何把握过程,这样才能减少沟通的成本,降低开发的 风险;讲一个人的过程有什么意思,每个人都有每个人的思维方式,尤其是脑力劳动者,更是需要工作形式的个性化和多元化。这样看来朋友是站在“脑力劳动者” 的立场上说话的,我也完全有理由相信脑力劳动者大多数都是这样认为的。那我呢?我站在谁的立场上?是“体力劳动者”吗?朋友说“你是站在管理者的立场上才 那样说的,因为管理者总是希望每个人都把精力集中在提升自己的工作效率上。”

这一番争论我至今记忆犹新,真的是朋友所说的那样吗?CMM、RUP、XP和PSP是目前软件过程标准的四个代表,RUP(Rational统一过程)产自IBM/Rational公司,这个公司的创始人来自电信领域的软件巨头;XP(极限编程)来自Kent Beck和Martin Fowler,他们是软件设计和软件工程领域的世界名人;CMM(能力成熟度模型)与PSP 同一个父亲,即美国著名的软件界人士Humphrey先生,军方曾希望Humphrey先生能为其选择软件供应商制定一套衡量软件开发能力的标准,SEI 和CMM就诞生了,卡耐基梅隆大学希望Humphrey先生能为软件系的大一新生写一本可以规划其一生职业发展的书,PSP应运而生。四个标准的创始人代 表了四类对过程感兴趣的人群:大客户、管理者、开发高手、职业学者。可见我并不是站在管理者的角度,(虽然我是哈伯德的支持者),大家的立场不同,看到的 软件过程也就不同,不信,你比较一下。大客户多数在乎的是规范、透明和稳定性,如果一个人离开了项目,项目能否继续?如果所有的人都离开了项目,项目能否 继续?如果一个企业离开了项目,项目能否继续?管理者看重的是成本、风险和进度的等边三角形,考虑到质量的管理者就更为出色。开发人员,包括分析人员、设 计人员、实施人员和测试人员,都希望项目的任何工作都好上手,不要纸上谈兵,要重视人(自己)而不是过程,要重视产品而不是文档。唯独职业学者最不一样, 他所想的往往是你所发现不到的问题,因为他们常常不在项目中,多数是在项目完成之后的谈论和数字中得到启发,因此他们看到的也可能是你最需要但自己却不知 道的Best Practise。

为了证明我的观点,我找了一个很好的例子。我们项目组目前正在使用脑图相互交流思想,和记录头脑风暴的结果。脑图(MindMap(R))是 托尼·巴赞的注册商标,他为什么要注册这样一个商标呢?在托尼年轻的时候,他去图书馆找教人如何使用大脑的书,图书馆管理员认为他是个怪人“哪有人不会用 大脑的呢?”于是带他去了“脑内科”的书架,托尼知道管理员是不会理解他的,于是他决定自己去找。他花费了数年的时间,找遍了全国所有著名的和不著名的图 书馆,(他好像是英国人),都没有找到一本教人如何使用大脑的书。托尼突然有了一种使命感,既然上帝让他领悟到大脑的使用是有技巧的,那他就有义务将这个 发现告诉更多的人。这种使命感就像促使奥格曼迪诺写成<<世界上最伟大的推销员>>一样,促使托尼花费了毕生的精力,经过无数次的调查和研究,终于发明了脑图,并成立了人类历史上第一个以研究如何使用大脑为目标的国际性组织。今天,脑图已经家喻户晓,它对人类文明的贡献绝不亚于希尔博士的<<Think And Grow Rich>>(<<思考致富>>),但与后者不同的是,托尼不仅因此而获得了崇高的威望,还获得了惊人的财富,这完全得益于他为脑图注册了商标。(想想吧,每份Visio和每本<<学习的革命>>都付了版权费用!)

几十年来,托尼帮助过无数的人,帮助他们改掉不良的思维习惯,帮助他们找到最合适自己的工作,帮助他们提高自己的能力和收入,他为人类创造的价值,岂是亿 万可以衡量。这个例子用来证明我的观点,似乎是用了宰牛刀,既然研究如何使用自己的大脑都如此有价值,那么研究一个自己的开发过程和开发能力又何尝不必要 呢?

我读过很多托尼的书,我觉得如果说希尔教人如何完善心态,奥格教人如何培养习惯,卡耐基教人如何沟通交流的话,那么托尼就教人如何使用大脑,他们共同构成 了美国式的成功学最基础的四步曲。这些不是哈伯德所说的商业道德,而是一套种子如何成长为大树的指南。回到我们所谈论的话题上来,如果以每个人的思维方式 不同为理由,就可以放弃改进自己思维习惯的话,那这个人一定不能成为成功者!事实上,每个人的心态、每个人的习惯、每个人说话的方式、每个人如何使用大 脑、甚至每个人心目中的道德观念这些都是不同的,且会有很大差异,然而这恰恰是区别一个成功人士与其它人的最重要的差别。

最后,我希望留给中国所有每个开发人员(包括我自己)一个最美好的祝福,希望每个人都能成为成功人士。当然这是不可能的,这个世界上总是失败平庸者居多,功成名就者居少,其原因,就是没有注意这些成功人士应该注意的地方。

爱读书的泡泡
posted @ 2005-03-26 22:02 Brian Sun 阅读(2476) | 评论 (5)编辑 收藏
1。Wel-Mart何以做到天天平价呢?答案很简单——他没有做到。其实 Wel-Mart里面有很多别的超市没有的商品,也有很多每个超市都能买到的商品,后者在Wel-Mart里的价格很低,属于天天平价,所以就给喜欢比较 价格的消费者一点刺激,让他们以为Wel-Mart所有的东西都很便宜,其实那些别的超市没有的东西Wel-Mart买的几乎是天价,利润全从这里来。

2。Wel-Mart主张利润分摊,也就是说利润在消费者、Wel-Mart、生产厂家之间分摊,乍听起来挺有道理的,可是仔细一想,利润分摊的本质不就是吃了原告吃被告嘛!先挣厂家的钱,再挣消费者的钱!

3。在Wel-Mart大卖场里摆上自己的商品可不是一件容易的事,因为你 要交大量的管理费、摊位费和杂费,最后还要你拼命压低价格,Michael Dell曾经也把自己的电脑放在Wel-Mart里卖,后来实在是交不起费用只能撤出,于是成全了人类历史上最大规模的直销体系的诞生。

4。某人去国美,看中一台彩电,2999,某人嫌贵,跑去苏宁,苏宁报 价2899,某人大喜,为了侃价,他谎称国美报价2799,要求苏宁打折,苏宁二话没说打到部门经理价2700,某人心里盘算:“还能不能再低了”,于是 来到Wel-Mart,Wel-Mart报价2799,某人更喜,心想这回再侃价一定可以更便宜,于是谎称苏宁打折2600,Wel-Mart二话没说打 到部门经理价2500,某人喜出望外,立即掏钱包欲买,谁料小姐立即说出此款电视机之十大毛病,远远不如一位竞争对手的一款同价位机型,某人已被说得乱七 八糟、糊里糊涂、昏天黑地、神魂颠倒,三七二十一都不管就掏钱包买了。。。。。价格:2999。

5。某人去五星,看中一款手机,1300,一电一冲,某人经常出差,要 加一块电池,小姐推荐大礼包200块,某人嫌贵,来到Wel-Mart,Wel-Mart报价1200,某人大喜,欲买,向小姐要200元大礼包,小姐说 没有,但有极品电池(国产)礼包,带电时间是那个大礼包的电池的两倍,某人立即被侃晕了,掏出钱包买了。。。。。。价格嘛:400块。


看笑话的泡泡

posted @ 2005-03-23 09:26 Brian Sun 阅读(1903) | 评论 (7)编辑 收藏
以前的几次帖子中,我们都谈到了在UI平台的设计过程中常常会使用的一种设计模式,就是封装,但是封装是一种极难把握的模式,而且,单单使用封装往往也起不到任何设计效果,有时还会画蛇添足,那么,大师们是怎么使用封装的呢,我们看看Java领域的例子。

Swing是 由Sun的优秀科学家和Netscape的杰出设计师共同创造出来的卓越的架构。它一生下来就拥有皇族血统,但注定一生都不会取得王位。现在崇拜 Eclipse设计架构的人比较多(包括我),随之而来的是对Swing的批评声也很多(不包括我),其实这是一种错误的认识,就像 Smalltalk是一种很优秀但使用较少的语言,VB和Foxpro则属于那种天生拙劣但使用广泛的语言。Swing比Eclipse架构早出来好几 年,后者从前者那里吸取了不少的经验,也借鉴了很多模式,才会有今天的成就。而直到今天Swing仍然有很多值得我们学习的地方。

再说封 装,打开JButton的源代码就会发现,JButton没有往可怜的Windows界面上画上任何一笔,换句话说,整个类里面一行绘图代码都没有,这是 为什么?因为JButton是一个Controller的变种,绘图组件由另一个类提供,这个类以UI名字结尾,在内部包中,且绘图器在不同的界面风格 下、不同的操作系统、甚至不同的语种下面有不同的实现。这使得JButton类四两拨千斤,凭一个不变的框架同时实现了跨平台和可插拔风格。至于它的一些 显示参数,别着急,既然有C有V不可能没有M啊,ButtonModel类负责维护JButton的参数。

我们再看卓越的Eclipse,Eclipse比其这种封装来说就要复杂的多了,我们分成六个环节来讲。

1。Eclipse将Windows的绘制方法包装成SWT,这种包装很原始,但是很有效,因为Java不好调用Win32API,所以这一步实现了跨平台。需要注意的是,这种包装应该属于简单的分层,Eclipse编写了一个操作系统的Facade,OS类,这个类的win32版的源代码有2734行,显然是个庞然大物啦。

2。Eclipse把SWT当作它的基本组件来重用,(就好像这是别人写的东西),它把SWT的组件继续包装成JFace,JFace采用真正意义上的 MVC模式,比起紧凑的SWT来要活泼一点。JFace把SWT当成它的View,把Provider的实现当作它的Model,把自己包里的可控的带有组件逻辑的Viewer类当成Controller。

3。由于SWT被设计用来绘制窗体组件,按照管理,应该有一个包被用来绘制二维图形,这个工作就交给Draw2D来完成,它被放置在GEF包中,和SWT 处在一个层次。需要注意的是,Draw2D与SWT的组织机制不同(见前面的文章)。

4。Eclipse继续封装,因为JFace只解决了高级组件的问题,并不能直接放在Workbench里面用,所以Eclipse制作了Workbench包,这个包把Viewer封装成ViewPart,它认为Viewer是绘制器,而ContentProvider是Model,所以,像之前的几次一样,ViewPart变成了Controller。

5。有了ViewPart也就有了EditorPart,这两种Part都有可能要显示Form表单(一 种类似HTML的界面),表单上的控件——理所当然,是由 SWT实现的——与一般意义上的控件有很大的不同,这种不同主要体现在展现方式和事件通知上。Eclipse采取的方式是另做一套内部实现,包装SWT实 现,比如SWT有一个Button,表单包也有一个表单Button,与Button通过一个Toolkit类转换。这种方式就是设计模式中提到的 Proxy。

6。现在我们再看看需要绘二维图的EditorPart,这个部分是通过GEF来实现的,GEF是比JFace和Workbench更严格的MVC,它再EditorPart的基础上再包装一次,将策略等控件业务与控件绘制分离。

今 天我得到的最重要的一个结论,就是封装是相对的,MVC也是相对的,因此在JFace看来是Controller的东西在Workbench来看可能是 View,这可能导致在设计时的大量争议。今天的另一个收获是发现了封装也有几类,我能想到的应该有Facade封装、Proxy封装、MVC封装三种, 你还能想到更多的吗?

做软件的泡泡



posted @ 2005-03-23 01:26 Brian Sun 阅读(2034) | 评论 (0)编辑 收藏
EclipseCon 2005的余温还没有过去,今天仅从一个方面探讨一下它的贡献:

1。Borland Upgrades Position In Eclipse Foundation.
虽然此举将令Borland付出每年25万美元的年金,但是这是值得的,这一点从Jolt大奖今年的情况就可以看出。Borland必须作出反映了,是继 续以JBuilder为武器与Eclipse竞争到底,还是主动投诚,加速Eclipse的进程,并在合适的时机将JBuilder整个端到 Eclipse上面去。还好,Borland选择了后者,让人们不必再为两种不同的标准而烦恼,让天下归一。

2。BEA Contributes JRockit To Eclipse Foundation.
这个举动实在令人佩服,(佩服是说我真的没有想到)。因为在JDK这一边,除了Sun之外,还有三个可圈可点的产品:IBM JDK,曾是性能最好的JDK,出到1.3后就没声音了,后来贡献给了WSAD;IBM Jikes,曾是第一个支持增量编译的编译器,后来贡献给了Eclipse成了Eclipse Compiler(很多场合成了标准,比如linux下的java编译器);JRockit,曾是(现在仍然是)wintel平台上最快的虚拟机。现在这 三个奇迹全部回归了Eclipse基金会,再次出现了天下归一的局面。

3。BEA Contributes BEA Workshop To Eclipse Foundation.
关于Java开发环境的竞争曾经进入过白热化的阶段,当年雄踞一方的Visual Cafe,如今已经不见了踪影,开源环境下的Iava也被JCreator取而代之,等等等等。现在,自VisualAge for Java贡献给了Eclipse之后,Rational XDE和BEA workshop也贡献给了Eclipse,现在只等Borland步其后尘,才能最终实现天下归一的梦想。

4。Rational SDP Gets Ready For Eclipse 3.0.
RSDP:Rational软件开发平台,已经为建立在Eclipse 3.0之上的想法做好了准备,尽管还缺乏一些内部细节的透露。目前我们知道的内容是一对矛盾体:Rational的最高领导已经明确表示Rational 将继续支持Java和DotNET两种平台,但是IBM的有关官员却表示即将推出的RSDP将全面建立在Eclipse 3.0之上。对于这种矛盾,新闻界有些人认为IBM将推出让Eclipse支持DotNET开发的插件,是这样的吗?我不知道。如果真是这样的,那已经不 是天下归一这个词能够形容的了。



posted @ 2005-03-21 10:04 Brian Sun 阅读(2761) | 评论 (12)编辑 收藏
今天很有兴致来思考思考和讨论讨论这个问题,我对软件标准是很感兴趣的,我也相信有很多人对软件标准也是很感兴趣的,但是是不是每个人都能看到软件标准发 展的统一规律呢,未必,我也不能,我只是想探讨一下一个软件标准在发展的过程中竞争与合作彼此交替出现的现象,以及这个现象背后的原理。

我们以一种抽象的软件标准为例。假设这种软件标准在创立之前,人们只能通过使用其它方法或技巧(technics),或者某个父领域的标准中的某一段来 解决问题,我们统称这些解决方案为旧标准,即使它并没有标准存在,用字母A待指。此时,一种新生的软件标准——专门用来解决这一问题的解决方案诞生了,我 们称为B标准。B标准在其创立之初是非常有潜力的,非常有生命力的,但它必须面对A标准的全面打击,不过不用担心,一般情况下第一个吃螃蟹的人不会太惨。 B标准顽强的生存了下来,并逐渐被人们接受。

当B标准正在被人们接受的同时,其它标准也应时代而生,因为与B标准可能采用不同的解决方案,它们不得不制定别的标准。当然也有这种可能,这些标准的制订 者在考虑问题时并不知道B标准的存在——因为它当时还十分弱小,或根本没把B放在眼里。于是B2、B3应运而生,在他们的压力下,B标准不得不澄清与它们 在实现方式上的不同,而转变为B1。

竞争再度开始,B1、B2、B3之间的竞争是更激烈的,(达尔文称为种间竞争),因为它们彼此相互排斥,不会有一个大型项目采用其中的两种或两种以上。但又由于它们面对同样的问题域,最后导致的结果只能是相互学习,因为只有这样才能保证不被击垮。

事务的发展往往具有戏剧性的效果,正是因为它们选择了一条不会被取代的道路,它们才注定会被取代!新的标准必将取代群雄逐鹿的局面,才能稳定市场,因为客 户其实是不希望多个标准同时存在的。于是C标准被建立起来,C标准的建立有两种渠道,一种是大型厂商如IBM等的介入,它们支持B中的一个以合并其它标 准,另一种情况是其它标准自己将自己贡献给其中最强大的一个,弥补它在其它方式解决方案上面的不足。在经历了一段稳定期后,C标准最终成熟起来。

大量商业应用会建立在C标准之上,因为它确实太出色了。但是好景不长,随着市场的发展,C标准的生命周期也会有终结的时候,此时它又面临两种可能的境地。 第一,问题域进一步细分,又出现了很多0解决方案的领域,如果读者稍加注意,就会发现C标准目前已经处在当初A标准所处的位置了(注意前面红字的位置)。 第二,可能会存在另一个与C标准竞争的新解决方案诞生,它一诞生就具有强大的生命力,且采用与B标准不可能调和的解决方案,如同Java和DotNet一 样,(这和前面蓝字的部分是有区别的),我们称为D标准,此时D标准要做的不只一件事,它既要和C标准争天下,又要尽量平息自己内部的矛盾,在两线作战的 情况下,D标准可能昙花一现或者干脆把C干掉,坐到A的位置上去。

做软件的泡泡

posted @ 2005-03-20 23:43 Brian Sun 阅读(2231) | 评论 (4)编辑 收藏
首先要感谢大胃给我们带来的这个好消息。他说:

第15届Jolt大奖评选结果已经公布,可以在以下地址下载PDF:

http://www.sdmagazine.com/pressroom/jolt_winners_2005.pdf


其中还是有很多令我们欣喜的作品,也有我们意想不到的结论:

Books: General的得主是Head First Design Patterns,这个我没有听说过,但被我们看好的Software FactoriesRefactoring to Patterns也得到了生产力奖。

Books: Technical的得主是Better, Faster, Lighter Java,这再度证明Jolt大奖对书籍阅读量的考虑还是很明显的。生产力奖的得主分别是C++ Coding Standards: 101 Rules, Guidelines, and Best Practices;O'Reilly的Hibernate: A Developer's NotebookJava Developer's Guide to Eclipse, Second Edition,后者应该是本很好的书,可惜作者我不认识。

ILOG的ILOG Rules for .NET只获得了Business Integration and Data Tools的生产力奖,其它几样都没听说过。

SVN(Subversion 2004)不负众望,获得了Change and Configuration Management Tools的Jolt大奖,希望它能在新的一年、新的一版里表现的更成熟。

IBM/Rational,Borland/Together和MagicDraw UML分获得Design Tools的三个生产力奖,这个项目的桂冠被Visual Paradigm的Smart Development Environment 2.0夺得。(盗版商快行动啊!)

Eclipse 3.0获得Languages and Development Environments的Jolt大奖应该是。。。。。怎么说呢?终盼所归?舍它其谁?至少应该是情理之中吧。呵呵。我个人是挺高兴的,因为我是 Eclipse的狂热粉丝(从我的Blog应该能看出来吧)。IntelliJ IDEA和新版Python 2.4获得生产力奖。Borland JBuilder 2005和NetBeans 4.x/Sun ONE Studio榜上无名。前者已经摆出积极主动的姿态,似乎想在下一个回合中化敌为友,加入Eclipse的阵营。后者则仍然死不悔改,前些天还有一个 Sun的人在网上扬言“大量”Eclipse的用户已经转向NetBeans了,还说NetBeans的性能好于Eclipse,简直是乱讲!这个言论还 引起了国内不小的争论,这个结果正好杀杀他们的锐气。该奖的另一位得主是REALbasic

Hibernate喜获Libraries, Frameworks and Components的Jolt大奖,EJB3.0笑了;Tiger获得了该项的生产力奖,Eclipse笑了。正当大家都急着支持Tiger的时候, Eclipse不慌不忙的改进了界面和稳定性,“众人皆醉我独醒”!但是就我个人的观点而言,我觉得Tiger能走到这一步已经很不容易了,毕竟是一次大 胆的尝试,无论人们对Tiger的最终评价会如何,我觉得Tiger能做到这样已经是我始料未及的了,可以说它已经成功了。还有,明年的这个奖项我希望能 看到融合了AspectWerkz的新版AspectJ 5的身影(最好是Jolt大奖)。

Management Tools的大奖被Borland捧得,作品是CaliberRM 2005(真没白花钱),IBM/Rational与其失之交臂。但是我们却惊讶的看到VersionOne的V1: Scrum1.5也获得了生产力大奖,可喜可贺!

当然,Sun也不是一无是处,在Mobile Development Tools一项下,Sun的J2ME WTK 2.2就获得了Jolt大奖,Nokia旗下的CodeWarrior和Macromedia的Flash Lite获得生产力奖。

Macromedia在Web Development Tools一项下实现了双丰收,Jolt大奖归属了它的Flex 1.5(百分之百预料之中,确实太强了,是RIA的经典实现)。另有一项生产力奖发给了它的Contribute 3.0,与Web开发工具的经典Tomcat 5.0齐名。需要提醒大家注意的是,Tomcat的署名不仅仅是Apache Jakarta,居然还有JBoss,给JBoss的头衔居然还是leading Tomcat contributor!!真见鬼!

Websites and Developer Networks的四个得主分别是The O'Reilly NetworkDeveloperDotStar.comIBM developerWorksJava.net,其中O'Reilly为Jolt大奖得主,这并不奇怪。

其它的奖项我就不太熟悉了,或者是没有熟面孔。只有Microsoft的Internet Security & Acceleration (ISA) Server 2004获了Security的生产力奖,而Quest JProbe 5.2获得了Utilities的生产力奖。

其它的就不多说什么了,正如大胃所说:“能够入围的产品都是相当不错的”!是该花点时候了解它们了!

做软件的泡泡


posted @ 2005-03-18 21:04 Brian Sun 阅读(3420) | 评论 (9)编辑 收藏
1。完善备份和转移功能。我应该能在blogjava,cnblogs,和cnweblog三个网站之间转移blog,这一功能包括文章和评论的导入和导出。

2。好友blog,或者支持订阅别的RSS。

3。blog首页分页显示。

4。自定义模板,或配色方案。

5。更容易被Google搜索到。

6。为团队提供wiki功能。

7。代码更规范。以便更好的兼容FireFox。

8。提供更多的blog客户端,如桌面应用程序、邮件收发blog、移动设备收发blog、web service等等。

9。改善文章管理机制,建立文件夹式的文章和评论管理。

10。采用某种方式鼓励原创作品,并改善排名机制。具体的方式我还没有想好,但有一点可以肯定,如果一篇文章在Google上可以很方便的搜到其中的任意一段文字,就应该不属于原创。



P.S.以上意见纯属学术讨论,不是对dudu的要求,现在的BlogJava已经做的很好了。:)

博客泡泡

posted @ 2005-03-17 15:32 Brian Sun 阅读(1820) | 评论 (8)编辑 收藏
[转贴 自http://mmm.china-pub.com/]

1. 护士看到病人在病房喝酒,就走过去小声叮嘱说:“小心肝!”病人微笑道:“小宝贝。”

2. 有位大嫂在公共汽车上看到一位即将下车的男人掉了包烟在踏板上,于是赶紧对那男人说:“同志,你烟掉了!”男人大怒:“你才阉掉了!”
  
3.某男入厕便秘,忽见一人飞奔而入,顷刻风雨交加。“哥们儿,真羡慕你呀,那么快。”“羡慕啥,没脱裤子呢 !”

4.某公司招聘,下一位该面试的女孩的英文名是“spring”。秘书欲借机卖弄一下自己的英语水平,喊道:“hi!那个叫‘春’的,轮到你了!”

5.公交车上,站着的孕妇对身旁坐着的陌生男子说:“你不知道我怀孕了吗?”只见男子很紧张的样子道:“可孩子不是我的呀! ”

6.民:“军中有军妓吗?”军:“有呀,没有军纪怎么行!”民:“真的!要付钱吗?”军:“这还要什么钱呀,我们的军纪都是统一由上面传下来的。 ”

7.一个男人怒气冲冲的冲进某单位,嚷道:“这里是动物保护协会吗?”工作人员:“是啊,请问是谁欺负你了? ”

8.农夫:“我晚上上床后常感觉发冷。”医生:“我也有过,那时我会搂着我太太,就会暖和了。”农夫:“这办法不错,但您太太什么时候方便呢? ”

9.女秘书:“老板,你太太来电话,她说要在电话里吻你。”老板:“你先替我收一下,一会过来交给我。 ”

10.王太太怀了四胞胎,并到处向街坊邻居炫耀,说怀四胞胎很不容易,平均要六万次才会发生一例。李太太很惊异:“那你还有空做家务吗? ”

11.孩子正考虑有关“遗传与环境“的问题。母亲插话道:“这个问题很简单嘛,大家都知道如果孩子像父亲,那就是遗传;像邻居,那就是环境。”

12.赫鲁晓夫参观农场,记者照了一张他在猪圈和猪一起的照片。次日见报,旁边有附言:左起第三位为赫鲁晓夫同志。

13.女说:“你为什么看上去那么老气呀?”男说:“如果你喜欢人民币的话,还会在乎它是哪一年发行的?”

开心泡泡


posted @ 2005-03-17 15:12 Brian Sun 阅读(1796) | 评论 (13)编辑 收藏
自我的blog开通始我就添加了“辩论”这个类别,因为辩论是我热爱的事业,就像我对软件开发、企业管理和看电影一样热爱。可是到今天已经一个多月了我从 来没写过一篇关于辩论的文章,原因?没灵感。辩论是一件非常需要灵感的事业,我每天都沉浸在Java和C#的代码世界里,哪里能有探讨辩论的欲望。

可是这两天我们项目组在讨论一些关于软件设计上的分歧时,我突然有了在辩论的感觉,感觉辩论像是充斥在软件开发的每一个角落。人们每天都在讨论一个个关键 词的概念,由概念再分出表现和本质,再由。。。。。。。高潮是两两之间相互发表意见,就是自由辩论阶段,最后当一致的意见达成时由一个人将总结呈词整理成 语言,写成spec的形式,这就算是现场阶段结束了,但是别忘了,还有一段领导的发言作为专家点评存在。好在我们项目不在领导的眼皮底下。

每一天每个人都在辩论,或在做与辩论有关的事情,也许人生就是这样,我不知道。有时我也在想,倘若我不懂辩论会怎么样呢?答案可能有点清高。倘若我不懂辩论,就会别的应届毕业生一样每天都陷入和无意义的讨论中。

辩手泡泡


posted @ 2005-03-16 18:44 Brian Sun 阅读(1333) | 评论 (3)编辑 收藏
很荣幸能在3月15日这一天写我的blog,既然今天是消费者维权日,那就让我们来谈谈关于消费者权力的问题,并将这篇随笔作为我很久没更新的管理一栏的新文章吧。

我个人认为消费者的权力需要进一步通过制度上的优化来保障,而不是通过建立消费者协会或规范行业市场行为或增加对侵权者的惩罚措施能够解决的事情,基本上 我认为保护消费者的权力应该出台下面两类制度,也可以说只要有了下面下类制度或市场规律,消费者的权力就一定能得到保障。

1。生产与销售分离,高利润环节承担更大的责任。
举个例子,NIKE产品的质量全球用户都知道,可是NIKE是一个没有自己的工厂的企业啊,他怎么能保证产品的质量呢?其实很简单,能生产NIKE的产品 的企业都是NIKE的许可加盟工厂,如果哪一家工厂质量好,NIKE就会把更多的设计图纸交给这家工厂生产,这家工厂就能获得更多的利益(因为NIKE的 设计对于他生产自有品牌的产品有很大的帮助);如果客户发现哪一件产品质量差,NIKE就会根据它的生产批号查处是哪家工厂生产的,这家工厂就会被警告甚 至摘牌停止生产NIKE。在这个案例中,NIKE既是设计者又是销售者,且利润率极高,工厂则是生产者,利润率不高,所以当客户发现质量问题时,NIKE 除了给这家工厂停牌外,几乎承担了几乎其它所有责任。

2。卖方信用与买方信用并存。
同样举例说明,我们现在去商店买东西可以使用信用卡付款,但是国内的信用卡还停留在只有买方信用的阶段。这种消费方式的含义是,我买了东西但是没有支付货 款,银行保证我的信用,我会在适当的时候支付货款。但是一旦卖方信用存在,情况就不同了,消费者去店铺买东西,首先看他能不能刷卡,如果能用信用卡,就表 明存在卖方信用(如果店铺不遵守银行的卖方信用条款,银行就不允许其信用卡支付机与其联网),于是消费者可以放心大胆的买东西,如果东西有质量问题,消费 者可以首先要求银行取回货款,再要求店铺退货。这种消费方式的含义是,我卖了东西,银行帮我待收了货款,一旦买方要求退货,银行保证我的信用,我会立即退 还所有货款,因为它还在银行的控制下。

学管理的泡泡

posted @ 2005-03-15 06:56 Brian Sun 阅读(1225) | 评论 (3)编辑 收藏
评点这个词好像太过了,要不改成“小品”吧。昨天夜里和朋友、朋友的老婆、领导一行去喝茶,其间谈到Microsoft,大家都发表了一下看发,我的想法比较容易总结,还是总结出来供大家评点吧。

Microsoft自己最引以为豪的产品应该是Office而不是Windows,这点意见似乎每个软件人都保持一致。关于Office的创作过程每个专 家都有自己的看法,但总结出一条相同点就是——Office是人类智慧的结晶!言下之意在于Office几乎没有一个子产品来源于“卖块肉Soft”自己 的工程师的灵感,几乎全是外来之笔,但Microsoft独特的理念和商业模式把他们整合到一起,使他们成为世界上最棒的软件。几乎没有软件能比 Office更忠实于客户的使用习惯,并不断推出丰富多彩的界面风格和易用的交互设计,其技术含量也不容小视,比如“宏录制”就是他的一项贡献。我至今仍 然不太明白为什么Office的宏可以录制出if和for语句出来?!很多产品也是神来之笔,Word和Publisher的标准化,Infopath和 Powerpoint的易用性都是铁证。Access经过多次战略调整已经变成一个名副其实的工作组级DBMS,而Excel则从制表软件发展为经典二维 数据库,很多大学建议学生使用Excel记录并处理临时的试验数据,很多著名的商业提案最初也就是一个xls文件。Onenote似乎为平板电脑的下一步 发展提供了砝码,而Visio的出众表现使得谁也说不清它到底能不能以通用软件的身份胜任专业软件的工作。只有Outlook和Frontpage在某些 方面次于竞争对手,但于其它Office组件的完美集成,又使它们充满生机。

现在的问题是,Microsoft——一个到处生产令我们作呕的软件的企业——凭什么能做出这么好的产品?我的答案来自商业逻辑,认真分析客户的需求和及 时有效的资产重组才使这些奇迹得以发生。技术往往只能成就Notes和StarOffice这样的软件,但市场成就了Office。据说 Microsoft已经停止了Office的发展,这个“停止”的意义是指“除非战略上有必要,否则不再发布Office的下一个版本”。这有点像 IE6.0之后,Microsoft已经不再想更新它的功能了,但是Firefox出现了,挑战它的霸权,于是Microsoft又提出了IE7.0的计 划。观察下面的产品特性表,你就会知道Office的每一个版本都需要创意和激情的点燃。

Office 95                微软第一次将多个产品捆绑销售,并支持Windows 95。
Office 97                解决了其多个产品间的集成问题。
Office 2000             大规模集成WEB。
Office xp                引入SmartTag。
Office System 2003   引入了.NET支持。

最近又听说Microsoft收购了一个做ERP的小公司,并且已经推出了自己的ERP产品,还有人说其英文版已经开始出售了,名字大概叫做“B1” (BusinessOne),我相信微软早就有这个想法了,只是不知道这个计划是否会进入Office的发展计划中,倘若如此,我到想看看B1究竟会是什 么样子,或许是和其它Office组件一样是个可以集成的产品;或者是更高端的平台,建立在Office众多组件之上。

做软件的泡泡

posted @ 2005-03-14 14:29 Brian Sun 阅读(1776) | 评论 (4)编辑 收藏
最近又有机会,回了趟合肥,和几个老朋友聚了一下,酒席间有人提到OMG,我吓了一跳,难道我的朋友们都开始搞软件了??!!一问方才知道,原来OMG在俚语中就是“Oh My God”的标准缩写,幸好我没直接问,差点出洋相,OMG!

后来我告诉他们在软件界,OMG可不能随便乱说,它是个权威组织,权威到你能想到的大型软件供应商都是它的会员,以至于像Microsoft和IBM这样 的企业都不能左右它的标准。为了再次感受一下OMG的权威,我去了它的网站,这一去又使我感触颇深。OMG最引以为豪的四大标准体系赫然列在其网站的抬 头:MDA, CORBA, UML, CWM。

搞软件的都知道UML, 正是这个东西使整个软件开发过程进入现代文明阶段,也促使开发工具供应商重新洗牌。这可谓CASE领域的一大发明,其普及速度也令人瞠目结舌,现在谁要敢 宣称他不用UML,那他立即就会被剥夺“软件工程师”的胸牌,或被迫将胸牌上的字改成“程序员(初级)”!UML似乎已势不可挡的成为软件人的唯一选择。 但是现在也有一些程序大师建议大家不要对UML过于信任,不要过于热情。这就好像我们当年对C语言的热情一般,好像有了C就有了一切,可是10年过去了, 当初寓言即将被C淘汰的Pascal、Fortran和Cobol依然存在,甚至没有减少的势头,而C却经历了起承转合,失去了往日的光辉。在我记忆中国 外的很多大师,尤其Kent Beck、Martin Fowlor一样的人物还是建议大家慎重使用UML,在某些不适合UML的场合不要使用,比如个体软件工程中推荐使用CRC卡,需求分析的早期阶段适合使 用Mind Map,每次向客户演示或展现工作内容时用不规范的Visio图等等。

CORBA是 足以使它的发明者荣耀终身的发明。它确实太出色了,它为整个软件界开辟了一个新的领域。无论最终J2EE是否成为这个领域的霸主,它都不得不叫CORBA 一声“前辈”!遗憾的是,当CORBA成为企业应用的开山鼻祖而受到众多程序员仰视的时候,它也悄悄成了商业政治谋杀技术标准的教学案例。过于庞大的内核 只为了兼容更多大型厂商的产品,满足其“私人欲望”,并最终迫使其标准的创立班子离开另起炉灶。

MDA是 个伟大的理想,它可以让非程序员轻松创建符合自己个性和需求的应用程序,without any coding。但是,伟大的理想往往有时超越了现实的可能性。在我眼里MDA到底能不能实现实现和人类究竟能不能进行时间旅行属于同一类问题。也许我的语 气有些夸张,请原谅,因为我觉得MDA还有大量的问题没有得到解决,甚至没有澄清,这些问题已经严重影响到了MDA的可行性,比如在软件市场中有哪些角 色,每个角色有哪些权力和义务,就是个很重要的问题。因为现在几乎每个大型软件供应商都没有把“将MDA进行到底”的口号作为自己的宣传大旗!

CWM也是个伟大的创举,当且仅当MDA能够实现。所以对CWM我没什么可以点评的,只是有一个额外的想法。因为我是一向主张人工智能将来一定会在商务应 用上展露头角的,所以我猜想,CWM将来有可能成为某个知识库的一部分,通过人工智能引擎直接发挥作用,而不再需要MDA的支持。可能也正是这个原因或某 个相似的原因使OMG考虑把CWM单独拿出来作为一个发展项目的吧。

做软件的泡泡


posted @ 2005-03-14 12:47 Brian Sun 阅读(2332) | 评论 (4)编辑 收藏
这篇日记类的随笔来自几天前在北京公司遇到的一群人和想到的一些思路,但由于当时工作很紧,没时间记录,今日补上。

我原以为本公司没有UI部门。因为我刚到公司时接手的就是一个UI项目,而且这个项目居然是由某个部门经理发起的,平台组是完成这个项目的主要成员,所以我认为公司可能没有UI部门,或者平台组就是高管层眼中的UI部门。

直到到了北京的某一天,项目主管突然告诉我下午要见见UI部门的人,向他们演示一下我做的demo,并讲解一下我们新的UI组件的优势和特点,这时我感觉 UI部门可能是担当着类似公司“产品管理部”一样的角色,他们检查各个产品组的产品有没有UI问题,合不合规范等等。虽然此时的我有点摸不着头脑,但倘若 公司真的有一些管理分离的制度我也不觉得奇怪,毕竟是个大企业嘛。

可是直到我见到了这个传说中的UI组的全部成员时——仅三个人——我才意识到自己的想象力有多么狭隘,公司在我心目中头一次恢复了大企业的形象,自从我来 到北京以后。这个小组是由几个做网页很强的人组成的,或至少她们做网页很强,她们懂技术不多,也不需要太多,她们的责任是制作公司每个产品线的UI规范, 这种规范包括用户最终见到的字体、图片、颜色、各种部件的间距等等。遗憾的是她们刚刚成立,人数太少,缺乏强制执行力,又不太容易和技术力量衔接,所以很 多工作还不能有效开展。

这件事使我有了这样的想法,我们每个人每天都在接触UI系统,可是我们对UI的理解却大相径庭,简单列举一下,至少有下面三种。

1。产品的最终用户界面。
既通常人们所说的“软件设计”,最近有一本不错的书叫<<Bringing design to software>>,讲的就是这种意义上的UI。它包括用户的最终体验,是技术、艺术与人体工程学、用户心理学等等领域的结合。

2。支持最终用户界面显示元素的平台。
比如AWT、Swing、SWT、Windows Forms等等,规模庞大的还有HTML+Browser、Flash、Eclipse UI、GEF等等。这些都是技术上的解决方案,与实际显示效果无关。但是由于绝大多数的平台使用者都原意重用平台提供的UI组件,所以平台对组件的缺省实 现对开发者意义重大,比如用VB开发的应用程序都希望能有Windows XP的界面风格。这时就派生出了另一种技术模式——skinnable。

3。最终用户界面的显示元素的抽象标准。
往往是艺术工作者和技术工作者共同的工作,就像我前面提出的字体、图片、颜色、各种部件的间距等等,这些一般都是以规范的方式提供的,很少涉及实现方法。

这三种对UI这个缩写的解释分别意味着UI系统的需求、实现和标准。这使得我们(正在做UI系统的所有人)有必要坐下来好好考虑考虑什么是一个完整的UI系统。

做UI的泡泡


posted @ 2005-03-12 12:17 Brian Sun 阅读(2252) | 评论 (21)编辑 收藏
原贴:
http://www.china-pub.com/computers/bbs/addfollow.asp?id=52065&rootid=2&boardid=1

不知道今日怎么会误打误撞到这张帖子,也真没想到国内居然有这么多人无聊到在这里讨论这个由一个疯子发起的无聊的问题,好吧,就让我也无聊一回,写个帖子 吧。这张页面我看了很久,(我指的很久是我的胃能承受的最长时间,不是由我主观决定的,但由于我自幼犯有胃病,估计不会太久),终于在精神崩溃之前归纳出 了张先生自始至终批评别人(所有人)的三大理由,尽供参考,欢迎继续批评:

1。如果一个人讲不过“我”,那就说明“我”是对的,而“他”是错的!


与程序员的称谓比较,我更喜欢别人说我是辩手,因为大学时代我确实是个专业辩手,还是个不错的辩手。但作为辩手我忠告天下所有喜欢辩论的人,在现实生活中 你只有能力证明自己是对的,没有能力证明别人是错的!也许张先生的翻译真的很不错,很能表达原作者的本意,但这并不代表别的译本就是错误的。

2。因为考英语的时候英汉翻译都有标准答案,所以所有与标准答案有字节级差异的都是错误答案!

我就不明白:为什么一个单词不能有两个翻译?!为什么一个英文句子不能有两个汉语句子相对应?!为什么不会出现一句翻译无论怎样也无法表达它的原意?!不 知道张先生认为<<指环王>>和<<魔戒>>哪个翻译正确哪个翻译错误?如果张先生也抱着这样的态度看 过<<指环王3>>,那他一定记得这个下面的场景和对白:女伴男装的公主在战场上遇到黑骑士,两人各说一句:
     —— ......no man can kill me !
     —— I am no man !
如果张先生有空的话可以翻翻这句话,别让黑骑士在中国观众的心目中死的太冤,相信现在的评论家都不是眼高手低吧。另外,恕我多一句嘴,根据刚刚列出的第一条,假如您对这句话翻译的不能让我说不出话来,我又能不能说您是错的而我是对的呢?

3。评价一本书好不好的唯一标准是看它有没有错误,尤其是翻译上的错误!

这个观点乍一看就不那么顺眼,我到china-pub上来从来就没想过要买书回去学英语,更没想过要买书回去学中文!我来这里——同绝大多数来这里的人一 样——是想买一些好书回去学技术、学思想、学大师们的眼光,如果我想挑同一本书的两个译本,那我一定会找有思想有见地的IT界人士翻译的书,而不会去选一 个英语系老学究翻译的东西——即使他完全忠实于原作我还怕自己误解了呢,这个社会需要的是精神的一致而不是刻板的风格。按照张先生的逻辑,评价一个国家的 强大与否主要看他的居民平时写不写别字,评价一个软件的好坏主要看它的bugzilla上有多少条记录,评价一道菜的口味主要看它有没有按菜谱来做,评价 一个人的对错应该看他有没有和“我”的逻辑相冲突对不对?你看,又回到了第一条。

我猜想张先生是只听纯音乐不听带歌词的,(或者他连纯音乐都不听),因为任何一首歌的歌词都能被他找出几个语病来,有些甚至没有一句是通顺的。我还猜想张 先生一定不看国内翻译的电影,因为为了对口形国内的电影往往会少翻几个词或多翻几个词,而张先生的存在就意味着这些译制片厂将关门大吉。

写到这我突然有个疑问,百思不得其解,张先生为什么要研究三年熊节呢?好像这不是个有明显好处的活,我推荐张先生找个刚刚上映的影片,好好研究一下,在影视评论上发表一篇它的翻译错误和您的正确翻译,顺便再帮盗版厂商提供一下文字轨,以后的DVD市场就是您的了!

(作者:本文尊称原贴的作者为“张先生”,但根据第二条理由,这并不代表他不可能是“张小姐”,处于和他一样的严谨,特此声明。还好,由于第三条理由的存在,我们可以不必关心他的性别)

逛网站想买书的泡泡

posted @ 2005-03-12 00:38 Brian Sun 阅读(1899) | 评论 (8)编辑 收藏


自从协议签过以后,在合肥和南京的这段时间我没买任何书,也没订任何杂志,因为与其买了带到北京来,不如到北京来再买。加上到了北京的前几天都在适应环境,也没顾的上这桩子事。算算看来已经有四个月没看<<程序员>><<程序员>>的很多概念已经在我脑海中淡化了,(天哪,这样不好!),前两天遇到潘加宇,居然问他“你有没有给<<程序员>>写过文章?”话一问出来连我自己都觉得搞笑!潘加宇早就是<<程序员>>的专栏作家了!幸好我们当时没吃米饭,否则肯定两个人对喷。

为了不再丢人,我一口气把几个月的<<程序员>>都买了,好好补补血。遗憾的是我还是没有逃脱我不喜欢的论调和文章,就是那种看过了特别想把刚才吃的都吐出来的那种文章。比如2005年第二期的杂志就有这样一篇文章。这篇文章的大意是说原本很被技术界看好的JDO 2.0标准被很多大公司集体否决了,所以就认为商业政治谋杀了技术标准,而事实上是,这篇文章的作者根本就没有搞清楚这场纷争背后的意义。

先让我们来看看JCP投票的情况:

SE/EE
Apache Software Foundation Yes
Apple Computer, Inc. Yes
BEA Systems No
Borland Software Corporation Yes
Fujitsu Limited No
Google Inc. Abstain
Hewlett-Packard No
IBM No
IONA Technologies PLC No
Intel Corp. No
JBoss, Inc. No
Lea, Doug Yes
Nortel Networks No
Oracle No
SAP AG No
Sun Microsystems, Inc. Yes

Icon Legend
Yes Yes
No No
Abstain Abstain
Not voted Not voted

从实际情况上来看,好像是和EJB的利益有关的人都投了反对票,希望技术开放和公平竞争的人都投了赞成票,于是那篇文章的作者就得到一个结论:大公司们希望自己的服务器硬件和应用服务器能卖上好价钱,所以就谋杀了JDO 2.0。为澄清这个问题,我同那篇文章的作者采取同样的方法——考察故事的背景。在java社群里最闪耀的O/R mapping明星有两个:JDOHibernate。他们互为竞争对手,将java的O/R mapping工具集划分为两个阵营,而他们共同的竞争对手又是EJB 2.x中的entity bean。这场战争是三大技术标准的公平较量,或者可以说成是封建贵族、改良派新贵族和革命派之间的较量,战争的结局众人皆知——Hibernate获得了最高的荣誉和程序员心目中的领导地位,JDO虽不可与之并驾齐驱,但也差不到哪去,培养了一群重视粉丝,而臭名昭著的entity bean则被列入“不推荐使用(或推荐不使用)的技术名单”,挂上“战败国”的牌子。

下面我沿用那篇文章作者的用语“商业政治”。商业政治家们觉得Hibernate作为一种开源软件确实不是其大规模推广的最好方式,(假如Hibernate能加入ApacheEclipse之类的社群兴许好一些),而他又确实很棒,所以为Hibernate争取一个适当的名分让其继续统治者的地位是迫在眉睫的事。注意,这里并不是说商业政治家们有多高尚,相反,作者也觉得他们都长着一副丑陋的像铜钱一样的面孔,可是作者同时也相信他们永远都会把股东放在第一,客户放在第二,而把程序员放在第三。当IBM/SAP等意识到自己所提供的高端软件中有一部分不如开源产品他们会立即得到客户的抱怨声,如来自BMWCitibank的声音,他们会立即用尽三十六计以提升这部分产品的竞争力。这次商业政治家们采用的方法是“挖人”!将Hibernate的老大挖到EJB来,鼓励他创新,分阶段的抛弃EJB 2.x的一些设计,在EJB 3.0中集成Hibernate的思路,以求为客户提供唯一的也是目前最好的解决方案,要知道,技术界的很多成本都耗在了技术分歧上面。此时的JDO还在第二名的花环中沾沾自喜,可当他发现本次比赛的三个人在下次比赛中将变成两个人时他立即意识到“第二名=最后一名”!这就好像苏联吞并和很多战败国,这让盟军十分恼火。JDO决定推出2.0版以适应形式的需要,但是这个决定在前面提到的投票中被否决了。

原因很简单,我们不需要两个相同程度80%的规范在市场上并行,这为很多产品带来了更多的成本。除非JDO 2.0从另一个角度切入市场,并在规范中澄清如何解决其与EJB 3.0的竞争,否则不能标准化。那篇文章的作者认为这是因为大公司希望自己价格昂贵的应用服务器能继续出售,所以才否决JDO 2.0,我不知道他如何得到这个诡异的想法。事实上商业策略往往是不随技术标准而变化的,即使这个世界上从来没有过EJB 3.0,也没有Hibernate,IBM也一样能把他的小型机+AIX+WebSphere卖出去!而倘若他同时批准了EJB 3.0JDO 2.0,那就更好了,IBM现在可以提供两套产品了,业务面岂不是更广,要知道,对IBM来说真正的核心客户是不会在乎IBM的应用服务器有几种的,他们依然照单全收!比如BMWCitibank。而大企业们这样做恰恰是为了维护市场的稳定,减轻客户CIO和IT部门的压力,他们否决JDO 2.0的出台也正是希望EJB 3.0系列产品能抢先占领市场,让昨日的山大王真正成为明日的技术皇帝!

最后,模仿那位作者,让我们来回顾一下谁投了赞成票,以及他们的出发点:
1。Apache,在java的战场上,apache永远都是赢家,因为他根本就是在扮演一个军火商的角色,无论谁赢谁输都得大量使用apache的组件构建商业平台。而作为java社群的领导者之一,apache相信技术的对立面越多,技术本身就会越繁荣,java不能结束世界大战的局面。
2。Apple,这种分歧跟他基本没什么关系。但机遇对于苹果通常都会比对于其它同等规模的企业要重要一些。
3。Borland,一直希望能在应用服务器市场上分一杯羹。事实上除了VB以外的任何一种开发类标准对borland都是有吸引力的。
4。Doug Lea先生,作为java社群领导者中的自然人之一,“平等竞争”是个很重要的学术话题。
5。Sun,稍稍读一些IT发展史就会知道,Sun从来就不是商业路线的成功者。

总结起来,那篇文章犯了两个基本的逻辑错误:
1。其作者本能的以为老企业一定会维护老产品的权威,却没有意识到这一次JDO的竞争对手不是上一次圣战的战败国,而是一个拥有Hibernate血统的全新的EJB 3.0。
2。开放和竞争确实对技术的发展很有好处,可是“过度竞争”却会违反“客户利益至上”的经济学不二法则。这使我想起了我曾经有幸聆听了北大光华的一位院长的讲座,他告诉我们“垄断有效率损失,竞争一样有效率损失”,不能用单一的标准来衡量人类社会的每一个角落。

经济学出身的泡泡

posted @ 2005-03-07 09:28 Brian Sun 阅读(1923) | 评论 (4)编辑 收藏

已经好多天没有写blog了,原因是从南京转到北京工作,还不太习惯,工作也很忙,上班时间不可以登陆blogjava这样的网站,下班后又要会会多年没见的一些老朋友(或者从来就没有见过的朋友),回到酒店又没有上网的条件——“上帝啊!上地大厦居然不能上宽带!”

随着这两天工作的深入,我们项目组遇到了一些问题,我将其中一个我认为很有价值又很有争议的问题抽象出来写在下面,供大家讨论。

项目组已经决定了要在后台系统的组织上采用Facade+懒加载的形式。这个方案意味着要为Facade提供多个多级多层次的get方法,以便上层业务能根据自己的需要直接获得关心的组件或关心的对象。并且如果在整个运气期都没有一个对象去get某个对象的话,后者很可能不被装载,其它的对象和组件也只在需要时载入并运行。这个方案基本通过。现在的问题是有人提出少数组件应该具有伸缩性,所以应该采用容器+Service的形式实现,事实上Facade太死板不够灵活,服务模式有很多能力是Facade模式所没有的,所以应该加入。反对者(包括作者)认为既然已经有了一种解决方案,为什么还要另一种方案的参与呢。争论使得项目组的所有成员在很长一段时间里(约一个多小时)都没能做其它事情。现在我把这个难题交给blogjava的朋友们,希望回帖讨论,谢谢。

做平台的泡泡

posted @ 2005-03-07 09:09 Brian Sun 阅读(1176) | 评论 (3)编辑 收藏