0%

应用程序通常都需要管理配置,这些配置可以来自命令行参数、环境变量、配置文件等等。Viper 库 是 Go 中一个经典配置管理库,为 Go 应用程序提供完整的配置解决方案。许多开源 Go 项目都使用了 Viper,例如 HugoCilium 等等。这篇文章会对 Viper 库的使用做一个基本介绍。

阅读全文 »

本系列文章是《HTTPS 权威指南:在服务器和 Web 应用上部署 SSL/TLS 和 PKI》一书的读书笔记,该书的作者是 Ivan Ristić,除了本书,他的作品还有 《Apache Security》、《ModSecurity Handbook》。以下是他在本书的自我介绍:

1
Ivan Ristić 是一位安全研究员、工程师、作者。他对于 Web 应用防火墙领域的发展,开源 Web 应用防火墙 ModSecurity 的开发,以及在 SSL Labs 网站上对 SSL/TLS 和 PKI 的研究、工具和指南的发表,都作出了很大的贡献,因此享誉世界。

安全领域变得越来越复杂,理解攻击和威胁往往就是其工作的一部分。在日常工作中,通常都是把 OpenSSL 库作为黑盒子使用,但是随着对 Nginx 开发维护的深入,当前在 SSL/TLS 的知识储备不足以支撑我更深入地排查问题,因此想通过系统阅读相关书籍来加深对 SSL/TLS 的理解。以上就是我阅读本书的初衷。

阅读全文 »

很多 Go 的开源软件都使用 Cobra 库来构建自己的命令行(CLI)应用程序,这些开源软件包括 KubernetesHugo 等等。这篇文章会对 Cobra 库的使用做一个基本介绍。

阅读全文 »

Lua 不支持真正的多线程,即不支持共享内存的抢占式线程。Lua 语言的线程(也就是所谓的协程)是协作式的,因此可以避免因为不可预知的线程切换而带来的问题,而且 Lua 状态之间不共享内存,这也为 Lua 实现并行化提供了很好的基础。

这篇文章将深入介绍 Lua 的线程以及 lua_State 数据结构。

阅读全文 »

反射是程序用来检查和修改自身某些部分的能力。Lua 语言本身支持一部分反射能力,而调试库也提供了相关能力。虽然调试库提供的并不是 Lua 语言的调试器,但是其提供了编写我们自己调试器所需要的不同层次的所有底层机制。调试库与其他库不同,必须被慎重使用,因为某些功能性能不高,而且调试库会打破语言的一些固有限制。

阅读全文 »