【CMake 系列】(六)用 Doxygen、Sphinx 与 Breathe 创建文档

今天,来说说 CMake 中另外一个可能比较枯燥的环节:文档。 前言说起文档,就不得不提文档的维护了,如果纯手写,难免会遇到代码与文档不一致的情况,理想的状态下,最好全部由解析代码后生成,再加上开发人员少量写的说明性文档即可。 之前我也在 你的团队需要更好的 API 文档流程 里说过,好的 API 文档的特点也是类似。 至于我们今天要说的 C/...

阅读全文

穷查理宝典:富有与智慧并存的老头子查理·芒格

这周暂时不写 CMake 的内容,换换口味,说说一本非常值得推荐的书《穷查理宝典:查理 · 芒格智慧箴言录》。 简介作者是彼得 · 考夫曼,翻译者李继宏。 先来简单说下不足的地方:整体翻译欠佳,读起来会觉得比较絮叨,排版上也有不少问题,查理十一讲的内容有不少重复的地方,并且每一讲本身也有重复的地方,会让我觉着非常啰嗦。对于没有读过本书的朋友,重点读第二章...

阅读全文

【CMake 系列】(五)安装、打包与导出

前言今天这篇,可以算是接着上次的 第三方依赖管理,因为今天说的是怎样成为第三方依赖。 当你开发库的时候,就需要考虑,其它人如何使用你的库。 就目前而言,目前有三种方式可以使用第三方库: 子文件夹(下载后编译、Git 克隆编译); 安装编译产物(各平台现有库,自己编译库下载配置); 导出编译目录; 下面分别来说说,该如何操作。 子文件夹对使用者而言,这...

阅读全文

【CMake 系列】(四)用 GoogleTest 测试

今天我们来说说,CMake 测试。 不过,其实我们还是在说 C++ 的测试。 CMake 给我们提供了完善的测试支持,比如它有一个专门的模块 CTest。 CMake 原生测试支持CMake 原生支持的测试很简单,只有两个函数: 12345enable_testing()add_test(NAME <name> COMMAND <com...

阅读全文

【CMake 系列】(三)ExternalProject 实践

上次 说了第三方依赖管理,提到了我们团队在使用 ExternalProject 来管理依赖,这次来说说具体实践,以及一个基于 CMake 的开源依赖管理工具 vcpkg。 ExternalProject 实践来看看它长什么样: 1234ExternalProject_Add(<name> [<option>...])Externa...

阅读全文

【CMake 系列】(二)第三方依赖管理

接着上次的【CMake 系列】(一)入门 继续讲。 这次,主要说说 CMake 的依赖管理。 依赖管理当我们说 CMake 的依赖管理的时候,往往说的是 C/C++ 项目的依赖管理,但是这门古老的语言,到目前为止,还是没有一个官方大一统的依赖管理工具。 而回头看看它的后来者,Ruby 有 gem、Node.js 有 npm、 Golang 有...

阅读全文

【CMake系列】(一)入门

自从上次在为何 C++ 静态链接库顺序很重要捡回了 C++,自此开始了不归路。 今天我们来说说,CMake 这个现代 C++ 项目的利器。 前言为什么我们需要 CMake ? 对于 C++ 开发者来说,他们会习惯于使用 GNU Make 来编译 C++ 项目,对于简单项目来说,这无可厚非,再加上有那么多的开源工具可用,尤其是 autotools 系列,用...

阅读全文

如何给 Git 大项目瘦身

在上回,我在 如何克隆一个大 Git 项目 说到,遇到了克隆大项目的时候,如果遇到问题该如何解决,这次我们来继续聊聊,假如你是这种项目的维护者,该如何改善。 问题分析相信你也看到了如果你维护的是一个大项目,会给那些新加入的参与者带来什么样的麻烦了。 那么,有什么方法可以解决这个问题呢?我们不妨先来看看大项目往往是什么原因造成的: 的确是个有历史大项目,...

阅读全文

如何克隆一个大 Git 项目

用 Git 克隆新项目,可以说是每个工程师必备的基础技能,然而,当你遇到克隆过程中的各种各样问题的时候,可知道如何处理? 遇到问题某天在工作中,小 A 像往常一样要克隆一个新项目到本地,于是你熟练地敲下 1git clone git://github.com:example/awesome-project 然后很悲催的,小 A 发现它告诉你这个项目有几...

阅读全文

我的春节返乡清单

2020 年的开场,多少让大家有点失望,新冠肺炎,还有今天 (2019-10-27) 的科比(虽然对篮球不感冒),不过我还是相信国家机器的运转效率的,这场灾难总会过去。 今年回家,给自己安排了几个任务,主要是为了提升父母的生活幸福感。 年货今年给家里买了点广东这边的糕点,点心礼盒,由于我所在的深圳靠近香港,我也了解到了很多香港有名的点心,比如美心,网上购...

阅读全文

网络测速工具 iperf

在我们日常的网络相关实践中,有个常见的需求便是,测试网速。 如果只是为了测试自己所在位置的网速,那么,我们可以直接打开网页,直接开始测试即可,比如著名的 SpeedTest 。 然而,如果你的需求是测试两台机器之间的网速,那么,我们就需要用其它的更专业的工具来测试了。 也就是今天要介绍的 iperf。 简介目前它的大版本是 3,对应的命令行名称是 ipe...

阅读全文

2019年总结:柔软的三十岁

xiaohua

为什么说三十是柔软的呢?

柔软这个词,大概是我与小花(图中的猫)的关系开始缓和的时候开始意识到的,之前会一直挑逗它,摸它的肚子与屁股,所以总是被挠被咬,然后我就打它,所以它跟我关系一直不是很好。直到某一天,我开始只摸它的头与下巴,然后给它买吃的,我们俩关系就变得好多了。

阅读全文

网页视频播放:方案篇

在上篇我们说到,直播协议的介绍,简单回顾下几个技术点: 客户端 / 摄像头:RTSP/RTMP 视频传输:RTSP 转成 RTMP/HTTP-FLV/DASH/HLS/WebRTC 浏览器播放:video.js / flv.js 这篇我们接着来说说具体的实现方案。 方案现成的方案其...

阅读全文

网页视频播放:协议篇

最近一两周折腾了监控视频的方案,现在把过程中涉及到的知识总结一下,希望对后来的你有帮助。 前言起初是为了客户端可以跨平台使用,但是我们又不想折腾不同平台的 UI 库,Qt 之类的跨平台库虽然不错,只是它的设计太丑,无法入我法眼。这时候 Electron 方案走进了我们的视线:可以用 Web UI,而 Web UI 的设计又有非常多可供挑选,于是,我们就选...

阅读全文

你得颈椎病了吗

这几周做的东西也比较杂,没有总结什么实质的内容,颈椎病这时候却找上门了,就此机会,来说说这个与技术无关,『轻松一点』的话题。 说起颈椎病,大家应该都不陌生,有个段子说的就是颈椎病是所有工程师的最高级别,是终极归宿,还有的说《颈椎病康复指南》是大家在技术生涯里读的最后一本书,而我就比较厉害了,直接跳过几级,直接修炼到程序员的顶级了。 实际上,我颈椎的富贵包...

阅读全文