本文为 2021 年 6 月知识总结。
编码总结
C / C++
使用sscanf
检查不确定的输入参数:
1 | char name[8] = {0}; |
注:实践中检查参数,建议使用main(argc, argv[])
的形式,好修改。
docker
修改容器的root密码
场景:下载 centos 镜像,运行之,默认为普通用户,无法切换到 root——因为不知道密码。
1 | sudo docker exec -id -u root <容器名或ID> bash |
此时进入的容器即为 root 权限。再用passwd root
设置密码。此时另起终端进入容器,即可用su root
切换权限。当然,也可直接用上述命令进行root
权限方面的操作。
python脚本创建docker镜像
知识点:执行命令,执行命令并获取返回值,字符串为空的判断。
1 | SRC_PATH = '/home/latelee/docker-test/demo' |
SQL
查询 sqlite3 数据库所有表名:
1 | SELECT name FROM sqlite_master where type='table' order by name |
编码其它
Makefile
继续总结 Makefile 知识:
某工程需编译为 32 位程序和 64 位程序,因为有2套目标系统。原来的工程使用 eclipse 编辑和编译。接手后改为 Makefile 编译,为方便个人使用,研究如何在 Makefile 中自适应 2 种不同位数的系统。
在 shell 脚本中可如下方法判断系统位数:
1 | BITS=`getconf LONG_BIT` |
根据所在系统,上述输出结果为32bit
或64bit
,此字符串可用于生成版本号头文件。
在 Makefile 中如下使用:
1 | ARCH = $(shell getconf LONG_BIT) |
这样就能根据不同的系统使用不同的库目录。
另外,目标系统中,32 位为 debian 系统,64 位为 centos 系统,本想用 Docker 实现同一虚拟机的编译,但因为版本不好找,放弃之。再者,工程有大量不再使用但未删除的代码,大部分变量、函数近似,只是相差几个字符或日期,如foo
、foo_I
、foo_2020
,导致一定的阅读障碍——刚刚看过的代码段,切换了文件,又看到相同的,过一会,还能看到相同的。目前暂不敢动。
版权
github上有个外国网友在一个几年前的项目上咨询协议,因为当时代码是没有版权声明的——现在大部分代码都没有,看了些帖子,大意是没有声明版权的话,默认是私有不开源的。考虑之后,还是要将自己仓库加上声明的。对其它人友好,对后续维护亦友好。目前暂定是 BSP 协议,限制比较少。
BSD:允许商用、私用(共开亦可)。带原有的版权文件,修改后的代码不用做说明。不能用作者名字做推广。
一般知识
研发思考
写代码久了,发现自己不敢突破,不追求编程技巧,而是追求可维护性、可读性。有时候,发现一些问题后自然会去重构,但重构后发现达不到预期,因为有些隐藏得很深的业务点,自己并没有掌握了解,贸然修改,只会浪费时间。所以,只要不出问题,不会主动去改,但像代码风格命名这种影响编程效率的,不在此列。在修改过程中,则根据实际情况**部分重构 **。
领域设计:先对某领域有一定认知,进行总结概括,理清逻辑,再进行设计。个人见解:应该不合适,编码多年,接触了不同领域的行业,但自己那套学习知识的方法和编写的代码,或多或少都能应用上。——因为会总结积累,从而形成自己的知识库,以应对不同的领域/业务。而且更重要的一个原因,自己并没有在一个领域中深耕。可能自己对业务研究不深,沉淀不够,才得出以上结论。
本月学习及计划
无
其它点滴
自体检出结果,打完2针疫苗,外包人员取消餐补后,家里那位问什么时候买房,又和老爸老妈小吵一次,工作和生活都没动力了。但并没有耽误公司的事,晚上加了几次小班,上周末加了一整天的班(早上8点到公司至下午6点离开),在百年献礼中也算出了一点微不足道的力。