本文介绍: 本文为 2024年1月工作生活总结。more。

本文为 2024年1月工作生活总结。

研发编码

docker-compose外部网络配置

高版本的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"

git配置不正确导致程序加载动态库出错

某程序,在同事电脑上始终无法运行,动态库加载失败。经调试,发现是配置文件格式不正确,导致动态库路径出错加载失败。程序使用的配置文件为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;

        // 如果是rn结尾,去掉r
        if (str.back() == 'r') {
            str.pop_back();
        }
    }

排查问题经验

排查的问题多了,慢慢积累经验,也会扩宽分析问题的眼界。不同人当然有不同的分析方法。比如出现数据没及时更新问题,有的想到是客户端程序问题。如果全局考虑,可能有几方面:该段时间数据本来就没有(就不存在更新);数据服务器程序有问题;数据客户端有问题;客户端连服务器网络有问题,等等。

服务器被攻击

一个平淡的日子,临下班,计划着明天继续优化自研工具代码,接收反馈,服务器被攻击了,原因是有弱密码。重装系统,重装服务的事又落到自己身上了。其实有些应用服务是别人同事做的,有些服务是是共用的,但不知怎么,变成我维护的了。

Linux 命令

在命令行中,可以直接转换进制:

$ printf "%xn" 100
--> 64

国产化Kylin操作系统脚本改造

国产化的适配工作,之前只完成了程序代码级别的,配套的脚本没有改造完,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++交互格式

之前的Go+C++工程中,两者交互的内容是按行存储的,扩展和解析不方便,经考虑,决定使用json格式。原先以为C++中组装json复杂,且用到第三方库,后来发现,C++只需组装即可,不需解析,因为直接用sprintf按字段组装数据即可,Go获取数据后,直接用结构体方式解析即可,十分方便。

生活记录

这个月有几个应酬,还好不是每次都要喝酒。据说今年组织架构又要做调整,拆分和整合了一些部门,其实底下人的事没什么变化。我更关注的是外包人数。目前部门有近20个外包,我要从中突围,如果再调整,基数又变大了,而且据说转正要集团级大领导审核,而且据说大领导经常有人打招呼。话说念念不忘,必有回响,我得的回响都不太如意。夜宵摊上,同事说转正和能力没关系,靠运气。回家路上,想到我运气一向不怎么好,冷风吹酒醒,我的梦也该醒了。

育儿记录

由于去年还有年假,由于去年忙没有休,于是请假2天,连着周末一共4天,可惜下雨,无法去哪里玩,早晚接送大锤大妞上学放学。

这个月有很多天是非常冷的,大锤班上有同学(可能生病)没去,也因为天冷,大锤妈不想让他去上学,因为有其它同学没去,我的看法是还有其它同学去学校,不能不去。

月底,大锤大妞都放假了,大锤的作业和上学时一样,还加了参加公益活动的社会实践,我一直到大学才真正去外地打工做实践。

阅读记录

《黑客伦理与信息时代的精神》,linus写的序:

有三件事对生活是有意义的,它们是生活中所有事情的动机——包括你做的所有事和任何一个生命体会做的事:第一是生存,第二是社会秩序,第三是娱乐。生活中所有的事都遵循着这个顺序,娱乐之后就再无其他。所以从某种意义上说,生活的意义就是要你达到第三个阶段。一旦达到了第三个阶段,这辈子你就算成功了。但是你得先超越前两个阶段。

PS:linus 在 Linux 内核源码中使用了他和他三个女儿的生日作为reboot参数值。

心得:很多年前,我写代码并开源,其实就为了娱乐,那时是为了在生存的同时找点其它事做而已。当然,现在也是为了生存,只是很少有闲心研究代码。

借了一本名言的书,把自己认为好的句子,抄在记事本子上,一是在大锤写作业时不玩手机,二是以后让他背。后面计划再买了本子,把人文历史常识抄下来,时不时让大锤背。

业余研究

原文地址:https://blog.csdn.net/subfate/article/details/135957337

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_63953.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注