下书看 > 重生1997:从南下鹏城开始 > 第262章 观澜地下一层的断网工位

重生1997:从南下鹏城开始 第262章 观澜地下一层的断网工位

    ......

    墙壁排气扇的扇叶缺了个口子,转动时发出沉闷规律的嗒嗒声。

    观澜高新制造基地一号厂房地下一层,原本是存放废旧电机与变压器油桶的机修库。

    水泥地面被煤油浸泡出一块块暗黑色的油斑,屋顶拉着几条昏暗的日光灯管,接触不良的镇流器滋滋作响。

    厚重的铁卷帘门拉下一大半,底下只留着半人高的缝隙。

    卷帘门边放着一个红色的塑料洗脚盆,里面扔着七八台关了机的大显翻盖机和诺基亚黑白屏手机。

    一张手写的硬纸板靠在塑料盆边上:进门交机,严禁带入任何储存卡与闪存盘。

    陈锋弯腰钻过卷帘门,鼻腔里闻到一股浓重的松香水与电烙铁烧焦绝缘皮的气味。

    房间中央拼着四张油漆斑驳的木工长条桌。

    三台二手的联想开天台式电脑机箱敞开着侧盖,旁边摆着两台红色塑料外壳的鸿运牌小台扇,呼呼对着发热的中央处理器散热片猛吹。

    长条桌上铺着一层黄色的防静电橡胶垫,上面散落着万用表、示波器探头、起子、斜口钳和几卷焊锡丝。

    一名身穿浅蓝色条纹短袖衬衫的青年正趴在桌子前,鼻梁上架着一副无框近视镜。

    他手里拿着一支塑料牙刷,蘸着无水乙醇,正小心翼翼地刷洗一块绿色印制电路板上的焊油。

    那是三十五岁的小马哥。

    坐在他对面的,是刚从京城赶过来的雷总,身上穿着一件洗得领口发毛的灰色圆领长袖衫,脚下踩着一双沾着灰尘的千层底布鞋。

    严骏则顶着一头乱糟糟的油发,眼窝深陷,正握着电烙铁在电路板边缘补焊一颗贴片电阻。

    “老陈,你可算过来了。”

    小马哥放下牙刷,甩了甩酸痛的手腕,声音带着明显的潮汕口音。

    桌角放着两盒已经凉透的白灼肠粉,旁边扔着三个喝空了的绿色健力宝铁罐。

    “你这套所谓的纯触控开发板,把我们折腾得够呛。”

    小马哥伸手拿起一块用黄色绝缘胶带缠在透明亚克力板上的工程样机。

    一块三点五英寸的液晶屏正面裸露着,排线直接用透明胶粘在主板边缘。

    屏幕上亮着简陋的黑白双色界面,那是迅腾团队花了三个通宵赶出来的第一版星火版手机qq。

    陈锋拉过一张油漆斑驳的圆木凳坐下。

    “遇到什么具体故障了?”

    陈锋问。

    雷总从旁边拉过一台显像管大头显示器,调出一行行凌乱的汇编调试代码。

    “问题多得数不清。”

    雷总抓起一把粗瓷大茶缸,喝了一大口浓茶。

    “第一个最要命的问题,充电打架。”

    雷总拿出一根黑色的迷你USb数据线,插在开发板底部的接口上。

    数据线的另一头接在一个廉价的五伏特一安培手机充电头上,插在墙边的接线板里。

    充电插头刚插进去,屏幕上的绿色光标突然像疯了一样,在界面左上角疯狂跳动乱点。

    小马哥甚至没有伸手去碰屏幕,界面上已经自己自动打开了三四个对话框。

    “只要插上充电器,整个触摸屏直接瘫痪。”

    严骏揉着通红的眼睛,声音嘶哑。

    “坐标漂移达到两百个像素,屏幕里全是幽灵点击。”

    “我查了三天三夜,以为是星火微内核的输入子系统事件中断写错了,改了五版内核代码,一点用都没有。”

    陈锋伸手拿过桌上的数字示波器探头。

    “把示波器表笔搭在主板的地线上。”

    陈锋吩咐。

    严骏拿起黑色接地夹子,扣在板边裸露的铜皮上。

    示波器的荧光屏上,原本应该是一条平直的直流地线,此时竟然跳动着一道幅度高达八百毫伏的五十赫兹正弦交流杂波。

    陈锋指着荧光屏上的正弦波形。

    “不是操作系统代码的问题,是硬件共模干扰。”

    陈锋放下探头。

    “外面的廉价充电头用的是劣质单端反激式开关电源,变压器初级和次级之间只有一层薄薄的绝缘胶带。”

    “市电的高压交流电通过变压器的寄生电容,直接漏到了手机的地线上。”

    “电容屏本身就是靠感应人体的微弱皮表电荷来算坐标。”

    “现在地线上窜着八百毫伏的交流高压,电荷传感器被这股电流冲得晕头转向,它当然以为到处都是手指在按。”

    严骏猛地一拍脑门,手里的焊锡丝差点掉在地上。

    “地线不干净。”

    严骏喃喃自语。

    “我们光想着代码算法,忘了模拟电路的漏电。”

    “去元器件库房找两个贴片共模电感,再找两颗两百二十皮法的安规瓷片电容。”

    陈锋从盒子里翻出一把吸锡枪,递给严骏。

    “在迷你USb接口的电源输入脚加两级Lc滤波电路,把高频杂波泄放回大地。”

    “再找一段细铜箔,把屏幕背面的金属铁框和主板地线用烙铁单点焊死。”

    严骏立刻抄起电烙铁,熟练地在板子上烫开焊盘。

    小马哥推了推鼻梁上的眼镜,指着屏幕上的虚拟按键。

    “老陈,共模干扰解决了,软件交互上的麻烦更大。”

    小马哥将开发板摆平在桌面上,伸出大拇指,在屏幕右下角点了一下。

    屏幕上弹出了一片密密麻麻的虚拟九宫格按键。

    “我们习惯了在诺基亚上用物理按键打字,手指按下去有明显的机械咔嗒声。”

    小马哥一边操作一边皱眉。

    “现在这块玻璃板是平的,没有任何触觉摸索边界。”

    “男人的手指粗,指腹按下去是一个圆形的肉垫。”

    “我想打一个字母‘G’,指腹边缘同时压到了旁边的‘h’和‘d’。”

    “电容屏太灵敏了,一下子判定出三个按键事件,打十个字能错四个。”

    “昨天我和阿乐测试发一条‘明天下午开会’,反反复复按了三分钟,删了又打,打完手指头全酸了。”

    “要是打字这么费劲,老百姓宁可回去买带键盘的塞班手机,没人会用这个。”

    雷总也点头赞同。

    “塞班系统现在的优势就是全键盘或者经典九宫格盲打。”

    “很多熟练的出租车司机一边开车,单手就能在裤兜里摸着键盘盲发短信。”

    “触控屏如果做不到快速输入,在文字通信上就成了死穴。”

    陈锋拿起一支红色的铅笔,在长条桌上一张白纸上画了一个指腹接触面的椭圆受力示意图。

    “你们把交互逻辑全想反了。”

    陈锋停下笔。

    “你们现在写的程序,逻辑是手指只要碰到了屏幕,立刻触发按键。”

    “但人手按在玻璃上,最重的一下往往是在手指刚挨着屏幕那一下,指肉摊开,面积最大,最容易蹭到邻近区域。”

    小马哥凑过头来,盯着纸上的受力分布。

    “那应该怎么判?”

    小马哥问。

    “把判定时机,从按下改为抬起。”

    陈锋用铅笔在椭圆中心画了一个小十字星。

    “手指压下去的时候,只做两件事。”

    “第一,在按键正上方弹出一个放大的气泡预览框,把手指按到的按键高亮放大,让用户的眼睛能看清按到了什么。”

    “第二,如果发现按偏了,允许手指贴着玻璃滑动微调,气泡跟着手指实时移动。”

    “直到手指离开玻璃表面的那个时间点,系统才正式把字符送入输入框。”

    “这就叫抬起触发。”

    小马哥眼里的迷茫散开,右手食指在桌面上空悬比划了两下。

    “按下去看气泡,滑一下校准,抬起来才算数。”

    小马哥低声重复着这句话。

    “这完全打破了pc端鼠标点击的直觉。”

    “但放在小屏幕上,确实能把误触率压下去一大半。”

    陈锋转头看向雷总。

    “雷总,你们金山那边负责的网页排版,进展怎么样了?”

    雷总叹了一口气,苦笑着指着旁边一台正在跑编译脚本的电脑。

    “别提了,差点把浏览器内核写崩了。”

    雷总抹了一把脸上的油光。

    “二零零六年的互联网网页,全都是给八百乘六百、一千零二十四乘七百六十八分辨率的台式大头显示器设计的。”

    “新浪搜狐的一个首页,塞满了表格、图片、浮动广告,页面宽度动辄九百个像素。”

    “我们移植了一版开源的webKit排版引擎,放进三点五英寸屏幕里。”

    “一打开新浪网,字小得像蚂蚁爬一样,根本看不清。”

    “要是强行把文字排版放大,整个网页被撕扯成一条细长的布条,左右滑动七八次才能看完一行新闻,体验糟糕透顶。”

    雷总拿出一张皱巴巴的草稿纸。

    “我们在代码里加了双指缩放,但星火微内核的内存池太小了。”

    “整页渲染一张高分辨率位图,直接把主板上十六兆字节的静态内存全部吃光。”

    “放大两下,主板直接死机黑屏,看门狗芯片立刻强制重启。”

    房间里安静下来,只有小台扇吹动电路板飞线的沙沙声。

    没有炫目的概念展示,真实的软件移植就是这样一寸一寸在内存碎片的泥潭里爬行。

    陈锋走回桌边,拿起那盒凉透的肠粉,倒了一点酱油,用一次性塑料筷子夹了一大口嚼着。

    吞下肠粉,陈锋看着雷总。

    “网页不能整页硬解。”

    陈锋说。

    “现在电脑上渲染网页,是把整个页面当成一张大画布一次性画完。”

    “十六兆的内存,怎么可能装得下一张几千像素长的大位图?”

    雷总皱起眉头。

    “不全画出来,用户划屏幕的时候怎么办?底下不就空了吗?”

    “分块贴图渲染。”

    陈锋用筷子头在木桌上划了四个小方格。

    “把整个网页切成二百五十六乘二百五十六像素的小瓦片。”

    “屏幕当前能看到哪四个瓦片,cpU就只渲染这四个。”

    “滑出屏幕视野之外的瓦片,立刻从内存里释放,只保留一个基础坐标。”

    “手指滑到哪里,后台线程实时渲染哪里的瓦片,像铺地砖一样动态铺上去。”

    雷总愣在原地,手里的粗瓷茶缸停在半空中。

    “瓦片渲染。”

    雷总喃喃自语,眼中猛地爆发出亮光。

    “这样一来,不管网页拉得多长、排版多复杂,常驻内存永远只占屏幕可视区域的那几张小图。”

    “内存开销从几兆字节,直接压到了几百千字节。”

    雷总一把抓起铅笔,拉开旁边的源代码本子,开始疯狂涂画数据结构算法。

    “这个思路能行。”

    “阿乐,别弄那个输入法字符库了。”

    雷总冲着旁边一名戴眼镜的年轻程序员大喊。

    “把webKit的绘图上下文接口拿出来,重新写一个基于双向链表的瓦片缓存队列。”

    机修库里的气氛开始变得燥热起来。

    电烙铁的青烟在防静电橡胶垫上方缓缓盘旋。

    严骏已经用两颗共模电感替换了原本直通的铜箔,并在接口处补焊了两颗米粒大小的电容。

    他再次将黑色的迷你USb线插进主板接口。

    小马哥把手指轻轻放在屏幕上。

    数字示波器上的交流杂波被死死压制在二十毫伏以内。

    屏幕上的光标像钉在原地一样,稳稳当当,没有半点颤抖,幽灵点击彻底消失。

    小马哥深吸了一口气,按照陈锋刚才说的逻辑,在虚拟九宫格上快速点按。

    每按下一个键,按键上方平滑弹出一个大号的白色气泡框。

    手指略微往上一挪,气泡跟着滑动。

    手指离开玻璃表面。

    哒的一声微小震动。

    一行干净整洁的汉字出现在输入框内:明天下午两点在观澜开会。

    用时不到八秒。

    小马哥看着那行字,摘下眼镜,用力揉了揉酸涩发胀的眼眶。

    他转过头,看着坐在木凳上吃肠粉的陈锋。

    “老陈,我现在有点信了。”

    小马哥声音有些发哑。

    “当年做oIcq的时候,我和老张每天熬夜改底层网络包,也觉得这是一条看不见头的苦路。”

    “今天坐在这间满是油污的破地下室里,我反倒觉得踏实。”

    “这种在玻璃上摸索出来的玩意儿,只要把细节磨到极致,是真的能推翻诺亚键盘的。”

    陈锋咽下最后一口肠粉,将一次性塑料盒扔进旁边的铁丝废纸篓里。

    他擦了擦手,拍了拍小马哥单薄的肩膀。

    “别急着高兴,这只是刚把骨架搭起来。”

    陈锋目光平静地扫视着桌上那些缠满胶带的开发板。

    “现在是2.5g网络,中国移动的一个包只有几十千字节。”

    “把底层的瓦片渲染和防误触逻辑吃透,把内存压到极限。”

    “今年整整一年,不向外界透露一个字。”

    窗外的暮色彻底沉了下来。

    排气扇不知疲倦地嗡嗡响着,把满屋的焊锡烟气慢慢抽向夜空。

    三台二手的电脑屏幕在昏暗的地下室里散发出柔和的冷光。

    小马哥和雷总已经各自拉着身边的程序员,重新扑在键盘前,噼里啪啦的敲击声此起彼伏。

    机修库里重新响起了密集的键盘敲击声,伴随着电烙铁偶尔落下的轻微松香爆裂声。

    陈锋转过身,弯腰跨过那扇半拉着的铁卷帘门。

    外面的夜风吹散了鼻尖上的松香苦气。

    他顺着水泥楼梯,慢慢走回了一号厂房亮着长排日光灯的装配车间。

    ......