zhlifeiy · 工程笔记

把项目里的坑,写成可以复用的答案

导读

给自己的开源小项目 Obsidian Mobile Companion(Android 端,GitHub 同步 Markdown 仓库)做了一天的体验升级:图片全屏查看器(双指缩放 + 双击放大 + 同目录滑动切换)、AI 生成的整套品牌素材、插画空态、LazyColumn 性能收尾。真正的硬骨头有两个:手势缩放与 Pager 翻页的事件争夺,以及一个中文用户名引发的 Gradle 灵异 bug。

阅读全文 »

导读

9 月 14 日接连猎杀三个”慢”:巡更任务分页 5 秒卡死(三层根因叠加)、统一通知列表线上 1s+(真凶不在 SQL 层)、动环 CO 查询 21 秒(203 万行全表扫描)。外加一个番外:停车位”视频预览按钮消失”,看起来像后端挂了,其实是前端 null.length 把请求拦在了发出之前。四个案子共用同一套方法论,文末汇总。

阅读全文 »

导读

一天之内把钉钉公告功能堆到第三层:P1 同步落库、P2 统一列表合并、P3 全员物化 + 站内信触达 + 每小时定时同步。三轮外部 review 抓出的问题全部核实属实并修复;然后是本次最有价值的部分——生产上线排障实录,八个坑每个都真实发生。文末附一份可复用的上线部署清单。

阅读全文 »

导读

评测 AI 编程 agent 的方式有很多,最狠的一种是:把一个真实功能从需求澄清到生产上线的完整一天交给它。本文以”访客设备列表接真实接口”为样本——这个任务罕见地覆盖了数据普查、方案对齐、全栈开发、多层验证、外部评审处置、合并推送、生产库操作、发布物料的完整生命周期,因此能比较全面地观察 agent 在真实工程项目里的协作表现。结论先行:适合做全周期工程协作者,但有三道人工关卡必须保留。

阅读全文 »

导读

一个纯 mock 的演示页面要接成真实接口。动手前先做数据普查——确认全系统真的没有访客设备表;然后设计”实体 + 事件”两张新表,用 9+1 的造数结构让”在线时长”不需要定时任务就能自然增长;最后外部 review 抓出四个 P2,其中一个 OGNL Date 坑在老代码里还埋着同款雷。

阅读全文 »

导读

演示环境要拿给客户看,面前两只拦路虎:页面上没有成规模的历史数据,也没有一个”能看全部但什么都不许动”的演示账号。9 月 8 日一天解决掉两只——造数 176 条(44 条监控申请 + 132 条回放申请)直接写进线上库,同时落地一个精确到四个”查看”能力的 demo 角色。本篇记录造数的安全网四件套、五表闭环模型,以及角色决策里那个被知情接受的副作用。

阅读全文 »

Phase 5 让手机能写回 GitHub 之后,「黑曜石移动端」还剩最后一段链路:PC 侧的 Obsidian vault 改动要靠手动 git 操作才能上去,手机端也不知道什么时候该刷新。Phase 6 分两半解决——6A 做 PC 端 vaultsync 自动同步守护进程,6B 做 Android 刷新可靠性。同日完成开发、主 Agent 审查、修复与提交,PC↔GitHub↔Android 三端链路全部打通。

阅读全文 »

「黑曜石移动端」是我做的 Obsidian 知识库 Android 伴侣:GitHub 私有仓库是唯一真相源,手机端 Kotlin + Compose 负责阅读——之前四个阶段都只读。Phase 5 的目标是让手机第一次真正写回 GitHub:编辑已有 Markdown、安全保存、处理好冲突。开发、真机验证、文档、提交同日完成,这篇记录全过程。

阅读全文 »

「每日单词」是我用 Kotlin + Jetpack Compose + Room + 系统 TTS 做的 Android 单词学习 App:内置 500 个基础词,每天固定学 20 个新词,配合间隔复习和连续天数打卡。9 月 1 日到 9 月 6 日,我通过和 AI 编码助手的两场对话完成了第四个迭代——20 词总览学习模式。这篇记录两场对话的分工、关键设计取舍和踩过的坑。

阅读全文 »

导读

上级要看会议室同步时钉钉返回的完整原始数据——不做任何加工。需求一句话就说完了,真正的功夫在五个关键决策上,其中一个是对”自作聪明”方案的否决。落表之后还有个意外发现:钉钉返回的会议室比业务表多出 58 间,而原始快照表成了唯一的裁判。

阅读全文 »
0%