Archive for the ‘杂’ Category

新申请了微信公众号

赶一赶时髦,开通了微信公众号,会同步一些这个博客的文章到上面去,公众号名字是”codedumpnote”.

关于调试的一些想法

这几天一直忙于跟同事联调测试,其中有一些关于这些的思考,整理一下记录在这里吧。

先从最简单的说起,如何调试和分析问题?这里不涉及具体的应用场景,也不讲工具比如gdb,printf打日志的使用,仅谈方法。我想最能描述如何分析查找问题的思路应该是二分法:遇到了问题A,那么首先将这个问题依次分解为几个小问题a,b,c等,然后再把这些问题再次的分解,直到不能再分解为止。然后开始针对最小的问题开始逐步定位。逐步定位时又有技巧,如果问题A由几个可能会变化的环境影响,那么要想办法在某次查找时只留下一个变量,这样可以确保被影响的因素少,否则出问题的时候你不能确定到底是哪里出了问题。就按照这样的思路,一层一层将问题的封装层剥离开,直到还原到问题的本质。

这个方法的思路,其实反过来可以算是写代码的思路。你写一个功能,首先也要将它分解成几个小功能,每个小功能写完了,也要有针对性的测试用例保证它们根据某些输入可以有相应的输出。

OK,前面提到了分析和查找问题的思路。看上去是很简单的,但是很多时候仅知道方法还是不够的。

我这两天遇到的一个在联调时出现的问题就是,出现问题的时候,对方同学总是认为自己是没有错误的,而他给我提供的他认为正确的证据在我看来又是不那么站得住脚的,于是最后发现确实是他的问题。

比如某个检验值,需要的是使用两个数据根据一个算法产生,然后C端生成之后发给S端,由S端再根据这个校验值将数据还原回来。我做为S端的,拿到这个数据之后发现不能还原,于是大家对了一个生成这个值的时候调用函数时的一些flag是不是一样的,发现都是一样的之后还是没发现问题。于是C端这位同学就认为是这个算法库出了问题。

到这一步,我也不能确定是哪里的问题。但是根据上面的讲过的思路,我希望做的是,将这个问题还原到最简单情况,于是我写了一个单独的,除了这个库之外不依赖其他库的简单程序,它做的事情很简单:从文件读入数据,然后再使用那个算法生成校验值。发现我自己生成的数据,是可以正常还原回来的。于是我要求C端的同学也要这样将这个问题最简化,在C端也仅使用最简单的读文件,然后还原看看行不行。

这个时候问题就来了,C端的同学很不情愿–他的理由仍然是:我的代码是没有问题的,这么做是没有意义的。于是软磨硬泡,将我的理由说给他,告诉他我希望能有这样一个最简化的环境来测试这个算法库是不是对的。甚至为了节省他的时间,我把我的测试代码给他,因为这本身就是很简单的代码嘛,只是看你想不想写罢了,与其讨论有没有意义这些扯皮的问题,不如老老实实的查证问题。最后他终于发现是自己使用的字符串类,在读取数据的时候出了问题,导致了生成的校验值失败。

这个过程,我体会到的是几点:

苏紫紫

这个女孩叫苏紫紫,看了这个视频就可以知道她的故事了.

之所以强烈推荐这个视频,是因为她的勇敢和坚韧,没有因为所谓命运和社会的不公放弃自己,这是正向积极的人生态度.

你可以哭可以迷茫可以堕落过,但不能不学会勇敢和面对.”除了战斗之外我一无所有”.

另外,我同样欣赏这个女孩勇敢选择自己生活的态度,她没有活在别人的眼光里过着别人认为理所当然的生活.

P.S:原来搓衣板真的有人用还真的管用啊…

我的2010

今年,入职新公司,重新回到互联网的怀抱中.这个过程,说的夸张些,有点跟初恋分别多时,最后想清楚自己,重回最爱怀抱一般.

年度看过最让我脊梁发凉的好文章是申音的

也谈3Q之战

尝试着总结一下3Q大战以来我的一些想法,即便不成熟也不意味就不去表达了.

流氓与贪婪
开场白,先打个比方来说明一下我所认识的腾讯和360吧.
腾讯的做法是,甭管你是想开个超市卖百货,还是摆个地摊儿卖烧烤,或者开个游戏厅等等,但凡腾讯看上的领域,他必然要在你家对面开个几乎一模一样的店恶心你抢你的用户.

Blowing in the wind

最近在互联网这个圈子里,如果仅限于中国大陆,最大的新闻莫过于QQ系与360系的战争.截止今天,还看不到这个闹剧会怎样在何时结束.

口号是需要喊一喊的.
360说, 他们保护的是用户的安全,一切为用户安全考虑.
腾讯说,腾讯的企业愿景是成为最受尊重的互联网公司.就我从业这几年来看,这也许是中国互联网界最大的冷笑话之一.

口号太多了.
许多年过去,

杂项文章收集

1) 程序设计经验总结

2) 向德国人低头

3) 方法与工具

4) 测试驱动开发

5) 谈目前项目组的代码提交制度