本文为 2026年3月工作生活总结。
研发编码
一个curl下载失败问题的记录
问题:
继去年3月份遇到一个curl问题之后,今年3月份又遇到一个curl问题。与去年的程序一样,使用指定IP和账户密码配置,调用curl库连接sftp服务器下载文件。在很多个工控机上运行正常,但有一个驻点异常。程序启动后,下载文件正常,紧接着,提示2 failed initialization,无法下载文件,之后亦如是。
排查:
由于curl是动态链接,先确认库版本是否与其它环境一样,经检查,库版本是一样(因为操作系统版本一样),排除该原因。
咨询AI,其提到用sftp,可能因客户端与服务端有时间差导致,经查检,时间相差约30分(其它正常的机器也有类似的时间差),排除该原因。
再检查curl初始化的情况,curl_global_init和curl_global_cleanup只调用一次。curl_easy_init和curl_easy_cleanup也调用一次。经考虑,尝试将curl_easy_init移到下载函数内部,即每次下载,都会初始化curl一次,防止上一次残留会话信息出现影响。
升级后,初始化问题解决了,但又出现无法连接服务器的问题,此时,使用ping和ssh测试服务器是正常的。一时陷入无解困境,过了小半天时间,程序恢复正常。至今问题未有合理解释。
一个操作系统无法启动的问题记录
某试点的工控机上安装某国产桌面系统,上面部署有业务程序,已正常运行半年时间,本月上旬,现场反馈在手动重启后,显示器提示[FAlLED] Failed to start. kylin-system-updater dbus daemon,看上去是kylin-system-updater服务无法启动。从名称上看,是升级服务,但我们的环境是内部网络,不通互联网的。直观的解决方案就是禁用服务。命令如下:
sudo systemctl stop kylin-system-updater.service
sudo systemctl disable kylin-system-updater.service
方法虽然简单,但涉及到现场生产环境,少不了走流程,也花了一定时间。
一些数据库适配过程记录的事
最近在做C++的国产数据库的适配。国产数据库一般有官方手册和库,不过一般情况只能参考,真正能用的,还得联系对方,由对方提供。不同厂家,提供的方式不同,有的是rpm安装包,有的是库的压缩包,对于前者,我安装后在默认安装目录提取到库和头文件,再压缩备份。有的是直接通过微信或邮件提供,有的则是提供页面下载,必须输入正确的手机号姓名和验证码才能下载。
我接触的部分厂家的库,只支持oci,不支持occi,但代码使用后者,而按最小影响原则,原代码不能过多修改,因此C++的适配有难度。不像java那样,在配置文件换个驱动名就完成适配了。
在测试过程中,免不了建表,以下是积累的一些知识。
Oracle数据库默认将所有对象名转为大写存储,对于习惯大小写名称的我而言有些不习惯。------我很少和数据库打交道,但后面机会就多了。
对于日期类型,oracle 用 DATE,MySQL 用 DATETIME。
数据库简单检测连接方法:
Oracle及其兼容数据库:
SELECT 1 FROM DUAL
MySQL、PostgreSQL、SQL Server:
SELECT 1
获取数据库时间:
SELECT SYSDATE FROM DUAL -- Oracle及其兼容数据库
SELECT NOW() -- MySQL/PostgreSQL
SELECT GETDATE() -- SQL Server
生活记录
休假
根据惯例,上一年没有休完的假期在本月清零,不像有的人那样有补偿。我去年才休了三分之一,因此,考虑到上旬没什么事情,又休了三分之一。剩下的估计不能休了。另一位同事,由于有AB角,到月底终于把休完所有的假期。
不过请假了也没法安心玩,还是接了若干电话,处理若干事情。现在主流媒体在报道,要反内卷,要让员工敢于休假。当然,政策是政策,其生命力在于执行,落实在我等小民身上,还为时尚早。