Web Analytics

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

算法的回归

关于算法的文章我一直想写,但算法是我的软肋,自己难于下笔。首先自己非科班出身,没有进行过系统的算法设计课程训练;再者自己到目前为止还从未独立设计过一个完整的、实用的算法,在平时工作中较少的涉及到算法设计,这不能说不是一个遗憾。也许有人会问:“算法难道还没有过时吗,算法不是属于’Donald E. Knuth‘那一代人的事情吗?’。我很难回答这个问题,不过当我今天看到CSDN上的一篇题为’算法是百度工程师的利器’的文章后,我隐约看到了算法的回归! ...

April 7, 2006 · 4 min · Tony Bai

第一道ACM练习题

说来惭愧,今天才真正做过一道ACM练习题。自从上个月发现我的母校上有ACM的在线测试站点,我就下决心好好潜心做题,一来提高一下自己解决问题的能力,一方面也想在算法方面多实践实践,而且每天都花一定时间写程序还可以锻炼自己的思维能力。总而言之,由于项目繁忙以至直到今天才开始做第一道ACM练习题,做题的过程’坎坷不平’,让我印象深刻亚!^_^ 有人会说:’ACM’中的题都是不实用的,没有实际意义。我之前也曾经是这么想的。不过今天的作题过程让我完全推翻了以前的想法,我发现ACM的习题是很能锻炼个人的思维能力、编程能力的。就拿今天我做的这道看似简单的问题,实际上其背后也蕴含着很多基础理论,如果没有很好的理论基础做后盾,我相信很多人都会在这道题上’碰个头破血流’。 ...

April 5, 2006 · 5 min · Tony Bai

我来'Mixing Milk'

这又是一道ACM练习题,我的原则就是如果有时间,坚持每天考虑解决一道吸引我的ACM练习题,今天这道’Mixing Milk’题并不难,不过里面蕴含着一个基础的算法,毕竟对算法一类的知识生疏已久,今天就拿它做一次回顾吧! ...

April 5, 2006 · 4 min · Tony Bai

追求'lint-clean'

到底需不需要编译器之外的独立的静态代码检查工具呢?这个问题’仁者见仁,智者见智’。但是有一个结论我想大家都会认可,那就是越是在开发周期早期发现的Bug,修复它所付出的代价就越小。而像lint这样的静态代码检查程序恰恰是让Bug在早期阶段’显露原型’的绝佳工具,而追求’lint-clean’[注1]境界的代码也向来是专家级程序员的嗜好。别忘了在’C专家编程’一书中曾经提到Sun OS的内核一直是保持’lint-clean’状态的,这就是榜样!还等什么?赶快学呀!^_^ ...

March 31, 2006 · 4 min · Tony Bai

见识思维导图

不瞒大家说在未听说思维导图之前,我自己就常常在废旧打印纸背面画那种’枝繁叶茂’的、很发散的需要费力才能将其中的信息串起来的’思考图’(我那时就这么叫它)。我喜欢思考,但却常常因为没有及时把自己思考出来的好想法记录下来而遗憾,因为有些灵感是’来去匆匆’的,你可以在不经意的0.1秒得到这个灵感,可是之后你再花1个小时’冥思苦想’也迸发不出来这样的想法了。现在我的’思考图’有了’大名’了,叫’思维导图’,不过伴随之而来的还有如何去画’思维导图’。习惯了’乱画思维’的我反倒感到一些不适应,不过这些理论毕竟是经过科学证明的,值得学习。而且按照一定科学的方法画思维导图可以帮助挖掘思维潜力。 ...

March 29, 2006 · 3 min · Tony Bai

C语言也重构

所谓的重构是这样的一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法,可以将整理过程中不小心引入错误的机率降到最低,本质上说,重构就是[在代码写好之后改进它的设计]。– Martin Fowler 重构,一种改善代码’体质’的方法’。 — 侯捷 重构是上进程序员每天的进行式。是一项工程而不是靠着天份挥洒的艺术。– 侯捷 如果有人说’重构’仅仅限于Java语言或者其他面向对象的语言,那他就大错特错了。按照Martin Fowler的诠释,’重构’就是一种代码整理,而且是在保持接口功能不变的一种代码整理,这样的话每种语言都可以’重构’,也许’重构’在你平时的工作学习中已经不知不觉地发生了,只是你还没有认识到那是’重构’罢了。自从从大学毕业后我就一直在’把弄’C语言,对C语言也算是’情有独钟’了,所以自然而然的就开始探索和积累C语言的重构方法。这里个人能力毕竟有限,并不能穷尽所有方法。 ...

March 28, 2006 · 9 min · Tony Bai