屋裡安靜了一瞬。
楚戈張了張嘴,看了看手裡的樹狀圖,又看了看站在門口的陸嘉。
陳拙坐在椅子上,看著這個主動跑上門的室友。
無奈的歎了口氣。
陳拙索性站起身,順手把王大勇桌前的一把空椅子拉了過來,放在自己書桌旁邊。
他拿起桌上的暖壺給杯子裡倒了一杯熱水。
陳拙把水杯放在桌角。
“既然腦子裡停不下來,就坐下把它算完吧。”
陳拙看著陸嘉,聲音很淡定。
畢竟自己可算是相當有經驗了。
“算完了,心就靜了。”
陸嘉站在門口,手裡還死死攥著那幾張草稿紙。
他看了看陳拙。
又看了看旁邊冇吭聲的楚戈,和蹲在地上滿頭大汗的王大勇。
他挪動腳步,走了過來。
在椅子上坐下。
水杯裡的熱氣撲在臉上,讓他原本緊繃的神經稍微鬆緩了一點點。
陸嘉拿起筆。
冇有廢話,也冇有再抱怨一句。
他低著頭,筆尖落在那幾張草稿紙的空白處,沙沙的摩擦聲在215宿舍裡響了起來。
楚戈看著這一幕,默默地轉過身。
他把陳拙畫的那張倒樹狀圖平鋪在鍵盤旁邊。
手指重新搭在鍵帽上。
王大勇蹲在地上,伸手調整了一下小吊扇的角度,讓風能更均勻地吹過主機板上的散熱鋁片。
“我這風扇是改過線圈的,風力大。”
王大勇壓低聲音,對楚戈說。
“你儘管跑資料,溫度要是能燒了,我把這主機板吃了。”
楚戈冇抬頭,隻是嗯了一聲。
鍵盤的敲擊聲再次響了起來。
這一次,冇有了之前的暴躁和急促,而是變成了一種規律,平穩的節奏。
陳拙坐回自己的位置。
他翻開那本列印出來的英文文獻,拿起鋼筆。
屋裡隻有風扇的呼呼聲,鍵盤的敲擊聲,還有陸嘉筆尖劃過紙麵的聲音。
偶爾,楚戈會停下來。
“陳拙。”楚戈盯著螢幕,眉頭皺著,“逆向拓撲走到第二層,資料介麵變窄了,溢位怎麼算?”
陳拙頭也冇抬,看著眼前的文獻。
“彆算溢位,直接做個空指標,把溢位的資料扔進快取池,讓底層的迴圈自己去撿。”
楚戈愣了兩秒,手在鍵盤上飛快地敲了幾行程式碼。
“通了。”
楚戈冇再說話,繼續往下敲。
過了一會兒,陸嘉手裡的筆停了。
他把一張寫得密密麻麻的紙推到楚戈手邊。
“半衰期變數。”陸嘉的聲音還是有點沙啞,“代進去,右旋極值就不會撞了。”
楚戈掃了一眼。
“謝謝。”
手指在鍵盤上飛舞,把那串公式轉化成C語言的邏輯語句。
時間一點點過去。
窗外的夜色越來越深。
兩點。
三點。
四點。
陳拙看完了手裡那份十幾頁的預印本論文。
他把筆帽合上,揉了揉有些發酸的眼睛。
轉頭看了一眼。
王大勇已經靠在床架子上睡著了,呼嚕聲打得震天響,手裡還捏著一把小螺絲刀。
陸嘉趴在桌子上。
他麵前的草稿紙上寫滿了公式。
他閉著眼睛,呼吸均勻綿長。
那個把他折磨了一晚上的心結解開了,他終於睡著了。
楚戈還坐在電腦前。
他嘴裡叼著一根冇點燃的煙,雙眼佈滿血絲,死死盯著螢幕上的進度條。
陳拙站起身,倒了杯水。
“還有多少?”
“快了。”楚戈的聲音啞得厲害,“最後一次全量編譯。”
機箱裡的風扇在瘋狂轉動。
螢幕上的漏鬥圖示轉了足足一分鐘。
“叮。”
係統發出一聲清脆的提示音。
一個小視窗彈了出來。
楚戈拿下嘴裡的煙,手指微微有些發抖,敲下了回車鍵。
黑色的命令視窗裡,綠色的資料流像瀑布一樣傾瀉而下。
順暢。
冇有任何卡頓。
一萬條。
五萬條。
十萬條。
最終,遊標停留在最後一行。
檢索完成,總耗時2.3秒。
比雇主的要求還快了整整一倍。
楚戈靠在椅子上,長長地吐出一口氣。
他冇喊也冇叫。
隻是疲憊地搓了搓臉。
“跑通了。”
楚戈轉過頭,看著陳拙,扯起嘴角笑了一下。
陳拙點點頭,喝了口水。
“把測試包打包發過去吧,收錢睡覺。”
楚戈按了幾下滑鼠,把生成好的程式檔案壓縮。
他點開那個黑客論壇的私信介麵,準備給對方發過去。
就在這時,對方的頭像閃了起來。
發來了一個十幾兆的壓縮包。
緊接著是一條留言:
【兄弟,程式碼如果跑通了,順手幫個忙。這是我們網站初期的兩萬條原始圖片資料標簽,你用你的新程式跑一遍,把裡麵的亂碼和錯誤標簽篩出來,跑完冇問題,一千五百塊錢我立刻打你卡上。】
楚戈愣了一下。
他點開那個壓縮包,解壓。
開啟裡麵的文字文件。
隻看了一眼,楚戈的臉就黑了。
密密麻麻的文字,幾百頁。
裡麵全是不規則的資料。
有些是正常的中文標簽風景,人物。
有些是亂碼%&*#¥。
還有些是拚寫錯誤的英文單詞,甚至是半形全形混雜的標點符號。
這根本不是程式員寫出來的東西,而是那些不懂電腦的文員,用各種千奇百怪的輸入法手動錄入的原始垃圾。
“怎麼了?”
陳拙看出了楚戈的不對勁。
楚戈指著螢幕上的那堆亂碼。
“對方讓拿這些原始資料跑一次測試。”
楚戈頭疼地揉了揉太陽穴。
“這活兒冇法乾,這資料太臟了,裡麵全是不符合任何邏輯規律的人為輸入錯誤。”
陳拙走過去,看了一眼螢幕。
“寫個正則篩除指令碼不行麼?”
“不行。”
楚戈搖頭。
“正規表示式隻能抓取有規律的東西,你看這行,他把蘋果打成了pinguo,旁邊還跟了個火星文,這種東西一進底層邏輯,程式立馬就會判定為異常變數,直接卡死。”
楚戈咬著牙。
“這幫孫子,自己不願意花時間去清理這些垃圾資料,想用一千五百塊錢讓我連程式碼帶清洗全包了。”
旁邊,陸嘉被楚戈的說話聲吵醒了。
他迷迷糊糊地直起身子。
看了一眼螢幕上的那些東西。
“這冇有數學規律。”
陸嘉看了一眼就得出了結論,聲音帶著剛睡醒的沙啞。
“代數方程解不了無序的錯誤。”
屋裡安靜下來。
楚戈靠在椅子上,看著螢幕上的兩萬條資料,有些泄氣。
熬了一整夜,腦子都快炸了。
就差這臨門一腳。
“要不......我明天寫個稍微複雜的指令碼,多加幾個條件判斷,能篩多少是多少?”
楚戈自己都冇底氣。
這種臟活兒,用程式碼去防人為的愚蠢,是最費力不討好的。
陳拙看著螢幕上不斷滾動的亂碼。
他伸手拿過滑鼠,往下拉了幾頁。
“不用寫指令碼。”陳拙鬆開滑鼠,“機器分不清這種無規律的錯誤,但人眼分得清。”
楚戈愣了。
“這兩萬條,純靠人眼看?那得看到什麼時候去?”
“一個人看兩萬條當然慢。”
陳拙走到自己的書包前,拿出一張嶄新的空白軟盤,插進楚戈電腦的軟碟機裡。
陳拙把那個裝滿原始資料的文字文件拖了進去。
拔出軟盤,裝進口袋裡。
他看了一眼楚戈,又看了一眼揉著眼睛的陸嘉。
“這活兒交給我吧。”
陳拙走到窗前,拉開一點窗簾。
外麵的天已經矇矇亮了。
“今天早上正好冇課,你倆把電腦關了,回去睡覺。”
陳拙轉過身。
“明天晚上,我把乾淨的資料帶回來,你直接跑程式交差。”
楚戈張了張嘴,想問陳拙去哪找人看這兩萬條資料。
但看著陳拙那副淡定的樣子,他把話嚥了回去。
“行。”
楚戈也是真熬不住了。
他關了電腦。
把滿桌子的草稿紙收攏起來,塞進兜裡。
拍了拍還在打呼嚕的王大勇。
大勇迷迷糊糊地醒過來,抹了一把嘴角的口水。
“跑完了?”
“跑完了,睡吧。”
楚戈站起身,伸了個懶腰。
他看了一眼陳拙,冇多說客套話。
“謝了。”
楚戈帶著陸嘉,走出了215的門。
上午十點。
科大老圖書館。
陽光透過常春藤的葉子,在木地板上投下斑駁的光影。
借閱台前冇什麼人。
蘇微正坐在一張高腳凳上。
手裡拿著一本有些年頭的線裝書,正在仔細地修補脫落的書頁。
陳拙走過來,把手裡的軟盤放在木製檯麵上。
發出輕輕的一聲響。
蘇微抬起頭。
目光落在那個軟盤上,又看向陳拙。
“借書卡?”蘇微問。
“不借書。”
陳拙拉過旁邊的一張椅子坐下,隔著借閱台看著她。
“找你幫個忙,賺點外快。”
蘇微放下手裡的線裝書和膠水,拿過旁邊的一塊乾毛巾擦了擦手。
“說。”
“這個軟盤裡,有兩萬條雜亂的文字資料。”
陳拙指了指那個黑色的塑料方塊。
“裡麵全是人為錄入的標簽,有很多拚寫錯誤,亂碼和無意義的符號。”
他看著蘇微的眼睛。
“機器的演演算法剔除不了這種冇有邏輯規律的臟資料,需要人工一行一行地看,把有錯誤的行刪掉,保留格式正確的。”
蘇微看著那個軟盤,冇說話,在心裡評估工作量。
“兩萬條,如果速度快,大概明天。”
陳拙語氣平緩。
“明天下午六點之前給我,五十塊錢。”
蘇微伸手拿過那個軟盤。
翻看了一下背麵。
“你們這算什麼?外包的外包?”
蘇微嘴角微微動了一下。
陳拙笑了笑。
“算是吧,草台班子遇到點算力解決不了的體力活。”
蘇微把軟盤放進自己馬甲的口袋裡。
“這活兒我接了,但圖書館的電腦不能亂插軟盤,我得晚上回宿舍,借室友的電腦看。”
“可以,明天下午我來拿。”
陳拙站起身,準備走。
“等等。”
蘇微叫住他。
陳拙回過頭。
“如果是文字文件,這兩萬條資料全是連在一起的。”
蘇微看著他。
“我之前在相關的書裡看過一點這些,我刪掉一行,怎麼保證你們匯入的時候,行數對應的圖片不串位?”
陳拙看著蘇微,眼底閃過一絲驚歎。
這姑娘不僅手腳麻利,腦子更是極其清楚。
“我在那個文字裡,已經寫了一段宏。”
陳拙回答。
“你不用直接刪文字,遇到有亂碼的那一行,你隻需要在最前麵敲一個數字0,遇到正常的,敲1。”
他稍微停頓了一下。
“格式我會回去重新匹配,你隻負責分辨對錯就行。”
蘇微點了點頭。
“明白了,明天下午六點,來這兒找我。”
她重新拿起膠水,低頭繼續修補那本線裝書。
第二天傍晚。
陳拙準時出現在老圖書館。
蘇微把軟盤推給他。
眼底下有淡淡的黑眼圈,顯然昨晚熬了夜。
“弄完了,一共刪了三千四百一十二條臟資料。”
蘇微的聲音有些疲憊,但依然乾脆。
陳拙拿過軟盤,從兜裡掏出一張五十塊的紙幣,放在桌上。
“辛苦。”
蘇微把錢收起來,放進抽屜裡。
“錢貨兩清。”
當天晚上。
216宿舍。
楚戈把陳拙拿回來的軟盤插進電腦。
讀取出那個被蘇微標記過的資料文字。
他寫了個最簡單的讀取指令碼,隻抓取開頭標記為1的資料。
幾秒鐘後。
一萬六千多條乾乾淨淨、冇有任何亂碼的測試資料被提取出來。
楚戈把這些資料匯入那個跑通了的底層程式。
回車。
螢幕上的資料流瘋狂滾動。
冇有任何報錯。
冇有任何卡頓。
一氣嗬成。
楚戈長長地出了一口氣。
他把最終的程式包和測試結果打包,發給了論壇上的那個雇主。
半個小時後。
對方回覆了資訊。
【牛逼,速度比我們預期的還快,卡號發來,馬上打款。】
楚戈靠在椅子上,點了一根菸。
他轉過頭,看著正站在自己旁邊的陳拙,又看了一眼正在看書的陸嘉。
他咧嘴笑了。
“搞定了。”
週末的晚上。
科大南門外的一家露天燒烤攤。
夜風吹得旁邊的葉子嘩啦啦響。
攤位上冒著濃烈的炭火煙氣和烤羊肉的孜然味。
靠路邊的一張摺疊圓桌旁。
坐著五個人。
楚戈,陳拙,王大勇,陸嘉,還有被陳拙叫出來的蘇微。
桌子底下踩著一箱雪花啤酒。
桌上擺著兩大盤烤肉串,幾盤冷盤。
蘇微麵前放著一瓶玻璃瓶裝的健力寶,她今天冇穿圖書館的馬甲,換了一件普通的黑色外套,安靜地坐在一邊喝飲料。
陸嘉對這種煙燻火燎的環境很不適應。
他皺著眉頭,拿著一串烤肉,看著簽子上麵沾著的一點黑炭灰,遲遲冇有下嘴。
楚戈起開兩瓶啤酒,遞給大勇一瓶,自己拿了一瓶。
“來,走一個。”
楚戈拿著酒瓶,跟大勇碰了一下,仰頭灌了一大口。
他放下酒瓶,用手背抹了一把嘴巴。
從兜裡掏出一個厚厚的信封。
裡麵裝的,是從自動取款機裡取出來的一千五百塊錢現金。
全是嶄新的一百元麵額。
在2002年,這絕對是一筆能讓大學生眼紅的钜款。
楚戈把信封放在桌上。
他收起了平時那副桀驁不馴的樣子。
在這個小圈子裡,技術碾壓一切,他知道自己幾斤幾兩。
“這筆錢,我接單的時候冇想那麼多。”
楚戈看著陳拙,語氣認真。
“如果不是你的那個架構,還有陸嘉的公式,這單子我絕對得砸在手裡。”
他直接拉開信封,開始數錢。
動作極其乾脆,冇有任何拖泥帶水。
他抽出六張一百的,放在陳拙麵前。
“陳拙,你搭的宏觀框架,這程式的骨頭是你捏的,拿大頭。”
陳拙看著麵前的六百塊錢。
冇有推辭,也冇有說那些虛偽的客套話。
他很自然地伸手拿起來,放進自己的口袋裡。
“好。”
楚戈又抽出四張一百的,推到陸嘉麵前。
陸嘉愣了一下,看著那些錢。
“你的數學邏輯幫我解了死結。”楚戈看著他,“這是你應得的。”
陸嘉皺著眉頭。
“我不要。”
他的聲音很小,帶著他一貫的軸勁。
“我給你寫那個,不是為了錢,我隻是覺得它錯了,必須把它改對。”
楚戈拿著錢的手僵在半空。
他知道這小子的脾氣,逼他拿錢比殺了他還難。
陳拙在旁邊夾了一口冷盤,慢條斯理地開口了。
“拿著吧。”
陳拙看著陸嘉,語氣溫和。
“這是你的知識在這個世界上運轉出來的價值,知識是有價格的,你應該習慣這件事。”
陸嘉看了看陳拙。
他沉默了一會兒。
伸手把那四百塊錢拿了過來,隨便揣進了兜裡。
楚戈鬆了口氣。
他又抽出兩張一百的,遞給正在埋頭吃肉的王大勇。
“大勇,大半夜折騰你搞散熱,還差點燒了你的插排,辛苦費。”
大勇憨厚地笑了笑。
也冇客氣,把錢接過來,塞進褲兜,繼續啃手裡的羊腿。
楚戈手裡還剩下三百塊。
他抽出其中一張五十的零錢,遞給坐在對麵的蘇微。
“蘇微同學,排雷的錢,陳拙掏了五十,這五十算我給你的。”
蘇微看了一眼楚戈,又看了一眼陳拙。
冇說話,把錢接過來收好。
楚戈手裡捏著剩下的二百五十塊錢。
他看了一眼手裡的錢,忍不住罵了一句。
“靠,怎麼是個二百五。”
桌上幾個人都愣了一下,隨即大勇忍不住哈哈大笑起來。
連一直有點繃著臉的蘇微,眼底也閃過一絲笑意。
楚戈無奈地搖了搖頭,把錢揣起來。
“行了,各歸各得,這頓燒烤我請。”
他拿起啤酒瓶。
“以後論壇上再有這種活兒,我應該還少不了接。”
楚戈看著桌上的幾個人,眼神裡透著一股極客的狂熱。
“我敲程式碼,陳拙搭架構,陸嘉算邏輯,大勇搞後勤,蘇微同學搞校驗,咱們這草台班子,能在這大學裡橫著走。”
陳拙冇拿啤酒,他端起手邊的溫水杯,跟楚戈的酒瓶碰了一下。
“不錯的想法。”
陳拙喝了口水,放下杯子。
他轉過頭,看向正吃得滿嘴流油的王大勇。
“大勇。”
“嗯?”大勇抬起頭。
“週末有空的話,帶我去一趟徽州的百腦彙。”
陳拙抽出一張餐巾紙,擦了擦手。
“去攢一台新電腦。”
大勇一聽這話,眼睛立馬亮了。
“行啊!配個什麼級彆的?奔騰4?顯示卡上什麼?還是就你之前說的那套配置?”
“主機板和顯示卡都要市麵上能買到的最好的一檔。”
陳拙語氣平靜。
“硬碟要大,顯示器要純平的,看著舒服一點。”
楚戈在旁邊聽著,有點驚訝。
“配這種頂配的機子,那可得大幾千了。”
楚戈彈了彈菸灰。
“不心疼啊?”
陳拙笑了笑。
他看著不遠處馬路上昏黃的路燈。
“去機房存程式碼太折騰,而且教育網下國外的文獻太慢。”
陳拙收回目光。
“工欲善其事,必先利其器,就當是買個工具吧。”
他稍微停頓了一下。
說出了今晚最重要的一句話。
“而且,我還需要你幫我買一台私人鐳射列印機。”
這句話一出,桌上除了早有心理準備的大勇,其他幾個人都愣住了。
連蘇微都停下了喝飲料的動作,看著陳拙。
“鐳射列印機?”
楚戈都以為自己聽錯了。
“放宿舍裡?你打什麼東西需要用那玩意兒?那耗材可不便宜。”
“列印國外的預印本論文。”
陳拙語氣很淡,就像是在陳述一個極其普通的日常需求。
“那些外文文獻太多,在電腦上看著傷眼睛,去外麵的列印店,長年累月下來,不僅貴,而且麻煩。”
他看著桌上的幾個人。
“楚戈,以後論壇上再有這種底層優化的單子,你接著接,遇到繞不開的邏輯,來找我和陸嘉。”
陳拙指了指剛纔楚戈分錢的位置。
“規矩照舊,按勞分配,各賺各的錢。”
他拿起筷子,夾了一粒花生米。
“賺的錢,你拿去升級你的主機板記憶體,大勇去淘他的二手零件,陸嘉自己攢著買書。”
陳拙看著自己兜裡那六百塊錢。
“至於我,國外的那些前沿論文又厚又費墨。”
他溫和地笑了笑。
“我賺的這筆錢,剛好夠我去買A4紙和備用碳粉盒的錢了。”
楚戈咧嘴笑了,他舉起手裡的啤酒瓶。
“也行吧,你開心就好,為了A4紙和碳粉盒。”
大勇也舉起酒瓶。
陸嘉猶豫了一下,端起麵前的水杯。
蘇微拿著健力寶。
陳拙端著水杯,跟他們碰在一起。
玻璃杯和酒瓶發出清脆的碰撞聲。