程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
Inertia v3 上线踩的 8 个坑:409 版本冲突、303 重定向与被 CDN 吃掉的 Vary 头
编程
Inertia v3 上线踩的 8 个坑:409 版本冲突、303 重定向与被 CDN 吃掉的 Vary 头
2026-10-19 00:09:59
从 Inertia v3 的 HTTP 协议切入,拆开 X-Inertia 头、page object、409 版本冲突、302→303 转换、Vary 缓存分桶、partial reload 惰性求值与 SSR 13714 探活。每个坑给现象、原因和 curl 验证方式,面向已用 Laravel + Vue 上线、正在排查整页刷新和缓存串味的工程师。
Inertia.js
Laravel
Vue
PHP
SPA
前端路由
幂等防重不止唯一索引:幂等键的四层拦截与三个失效点
编程
幂等防重不止唯一索引:幂等键的四层拦截与三个失效点
2026-10-19 00:04:20
同一个请求被处理两次,问题往往不在业务代码某一行,而在幂等键设计。这篇划清幂等只在写操作上成立,给出键的三种生成方式与粒度、网关/Redis 原子消费/MySQL 唯一索引/状态机条件更新的四层拦截顺序,以及「每次重试重生成键」「先查后写」「去重记录与业务不同事务、TTL 短于重试窗口」三个失效点,附 Go 的 1062 判断与并发验证方法。
幂等防重
幂等键
Redis
MySQL
重复提交
gh-actions-lock 0.2.0 升级后要处理的坑:粘性锁、更严的 --verify 与本地 action 迁移
编程
gh-actions-lock 0.2.0 升级后要处理的坑:粘性锁、更严的 --verify 与本地 action 迁移
2026-10-19 00:03:59
gh-actions-lock 0.2.0 升级排错笔记:锁文件 schema 变 v0.0.3、普通 run 改粘性锁、--rescan 移除、--verify 开始对未使用条目和未接入 workflow 报错、--verify-local 不再迁移 ./ 引用、--relock 与 --accept-moved 的分工、本地路径 action 跳过 onboarding 的路径解析坑,以及 allowlist 按 SHA 校验和 Dependabot 的 schema 兼容问题。
GitHubActions
actions-lock
CI
CD
供应链安全
lockfile
gh
PgDog v0.1.62:事务池复用连接时,SET/RESET 与 advisory lock 的会话状态怎么串味
编程
PgDog v0.1.62:事务池复用连接时,SET/RESET 与 advisory lock 的会话状态怎么串味
2026-10-19 00:03:42
PgDog v0.1.62 集中修了事务池下的会话状态泄漏:SET LOCAL ... TO DEFAULT 被当成会话级 SET、RESET 不恢复启动参数、ROLLBACK 撤销上一事务的 RESET、DISCARD ALL 命令标签错误打断 JDBC prepared statement、pg_try_advisory_lock 没拿到锁也 pin 连接。附最小复现 SQL、pgdog.toml 关键默认值与升级验证步骤。
PgDog
PostgreSQL
连接池
事务池
SET
advisory
lock
DISCARD
数据库代理
用 Beszel 搭一套轻量监控:hub + agent 的 Docker Compose 部署笔记
综合
用 Beszel 搭一套轻量监控:hub + agent 的 Docker Compose 部署笔记
2026-10-18 21:31:11
Beszel 用 Go 写的轻量监控:hub 基于 PocketBase,agent 采集宿主与 Docker 容器指标。含完整 docker-compose、KEY/TOKEN 回填与 unix socket 接法、告警通知渠道,以及 host 网络、SMART 权限、公网暴露的取舍。
服务器监控
Beszel
Docker
运维
自托管
YARMCP:把仓库克隆到自己的服务器,让 Claude Code 读到最新源码
综合
YARMCP:把仓库克隆到自己的服务器,让 Claude Code 读到最新源码
2026-10-18 21:31:11
自托管 MCP 服务器 YARMCP:把常用仓库浅克隆到服务器,AI 助手直接读本地源码,绕开 GitHub API 每小时 5000 次限流。含 Docker Compose 部署、Bearer/OAuth 两种认证、repos.yaml 配置与 CLAUDE.md 接法。
MCP
自托管
Claude
Code
Docker
AI编程
OpenSSL 4.0.0 升级排查:ENGINE 被删、SM2 默认 distid 变更,编译和互验都得先过一遍
编程
OpenSSL 4.0.0 升级排查:ENGINE 被删、SM2 默认 distid 变更,编译和互验都得先过一遍
2026-10-18 21:08:31
OpenSSL 4.0.0 不是 LTS,升级要先过一遍编译与互验:ENGINE 与 SSLv3 移除、ASN1_STRING 变 opaque 加 const 签名、c_rehash 换成 openssl rehash、SM2 默认 distid 变更会让新旧版本互验失败,签名算法名也改成 IANA 名字。
OpenSSL
TLS
升级迁移
systemd v259 升级后会踩到的默认值与行为变化
资讯
systemd v259 升级后会踩到的默认值与行为变化
2026-10-18 21:07:28
systemd v259 里不改配置也会变的三处:journald 默认 persistent、cgroup2 挂载 memory_hugetlb_accounting 让大页计入内存限制、networkd 与 nspawn 只走 nftables。另附 run0 --empower、OOMKills 属性、$LISTEN_PIDFDID 与 v260 移除计划。
Linux
运维
systemd
Docker Engine 29.9.x 运维笔记:--link-local-ip 开始校验、firewalld 桥接恢复与 lazy-pull 开关
资讯
Docker Engine 29.9.x 运维笔记:--link-local-ip 开始校验、firewalld 桥接恢复与 lazy-pull 开关
2026-10-18 21:06:39
Docker Engine 29.9.1 起 --link-local-ip 会校验地址必须是 169.254/16 或 fe80::/10,firewalld 自定义 zone 下桥接网络重启恢复失败也被修;29.9.0 带来 lazy-pull 开关、解包层存在时漏拉 blob 的镜像不完整问题,以及 daemon 侧 HTTP/2 修复。
Docker
容器运维
版本升级
ProxySQL 3.0.11/3.1.11/4.0.11:字面量用户变量不再钉死 hostgroup,caching_sha2_password 补齐 RSA 认证
编程
ProxySQL 3.0.11/3.1.11/4.0.11:字面量用户变量不再钉死 hostgroup,caching_sha2_password 补齐 RSA 认证
2026-10-18 21:05:04
ProxySQL 3.0.11 起 SET @request_id=1234 这类字面量赋值不再把会话钉在 hostgroup,多路复用得以保留;3.1.11 让非 TLS 客户端走 RSA 完成 caching_sha2_password 认证。文中给出开关配置、require_x509 与密钥轮换等升级前检查项。
MySQL
中间件
连接池
gh-ost v1.1.11 支持 MariaDB GTID,切换前可先 ANALYZE 影子表
代码
gh-ost v1.1.11 支持 MariaDB GTID,切换前可先 ANALYZE 影子表
2026-10-18 21:04:53
gh-ost v1.1.11 新增 MariaDB 与 MariaDB GTID 支持、可选 StatsD 指标,以及 --analyze-ghost-table-before-cutover:切换前对影子表 ANALYZE,失败则中止换表。含调用示例、binlog 解码跳过无关表与 CGO 关闭的发布二进制说明。
MySQL
在线DDL
工具
PostgreSQL 19 RC1 升级笔记:REPACK 取代 VACUUM FULL/CLUSTER,JIT 默认关闭,max_locks_per_transaction 64→128
资讯
PostgreSQL 19 RC1 升级笔记:REPACK 取代 VACUUM FULL/CLUSTER,JIT 默认关闭,max_locks_per_transaction 64→128
2026-10-18 21:04:03
PostgreSQL 19 RC1 升级清单:REPACK 取代 VACUUM FULL/CLUSTER 并支持 CONCURRENTLY,JIT 默认关闭,max_locks_per_transaction 从 64 变 128 且锁槽口径变化,inet/cidr 索引要重建为 GiST,另附 Beta 4 撤回的功能与命令片段。
PostgreSQL
数据库升级
运维
PHP 8.6 批量弃用投票:31 项通过,is、let、readonly 要在 PHP 9 前改名
资讯
PHP 8.6 批量弃用投票:31 项通过,is、let、readonly 要在 PHP 9 前改名
2026-10-18 21:03:56
PHP 8.6 批量弃用 RFC 投票结果:35 项里 31 项通过。is、let、readonly、namespace、_ 成为保留标识符,symfony/http-client 依赖的 dechunk 被否,list() 停在 23:23 平票,finally 里 return 属行为变更。附可直接跑的 grep 清单。
PHP
版本升级
代码迁移
PHP 8.6.0 RC3 撤回三处「更快」改动:hrtime() 快了 4%、fiber 里警告被静音
编程
PHP 8.6.0 RC3 撤回三处「更快」改动:hrtime() 快了 4%、fiber 里警告被静音
2026-10-18 21:02:32
PHP 8.6.0 RC3 回滚了 8.6 自己引入的三处回归:fiber 内警告被静音、hrtime() 改用 CLOCK_MONOTONIC_RAW 后快约 4%、strict_types=1 下 array_map 加速路径抛 TypeError,另有 OPcache 把负零折叠。含实测表格与升级注意。
PHP
版本升级
性能
PHP 8.6 收紧 session 三个默认值:先受影响的是 SAML SSO 和跨域表单
编程
PHP 8.6 收紧 session 三个默认值:先受影响的是 SAML SSO 和跨域表单
2026-10-18 21:02:25
PHP 8.6 把 use_strict_mode、cookie_httponly、cookie_samesite 的默认值改成 1/1/Lax,SessionHandler::validateId() 也真正实现,外部提供的 session ID 会被拒。文中给出四步排查顺序、php.ini 与 Symfony 配置片段,以及为什么不建议全站放宽。
PHP
会话安全
升级踩坑
用 go build -toolexec 拦下每次 compile:计时、改源码、往 importcfg 里塞包
代码
用 go build -toolexec 拦下每次 compile:计时、改源码、往 importcfg 里塞包
2026-10-18 21:01:44
go build -toolexec 会把包装程序插到 compile、link、asm、cgo 之前。文中给出最小计时器实现、importcfg 的目录与格式、追加 import 的两步做法,以及 Go 1.27 的 @file 响应文件、stdversion vet 检查等直接影响包装程序的变化。
Go
构建
工具链
gopls v0.24.0:交互式重构走 LSP 扩展,ptrtoerror 抓 E 与 *E 混用
代码
gopls v0.24.0:交互式重构走 LSP 扩展,ptrtoerror 抓 E 与 *E 混用
2026-10-18 21:01:37
gopls v0.24.0 支持 LSP 3.18 与交互式重构:struct tag、实现接口、移动声明都改成多步对话框。新增 ptrtoerror 分析器专抓 E 与 *E 都实现 error 导致的静默失败,另有 slicesclip、reflecttypeassert 等 modernizer 与 Go 1.28 的 string(x) 迁移。
Go
工具链
静态分析
Backup Center:Laravel + Go Agent 做多机网站备份,存储按 YYYYMMDD 归档
案例
Backup Center:Laravel + Go Agent 做多机网站备份,存储按 YYYYMMDD 归档
2026-10-18 20:02:23
一台 Center 加每机一个 Go Agent,把网站备份统一调度到 S3/SFTP/WebDAV。记录一键脚本的环境变量与 OpenVZ/LXC 兼容坑、Agent 的 systemd 接入、tag 触发的发布流程,以及 README 没交代的一致性、加密、去重三个待验证点。
自托管
备份
Laravel
Go
Docker
运维
PostgreSQL 18 vs 17.9:2000 万行实测,大聚合慢 1.6 倍,skip scan 是唯一稳赢项
编程
PostgreSQL 18 vs 17.9:2000 万行实测,大聚合慢 1.6 倍,skip scan 是唯一稳赢项
2026-10-18 20:01:53
同样 2000 万行灌进 PostgreSQL 17.9 和 18,五类查询跑完发现:大聚合慢 1.6 倍,深 join 默认也慢,只有 skip scan 明确变快。附 io_method 三档对比、pg_upgrade 统计信息搬运与 checksum 默认开启带来的升级前置条件。
PostgreSQL
数据库升级
pg_upgrade
skip
scan
io_method
Stripe webhook 一直 400 signature verification failed:先查 raw body 有没有被 JSON 中间件吃掉
代码
Stripe webhook 一直 400 signature verification failed:先查 raw body 有没有被 JSON 中间件吃掉
2026-10-18 09:01:05
Stripe 回调返回 400、日志报 signature verification failed 时,按 raw body 被框架改写、whsec_ secret 用错、300 秒容差、代理重编码四条线索逐项排查,并给出事件幂等、顺序与重试窗口的处理方式。
Stripe
Webhook
支付接口
验签
幂等
订单关单后的资源释放:库存回滚、优惠券退回与额度解冻怎么做到不重不漏
编程
订单关单后的资源释放:库存回滚、优惠券退回与额度解冻怎么做到不重不漏
2026-10-18 00:04:35
订单关单只改 status 会留下退不干净的库存、券和冻结额度。这篇给可落地的做法:关单事务只抢状态并写 outbox 释放任务、库存用 available/locked 预占模型并给 locked 加下界条件、流水表唯一键做幂等、优惠券过期与叠加退券的取舍、冻结额度双向更新、以及「locked 汇总 = 待支付明细」的每日对账 SQL 和重试/人工补偿口径。
订单关单
库存回滚
幂等
优惠券
对账
订单状态机
20 字限制卡住一个 👨👩👧👦:emoji 的码点、字节与 grapheme cluster
编程
20 字限制卡住一个 👨👩👧👦:emoji 的码点、字节与 grapheme cluster
2026-10-18 00:04:23
表单「20 个字」限制被一个家庭 emoji 撑爆、按码点截断后渲染成方块,是编码层最常见的错位。这篇把 emoji 的 7 种编码形式(VS16、肤色修饰、ZWJ、区域指示符、tag、keycap)和三种长度口径拆开,给出 Go/PHP/JS 按 grapheme cluster 计数与截断的可执行写法,以及 utf8mb4 列宽、排序规则与终端宽度上的边界。
emoji
Unicode
字符编码
Go
PHP
前端工程
Excel 双击 UTF-8 CSV 全是「涓枃」:BOM 写在哪一步,写了为什么还是乱码
案例
Excel 双击 UTF-8 CSV 全是「涓枃」:BOM 写在哪一步,写了为什么还是乱码
2026-10-18 00:04:03
后端导出的 UTF-8 CSV 用 Excel 双击打开中文全是「涓枃」:Excel 按系统 ANSI 代码页解码,只认文件开头的 BOM。给出 PHP/Python/Node/Go 写 BOM 的正确位置,四种「写了 BOM 反而更乱」的真实原因与字节级验证方法,以及中文文件名走 filename*=UTF-8'' 的处理方式,最后说明何时该弃 CSV 改 xlsx。
乱码
CSV导出
字符集
UTF-8
BOM
Excel
PHP
Python
Go
锁文件存在不等于被遵守:七个包管理器的默认行为与强制模式对照
编程
锁文件存在不等于被遵守:七个包管理器的默认行为与强制模式对照
2026-10-18 00:03:49
把「锁文件」拆成尊重与强制两个维度:npm/pnpm 默认尊重但冲突时静默覆盖,Cargo/Pipenv 默认重新解析并改写锁文件,Poetry/Gradle/Go 默认即强制。附 npm install 与 npm ci 的 resolver 差异、lockfileVersion 1/2/3、隐藏锁文件的三条有效条件、integrity 校验与冲突重建步骤。
锁文件
lockfile
依赖管理
npm
CI
供应链
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
331
下一页
共 331 页
到第
页
确定