这几天休息,终于可以在家里好好休息了。本来想不碰电脑的,但是发现没有它日子很难过。不过毕竟比平日多了更多的时间来思考过去一段时间的得失。为了不至于忘记,还是写下来,算是一个记忆,也算是一点分享。
有道的核心价值观是有道所有员工工作的最高标准,正如国家的宪法指导其他法律法规一样,指导着有道员工的行动。其中一条就是“消费者向导”。
别以为有道的核心价值观是一句空话,的确没有足够的项目经验和产品经验的人会觉得这就是冠冕堂皇的大套话。其实不然。经过一些事情之后,会发现产品是否成功的关键在于你的产品是否是消费者向导的。
电子邮件系统,这个与互联网生俱来的应用,到Gmail出来之前,大家都以为它就是这样了。发信,收信,还有什么别的?除了一些签名啊,优先级啊,这些点缀以外,大家都没有什么新的idea了。业界还闹哄哄的想要对其收费。可是,当Gmail出来的时候,业界哗然,原来Email还可以这样用。一个Session group的功能让我毫不犹豫的从Yahoo! Email转移到了Gmail。这就是消费者体验为向导的结果。当然这个转变不是签名那样随随便便就能做到的,以至于Yahoo! Email落后了很久才做到了这一点。这正如有道的价值观之第二条:消费者向导。
其实大家都会说我们也在努力的以消费者为向导。可是,当你面对一个选择,将架构大部分推倒重来以满足明显的用户需要还是保留这个架构直至下一版的时候,你会如何选择?我敢说,很多情况下,不是由于惰性,就是由于进度压力,我们最后投降的选择了后者——推迟。输赢就差一步,因此很多时候不到终点我们就已经输在半路上了。
面对选择,您如何选择?这是一门艺术。
2007年7月30日
Yodao Dict for Linux
有道词典,本身就是一款爱不释手的网络应用,如今又继往开来的推出了Linux桌面版本。作者是用python写的,用户直接输入"${path}/dict.py word"即可获得解释。
对Linux用户来说真是太棒了。
对Linux用户来说真是太棒了。
2007年7月3日
2007年6月15日
2007年4月20日
我心中的雅虎
从接触互联网开始,我就喜欢了雅虎,雅虎美国。它的风格是如此的大气,绝无国内ISP那样堆砌内容;它的功能是如此的强大,我想干什么都去那里先看看。
但是我不喜欢雅虎中国,从我第一眼看到它开始,我就觉得它不是在为中国网民服务的。你讲不出为什么,但是不论是界面,还是服务,还是内容,总是差那么一点火候。
两个星期以前雅虎易搜上线,还卖了个关子,说“15天之间将会发生什么事情?”。虽然我幻想着是否有什么新玩意出现,但是我等到晚上10点半左右上去看的时候,发现这句话变成了“V2.0 RELEASED”,其它的没有什么大改变。顿时心凉了半截。
不过还是要说一下,雅虎易搜的界面还是比较有创意的。但是我还是有些失望。
相比之下,我还是喜欢雅虎美国。
但是我不喜欢雅虎中国,从我第一眼看到它开始,我就觉得它不是在为中国网民服务的。你讲不出为什么,但是不论是界面,还是服务,还是内容,总是差那么一点火候。
两个星期以前雅虎易搜上线,还卖了个关子,说“15天之间将会发生什么事情?”。虽然我幻想着是否有什么新玩意出现,但是我等到晚上10点半左右上去看的时候,发现这句话变成了“V2.0 RELEASED”,其它的没有什么大改变。顿时心凉了半截。
不过还是要说一下,雅虎易搜的界面还是比较有创意的。但是我还是有些失望。
相比之下,我还是喜欢雅虎美国。
2007年4月19日
果然如此
去年对于安全卫士360的推出,我写了两篇文章,一篇是《周鸿祎到底怎么打算?》,另一篇是《奇虎的目的已经达到了》。今天看新闻,发现事情果然如此,奇虎终于开始捆绑点别的东西了,请看http://my.360safe.com/ 。
2007年4月4日
雅虎易搜
雅虎又重新启动了它鸡肋般的搜索,不过这次看起来不错,我是说它的用户界面,不是说搜索质量。的确在搜索质量不如人的时候,改进一下界面,让大家翻页更容易,也许是一个帮助大家找到结果的好办法。另外,有几个地方似乎是跟我们学的,例如:右边的一个时间框,当把鼠标放过去的时候就会告诉你——“15天之后将会发生什么”的字样。明显有模仿有道在推出之前的做法。关注有道的人,应该还记得当时的“有道是什么”这个标语吧。不过雅虎这次融入了自己的一些元素,恩,还是不错的。好,就期待你15天之后的作为吧。不过,我不太乐观,估计也就是一个UI重新设计的搜索。
2007年3月31日
2007年3月26日
一定要赞一下“有道词典”
真的不是我在吹,在我们提出这个创意的时候,还真的没有想到这个东西会这么受到欢迎。
上个星期的某一个工作日,乘着大家都在上班的时候,向自己IM上的好友推荐有道搜索引擎,顺便也推销“有道词典”,没想到兄弟姐妹们对有道词典的赞扬如洪水般涌来。
的确,很多网络流行词汇,或者有中国特色的词语,或者国外某条著名的地名,等等,这些在词典里面找不到的词汇,在我们的“有道词典”里被一网打尽!连“orz”这种只有在bbs里才出现的词语都有对应的解释。太牛了!
这说明一个问题,只要真正能够满足人民大众需求的产品,不论多小,都是受欢迎的。
上个星期的某一个工作日,乘着大家都在上班的时候,向自己IM上的好友推荐有道搜索引擎,顺便也推销“有道词典”,没想到兄弟姐妹们对有道词典的赞扬如洪水般涌来。
的确,很多网络流行词汇,或者有中国特色的词语,或者国外某条著名的地名,等等,这些在词典里面找不到的词汇,在我们的“有道词典”里被一网打尽!连“orz”这种只有在bbs里才出现的词语都有对应的解释。太牛了!
这说明一个问题,只要真正能够满足人民大众需求的产品,不论多小,都是受欢迎的。
2007年3月20日
2007年3月10日
Fedora6配置演练
其实我没有需求,但是公司一定要让我换显示器,两者选一种:1、一个24寸的液晶;2、两个22寸的液晶。好吧,我选后者,这样,我还可以关了一个,只开一个。
机器都换了,干脆把用了很久的OS也换了算了。在同事的鼓动下,我卸载了已经陪伴多时的CentOS4.4,换上了Fedora6。恩,安装很顺利,我是用硬盘安装,安装方法可以参考:http://fengjiang.blogspot.com/2006/09/ibm-t43centos.html 或者 http://lamda9.spaces.live.com/Blog/cns!9CC8A2D6014E5CF6!250.entry
装了后,一看,恩,的确UE比CentOS好。但是遇到若干问题:
1、中文字体很糟,打开firefox看sohu.com的时候,简直不能忍受。
2、想卸载一个package,居然要访问internet,而我网速不快,几乎很久都没有动静。
解决的方法是:
1、给系统加上SimSun字体(我喜欢这个,您可以换别的)。方法是把这个字体文件copy到/usr/share/fonts/chinese/TrueType/目录下面。然后执行fc-cache命令。这样就好了,现在所有的应用程序的字体里都有SimSun了。
2、但是如果整个界面用的是某latin字体,例如serif,而里面又有个别汉字,那么显示出来的汉字字体就很丑。或者当把整个界面用SimSun,那么英文就很难看。解决的方法是调整字体优先顺序。用vi编辑/etc/fonts/conf.d/64-nonlatin-fedora.conf,可以看到有几类字体family。每一类字体family都有很多备选字体。如果一个字不是latin字母,那么就会在后面的字体里找一个。可以看到里面有ZYSong18030这样的,如果一个汉字都别的字体里都没有的话,就会用ZYSong18030这个字体。而我不喜欢这个字体,于是就在所有中日文字体之前加上“SimSun ”。那么对于一个汉字,就会首选SimSun了。问题完全解决了。
3、编辑/etc/yum.repos.d/fedora-core.repo,/etc/yum.repos.d/fedora-extras.repo,/etc/yum.repos.d/fedora-updates.repo,将enabled属性值改成0。那么就不会访问互联网了。
4、处理分辨率的问题。忘记说了,在启动机器的时候,由于分辨率的问题,显示器无法进入X。这时候我先进入命令行模式,方法是:在重启机器的时候,在grup里面将kernel引导后面加上3(大家都知道runlevel这回事情了,就不多说了),就进入了命令行模式,这时出了没有X,什么都有。然后三个命令搞定:
rpm -ivh http://rpm.livna.org/livna-release-6.rpm
yum install kmod-nvidia
/usr/sbin/nvidia-config-display enalbe
reboot
机器都换了,干脆把用了很久的OS也换了算了。在同事的鼓动下,我卸载了已经陪伴多时的CentOS4.4,换上了Fedora6。恩,安装很顺利,我是用硬盘安装,安装方法可以参考:http://fengjiang.blogspot.com/2006/09/ibm-t43centos.html 或者 http://lamda9.spaces.live.com/Blog/cns!9CC8A2D6014E5CF6!250.entry
装了后,一看,恩,的确UE比CentOS好。但是遇到若干问题:
1、中文字体很糟,打开firefox看sohu.com的时候,简直不能忍受。
2、想卸载一个package,居然要访问internet,而我网速不快,几乎很久都没有动静。
解决的方法是:
1、给系统加上SimSun字体(我喜欢这个,您可以换别的)。方法是把这个字体文件copy到/usr/share/fonts/chinese/TrueType/目录下面。然后执行fc-cache命令。这样就好了,现在所有的应用程序的字体里都有SimSun了。
2、但是如果整个界面用的是某latin字体,例如serif,而里面又有个别汉字,那么显示出来的汉字字体就很丑。或者当把整个界面用SimSun,那么英文就很难看。解决的方法是调整字体优先顺序。用vi编辑/etc/fonts/conf.d/64-nonlatin-fedora.conf,可以看到有几类字体family。每一类字体family都有很多备选字体。如果一个字不是latin字母,那么就会在后面的字体里找一个。可以看到里面有ZYSong18030这样的,如果一个汉字都别的字体里都没有的话,就会用ZYSong18030这个字体。而我不喜欢这个字体,于是就在所有中日文字体之前加上“
3、编辑/etc/yum.repos.d/fedora-core.repo,/etc/yum.repos.d/fedora-extras.repo,/etc/yum.repos.d/fedora-updates.repo,将enabled属性值改成0。那么就不会访问互联网了。
4、处理分辨率的问题。忘记说了,在启动机器的时候,由于分辨率的问题,显示器无法进入X。这时候我先进入命令行模式,方法是:在重启机器的时候,在grup里面将kernel引导后面加上3(大家都知道runlevel这回事情了,就不多说了),就进入了命令行模式,这时出了没有X,什么都有。然后三个命令搞定:
rpm -ivh http://rpm.livna.org/livna-release-6.rpm
yum install kmod-nvidia
/usr/sbin/nvidia-config-display enalbe
reboot
2007年2月28日
微软,你真的在走下坡路
Google的崛起不是一天两天的事情了。起初,人们以为Google只是一个搜索引擎,微软只要做一个比Google还好的搜索引擎就可以超过Google了。超过Google的搜索已经不是一件容易的事情了,更何况Google岂止是一个搜索引擎?
别看Google其他的业务不赚钱,但是,其他业务更是我们需要的。
Gmail是我每天不能离开的服务,当初2G的空间让我眼睛顿时放光,立马转移到GMail。更何况它的thread group功能?除此以外,我用它“冒充”其他邮箱发送邮件,几个Web-Based Email SP提供这个功能?Hotmail在我眼里就是用来收垃圾邮件的。
除此以外,Google的AdSense为千千万万的站长带来收入,这一系列工具正在被全世界的站点使用。而微软推出了几个?
Google有一个叫做Browser Sync的东西,自从有了它,我再也不担心我的收藏了。微软有吗?
我用Google的PageCreator画了做了几个简单的网页。微软可以吗?
我用Google的Picasa很快就做了一个动画图片播放CD给我妈,微软可以吗?
当地震来临的时候,GTalk几乎不受影响,MSN呢?
如今Google又推出了Docs&SpreedSheets,我可以直接写文档而不用担心丢失了。还装WORD干什么?装个OpenOffice足够应付万一之事了。
如此看来,Google的搜索只是为我们开了一个门,更多的好东西还在后面。Google不是要让我们搜索到什么,而是让我们把东西都放到网上。那么微软就彻底完蛋了。
我已经完完全全用Linux很久了。没了OS,请问微软你还有什么把戏?
别看Google其他的业务不赚钱,但是,其他业务更是我们需要的。
Gmail是我每天不能离开的服务,当初2G的空间让我眼睛顿时放光,立马转移到GMail。更何况它的thread group功能?除此以外,我用它“冒充”其他邮箱发送邮件,几个Web-Based Email SP提供这个功能?Hotmail在我眼里就是用来收垃圾邮件的。
除此以外,Google的AdSense为千千万万的站长带来收入,这一系列工具正在被全世界的站点使用。而微软推出了几个?
Google有一个叫做Browser Sync的东西,自从有了它,我再也不担心我的收藏了。微软有吗?
我用Google的PageCreator画了做了几个简单的网页。微软可以吗?
我用Google的Picasa很快就做了一个动画图片播放CD给我妈,微软可以吗?
当地震来临的时候,GTalk几乎不受影响,MSN呢?
如今Google又推出了Docs&SpreedSheets,我可以直接写文档而不用担心丢失了。还装WORD干什么?装个OpenOffice足够应付万一之事了。
如此看来,Google的搜索只是为我们开了一个门,更多的好东西还在后面。Google不是要让我们搜索到什么,而是让我们把东西都放到网上。那么微软就彻底完蛋了。
我已经完完全全用Linux很久了。没了OS,请问微软你还有什么把戏?
2007年2月16日
紧急Bug
一天我和一个朋友吃饭,聊到浏览器的时候说到一个很搞笑的事情:工行发现一个紧急的bug──用户居然能用Firefox访问工行的网上银行服务!
今天又有另一个朋友向我发一个链接,也是同样的话题──“微软正在窃取中国的未来”。
今天又有另一个朋友向我发一个链接,也是同样的话题──“微软正在窃取中国的未来”。
2007年2月13日
如果你有勇气,或者足够有恒心
想出名?很多人都想,但是出名的永远是少数。
知道芙蓉姐姐吧。你如果可以和她一样,你就能红。其实并不难,她能做的,你在家里一定都能做。唯一需要的是勇气──拿出去秀。
你知道“百万格子”吧,你知道“别针换别墅”吧,而且你可能还记得小学课本里面的“挑粪工人”吧。恩,你只要把一件事情,哪怕很简单的事情,重复的、不间断的做上10年,你就行。
记住,勇气和恒心。
知道芙蓉姐姐吧。你如果可以和她一样,你就能红。其实并不难,她能做的,你在家里一定都能做。唯一需要的是勇气──拿出去秀。
你知道“百万格子”吧,你知道“别针换别墅”吧,而且你可能还记得小学课本里面的“挑粪工人”吧。恩,你只要把一件事情,哪怕很简单的事情,重复的、不间断的做上10年,你就行。
记住,勇气和恒心。
2007年2月11日
还是关于“有道”
这段时间真的很忙,忙得都快忘了这里还有一个博客需要我来整理。
这几天我一有机会就像朋友们推销一个叫做“有道”的搜索引擎,让他们知道“有道”与众不同之处。不过最近有些朋友反映有些东西搜不到,但是以前还能搜到。我在这里给大家一个答复:我们已经知道了,很快就会一切OK,现在不还是BETA版嘛?呵呵。
由于一直关注在自己的领域,公司的一些动态也忽略了。今天看了一个同事的博客才想起来,顺便也告诉大家:如果您想知道“有道”有什么不一样,就请看:http://www.yodao.com/help/flash/ 。呵呵,我们的一个小广告。
给大家拜年了!
这几天我一有机会就像朋友们推销一个叫做“有道”的搜索引擎,让他们知道“有道”与众不同之处。不过最近有些朋友反映有些东西搜不到,但是以前还能搜到。我在这里给大家一个答复:我们已经知道了,很快就会一切OK,现在不还是BETA版嘛?呵呵。
由于一直关注在自己的领域,公司的一些动态也忽略了。今天看了一个同事的博客才想起来,顺便也告诉大家:如果您想知道“有道”有什么不一样,就请看:http://www.yodao.com/help/flash/ 。呵呵,我们的一个小广告。
给大家拜年了!
2007年1月2日
回顾2006以及展望2007
本来早就要写这篇文章的,可惜偏偏台湾地震就发生在元旦前几天(深切同情一下在地震中遭受不幸的同胞们),使得几根通向大洋彼岸的光纤出现物理故障,因此我只好选择新年的第二天发文了。
先是喝了一杯咖啡,就算是把2006的苦都吞下肚吧。
1、首先要庆祝我们在2006年12月14日晚上9点多发布的“有道搜索”测试版的诞生,这里面凝聚了全体同仁的心血,值得我们开心、庆祝并再接再厉。一年的工作虽然很辛苦,压力也比较,但是总算是看到一点成绩了。这应该是本年度最重要的一个事情吧。
2、身体明显不如读书的时候那么好了。去打了几场篮球,真的发现自己急需加强锻炼了。不过,我这几次训练都坚持下来了,目前体力已经恢复了不少。恩,这是一个好事情,2007要坚持下去。
然后吃蛋糕了,展望一下2007的理想吧。
1、希望“有道搜索”进展顺利,虽然中国的搜索市场已经有了一些竞争对手,但是我们的“有道搜索”不是没有希望。冰冻三尺非一日之寒,有些事情是需要积累的。事实也证明,我们的“博客搜索”和“海量词典”已经赢得了很多用户的掌声,如果我们能在网页搜索这个层面上把基础打牢,一定还有很大的作为。
2、希望房价下降,收入上涨。这个想法很简单,也很现实。这是中国很多人的愿望吧。
3、希望北京市的交通尽快改善,已经堵得太不像话了。
4、继续锻炼身体。
5、早睡早起,一日三餐按时。
恩。最后,想说的话和胡锦涛总书记差不多,全世界还有很多国家和地区的人们正饱受痛苦的折磨,我们希望他们能够早日摆脱困境,过上幸福的生活。
2007年1月2日,
于盒子咖啡馆
先是喝了一杯咖啡,就算是把2006的苦都吞下肚吧。
1、首先要庆祝我们在2006年12月14日晚上9点多发布的“有道搜索”测试版的诞生,这里面凝聚了全体同仁的心血,值得我们开心、庆祝并再接再厉。一年的工作虽然很辛苦,压力也比较,但是总算是看到一点成绩了。这应该是本年度最重要的一个事情吧。
2、身体明显不如读书的时候那么好了。去打了几场篮球,真的发现自己急需加强锻炼了。不过,我这几次训练都坚持下来了,目前体力已经恢复了不少。恩,这是一个好事情,2007要坚持下去。
然后吃蛋糕了,展望一下2007的理想吧。
1、希望“有道搜索”进展顺利,虽然中国的搜索市场已经有了一些竞争对手,但是我们的“有道搜索”不是没有希望。冰冻三尺非一日之寒,有些事情是需要积累的。事实也证明,我们的“博客搜索”和“海量词典”已经赢得了很多用户的掌声,如果我们能在网页搜索这个层面上把基础打牢,一定还有很大的作为。
2、希望房价下降,收入上涨。这个想法很简单,也很现实。这是中国很多人的愿望吧。
3、希望北京市的交通尽快改善,已经堵得太不像话了。
4、继续锻炼身体。
5、早睡早起,一日三餐按时。
恩。最后,想说的话和胡锦涛总书记差不多,全世界还有很多国家和地区的人们正饱受痛苦的折磨,我们希望他们能够早日摆脱困境,过上幸福的生活。
2007年1月2日,
于盒子咖啡馆
2006年12月22日
谈谈系统架构的认识
不论是读书的时候做项目,还是在公司里看着一个产品从无到有,都是非常宝贵的成长经历。在这些实践过程中,最有价值的应该是对软件架构,或者说系统架构这方面的认识。
最开始写代码是从小学,那时候还是学习机和286时代。那时候写代码的目标就是写出最短的代码以及执行最快的代码。
到了大学开始学习计算机专业,在教授们的催眠作用下慢慢知道了设计要讲究模块化,也就仅此而已。唉,我又不得不说现在的大学教育了。如果自己不找个机会去动手、去实践的话,那四年一定是白费了,因为很少有学校还会逼着你去掌握实践技能,学校只会让你考试,让你做题。这是中国教育现在能做到的(不过当时我们学院提供的环境还不错)。
一、原型证明很重要,但是该扔就扔
一个项目到手上,除非是一个小项目,或者是一个做过了的项目,否则或多或少都会有一些未知领域,或者说是吃不准的领域。这时候怎么办?我发现很多有有个坏习惯,他们喜欢去翻书看看书上怎么讲。最明显的例子就是很多人都会说Oracle比MySQL好,一问为什么,他们就说“肯定是的”、“Oracle是企业级的”云云。还有一些人手头没有书,就跑道CSDN上去问,看看有没有高人指点。其实最好的办法就是:自己动手。
方法很简单,你觉得MySQL不好,就写个简单的benchmark测试一下就知道了。如果你发现它的性能已经完全满足你的要求了,你要的功能它也有了,而且你又想省一笔投资,那就用它好了(当然实际问题不是这么简单,我只是举个例子)。
另外一点也很重要,就是:原型代码一般是不需要什么良定义的,写它的目的是想证实一下自己的想法是可以实现的。因此,如果它没有完好的定义,就放弃它吧。新的代码重新架构。
二、关于模块问题
的确,一切系统都要求有很好的模块划分。不论是面向过程的,还是面向对象的,或者是面向其他的,模块化显然是一个很好的统称。但我的体会是:除非重复做一个项目,否则很多事情是预料不到的。虽然我们要对需求有深入的了解,对初步的设计也有了令人信服的原型证明,但是几乎还是会有意向不到的情况(除非项目很小),哪怕当初设计得再详细。这绝对是真的。
如果当初的架构有问题怎么办?我们曾经尝试过绕开它,有些时候是用一些很丑陋、很不常规的方法来避开它。这对于一个项目的架构而言是非常危险的。如果只有一个地方那个有些绕,那可能不是问题。但是模块A用了非常手段,模块B的作者一定会也用非常手段,发生这种事情原因很可能是现实的,例如模块B的作者可能想快点把事情做完。但是这样的结果就是模块之间的混乱程度增加了,项目到了后来就变得越来越难以维护。如果某个员工离职了,那么就项目接手的代价就非常大了,甚至是几个月的延误。
作为系统架构人员,另一个主要的职责就是保持模块之间的“概念完整性”。简单的说,就是模块之间的关系一定不能有丑陋的地方,和不常规的地方,架构人员要像对待一件艺术品一样来把关。否则这将是噩梦的开端。但是到了系统开发完毕,进入了性能调整的阶段的时候,可以在瓶颈的地方做一些小的手脚,这倒是无伤大雅。因为通常而言,系统的瓶颈不会太多,解决了几个重大的瓶颈,性能可能就会有数量级的提升。
三、架构需要考虑测试
我在项目的开发过程中发现,如果一开始架构的时候,或者是一个模块设计的时候,如果没有想过以后怎么测试它,那么这也会是一个噩梦的开始。
在“有道”搜索引擎的开发过程中,我深有体会。我让某某库(出于保密,我省去了具体的库名称)调用我写的代码。开发的时候感觉还不错,代码也还清晰易懂。但是到了需要测试的时候,我开始发怵了。我根本想不出有什么简单的方法来测试它,因为我几乎不知道调用我写的代码的参数是什么样子,那我怎么可能去伪造这个参数来测试这个过程呢?后来我屈服了,为测试用例而修改代码(这可不是什么好方法)!把我的代码封装到一个语意更明确的方法里,让某某库来调用这个新方法。而我的测试用例只用测试我新封装的方法就行了。
经过一次又一次的痛苦,我彻底明白为什么很多设计书上会说测试也是需要认真设计的了。
四、性能调优
一般系统的瓶颈一般都是那么几个,解决了他们就解决了80%的问题。现在有很多系统瓶颈的测量工具,不论是Java还是C++,应该是很好用的(最近Java6.0自带的JMX和相关的工具已经相当不错了)。关键的问题是在分析,找到关键点。这个需要一些积累,不是三言两语能讲清楚的(其实我的经验也不错)。
关于这个话题就到这里吧。以后想起来再写。
最开始写代码是从小学,那时候还是学习机和286时代。那时候写代码的目标就是写出最短的代码以及执行最快的代码。
到了大学开始学习计算机专业,在教授们的催眠作用下慢慢知道了设计要讲究模块化,也就仅此而已。唉,我又不得不说现在的大学教育了。如果自己不找个机会去动手、去实践的话,那四年一定是白费了,因为很少有学校还会逼着你去掌握实践技能,学校只会让你考试,让你做题。这是中国教育现在能做到的(不过当时我们学院提供的环境还不错)。
一、原型证明很重要,但是该扔就扔
一个项目到手上,除非是一个小项目,或者是一个做过了的项目,否则或多或少都会有一些未知领域,或者说是吃不准的领域。这时候怎么办?我发现很多有有个坏习惯,他们喜欢去翻书看看书上怎么讲。最明显的例子就是很多人都会说Oracle比MySQL好,一问为什么,他们就说“肯定是的”、“Oracle是企业级的”云云。还有一些人手头没有书,就跑道CSDN上去问,看看有没有高人指点。其实最好的办法就是:自己动手。
方法很简单,你觉得MySQL不好,就写个简单的benchmark测试一下就知道了。如果你发现它的性能已经完全满足你的要求了,你要的功能它也有了,而且你又想省一笔投资,那就用它好了(当然实际问题不是这么简单,我只是举个例子)。
另外一点也很重要,就是:原型代码一般是不需要什么良定义的,写它的目的是想证实一下自己的想法是可以实现的。因此,如果它没有完好的定义,就放弃它吧。新的代码重新架构。
二、关于模块问题
的确,一切系统都要求有很好的模块划分。不论是面向过程的,还是面向对象的,或者是面向其他的,模块化显然是一个很好的统称。但我的体会是:除非重复做一个项目,否则很多事情是预料不到的。虽然我们要对需求有深入的了解,对初步的设计也有了令人信服的原型证明,但是几乎还是会有意向不到的情况(除非项目很小),哪怕当初设计得再详细。这绝对是真的。
如果当初的架构有问题怎么办?我们曾经尝试过绕开它,有些时候是用一些很丑陋、很不常规的方法来避开它。这对于一个项目的架构而言是非常危险的。如果只有一个地方那个有些绕,那可能不是问题。但是模块A用了非常手段,模块B的作者一定会也用非常手段,发生这种事情原因很可能是现实的,例如模块B的作者可能想快点把事情做完。但是这样的结果就是模块之间的混乱程度增加了,项目到了后来就变得越来越难以维护。如果某个员工离职了,那么就项目接手的代价就非常大了,甚至是几个月的延误。
作为系统架构人员,另一个主要的职责就是保持模块之间的“概念完整性”。简单的说,就是模块之间的关系一定不能有丑陋的地方,和不常规的地方,架构人员要像对待一件艺术品一样来把关。否则这将是噩梦的开端。但是到了系统开发完毕,进入了性能调整的阶段的时候,可以在瓶颈的地方做一些小的手脚,这倒是无伤大雅。因为通常而言,系统的瓶颈不会太多,解决了几个重大的瓶颈,性能可能就会有数量级的提升。
三、架构需要考虑测试
我在项目的开发过程中发现,如果一开始架构的时候,或者是一个模块设计的时候,如果没有想过以后怎么测试它,那么这也会是一个噩梦的开始。
在“有道”搜索引擎的开发过程中,我深有体会。我让某某库(出于保密,我省去了具体的库名称)调用我写的代码。开发的时候感觉还不错,代码也还清晰易懂。但是到了需要测试的时候,我开始发怵了。我根本想不出有什么简单的方法来测试它,因为我几乎不知道调用我写的代码的参数是什么样子,那我怎么可能去伪造这个参数来测试这个过程呢?后来我屈服了,为测试用例而修改代码(这可不是什么好方法)!把我的代码封装到一个语意更明确的方法里,让某某库来调用这个新方法。而我的测试用例只用测试我新封装的方法就行了。
经过一次又一次的痛苦,我彻底明白为什么很多设计书上会说测试也是需要认真设计的了。
四、性能调优
一般系统的瓶颈一般都是那么几个,解决了他们就解决了80%的问题。现在有很多系统瓶颈的测量工具,不论是Java还是C++,应该是很好用的(最近Java6.0自带的JMX和相关的工具已经相当不错了)。关键的问题是在分析,找到关键点。这个需要一些积累,不是三言两语能讲清楚的(其实我的经验也不错)。
关于这个话题就到这里吧。以后想起来再写。
2006年12月21日
奇虎的目的已经达到了
正如我前面所说,安全卫士不是一款百分百为网民安全着想的软件,奇虎只不过再借流氓和反流氓之名给自己的软件做一个免费广告罢了。看看现在1200万的装机量,显然奇虎已经达到目的了。当年3721之所以成功,就是因为它占据了用户的浏览器;今天的安全卫士也会成功,因为它占据了用户都用它。唯一不同的是,前者是流氓的身份,后者是反流氓的身份。但是本质是一样的,那就是占据用户的桌面。 我们不用操心雅虎和奇虎谁赢了官司,总之安全卫士已经在用户的电脑上扎根了。奇虎就是再不济,哪天它还可以像卖3721那样卖掉安全卫士。
我还是很欣赏奇虎董事长那句话:别管产品有多小,只管市场有多大。安全卫士就是一个身后隐藏着大市场的小产品。
我还是很欣赏奇虎董事长那句话:别管产品有多小,只管市场有多大。安全卫士就是一个身后隐藏着大市场的小产品。
2006年12月20日
Google抛弃了SOAP API,浮想联翩
孟岩总是有一番论述, 这次是它关于互联网整合的看法。我特别认同它的这个看法:将来的互联网应用一定是由几个基础服务商提供服务的。所以现在的互联网企业要看准了,如果你是想做大做强,一定要往上游走。
订阅:
博文 (Atom)