bgo: 具备扩展性的 go 程序构建工具

2022-02-02
阅读 8 分钟
3.1k
节后嘛,得益于 cmdr 原有的 Aliases 功能的升级(除夕时遇到很多意外,都是忙乱惹的祸),bgo 向着不仅只是个 main 包批量构建器迈出了一小步:
封面图

bgo: 让构建 go 程序更容易

2022-01-30
阅读 16 分钟
2.8k
bgo 是一个构建辅助工具,它和已知的那些为 go 应用程序构建服务的工具没有多大的不同,都能支持在你的工作环境中交叉编译构建出 go 应用程序的执行文件。<!--MORE-->
封面图

通过 PXE 自动化安装 Ubuntu Server

2022-01-01
阅读 18 分钟
8.2k
在云环境中,云服务商提供了主机模板(和服务器镜像)以便加速服务器节点的开设。这类功能(包括像 Vultr 那样的或者各种 VPS 提供商那样的)有几种不同的架构方法,一般情况下主要是通过 KVM 底层结构,搭配上层的管理模块如 Cobble 之类来组成。
封面图

Linux 命令 man 全知全会

2021-12-26
阅读 9 分钟
7.8k
手册页,即 Manual pages,又称作 man page,是在 Unix 或 类Unix 操作系统 在线 软件文档 的一种普遍的形式。 内容包括计算机程序(包括库和系统调用),正式的标准和惯例,甚至是抽象的概念。用户可以通过执行man命令)调用手册页。
封面图

Linux 命令 less 全知全会

2021-12-25
阅读 9 分钟
3.5k
less 是 more 的增强版本,它具有更全面的全文件导航能力,以及全文搜索能力。less 在大文件打开方面有很好的优化,在即时显示、快速加载等方面性能突出。less 还支持一次性打开多个文件,它将会逐一地显示这些文件的内容。
封面图

发布你的开源软件到 Ubuntu PPA

2021-12-21
阅读 14 分钟
5.5k
For an individual, here is a simple guide to show you howto publish and host your own deb to Ubuntu PPA.
封面图

浅谈如何实现自定义的 iterator 之二

2021-10-31
阅读 9 分钟
2.2k
我打算实现一个简单而又不简单的树容器,让它成为标准的文件目录结构式的容器类型。但简单就在于,我只准备实现最最必要的几个树结构的接口,诸如遍历啦什么的。
封面图

浅谈如何实现自定义的 iterator

2021-10-28
阅读 8 分钟
12.4k
实现你自己的迭代器使用 std::iterator在 C++17 之前,实现自定义的迭代器被推荐采用从 std::iterator 派生的方式。std::iterator 的基本定义Std::iterator 具有这样的定义: {代码...} 其中,T 是你的容器类类型,无需多提。而 Category 是必须首先指定的所谓的 迭代器标签,参考 这里 。Category 主要可以是:input_it...
封面图

实作中的 std::is_detected 和 Detection Idioms (C++17)

2021-10-23
阅读 15 分钟
4k
确切地说,是指 std::experimental::is_detected, std::experimental::detected_t, std::experimental::detected_or。因为尚未被纳入正式库,所以在现行的编译器中,它们通常至少需要 C++17 规范指定,并包含专门的头文件 <experimental/type_traits>。参考这里:cppref。
封面图

谈 C++17 里的 Chain of Responsibility 模式

2021-10-22
阅读 6 分钟
1.9k
这次的 谈XX模式 系列,并不会逐个全部介绍 GoF 的 23 个模式,也不限于 GoF。有的模式可能是没有模板化复用的必要性的,另外有的模式却并不包含在 GoF 中,所以有时候会有正文的补充版本,像上次的 谈 C++17 里的 Observer 模式 - 4 - 信号槽模式 就是如此。
封面图

理解 std::declval 和 decltype

2021-10-21
阅读 6 分钟
7k
但如此简单的一个东西,怎么就需要新增一个关键字这么大件事呢?还是元编程闹的!元编程世界里,长的怀疑人生的一串模板类声明让人崩溃,重复书写它们更是累赘。例如一条运行时调试日志输出:
封面图

谈 C++17 里的 Command 模式

