2004-12-13

学会容忍这世界的不完美

昨天和yayv聊起他的新工作的时候,他说,他在一个新项目里为了追求框架的和谐和更好的运用C++而产生了很多的困惑。这让我想起我刚刚做好的一个项目。

那个项目里面需要使用Ftp传输一些资料,而我发现微软的Wininet API虽然可以进行Ftp传输,但是缺少我非常需要的断点上传功能。于是我决定自己写一个Ftp传输组件。然而当项目时间过半的时候,我才发现我的Ftp传输组件编写的工作量已经开始超过整个项目的工作量,难度也已经超越了整个项目的本身,如果继续写下去,我肯定会让项目延期的。

我只好放弃这个Ftp传输组件的编写,开始研究怎么扩展Wininet,或者说尽量利用Wininet来实现断点上传功能。很快的我就实现了断点上传功能。然后,我开始为了项目的按时完成努力编写代码。最终项目略有延期,但总算还没有让客户完全失望,也达到了客户要求的功能。但是后面,赶进度造成了部分代码质量的下降,延期造成了客户的抱怨。

之后我反思这次项目经历,前期我对项目难度的估计和时间的测算基本上还是准确的。但是问题在于,当我发现Wininet API并不完美的时候,我错误的选择了自己实现一个Ftp传输组件的方案,后来的实践证明,Ftp传输组件的难度已经超越了项目的本身,而且势必造成项目的延期。从功能和性能上讲,采用微软的Wininet API足矣。我自己写一个Ftp传输组件使用起来可能会更加方便,更加灵活,但是付出代价远大于得到的收益。至少对客户来说是这样的,产品基于微软的Wininet API,还是基于我自主开发的Ftp传输组件功能上没有任何的区别。

在反观以前我没有完成的那些项目,或者说至今仍停留在图纸或者构想阶段的一些项目,他们之所以永远是构想,永远是半成品,往往因为我对他们的要求太理想主义,太过苛刻。我总是想一劳永逸地解决问题。然而我们生存的世界不是一成不变的,也不是完美无缺的,所以没有任何一个解决方案能在任何一个方面一劳永逸地解决问题。

另一个方面的问题在于,一个不好的成品也往往好于一个半成品。一个项目里,我们就算有天才的想法,有完美的实现,但是项目完成之前它是不会产生任何效益的。何况,设计环境只是真实环境的模拟,如果你不用成品在真实环境里面运行,有些细节信息你永远不会了解。

我将学会容忍这个世界的不完美,也将容忍自己的产品的不完美,但是这不代表我们放弃了对完美的追求。我们可以通过在运行中改善我们的产品,更好的达到追求品质的目的。



2004-12-09

中华民族到了最危险的时候

刚才看了猛Q的blog才想起来今天原来是一二九运动纪念日,这说明人们总会很容易就会淡忘。

是啊,在这个和平的年代里,我们如果能够忘记一切国与国之间的仇恨,全世界人民一家亲那有多好啊!然而虽然我是一个爱好和平,而且喜欢宽容的人,我也知道这是绝对不可能的。我们中国人可以相逢一笑,然而日本的高官却用参拜战犯的灵堂来回报我们的宽容。

所以,恶狼在畔,我不敢说中日终有一战,但是敢说如果我们不提放点我们的好邻居,那么只有重复上一次的悲剧。

今天看到这样一则新闻,丰田汽车公开将在爱知万博会上表演的机器人,其中引用的一张照片让我很震惊。

日本丰田汽车公司的载人双足行走机器人

我们也有双足行走机器人,但是我想大家都知道可以载人的双足行走机器人和勉强缠颤巍巍的自己行走的机器人在技术上有多么大的差别。一方面这让我很激动于科学的进步,另一方面,这样的技术掌握在我们那靠不住的邻居手里面,真是让人担心。

这让我想起来那天参观机器人大展的时候,我们几个同去的朋友站在硕大的灵巧精确焊接汽车车厢的机器人前时候的震惊。另外印象深刻的是,大家都为这种技术日后也许会用在战争中感到担忧。这里,我不得不用上次用过的那个结束语来结束本文,我觉得“中华民族到了最危险的时候”。



2004-12-08

听说《开发高手》停刊了

刚才fire告诉我《开发高手》停刊了,很震惊,虽然我没有怎么看过,但是总觉得泱泱大国总不能只有一本软件方面的杂志吧。所以,去年我们都对《程序春秋》寄以厚望,然后他倒掉了。今年我们对《开发高手》寄以厚望,然后他也倒掉了。

淮南为桔,淮北为枳,听说人家USA有很多技术杂志,不知道人家的土壤是怎么长的,我也没有钱跑去看看。我们这个泱泱大国真的养不活第二本技术杂志么?

我不知道,真的不知道。

相关信息:
Tinyfool--生命不可承受之郁闷--投稿篇
Netfire--《开发高手》停刊!?除了《程序员》,中国的专业软件技术杂志何去何从?
蒋涛--技术刊物难生存 《DDJ软件研发》宣布无限期休刊



我的Google迷信

