Web Analytics

果果的百岁照

“百岁照是一种民间传统,一种在小孩100天时候拍的照片,代表了人们对孩子的祈福,希望孩子能长命百岁。” — 百度百科 在果果103天的时候我和LP一起带着果果去拍了一套百岁照。拍摄的过程很“艰苦”^_^:从上午9点一直持续到下午3点,其间果果睡了三次,哭了若干次,不过结果还是不错的,这不今天我和LP把照片取了回来。和我们那一代相比,现在的小孩子幸福多了。在我LP的钱包里放着我的一张儿时的照片,那是我大概五个多月时照的,似乎也是我的第一张正式照片了,起码我目前为止能找到的最早的照片就是它了(小时候身体比较虚弱,百天的时候老妈也没抱着我去照相^_^)。照片是黑白的,布景很简陋,只有一张铺着桌布的桌子,我穿着一个小背心儿,趴在桌子上,抬起小脑瓜,然后摄影师给我记录下了那一瞬间! 现在的百岁照都是按套系的,和婚纱照一样,什么版权数量、服装套数、各种册子和我叫不上来名字的物件都需要和影楼一一敲定。不过这些我一概不懂,都是LP前期和影楼谈好的,我只是出钱出力^_^。 ...

September 23, 2010 · 2 min · Tony Bai

做好个人代码备份与版本管理

今天下午花了一个小时分别和两位同事做了一些代码讨论,这两位同事正在编写的代码都具有一定的试验性质(暂不能进入项目代码库)。这里不谈代码如何如何,而是就我发现的一个问题谈谈我的看法。 ...

September 19, 2010 · 2 min · Tony Bai

经典设计原则背后的本质

近一段时间重读了一些经典书籍,诸如《敏捷软件开发:原则、模式与实践》、 《程序员修炼之道》、《Unix编程艺术》等。这些书中关于如何衡量或评价一个类或函数设计好坏的几个原则(Principle)让人印象深刻。《敏捷软件开发》中谈到了SRP、OCP、DIP; 程序员修炼之道则以DRY、“正交性”为话题展开;《Unix编程艺术》围绕紧凑性、SPOT、分离等阐述作者立场。这么多经典原则,如何学习把握?我们不妨来挖掘一下这些新设计原则背后的本质。 追本溯源,从计算机编程语言的发展历史来看,成熟的结构化程序设计语言(如C语言、Pascal等)要先于成熟的OO设计语言(C++、Java等)出现,那么其成熟的设计理论显然也是要早于后者的。这里就不能不提到经典结构化设计的代表作:《Structured Design: Fundamentals of a Discipline of Computer Program and System Design》,这本书出于1975年(年份来自维基百科,Amazon上卖的是1979年版)。说实话我也没有看过此书原版,不过书中的内容和思想早已被其他后继书籍引用和借鉴,我们在市面上能看到的关于结构化设计方面的书籍,尤其是中文书籍,多照搬了此书内容和思想,所以也算是间接学习到了。 ...

September 17, 2010 · 3 min · Tony Bai

果果的第一张照片

今天收到LP的一封题为“宝贝儿两天”的mail,mail里附了几张照片,遂打开瞧瞧,看看是谁家宝宝。照片里的宝宝给我的第一眼感觉是似曾相识,可再定睛观瞧:这不是我家果果吗!没错,就是我家果果。 ...

September 13, 2010 · 1 min · Tony Bai

使用Ubuntu文档模板

每次安装Ubuntu后,主文件夹(你的$HOME目录)下都会默认建立起一些目录,诸如:下载、音乐、图片等,这些目录的用途通过其名字都可以猜个八九不离十,只有一个叫作“模板”的目录一直让我摸不到头脑。直到这次彻底迁移到Ubuntu,我才发现这个“模板”目录的妙用! 平时工作中常常需要新建一些文档,以前用Windows时都会使用右键菜单,点击“新建”,然后选择不同的文档类型。但在Ubuntu上却发现右键快捷菜单中“创建文档”的二级菜单项中默认只有"空文件”这一种文档类型,这显然不能满足我的需求! ...

September 10, 2010 · 4 min · Tony Bai

修改SVN中文件的可执行属性

