应用程序通常都需要管理配置,这些配置可以来自命令行参数、环境变量、配置文件等等。Viper 库 是 Go 中一个经典配置管理库,为 Go 应用程序提供完整的配置解决方案。许多开源 Go 项目都使用了 Viper,例如 Hugo
、Cilium
等等。这篇文章会对 Viper 库的使用做一个基本介绍。
《HTTPS 权威指南》读书笔记(01):SSL、TLS 和密码学
本系列文章是《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
很多 Go 的开源软件都使用 Cobra 库来构建自己的命令行(CLI)应用程序,这些开源软件包括 Kubernetes
、Hugo
等等。这篇文章会对 Cobra 库的使用做一个基本介绍。
《lua 程序设计》读书笔记(16):线程和状态
Lua 不支持真正的多线程,即不支持共享内存的抢占式线程。Lua 语言的线程(也就是所谓的协程)是协作式的,因此可以避免因为不可预知的线程切换而带来的问题,而且 Lua 状态之间不共享内存,这也为 Lua 实现并行化提供了很好的基础。
这篇文章将深入介绍 Lua 的线程以及 lua_State 数据结构。
《lua 程序设计》读书笔记(15):C 语言中的用户自定义类型 & 管理资源
之前介绍过了如何通过 C 语言来编写新函数来扩展 Lua,这篇文章将介绍如何用 C 来编写新的类型来扩展 Lua。同时还会介绍除内存以外的其他资源。
《lua 程序设计》读书笔记(14):在 Lua 中调用 C 语言 & 编写 C 函数的技巧
上一篇文章主要讲解如何在 C 代码中调用 Lua 代码,即将 C 代码作为应用程序代码,Lua 代码作为库代码。这篇文章将介绍如何在 Lua 代码中调用 C 语言,即将 Lua 代码作为应用代码,将 C 代码作为库代码。
《lua 程序设计》读书笔记(13):C 语言 API 总览 & 扩展应用
Lua 是一种嵌入式语言,这就意味着 Lua 并不是一个独立的应用,而是一个库,它可以链接到其他应用程序,将 Lua 功能融入这些应用。这就涉及到 Lua 提供的 C API,通过这些 API,实现在自己的应用程序中通过 Lua 来扩展应用。
《lua 程序设计》读书笔记(12):反射
反射是程序用来检查和修改自身某些部分的能力。Lua 语言本身支持一部分反射能力,而调试库也提供了相关能力。虽然调试库提供的并不是 Lua 语言的调试器,但是其提供了编写我们自己调试器所需要的不同层次的所有底层机制。调试库与其他库不同,必须被慎重使用,因为某些功能性能不高,而且调试库会打破语言的一些固有限制。
《lua 程序设计》读书笔记(11):垃圾收集 & 协程
作为一本脚本语言,Lua 提供了自动内存管理机制,简化对内存资源的管理。Lua 还提供了协程机制,用于实现并发程序的编写。这篇文章将介绍 Lua 的垃圾收集以及协程机制。
《lua 程序设计》读书笔记(10):面向对象编程 & 环境
这篇文章将介绍如何在 Lua 中实现 面向对象编程
,这里会用到上一篇文章介绍的元表知识。之后则将深入介绍 Lua 的运行环境,我们将了解到 Lua 全局变量背后的原理。