程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
编程(第3页)
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
ShellCheck 到底比 bash -n 多查了什么:三条高频规则与 CI 落地
编程
ShellCheck 到底比 bash -n 多查了什么:三条高频规则与 CI 落地
2026-10-16 21:05:59
ShellCheck 比 bash -n 多做变量数据流与控制流分析。讲清 SC2086(引号)、SC2164(cd 退出码)、SC2155(local 吞退出码)三条高频规则的成因与改法,以及 CI/pre-commit 集成、disable 滥用、忽略被 source 文件等落地坑。
Shell
ShellCheck
bash
运维
Composer 2.10.3 修掉两条 CVE:Perforce 源地址可注入命令,bin 路径能穿出包目录
编程
Composer 2.10.3 修掉两条 CVE:Perforce 源地址可注入命令,bin 路径能穿出包目录
2026-10-16 21:03:41
Composer 2.10.3 修复两条 CVE:恶意 Perforce source URL 可在 install/update 时注入命令(需装了 p4 并用了非 Packagist 仓库),以及 bin 路径可穿出包目录、绕过早前修复。给出触发条件、受影响版本与替代缓解。
Composer
PHP
CVE
供应链安全
Protobuf 字段改编号会毁数据、改名字却没事:wire 层的破坏性变更规则
编程
Protobuf 字段改编号会毁数据、改名字却没事:wire 层的破坏性变更规则
2026-10-16 00:05:56
Protobuf 二进制线上格式按字段编号而不是名字编码,所以改名安全、改编号会悄悄毁数据。本文给出 wire 层判定表、reserved 的意义、int32→int64 这类条件安全改动、删字段的三步生命周期,以及 buf breaking 的 WIRE/WIRE_JSON/PACKAGE/FILE 四层检查。
BC破坏性变更
Protobuf
gRPC
向后兼容
破坏性变更
API设计
MySQL 报 ER_1366 Incorrect string value:从驱动到字段排查连接字符集链
编程
MySQL 报 ER_1366 Incorrect string value:从驱动到字段排查连接字符集链
2026-10-16 00:05:00
存 emoji / 中文报 ER_1366 Incorrect string value、ER_1300、ER_3988 时,问题常在客户端、连接层、服务端对象三处字符集不统一。给出 SHOW VARIABLES 该看的变量、SET NAMES 与 character-set-client-handshake、实例→库→表→字段的修改优先级,以及 PHP/Python/Go/JDBC 驱动侧配置与 latin1 双重编码陷阱。
utf8mb4
MySQL
字符集
乱码
emoji
排障
数据库
collation
SemVer 范围与依赖解析:^ 和 ~ 的边界、锁文件、扁平与嵌套
编程
SemVer 范围与依赖解析:^ 和 ~ 的边界、锁文件、扁平与嵌套
2026-10-16 00:04:57
把 SemVer 范围写法展开成区间(^、~、0.x 退化、预发布默认不匹配),讲清范围与锁文件的分工、npm ci/--frozen-lockfile/cargo --locked 的冻结安装、应用与库是否提交锁文件,以及扁平与嵌套两种解析策略和 npm hoisting 的副作用。
语义化版本
SemVer
依赖管理
锁文件
npm
添加一个字段安全,改一个默认值就破坏:判断改动算不算破坏性变更
编程
添加一个字段安全,改一个默认值就破坏:判断改动算不算破坏性变更
2026-10-16 00:04:48
用一张判定表和三层兼容(二进制/源码/行为)模型,讲清哪些改动算破坏性变更:加字段、改默认值、收紧校验、改参数名、加 virtual 分别会破坏谁;附原生 DLL、COM、.NET 的具体机制与并行提供→弃用期→删除的发布流程。
BC破坏性变更
向后兼容
破坏性变更
API设计
语义化版本
兼容性
SemVer 2.0.0 优先级比较:alpha.10 排在 alpha.9 之前,以及五个实现坑
编程
SemVer 2.0.0 优先级比较:alpha.10 排在 alpha.9 之前,以及五个实现坑
2026-10-16 00:04:24
从 SemVer 2.0.0 规范的优先级比较算法切入,讲清 alpha.9 与 alpha.10 的排序、前导零非法、构建元数据不参与比较、0.x 下 ^ 退化,以及 Go 的 v 前缀与 golang.org/x/mod/semver 用法,附可运行的排序与校验示例。
语义化版本
SemVer
版本号
依赖管理
Go
pt-online-schema-change 在线改表:1 条触发器硬约束、4 道安全阀与手动 swap 流程
编程
pt-online-schema-change 在线改表:1 条触发器硬约束、4 道安全阀与手动 swap 流程
2026-10-16 00:03:58
pt-online-schema-change 靠触发器把改表期间的增量同步到新表,再用原子 RENAME 换表,从而不锁原表。本文按官方文档梳理它为什么不锁表、外键四种处理方式、主键/触发器/复制/负载四道安全阀,以及 --alter 的硬约束与推荐的 dry-run 到手动 swap 上线流程。
在线改表
pt-online-schema-change
MySQL
OnlineDDL
DDL
Percona
触发器
ICU MessageFormat 落地笔记:六个 CLDR 复数类别、`=N` 优先级与 MF2 技术预览(ICU 75.1)
编程
ICU MessageFormat 落地笔记:六个 CLDR 复数类别、`=N` 优先级与 MF2 技术预览(ICU 75.1)
2026-10-16 00:03:52
讲清 ICU MessageFormat 的工程细节:六个 CLDR 复数类别、other 必填与 =N 精确匹配的优先级、select/plural 嵌套顺序、花括号转义、skeleton 为何优于 string pattern,以及 MF2 在 ICU 75.1 的技术预览状态和 FormatJS/messageformat 两个实现库。
i18n
国际化
ICU
MessageFormat
CLDR
前端
Vue3 Composables 的四种设计模式:状态封装、异步请求、副作用与组合
编程
Vue3 Composables 的四种设计模式:状态封装、异步请求、副作用与组合
2026-10-15 21:31:41
同一个 onMounted+ref+watch 片段在第三个页面重复出现,就该抽 composable 了。本文把 Vue 3 组合式函数收敛成四种模式:状态封装(readonly 包装返回)、异步请求(MaybeRefOrGetter 自动重请求)、副作用管理(清理用 onScopeDispose 而非 onUnmounted)、组合复用,并给出粒度权衡、三个易踩坑与目录分层/测试方法。
Vue3
Composables
组合式函数
前端
TypeScript
LocalAI 4.11:一个模型名后面挂本地+远端多条链路,失败自动切换
编程
LocalAI 4.11:一个模型名后面挂本地+远端多条链路,失败自动切换
2026-10-15 21:04:40
LocalAI 4.11 引入模型故障转移链:把本地与远端目标挂在同一个模型名后面,在响应提交前按链重试并切换,可从 API/MCP/UI 固定目标;模型库改为以 OCI artifact 分发,按 Sigstore 校验并用 digest 绑定的 last-known-good 缓存回退。文中讲清这两条主线的配置与取舍。
LocalAI
自托管
运维
AI
升级 Stripe API 到 2026-09-30.endive:Checkout 的 payment_method_types 没了,SDK 也改了默认校验行为
编程
升级 Stripe API 到 2026-09-30.endive:Checkout 的 payment_method_types 没了,SDK 也改了默认校验行为
2026-10-15 21:03:21
Stripe 当前 API 版本 2026-09-30.endive 带来一批破坏性改动:Checkout Sessions 与 Payment/Setup Intents 移除 payment_method_types、Elements 改 allowedPaymentMethodTypes;SDK 路径参数改为 positional-only、verifyHeader 默认校验时间戳。文中给出 API、SDK 与 webhook 三条迁移路径。
Stripe
支付
API
接口对接
mise 日常命令改走 mise-versions:没配 GitHub token 也不用撞 60 次/小时限流
编程
mise 日常命令改走 mise-versions:没配 GitHub token 也不用撞 60 次/小时限流
2026-10-15 21:03:21
mise v2026.10.11 让 install/exec/outdated/lock/self-update 等命令不再调用 api.github.com,改从 mise-versions 读取 release、tag 与 attestation,没配 token 的用户不再撞 60 次/小时限流。文中讲清仍直连 GitHub 的场景,并提到 path: 工具的 PATH 信任绕过修复。
mise
开发工具
GitHub
Shell
Caddy 2.11.6 的 60 秒 idle 超时掐断了 SSE,2.11.7 修掉回归并引入 RFC 10036 的 Incremental 头
编程
Caddy 2.11.6 的 60 秒 idle 超时掐断了 SSE,2.11.7 修掉回归并引入 RFC 10036 的 Incremental 头
2026-10-15 21:03:21
Caddy 2.11.6 为缓解 Slowloris 加了默认 1 分钟 idle 超时,却引入两个回归:HTTP/2 下反向代理读请求体时 panic,HTTP/1.1 下用 POST 打开的 SSE 在读完 body 后正好 60 秒被掐断。2.11.7 修掉,并新增 RFC 10036 的 Incremental 头(X-Accel-Buffering 的标准替代)。
Caddy
SSE
反向代理
HTTP
2
Traefik 3.7 原生吃下 85+ ingress-nginx 注解,无需改写 YAML
编程
Traefik 3.7 原生吃下 85+ ingress-nginx 注解,无需改写 YAML
2026-10-15 21:03:21
Traefik Proxy v3.7 把 Ingress NGINX provider 转正:原生支持 85+ 常用 ingress-nginx 注解,现有 manifest 可带上直接迁移,不必重写 YAML。文中还讲清 snippets 的 allowlist 安全取舍、middlewares on services、以及按响应状态码重试与故障转移的配置边界。
Traefik
Kubernetes
Ingress
反向代理
systemd 262:服务重启加随机抖动、Slice 限并发激活、System V 脚本彻底删除
编程
systemd 262:服务重启加随机抖动、Slice 限并发激活、System V 脚本彻底删除
2026-10-15 21:03:21
systemd 262 新增 RestartRandomizedDelaySec 给自动重启加随机延迟,Slice 新增 ActivatingConcurrencyMax 限制并发激活;同时提醒三处破坏性变更:遗留 udev 控制 socket 改 Varlink、System V 脚本支持移除、非系统用户/组弃用。
Linux
systemd
运维
服务管理
Compose 升到 v5.5 后,第一次 up 会把已有容器重建一遍
编程
Compose 升到 v5.5 后,第一次 up 会把已有容器重建一遍
2026-10-15 21:03:21
Docker Compose v5.5 重做了镜像 digest 对账逻辑,升级后第一次 compose up 会把已有容器重建,属预期而非回归。文中梳理 v5 与 v2 的关系、Go SDK 的意义、pull_policy 刷新窗口、jobs 与 init 容器的现状与限制。
Docker
Compose
容器
运维
PG19 的 REPACK:把 VACUUM FULL 和 CLUSTER 合成一条命令,CONCURRENTLY 不阻塞读写
编程
PG19 的 REPACK:把 VACUUM FULL 和 CLUSTER 合成一条命令,CONCURRENTLY 不阻塞读写
2026-10-15 21:03:21
PostgreSQL 19 新增 REPACK,合并 VACUUM FULL 与 CLUSTER 的功能,REPACK ... CONCURRENTLY 可在不阻塞读写的情况下重建表。文中对比两者的锁与磁盘/时间取舍,并列出 Beta4 回退的特性(SQL/PGQ、在线开关 checksums 等),避免照 beta1 公告做规划。
PostgreSQL
数据库
运维
SQL
Redis 8.2 的 XACKDEL/XDELEX:多消费者组下,确认并删除流条目一条命令搞定
编程
Redis 8.2 的 XACKDEL/XDELEX:多消费者组下,确认并删除流条目一条命令搞定
2026-10-15 21:03:21
Redis 8.2 新增 XACKDEL 与 XDELEX,把「确认后清理已确认条目」的应用层逻辑收回 Redis,并用 KEEPREF/DELREF/ACKED 控制消费者组引用处理。文中对比引用计数延迟回收与确认即删两条路线,并附 BITOP 新算子、CLUSTER SLOT-STATS 与内存性能数字。
Redis
Stream
缓存
数据库
gh-ost 改表不停写:binlog 追增量,两个连接抢 rename 完成 cut-over
编程
gh-ost 改表不停写:binlog 追增量,两个连接抢 rename 完成 cut-over
2026-10-15 01:39:38
gh-ost 用 binlog 订阅替代触发器做 MySQL 在线改表:幽灵表迁移 + 增量回放,两个连接抢 rename 完成原子 cut-over。含三种运行模式、硬约束(必须有主键、binlog_format=ROW)、关键参数与 dry-run 实操,以及和 pt-osc 在中断恢复、增量同步上的差异。
OnlineDDL
MySQL
gh-ost
DDL
在线改表
binlog
cut-over
数据库
gh
触发器
locale 起效顺序与六个坑:从 locale-gen 到 LC_ALL=C
编程
locale 起效顺序与六个坑:从 locale-gen 到 LC_ALL=C
2026-10-15 01:37:05
locale 是 glibc 的语言文化规则集,但 LANG、LC_*、LC_ALL、LANGUAGE 谁覆盖谁经常踩坑。这篇按 man 7 locale 的解析顺序讲清优先级,给出 locale-gen、localectl 等启用步骤,并列出排序随环境变化、小数点逗号、容器缺 locale 报错等六个实战坑。
locale
Linux
i18n
环境变量
Shell
运维
GitHub Actions 依赖锁文件公开预览:gh actions-lock 锁住 action 的 commit,tag 移动也照跑
编程
GitHub Actions 依赖锁文件公开预览:gh actions-lock 锁住 action 的 commit,tag 移动也照跑
2026-10-15 01:19:18
GitHub Actions 工作流依赖锁文件进入 public preview:tag/branch 可移动的供应链风险、gh actions-lock 扩展生成的 actions.lock、Require lockfile 策略,以及 Dependabot 如何同步锁文件条目。
GitHubActions
CI
CD
供应链安全
gh
actions-lock
lockfile
LibrePhotos 部署:unified 单容器与 compose 拆分的取舍,以及 PG18 卷路径、CSRF 两个坑
编程
LibrePhotos 部署:unified 单容器与 compose 拆分的取舍,以及 PG18 卷路径、CSRF 两个坑
2026-10-15 00:04:45
LibrePhotos 自托管部署选型笔记:unified 单容器(SQLite/外部 PG)与标准 docker compose 拆分的取舍,含 SERVE_FRONTEND、DB_BACKEND、DB_HOST 指向,以及两个高频坑——PostgreSQL 18 数据目录从 /var/lib/postgresql/data 改为 /var/lib/postgresql,反代后必须设 CSRF_TRUSTED_ORIGINS 与 NUM_PROXIES。
LibrePhotos
自托管
Docker
PostgreSQL
Django
反代
运维
docker init / debug / scout:3 条塞进 CLI 的子命令,各自解决什么问题
编程
docker init / debug / scout:3 条塞进 CLI 的子命令,各自解决什么问题
2026-10-14 23:43:55
Docker 把脚手架生成、slim 容器调试、镜像漏洞/SBOM 三件事做成了 CLI 子命令。本文按官方文档过一遍 docker init(生成 .dockerignore/Dockerfile/compose.yaml 与各语言模板)、docker debug(自带 Nix toolbox、不修改镜像、entrypoint/install 内置工具、--command/--host)与 docker scout(quickview/cves/sbom/watch 等子命令),并点出各自的边界与坑。
新命令
Docker
容器
运维
命令行
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
287
下一页
共 287 页
到第
页
确定