本文为 2024年1月工作生活总结。
高版本的docker-compose有些语法变化。
使用如下方式声明外部网络:
version: '3.8'
services:
ll-busybox:
...
networks:
my-net:
ipv4_address: 172.100.1.1
networks:
my-net:
external:
name: "my-net"
提示警告如下:
WARN[0000] network my-net: network.external.name is deprecated. Please set network.name with external: true
修改如下,警告消失:
version: '3.8'
services:
ll-busybox:
...
networks:
my-net:
ipv4_address: 172.100.1.1
networks:
my-net:
external: true
name: "my-net"
某程序,在同事电脑上始终无法运行,动态库加载失败。经调试,发现是配置文件格式不正确,导致动态库路径出错加载失败。程序使用的配置文件为ini文件,其中有一字段指定了动态库目录,这个ini文件须以Linux风格结尾,但同事在windows系统下载远程仓库,这个文件以Windows风格结尾,因此出错了。
将git的autocrlf参数改为false即可。
最终解决办法是在程序呀兼容。使用了getline
函数读取配置文件的一行数据,读取数据后,对换行答进行判断:
std::string str;
std::ifstream ifs1;
ifs1.open(“foo.ini”);
while(getline(ifs1, str))
{
if ((int)str.size() == 0 || str.at(0) == '[' || str.at(0) == ';' || str.at(0) == '#') continue;
// 如果是\r\n结尾,去掉\r
if (str.back() == '\r') {
str.pop_back();
}
}
排查的问题多了,慢慢积累经验,也会扩宽分析问题的眼界。不同人当然有不同的分析方法。比如出现数据没及时更新问题,有的想到是客户端程序问题。如果全局考虑,可能有几方面:该段时间数据本来就没有(就不存在更新);数据服务器程序有问题;数据客户端有问题;客户端连服务器网络有问题,等等。
一个平淡的日子,临下班,计划着明天继续优化自研工具代码,接收反馈,服务器被攻击了,原因是有弱密码。重装系统,重装服务的事又落到自己身上了。其实有些应用服务是别人同事做的,有些服务是是共用的,但不知怎么,变成我维护的了。
在命令行中,可以直接转换进制:
$ printf "%x\n" 100
--> 64
国产化的适配工作,之前只完成了程序代码级别的,配套的脚本没有改造完,kylin系统与原先的系统不同,shell脚本表现不同。举例如下:
字符串相等判断:
一台centos机子正常的:
foobar=$1
if [ "$foobar" == "/home/latelee" ]
then
...
fi
出错提示:
unexpected operator
判断字符串,不用==
,而是用=
,改造:
foobar=$1
if [ "$foobar"X = "/home/latelee"X ] // 同上会提示:unexpected operator
then
...
fi
按次数循环:
for ((i=10;i>0;i--))
do
....
done
出错:
Bad for loop variable
改造:
for i in seq 10
do
....
done
有一个自研的工具,用于检测数据库的各项数据是否符合规则要求。由于检测项较多,且全部用英文打印日志,使用者可能忽略一些潜在问题,考虑再三,决定将错误信息全部改为中文输出。
之前的Go+C++工程中,两者交互的内容是按行存储的,扩展和解析不方便,经考虑,决定使用json格式。原先以为C++中组装json复杂,且用到第三方库,后来发现,C++只需组装即可,不需解析,因为直接用sprintf
按字段组装数据即可,Go获取数据后,直接用结构体方式解析即可,十分方便。
这个月有几个应酬,还好不是每次都要喝酒。据说今年组织架构又要做调整,拆分和整合了一些部门,其实底下人的事没什么变化。我更关注的是外包人数。目前部门有近20个外包,我要从中突围,如果再调整,基数又变大了,而且据说转正要集团级大领导审核,而且据说大领导经常有人打招呼。话说念念不忘,必有回响,我得的回响都不太如意。夜宵摊上,同事说转正和能力没关系,靠运气。回家路上,想到我运气一向不怎么好,冷风吹酒醒,我的梦也该醒了。
由于去年还有年假,由于去年忙没有休,于是请假2天,连着周末一共4天,可惜下雨,无法去哪里玩,早晚接送大锤大妞上学放学。
这个月有很多天是非常冷的,大锤班上有同学(可能生病)没去,也因为天冷,大锤妈不想让他去上学,因为有其它同学没去,我的看法是还有其它同学去学校,不能不去。
月底,大锤大妞都放假了,大锤的作业和上学时一样,还加了参加公益活动的社会实践,我一直到大学才真正去外地打工做实践。
《黑客伦理与信息时代的精神》,linus写的序:
有三件事对生活是有意义的,它们是生活中所有事情的动机——包括你做的所有事和任何一个生命体会做的事:第一是生存,第二是社会秩序,第三是娱乐。生活中所有的事都遵循着这个顺序,娱乐之后就再无其他。所以从某种意义上说,生活的意义就是要你达到第三个阶段。一旦达到了第三个阶段,这辈子你就算成功了。但是你得先超越前两个阶段。
PS:linus 在 Linux 内核源码中使用了他和他三个女儿的生日作为reboot参数值。
心得:很多年前,我写代码并开源,其实就为了娱乐,那时是为了在生存的同时找点其它事做而已。当然,现在也是为了生存,只是很少有闲心研究代码。
借了一本名言的书,把自己认为好的句子,抄在记事本子上,一是在大锤写作业时不玩手机,二是以后让他背。后面计划再买了本子,把人文历史常识抄下来,时不时让大锤背。