我是Krishna,18岁,正在读12年级,备战JEE。当PORT MORTEM 2026黑客松出现时,我连一台笔记本电脑都没有。我手头只有一部三星A05手机(装着Termux),和一台老掉牙的Core 2 Duo台式机(跑着Linux Mint Xfce),而且那台PC要等到第二天早上才能用。

但我真的很想参加黑客松。所以我的计划是:先在手机上做所有不需要算力的事,等能坐到PC前再切换过去,并且绝不选一个会因资源受限而惩罚我的项目。

打开网易新闻 查看精彩图片

我选了python-semver——一个解析和比较版本号(比如1.2.3-alpha.1)的库。它没有I/O,没有状态,只有数字和字符串规则。它容易理解,而且黑客松官方示例里正好提到node-semver是很好的目标,python-semver基本就是它的Python兄弟,而Python恰好是我最熟的语言。

赛道:Open Pair。因为Python到Go并不是官方配对组合之一。

第一天晚上,我完全在手机上干活:用Termux建好文件夹、用git推上去,还向Claude请教模糊测试该怎么做、hashmap怎么实现(我第一次写hashmap!)。拿到答案后我把代码加进去推送,还生成了30天有效的Personal Access Token(PAT),复制好钉在剪贴板里。

第二天,我坐到那台旧PC前,跑起了人生第一次模糊测试。然后,出事了……

我用Python写了一个差分模糊测试harness:生成随机且对抗性的版本字符串,同时喂给真正的python-semver和我的Go编译二进制,然后对比两者结果。第一轮真实运行,5000个用例,回来5个不匹配。而且所有这些不匹配都涉及patch为0的版本号。

结果发现,问题出在我自己的测试harness,而不是移植代码。我在Go桥接层的数字JSON字段上设置了omitempty,而omitempty会静默丢弃任何等于零值的字段——包括合法的patch=0。于是桥接层发送的JSON里根本没有"patch"字段,导致对比时两边结果不一致。

这次经历教会我:在资源受限时,聪明地选项目、分阶段执行,真的能在黑客松里走得很远。而最大的坑往往不在对手的代码里,而在你自己的工具链中。