46 DHTML

绝影的预感没错,BOSSLiu的进步大大出乎了他的预料,正是所谓士别三日当刮目相看,以前在公司技术虽然不比他高多少,但起码也是旗鼓相当,后来又在看雪论坛上发了一篇精华文章,自以为内力得到极大地提升,没想到BOSSLiu也绝非等闲之辈,EB刚开始才几天,绝影就感觉到来自BOSSLiu的压力。

最初让BOSSLiu做消息服务器,绝影大大方方地拨给他一周时间,想一周时间要是能做得稳定,拿出来能直接用,尤不失下曹从事。BOSSLiu满口答应,估计得还是保守了一点,没想到第二天便对绝影说:“消息服务器已经做好了,WinSock,以前在公司就专做这块,能不能给我个大点的CASE,免得一身武功荒废了。”

BOSSLiu说得轻松,绝影分明感觉到这里面有点挑衅的味道。再看看他做的消息服务器,功能上也基本符合设计要求,在GPS公司锻炼了一年,BOSSLiu的MFC也用得炉火纯青,单是那CAsyncSocket的使用便让绝影吃了一惊。对于WinSock编程,绝影一直以来都是沿用罗云彬那本汇编书上的方法,用多了,便觉得刀枪根棍棒都耍得有模有样,至于MFC里的Socket类也不再去研究。

后来事实证明绝影的这一先入为主的思想真是害死人。罗云彬第一版书上的WinSock编程部分存在一个致命的BUG――根本没有解决粘包问题,虽然在第二版上修正了这个BUG,但还是让绝影花了好大的力气才让思想转过这个弯。

明白了这个问题,回过头来再想想以前做的Socket相关程序,难怪小规模回环测试一下还不错,一放到服务器上耐力测试便运行得莫名其妙,所以有些人老说:“怎么运行不对呢?明明没有错误啊。”或者说:“我是世界上技术最牛的人了,还有比我牛的人吗?没看到啊。”其实你找不到错误并不代表错误不存在,同样,你看不到技术比你牛的人并不代表世界上就没有技术比你牛的人。

验收了BOSSLiu的产品,绝影半开玩笑地说:“BOSS啊,早知道你肯定有研究成果,咋的你就是不愿意拿出来分享呢?”

BOSSLiu摆摆手:“BOSS大人,你不是一直专注于汇编吗?这点东西对你来说算‘研究成果’?别的小弟我就不说了,要是这凭这玩艺也敢在你面前班门弄斧,那还不被你笑死!被你笑死的事情我不做!”

张厂长又去了几趟城隍庙,对他来说收获还是颇丰,绝影一直觉得他有点中饱私囊的嫌疑,一一查看了购物清单,奈何都在公司允许范围之内,就是出门动不动就打车,次数多了,周总的意见也就大了起来。开会的时候,周总严肃地说:“关于出差打车,我的意见是除非项目紧急,能坐公车就坐公车,又环保又省钱,这一直是国外推崇的啊。”

绝影在下面撇撇嘴,暗自嘀咕道:“你以为咱都是出租车司机啊?跑大老远出差还得先调研公交车分布路线。”

等到指纹仪寄到公司,张厂长算是圆满完成任务。那指纹仪放在桌上,和绝影原先想像的不一样,主要是体积太大,居然足足有自己的音响那么大。

张厂长左右摆弄着那台机器,像是自言自语道:“体积是大了点,不过根据技术手册,性能应该比较稳定,先让我来试试。”

试验结果出来,搞得张厂长好像丢了很大面子。那机器性格也太古怪,还非得人来将就它,首先你得把手洗赶紧,就算稍稍多了点汗,影响识别效果不说,搞坏了机器责任还得自负;然后你得端端正正把指头肉最多的地方不偏不倚地按到指定位置,必要时,你还得先目测一下那扫描器中心位置在哪里;第三,你得听到嘟一声后才放手,放早了不行这容易理解,居然放晚了也识别不通过。

绝影失望地摇摇头,张厂长连忙说:“也有很精确的,不过价格太离谱了,用那个,是不切实际的。”

几个人决定先从UI模块开始,由绝影负责,指纹仪和摄像头模块可以同步进行,分别由张厂长和BOSSLiu负责。

