Read Sean

Read me, read Sean.
posts - 508, comments - 655, trackbacks - 9, articles - 4


"It's a common delusion that you make things better by talking about them."
- Dame Rose Macaulay

[Merriam-Webster's Collegiate Dictionary]
delusion n, 2 a: something that is falsely or delusively believed or propagated (http://m-w.com/dictionary/delusion)

有时候我们会以为我们谈论某件事某个问题,可以让它们实际上得到解决或者变得更好,这通常是一种错觉。


posted @ 2006-12-31 15:07 laogao 阅读(590) | 评论 (0)编辑 收藏


让我提醒一下各位准备进入IT行业,或者在IT行业但是还没有真正融入的朋友,IT这个领域,不管你做什么,都很有挑战,需要你的热情和勇气,这里没有金饭碗、铁饭碗,如果你入这行纯粹为了更轻松的工作或者更高的收入,我只能说我个人极其不看好你的这个动机。没有合适的心态和必要的职业素养,你很难成功或者满足。

首先需要好奇心,从计算机如何工作,到某个软件系统或框架是如何实现的,到具体业务领域为什么会有某项特定的需求,都需要我们的好奇心,没有好奇心,就没有兴趣,没有兴趣,做出来的东西就必然缺少灵魂。如果你连基本的好奇心都没有了,我劝你还是早点关注一下其他更能够引起你好奇和感兴趣的行业,否则要么你很失败,要么会做得很辛苦。

有了好奇心,接下来一定要有强烈的求知欲望,要有知甚解的精神。IT业是一个瞬息万变的行业,当下如日中天的技术,到了明天、下周、下个月、明年,可能就回无人问津,对于和你的知识面,和你的公司所涉猎的行业相关的技术知识、领域知识需要我们不断学习,不断充实自己,这个环节很难有什么捷径,如果有,也是通过一定的广度和深度来逐步达到举一反三的目的。曾经接触过不少“不求甚解”的朋友,表面上他们能够应付相当的工作和压力,但是很难让他们理解和掌握更深层次的东西。如果你观察他们足够长的时间,你会发现他们为了掌握不断变化或者不断发展的技术、框架、平台,或者适应某些看似极度不稳定的用户需求,由于没找到谱,其实也很累。

有了必要的好奇心,也有足够的动力去学习新事物之后,我们需要有追求完美的工作态度。拿软件开发来说,我们产出的是软件,从某种意义上讲,是我们的孩子,应该给予足够的关爱和呵护,谁不希望自己的孩子是天下最棒的?说到底软件这个东西从无到有,灵活性相当大,能够做到怎样优秀的程度,很多时候取决于我们自己。

最后是解决实际问题。追求完美没有错,但是需要有个度,需要有的放矢,需要有一个更加全局的指导方针,那就是解决实际问题。不论你做的东西采用多么先进的技术,你用了多么业界认可的管理方法,假如最后一些基本的客户需求无法达成,也是白搭。这是典型的“学院派”作风,我们在不断追求完美的同时,时刻都不能忘记我们存在的目的:解决实际问题。



posted @ 2006-12-26 23:39 laogao 阅读(1146) | 评论 (0)编辑 收藏


"Everyone thinks of changing the world, but no one thinks of changing himself."
- Leo Tolstoy

“每个人都想着要改变世界,却没有人想要改变自己。”
- 列夫·托尔斯泰


posted @ 2006-12-24 11:16 laogao 阅读(534) | 评论 (0)编辑 收藏




从上面这张对比图来看,似乎传统的影音播放产品和家用电子电器厂商更多的倾向于Blu-ray,而在这个产业相对新生的企业,许多在PC领域的强者,以微软和Intel为代表,更多的倾向于HD DVD。这两个标准第一次正面交锋出现在XBOX 360的HD DVD,以及PS3的Blu-ray。

HD DVD还是Blu-ray,这是个问题。


posted @ 2006-12-24 10:59 laogao 阅读(644) | 评论 (0)编辑 收藏


"Everywhere is walking distance if you have the time."
- Steven Wright

所谓walking distance,指的是走路就能到的距离,虽然没有一个明确的数字,但是很显然从杭州到无锡就不是walking distance。“只要你有时间,到哪里都是走路就能到的距离。”


posted @ 2006-12-23 13:36 laogao 阅读(651) | 评论 (0)编辑 收藏


http://leadinganswers.typepad.com/leading_answers/2006/11/agile_methods_a.html

关于如何使用敏捷方法管理知识型员工和团队,推荐阅读。其中两幅插图很形象的表示出:

Command-and-Control的管理模式如何压制团队和个人的创造力、贡献的热情和生产效率,而适当的敏捷方法和实践如何推动和提高团队及个人的创造力、贡献的热情和生产效率。

一个典型的Command-and-Control模式的特征:
- One way communications
- Lack of local control
- Compliance activities
- Bureaucracy
- Lack of recognition

一个典型的敏捷管理模式的特征:
- Self organizing team
- Empowered to make decisions
- Focus on business value
- No blame culture
- Team recognition + development


posted @ 2006-12-23 11:33 laogao 阅读(694) | 评论 (0)编辑 收藏


看到一篇好文,和大家共享之:
http://blog.technoetic.com/2006/09/19/threshold-of-pain/

大意是探讨为什么有些team的“技术债”(我们在IT项目进展中犯下的哪怕是小小的一点错误或者不作为,都会影响到整个项目产出的质量,影响到该目未来的发展、维护,甚至验收,使得成本和预算无法被有效管理)会慢慢堆积,而另一些team能够及时发现并纠正这些潜在的问题。是team的技能水平吗?并不完全是。我们可以从不同team对pain(项目进展和产出上出现的瑕疵)的敏感程度的不同来考量,而非简单的技能差异。

对pain的容忍度过高,项目中的“技术债”就会日益堆积,到最后项目变得无法收拾;对pain的容忍度过低,会让项目组变得吹毛求疵,得不偿失。当然,这个容忍度不可能也没必要定死在一个固定值上。有时候,我们也不得不临时调高这个容忍度,比如为了赶进度(如果错过某个deadline整个项目都可能会变得一文不值或者失去意义那种进度),问题的关键是,当我们有意识的提高宽容度,达到我们某个目标之后,能不能及时回过头来弥补这部分缺失的产出,避免今后带来更大的问题。今天你看来需要2周时间,你觉得不值,2周之后,同样这些欠下的“技术债”可能会“吃掉”你2个月,这不是在危言耸听。

如何找到一个平衡点?如何根据项目实际情况调整这个平衡点的位置?这是摆在每个项目管理者面前的现实问题,也是项目管理者的责任和义务。


posted @ 2006-12-23 10:40 laogao 阅读(737) | 评论 (0)编辑 收藏


如果你需要在不同的操作系统之间备份/恢复DB2数据库,那么你很可能遇到麻烦,据说有人成功的把DB2数据库在AIX 5上backup然后在Windows下restore,反正我是没那么幸运了,restore过程中除了备份文件名和路径不一致的问题,到最后一步还是报错,而Windows本地数据库backup然后restore就很顺利。

世界末日?还好,IBM DB2提供了db2move这个命令行工具,使用方法如下:
在需要备份的数据库服务器上执行
$> db2move [数据库名称] export
根据表的多少,当前目录下会生成一大堆文件,拷贝到新的系统下面,新建一个同名数据库,执行
$> db2move [数据库名称] import
即可。

直接敲
$> db2move
可以看到命令行选项的说明。


posted @ 2006-12-23 00:04 laogao 阅读(1404) | 评论 (0)编辑 收藏


看到这样的结果你也许并不意外,但是看到具体的数字可能会惊讶:

测试环境:
IBM (Lenovo) ThinkPad T43 (1G Mem);
Windows XP Professional (SP2), 文件系统NTFS,默认设置;
Ubuntu GNU/Linux 6.06 (Dapper Drake), 文件系统ext3,默认设置.

测试用例:
1M左右大小的文本文件,共计200个,搜索包含字符串'1000456732'的文件和相关内容。

Windows Search - 37秒,正确找到包含字符串的6个文件,但是没有直接提取出相关内容。
Notepad++ (Windows) Search in Files - N/A,超过5分钟没有任何反应,CPU99%。
grep (Ubuntu, 直接读NTFS分区) - 12秒,正确找出所有6个文件,63行相关内容。
grep (Ubuntu, 拷贝到ext3分区再执行) - 拷贝3秒,执行2秒,正确找出所有6个文件,63行相关内容。

还记得上次在Ubuntu下安装CVS带来的性能提升吗?
http://www.blogjava.net/sean/archive/2006/09/17/70145.html


posted @ 2006-12-21 23:59 laogao 阅读(700) | 评论 (0)编辑 收藏


我发觉技术出身的人,尤其是做编程、爱编程的,至少在我接触到的很多人,都有这种在普通人看来多少有些奇怪甚至相互矛盾的混合特质:好奇?单纯?内敛?天 真?执著?怀疑?死板?刻薄?叛逆?理性?感性?优雅?浪漫?洁癖?幽默?自我?敏锐?木讷?书卷气?追求完美?理想主义?孤芳自赏?难以形容的十分清楚,但就是让人觉得这个人群看问题 的角度、思维的方式、处理问题的方法,都在不经意间流露着可爱。

可能我骨子里就是这样一个人吧,表面上说别人,其实在暗示自己对类似的性格特征很有共鸣。不论现实让我走了多少弯路,直到我最终"子承父业",干上了 编程,仿佛才找到了真我。编程及编程相关的工作,不论是学到一个新的东西,实现一个新的想法,完成一个有挑战的任务,遇到志同道合的朋友,总能给我带来快乐,这样的快乐,直接而 纯粹。


posted @ 2006-12-21 22:34 laogao 阅读(496) | 评论 (0)编辑 收藏


http://blogs.zdnet.com/Burnette/?p=216

这是一周多以前的文章了,不过如果你还没从其他渠道看到这篇来自Ed Burnette的blog,推荐你读一读,挺有趣的,包括comments。


posted @ 2006-12-21 22:06 laogao 阅读(534) | 评论 (0)编辑 收藏


"The limits of my language are the limits of my world."
-Ludwig Wittgenstein

这是维特根斯坦的一句哲学经典:“(我的)语言之极限即(我的)世界之极限。”
人们对客观世界的认知和定义其实是局限于我们能够通过语言来理解和描述的它的极限。

用这句经典来调侃一下编程语言,某个编程语言能够做到的,是不是也局限于它从语意上乃至通过其相关的API/运行环境能够描述的?语言越强大,表达能力越强,背后的平台越强,那么它能够实现的功能,能够达到的高度和广度,就越高或者越广?

或者说,当你掌握的语言(不论是我们通常意义的语言、编程语言、还是所谓的DSL - Domain Specific Language、行话、方言)足够强大,或者你掌握的语言足够多,且涉及不同的domain,那么你的世界也将变得更加广袤和开阔。


posted @ 2006-12-18 23:21 laogao 阅读(603) | 评论 (0)编辑 收藏


http://www.blogjava.net/sean/archive/2006/12/15/87874.html

上一篇提到NAnt 0.85的两个bug,经过一番折腾,发现问题其实出在它bundle的sharpcvslib(scvs.exe),我的解决步骤如下:

1- 安装CVSNT,并在编译脚本加入
<property name="sourcecontrol.usesharpcvslib" value="false"/>
让NAnt不要使用那个bundle的sharpcvslib(scvs.exe),而是使用CVSNT的cvs.exe;

2- 去掉先前由NAnt建议的<cvs-pass>这个Task,以及<cvs-checkout>中的passfile属性;

3- 指定cvsroot中直接包含密码,格式
:pserver:username:password:@xxx.xxx.xxx.xxx:/your/cvs/path

前面提到的文件编码以及用户密码验证等问题均不复存在。

以下谈一谈我的观感:

.NET的开源项目,就NAnt和sharpcvslib来说,不论是代码质量、文档、社区活跃程度、更新/反馈周期,都还有很大的改进和提高的空间,从实际效果来看,感觉.NET部分开源项目的定位和初衷也很值得思考,究竟一个.NET开源项目的存在更多的是要证明.NET/C#也可以做到xxxx,还是要解决实际问题?这背后的价值观到底是什么?

如果是解决实际问题,那么为什么有现成的Win32环境下成熟的、完整的CVSNT可用,却一定要自己搞一套cvs库,而且还要默认使用这个相较而言颇为不成熟的库?如果你跟我说这样是需要对CVS访问有更精细的控制,那我想还不如在CVS的命令行参数上多下些功夫来得实际。

其实CVS已经存在很久,对于基本的协议、标准,现有的不少CVS客户端都实现的比较到位,sharpcvslib不知何故进展如此缓慢,官方站点 sharpcvslib.sourceforge.net最后更新时间是今年2月,上一个发布版本0.35是2004年,开发版本0.36是2005年1 月,NAnt也好不到哪里去,0.85的RC1版本2004年11月就出来了,正式的0.85到今年10月才放出,如果你看看它的bug database,很多bug都石沉大海。

这个版本的NAnt在使用中的一些细节的处理个人感觉也有些欠缺的地方:比如:使用<cvs-checkout>,password属性被deprecated,直接就不支持了,没办法,“官方”建议使用<cvs-pass>那我们就用吧,但是<cvs-pass>和<cvs-checkout>就目前看来,配合的并不默契(详见上一篇随笔bug ID 1616136)。

相比之下,生活在Java以及GNU/Linux/BSD下的朋友们,在上述这些方面就要幸运的多。


posted @ 2006-12-17 22:49 laogao 阅读(2407) | 评论 (1)编辑 收藏


由于是从Java转做.NET项目,在考虑SCM和自动编译时,自然而然想到NAnt,不过0.85的RC版本出来很久,一直没有正式release,直到最近一次偶然的机会我才得知正式版已经出来,虽然不支持Visual Studio 2005的解决方案/项目文件,但至少支持.NET 2.0,正好项目整个框架和模块清单基本定型,遂决定下点功夫把我们的构建过程脚本化、自动化。

经过些磕磕绊绊,总算是跑起来了,但还是有不够完美的地方,发现2个bug,提交到NAnt在SF.net上的bug database:

[1614467] NAnt自带的scvs.exe(<cvs-checkout>)从CVS拿文件时会忽略文件的原始编码,如UTF-8。
[1616136] NAnt的<cvs-pass>和<cvs-checkout>两个task对passfile属性的处理不一致,<cvs-pass>创建密码文件在指定位置,<cvs-checkout>却不从那里拿。

不知大家有没有遇到类似的问题。如果有时间,我倒是很想把源码拿下来看个究竟。


posted @ 2006-12-15 10:14 laogao 阅读(1928) | 评论 (1)编辑 收藏


参考上一篇(Second zero-day flaw):
http://www.blogjava.net/sean/archive/2006/12/06/85968.html

以下是来自CNET News.com的报道:
http://news.com.com/2100-1002_3-6143853.html


posted @ 2006-12-15 08:58 laogao 阅读(1634) | 评论 (1)编辑 收藏

仅列出标题
共34页: First 上一页 8 9 10 11 12 13 14 15 16 下一页 Last