2021-10-20
阅读 4 分钟
2.6k
这次的 谈XX模式 系列,并不会逐个全部介绍 GoF 的 23 个模式,也不限于 GoF。有的模式可能是没有模板化复用的必要性的,另外有的模式却并不包含在 GoF 中,所以有时候会有正文的补充版本,像上次的 谈 C++17 里的 Observer 模式 - 4 - 信号槽模式 就是如此。
封面图

谈 C++17 里的 Factory 模式之二

2021-10-19
阅读 7 分钟
2.1k
在 谈 C++17 里的 Factory 模式 中我介绍了 hicc/cmdr-cxx 中的 factory 模板类,看了一下时间表,动念是 0822,居然这么长时间了(而且都三个月了,写个 GoF 系列竟然也没写出来,我不应该这么懒的)。当时提到 factory 的存在的 T data 问题,即在 factory 的 tuple 中持有每个 products 类的一个具体化实例,原因是为...
封面图

谈 C++17 里的 Memento 模式

2021-10-17
阅读 14 分钟
2.8k
备忘录模式也是一种行为设计模式。它在 Ctrl-Z 或者说 Undo/Redo 场所中时最为重要,这里也是它的最佳应用场所。除此之外,有时候我们也可以称之为存档模式,你可以将其泛化到一切备份、存档、快照的场景里,例如 macOS 的 Time Machine。
封面图

谈 C++17 里的 Strategy 模式

2021-10-03
阅读 4 分钟
1.9k
在地图上对两点进行路线规划就是一种典型的策略模式应用场景。当我们进行起点到终点的路线规划时,我们期待地图给出这些方式的最佳路线:步行。公交,驾车。有时候可能细分为公交(轨道交通优先),公交(换乘优先)等若干策略。
封面图

谈 C++17 里的 State 模式之二

2021-10-01
阅读 17 分钟
2.9k
这是第二部分,有关有限状态机(FSM)的 C++ 实作部分,也等同于状态模式实现Prologue上一篇 谈 C++17 里的 State 模式之一 对于状态模式所牵扯到的基本概念做了一个综述性的梳理。所以是时候从这些概念中抽取我们感兴趣的部分予以实作了。C++ 实现(元编程实现)如果不采用 DFA 理论推动的手段,而是在 C++11/17 的语境...
封面图

谈 C++17 里的 State 模式之一

2021-09-30
阅读 7 分钟
2.4k
回顾状态模式,考虑实作它的各种问题——特别是有关如何实现一个状态机的问题。同时,这一篇呢,可能不得不分几篇,因为写的时候脑壳在发散嘛,于是就关联得到的、能想起来的都提了一嘴,就多了。但是最后还是会给出代码的,我喜欢写代码的。
封面图

谈 C++17 里的 Observer 模式 - 4 - 信号槽模式

2021-09-22
阅读 12 分钟
3.7k
上上上回的 谈 C++17 里的 Observer 模式 介绍了该模式的基本构造。后来在 谈 C++17 里的 Observer 模式 - 补/2 里面提供了改进版本,主要聚焦于针对多线程环境的暴力使用的场景。再后来又有一篇 谈 C++17 里的 Observer 模式 - 再补/3,谈的是直接绑定 lambda 作为观察者的方案。
封面图

谈 C++17 里的 Observer 模式 - 3

2021-09-20
阅读 5 分钟
2.6k
然后我们提到了,对于观察者模式来说,GoF 的原生定义当然是采用一个 observer class 的方式,但对于差不多 15 年后的 C++11 来说,观察者使用一个 class 定义的方式有点落伍了。特别是到了几乎 23 年后的 C++14/17 之后,lambda 以及 std::function 的支持力度变得较为稳定,无需太多“高级”手法也能轻松地包装闭包或者...
封面图

谈 C++17 里的 Observer 模式 - 补

2021-09-19
阅读 7 分钟
2k
上一回的 谈 C++17 里的 Observer 模式 还是有点慌张,所以需要补充完善一下下Observer Pattern - Part II多种 event (types) 问题我们已经解释过,如果你需要很多不同的 event 对象,那么你应该扩展 event 结构成员: {代码...} 这就好像设计一份通讯协议一般的做法,当然,后面的 body 部分应该是相对一致的数据类型才...
封面图

谈 C++17 里的 Observer 模式

