Web Analytics

再谈C语言位域

我在日常工作中使用C语言中的位域(bit field)的场景甚少,原因大致有二: * 一直从事于服务器后端应用的开发,现在的服务器的内存容量已经达到了数十G的水平,我们一般不需要为节省几个字节而使用内存布局更加紧凑的位域。 * 结构体中位域的实现是平台相关或Compiler相关的,移植性较差,我们不会贸然地给自己造“坑”的。 ...

May 21, 2013 · 9 min · Tony Bai

buildc 0.3.0版本发布

自buildc正式在项目中应用以来,我们收到了许多同事针对buildc演进的意见和建议。其中确实有些易用性的问题是在最初设计时未考虑周全的,尤其是.buildc.rc中的配置,同事们对该文件的配置已经“怨声载道”了。 .buildc.rc是用来配置某开发者在开发过程中使用的第三方库所在subversion repository信息的,例如: a_repository = (‘SVN库地址’, ‘本地缓存路径’, [ # 格式:[(“第三方库名称”, “库版本”, “特征库文件”), …] (’libevent’, ‘2.0.10’, ’lib/libevent.a’), (‘instantclient’, ‘10.2.0.5.0’, ’lib/libnnz10.so’), … ] ) b_repository = (‘SVN库地址’, ‘本地缓存路径’, []) c_repository = (‘SVN库地址’, ‘本地缓存路径’, []) … external_repositories = [ a_repository, b_repository, c_repository, … ] ...

May 11, 2013 · 7 min · Tony Bai

也谈Commit log

在版本控制工具大行其道的今天,作为程序员,势必要每天与各种版本控制系统(比如Subversion、Git、Mercurial等)打交道, 每天不commit几次代码都不好意思说自己是专业程序员^_^。不过commit代码可不止敲入commit命令这么简单,对于一个专业程序员 来说,我们还要关注每次commit所携带的背景信息,这里暂且称之为“commit context”。在每次commit时,这些上下文信息只能通过commit log来体现。 ...

May 9, 2013 · 9 min · Tony Bai

推动知识管理的这两年

掐指算来,部门知识管理的推广工作已有两年了。两年时间不能算短,但对于知识管理这件事来说,只能算是热身阶段,我们依旧站在起跑线上,或者稍乐 观地讲我们只是刚刚迈出了万米长跑的第一步。 下面是这两年来部门内部知识库建设的一个Timeline: - 2011年中旬,我所在产品线私下在一台PC上建立了基于MediaWiki的知识库。 - 2011年末产品线在部门内部做了有关知识库与知识管理实践的分享。 - 2012年初,部门在新采购的高性能服务器上建立基于MediaWiki的知识库,并指定专人负责;我们产品线将已经积累的内容迁移到了部门知识库中,这 也标志着部门知识库1.0版本正式上线。知识管理的策划和推广事宜也交由专门的子部门负责。 - 2012年中,设立子部门KM负责人,设立子部门KM定期工作会,设立子部门技术交流汇报会,旨在各子部门之间分享最新信息,减少重复劳动,提高效率。 - 2012年末,启动知识库2.0建设方案。 - 2013年3月末,知识库2.0版本上线。邀请专业设计人员策划和实现了全新主页,提高了UE;重新策划了分类;重新划分了知识版块,专人负责更新;增加 了知识达人等多个激励内部童鞋分享知识的手段和方法;通过piwik统计和分析知识库的最新访问动态;通过一些实用的插件来简化Wiki Page编写工作、更好地展示内容;提炼高质量知识文章,形成知识周刊、月刊,作为内部知识库营销推广手段,吸引大家来到知识库,并尝试留下自己的知识。 ...

May 3, 2013 · 5 min · Tony Bai

C,C++开源项目中的100个Bugs

俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMake、MySQL等的源码进行了分析,找出了100个典型的Bugs。个人觉得这份列表对C/C++ 程序员有一定参考意义。与其说事后用静态工具分析,倒不如在编码时就提高自知自觉,避免这份列表上的错误发生在你的代码中,因此这里将部分摘录一些Bugs(Bug编号这里不连续,为的是对应原文的编号)并做简要说明。原文将这份Bug列表分为了几类,这里也将沿用这个思路。 ...

April 10, 2013 · 15 min · Tony Bai

Hello,Sublime Text 2

用惯了Vim后,也会有一种尝试新Editor的冲动,这回Sublime Text 2满足了我的这个需求。据说Sublime Text是目前最火的代码编辑器之一,我周围为数不多的几个比较Geek的同事都已经开始使用Sublime Text 2或用了很长时间了,其官方网站首页的Feature Demo也的确非常地炫。 ...

April 1, 2013 · 6 min · Tony Bai

简析指针与多维数组

上一篇文章中对多级指针做了简要分析,其实只有当指针与多维数组以及函数联合在一起使用时,麻烦才算真正到来。 零、数组****与数组名 C语言中的数组的一般声明形式如下: T arr_name[n]; /* T为类型,n为数组元素个数 */ 从内存布局角度来说,数组T arr_name[n]就是内存中连续的内存单元,每个内存单元的长度为sizeof(T),数组的起始内存单元地址为arr_name所在的内存地址, 同时也是数组第一个元素arr_name[0]的内存地址。 ...

March 28, 2013 · 7 min · Tony Bai

简析多级指针解引用

指针是C语言中公认的最为强大的语法要素,但同时也是最难理解的语法要素,它曾给程序员带来了无数麻烦和痛苦,以致于在C语言之后诞生的很多新兴 语言中我们再也难觅指针的身影了。 下面是一个最简单的C语言指针的例子: int a = 5; int *p = &a; 其中p就是一个指针变量。如果C语言中仅仅存在这类指针,那显然指针不会形成“大患”。经常地我们会在代码中看到下面的情形: ...

March 23, 2013 · 5 min · Tony Bai

关于Python Package下的Module import方式

2012年有一个目标我没有达成,那就是深入学习和使用Python语言。这个目标被其他学习任务和工作无情的抢占了,当然最主要的原因还是我重视不够^_^。 近期恰逢有一些Python工程的开发工作要做,就顺便略微深入地学习了一下Python:看了几本Python的英文大部头,比如《Learning Python 4th Edition》、《Python Essential Reference 4th Edition》、《Programming Python 4th Edition》、《Expert Python Programming》以及《The Python standard library by example》,看得我有些要吐了^_^。虽然之前用Python开发过buildc,但自我感觉依旧还是一个Python的绝对beginner,这 次通过这几本书的学习算是对Python有了个较为系统的了解了。 ...

January 24, 2013 · 5 min · Tony Bai

2012小结

趁着世界末日尚未到来,赶紧将2012年总结一番,即便是末日也不能留遗憾不是^_^。 2012年总体过得还算充实: *《七周七语言》终于出版了; * 写了近80篇Blog,虽离目标预期还有差距,但也给我带来了不小的精神愉悦; * 为《程序员》杂志写了两篇文章,虽然都是短文; * 读了30多本书,还有10多本尚未读完,不过年初制定的“扫存书”目标没能达成,因为依然不断地有大量的新书加入^_^; * 学习了一门编程语言Go(而不是年初确定的Clojure等); * 将自己的一些关于工作方法、团队建设和管理的认知和实践总结了出来,算是一个阶段性的小结,内容包括绩效目标制定、绩效面谈、高效会议、写好Mail、个人时间管理、知识管理新认知、团队经营等诸多方面。也许后续还有补充。 ...

December 18, 2012 · 3 min · Tony Bai