程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
软件定制开发/软件按需定制 技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
Pelican 4.12 升级前要核对的事:Python 3.11 成硬门槛,Pygments 上界放到 2.20
编程
Pelican 4.12 升级前要核对的事:Python 3.11 成硬门槛,Pygments 上界放到 2.20
2026-10-29 00:04:41
Pelican 4.12.0 升级核对清单:requires-python 提到 3.11、Docutils 0.22+、Pygments 上界从 2.19 放宽到 2.20;FEED_DOMAIN 回退 SITEURL、category/tag feed 标题改用 slug、摘要不再带 TOC、IGNORE_FILES 默认递归忽略隐藏文件、SOURCE_DATE_EPOCH 决定年份等会在 CI diff 里冒出来的行为变更。
Pelican
静态站点生成器
Python
Markdown
依赖管理
加密字段要支持子串搜索:trigram 盲索引能救 LIKE,但两个汉字搜不到
编程
加密字段要支持子串搜索:trigram 盲索引能救 LIKE,但两个汉字搜不到
2026-10-29 00:04:28
加密字段上 LIKE '%kw%' 查不了,整值 HMAC 盲索引只解决等值。这篇把子串检索这一层拆开:trigram 写窗口 + HMAC-SHA256 截断 128 位存 token 表、域分离前缀、Exact/Prefix(n)/Ngram(n) 三种形态的取舍、"'abcd' 与 'cdef' 共享 'bcd'" 这类假阳性为什么在密文侧消不掉、短于 3 字符直接跳过索引、异步重建带来的几分钟滞后、多 key 轮换时的双算,以及中文场景 n=3 失效要换 bigram 的代价。
盲索引
加密字段
可搜索加密
HMAC
trigram
MySQL
PHP
Go
advisory lock 的两套键空间和 40P01:bigint 与 (int4,int4) 不互通,死锁要从 pg_locks 反查
编程
advisory lock 的两套键空间和 40P01:bigint 与 (int4,int4) 不互通,死锁要从 pg_locks 反查
2026-10-29 00:03:51
PostgreSQL 咨询锁的 bigint 与 (int4,int4) 两套键空间并不互通,混用等于两把锁;给出 pg_locks 里 classid/objid 按无符号反解 key 的写法、40P01 死锁的复现与定位查询,并对照 MySQL GET_LOCK 只有会话级、死锁错误不回滚事务的差异。
advisorylock
advisory-lock
PostgreSQL
MySQL
咨询锁
pg_locks
PDO 连 MySQL 默认是模拟预处理:prepare 不报 1146,LIMIT '10' 却报 1064
编程
PDO 连 MySQL 默认是模拟预处理:prepare 不报 1146,LIMIT '10' 却报 1064
2026-10-29 00:03:49
PDO_MYSQL 默认用模拟预处理:prepare() 不与服务器通信,所以表不存在要到 execute 才报 1146;execute([10]) 拼成 LIMIT '10' 直接 1064。整理四个可复现差异(校验时点、LIMIT 绑定、同名命名参数 HY093、N 前缀失效)、用 Com_stmt_* 计数器确认是否真的走了原生预处理,以及 PHP 8.4 占位符解析器与 8.5 常量迁移。
PHP
PDO
MySQL
prepared-statement
预处理语句
pytest 8.x 升 9.0/9.1:TOML 配置二选一、strict 连带开四项,autouse fixture 会跑两次
编程
pytest 8.x 升 9.0/9.1:TOML 配置二选一、strict 连带开四项,autouse fixture 会跑两次
2026-10-29 00:03:39
pytest 8.x 升 9.0/9.1 的实际迁移记录:原生 [tool.pytest] 与 [tool.pytest.ini_options] 不能共存,strict 总开关连带四项严格检查、9.0 还静默忽略 addopts 里的 --strict-markers,PytestRemovedIn9Warning 默认变 error 且 9.1 删类,--doctest-modules 下模块内联 autouse fixture 可能执行两次,参数重叠去重与 CI 判定变化,以及 9.0.3 修的 CVE-2025-71176。
pytest
Python
单元测试
CI
Python测试
ingestr 把 MySQL 订单表按天搬进 DuckDB:默认 replace 和增量策略的取舍
编程
ingestr 把 MySQL 订单表按天搬进 DuckDB:默认 replace 和增量策略的取舍
2026-10-28 21:32:18
ingestr 用一条命令在 MySQL/Postgres/DuckDB/BigQuery 之间搬表。默认策略是 replace(整表替换),按天对接要显式用 delete+insert 并给出区间键;merge 在 ClickHouse、DynamoDB 等目标端没有 SQL match 条件,不接受 incremental-predicate。含并行抽取、脱敏、schema 契约与 FSL 许可证边界。
ingestr
数据同步
增量加载
MySQL
DuckDB
CLI
用 tbls 把数据库文档纳入 CI:diff、lint 与覆盖率的实际用法
编程
用 tbls 把数据库文档纳入 CI:diff、lint 与覆盖率的实际用法
2026-10-28 21:31:29
tbls 是 Go 写的单二进制工具,从 MySQL/PG 的活库生成 Markdown schema 文档。本文给最小 .tbls.yml、tbls diff 只比 Markdown 的坑(列顺序、--force 不删旧表文件)、lint 规则与 coverage 的真实适用边界,以及在 CI 里当 schema 漂移守门员的接法。
tbls
数据库文档
CI
schema
MySQL
PostgreSQL
Go
Node.js 26 转入 Active LTS:26.11.0 的服务端新 API 与 26.12.1 的四个 High 修复
代码
Node.js 26 转入 Active LTS:26.11.0 的服务端新 API 与 26.12.1 的四个 High 修复
2026-10-28 21:07:50
Node.js 26 从 2026-10-28 起转为 Active LTS,24.x 已进维护期。26.11.0 新增 Buffer.isLatin1、Buffer.stringLength、http 头校验 API 与 http2 connectionWindowSize;26.12.1 修复 TLS/DNS/brotli 四个 High,同时影响 22.23.4 与 24.22.1。
Node.js
LTS
安全更新
后端
Redis 8.4 原子槽迁移:CLUSTER MIGRATION 与 CLUSTER SLOT-STATS 实操
综合
Redis 8.4 原子槽迁移:CLUSTER MIGRATION 与 CLUSTER SLOT-STATS 实操
2026-10-28 21:07:50
Redis 8.4 的 CLUSTER MIGRATION 把槽与数据合并成一次原子操作,消掉迁移期间的不可用窗口;CLUSTER SLOT-STATS 能按槽看 key 数、CPU 与网络 I/O。文中给出迁移步骤、校验与回滚思路,并说明迁移中 FT/TS 聚合查询为何会返回部分结果或重复。
Redis
集群
运维
槽迁移
Go 1.27 给具体方法加类型参数:List.Map 链式转换,以及它不会触碰的接口
编程
Go 1.27 给具体方法加类型参数:List.Map 链式转换,以及它不会触碰的接口
2026-10-28 21:06:19
Go 1.27 允许具体方法声明类型参数,List.Map 这类链式转换不用再写成包级泛型函数,也能用 List[int].Map[int] 转回函数式调用。但它不参与接口实现,接口方法依旧不能带类型参数;文章讲清背后的实例化与分离编译限制。
Go
泛型
语言特性
Docker Engine 29 升级:API 1.52 抬高最低版本,网络与 Go SDK 也要跟着改
综合
Docker Engine 29 升级:API 1.52 抬高最低版本,网络与 Go SDK 也要跟着改
2026-10-28 21:06:19
Docker Engine 29 把 API 抬到 1.52、daemon 最低支持 v1.44,老客户端和管理面板会直接连不上;新安装默认用 containerd image store,nftables 下不再自动开 IP forwarding。Go SDK 也做了成规模的 option struct 与 netip 改造,文中逐项列了升级检查。
Docker
容器
运维
升级
nginx 1.31.0 与 1.30.x:反代配置要跟着改的几处
综合
nginx 1.31.0 与 1.30.x:反代配置要跟着改的几处
2026-10-28 21:06:19
nginx 1.31.0 开始拒绝 HTTP/2、HTTP/3 请求里的 Connection、Keep-Alive、Transfer-Encoding 等逐跳头,TE 只允许 trailers;1.29.7 起 upstream keepalive 默认开启、proxy_http_version 默认 1.1,老配置里的手工补丁要清理。文中给出 400 排查命令与安全修复清单。
nginx
反向代理
运维
HTTP2
PHP 8.6 ext/uri 新增两个 Builder:先建后校验,不必再先有合法 URI
编程
PHP 8.6 ext/uri 新增两个 Builder:先建后校验,不必再先有合法 URI
2026-10-28 21:06:19
PHP 8.6 的 ext/uri 补上了 UriBuilder 与 UrlBuilder,把「每改一个组件就新建对象」和「必须先有合法 URI」两个问题一起解掉,校验分单组件与整体两层。同时新增 UriType 与 HostType 枚举,WHATWG 侧还能识别 127.1、0x7f.0x0.0x0.0x1 这类 IPv4 写法。
PHP
URI
RFC3986
WHATWG
Bash 5.3:不再 fork 的命令替换 ${ cmd; } 与 ${|cmd;}
编程
Bash 5.3:不再 fork 的命令替换 ${ cmd; } 与 ${|cmd;}
2026-10-28 21:04:52
Bash 5.3 新增 ${ cmd; } 与 ${|cmd;} 两种命令替换,在当前 shell 执行、不 fork 子进程,副作用可见;后者从 REPLY 取结果。文章给出与 $(...) 的对照示例、版本检测写法,以及 GLOBSORT、BASH_MONOSECONDS、compgen -V 等对脚本有用的改动。
Bash
Shell
脚本
Linux
Vite 8 迁移笔记:Rolldown 和 Oxc 接管后要改的配置
代码
Vite 8 迁移笔记:Rolldown 和 Oxc 接管后要改的配置
2026-10-28 21:04:52
Vite 8 用 Rolldown 与 Oxc 取代 esbuild 和 Rollup,兼容层能自动转大部分旧配置,但 CJS 默认导入规则、manualChunks 对象形式、import.meta.url 在 UMD 下的行为都变了。文中给出迁移前后配置对照、esbuild 变可选依赖后的插件改法,以及已知限制清单。
Vite
前端构建
Rolldown
迁移
Redis 8.4.7 / 8.4.8 集群安全修复:总线端口无认证,以及 4GB PUBLISH 的堆溢出
综合
Redis 8.4.7 / 8.4.8 集群安全修复:总线端口无认证,以及 4GB PUBLISH 的堆溢出
2026-10-28 21:03:21
Redis 8.4.7 与 8.4.8 两个安全版本修了 cluster bus 无认证、事务内 ACL 回收绕过、TimeSeries/Vector Set 崩溃,以及 4GB PUBLISH 传播时的堆溢出。文中给出确认 tls-cluster 状态、收敛总线端口、滚动升级顺序,以及开启 cluster-bus-port-protected-mode 前必须先配好 TLS 的原因。
Redis
集群
安全更新
运维
MySQL 8.4.13 与 9.7.4:版本号变四段,InnoDB 变严的行大小校验回退了
编程
MySQL 8.4.13 与 9.7.4:版本号变四段,InnoDB 变严的行大小校验回退了
2026-10-28 21:03:21
MySQL 8.4.13 与 9.7.4 引入四段版本号 VERSION_WITH_UPDATE(),但 VERSION() 仍是三段语义;9.7.4 还把此前变严的 InnoDB 行大小校验回退,只有 ALGORITHM=INSTANT 继续严格。另附 hypergraph optimizer 改错行、index_merge_union 返回空集的回归点与升级检查清单。
MySQL
InnoDB
版本升级
运维
PgBouncer 1.26.1:知道一个 SCRAM 用户密码就能登成超级用户,1.26.0 还静默改了 search_path 的默认跟踪
资讯
PgBouncer 1.26.1:知道一个 SCRAM 用户密码就能登成超级用户,1.26.0 还静默改了 search_path 的默认跟踪
2026-10-28 20:02:50
PgBouncer 1.26.1 修了三个 CVE:1.17.0–1.26.0 的 SCRAM 认证绕过(知道一个用户密码即可登成任意 SCRAM 用户含超管)、两处未认证可触发的死循环 DoS;同时修了 1.26.0 引入的 search_path 跟踪导致 ignore_startup_parameters 静默失效。附版本、配置项与升级前脚本的检查步骤。
PgBouncer
PostgreSQL
安全修复
运维
PostgreSQL 19 RC1 升级前要测的事——REPACK 的锁、plan advice 的边界、默认值变化
编程
PostgreSQL 19 RC1 升级前要测的事——REPACK 的锁、plan advice 的边界、默认值变化
2026-10-28 20:01:49
PostgreSQL 19 RC1 已出,GA 计划 11 月 19 日。这篇按升级实际会遇到的问题整理:REPACK CONCURRENTLY 结尾仍要 ACCESS EXCLUSIVE 锁、pg_plan_advice 只是约束不是提速、autovacuum 并行与 pg_stat_autovacuum_scores 打分、序列同步要求 publisher 也是 19,以及 JIT 默认关闭、btree_gist inet/cidr 索引会被 pg_upgrade 拒绝等默认值变化。
PostgreSQL
数据库升级
运维
复制
微信支付分账:漏传 profit_sharing 就永远分不了,unfreeze_unsplit 传了钱还冻着
代码
微信支付分账:漏传 profit_sharing 就永远分不了,unfreeze_unsplit 传了钱还冻着
2026-10-28 09:01:26
平台型业务要在收款后拆钱给供应商、分销。本文按资金流顺序拆微信支付分账的五个硬默认值:下单漏传 profit_sharing 事后无法补分;可分金额是扣手续费后的净额且受默认 30% 比例限制;30 天冻结期过期自动解冻;unfreeze_unsplit 传了仍冻结时要换新的分账单号调解冻接口;state=FINISHED 不等于分账成功,要看 receivers[].result。另含分账回退的六个前提(个人接收方不可回退、180 天时效、余额不足原单重试)、建表与 Go 片段、QPS 口径与排查清单。
微信支付
分账
profit_sharing
分账回退
APIv3
支付对接
资金冻结
MySQL 9.7 升级前先清账号:native_password 在 9.0 就没了,原地回滚也不行
编程
MySQL 9.7 升级前先清账号:native_password 在 9.0 就没了,原地回滚也不行
2026-10-28 00:05:38
8.4 升 9.7 最常见的翻车不在服务器启动,而在账号:mysql_native_password 从 9.0.0 起已从服务端移除,hash 无法换算只能重设密码,JDBC/Go 非 TLS 连接还要处理公钥交换。同时 9.7 降回 8.4 只支持逻辑导出或复制回滚,不能原地换二进制,给升级前的检查清单与回滚约束。
MySQL9.7
MySQL
认证插件
caching_sha2_password
LTS升级
数据库迁移
yt-dlp 报 403、只下到音轨、分片超时:从 TLS 指纹到 JS 运行时的分层排查
编程
yt-dlp 报 403、只下到音轨、分片超时:从 TLS 指纹到 JS 运行时的分层排查
2026-10-28 00:04:53
yt-dlp 的报错往往只给结果不给原因。按失败形态分四类排查:403 与 TLS 指纹(curl_cffi impersonation,注意 zipimport 版和 32 位 Windows 版不带它)、缺 JS 运行时导致拿不到高清晰度、ffmpeg 二进制缺失导致无法合流与切片、-N 与 --downloader 的分工,以及 --throttled-rate 与 --retry-sleep 的用法。
下载工具
yt-dlp
ffmpeg
curl
Shell
Argon2id 参数别照抄默认值:64 MiB 乘 40 个 worker 就 OOMKill,PHP 与 Go 的实现差异
编程
Argon2id 参数别照抄默认值:64 MiB 乘 40 个 worker 就 OOMKill,PHP 与 Go 的实现差异
2026-10-28 00:04:46
Argon2id 的 m/t/p 不是填个 19 MiB 就完事:m 是 KiB 且按 worker 数相乘、p 不乘内存,PHP 8.x 默认 64 MiB/t=4 乘上 pm.max_children 就能把容器 OOMKill。含内存预算公式、PHP 与 Go x/crypto/argon2 的实现差异(取整、panic、threads 在 libsodium 下失效、needs_rehash 要传 options)、可跑的 benchmark 脚本与 bcrypt 迁移路径。
密码哈希
Argon2id
PHP
Go
安全
PHPStan 2.2:array{a:int} 开始真的密封,array<string,X> 的键会被收窄成 int|string
编程
PHPStan 2.2:array{a:int} 开始真的密封,array<string,X> 的键会被收窄成 int|string
2026-10-28 00:04:44
PHPStan 2.2(2026-05-28)给数组形状加了未封闭语法 ...,并新增 non-decimal-int-string 类型与 reportUnsafeArrayStringKeyCasting 三档配置,解决「array<string,X> 运行时冒出 int 键」的长期误判。文中给出复现代码、报错原文、交叉运算结果表、bleeding edge 下密封形状的三种拒绝提示与 composer 升级顺序。
PHPStan
PHP
静态分析
数组
类型系统
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
340
下一页
共 340 页
到第
页
确定