最近事情有点多,本想详细记录一下开发遇到的问题,但是好几天实在没空认真记录每个问题,索性以结论形式写一下最近工作和生活中的一些问题和感触。
日志库
一个软件里没有日志模块简直就是一个大坑。
去甲方部署软件,没有开发环境,软件跑不起来,甲方问你问什么,你比他还懵,就会显得很业余。
Google的glog库,配置、编译都很方便,而且库文件清爽,但是可定制化不强,格式不太习惯,试用后放弃了。
我习惯性用自己封装的boost日志模块,这两天新项目复用时发生了一点冲突,直接写结论,不展开记录了。
之前使用的是boost_1_84_0,配置信息如下:
cd D:\boost_1_84_0
bootstrap.bat
b2 --prefix=D:\custom_boost address-model=64 variant=release toolset=msvc-14.0 --with-log install
但是模块引入到项目中编译会报错:
Error C2039 '_snprintf': is not a member of 'std'
最开始我下意识觉得是版本太新,然后boost库回退到boost_1_65_1(依据vs2015和Qt5.10发布的时间进行选择),依旧无法解决。
最后在stackoverflow和boost的GitHub仓库上找到了类似的提问,但是没有解决。
问题发生是在包含Boost之前,已经在某处定义了# snprintf _snprintf
, 导致编译报错。具体是哪就要看项目引用哪些头文件或者库了,像是某个和python相关的库,所以有的项目可以直接复用封装的log模块,而有的项目则报错。
最终在预编译头文件里声明了#undef snprintf
,并且只有在最新版本boost_1_86_0这个问题得到解决。
cd D:\boost_1_86_0
bootstrap.bat
b2 --prefix=D:\custom_boost address-model=64 variant=release toolset=msvc-14.0 --with-log install
mysql
说只记结论,还是唠叨一大堆,表达能力不行的体现,得改。
用c链接库的方式连接mysql,如果在my.ini中配置了:
[mysqld]
bind-address = 0.0.0.0
并且项目以localhost形式访问数据库,会导致数据库访问速度变慢,并且偶尔会出现连接超时的情况。
较好的形式是不修改my.ini,而是在mysql中执行:
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
可以达到相同效果,且速度也会快很多。
具体原因是重定向的问题,不再展开。
emmmm
一定还有其他问题,印象中还有很多,但是一时间想不起来了,想起来再补充吧。
乒乓球
最近打球依旧快乐,只是和有些球友打球不再快乐了。一个个号称快乐乒乓,交朋友的口号,还有堂而皇之说是提高技术什么的,本身都没问题,烦人的是打起来净整一些有的没的,真累挺。
低头不见抬头见的,能怎么着。
干。