12 2010 档案
摘要:尽管现在已经有了大量的软件开发方法论及辅助工具帮助开发团队提高软件质量,防止、检测bug,但是一些很简单实用的手段依然是提升软件质量必须的手段,比如单元测试,比如Code review。单元测试是一种很基本的软件质量保证方法,随着敏捷开发、持续集成的流行,一个高质量软件,如果没有单元测试是无法想象的。比如Java,C#都有非常成熟的单元测试框架,Google也开源了他们的C++单元测试框架以及mock框架。这篇文章将探讨几个方面的问题,什么是单元测试?单元测试为何如此重要?什么时候进行单元测试?如何进行单元测试?单元测试要注意避免什么问题?什么是单元测试?其实单元测试的本质就是assert,比
阅读全文
摘要:Code ruleView more presentations from Wei Sun.
阅读全文
摘要:http://sunxiunan.com/?p=1742浏览Q.yuhen的博客这篇文章 http://www.rainsts.com/article.asp?id=959 发现一个小问题,估计有类似想法的同学也有,所以记录一下。问题在于这句话:“很显然,依据 cdecl 规则,"printf(…, test(2), test(1))" 中的 printf 函数参数依次从右向左 "入栈"(暂且用这个说法)。因此 test(1) 被先调用,然后才是 test(2),上面的汇编代码也说明了这点。”尽管事实是这样的,但这是一个有问题的说法。cdecl的入栈顺序是没错的,这个入栈顺序是针对每个逗号分隔
阅读全文
摘要:前面介绍了一个计算机开发人员如何很好的参与到一个新的项目组里,这一篇想讲讲其它的一些方面,相对来说零散一些,故作为番外篇出现。进入公司,一般会分给你一个公司邮箱作为业务交流使用,这里推荐大家再申请一个google的账号http://mail.google.com/mail/signup,这个账号可以使用google所有的服务,包括google的信箱系统gmail,日历系统Google Calendar,新闻组google groups,在线文档google docs,博客系统google blogger。gmail可以作为个人使用的一个信箱,足够大而且功能很全面。calendar日历系统可以管
阅读全文
摘要:从2003年加入现在的公司,已经有了快6个年头,自己也从一个计算机软件开发方面的新兵变成了老人。在公司里也做过几个不同的项目,有一些新的同事加入项目组,会有这样那样的疑惑和问题。在这里想简单说说,一个新人如何能快速的融入一个新的开发组,让其他同事能够接受自己。首先是读文档。计算机方面有个著名的黑话叫做RTFM,什么意思呢?按字面翻译就去“去读他妈的文档”,这是在新闻组或者论坛里可能常见的回复,一些人娇滴滴的说“我是妹妹,能指导一下这个问题么”或者贱兮兮的”跪求某某问题答案”。当然,同事之间不可能搞这些,不过也经常碰到有人问一些感觉非常简单问题,这些问题实际上都在项目文档或者软件规范里就明白写着
阅读全文
摘要:Page8,main的原型应该是不需要void作参数的。我试验了codeblock(使用gcc为编译器),没有异常。另外就是代码应该标记出行号,使用行号指明更清晰一些。还有一个格式方面的问题是";“在书中单独出现时都是全角中文”;“这个非常糟糕,很容易误解。还有一个问题是C99还是C89,我的建议是以C89为主介绍,间杂一些C99,但是C89不应该以”过时“来形容,我倒是觉得C89更主流一些。page9,关于#include""和#include的区别,应该指出后面会讨论的章节更好。page14,关于中文做标识符、变量名、函数名的解释,反而让人比较迷糊。其实我觉得作为一本针对初学者的书籍,
阅读全文
摘要:http://product.dangdang.com/product.aspx?product_id=20974009http://www.china-pub.com/54010《狂人C》在CU上的意见贴:http://bbs.chinaunix.net/thread-1821644-1-1.html今天上午收到快递,收到键盘农夫的大作《狂人C》。首先要感谢国家,也要感谢键盘农夫给我这个机会拜读他的大作。这本书拿在手里很厚实,翻了翻目录以及章节内容,不是那种教科书死板的风格,用词摘句很平实,感觉键盘农夫应该是有实际编程的经验才能写出这样的书。我在前面推荐的C语言教学,里面只包含了《Linux
阅读全文
摘要:要拷贝几百个文件到另一个目录,有重名现象,但是不想覆盖原有文件,在命令行下应该可以通过命令行开关来完成需求。http://sunxiunan.com/?p=1737但是已经开始拷贝,而且就想使用界面操作,怎么办?(太纠结了!)好在我们有Python可以使用。http://www.tizmoi.net/watsup/intro.htmlhttp://www.brunningonline.net/simon/blog/archives/winGuiAuto.py.html其主要设计思想就是使用Windows API找到特定窗口,然后发送键盘或者鼠标消息。watsup我使用Python2.6,然后安
阅读全文
摘要:http://sunxiunan.com/?p=1628lvalue算是C语言里面不怎么太容易说清楚的概念,我们上学的时候多半称之为left-value左值,对应的还有在C++标准中的rvalue,也就是右值。在wiki百科上http://en.wikipedia.org/wiki/Value_%28computer_science%29解释了一些。首先什么是value?value也好object也好在计算机内部的表示都是0和1,没有什么区别,某一块内存地址的数据,按照整数解释是一个值,按照class CObject解释又是另外一个值,浮点数也好字符串也好,如果光看这个内存地址里面的数据是没法
阅读全文
摘要:KISS理论不是一个感情方面的娱乐节目,而是编程领域里面很重要的设计思想。电脑编程与其它方面的科学相比,总差了一些严谨性或者理论不是那么完善,很多理论都是基于猜想说话,而没有数据支持。不过KISS这个理论我是认同的,从某种程度上讲,KISS很像是奥卡姆剃刀原理,越简单越正确。 KISS是什么意思?这个就众说纷纭,也可见电脑编程之不科学。有人说是Keep it simple, Stupid!翻译过来就是,“简单点,傻瓜!”很有一些Nerd傲视群雄的气派,但是我喜欢翻译成“要简单,要尽量傻!”(也就是stupid翻译为形容词),理由后面会解释。在维基百科上http://en.wikipedia.o
阅读全文
摘要:http://sunxiunan.com/?p=1640我们将代码稍作修改,让一些宏定义变成函数更容易理解一些:为了不和标准库的strcpy名字冲突,我将其改为strcpy2.如果你把上面的程序编译运行一下就会发现,快的原因在于strcpy2这个函数最后一部分while循环里面的这几行:对C语言指针了解的朋友都知道,第一行是把l这个unsigned long类型变量值赋值给s1为地址的一个unsigned long型指针指向的内容。在我的i386cpu PC机上,第二第三行分别是将s2以及s1指针增加了4(而不是通常函数实现里面的++)。这也就实现了每次拷贝4个char(也就是一个unsign
阅读全文
摘要:http://sunxiunan.com/?p=1749这篇文字主要来自我在TopLanguage讨论组里面的发言,仅作总结留记。首先要介绍一下原文作者Walter Bright,从他主页可见他是一个很牛的程序员,主要工作领域是写编译器。这个背景很重要,这是原文第二条的主要基础。但是也要注意到,一百个程序员里面也许都没有一个知道如何编写编译器,知道如何读写汇编的程序员比例也许会高一些,但不会很高,估计也就是百分之几的样子,比如我只会读一些简单的汇编代码,但是不会写。这篇文章认为Profiling和看汇编语言如何被运行的是两个基本技术,我在讨论中也没有提到写汇编,因为会读的人要比会写的多出不少。
阅读全文
摘要:龙猫公交车 http://home.cnblogs.com/233971/ 在我前一篇《c语言指针与数组》http://www.cnblogs.com/lua5/archive/2010/12代码首先说这段代码的问题,为何clear_string不生效,龙猫的理解其实是不对的。对于main函数中的string变量以及clear_string中的str,它们指向同一个地址,由于所指定的类型也是一样的,基本可以认为它们就是一回事,只是要时刻牢记我们调用clear_string(string);,实际上是把string第一个元素起始地址作为参数传入。要记住一个原则:C语言中,任何函数想修改传入的值,
阅读全文
摘要:http://sunxiunan.com/?p=1650C语言的指针与数组是一个比较高阶的话题,有些书就是照本宣科,读者看完会认为自己明白了。真要是碰到一些模棱两可的问题,就发现自己了解的还不够深入,那时候就棘手了。我在前面提到的《C语言趣味题目》http://sunxiunan.com/?p=1647就是一个例子,如果你对里面的题目都完成的非常完美,那指针与数组的话题其实也没必要看了,你一定已经是一个C语言方面的高手。C语言的指针,是C语言里最为灵活最有力量也最容易产生问题的强力武器。数组相对来讲花样少一些,但也有些比较容易出问题的知识点。如果你想系统深入了解指针,我推荐你完整系统的阅读这几
阅读全文
摘要:http://sunxiunan.com/?p=1597学习一门编程语言或者编程技术的方式基本上是这样一个流程:1,对学习这门语言或者技术的必要性进行评估。比如你是工作需要,或者兴趣所至,甚至是为了把妹。这个必要性关系到你要学多深入,需要学习多长时间。比如我想学Lua,是想学它如何在万把行代码里面实现了一个如此精巧的编程语言,想学习它的GC机制,学习它如何设计VM,如何用纯C语言设计项目等等。2,...
阅读全文
摘要:http://sunxiunan.com/?p=1649过时与否?简单回答就是:没有过时。是否需要学习MFC?简单答之:depends on。为何没有过时?很简单,微软一直在更新MFC,如果知道MFC的真正含义,你是不会说出过时两个字的,Microsoft Foundation Class,这是微软C++界面库的基础。有人会提WTL或者ATL,但是被用的不多。至于QT什么的,那不是微软的东西,再好微软也不会用的。学习MFC最好的书籍?是这本:http://www.china-pub.com/45715 《VC++技术内幕》,另外深入一点可以看《深入浅出MFC》(侯捷)。MFC没有更新吗?当然不
阅读全文
摘要:如果你新安装好了一台WindowsXP或者Windows7的机器,作为一个开发人员,我建议安装下面这些软件:1,WinMerge.http://winmerge.org/2, Lua for windows,或者Python或者Ruby,选择一个你喜欢的脚本语言。LuaForWindows还自带了一个Scite编辑器,节省了找一个程序员相关编辑器的步骤。http://luaforwindows.luaforge.net/3,7-zip,不需要安装winzip或者winrar了http://www.7-zip.org/4,Sysinternals套件,windows开发必备。http://tec
阅读全文
摘要:http://sunxiunan.com/?p=1638—————————————————-Michael to pongba有下面2种方法:方法一:Section *pImageSection = new Section(pImage);assert(pImageSection);方法二:略ps:现在项目组代码用第一方法,并且也不写日志,每一次客户端down了,定位问题都要很久,让人很崩溃。并且到处都是assert。我个人认为,用assert的地方,是比较严重的错误,甚至不能够让程序再运行下去。如果到处用asset也太残忍了,有的时候应该温柔的跳过,然后写日志,返回。告诉我哪里运行失败了。—
阅读全文
摘要:http://sunxiunan.com/?p=1647在这个网站上http://stevenkobes.com/ctest.html发现一套很有趣的C语言测试题,如果你招聘C语言相关开发人员,或者正在学习C语言,很值得参考。如果没有做,下面内容暂时不要看,最好自己先完成一遍。—————————————–OK,假设你做的答案没有完全正确,那你可以继续看下去了,否则,后面内容对你来说就是小菜一碟,不...
阅读全文
摘要:http://sunxiunan.com/?p=1765code review的目标,1)消除所有W4警告 2)给不能直接理解的代码加注释 3)丑陋代码的修改,主要针对过多for/while/if/switch这类控制的互相嵌套,把它们削平https://bugzilla.redhat.com/show_bug.cgi?id=638477 Linus随手写了个memcpy,当然你可以在glib或者...
阅读全文
摘要:云风最近写了一篇博客《C语言的前世今生》。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C语言学习方式方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能...
阅读全文
摘要:http://sunxiunan.com/?p=1768首先要声明,我对Comet技术只了解皮毛,下面的评论如果有错误欢迎各位看官指出。本文相关博客地址:http://amix.dk/blog/post/19577#Is-node-js-best-for-Comet amix在这篇博客中谈论他们在Plurk中Comet技术选择的变迁。说句题外话,他有另外一篇博客 http://amix.dk/bl...
阅读全文
摘要:http://www.cnblogs.com/skynet/archive/2010/12/03/1895045.html 这篇博客最后写了5个规则,虽然简单,但是还是有些问题,在这里稍作说明。 【规则1】用malloc或new申请内存之后,应该立即检查指针值是否为NULL。防止使 用指针值为NULL的内存。 偶评:参考wiki百科针对malloc以及new的说明,对于C语言malloc方式,...
阅读全文