2021-09-16
阅读 6 分钟
3k
昨天很疲惫,没精力写字。今天凌晨被摇醒,一开始没意识到真的在摇,换了两个姿势没感觉,干脆就写字吧。半晌之后,看新闻才知道确实震了,上一次 CQ 有明显感觉时是 08 年,抱着娃下楼呆站,没有实时的资讯可言,不知道事态将会怎么演变,升斗小民想要挣扎求存也不可得,哪怕是今天其实也是如此,并不会因为消息满天飞...
封面图

谈 C++17 里的 Visitor 模式

2021-09-14
阅读 7 分钟
2.7k
访问者模式是一种行为模式,允许任意的分离的访问者能够在管理者控制下访问所管理的元素。访问者不能改变对象的定义(但这并不是强制性的,你可以约定为允许改变)。对管理者而言,它不关心究竟有多少访问者,它只关心一个确定的元素访问顺序(例如对于二叉树来说,你可以提供中序、前序等多种访问顺序)。
封面图

谈 C++17 里的 FlyWeight 模式

2021-09-07
阅读 13 分钟
2.8k
享元模式,是将复杂对象的相同的组成元素抽出并单独维护的一种结构型设计模式。这些相同的组成元素被称为共享元件,它们在一个单独的容器中被唯一性地管理,而复杂对象只需持有到该唯一实例的参考,而无需重复创建这样的相同的元素,从而能够大幅度地削减内存占用。
封面图

谈 C++17 里的 Builder 模式

2021-09-05
阅读 12 分钟
4.1k
已经写了一篇 谈 C++17 里的 Factory 模式 ,后来又顺便肝了一篇 谈 C++17 里的 Singleton 模式 。看来是得要整一大堆了,对于懒散的人来说这很麻烦。我不知道是不是要打算会写完整个 GoF 的个人理解以及新的的实现,慢慢看吧,做了就做了。
封面图

谈 C++17 里的 Singleton 模式

2021-09-03
阅读 7 分钟
6.6k
设计模式中最平民的 Pattern 是哪一个?几乎不会有任何分歧,那必须是单件模式了。所谓单件模式,是在 C 语言开发历史上经历了各种各样的全局变量失控的折磨后发展起来的一种技术,得益于 C++ 的封装能力,我们可以将各种各样的全局变量管控在一个全局静态类(或者说一个类中全都是静态变量的实现方式)中,从而防止任意...
封面图

C++ 的枚举类型

2021-09-02
阅读 8 分钟
5.9k
Prologue: C++ 中的枚举类型应用以及转换到字符串的增强:AWESOME_MAKE_ENUM,... Original From: HERE
封面图

std::optional T 作为返回值时的优化问题,及其他相关

2021-08-29
阅读 6 分钟
1.9k
它的用意足够简单,就是从 std::deque _data 中弹出一个队尾元素。只是由于队列可能为空,所以有一个阻塞式的条件变量来等待队列中有有效值(前三行)。

C++ 复制消除问题

2021-08-29
阅读 3 分钟
1.7k
至于函数体中的 std::move(t) 也就是聊胜于无了,它并不会让 t 少掉 TMP 的复制,仅仅只是少掉了 t 到 _data 的一次复制而已。

谈 C++17 里的 Factory 模式

2021-08-28
阅读 14 分钟
6.4k
本文不适合初学者,你应该已经对 Factory 模式有所了解,你对于 C++17 的常见特性也不陌生。Factory Pattern回顾下工厂模式,并考虑实现一个通用的工厂模板类以达成业务端低代码的目标。FROM: Refactoring Guru理论Factory 模式是 Creational Patterns 中的一种。创建型模式所谓的创建型模式,主要包含这几种:Abstract ...

Windows Server 2019 安装提要 (及 VS 2019 Build Tool) - 续

2021-08-19
阅读 6 分钟
4.1k
The Essentials: After Windows Server 2019 Evaluation Installed - PART II上一次写了 Windows Server 2019 安装提要 (及 VS 2019 Build Tool),然后描述了基本的安装后配置工作。不过这离我的目标——一个轻量级(22GB之轻)的 MSVC 构建环境——还差得远。所以继续追加配置过程中遇到的问题。如下。安装后提要安装 Choco...