致敬:程序员成长路上的良师与经典著作

本文永久链接 – https://tonybai.com/2024/09/10/programmer-mentors-and-their-classic-works 早上送孩子去幼儿园的路上,收到一个小伙伴的微信: 我这才意识到今天是教师节!为人师,自觉还不够格!但在这个特殊的日子,作为IT行业从业人员,我想向那些在计算机科学和编程领域给予我们启迪的“老师们”致敬。这些老师可能不是传统意义上站在讲台前的教育者,但他们通过自己的著作、思想和贡献,通过他们的智慧结晶,为我们指明了方向,为无数程序员的成长之路点亮了明灯。 ...

September 10, 2024 · 18 min · Tony Bai

把所有东西都放入版本控制系统

本文翻译自Dr. Dobb’s杂志主编Andrew Binstock的"Putting Absolutely Everything in Version Control“一文。 持续交付(Continuous Delivery)的一个关键原则就是将所有东西都放入版本控制系统中。这解决了一些重大问题,但也引入了一些其他问题。 ...

September 4, 2013 · 4 min · Tony Bai

让BuildBot服务于多个项目

多数公司不会仅有一个项目,当你为一个项目引入持续集成实践后,其他项目就会接踵而来。这时你会重新考量BuildBot,考虑如何让BuildBot可以服务于多个项目。 如果你有足够的主机资源和人力资源,那为每个项目单独搭建一套CI环境是再好不过的了,每个项目都有专人维护CI环境,各个项目的配置互不干扰。不过对于一些公司来说,这显然有些浪费,BuildBot Master的资源消耗是不大的,我们完全可以使用一套BuildBot Master来服务于多个项目,至少BuildBot是可以支持这样做的。 ...

June 7, 2011 · 4 min · Tony Bai

解决BuildBot构建结果mail无法发送的问题

在“使用BuildBot搭建持续集成环境”一文中我曾经说到:公司使用的mail服务器只支持SSL连接,而BuildBot似乎对SSL连接的支持有些问题,导致构建结果mail无法发送“。BuildBot实际上使用的是Twisted的mail库来发送邮件的,我下载了Twisted的一些mail发送的例子程序,并使用我的公司mail账户配置,但依旧发送失败。看来这个问题与Twisted的实现有关了。 这个问题已经折腾我许久了,难道非得让我去debug Twisted库?还好,今天我想到了另外一种方法:使用stunnel。原理是这样的:通过stunnel将非SSL连接转换为到公司mail服务器的SSL连接,通过stunnel建立的这条转化通道,mail发送的问题就应该可以解决了。想法归想法,实际上能否达到我的目标,还得通过试验验证。 首先我们需要在BuildBot的master服务器上安装stunnel。 ...

May 31, 2011 · 4 min · Tony Bai

使用BuildBot搭建持续集成环境

部门的持续集成一直做的不太好,我们开发部这边甚至一直没能做起来,这其中有各种原因:工具、意识、执行力、沟通等等。将持续集成引入到我们的开发过程中也一直是我的一个目标。去年末启动的一个项目让我感到时机变得成熟了。 新项目的代码是完全重写的,这样的机会甚是难得。因为大多数情况下大家都是在维护现有系统:做些添添补补、修正Bug以及优化之类的事情。项目初期,我特别向大家强调了要严格遵守统一代码风格并将astyle代码格式化工具介绍给大家,手把手地教大家如何利用类似LCUT这样的单元测试框架编写单元测试,讲解什么是Mock测试。前些时间我又将代码风格检查 脚本加入到工程的构建过程中,并将代码风格检查作为最终构建目标的关键依赖,强制大家编写出统一风格的代码。 ...

May 18, 2011 · 8 min · Tony Bai

通过精减来改善代码

本文翻译自"Improve Code by Removing It",来自于《程序员应该知道的97件事》一书中的某个章节。 少即是多。这是一句有些陈腐的短小格言,但有时它确实是正确的。 在过去的几周里我对代码库所作的改善工作之一就是删除了其中的几大块代码。 ...

March 17, 2011 · 2 min · Tony Bai

无意中的Pair Programming

Pair Programming, 结对编程是敏捷开发中一个重要的实践,并受到很多业界大师级人物的推崇。但是明知它对我们可能会很有帮助,但是如果推广、实践起来还是要突破各种束缚的,心理上的、流程规范上的等等。我想也许这也或多或少也和公司或者部门的开发文化有些关系。我很想去尝试,但是一直没有找到一个很好的机会,也没有找到"心仪"的Partner。 ...

September 2, 2008 · 2 min · Tony Bai

尝试Scrum中的Demo模式

昨天,在下班前的一分钟,突然有一个想法:项目刚刚完成一个阶段性的任务,是否将项目组所有人召集在一起,每个人将自己在这个阶段做的东西向大家做一个展示呢?把这个想法和几个同事交换了一下意见,获得了支持。说做就做,恰好这段时间我一直尝试不断提高自己的执行力。遂在上午的一个短会上和大家道出了我的想法,并决定在今天就做这个演示活动。 ...

August 27, 2008 · 3 min · Tony Bai

CruiseControl.rb初体验

我所在的项目一直以C语言作为主要开发语言,与做Java以及其他新兴语言的人不同,组内的同事似乎对新鲜的东西不是那么感兴趣,也没有主动去研究新鲜事物的意愿和意识。我深为此闹心,看到外面世界中那么多美妙的工具,再也不能坐以待毙了。我一直都是有很多想法的,但是迫于自身精力有限,自己无法全身投入,以前都是交予别人去做的,但是收到的效果都不是很好。认识到这点后,我决定自己动手,丰衣足食。 ...

August 20, 2008 · 9 min · Tony Bai

Mingle初体验

本周一已经投奔ThoughtWorks的Dreamhead因公事回到沈阳,来到我们公司看望以前的同事。他谈到业界的一种说法:ThoughtWorks在"怎么做"上达到了很高的高度,但是在"做什么"上与Google这样的公司相比还有差距。既然ThoughtWorks在"怎么做"方面树立了榜样,那么这个公司推出的产品估计在"怎么做"上对其他公司也会有所指导^_^。Mingle就应该是其中之一。 公司走的是CMMI的体系文件,即所谓的"重过程"管理,这样的过程对项目负责人的要求甚是严格,常常发生与QA之间的"你来我往",甚至为一个无关轻重的文档"严词讨论"一番;再加上部门在过程工具上的选择比较"保守",自己感觉部门的管理成本还是很高的,有些时候甚至感觉有些浪费。普通编程人员对各种文档也是有着"抵触"情绪的,特别是在"补"一些"写完即过时"的文档时更是无奈。 ...

April 9, 2008 · 5 min · Tony Bai