进化笔记

记录一个 zip_open 函数签名冲突的问题

在设计 c++ sdk 时,我们常常会隐藏大部分接口,只保留要暴露给客户的那部分接口,但是如果 我们的 sdk 依赖了第三方库,第三库编译时如果不带 hidden 属性,第三方库的函数签名就会被导出,如果客户刚好有同名的函数,就有可能会链接到我们引入的第三方库,从而出现一些未知的问题。下面记录一下我是如何发现这个问题并解决的。 问题发现 在下面的伪代码中,客户在 func 函数中调用了 ...

GNSS 的周内秒如何转为 UTC 时间?

一般情况下, GNSS 的周内秒是来自于原子时的不断累加, 而 UTC 则是天文时间,和地球的自转时间有关,由于地球的自转时间不规则,UTC 时间和原子时之间存在一个误差,截至目前,UTC 时间比原子时慢了 18 秒,所以在使用 GNSS 的周内秒时,常常需要将其转换为 UTC 时间,下面有一个很简单的例子,可以按照这种思维方式来实现转换。 引子 小熊有两块秒表 A,B;A 秒表从 0...

怎样强制 commit 规范

想要规范每个人的 commit 习惯,光靠文档是不行的, 得强制执行, 有的人选择使用 git template 来规范队友的行为,其实之前我们团队也试过,最后的结果是: 并不是每个人都依照模板上的来, 这和文档约束没有啥区别,后来我们采用了 git hook 的方式,只要你不按照规定提交,就无法 commit,成效甚佳, 下面分享一下我自己平时使用的 hook。 安装 hook ...

使用 nvim 搭建一个轻量的 c++ 开发环境

刚工作那会,我写代码几乎都是用 source insight 或者 vimplus, 后来偶遇 vscode,如获至宝,然后就放弃 SI 和 vimplus 啦,但是最近很让我头大,由于只能使用公司的电脑开发,公司的电脑配置有点一言难尽,打开两个 vscode 实例就卡掉牙,但是我又不太想用回 vimplus,毕竟是旧时代的产物了,所幸我发现了个开源项目 lazyvim, 于是就基于它配置了...

使用 c++ 实现一个定时器

在 Linux 应用开发中常常会用到定时器,其实定时器的实现方式有五六种,但是好多定时器的使用容易破坏 c++ 的封装,举个例子,你无法把一个类的非静态成员函数赋值给一个 struct sigaction 的成员 sa_handler 指针,如果你非要这样,只能采用静态成员函数,如果这个函数里要访问到类的多个成员变量,这些成员变量全部得改成静态成员变量,天哪,这违背了我的初心,我仅仅是想执行...

解决 ubuntu24.04 git gui 显示字体大小无法设置的问题

使用 git gui 有六七个年头了,最近在有的 ubuntu24.04 物理机上发现一个很诡异的现象, 运行 git gui,字体会很大,且无法通过设置里修改,几经摸索,总结了下面这个可行的方法,所以记录一下。 现象 忘了截图了,窗口字体很大,是正常字体的四五倍这样。 解决办法 打开配置文件; vim ~/.gitconfig 添加如下内容, 重启 git gui 即可。 [...

© xiongyi. 保留部分权利。

|

岂堪久蔽苍苍色,须放三光照九州