记录一个 zip_open 函数签名冲突的问题
在设计 c++ sdk 时,我们常常会隐藏大部分接口,只保留要暴露给客户的那部分接口,但是如果 我们的 sdk 依赖了第三方库,第三库编译时如果不带 hidden 属性,第三方库的函数签名就会被导出,如果客户刚好有同名的函数,就有可能会链接到我们引入的第三方库,从而出现一些未知的问题。下面记录一下我是如何发现这个问题并解决的。 问题发现 在下面的伪代码中,客户在 func 函数中调用了 ...
在设计 c++ sdk 时,我们常常会隐藏大部分接口,只保留要暴露给客户的那部分接口,但是如果 我们的 sdk 依赖了第三方库,第三库编译时如果不带 hidden 属性,第三方库的函数签名就会被导出,如果客户刚好有同名的函数,就有可能会链接到我们引入的第三方库,从而出现一些未知的问题。下面记录一下我是如何发现这个问题并解决的。 问题发现 在下面的伪代码中,客户在 func 函数中调用了 ...
一般情况下, GNSS 的周内秒是来自于原子时的不断累加, 而 UTC 则是天文时间,和地球的自转时间有关,由于地球的自转时间不规则,UTC 时间和原子时之间存在一个误差,截至目前,UTC 时间比原子时慢了 18 秒,所以在使用 GNSS 的周内秒时,常常需要将其转换为 UTC 时间,下面有一个很简单的例子,可以按照这种思维方式来实现转换。 引子 小熊有两块秒表 A,B;A 秒表从 0...
在嵌入式软件开发中,常常需要对一些 demo 快速验证,我常常使用树莓派来搭建环境,因为便宜、社区活跃、简单方便 😂,下面记录我搭建环境的过程,涉及制作系统、配置网络、配置硬件端口等。 安装镜像工具 sudo apt update sudo apt install rpi-imager 制卡 启动 rpi-imager; 选择设备,是 PI5 就选择 PI5,是 PI...
想要规范每个人的 commit 习惯,光靠文档是不行的, 得强制执行, 有的人选择使用 git template 来规范队友的行为,其实之前我们团队也试过,最后的结果是: 并不是每个人都依照模板上的来, 这和文档约束没有啥区别,后来我们采用了 git hook 的方式,只要你不按照规定提交,就无法 commit,成效甚佳, 下面分享一下我自己平时使用的 hook。 安装 hook ...
刚工作那会,我写代码几乎都是用 source insight 或者 vimplus, 后来偶遇 vscode,如获至宝,然后就放弃 SI 和 vimplus 啦,但是最近很让我头大,由于只能使用公司的电脑开发,公司的电脑配置有点一言难尽,打开两个 vscode 实例就卡掉牙,但是我又不太想用回 vimplus,毕竟是旧时代的产物了,所幸我发现了个开源项目 lazyvim, 于是就基于它配置了...
默认的 vim 配置看着影响情绪,所以配了一个,记录一下。 安装 vim sudo apt update sudo apt install vim 添加配置 vim ~/.vimrc " 基础设置 set nocompatible " 禁用兼容模式 (启用 Vim 特性) set encoding=utf-8 " 使用 UTF-8 编码 s...
我们在使用安卓手机的时候,上划屏幕打开的任务栏中,排最前面的后台任务永远是最近我们使用过的, 而那些很久没被使用的后台任务会被放到最后,这种功能就可以使用 LRU 算法来实现。 什么是 LRU 算法? LRU(Least Recently Used)是一种缓存淘汰策略,其核心思想是移除最近最少使用的数据,保留最近访问的数据。 代码实现 #include <list> #i...
在 Linux 应用开发中常常会用到定时器,其实定时器的实现方式有五六种,但是好多定时器的使用容易破坏 c++ 的封装,举个例子,你无法把一个类的非静态成员函数赋值给一个 struct sigaction 的成员 sa_handler 指针,如果你非要这样,只能采用静态成员函数,如果这个函数里要访问到类的多个成员变量,这些成员变量全部得改成静态成员变量,天哪,这违背了我的初心,我仅仅是想执行...
使用 git gui 有六七个年头了,最近在有的 ubuntu24.04 物理机上发现一个很诡异的现象, 运行 git gui,字体会很大,且无法通过设置里修改,几经摸索,总结了下面这个可行的方法,所以记录一下。 现象 忘了截图了,窗口字体很大,是正常字体的四五倍这样。 解决办法 打开配置文件; vim ~/.gitconfig 添加如下内容, 重启 git gui 即可。 [...
PX4 提供了两重仿真方式, 一种是采用 sitl, 另一种是采用 gazebo 的方式, 这里主要记录了使用 gazebo 的仿真步骤。 1、安装 QGC 下载地址为点击下载 2、克隆 PX4 飞控代码并安装编译环境 本文采用的是 WSL/ubuntu20.04 搭建的环境 git clone -b v1.15.4 https://github.com/PX4/PX4-Autop...