Web Analytics

代码评审很必要

记得刚到公司做第一个项目时,mentor要和我一起看看我刚实现完的一些代码,当时有些不解,难道是不相信我写的代码么?最后事实证明:我的代码中有很多缺陷,有的还是很严重的缺陷。后来知道这个过程叫’代码评审’,是保证软件质量的一种手段,而且是很重要的一种手段。代码评审的形式有多种,最正式的一种就是召集公司或者部门的一些’大牛’们,围坐在会议室中,一行一行的审查你的代码;简单的形式就像我和mentor做的那种,一个编写代码的人和一个对系统特别了解的人在一起评审,效果不见得不如正式的评审,起码我是这么认为的。 ...

May 31, 2006 · 2 min · Tony Bai

小心库函数调用的'陷阱'

下午一同事发现代码中的一处问题,问题的现象是这样的:这位同事调用了一部门基础库函数,当使用32位编译后,程序正常运行;而当使用64位编译后,系统运行dump core。让这位同事奇怪的是他所修改的程序中还有其他模块也使用了同样的基础库函数,为什么偏偏他这块儿出错呢?恰恰该程序的其他模块是我写的。 ...

May 31, 2006 · 2 min · Tony Bai

算法时间复杂性之渐近法分析基础

在我的评论栏中有人说:“你是程序员?",我可以确定、一定以及肯定地告诉他/她:‘我就是一个程序员,如假包换’。也许是最近技术类的blog写得少了,其他类的多写了些,让人家误会了,这也无可厚非。不过我倒是想到这样一个问题:程序员一定要满篇地谈技术么,程序员也有自己丰富多彩的生活呀。好了,切入正题。今天我们谈谈算法时间复杂性的分析。我没系统学过,都是在书上看到的以及MIT算法导论课上听到的。这里仅从我的理解的角度写一些罢了,不是很严谨哟。^_^ ...

May 23, 2006 · 8 min · Tony Bai

单元测试进行曲

又是老生常谈-‘单元测试’,说实话自己在单元测试上是’语言上的巨人,行动上的矮子’,属于那种说的比做的多的人^_^。不过也不能说什么也没做。记得去年年末的时候自己还设计并实现过一个简单的’C语言单元测试包‘呢^_^,至今这个包仍然还在使用呢。不过大多数的单元测试都不像想象中那样简单,我们在介绍单元测试的时候,大多拿Add、Sub等作例子,这样当然有好处,简单易懂。其实学习单元测试初期关键是学习单元测试的思想,所以这些Add、Sub也能满足需求。不过在真正的项目中,单元测试大多做起来较为困难,我是在Unix上做C开发的,Java的咱暂先不提,也没什么资格提,虽然曾经花过一段时间专心研究过,还写过些Java学习心得,但是毕竟没做过实际的项目,说起来心里也发虚。 ...

May 12, 2006 · 4 min · Tony Bai

算法描述中的'Pseudocode Conventions'

Pseudocode,即伪码,它常常用来描述一个算法,目的是能使被描述的算法能够容易的以任何一种计算机程序语言实现。’Pseudocode Conventions’可以理解为’伪码约定’,既然是’约定’那就并非强制性的标准。但是在专业的有关算法的文献和资料中,其相关内容多符合这些’Pseudocode Conventions’。如果你是一个想学习和钻研算法的人,那么建议你熟悉这些’Conventions’,俗话说:’磨刀不误砍柴工’吗! ...

May 10, 2006 · 4 min · Tony Bai

你提供默认选项了吗

五一期间到姥姥家串门儿,自然午饭要在那吃,可中午做饭时听姥姥抱怨新买的电饭煲做饭时间太长而且还夹生,我好奇的走了过去想看看究竟,电饭煲的确是新买不久的,而且是美的的,我心想大牌厂商应该不会有这样的质量问题呀,一定是姥姥使用上的问题。仔细看了看控制板,果然不出所料,电饭煲的’功能选择’键停在了功能档的中央,既不是左边的’煮饭’也不是右边的’煲粥’,遂告诉姥姥以后煮饭要把功能选择调到’煮饭’档。 ...

May 8, 2006 · 3 min · Tony Bai

Unix Shell Scripting之'扫盲篇'

俗话说:“工欲善其事,必先利其器”。在Unix/Linux上做开发,这里的’器’也同样包括Unix Shell Script,遗憾亚,虽然自己在Unix上开发已经快2年了,但是对Unix Shell Script可以说是’Script盲’一个,很多稍微复杂些的Script自己根本都看不懂。其实这也是自己栽下的’苦果’,因为以前我一直’歧视’Script language,认为那不是真正程序员该精通的,所以也就没有认真钻研过。目前认识到了解一定的Script技术,可以很大程度提高自己的工作效率,有些小工具用Script实现方便极了。这里’扫盲’一是给自己’扫盲’,二是把这些基础的Script技术和那些对和我一样对Script不熟悉的人一起分享。这篇中的所涉及的Shell语法均为符合POSIX标准的语法,可能很多Shell不能与该语法完全相吻合。自己感觉Bash与POSIX Shell语法最为接近。 ...

May 2, 2006 · 6 min · Tony Bai

遇到系统的高可用性问题

我也是直到最近才接触到’高可用性’这个词儿的,从我所在的项目需求角度出发,我理解’高可用性’就是在系统的外部依赖实体(如主数据库、主网络)等瘫痪了之后,系统仍然能正常的支撑业务的运行,当然系统自己宕掉了,那就没辙了^_^。高可用性设计实际上就是在系统自身完好的情况下如何考虑其外部实体的设计以保证系统能持续的运行支撑下去,起码从我现在正在做的项目的角度来说是可以这样理解的。 ...

April 25, 2006 · 3 min · Tony Bai

恼人的'素数回文'

33.00s和14.27s,两个截然不同的运行时间值,两次提交尝试解决素数回文问题,终于搞定了!用两个字形容’恼人’!算法不复杂,就是要求时间很’紧’,大部分工作都在考虑着如何缩短运行时间。桃花在冷空气袭来的日子都开了,我的心也算可以放下了! ...

April 16, 2006 · 6 min · Tony Bai

开始'亡羊补牢'

就在昨天,就在我们的项目要结项的时候,一个影响力不亚于’广岛原子弹’的bug出炉了,蒙蔽我近一个月的问题终于被澄清了,不过为时已晚,项目即将上线,如果想彻底地解决这个问题,需要对整个系统的实现架构作调整,目前能做的只是’亡羊补牢’了。 ...

April 12, 2006 · 3 min · Tony Bai