Go 构建时注入版本号实战:不用第三方包,也能把版本信息做完整

给 Go 程序加上可查询的版本号,不一定要引入第三方库。本文用标准库配合 `go build -ldflags`,演示如何在构建阶段注入版本号、构建时间和 Git 提交,并进一步补上 JSON 输出与 Makefile 自动化构建。 线上排查 Go 程序时,最常见的问题不是服务起不来,而是程序已经在跑,却说不清自己来自哪次构建。

Go 构建时注入版本号实战:不用第三方包,也能把版本信息做完整

在 Go 语言中如何进行 AES-ECB-256 加解密

这篇文章用一个可直接运行的 Go 示例,说明如何借助 `github.com/forgoer/openssl` 快速完成 `AES-ECB-256` 的加解密,并补清实际使用时最容易出错的三件事:32 位密钥长度、`PKCS7_PADDING` 填充方式,以及跨语言对接时常见的 `base64` 编码处理。

在 Go 语言中如何进行 AES-ECB-256 加解密

Go 语言中如何实现 RSA 加解密与签名验证

这篇文章用一个更省代码的 Go 封装库,梳理 RSA 在实际开发里的三个基本动作:生成密钥、公钥加密私钥解密、私钥签名公钥验签。示例都基于 `github.com/forgoer/openssl`,适合想快速落地 RSA 功能、同时分清加密和签名职责的 Go 开发者。

Go 语言中如何实现 RSA 加解密与签名验证

Go 如何兼容 PHP 的 serialize 和 unserialize

当 PHP 项目迁移到 Go 时,历史数据里常见的 `serialize()`/`unserialize()` 往往会成为兼容点。本文从 PHP 序列化规则入手,结合 `github.com/leeqvip/gophp` 的现成方案,说明 Go 里怎样直接解析和生成 PHP 序列化字符串,以及跨语言场景下该如何选择更稳妥的序列化格式。

Go 如何兼容 PHP 的 serialize 和 unserialize

npm 如何直接从 GitHub/GitLab 仓库安装依赖

除了从 npm 仓库安装,npm 也支持直接把 GitHub、GitLab 等 Git 仓库作为依赖源。本文整理可用的地址格式、版本写法,以及私有仓库在 SSH 已配置后仍报错时的处理办法,帮助你判断什么时候该改用 git 安装、命令该怎么写。

npm 如何直接从 GitHub/GitLab 仓库安装依赖

在 Go 语言中获取文件的 MIME 类型

在 Go 项目里,靠文件后缀判断类型并不可靠,尤其是上传场景下,伪装扩展名会直接带来安全风险。本文用标准库 `http.DetectContentType` 和第三方库 `github.com/h2non/filetype` 两种方式,说明如何根据文件头识别真实 MIME 类型,以及各自适合的使用场景。

在 Go 语言中获取文件的 MIME 类型

在 Git 中创建一个空分支

有些项目需要一个只放文档或静态文件的独立分支,但常规 `git checkout -b` 会继承当前提交历史。本文整理 Git 创建“空分支”的做法,说明 `--orphan` 的作用、为什么新分支仍会先带出工作区文件,以及如何清空内容、提交首个根提交并检查结果。

在 Git 中创建一个空分支

Ruby 项目如何配置 GitHub Actions:从基础 CI 到多版本测试

这篇文章用一个最小 Ruby 项目为例,梳理 GitHub Actions 的基础配置方法,包括仓库准备、首个工作流文件、环境变量写法以及 Ruby 多版本测试矩阵。重点保留可直接落地的 YAML 与命令,帮助你判断一份 Ruby CI 配置该从哪里起步、后续又该如何扩展。

Ruby 项目如何配置 GitHub Actions:从基础 CI 到多版本测试

Ruby 使用 GitLab CI:从基础配置到多阶段流水线

这篇文章围绕 Ruby 项目接入 GitLab CI 的基础做法展开,重点说明为什么要用 CI、`.gitlab-ci.yml` 该如何组织,以及缓存和多阶段流水线分别解决什么问题。读完可以快速判断一套最小可用配置该怎么写、后续又该怎样逐步扩展。

Ruby 使用 GitLab CI:从基础配置到多阶段流水线