屋里安静了一瞬。
楚戈张了张嘴,看了看手里的树状图,又看了看站在门口的陆嘉。
陈拙坐在椅子上,看着这个主动跑上门的室友。
无奈的叹了口气。
陈拙索性站起身,顺手把王大勇桌前的一把空椅子拉了过来,放在自己书桌旁边。
他拿起桌上的暖壶给杯子里倒了一杯热水。
陈拙把水杯放在桌角。
「既然脑子里停不下来,就坐下把它算完吧。」
陈拙看着陆嘉,声音很淡定。
毕竟自己可算是相当有经验了。
「算完了,心就静了。」
陆嘉站在门口,手里还死死攥着那几张草稿纸。
他看了看陈拙。
又看了看旁边没吭声的楚戈,和蹲在地上满头大汗的王大勇。
他挪动脚步,走了过来。
在椅子上坐下。
水杯里的热气扑在脸上,让他原本紧绷的神经稍微松缓了一点点。
陆嘉拿起笔。
没有废话,也没有再抱怨一句。
他低着头,笔尖落在那几张草稿纸的空白处,沙沙的摩擦声在215宿舍里响了起来。
楚戈看着这一幕,默默地转过身。
他把陈拙画的那张倒树状图平铺在键盘旁边。
手指重新搭在键帽上。
王大勇蹲在地上,伸手调整了一下小吊扇的角度,让风能更均匀地吹过主板上的散热铝片。「我这风扇是改过线圈的,风力大。」
王大勇压低声音,对楚戈说。
「你尽管跑数据,温度要是能烧了,我把这主板吃了。」
楚戈没擡头,只是嗯了一声。
键盘的敲击声再次响了起来。
这一次,没有了之前的暴躁和急促,而是变成了一种规律,平稳的节奏。
陈拙坐回自己的位置。
他翻开那本列印出来的英文文献,拿起钢笔。
屋里只有风扇的呼呼声,键盘的敲击声,还有陆嘉笔尖划过纸面的声音。
偶尔,楚戈会停下来。
「陈拙。」楚戈盯着屏幕,眉头皱着,「逆向拓扑走到第二层,数据接口变窄了,溢出怎麽算?」陈拙头也没擡,看着眼前的文献。
「别算溢出,直接做个空指针,把溢出的数据扔进缓存池,让底层的循环自己去捡。」
楚戈愣了两秒,手在键盘上飞快地鼓了几行代码。
「通了。」
楚戈没再说话,继续往下敲。
过了一会儿,陆嘉手里的笔停了。
他把一张写得密密麻麻的纸推到楚戈手边。
「半衰期变量。」陆嘉的声音还是有点沙哑,「代进去,右旋极值就不会撞了。」
楚戈扫了一眼。
「谢谢。」
手指在键盘上飞舞,把那串公式转化成C语言的逻辑语句。
时间一点点过去。
窗外的夜色越来越深。
两点。
四点。
陈拙看完了手里那份十几页的预印本论文。
他把笔帽合上,揉了揉有些发酸的眼睛。
转头看了一眼。
王大勇已经靠在床架子上睡着了,呼噜声打得震天响,手里还捏着一把小螺丝刀。
陆嘉趴在桌子上。
他面前的草稿纸上写满了公式。
他闭着眼睛,呼吸均匀绵长。
那个把他折磨了一晚上的心结解开了,他终於睡着了。
楚戈还坐在电脑前。
他嘴里叼着一根棒棒糖,双眼布满血丝,死死盯着屏幕上的进度条。
陈拙站起身,倒了杯水。
「还有多少?」
「快了。」楚戈的声音哑得厉害,「最後一次全量编译。」
机箱里的风扇在疯狂转动。
屏幕上的漏斗图标转了足足一分钟。
「叮。」
系统发出一声清脆的提示音。
一个小窗口弹了出来。
楚戈拿下嘴里的棒棒糖,手指微微有些发抖,鼓下了回车键。
黑色的命令窗口里,绿色的数据流像瀑布一样倾泻而下。
顺畅。
没有任何卡顿。
一万条。
五万条。
十万条。
最终,光标停留在最後一行。
检索完成,总耗时2.3秒。
比雇主的要求还快了整整一倍。
楚戈靠在椅子上,长长地吐出一口气。
他没喊也没叫。
只是疲惫地搓了搓脸。
「跑通了。」
楚戈转过头,看着陈拙,扯起嘴角笑了一下。
陈拙点点头,喝了口水。
「把测试包打包发过去吧,收钱睡觉。」
楚戈按了几下滑鼠,把生成好的程序文件压缩。
他点开那个黑客论坛的私信界面,准备给对方发过去。
就在这时,对方的头像闪了起来。
发来了一个十几兆的压缩包。
紧接着是一条留言:
【兄弟,代码如果跑通了,顺手帮个忙。这是我们网站初期的两万条原始图片数据标签,你用你的新程序跑一遍,把里面的乱码和错误标签筛出来,跑完没问题,一千五百块钱我立刻打你卡上。】
楚戈愣了一下。
他点开那个压缩包,解压。
打开里面的文本文档。
只看了一眼,楚戈的脸就黑了。
密密麻麻的文本,几百页。
里面全是不规则的数据。
有些是正常的中文标签风景,人物。
有些是乱码%amp;:*#¥。
还有些是拚写错误的英文单词,甚至是半角全角混杂的标点符号。
这根本不是程式设计师写出来的东西,而是那些不懂电脑的文员,用各种千奇百怪的输入法手动录入的原始垃圾。「怎麽了?」
陈拙看出了楚戈的不对劲。
楚戈指着屏幕上的那堆乱码。
「对方让拿这些原始数据跑一次测试。」
楚戈头疼地揉了揉太阳穴。
「这活儿没法干,这数据太脏了,里面全是不符合任何逻辑规律的人为输入错误。」
陈拙走过去,看了一眼屏幕。
「写个正则筛除脚本不行麽?」
「不行。」
楚戈摇头。
「正则表达式只能抓取有规律的东西,你看这行,他把苹果打成了pinguo,旁边还跟了个火星文,这种东西一进底层逻辑,程序立马就会判定为异常变量,直接卡死。」
楚戈咬着牙。
「这帮孙子,自己不愿意花时间去清理这些垃圾数据,想用一千五百块钱让我连代码带清洗全包了。」旁边,陆嘉被楚戈的说话声吵醒了。
他迷迷糊糊地直起身子。
看了一眼屏幕上的那些东西。
「这没有数学规律。」
陆嘉看了一眼就得出了结论,声音带着刚睡醒的沙哑。
「代数方程解不了无序的错误。」
屋里安静下来。
楚戈靠在椅子上,看着屏幕上的两万条数据,有些泄气。
熬了一整夜,脑子都快炸了。
就差这临门一脚。
「要不....我明天写个稍微复杂的脚本,多加几个条件判断,能筛多少是多少?」
楚戈自己都没底气。
这种脏活儿,用代码去防人为的愚蠢,是最费力不讨好的。
陈拙看着屏幕上不断滚动的乱码。
他伸手拿过滑鼠,往下拉了几页。
「不用写脚本。」陈拙松开滑鼠,「机器分不清这种无规律的错误,但人眼分得清。」
楚戈愣了。
「这两万条,纯靠人眼看?那得看到什麽时候去?」
「一个人看两万条当然慢。」
陈拙走到自己的书包前,拿出一张崭新的空白软盘,插进楚戈电脑的软碟机里。
陈拙把那个装满原始数据的文本文档拖了进去。
拔出软盘,装进口袋里。
他看了一眼楚戈,又看了一眼揉着眼睛的陆嘉。
「这活儿交给我吧。」
陈拙走到窗前,拉开一点窗帘。
外面的天已经蒙蒙亮了。
「今天早上正好没课,你俩把电脑关了,回去睡觉。」
陈拙转过身。
「明天晚上,我把乾净的数据带回来,你直接跑程序交差。」
楚戈张了张嘴,想问陈拙去哪找人看这两万条数据。
但看着陈拙那副淡定的样子,他把话咽了回去。
「行。」
楚戈也是真熬不住了。
他关了电脑。
把满桌子的草稿纸收拢起来,塞进兜里。
拍了拍还在打呼噜的王大勇。
大勇迷迷糊糊地醒过来,抹了一把嘴角的口水。
「跑完了?」
「跑完了,睡吧。」
楚戈站起身,伸了个懒腰。
他看了一眼陈拙,没多说客套话。
「谢了。」
楚戈带着陆嘉,走出了215的门。
上午十点。
科大老图书馆。
阳光透过常春藤的叶子,在木地板上投下斑驳的光影。
借阅前没什麽人。
苏微正坐在一张高脚凳上。
手里拿着一本有些年头的线装书,正在仔细地修补脱落的书页。
陈拙走过来,把手里的软盘放在木制面上。
发出轻轻的一声响。
苏微擡起头。
目光落在那个软盘上,又看向陈拙。
「借书卡?」苏微问。
「不借书。」
陈拙拉过旁边的一张椅子坐下,隔着借阅看着她。
「找你帮个忙,赚点外快。」
苏微放下手里的线装书和胶水,拿过旁边的一块干毛巾擦了擦手。
「说。」
「这个软盘里,有两万条杂乱的文本数据。」
陈拙指了指那个黑色的塑料方块。
「里面全是人为录入的标签,有很多拚写错误,乱码和无意义的符号。」
他看着苏微的眼睛。
「机器的算法剔除不了这种没有逻辑规律的脏数据,需要人工一行一行地看,把有错误的行删掉,保留格式正确的。」苏微看着那个软盘,没说话,在心里评估工作量。
「两万条,如果速度快,大概明天。」
陈拙语气平缓。
「明天下午六点之前给我,五十块钱。」
苏微伸手拿过那个软盘。
翻看了一下背面。
「你们这算什麽?外包的外包?」
苏微嘴角微微动了一下。
陈拙笑了笑。
「算是吧,草班子遇到点算力解决不了的体力活。」
苏微把软盘放进自己马甲的口袋里。
「这活儿我接了,但图书馆的电脑不能乱插软盘,我得晚上回宿舍,借室友的电脑看。」
「可以,明天下午我来拿。」
陈拙站起身,准备走。
「等等。」
苏微叫住他。
陈拙回过头。
「如果是文本文档,这两万条数据全是连在一起的。」
苏微看着他。
「我之前在相关的书里看过一点这些,我删掉一行,怎麽保证你们导入的时候,行数对应的图片不串位?」陈拙看着苏微,眼底闪过一丝惊叹。
这姑娘不仅手脚麻利,脑子更是极其清楚。
「我在那个文本里,已经写了一段宏。」
陈拙回答。
「你不用直接删文字,遇到有乱码的那一行,你只需要在最前面敲一个数字0,遇到正常的,敲1。」他稍微停顿了一下。
「格式我会回去重新匹配,你只负责分辨对错就行。」
苏微点了点头。
「明白了,明天下午六点,来这儿找我。」
她重新拿起胶水,低头继续修补那本线装书。
第二天傍晚。
陈拙准时出现在老图书馆。
苏微把软盘推给他。
眼底下有淡淡的黑眼圈,显然昨晚熬了夜。
「弄完了,一共删了三千四百一十二条脏数据。」
苏微的声音有些疲惫,但依然乾脆。
陈拙拿过软盘,从兜里掏出一张五十块的纸币,放在桌上。
「辛苦。」
苏微把钱收起来,放进抽屉里。
「钱货两清。」
当天晚上。
216宿舍。
楚戈把陈拙拿回来的软盘插进电脑。
读取出那个被苏微标记过的数据文本。
他写了个最简单的读取脚本,只抓取开头标记为1的数据。
几秒钟後。
一万六千多条乾乾净净、没有任何乱码的测试数据被提取出来。
楚戈把这些数据导入那个跑通了的底层程序。
回车。
屏幕上的数据流疯狂滚动。
没有任何报错。
没有任何卡顿。
一气嗬成。
楚戈长长地出了一口气。
他把最终的程序包和测试结果打包,发给了论坛上的那个雇主。
半个小时後。
对方回复了信息。
【牛逼,速度比我们预期的还快,卡号发来,马上打款。】
楚戈靠在椅子上。
他转过头,看着正站在自己旁边的陈拙,又看了一眼正在看书的陆嘉。
他咧嘴笑了。
「搞定了。」
周末的晚上。
科大南门外的一家露天烧烤摊。
夜风吹得旁边的叶子哗啦啦响。
摊位上冒着浓烈的炭火烟气和烤羊肉的孜然味。
靠路边的一张摺叠圆桌旁。
坐着五个人。
楚戈,陈拙,王大勇,陆嘉,还有被陈拙叫出来的苏微。
桌上摆着两大盘烤肉串,几盘凉菜。
苏微面前放着一瓶健力宝,她今天没穿图书馆的马甲,换了一件普通的黑色外套,安静地坐在一边喝饮料。陆嘉对这种烟燻火燎的环境很不适应。
他皱着眉头,拿着一串烤肉,看着签子上面沾着的一点黑炭灰,迟迟没有下嘴。
楚戈起开两瓶加多宝,递给大勇一瓶,自己拿了一瓶。
「来,走一个。」
楚戈跟大勇碰了一下,仰头灌了一大口。
他放下饮料,用手背抹了一把嘴巴。
从兜里掏出一个厚厚的信封。
里面装的,是从自动取款机里取出来的一千五百块钱现金。
全是崭新的一百元面额。
在2002年,这绝对是一笔能让大学生眼红的巨款。
楚戈把信封放在桌上。
他收起了平时那副桀螯不驯的样子。
在这个小圈子里,技术碾压一切,他知道自己几斤几两。
「这笔钱,我接单的时候没想那麽多。」
楚戈看着陈拙,语气认真。
「如果不是你的那个架构,还有陆嘉的公式,这单子我绝对得砸在手里。」
他直接拉开信封,开始数钱。
动作极其乾脆,没有任何拖泥带水。
他抽出六张一百的,放在陈拙面前。
「陈拙,你搭的宏观框架,这程序的骨头是你捏的,拿大头。」
陈拙看着面前的六百块钱。
没有推辞,也没有说那些虚伪的客套话。
他很自然地伸手拿起来,放进自己的口袋里。
「好。」
楚戈又抽出四张一百的,推到陆嘉面前。
陆嘉愣了一下,看着那些钱。
「你的数学逻辑帮我解了死结。」楚戈看着他,「这是你应得的。」
陆嘉皱着眉头。
「我不要。」
他的声音很小,带着他一贯的轴劲。
「我给你写那个,不是为了钱,我只是觉得它错了,必须把它改对。」
楚戈拿着钱的手僵在半空。
他知道这小子的脾气,逼他拿钱比杀了他还难。
陈拙在旁边夹了一口凉菜,慢条斯理地开口了。
「拿着吧。」
陈拙看着陆嘉,语气温和。
「这是你的知识在这个世界上运转出来的价值,知识是有价格的,你应该习惯这件事。」
陆嘉看了看陈拙。
他沉默了一会儿。
伸手把那四百块钱拿了过来,随便揣进了兜里。
楚戈松了口气。
他又抽出两张一百的,递给正在埋头吃肉的王大勇。
「大勇,大半夜折腾你搞散热,还差点烧了你的插排,辛苦费。」
大勇憨厚地笑了笑。
也没客气,把钱接过来,塞进裤兜,继续啃手里的羊腿。
楚戈手里还剩下三百块。
他抽出其中一张五十的零钱,递给坐在对面的苏微。
「苏微同学,排雷的钱,陈拙掏了五十,这五十算我给你的。」
苏微看了一眼楚戈,又看了一眼陈拙。
没说话,把钱接过来收好。
楚戈手里捏着剩下的二百五十块钱。
他看了一眼手里的钱,忍不住骂了一句。
「靠,怎麽是个二百五。」
桌上几个人都愣了一下,随即大勇忍不住哈哈大笑起来。
连一直有点绷着脸的苏微,眼底也闪过一丝笑意。
楚戈无奈地摇了摇头,把钱揣起来。
「行了,各归各得,这顿烧烤我请。」
他拿起桌子上的加多宝。
「以後论坛上再有这种活儿,我应该还少不了接。」
楚戈看着桌上的几个人,眼神里透着一股极客的狂热。
「我鼓代码,陈拙搭架构,陆嘉算逻辑,大勇搞後勤,苏微同学搞校验,咱们这草班子,能在这大学里横着走。」陈拙没拿啤酒,他端起手边的水杯,跟楚戈碰了一下。
「不错的想法。」
陈拙喝了口水,放下杯子。
他转过头,看向正吃得满嘴流油的王大勇。
「大勇。」
「嗯?」大勇擡起头。
「周末有空的话,带我去一趟徽州的百脑汇。」
陈拙抽出一张餐巾纸,擦了擦手。
「去攒一新电脑。」
大勇一听这话,眼睛立马亮了。
「行啊!配个什麽级别的?奔腾4?显卡上什麽?还是就你之前说的那套配置?」
「主板和显卡都要市面上能买到的最好的一档。」
陈拙语气平静。
「硬碟要大,显示器要纯平的,看着舒服一点。」
楚戈在旁边听着,有点惊讶。
「配这种顶配的机子,那可得大几千了。」
「不心疼啊?」
陈拙笑了笑。
他看着不远处马路上昏黄的路灯。
「去机房存代码太折腾,而且教育网下国外的文献太慢。」
陈拙收回目光。
「工欲善其事,必先利其器,就当是买个工具吧。」
他稍微停顿了一下。
说出了今晚最重要的一句话。
「而且,我还需要你帮我买一私人雷射印表机。」
这句话一出,桌上除了早有心理准备的大勇,其他几个人都愣住了。
连苏微都停下了喝饮料的动作,看着陈拙。
「雷射印表机?」
楚戈都以为自己听错了。
「放宿舍里?你打什麽东西需要用那玩意儿?那耗材可不便宜。」
「列印国外的预印本论文。」
陈拙语气很淡,就像是在陈述一个极其普通的日常需求。
「那些外文文献太多,在电脑上看着伤眼睛,去外面的列印店,长年累月下来,不仅贵,而且麻烦。」他看着桌上的几个人。
「楚戈,以後论坛上再有这种底层优化的单子,你接着接,遇到绕不开的逻辑,来找我和陆嘉。」陈拙指了指刚才楚戈分钱的位置。
「规矩照旧,按劳分配,各赚各的钱。」
他拿起筷子,夹了一粒花生米。
「赚的钱,你拿去升级你的主板内存,大勇去淘他的二手零件,陆嘉自己攒着买书。」
陈拙看着自己兜里那六百块钱。
「至於我,国外的那些前沿论文又厚又费墨。」
他温和地笑了笑。
「我赚的这笔钱,刚好够我去买A4纸和备用碳粉盒的钱了。」
楚戈咧嘴笑了,他举起手里的加多宝。
「也行吧,你开心就好,为了A4纸和碳粉盒。」
大勇也举起杯子。
陆嘉犹豫了一下,端起面前的水杯。
苏微拿着健力宝。
陈拙端着水杯,跟他们碰在一起。