今天做了一些项目版本库的搭建工作,主要是将相关模块和库目录建立好,将Makefile编写好,并添加到SVN库中。 工作接近尾声时,无意中发现提交到SVN库中的文件居然都带着可执行权限(以下称x属性),如: -rwxr-xr-x 1 tonybai tonybai 203 2010-04-21 17:26 Makefile* 这着实让人觉得别扭!Svn居然记录了文件的权限信息,至少我以前还没有关注过这点。 ...

September 8, 2010 · 3 min · Tony Bai

一个关于Vim扩展TAB键的问题

今天遇到一个奇怪的问题:明明我在.vimrc中开启了expandtab选项,但是当我编辑Makefile文件时,敲入的TAB就是无法被VIM自动转换为四个空格(已经设置tabstop=4,shiftwidth=4),通过":set expandtab?“查看该选项值也居然是"noexpandtab”;编辑其他文件(如.c、.h文件甚至是无扩展名的文件)时expandtab却都是开启的,TAB也可被自动转换,百思不得其解! ...

September 7, 2010 · 2 min · Tony Bai

视警告为错误

每当你Build Project代码的时候,如果看到的是满屏的Warning,那么提醒你小心了,不妨看看《高效程序员的45个习惯》中对Warning的态度和处理方式。该书中的第34个习惯讲的是“警告就是错误”! 当然这个“习惯”所阐述的内容并不是这本书首创,在很多经典的传授编程之道的书中也都提到过。 ...

September 5, 2010 · 4 min · Tony Bai

Ubuntu一周体验

安装Ubuntu已有一周多,无论是在工作单位还是在家里,Ubuntu都作为我的第一OS,Win7基本上处于被打入“冷宫”状态。事实证明对我来说,Ubuntu完全可以取代Windows。 公司提供有线和无线网络两种接入方式,对于致力于追求“理想的无线世界”的我来说,无线接入是我的第一选择。公司的无线接入采用TTLS认证方式,在WinXP和Win7上都有相应的客户端(SecureW2)可供使用,但在Ubuntu上是否有此类客户端我还不知道,咨询了公司的IT服务部门,得到的回答也是“不知道”(想必在公司内部像我这样使用Linux OS的少之又少)。在网络上寻找答案也未果。我之前对无线接入认证那些术语了解甚少,甚至不知道公司采用的是哪种认证方式,但通过SecureW2官方站以及Wikipedia了解到了公司用的是TTLS认证。我无意中打开Ubuntu无线网络连接配置,在连接“编辑”对话框的“无线安全性”标签中居然看到了"隧道TLS"方式,难道Ubuntu内置就支持TTLS?于是我就按照Windows上的配置方式尝试配置了一下,包括密钥协议和内部认证等,点击连接,哇,居然真的连上了!打开Firefox测试了一下,一切OK,问题解决。我将配置方法简单写成了一个Mail发给了公司IT服务部门,希望能为公司其他同遇到这个问题的同事提供一些帮助。 ...

September 4, 2010 · 4 min · Tony Bai

一次函数设计讨论

近期在考虑对底层函数库进行一些重构,今天下午花了两个小时考量现有的函数库的接口设计,发现目前函数库的实现存在着一个普遍的问题:与特定的内存分配实现耦合的太紧。 我们的应用是多进程结构的,并使用了共享内存这种最快捷的IPC机制,鉴于此很多同事在实现一些数据结构或者算法时可能只考虑到了我们常见的应用场景-多进程共享,而对非共享内存分配的情况考虑不足。那如何将目前某些库函数实现与内存分配之间的强耦合解开呢?针对这道题我发起了一次mail讨论。 题目再重述一下:“目前底层库中的一些数据结构,比如xx_tree、xx_hash_table等,在它们的实现中都会有“分配内存空间”的需求,现有的实现多是直接调用已有的xx_shm_malloc和xx_shm_free在共享内存上动态申请和释放内存,但实际上有些场合我们并不需要在共享内存上分配内存,进程私有堆上的内存完全可以满足需求。如果让大家考虑修改目前xx_tree的实现或重新设计xx_tree的接口,以达到让xx_tree支持多种内存分配策略的目的,你是如额考虑的,请谈谈你的设计思路。" ...

September 2, 2010 · 5 min · Tony Bai