Web Analytics

开发人员之维护他人项目有感

软件行业人员流动比较频繁,如果你是一个公司的老员工,你常常会有如此经历:一个同事即将离职,领导可能分配你去与之进行工作交接,有时他做过的项目很可能和你做过的有很大差距,没办法领导发话了,你还是要硬着头皮接下来,心中盘算着但愿这个项目的产品在现场运行不要出现什么问题或者用户最好一个新需求都不要提,这样就算是挂个名,也没什么大不了的。 ...

May 25, 2007 · 2 min · Tony Bai

数的圆整算式

一般在考虑到内存对齐的程序里面势必要使用数的圆整算式,一般来说在计算机程序里一般都是圆整到2的次幂上,而很多书上也有很多基于’移位’操作的圆整到2的次幂上的算法公式,形式都是很简单的,很实用。 这里要说的是一个圆整到任意正整数(n > 1,圆整到1没有必要^_^)的算式,突然觉得如果说算法有些大了。我们来推导一下,也不是严密推导。就是怎么想的怎么说。 ...

May 24, 2007 · 2 min · Tony Bai

C++咬文嚼字-'Pointer Trick'

晚上饭后抽空看了看如何实现一个内存管理器,涉及内存操作必定少不了指针,恰研究到offsetof这个operator,也看了它的实现,顿有所悟。 ...

May 22, 2007 · 3 min · Tony Bai

Unix体验中心开张

晚上收到一封mail,来自ecommunity@gceclub.com,mail中提到Unix体验中心开始提供免费服务了。Mail中写道:‘Unix体验中心(Unix-Center.Net)的目标是为研究、学习和使用各种版本的Unix和类Unix操作系统的教师、学生和工程技术人员提供一个体验和测试各种版本的Unix和类Unix系统的软硬件平台。该平台能够为所有注册用户免费提供如下服务:SSH登录以及各种语言开发开发工具’。虽说有Sun宣传产品之嫌,不过这样的一个平台还是可以让很多人体验到伟大的Unix的,现在的学生可是真幸福呀。 要想体验Unix环境,首先需要注册一下,很简单的注册流程。然后就是按照其’常见问题解答’中的方法一步一步登陆到其服务器上。由于采用SSH2登陆,需要下载一个putty工具,我下载了一个绿色的putty包,免安装,直接可用。解包后里面有好多个putty系列工具,启动’putty’即可。在主机名称中输入IP地址(公众网:x4100.unix-center.net;教育网:x4100-edu.unix-center.net),然后点击’打开’,你就会看到登陆窗口,你输入你注册时的user和passwd即可成功登陆。环境默认采用Bash Shell。里面有vim, emacs等编辑器,还有C,C++,Java等语言的编译器,供实验使用。大家不妨去试试。 ...

March 20, 2007 · 2 min · Tony Bai

C++咬文嚼字-'Functions'

关于Functions,Bjarne Stroustrup在’The C++ Programming Language’一书中是这么开篇的:‘The typical way of getting something done in a C++ program is to call a function to do it.’;另外他还阐述了一个使用Functions的原则:‘A function cannot be called unless it has been previously declared.’。 ...

March 13, 2007 · 5 min · Tony Bai

C++咬文嚼字-'Evil cast'

Cast也被称为"Explicit Type Conversion",即显式类型转换,在传统C中强制转型(cast)只有一种语法形式(T)e。Bjarne Stroustrup在’The Design and Evolution of C++’(以后称作D&E)一书的14.3小节开始就说了’无论是从语法还是从语义上, Cast都是C++里最难看的特征之一’,所以他要为cast提供A New Cast Notation. ...

March 12, 2007 · 4 min · Tony Bai

C++咬文嚼字-'0 or NULL'

C程序员和C++程序员在声明空指针时做法常常是不相同的。 C程序员常常如下做: int *ptr = NULL; C++程序员则是听从Bjarne Stroustrup或者其他C++大师的教诲,坚定地如下做: int *ptr = 0; ...

March 10, 2007 · 3 min · Tony Bai

C++咬文嚼字-'Hijack const'

晚上无意翻看Bjarne Stroustrup的’The C++ Programming Language Special Edition’(英文版)第94页,章节5.4 Constants一节,看到这么一句原文’C++ offers the concept of a user-defined constant, a const, to express the notion that a value doesn’t change directly.‘字眼就在directly上,既然不能directly change,那我试试indirectly change。 ...

March 9, 2007 · 3 min · Tony Bai

工作中的故事-0是'TRUE'还是'FALSE'?

这个故事源于今天测试组测出的一个BUG,BUG被测试人员转给了我,故事便从这里开始了。 我们的系统是一个后台服务器程序,用C写的,运行在Solaris上,数据存储在数据库中,每次系统启动都要从数据库中读取配置数据。系统根据配置数据对输入的消息数据进行处理。今天的这个BUG现象就是对于一定的输入消息,系统根据配置数据的指导进行处理,结果得到的结果本应该是A,但是却得到了B。 ...

January 17, 2007 · 3 min · Tony Bai

编译Ethereal On Windows

最近在研究项目下一期中新增的信令跟踪功能,在这个开源盛行的时代,开源工具当然是首选。我们发现了Ethereal,一款强大的网络分析工具包。我们不仅仅要使用Ethereal,而是在Ethereal上做二次开发,增加一个新dissector或者一个plugin,用来分析我们自己的应用层协议。 之所以选择Ethereal还有一个很重要的原因就是它已经支持300多个协议包了,这说明Ethereal的框架已经很成熟了,在其上面做二次开发具备可行性。我们最终要形成的成果物可能要运行在Solaris上,但是家里的服务器环境都是没有显示终端的,也看不到运行画面,所以我决定现在Windows上作开发,然后移植到Solaris上。Ethereal底层的图形接口采用的是GTK,GTK是一种可在跨平台的图形界面开发包,它屏蔽了不同OS的底层细节,便于我们的程序在各个OS平台上移植。由于GTK的使用,我才觉得我的开发方案是正确的:)。另外开发一个新的dissector涉及到的代码都应该是可移植的,所需的接口Ethereal都已经提供了,调用即可。所以我在想在Windows上开发成功后,拿到Solaris下重新编译后是应该能正确运行的,有些过于理想了^_^。 ...

December 30, 2006 · 5 min · Tony Bai