第6章 她在代码里
作品:《 反派系统不许我当好人》中午,林默在食堂点了牛肉面,加蛋,加小菜,一共十八块。
上午那八千块还躺在银行卡里。他本来只想点一碗面,手指在加蛋上停了半秒,还是按了下去。
离开实验楼前,他把找群演的平台和订单翻给苏晚晴看。出事前,照片和路线只发进了那个临时群。可问到为什么偏偏选她,他没能答上来。右臂也只肯说,昨晚有一阵动不了,现在还会麻。
她看了他一会儿:“说不清的留着。别再拿睡麻了糊弄我。”
他答应了。
端碗时,右臂深处窜过一阵麻。汤撞上碗沿,烫红了虎口。他没松手,把碗放稳,等拇指重新能弯,才抽纸去擦。
手机就在这时亮了。
苏晚晴在论坛招一个会 Python 的数据清洗帮手。帖子列了七条要求:不能动原表,不能把不认识的值直接填空,不能用线上接口,明天四点前必须交。末尾还加了一句——如果只是学过两节课,不建议来。
附件里有十条脱敏样例。
林默只看了一遍就给她回信。
“这十条太干净。你是在筛人,不是在试代码。”
对话框上方很快出现“正在输入”,又消失。
过了十几秒,苏晚晴才回:“那你筛过了吗?”
“真正麻烦的在后面。”
“你没看见后面。”
“所以我说的是你的题,不是我的答案。”
这一次,她安静得更久。
“明天下午一点四十,南门外,光阴咖啡。迟到一分钟都不用来。”
“一点三十五见。”
第二天一点二十九,林默推开咖啡厅的玻璃门。
午后的白光从百叶窗缝里斜切进来,把窗边桌分成一明一暗两半。苏晚晴坐在暗处,电脑、移动硬盘和一叠打印纸摆得很齐。桌上摆了两杯拿铁。她那杯已经少了三分之一。
她抬眼看墙上的钟:“早了六分钟。”
“你早了多久?”
“不重要。”
杯底小票露出一点,一点零七。
林默在她对面坐下。两只杯子的影子被百叶窗切成细条,中间隔着一台还没解锁的电脑。
苏晚晴没有立刻把电脑推给他。
“帖子里写得不全。”她说,“一万八千行,三个来源,两次格式改版。有人把缺失值写成空白,有人写横线,还有人填‘不知道’。三个人做标注,标准改过一次,但没人记得从哪一行开始。”
“交付是什么?”
“三点远程演示。我要一份能跑的结果、一份异常清单,还要保证原表一行不少。”
林默看了一眼右下角时间。
离演示还有七十二分钟。
“还有呢?”他问。
苏晚晴终于把电脑转过来:“处理数据不能调用线上接口,不能装新库,也不能动原表。”
“够了。”
“我还没说完。”
磨豆机骤然轰响,把她后半句话吞了。
吧台旁有人拖行李箱,滚轮一下一下磕过地砖;靠门的两个学生正在背辩论稿,每一句都比上一句更响。苏晚晴等磨豆机停下,才继续。
“这台电脑内存不够。全量读入会卡死。移动硬盘偶尔断连。最麻烦的是,我不确定合作方发来的是不是最终版。”
她把手按在电脑边缘,没有松开。
“如果你只是想试试,现在走还来得及。我自己做,至少知道会错在哪里。”
林默笑了。
“你笑什么?”
“你花了二十二分钟等一个可能会走的人。”
苏晚晴的眉梢压低了一点:“也可能是在确认他值不值得我浪费下一分钟。”
“给我八分钟。八分钟后你再决定要不要赶我走。”
她看了他两秒,松开电脑:“开始。”
林默没有先打开最大的文件。他先扫了文件头和末尾,又各抽了三小段。
苏晚晴看着屏幕:“不跑全量?”
“先看它会怎么坏。”
“抽样可能漏掉中间的问题。”
“所以不是只抽中间。”
“这算回答?”
“四十秒后算。”
四十七秒后,三种换行符被他分别圈了出来,其中一种只出现在第二次改版之后。全量载入还没开始,格式断点已经有了位置。
苏晚晴第一次把椅子往他这边挪了半寸。
“四十七秒。”她提醒。
“多出来的七秒,算利息。”
“口气不小。”
“题比口气小。”
她没笑,把移动硬盘接上。
列表弹出来时,两个人同时停住。
她点开的压缩包里,少了最关键的一份映射表。
“合作方漏发了。”苏晚晴拿起手机,“我催。”
“先别催。”
“没有它,旧值和新值对不上。”
“索引文件什么时候生成的?”
“昨天晚上。”
“压缩包呢?”
“前天下午。”
林默把两个时间并排拉到屏幕上:“不是丢了,是你拿到的包比索引早一版。”
苏晚晴的拇指停在拨号键上。
“你怎么确定新表不是后来误加的?”
“不确定。”林默指了指打印纸角落的一串版本号,“但你打印的字段说明属于新版。先按两种版本分别跑,三分钟后看哪一个能解释断点。”
“同时跑会更慢。”
“等对方接电话更慢。”
她把手机放回桌面:“三分钟。”
窗外忽然暗了一层。雨点先稀疏地落在遮阳棚上,几秒后连成一片。百叶窗上的白光被打碎,细小的水影晃进屏幕。
两分二十秒,新版路径停在同一行报错;旧版路径继续向下。
苏晚晴没有说“对了”,只把手机彻底推远。
第一轮清理到四千行时,数字突然少了八百多。
她的手立刻压住触控板:“停。”
林默停了。
“你刚才删了八百多行。”
“我没删。我把重复出现的行号放到了旁边。”
“重复也可能是不同人的同一句话。”
“所以我比的是来源、时间和上下文,不是句子。”
“你判断错一项,就会把真的一起丢出去。”
“撤回键在你手边。”
苏晚晴盯着他:“你这是让我赌?”
“让你查。”
他点开第一组。两条记录的句子一样,来源一样,时间只差零点一秒,连上一个错别字都一样。第二组来自不同楼层,被保留。第三组缺了时间,也被保留。
“我没删。我把重复出现的八百三十一行移进复核区,原表还在。”
苏晚晴逐项对过三组,手指离开了撤回键。
“继续。”
这一次,是她先说的。
雨声越来越密。门口不断有人进来避雨,湿伞碰到椅背,水滴沿地砖一路拖到桌边。咖啡厅的背景音乐、磨豆机和人声挤在一起,像三个互不相让的频道。
