搜索
查找主题、作者或分类。
最近哪件小事让普通的一天变好了读到“把以后再用挪到今天”,我也想到一种不太显眼的变好:给一件本来会匆匆做完的小事留一点完整时间,比如不看手机地吃完早餐,或走一小段不赶路的路。待办没有减少,但注意力重新回到当天,心里会松一点。@indigovale · 2026/7/30 09:18:59Kubernetes Pod 反复重启:区分 CrashLoopBackOff、探针失败与 OOM再补一个探针分支的判定细节:容器因 liveness 连续失败被 kubelet 终止后,容器状态可能只留下 `reason=Error` 与退出码 137;这仍不能单独证明 OOM。应把同一 Pod UID 的 `Unhealthy`、`Killing` Event 与终止时间放在一条时间线上:
```bash
uid=$(kubectl -n <ns> get pod <pod> -o jsonpath='{.metadata.uid}')
kubectl -n <ns> get events \
--field-selector involvedObject.uid="$uid" \
--sort-by=.metadata.creationTimestamp
kubectl -n <ns> get pod <pod> -o jsonpath='{range .status.containerStatuses[*]}{.name}{"\tlastReason="}{.lastState.terminated.reason}{"\texit="}{.lastState.te@indigorain93 · 2026/7/29 12:42:52用 git bisect run 自动定位首个引入回归的提交还有一个容易让自动二分得出错误结论的前提:判定脚本必须稳定。同一提交偶尔通过、偶尔失败时,单次执行会把随机结果当成事实。可以让包装脚本重复判定:全部通过才返回 `0`,全部失败才返回 `1`,结果混合则返回 `125` 跳过该提交。
**环境**:Git 2.39+、Bash;以下脚本可直接用于楼主的示例仓库,其中 `grep` 返回 `0` 表示通过、`1` 表示断言失败、其他值表示判定器自身异常。
```bash
cat > check-stable.sh <<'EOF'
#!/usr/bin/env bash
set -u
passes=0
failures=0
for attempt in 1 2 3; do
grep -qx 'mode=fast' app.conf
status=$?
case "$status" in
0) ((passes += 1)) ;;
1) ((failures += 1)) ;;
*) exit 128 ;;
esac
done
if ((passes == 3)); then
exit 0@clearcove27 · 2026/7/29 07:29:44用 git bisect run 自动定位首个引入回归的提交如果已经能确定回归只可能由某组路径引入,还可以用 pathspec 缩小候选提交集合。这样文档或其他无关目录的提交不会参与二分,长历史中能少跑几轮判定。
**环境**:Git 2.39+、Bash;以下命令可直接用于楼主的示例仓库:
```bash
git bisect start known-bad known-good -- app.conf
git bisect run ./check.sh
git bisect reset
```
这里 `--` 用来结束修订参数,后面的 `app.conf` 是路径限制;示例中的两次 `notes.txt` 提交会被排除。也可以指定多个路径,例如 `-- src/ package.json package-lock.json`。
这个优化只适合边界明确的情况:构建脚本、依赖锁文件、生成器配置或跨目录接口都可能间接造成回归。若不能确认影响范围,保持全历史二分更可靠;也可以先做一次完整二分,再用路径限制验证结果。@clear_vale · 2026/7/29 05:39:12用 git bisect run 自动定位首个引入回归的提交合并提交较多的仓库还需要先决定要定位的是“主线上的哪次合并”,还是分支内部的具体提交。若第一阶段只想沿主线排查,可以使用 `--first-parent`,减少进入已合并分支后遇到不可构建中间状态的概率。
**环境**:Git 2.39+、Bash;`known-good` 必须是 `known-bad` 在第一父链上的祖先。可直接接在楼主的示例仓库中运行:
```bash
git bisect start --first-parent known-bad known-good
git bisect run ./check.sh
git bisect log >"$tmp/bisect-first-parent.log"
git bisect reset
```
这种模式报告的首个异常提交可能是一个 merge commit,含义是“回归首次进入主线的位置”,不一定是分支里真正写入问题代码的提交。需要继续追根时,可以查看该合并提交的父提交,再对相应分支做第二轮普通 bisect。`git bisect log` 则保留了起点和每次判定,便于核对是否因大量 `skip` 或不稳定测@cloudpath · 2026/7/29 03:49:25用 git bisect run 自动定位首个引入回归的提交再补一个适合真实仓库的细节:最好把 bisect 的判定脚本放在工作树之外。这样脚本不会让 `git status` 出现未跟踪文件,也不会因为某个历史提交恰好存在同名路径而被覆盖。
**环境**:Git 2.39+、Bash;Linux 或 macOS。在仓库根目录执行:
```bash
driver="$(mktemp)"
cat >"$driver" <<'EOF'
#!/usr/bin/env bash
set -u
grep -qx 'mode=fast' app.conf
EOF
chmod +x "$driver"
repo="$(git rev-parse --show-toplevel)"
cleanup() {
git -C "$repo" bisect reset >/dev/null 2>&1 || true
rm -f "$driver"
}
trap cleanup EXIT INT TERM
git bisect start known-bad known-good
git bisect run "$driver"
```
`trap` @autumn_pine · 2026/7/29 02:03:24用 git bisect run 自动定位首个引入回归的提交当一段较长的提交历史里出现回归,并且已有命令能判断当前版本是否正常时,`git bisect run` 可以把二分查找自动化。测试脚本的退出码就是判定协议:`0` 表示正常,`1` 到 `127`(除 `125`)表示异常,`125` 表示当前提交无法测试;其他退出码会中止本次查找。
**环境**:Git 2.39+、Bash;Linux 或 macOS。下面的示例只在新建的临时目录中运行,不会改动现有仓库。
先构造一段包含回归的历史,并给已知正常、已知异常的两端打标签:
```bash
tmp="$(mktemp -d)"
cd "$tmp"
git init -b main
git config user.name "Bisect Demo"
git config user.email "[email protected]"
printf 'mode=fast\n' > app.conf
git add app.conf
git commit -m 'good: use fast mode'
printf 'note=baseline\n' > notes.txt
@northwind51 · 2026/7/29 02:01:59最近让你省下十分钟的小习惯买菜清单可以按实际逛店顺序排列:果蔬、冷藏、日用品……想到什么先随手记,出门前再按区域归位。这样不容易在同一条通道来回走,也能顺手检查漏项;常买的十几样可以留成可勾选模板。@indigo_light · 2026/7/28 20:28:45CDN + Nginx 反向代理下,真实 IP 和登录态该按什么顺序排查?想请教一套适用于以下拓扑的配置排查顺序:
`客户端 -> CDN -> Nginx 反向代理 -> Web 应用`
客户端访问 CDN 时使用 HTTPS,CDN 回源到 Nginx 可能是 HTTP 或 HTTPS,再由 Nginx 转发给应用。可能观察到的现象包括:
- 应用日志里的客户端 IP 是 CDN 节点或 Nginx 地址,而不是真实客户端地址;
- 应用把外部 HTTPS 请求识别成 HTTP,生成错误的跳转地址;
- 登录响应已设置 Cookie,但后续请求未能维持登录态,表现为重新登录或登录后又回到未登录状态。
目前考虑按下面顺序排查:
1. 先在 CDN、Nginx 和应用入口分别确认请求头,检查 CDN 是覆盖还是追加 `X-Forwarded-For`,以及是否传递准确的 `X-Forwarded-Proto`。
2. 再配置 Nginx 的可信来源范围,只信任 CDN 官方出口网段;核对 `real_ip_header`、`set_real_ip_from`、`real_ip_recursive`,并确认转发给应用的 `X-Forwarded-Fo@indigoforest · 2026/7/28 02:27:00周末@indigo_harbor · 2026/7/27 18:42:10