看到keso的《Google迷信》,想了想对GOOGLE的迷信,我就有,有以下几个方面:
1、Google不邪恶
上次百度暗害Google事件大家都知道
Google从来不做搜索结果排名买卖
2、Google有技术能力
在这里说google有能力去做新闻的rss,大家应该都不怀疑,为什么不做,当然只有他们的高层才知道,也许是为了负载压力,也许是,,,我确实不知道。
google一直在搜索引擎这个领域是技术上面的先导,而且一直关注于这个领域的技术。
3、Google有信誉
google的gmail是我目前最看好的mail服务。在之前,国内几乎所有的大网站的mail服务我都申请过,他们后来是怎么对待客户(虽然我们是免费客户)的,大家都知道。
4、Google更受技术人员的欢迎
搜索技术资料,中文英文,我一向觉得Google更快更准确。
5、Google的用户量更大
从我的网站的refer来看,通过日志分析,虽然baidu对我得网站的收录程度也不低(收录页面数远超过我的网站页面数,因为早已删除的页面仍被收录),但是google带来的访客远高于baidu,而且关键字匹配更加准确。

我从来不想掩饰我对google的喜爱,记得上次有人说google开始在香港招人的时候,我和火炬说,大陆一开始招人,我马上就要混进去。火炬说,算了吧,就你那个学历,肯定没戏的。 ;(



2004-12-02

用正则表达式和grep对网站日志进行分析

这两天,手里的项目总算都差不多了,我总算有了点时间看看书。看了看编译原理的书,对正则表达式,自动机有了一些粗浅的认识,突然想起来可以用正则表达式来分析分析我的网站日志啊!

分析什么好呢?就分析一下每天有多少人通过google搜索来吧!

写一个正则表达式,用grep来查询
grep http://www"."google"."com/search.*\n ex041129.log
这样日志那行里面有http://www.google.com/search,就会被提取出来

如果我们只想看他搜索的地址,可以用-o参数,这样,就会只看到匹配串
grep -o http://www"."google"."com/search.*\n ex041129.log

如果我们想知道有多少条google的访问记录呢,加上-c参数即可
grep -c http://www"."google"."com/search.*\n ex041129.log

这时候,出现了另一个问题,我们找到的地址都是行如
http://www.google.com/search?q=%E4%BA%8C%E6%9C%88%E6%B2%B3%E5%B0%8F%E8%AF%B4%E4%B8%8B%E8%BD%BD&hl=zh-CN&lr=lang_zh-CN&inlang=zh-CN&newwindow=1&start=10&sa=N
我们根本不知道搜索的是什么,怎么办呢?写一个程序来转换吧!

代码如下:

utf8 url转码代码
源码下载 utf8url.c

上 面那个google地址转换后是http://www.google.com/search?q=二月河小说下载&hl=zh-CN& amp; amp; lr=lang_zh-CN&inlang=zh-CN&newwindow=1&start=10&sa=N。

把这个源码用任意支持ansi C的编译器编译以后,我们得到了一个工具utf8url.exe。

我们的命令行变成
grep -o http://www"."google"."com/search.*\n ex041129.log | utf8url 〉google.txt

这样一条命令就可以知道有多少google来客了,^_^。

如果没有记错的话,win2k服务器版自带grep,如果你是其他版本的windows可以利用我的朋友yayv做的简单的win下的linux工具箱,里面包含了grep等linux常用工具的windows版本。

linux工具箱下载地址:bin.rar

utf8url下载地址:utf8url.exe



2004-12-01

一个有意思的搜索引擎Clusty

刚才浏览搜索引擎谁主沉浮这篇文章的时候,发现里面提到了一个很有趣的搜索引擎Clusty。
诸 如Clusty.com等网站甚至不尝试创造更好的搜索结果。相反,他们专门研究显示形式,从其它搜索引擎中获得搜索结果,然后以一种更易接受的形式呈 现给用户。Clusty.com由一群来自匹兹堡卡内基梅隆大学(Carnegie Mellon University)的计算机科学家创建,它采用的“集束”方法是将搜索结果根据不同种类分组,便于用户从搜索到的几千张网页中进行挑选。例如,网上查 询”Kerry”会出现许多种类,并将涉及爱尔兰郡的网页与前总统后选人的网页分开排列。


我首先测试了一下搜索

下面是搜索Tinyfool的结果
在Clusty搜索Tinyfool的结果


然后我测试了一下这个网站提供的firefox工具条(他们提供firefox工具条,让我对他们更加有好感。)。

工具条本身没有什么太多特殊的,就是可以方便搜索。但是安装了工具条以后,firefox的右键菜单多了几个项目中的两项很有意思。
在单词上面按右键可以选择百科全书或者字典对这个单词的解释
百科全书或者字典对这个单词的解释菜单

百科全书对rss的解释
百科全书对rss的解释


当然可惜的是,这么好玩的服务,只有英文支持,如果有英汉字典,对我们这些经常浏览国外技术站点的人来说也还是很方便的,至少比金山词霸的网络版方便多了,呵呵。(Tiny可能会做一个类似的东西出来,大家说会有人喜欢么?^_^)