UI的表现形式又是个大难题,用传统的DialogBase和Singledocument肯定不行,版面实在太有限了,要是用Multipledocuments,各个页面的布局还得分别设计,页面之间的数据交换又是个大问题,说不定还得设计专门的数据交换模块。

绝影一筹莫展,转身看看BOSSLiu,这一看不要紧,吓得他差点报警。

本来BOSSLiu桌子四周的围栏比较高,他人整个钻进去也顶多冒点脑袋顶上的头发出来,绝影望了半天,望不到BOSSLiu的脑袋,却只见上面烟雾缭绕。上次说哪个大商场里发生火灾,当场烧死百十来人,本来他打死也不相信,想一个大活人,两只脚好好的,还能让火给鳖死?现在看到这场面,难道传说中的火灾已经发生在可怜的BOSSLiu座位上。正惊慌失措,却见BOSSLiu突然站了起来,高呼一声:“有构思了!”然后慢满掐灭所剩无几的烟屁股,把它往烟缸里使劲憋进去。

再看看他的烟缸,已经被他严重超载得不成样子,本来核定载烟屁股30根,BOSSLiu却硬生生至少憋了至少130根进去,再加上这一年来,BOSSLiu的烟瘾也随着他的技术不断进步,看三包烟盒空荡荡地摆在桌子上,绝影终于松了口气道:“吓死人了!”

这一说,BOSSLiu也发觉了自己的失态,忙说:“激动了激动了,对不起,对不起。”

“不是说这个,说你抽的烟。老子以为失火了。”

BOSSLiu打趣道:“BOSS啥时候变得这么敏感?要是一年前公司失火,如果只有一个人被烧死,那肯定是BOSS你,因为你肯定还坐在那里写程序。要镇定,你看那泰坦尼克号,就算马上就要沉了,人家拉提琴的还是一样拉着提琴,这是什么精神?这就是敬业精神!”

绝影白了他一眼,努力让自己镇定下来,问:“什么啊?啥事那么高兴。”

“摄像头这模块,我有构思了,就用VFW,网上好多现成代码,BOSS你以后不要再这样照顾我了,大CASE,我要大CASE。”

“大CASE,有!UI界面设计方案有没有?”

“最讨厌做界面。”

“有点深度好不好?什么对话框单文档多文档的都不要来,来就要来个高级的。就高级的,你有没有什么好点子。”

“高级的就是有,就怕技术不成熟?”

“有就尽管说,人有多大胆,地有多大产。”

“那个Norton总知道吧,新版本出来,我就是一直觉得他那界面很特别,你看,不就是个网页么?如果能把界面像网页那样做,不但容易美化,还容易批量生产,你想想,要在Dialog上调整某个Static的字体,还是得写点代码吧?网页就不一样了,直接在HTML上加个Font就搞定。”

绝影去BOSSLiu机器上看了看他的Norton,还真做得像个网页,什么按钮都没有,放上去鼠标就变成手的形状,就是个超链接,再点开,便“卡”地一声跳到另外一个页面。如果是这样的界面,真的能实现多个页面间的方便切换。做软件,做终还得考虑用户的使用,你要是从登记页面转到分诊页面还得用菜单点上好几下,人家的意见就大得很,周总一直以来的设计思想就是“一键式”,就点一下,想去哪个页面去哪个页面。像CSDN论坛一样,导航栏摆左边,要去哪页你点一下就OK。

摆弄了半天,绝影自言自语道:“做这玩艺,好像是得费点功夫。”

“我就想BOSS应该没兴趣去做,还得等我以后自己去研究了。”

“放屁!就用这个方案!去查查,这是啥玩艺类。网上研究界面的人多得很,肯定有现成的。”

“不劳BOSS大架了,之前我稍微研究了一下,貌似这是个CDHTMLDialog类,VC2003里面已经实现了,不过VC6没有这个类。”

回到自己的位置,绝影认真看了看新版本的MSDN,真有这个类,不过是基于对话框的,这肯定也不符合要求,因为至少得在左边要一个导航栏,用document/view结构就很简单,大不了就是换个View类。按照微软的设计思想,有Ctrl就应该有View,有CDHTMLDialog就应该有CDHTMLView,去网上查一查,乖乖,关键字CDHTMLView在Google上居然只有四个检索结果。

