一、代碼俠女的“副業(yè)”:爬蟲與“反偵察”
林卷卷最近多了個(gè)秘密任務(wù)——用她的代碼技能,給“閻王”閻正明的課題組搞“數(shù)據(jù)體檢”。
這事的起因,是她某次幫江硯整理文獻(xiàn)時(shí),發(fā)現(xiàn)閻正明近三年的論文里,有三組實(shí)驗(yàn)數(shù)據(jù)的誤差曲線長(zhǎng)得像復(fù)制粘貼的雙胞胎。“江博士,您看這圖…是不是有點(diǎn)太‘完美’了?完美得像我P過(guò)的自拍。”林卷卷戳著屏幕上的圖表,眉頭皺成代碼里的bug。
江硯的手指在鼠標(biāo)上頓了頓,沒(méi)說(shuō)話,只是把那幾篇論文拖進(jìn)了加密文件夾。
林卷卷瞬間懂了——這里面有貓膩。
于是,她啟動(dòng)了“副業(yè)計(jì)劃”。趁閻正明組的小師妹請(qǐng)她幫忙修電腦時(shí),偷偷在對(duì)方的瀏覽器里植入了個(gè)微型爬蟲腳本(美其名曰“自動(dòng)整理文獻(xiàn)插件”)。這腳本像只嗅覺(jué)靈敏的電子狗,專盯組內(nèi)共享文件夾里的原始數(shù)據(jù)和實(shí)驗(yàn)記錄。
“卷卷の閻王組數(shù)據(jù)挖掘1.0版,啟動(dòng)!”林卷卷對(duì)著電腦屏幕比了個(gè)加油手勢(shì),代碼界面上,一行行指令像小偵探一樣鉆進(jìn)了目標(biāo)服務(wù)器。
江硯端著燒杯路過(guò),瞥到她屏幕上跳動(dòng)的IP地址,挑眉:“又在搞什么幺蛾子?”
“秘密任務(wù)!”林卷卷立刻捂住屏幕,沖他做了個(gè)“噓”的手勢(shì),眼睛亮晶晶的,“等我挖到寶藏,給您一個(gè)大驚喜!”
江硯無(wú)奈搖頭,轉(zhuǎn)身時(shí)卻勾起嘴角——這姑娘的“歪門邪道”,有時(shí)還真讓人有點(diǎn)期待。
二、熊貓頭匯報(bào):“有內(nèi)鬼!終止交易!”
爬蟲跑了三天三夜,在一堆雜亂的實(shí)驗(yàn)記錄里,真讓林卷卷扒出了不對(duì)勁的東西。
一份標(biāo)注“2023.06.15 單細(xì)胞測(cè)序原始數(shù)據(jù)”的文件,修改記錄顯示,在論文投稿前一周,有人用特殊權(quán)限批量替換了其中17組異常值。更詭異的是,修改日志里的操作IP,指向了閻正明的私人辦公室電腦。
“好家伙!這是把數(shù)據(jù)當(dāng)橡皮泥捏啊!”林卷卷拍著桌子站起來(lái),差點(diǎn)撞翻身后的液氮罐。她火速截了屏,把關(guān)鍵信息打碼,然后打開表情包庫(kù),選中那張熊貓頭舉著“有內(nèi)鬼!終止交易!”的經(jīng)典圖,P上“閻王組數(shù)據(jù)異?!钡拇笞郑l(fā)給了江硯。
彼時(shí)江硯正在調(diào)試測(cè)序儀,手機(jī)“叮咚”一響。他點(diǎn)開消息,看到那張沙雕表情包時(shí),太陽(yáng)穴突突直跳。正想回復(fù)“邏輯呢?”,目光卻被圖片下方的截圖吸引——那串熟悉的文件路徑和修改時(shí)間,像冰錐刺進(jìn)他眼底。
三年前,他有篇論文的核心數(shù)據(jù),就是在投稿前“被優(yōu)化”過(guò),當(dāng)時(shí)他以為是自己操作失誤,現(xiàn)在看來(lái)……
江硯的手指攥緊了測(cè)序儀的操作手冊(cè),指節(jié)泛白。屏幕上,林卷卷又發(fā)來(lái)一條消息:“江博士,要不要組隊(duì)查案?我?guī)Я宋业摹a警犬’,保證比實(shí)驗(yàn)室的監(jiān)控還好用!”
他盯著那條消息看了半分鐘,回了兩個(gè)字:“地址?!?/p>
三、枸杞茶的“嫌棄”與暖意
自從發(fā)現(xiàn)數(shù)據(jù)疑云后,江硯待在實(shí)驗(yàn)室的時(shí)間越來(lái)越長(zhǎng)。有時(shí)林卷卷凌晨來(lái)?yè)Q液氮,還能看到他趴在電腦前,屏幕上是密密麻麻的文獻(xiàn)和代碼,眼下的青黑比培養(yǎng)箱里的霉菌還顯眼。
“江博士,您這是要把自己熬成凍干樣本?。俊绷志砭砟程煸绯?,偷偷往他的保溫杯里塞了把枸杞和黃芪。她記得老媽說(shuō)過(guò),這倆是“程序員續(xù)命湯”。
江硯開會(huì)回來(lái),拿起保溫杯喝了一大口,隨即皺起眉:“這是什么?中藥?”
“養(yǎng)生茶!”林卷卷湊過(guò)來(lái),獻(xiàn)寶似的,“我媽說(shuō)喝了不脫發(fā)、不失眠,還能打跑學(xué)術(shù)渣男!”
江硯把杯子往旁邊一推,語(yǔ)氣嫌棄:“我不需要。”
可那天下午,林卷卷去茶水間倒水時(shí),透過(guò)窗戶看到江硯正拿著她塞枸杞的保溫杯,對(duì)著陽(yáng)光看里面的藥材,嘴角似乎還帶著點(diǎn)若有若無(wú)的笑意。
更絕的是,第二天她發(fā)現(xiàn),保溫杯里的枸杞少了一半,杯底還多了幾顆紅棗——不知道是誰(shuí)加的。
“江博士,您這是‘真香’了?”林卷卷揶揄道。
江硯面無(wú)表情地敲著代碼:“實(shí)驗(yàn)室的紅棗快過(guò)期了,別浪費(fèi)。”
林卷卷憋著笑,轉(zhuǎn)身時(shí)差點(diǎn)撞到離心機(jī)——這冰山,融化起來(lái)還挺別扭。
四、深夜代碼語(yǔ):測(cè)序儀轟鳴里的默契
實(shí)驗(yàn)室的深夜,總被測(cè)序儀“咔噠咔噠”的運(yùn)作聲填滿。大部分時(shí)候,只有林卷卷和江硯兩個(gè)人。
江硯在寫算法的核心模塊,林卷卷在優(yōu)化她的爬蟲腳本,偶爾抬頭,能看到對(duì)方專注的側(cè)臉在屏幕光下泛著柔和的輪廓。
“江博士,您說(shuō)閻老頭要是知道我們?cè)诓樗?,?huì)不會(huì)放病毒黑我們電腦?”林卷卷咬著棒棒糖,敲鍵盤的手指卻沒(méi)停。
“不會(huì)?!苯庮^也不抬,“他更擅長(zhǎng)物理毀滅——比如‘不小心’打翻你的細(xì)胞培養(yǎng)皿?!?/p>
林卷卷一個(gè)激靈,趕緊把自己的細(xì)胞房鑰匙串掛在脖子上:“那我得給我的細(xì)胞寶寶們買份‘保險(xiǎn)’!”
江硯被她逗笑,指尖在鍵盤上頓了頓:“你那個(gè)爬蟲,加個(gè)反向追蹤模塊。閻正明組里有個(gè)技術(shù)員,以前是學(xué)網(wǎng)絡(luò)安全的,別被他反扒了?!?/p>
“收到!”林卷卷立刻調(diào)出代碼,“江博士,您怎么知道這么多?”
江硯沉默了幾秒,屏幕的藍(lán)光映在他眼底:“以前……吃過(guò)虧?!?/p>
林卷卷沒(méi)再追問(wèn)。她看著江硯專注的側(cè)臉,突然覺(jué)得那些冰冷的代碼和數(shù)據(jù),成了他們之間的秘密語(yǔ)言。她懂他藏在嚴(yán)謹(jǐn)背后的不甘,他也懂她埋在沙雕之下的認(rèn)真。
測(cè)序儀發(fā)出一聲輕響,完成了一輪運(yùn)行。江硯起身去取樣本,經(jīng)過(guò)林卷卷身邊時(shí),丟下一句:“你寫的可視化界面,比我之前用的好看?!?/p>
林卷卷的心跳漏了一拍,看著他的背影,突然覺(jué)得,就算最后發(fā)不了SCI,能和這人一起在深夜的實(shí)驗(yàn)室里敲代碼,好像也挺值。
五、暗流升級(jí):被調(diào)換的試劑
就在兩人的“秘密查案”漸入佳境時(shí),意外發(fā)生了。
林卷卷用爬蟲追蹤到一份關(guān)鍵的原始數(shù)據(jù)備份,正準(zhǔn)備下載,卻發(fā)現(xiàn)細(xì)胞房里的胰酶“過(guò)期”了——那瓶明明是她昨天剛開封的,標(biāo)簽上的日期卻被人改成了三個(gè)月前。
“靠!又是哪個(gè)內(nèi)鬼干的!”林卷卷氣得差點(diǎn)把移液槍掰斷。這瓶胰酶是用來(lái)處理原代細(xì)胞的,一旦用了過(guò)期的,之前養(yǎng)了兩周的樣本就全廢了。
江硯聞?dòng)嵹s來(lái),看到被篡改的標(biāo)簽,臉色瞬間沉了下去。他檢查了細(xì)胞房的監(jiān)控記錄,發(fā)現(xiàn)昨天傍晚,趙宇來(lái)過(guò)一次,停留時(shí)間剛好三分鐘。
“不用查了。”江硯按住想調(diào)監(jiān)控的林卷卷,“他是在警告我們?!?/p>
林卷卷看著培養(yǎng)箱里長(zhǎng)勢(shì)正好的細(xì)胞,又看了看江硯冷得像冰的眼神,突然握緊了拳頭:“警告?那我們就給他來(lái)個(gè)‘反殺’!江博士,要不要試試我的新腳本?能把他電腦里的游戲存檔全改成‘閻王表情包’!”
江硯看著她眼里的火,第一次沒(méi)有說(shuō)“邏輯呢”,只是點(diǎn)了點(diǎn)頭:“注意隱藏IP?!?/p>
深夜的實(shí)驗(yàn)室里,測(cè)序儀依舊在轟鳴。但這一次,空氣中除了代碼的味道,還多了點(diǎn)并肩作戰(zhàn)的硝煙味。林卷卷不知道,她和江硯的這場(chǎng)“秘密戰(zhàn)爭(zhēng)”,已經(jīng)悄悄點(diǎn)燃了龍騰大學(xué)科研圈的引線,而那根引線的盡頭,是足以炸翻整個(gè)生物信息學(xué)界的驚雷。