月度归档:2014年12月

用glog打印格式化的日志

glog功能强大自然不必多说,C++下的iostream对象在格式很多的情况下使用非常不方便。cout << xxx << “str1” << yyyy << “str2″…想着就头疼。由于项目中一直用glog来大日志,所以就开始思考如何用glog打印格式化的日志,glog里面有raw_logging.h的文件支持RAW_LOG(serverty, format_string, var1, var2 …),但细细的看了注释和实际体验之后存在一些问题(it logs straight and ONLY to STDERR w/o buffering): 只支持打印到stderr,由于server程序通常都是守护进程形式运行,终端标准输出和标准错误的描述符都是被关闭了的,使用这个宏就根本打不出日志。于是乎就封装了一层新packString的小接口。

使用的时候,形如:LOG(INOF) << pack_string(“xxx”, int1, “yyy”, str2 …..)

mysqlpp编译成静态库

项目中为了方便部署,通常都是将库封装成静态库供实际的server程序链接,但是有些第三方库的编译选项中只提供了动态库,mysqlpp就是其中之一。要么用其他库例如mysqlconncpp,要么就自己改。果断任性的选择了后者。

修改bakefile的配置文件,添加如下片段(类似于cmake的CMakeLists.txt),然后重新生成一遍makefile即可

 

shell中注入常用工具

开发中经常会用到一些转换,例如时间戳与格式时间,ip字符串和ip整形,大小端等。最早都是跑到相应的工具网站上去进行转换,甚是不便,于是有了…

【第一阶段】
将这几个工具集成到了一个chrome的插件 – devtool。自己用着很方便,但好景不长,新版本chrome禁掉了第三方插件,虽然搞来搞去还是给搞出来了可以用,不过心里已经有了一块疙瘩。

【第二阶段】
linux终端下开发,何不就在终端下的封装一套工具。于是有了一系列的xxxxxx

【第三阶段】
第二阶段用了一段时间,经常忘了命令每次使用又要去查,也有点不便,于是,何不模仿类似的函数种到shell环境里。将工具封装成函数放到shell中,取名尽量用python,c++里面最常见的名字,例如inet_aton/inet_ntoa,htonl/ntohl等,同时用前缀模拟名字空间。