IT 技术博客

编码,才是戴着镣铐的跳舞

couttast: 轻量级单元测试框架介绍

七阶子
35 min, 6967 words

笔者在之前一家公司的项目中曾经规范使用过 google test 作为单元测试。只是在实践 使用过程中也偶有不便,于是开始着手再造个轮子,从自己的习惯用法写个轻量级单 元测试框架(库)。

项目地址 https://github.com/lymslive/couttast 。 初版是仅有 500 余行的头文件(head-only lib),无依赖,也不要求 C++11 ,自以为麻雀虽小, 五脏俱全。

取名源于两个单词拼接:cout 就是 C++ 众所周知的那个 std::couttaste 却不是 test 。在软件工程中,“测试”可能是个严肃的专业术语,但“尝试”不妨轻 松点,不必望而生畏。又为了与 test 这母长度相同,误写成了 tast

Read More

C++ 中 Json 操作符重载设计探讨

七阶子
19 min, 3681 words

Json 在业界实践中颇受欢迎。实现 Json 的 C/C++ 库也相当多,其 API 虽大同小异, 却也不尽相同。笔者目前推崇的是 rapidjson 库,因其效率一流,是 C++ 程序员应该追 求的一个目标。但在使用过程中又不免觉得 rapidjson 的使用 API 不够友好,尤其是设 值修改时要多传一个内存分配器参数(Allocator),当然这也是它为了效率实现的一种 交换。

于是我想到了操作符重载。我在想当年的 C++ 教材学习上也算一块重要且有趣的内容了 ,然而在实际工作中,使用 C++ 操作符重载的场合很少。主要是操作符重载容易误解, 经常不如规范选用的函数名那么能望文生义。这就说明操作符重载需要经过审慎的设计, 要让操作符重载尽可能合理,且能让使用团队达成共识。

而 Json 作为通用的数据结构抽象,越发显得重要与流行广泛,它不同与对具体业务的抽 象,因此我认为对 Json 设计一套操作符重载,定义一些操作符号对于 Json 的意义,以 简化对 Json 数据的操作,那是值得探讨的。

Read More

归类: 程序设计

标签: C++ json

浅谈 GNU Make 构建项目实践

七阶子
34 min, 6767 words

摘要

本文简明地介绍 make 的基础原理,并组合实际项目经验,由浅入深讨论了一种实用 的 makefile 通用规则与模板的编写方案。对其中涉及的语法功能技巧择要阐述,希望 有助于初学者理解。

Read More

归类: 工具使用

标签: linux make

linux 下载工具 wget 使用经验

七阶子
18 min, 3405 words

简介

在 linux 系统中,有两款著名工具,curl 与 wget 可用于发送 http 网络请求及下载网 络文档。在最基本的用法中,这两个命令行工具在功能上似有重叠,都有非常多的选项参 数。但它们侧重点不同,curl 侧重实现单次网络请求,且有个孪生库 libcurl 可植入各 种编程语言。而 wget 就是侧重下载的纯命令行工具,默认将网络请求的回应文档保存为 本地文件,对于大文档支持断点下载,还支持递归下载整个网站至本地镜像,这就具备了 基础的爬虫功能!

Read More

归类: 工具使用

标签: wget

mysql 命令行客户端使用经验

七阶子
9 min, 1627 words

首先,Linux 命令行工具,最基本的原则是随时可查手册,man mysql。 当用 mysql 命令从 shell 进入交互环境时,也可用 help 查询基本命令:

mysql> help

大多以 \ 前缀的转义命令,即可以单独使用,也可以附加在普通查询命令末尾。 有些大写转义命令打开某功能选项,而小写关闭对应的功能。

Read More

归类: 工具使用

标签: mysql