绝影突然犹豫了,他开始怀疑自己,在这之前,他从来没有犹豫过。任何东西,只要周总陈董交给他,虽然对破解的CASE他会说:“不保证能做出来。”但是他心里从来没想过什么东西我可能做不出来。在他看来,只要有人能做出来,就一定有办法,所以每次有新的CASE,新的技术难题,他从来不会退缩,他总说:别人能做到,为什么我不能做到?

可是这个挑战太大了,DTMLView应该是刚出来不久,还没有很成熟的技术,公司在这方面更没有什么技术积累,而摆在眼前是个实实在在的CASE,3个月以后就得把东西交给人家,这样做,万一做到一半做不动了,整个CASE就等于失败,而且这种失败和DAP不同,对公司来说,这是直接的经济损失,信誉损失,对自己来说,“小绝啊,从来没让我们失望过”这个神话将被打破,对BOSSLiu来说,难得的一次两个自认为高手的人在一起合作的机会以失败告终,这上非常惨痛的失败。

不知什么时候,BOSSLiu悄悄站在了绝影旁边,他没有打扰他,像是在等待他什么。绝影像BOSSLiu一样突然站起来,说:“就用这个方案。”

BOSSLiu说:“好,我尽快把摄像头模块搞完,一起来搞这个。”

“嗯,我先认真调研一下,先写一个页面的Demo出来,以后其它页面就可以照这个批量生产了。”

几年以后,当BOSSLiu回忆起当初的情景,仍然心有余悸地对绝影说:“BOSS啊,其实当时你决定用DHTMLView是相当冒险的啊,我都捏了一把冷汗。”

绝影笑笑:“我是全身冷汗。”

如果这个世界上所有的技术都是专门一本书或者成册集中在一起,肯定还能造就一大批高手,问题是往往事与愿为,就比如这CDHTMLView,Google上的技术资料虽然少得可怜,好多功能脑子里能想像但又找不到具体实现的代码,好在HTML这东西当初设计得还不错,什么Javascript啊VBscript啊都能支持,这又给程序员极大的想像空间。这功能C++代码实现不了,想办法用Javascript嵌入到HTML里面去,再想办法从C++里面调用Javascript,虽然步骤是多了一点,而且据说Javascript效率不高,但是用户不知道,管他黑猫白猫,抓住老鼠就是好猫。

张厂长的指纹识别模块和BOSSLiu的摄像头模块都如期Close掉,绝影也把第一个简单页面做了出来,看看CASE进度表,正好赶上,这让他悬着的心稍微放了一点下来。赶紧又让张厂长开始做HTML页面设计,BOSSLiu继续投入到UI其它页面的开发。

BOSSLiu对这样的安排已经习以为常,却难坏了张厂长,他早已习惯在Close掉一个CASE后自己给自己放一段小假。

燕儿知道绝影忙,但是能说他什么呢?就算说了也解决不了问题,还得碰一鼻子灰,她唯一能说的就是:“吃饭能不能慢点,你嚼一嚼不行吗?难道还非得赶那几分钟时间。”

其实吃饭真是件好事啊。不但能填饱肚子,还能趁这点时间想点问题,平时都对着电脑,思维难免陷入死角,走到饭桌子上来,思维便又稍微舒展开一点,这时候想问题往往有意想不到的收获。

绝影一边往嘴里扒饭一边对燕儿点头,本来他还想:“嗯,嗯。”两声,奈何嘴里全是饭,开不了口,只觉得这饭菜送到嘴里,瞬间便进了胃,食道大大超负荷工作,不断抗议。你抗议?抗议有个P用,你抗议我就镇压你,加大剂量继续把饭菜往里送,那破赛扬366还能让我超到800多呢。说猪八介吃人参果一口吞掉,连味道都尝不出来,以前绝影不相信,那老猪的食道也宽得太离谱了。听燕儿说到自己,这才来仔细想想饭菜到底是什么味呢?还真没尝出来,可惜这一桌子有鱼有肉,就这样白白给浪费掉。

吃完饭回到公司,周总差异地问:“小绝,小刘,你们还不去吃饭?”

“已经吃过了。”

“哦,都吃过了,我还以为你们只是去上厕所呢。”

二人哼哈两声,便又扒在了电脑上。