背景
字号 18

第三章 暗箭难防

情绪掌控者 · 辰风 · 4141字

下午的阳光透过百叶窗在办公桌上投下一道道平行的光斑。

林辰的手指在键盘上几乎没有停顿,屏幕上飞速滚动的代码像一串精密的音符。他正在搭建灰度发布的流量切分配置,这是整个方案中最核心的部分——如果做不好,用户的体验会出现断层,数据也会失去参考价值。

“辰哥,还在肝呢?”

一个声音从身侧传来。

林辰侧头,看见张明端着一杯冒着热气的咖啡走过来,脸上挂着那种职场里常见的、恰到好处的笑容。张明是测试组的骨干,去年拿过部门最佳员工,技术能力在同龄人中算得上出众。平日里跟他关系不算近,但也从没闹过什么不愉快。

恰恰就是这个“不近不远”的距离,让林辰心里多了一丝警觉。

他抬起头,目光扫过张明的头顶。

【嫉妒·70 · 灰色】

灰色的数字像一层薄雾,悬浮在那里,和林辰之前在刘志强头上看到的那种沉甸甸的压力数值完全不同。灰色代表负面情绪,70是中等偏高。

嫉妒?

林辰心里微微一动,面上却不动声色地扯出一个笑容:“哪有,就是赶进度,这不还有一周就要灰度了嘛。”

“辰哥你可别谦虚了,”张明在旁边的空椅子上坐下来,喝了口咖啡,语气像是在闲聊,“今天会上你那方案我是从头听到尾的,思路确实可以。老大当时那个表情,啧啧,我差点没绷住。”

他说着,还挤了挤眼睛,一副“我懂你”的样子。

林辰笑了笑,没有接话。

他不知道张明是真的在为他在会上压过刘志强而高兴,还是话里藏着别的什么。但头顶那飘着的【嫉妒·70】让他有足够的理由保持警惕。

果然,张明又开口了:“不过辰哥,我提个建议,你别不爱听啊。”

“你说。”

“你那个流量切换的脚本,我看了你之前提的文档,用的是自研的那套Gaea框架对吧?那个框架的锁机制我一直觉得不太稳,之前测试环境压测的时候跑出过死锁。你看要不要换成我们测试组自己封装的并发包?性能差不多,但稳定性我们测过好几轮了。”

林辰听完,脑子里飞速转了一圈。

Gaea框架是团队的主力框架,虽然在极端高并发下确实暴露过死锁问题,但那都是老黄历了——三个月前他专门优化过底层的锁实现,后面跑了不下二十轮压测,一次都没出过问题。

而测试组自己封装的并发包,他曾经看过源码,问题在于那个包的提交者就是张明本人。

如果用张明的包,就意味着核心模块的控制权交到了别人手里。

林辰看着他,又扫了一眼他头顶的数字——【嫉妒·65】,比刚才降了5点,依然稳定在灰色区间。但这个“建议”本身,却透着一股说不上来的味道。

“你说得对,Gaea确实出过问题,”林辰笑着说,语气真诚,“不过我这边的方案已经压测过了,三轮全都稳定通过,日志记录在这,你要不要看看?”

张明愣了一下,显然没想到林辰会这么直接地把测试数据甩过来。

“不用不用,你测过了就行,我也就是随口提个建议。”张明摆了摆手,端起咖啡站起来,“那你先忙,有事找我。”

他转身走回自己的工位,脚步轻快,看起来像是什么都没发生一样。

林辰的目光跟了他两步,收回视线继续敲代码。

但他心里已经记下了这个人。

下午三点,林辰去茶水间接水。刚走到门口,听见里面有人在说话,声音压得低低的,但茶水间的隔音实在谈不上好,他能清楚地听到每一个字。

“……你说他那个方案能成?我觉得悬。”

“怎么说?”

“灰度发布不是小事,真出了问题,线上用户全崩,那锅谁背?反正我不背。别看他今天在会上说得天花乱坠,到时候出问题了,背锅的还是咱们这些干活的。”

“也是,他那个人吧,技术是有点东西,但太爱出风头了。”

林辰的脚步顿了一下。

第二个声音他认得——是隔壁项目组的后端开发,叫王哲,平时话不多,技术中规中矩,跟他没有任何过节。第一个声音,他没听出来是谁。

他没有推门进去,而是转身往回走。

没必要。

职场里背后议论这种事他经历得太多了,以前会憋一肚子气,会愤怒,会不甘心,但现在的他有了更直观的判断方式。

他不慌不忙地回到工位,给自己倒了杯水,打开监控工具扫了一眼线上的数据曲线。

平稳。

一切都正常。

他正准备切回IDE继续写代码,余光忽然瞥见张明从自己的工位那边走过来,手里拿着一本书,表情有些微妙的变化。

林辰下意识地看了一眼他的头顶。

【紧张·62 · 蓝色】

蓝色?

林辰眉头微皱。紧张情绪在人的情绪光谱里属于防御型,通常出现在说谎、隐瞒、或者即将实施某个计划之前。绿色是兴奋,红色是愤怒,蓝色是紧张,灰色是负面情绪,黑色是极度负面,白色的情绪他之前见过一次,是那次陈默帮他转简历的时候。

张明的头顶从灰色变成了蓝色,这说明他的情绪状态在变化。

林辰没有转头,只是用余光继续观察。

张明走到他工位旁,停下脚步,像是忽然想起什么似的,拍了一下脑门:“辰哥,我差点忘了——刚才运维的小刘跟我说,灰度发布的测试环境那边有个配置需要确认,让你去看一眼。他说直接找他就行,在运维办公室那边。”

“现在?”林辰抬起头,脸上带着一丝恰到好处的困惑。

