JOURNAL

博客文章

给桌面客户端做下载加速:从「桶直接公开」到「边缘优先、源站兜底」的三代演进

安装包下载最初是「桶直接公开、URL 写死在网页里」——能用,但任何人猜到路径就能镜像、刷流量。第二代把它改成桶私有 + 一次性令牌 + 三层限流,把链接变成「能力」。第三代接入 EdgeOne Pages 承载安装包字节,源站对象存储退成兜底:服务端兑换令牌时用一次 HEAD 探测决定跳边缘还是跳预签名链接,探测结果

阅读全文 ↗

买家回复激活码邮件被退信:一个 Reply-To 头,和顺便重写的邮件模板

Scorpius 的买家回复「Scorpius 激活码」邮件,却收到「域名不存在」的退信——因为发件人是只发不收的 noreply@apikv.com,而正文让人「直接回复本邮件」。修复不止加一行信头:回信地址的优先级、中文显示名的 RFC 2047 编码、敢于承诺「回复有用」的文案,以及把纯文本邮件换成剥掉样式也能读

阅读全文 ↗

给桌面软件官网接入支付宝:从沙箱到生产,踩过的七个坑

Scorpius 官网 6 元买断卖激活码,接入支付宝电脑网站支付。Go 没有官方 SDK 就按规范自己签名;沙箱能做什么不能做什么;私钥抄错一个字符、私钥进 Helm values、买家没填邮箱导致码丢失、表单编码错导致验签失败——这些坑都真实发生过,把实现、数据模型与上线清单一起写下来。

阅读全文 ↗

给 Pangolin 叠两层 WAF:CrowdSec 查你是谁,雷池看你说什么

上一篇我给 WAF 泼了冷水,这次还是装上了,而且是两层:CrowdSec 按 IP 信誉和行为封人,一处发现、7 台机器 5 秒内一起封;雷池用语义分析逐个检查请求内容。两者都以 Traefik 插件的形式挂在 Pangolin 入口上,不用另起反向代理,也不用交出证书。实测每个请求多 2.2ms。过程中踩了 8 个

阅读全文 ↗

服务器上线 100 秒,就有人来敲门:一次登录日志排查与 AI 时代的自保清单

让 AI 帮我查 7 台服务器的登录日志,结果看到一台「节拍器」:每 40 秒一次、一周一万三千多次的低速爆破。顺着日志还翻出了写进日志的明文密码、被另一个 AI 会话悄悄删掉的 history,以及一扇自己打开却没注意的后门。AI 让攻击更便宜,也让我们自己的操作更难追溯;网站被篡改、被挂暗链还可能招来「喝茶」。文末

阅读全文 ↗

电商篇:安全——基于请求方法的访问控制绕过

