摘要:http://www.csdn.net/article/2013-10-22/2817253-programmer摘要:有人说,一个厨师如果不懂得品尝美食,就永远无法把菜做好。一个程序员如果看不出来多一空行和少一空行有什么区别,那就永远写不好优美的代码。如何成为一名有代码洁癖的程序员呢?本文将为你支招!有没有那么一瞬间,你写的代码让自己和兄弟们都感觉很凌乱?有没有那么一瞬间,有段代码就放在你眼前,你却读不懂它?有没有那么一瞬间,你要花很长时间去读别人写的代码?有没有那么一瞬间,你的参数过长却不知道怎么办?有人说,一个厨师如果不懂得品尝美食,就永远无法把菜做好。一个程序员如果看不出来多一空行和少
阅读全文
摘要:实践中一门编程语言是否有用、好不好,不仅体现在语言本身,更在语言的生态系统:用的人多不多、社区是否活跃互帮互助、语言的相关库和框架质量如何,还有就是已有的模块的质量与数量。CPAN(Comprehensive Perl Archive Network)就是Perl语言的killer app,1万多位作者编写的12万6千多个模块,让你几乎完成任何任务都能有所凭借,无需从0开始。更早的类似项目还有TeX的CTAN。在CPAN的启发下,PHP语言有PECL和PEAR,Python有PyPI,Ruby有RubyGems,R有CRAN,Node.js有npm,Lua有LuaRocks,Haskell有H
阅读全文
摘要:统计项目:充值统计";echo "统计时间:$search_date ";echo "";global $statdb,$search_date,$bookdb;$sql = "select cpid,cpname from bc_book_charge_cp order by cpid asc;";$results = mysql_query($sql,$bookdb);$thlist = array();//array_push($thlist,array("cpid"=>"stat_
阅读全文
摘要:Portal技术介绍Portal是web应用发展的一个重要趋势,目前几乎所有大的软件厂商都有自己的Portal产品。并且Portal技术已经形成规范。本文对Portal技术和产品进行了分析,目的是为公司产品的规划提供参考。1 Portal的概念根据(JSR (Java Specification Request) 168)的定义,Portal是基于web的应用,它主要作为信息系统的展现层,提供个性化、统一登录和内容整合的功能。整合就是将不同来源的信息集中展现在一张网页上。一个Portal可以具有很多个性化参数,用来调整为用户定制的内容。对于不同用户,一个Portal网页可能由多组不同的页面构件
阅读全文
摘要:mylog.h#ifndef _MY_LOG_H#define _MY_LOG_Hint init(char *filename);void *get_category(char * cateory_name);void info(void *category, char *message);void debug(void *category, char *message);void fini();#endifmylog.c#include "zlog.h"#include "mylog.h"int init(char *filename){ retur
阅读全文
摘要:http://www.csdn.net/article/2013-10-21/2817235-coding-conventions-in-web-development摘要:编码规范是一套规章制度,用来为某一特定的编程语言推荐编程风格、方法和实践。这些规范覆盖方方面面,包括注释、文件夹、文件组织、行首缩进、书面声明、空格、命名规格、编程实践和原则、构建最佳实践等等。文章作者Andrey Prikaznov在DZone上分享了关于Web开发里编码规范的注意事项。编码时间长的人总会遇到编码格式标准化的问题,但是不同的项目里需要使用不同的规则和风格来解决问题,甚至有的时候林林总总的繁杂事情会让人头脑
阅读全文
摘要:在我们公司里要执行代码审查。这是我们每天的例行工作。事实上,今天的我们正是从这种一直坚持探索的漫长道路上走出来的。我们尝试各种技术、方法和工具,直到我们走到今天的成就(但这并不是说我们就此停步)。在这旅途中,我们发现了很多的陷阱和危险,它们等待新手们上钩。这篇文章就是关于它们的:代码审查中的陷阱和误解。代码控制:很 多公司都把代码审查当成控制代码的方法。很多这样的公司都使用预提交策略。这种策略大多时候都是开源项目中使用,因为会有成百上千的提交者。可在一般的公 司里,很少会有这种情况。如果你雇用一个人,这意味这你要完全信任他,允许他将代码提交到代码库里。我知道有些公司会忍不住制定一些规程,要求程
阅读全文
摘要:test.c#include #include "zlog.h"int main(int argc, char** argv){ int rc; zlog_category_t *c; rc = zlog_init("test_hello.conf"); if (rc) { printf("init failed\n"); return -1; } c = zlog_get_category("my_cat"); if (!c) { printf("get cat fail\n"); zlog.
阅读全文
摘要:http://hardysimpson.github.io/zlog/UsersGuide-CN.htmlChapter 1 zlog是什么?zlog是一个高可靠性、高性能、线程安全、灵活、概念清晰的纯C日志函数库。事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C++的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统级别的轮子,不过速度慢,而且功能比较单调。所以我写了zlog。zlog在效率、功能、安全性上大大超过了log4c,并且是用c写成的,具有比较好的通用性。z
阅读全文
摘要:所有的测试,都是让未知的东西和已知的东西进行比较,如果测试结果和预期的一样,那么就认为被测对象是OK的否则视为有问题。python的单元测试是写一堆继承了unittest.TestCase类,每个类里都会定义一个runTest函数,实际上这个函数是覆盖了基类的函数,脚本执行时调用unittest.main函数,unittest.main函数就会查找哪些类集成了TestCase并执行runTest函数那么到了gtest里也是类似的,不过因为gtest是C/C++的单元测试框架,而C/C++里能执行的都是可执行文件,所以需要把这些测试代码打进程序,然后用main函数来调用这些测试代码,但是我们是看
阅读全文
摘要:http://www.cppblog.com/izualzhy/archive/2012/07/31/185772.htmlgoogletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows、linux、Mac等OS平台上。下面,我来说明如何使用最新的1.6版本gtest写自己的单元测试。源码的获取地址:http://code.google.com/p/googletest/downloads/list注意1.6这个版本不再提供make install,直接看README吧。那么怎么编译呢?先进入gtest目录(解压gtest.zip包过程就不说了),执行以下两行命令:
阅读全文
摘要:问题gtest1.6版本的README里说该版本不支持make install,其意思就是说你没法通过make命令把gtest安装到/usr/local/lib之类的目录,所以你也没办法通过下面的命令来编译测试程序,那么该怎么使用gtest呢?g++ -lgtest -L /usr/local/lib -I gtest.h test.c方案假定已经把源码解压到当前用户的主目录下并且已经成功编译了,在gtest解压目录里有一个make目录(~/gtest-1.6.0/make),里面有一个Makefile文件,这个make脚本会使用同级别的sample目录下(~/gtest-1.6.0/samp
阅读全文
摘要:http://kb.cnblogs.com/page/190039/ 生活中总会有些状况让我们无所适从摸不着头脑:面对一排电灯或空调的按钮,哪个才是控制我想要的?开锁时掏出一把钥匙,哪个才是正确的?拿起U盘插入电脑,朝那个方向才是对的?……类似的犹豫充分说明,你呆住了。现在,是需要“防呆设计”来拯救你了。 防呆定义 防呆(日语:ポカヨケ;英语:Fool-proofing)是一种预防矫正的行为约束手段,运用避免产生错误的限制方法,让操作者不需要花费注意力、也不需要经验与专业知识即可准确无误完成正确的操作。广义来讲,防呆就是如何设计一个东西,而使错误发生的机会减至最低的程度。避免工作错误的发...
阅读全文
摘要:auto_ptr解析By SmartPtr(http://www.cppblog.com/SmartPtr/)auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr所蕴含的价值与理念。 auto_ptr的出现,主要是为了解决“被异.
阅读全文
摘要:/*智能指针:auto_ptr 定义在memory模块里&&std命名空间里一旦执行对象的指针,生存期结束,就会释放自己所指向的对象*/#include #include //cstdio即 C语言的stdio.h#include using namespace std;class X{public: X(){printf("X!\n");} ~X(){printf("~X\n");} virtual void say(){printf("hello!\n");}};class Y : public X{public:
阅读全文
摘要:防御式编程是提高软件质量技术的有益辅助手段。防御式编程的主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。 1. 在非法输入(Invalid Inputs)中保护你的程序 一个好程序,在非法输入的情况下,要么什么都不输出,要么输出错误信息。有几种方法来防止非法的输入: (1)检查来自于外部资源(external sources)的所有数据的值,例如来源于网络的数据的值,来源于文件的数据的值。检查的目的是保证数据值在一个允许的范围内。 (2)检查每一个例程(routine)的输入参数值。 一旦非法输...
阅读全文
摘要:题目:ProblemDo you know how to read the phone numbers in English? Now let me tell you.For example, In China, the phone numbers are 11 digits, like: 15012233444. Someone divides the numbers into 3-4-4 format, i.e. 150 1223 3444. While someone divides the numbers into 3-3-5 format, i.e. 150 122 33444. D
阅读全文