“对,说他四点前要搞完别的事情,怕你找不到他。”张明一脸真挚地说完,朝林辰点了点头,转身走了。

林辰看着他的背影,心里那个警觉的弦瞬间绷紧了。

他低头看了一眼电脑右下角的时间:15:47。

还有十三分钟到四点。

林辰没有马上站起来去找运维,而是先把桌面上的IDE窗口最小化,又打开任务管理器看了一眼后台进程,确认自己的机器上没有异常的高负载或者可疑进程。

然后他起身,拿上手机,走向运维办公室。

他没沿着张明说的那条最短路线走,而是绕了一个小弯——经过张明工位的时候,他用余光瞥了一眼。

张明的电脑屏幕正对着他自己,从林辰这个角度只能看到屏幕边缘透出一层亮光,模糊不清。但张明的姿势有点不自然——他的左手撑在桌子边缘,右手握着鼠标,身体微微前倾,像是一个正在紧盯着某样东西的人。

林辰的目光快速扫过他的头顶。

【心虚·78 · 黑色】

黑色。

情绪数值的暗面,78,几乎接近高危区。

林辰的心猛地一沉。他加快了脚步,走进运维办公室,一眼就看见了运维值班的小刘。小刘正蹲在机柜后面接线,听见有人进来,探出半个身子。

“辰哥?有事?”

“张明说你要让我来确认灰度发布的测试环境配置?”林辰开门见山。

小刘愣了一下,挠了挠头:“没有啊,我没跟他说过啊。灰度发布的配置早都搭好了,上周五我就发邮件同步了全组,他知道啊。”

林辰的脑子转得飞快。

张明在骗他。

一个毫无必要的谎言,把他支开,一定是因为他的工位上有什么东西是不能让他看到的。

“行,没事了,你忙。”林辰说完,转身快步往回走。

他没走回工位的那条路,而是从另外一个方向绕到工位区的另一侧——那里有一排落地玻璃窗,透过窗户可以隐约看到他工位上方的视野。

他站在玻璃窗前,拿出手机,假装在看消息,实际上在透过玻璃的反光观察自己的工位。

什么都没有。

看上去一切如常。他的电脑屏幕还亮着,IDE窗口已经自动锁屏了,桌面上没有多出任何东西。

但林辰的眼角余光捕捉到一个细节——他的键盘上,F8键旁边的一粒灰尘,位置变了。

那粒灰尘是他早上擦桌子的时候注意到留下来的,很小,几乎看不见,但他记得很清楚——那粒灰尘刚好卡在F8和F9之间的缝隙里,呈一个不规则的棱形。

现在,它出现在F8的键帽上。

有人动过他的键盘。

林辰的心跳加速了一拍,但脸上的表情没有任何变化。他收起手机,若无其事地走回工位,坐下,重新解锁屏幕。

他先检查了系统日志——没有任何异常登录记录。

然后他打开代码文件夹,找到灰度发布的脚本文件,右键查看属性——修改时间:15:49。

他最后一次保存这个文件是15:23。

15:49的时候,有人打开并修改了它。

林辰打开脚本,一行一行地往下看。一开始什么都没发现,代码逻辑完整,变量名正常,流程顺序正确。但当他看到第47行的时候,他的手停了下来。

那里有一个不起眼的变动——一个时间戳变量,原本应该是动态获取系统当前时间后拼接一个随机数种子用于生成设备ID的分桶标识;而现在,它被改成了一个固定值:0。

这个改动如果被带上线,会导致所有进入灰度范围的用户设备被归入同一个分桶。数据会全面失真,用户会被反复刷到新旧两个版本之间,轻则界面闪烁,重则直接崩溃。

更致命的是,等出了问题再查日志的时候,这个变量已经被执行结果覆盖掉了。就算有人怀疑代码被改过,也找不到证据。

一石二鸟。

既能让灰度发布出问题,又能让背锅的人找不到源头。

林辰握着鼠标的手微微用力,目光盯着屏幕上那个不起眼的小改动,脑子里回荡着张明刚才那张挂满真诚的脸。

“辰哥你可别谦虚了。”

“我看你那个方案思路确实可以。”

“建议你换成我们测试组的并发包。”

“运维让你去一趟。”

一条完整的逻辑链在他脑子里砰然闭合。

他深吸一口气,没有立刻把那个变量改回去,而是先把整个脚本复制了一份到U盘里,然后打开版本控制工具,拉取了15:20时提交的那一版快照,导出一份原始代码。

接着,他把当前被篡改的脚本原封不动地保留下来——但做了一件事。

他在自己的电脑上开启了一个后台录屏功能,把从15:50到现在的所有操作全部记录了下来,包括自己发现问题的过程。

做完这一切,他才不慌不忙地把那个变量改回正确值,然后保存、提交、打上新的版本标签。

他靠在椅背上,喝了口水。

目光穿过工位隔断之间的缝隙,落在张明身上。张明正在跟另一个同事说话,笑得很大声,看起来心情不错。他头上的颜色已经浅了很多,降到了黄色——疑惑,或者说是观望。

他大概以为自己的计谋得逞了。

林辰收回目光,嘴角浮起一个极淡的弧度。

他打开和孙雅的聊天窗口,打了一行字:“孙经理,关于上次你说的产品端需求对接,我这边灰度发布脚本已经跑通了,你看明天上午方便约个时间聊一下具体的接口文档吗?”

消息发送。

不到三十秒,孙雅回复了一个字:“好。”

林辰看着那个“好”字,又看了一眼张明的方向。

这个人情,他收了。

但这个局,还没完。

他的手指轻轻敲了两下桌面,重新把注意力放回代码上。屏幕的光映在他的瞳孔里,像一簇不会熄灭的小小火焰。

‹ 上一章 返回目录 下一章 ›