从「把 POST 改成 GET 就能提权」这个常见漏洞出发,解释授权层按 (路径, 方法) 匹配而执行层不看方法的病因,再拿电商项目的真实代码逐层核查:Connect 的 405、网关 Casbin 的默认拒绝、策略文件的通配陷阱、CSRF 豁免与 NO_SIDE_EFFECTS 的耦合。核查挖出一处真实缺口(审批 R

阅读全文 ↗

基础篇:Git 配置

配置 git 的用户名与邮箱:为什么必须用在 GitHub/GitLab 上绑定并验证过的邮箱(否则提交不计入贡献者),以及一份可直接抄的 ~/.gitconfig——彩色输出、pager、autocrlf、代理与按提交时间排序的分支列表。

阅读全文 ↗

安全篇:用 Santa 保护 Mac 密钥文件

在没有 MDM 的个人 macOS 上,用 Santa File Access Authorization 限制 SSH 私钥、Docker、Kubernetes、腾讯云 CLI、Claude、Codex 和 GitHub CLI 凭证的读写,并按审计、验证、阻断三阶段安全上线。

阅读全文 ↗

把 admin=false 改成 true:拿自己的网关代码做一次攻防复盘

从「改一个布尔值就能进后台」这个经典教学场景出发,先厘清所谓「截取请求」到底发生在哪一端,再逐层审计一套 Go 网关的真实代码——身份头剥离、不透明会话、RS256 验签、下游独立鉴权。四道防线都成立,却挖出两处可复现的真实漏洞:匿名购物访客 cookie 的横向越权,以及 OAuth 回调把「第 1 步校验过」当成保

阅读全文 ↗

用 prlctl 从 macOS 驱动 Parallels 里的 Windows 做桌面应用 e2e

不在虚拟机里装任何 agent,只用 Parallels 自带的 prlctl(exec / capture)加共享目录和 PowerShell,把一个 Tauri 剪贴板工具的 Windows 版跑通了全流程自动化测试:启动常驻、剪贴板捕获、全局快捷键呼出、回车粘贴到焦点输入框、重启持久化、NSIS 静默安装卸载。记

阅读全文 ↗

基础篇:提高物理层面开发效率

全栈电商微服务系列的基础篇:开发机与显示器的选择、输入法取舍,以及 Control 与 Command 互换、左右分屏、菜单栏与程序坞操作、聚焦搜索启动应用这几组 macOS 键盘快捷键的设置步骤。

阅读全文 ↗

基础篇:语言安装

安装项目所需的语言与包管理器:从官网安装 Golang,用 fnm 安装并管理 Node.js LTS,以及单独下载二进制安装 pnpm 12(说明为什么不用 Corepack,以及 11 与 12 的取舍)。

阅读全文 ↗

基础篇:通过软件提高开发效率

从软件层面提高开发效率:终端工具(Warp、Termius、WindTerm)的选择与标签页用法,以及两个不依赖 Docker 守护进程的辅助工具——直接操作远端镜像仓库的 crane 和校验 Kubernetes 清单的 kubeconform。

阅读全文 ↗

全栈电商微服务从 0 到 1 再到 10:开篇

系列开篇:说明这套教程覆盖的范围、「全栈」的具体定义——Node.js(React + TypeScript)前端,加上 Golang 构建的面向微服务的 API 网关与按 DDD 业务能力拆分的微服务——以及各篇的阅读顺序。

阅读全文 ↗

电商篇:安装依赖

安装电商项目所需的两个 Golang 代码生成插件:把 .proto 生成 Go 消息类型的 protoc-gen-go,以及生成 Connect RPC 服务端与客户端代码的 protoc-gen-connect-go;说明二进制落在哪里、需要什么前置条件。

阅读全文 ↗

前端隐私资产保护

有授权限制的模型、字体、图片放到网页上就等于提供下载。用一个 3D 模型的真实改造过程,说明能做到什么、做不到什么,以及三层门槛怎么搭。

阅读全文 ↗

macOS 分域名 DNS 解析部署

让指定后缀(.test)的开发域名走局域网 Ubuntu 上的 dnsmasq,其余域名照旧走系统 DNS:不改全局 DNS、不维护多台机器的 hosts,含环境、安装步骤与验证。

阅读全文 ↗

GitHub 主页美化

用 profile README 把 GitHub 主页做成一张技术名片:自我介绍、打字动效、技术栈徽章、Star 与提交统计卡片,附全部可复制的片段与效果图。

阅读全文 ↗

Docker 安装 GitLab

用 Docker 在一台服务器上跑起 GitLab CE:目录规划、docker run 参数逐项解释、gitlab.rb 配置、初始密码与端口/IP 修改,附界面截图。

阅读全文 ↗

Ubuntu 系统安装 Kubernetes v1.29

在 Ubuntu 上用 kubeadm + containerd 从零部署 Kubernetes v1.29.0:节点前置检查、apt 源、CRI 配置、控制面初始化、网络插件与常见故障排查,附 2024-01-02 更新说明。

阅读全文 ↗

RedHat 系列安装 Kubernetes

在 RedHat 系发行版上安装 Kubernetes:主机名与 hosts、关闭 swap/SELinux/防火墙、内核参数、containerd、kubeadm 初始化与节点加入,附部署截图。

阅读全文 ↗

运维工程化

一套面向微服务的运维工程化方案:GitLab/ArgoCD/Jenkins 的 CI/CD、服务治理、Jaeger + OTel + ELK 可观测性、Kubernetes 编排、Casdoor/Casbin + Istio 的认证与流量控制,含配置与截图。

阅读全文 ↗