北疆(新疆)自驾游记

国庆去了新疆玩,这么多天过去了,一直在搞租房的事情,这把我搞得很烦闷,今天终于搞定了,心静下来了,聊点闲事(显然是我没有其它可以写的)。

Read More

Golang 中的 Unicode 与 UTF-8

大多数的我们,真正认识到有字符编码这回事,一般都是因为遇到了乱码,因为我国常用的编码是 GBK 以及 GB2312:用两个 Byte 来表示所有的汉字,这样,我们一共可以表示 2^16 = 65536 个字符,一旦我们的 GBK 以及 GB2312 编码遇到了其他编码,比如日本,韩国的编码,就会变成乱码,当然,这时候如果是 UTF-8,也会乱码。

Read More

CMake 系列完结以及一些碎碎念

这过去的几个月中,我一直在写 CMake 相关的内容,写成了一个系列,到今天,我打算先放下了。 事实是,我似乎是陷入灵感枯竭期了。 CMake 系列的总结先来做个总结,CMake 系列,一共写了十篇,从基础,到高级内容,基本上都是我在工作中的学习内容,没有很精深,也没有写的很全面,毕竟自己重新写 C++ 也不过这过去不到一年的时间。 回顾 CMake 系...

Read More

隐私守卫者 PGP

我第一次提到过 PGP,是在 Helm 实践之配置管理 以及 Helm 实践之持续交付 里面,但当时只是提到它可以用来加密我们的配置,但没有拓展它,今天我们来简单拓展下。 简单介绍菲利普 · 齐默曼(Philip R. Zimmermann)在 1991 年创造了第一个版本的 PGP,其名称 “Pretty Good Privacy”1。 显而易见,他...

Read More

(CMake Series) Part 10 - Enhancing Compilation Speed and Program Performance

Compilation Speed Optimization Ninja Generator CCache Precompiled headers (PCH) and Unity builds2 Other Tips Program Performance Optimization Ref Every C/C++ develop...

Read More

【CMake 系列】(十)编译速度以及程序性能优化相关

写 C/C++ 的同学都知道,项目稍大点,编译速度就开始拖后腿了,这对于我们来说是个又爱又恨的时候:急着改代码的时候,慢能消耗我们的耐心,能将我们逼疯,而我们想暂时休息会儿的时候,却可以借此去散步喝茶了。 另外,程序运行时的速度,又是另外一个关键的速度了,编译速度慢我们可以忍,但是运行速度慢可忍不了,就算我们忍得了,领导或者用户也是无法忍的。 ...

Read More

为什么你需要理解用户需求

前些天看到一篇教大家导出百万级别数据 Excel 文件的文章,我当时不由得楞了一会儿:这年头有这样的需求?不过仔细回想之前自己经历过的应用场景,发现还真有。 撇开技术细节不谈,我们以此来谈谈,作为一个技术人,为什么你需要尝试去理解用户需求。 从运营同学的导数据需求开始假如你做过后端的业务,那么这样类似的数据需求是经常的,比如对于运营同学,他们经常需要你帮...

Read More

(CMake Series) Part 9 - Practical Tips: How to Download Dependencies

Clarifying Requirements Commands Provided by CMake Implementation Download Function File Signature Verification Extracting Files Download and Extract File Caching Argument P...

Read More

【CMake 系列】(九)实战之如何下载依赖

今天补下之前在 ExternalProject 实践 留下的坑:如何下载第三方依赖。 理清需求由于大家的需求很可能是不一致的,这里选一个比较通用的需求:下载第三方依赖压缩包,于是我们就需要下载压缩包文件到本地,验证文件签名,然后解压到指定目录。 CMake 提供的命令我们要用到主要有以下两个命令: file DOWNLOAD:下载文件 INSTALL:...

Read More

(CMake Series) Part 8 - Cross Compiling

Example Android iOS Other Obvious Pitfalls Dependencies Vary Greatly Across Target Programs Compiled Programs Cannot Run Directly on the Compilation Host Conclusion Today...

Read More

【CMake 系列】(八)交叉编译

今天来说说,CMake 中稍许有些难度的部分:交叉编译。 虽说交叉编译有些难度,但是相对于其它的工具,CMake 的交叉编译支持还是很强大的,用一个 CMAKE_TOOLCHAIN_FILE 文件参数来制定交叉编译工具链就能解决大部分问题了。 例子下面来说说一个例子,比如我们现在需要编译 aarch64(即 ARM architecture 64 位)上...

Read More

(CMake Series) Part 7 - Common Variables, Functions, and Modules

During Configuration Generating Configuration Files Guard Against Accidental Builds in Source Directory Finding Third-party Libraries During Compilation Compilers FLAGS Feat...

Read More

【CMake 系列】(七)常用变量、函数以及模块

用了 CMake 较长一段时间后,在笔记本里面记录了不少知识,这些知识其实应该放在这个系列文章的开始来讲,因为算是很入门的部分,这里就简单总结下。 配置期间生成配置文件12configure_file("${PROJECT_SOURCE_DIR}/include/config.h.in" ...

Read More

(CMake Series) Part 6 - Creating Documentation with Doxygen, Sphinx, and Breathe

Introduction Preparing the Environment Doxygen Sphinx and Breathe CMake Configuration Ref Today, let’s talk about another perhaps less exciting aspect of CMake: documenta...

Read More

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

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

Read More