zstd 压缩格式

zstd (Zstandard) 是 Facebook 开发的一种无损压缩算法,最大的优势就是具有极快的压缩和解压速度,同时还有着不错的压缩率。目前 zstd 已经有了越来越多的应用,Arch Linux 也已经开始转用 zstd 作为安装包压缩格式了。 安装 zstd…


本站迁移到 Gatsby

最近终于完成了本站到 Gatsby 的迁移。这里简单回顾一下站点用过的平台。 WordPress 最早使用的是 WordPress,简单易用,几乎零学习成本,安装 PHP 和 MySQL 就可以了,其余的只需要通过后台页面来管理。支持的插件也多,但是很多是收费的。 Jekyll…


Go 中使用 KDF 进行密码哈希和验证

存储密码认证信息是需要非常小心的,否则会有泄漏的风险。 KDF (key derivation function,密钥派生函数) 可以通过特定算法将密码派生出指定长度的密钥,非常适用于密码验证的密码哈希处理。 常用于密码哈希的 KDF 算法有 bcrypt,scrypt…


Herald: 轻量级的任务分发系统

日常服务器管理总会遇到一些相似的任务,比如证书更新、数据备份、应用部署,软件更新等等。通过一些脚本来可以简化这些过程,但是这些脚本相对过于分散,不易管理,尤其是有多个服务器的情况。 当然有很多成熟的工具可以帮助实现这些功能,比如 Puppet,Jenkins…


PDF 文件添加书签

在阅读 PDF 文件的时候,有书签的话浏览切换页面会很方便。但是有时候 PDF 文件里并不包含书签,这样就给跳转页面带来些麻烦。尤其是在手机和电纸书阅读器上,对于我这种不按顺序阅读的,没有书签简直寸步难行。 然后我就在寻找给 PDF 添加书签的方法。由于 PDF…


虚拟机镜像文件扩容

虚拟机根据不同用途需要不同的容量大小。有时候它们是从同一个镜像文件克隆出来的,预设的容量是固定的,所以得想办法根据需要把镜像文件进行扩容。


从头开始新建 React 应用

根据 React 官方文档,新建 React 应用的一种方式是使用 Create React App。 Create React App 提供了一个基本的框架,使用 react-scripts 简化配置流程。在此基础上可以很方便的继续进行 React 应用开发。 不过 react…


Linux 下的时间同步

NTP (Network Time Protocol) 是目前广泛使用的时间同步协议。 以下介绍的几种 NTP 工具是相互排斥,不能同时运行的。根据自己的需要选取一种即可。 systemd-timesyncd systemd-timesyncd…


在 Linux 下安装开发环境

Linux 下非常适合进行软件开发,软件开发环境的创建也是非常方便。这里的开发环境指的是 C/C++ 开发环境,包含 C/C++ 编译器、头文件、标准库、代码工具、编译工具以及常用开发库等等。


Python 中实现延迟加载

延迟加载 (lazy loading) 是一种仅在资源第一次调用时才进行真正加载的模式。资源加载通常会涉及到较慢的 I/O 操作,并且会占用内存,因此合理使用延迟加载可以有效地节约初始化时间和内存消耗,特别是在资源并不是每次都会全部用到的情况。 本文将讨论在 Python…