(28) 黑屏
一般情况下人在什么情况下喝酒?多半朋友聚会聊到兴奋了,或者发生了什么刺激人的大事,比如恋爱了,失恋了,发财了,破产了……- k( G0 S# s. f. l- q
绝影想这么晚了,又没有什么聚会,BOSS Liu找自己喝酒,肯定是受了什么刺激,毕竟同事一场,还是应该好好开导开导他,于是屁颠屁颠跟他跑到楼下烧烤摊。& z" V# |3 [: V3 O v1 q) b9 s8 J
BOSS Liu一来就大声武气要了两瓶啤酒,一碟煮花生,两条烤鱼。今天是他们俩最后一次领“生活补助”的日子,BOSS Liu显得特别大方,他点菜的口气就像武松的“老板,来三大碗酒,切二斤牛肉”或者孔乙己的“温两碗酒,这次是现钱,酒要好”一样。绝影跟他推辞不喝酒,土匪他们都知道他对那玩艺过敏出差的时候也有过惨痛的教训,BOSS Liu却不知道,他越是推辞,BOSS Liu越是觉得他不给面子,或者深藏不露,就越是让他喝。
所以这喝酒劝酒里面也有很多道理,比如喝醉了的人总说自己没醉,没醉的人反而不停地说醉了醉了不能再喝了。你说:“这个技术,我不会,没接触过。”别人反而说:“你肯定会,就是不愿意说!”/ F$ d* n+ C' R
最后还是让绝影坚持了原则,BOSS Liu给他点了瓶豆奶。
两人坐定,绝影平静地说:“说吧,有什么事?”8 N! T% o" e6 w- @& g" N/ E
“没事,就喝酒。”
后来绝影才知道,BOSS Liu就是很普通人不一样,就是喜欢没事的时候喝酒,当然,朋友聚会或者发生了什么刺激的人的事他也会喝,但还是以没事的时候喝为主。这习惯和他喜欢没事的时候写程序差不多。大部分人工作的时候写程序,他喜欢在不工作的时候写程序,虽然他工作也是写程序。# ? k# C8 y* \$ O) N- F6 _& n
BOSS Liu喝酒也和普通人不一样,一般人几杯酒下去,酒力上来,就开始夸夸其谈,也就是所谓的“放开了”。BOSS Liu两瓶啤酒下去就像呷了两口茶,面不改色心不跳,仍然平静地对绝影说:“你有所不知,写程序,本来乃是我的副业,我以前真正的主业是下象棋。想当年我在棋院连摆二十几盘,杀得他们屁滚尿流失了魂……”
“既然如此,为何你现在不下棋了?”
“这个你就有所不知了。下棋,对大部分人来说毕竟是消遣,你要到棋院下棋,最多跟你下100块钱一盘,下几盘人家莫清楚了你的底就再也不跟你下了。那下棋的人也就那么多,最后人人都莫清了你的底,就没人跟你下了。就算进了专业队,补助也就是那么多,这辈子都没有翻身的机会,人就完了。”
绝影想这话的确说得有道理,想当年高中的时候自己叱吒文坛,还自诩为“XX四大才子――之首”,居然还像模像样地在学校张罗一个文学社,居然还得到文联副秘书张的亲笔信,可后来到了大学在大一一个风雨交加的夜晚,他向超薄借了5块钱,去楼下小卖部买了10根散烟――红塔山,等寝室熄灯,土匪他们都已经入睡,熬更受夜地写了一篇文章:《我和电脑》,得了学校唯一一个一等奖,拿了500元奖金,还差点加入了作协。可从此以后,他就封笔了。别人不知道为什么,他知道:你一篇文章从动笔写到修改到再修改到发表到拿到稿费,真可谓是费尽千辛万苦。可那稿费是顶天了一个字一块钱,那几个钱不要说养家糊口,就连烟草费可能都赚不回来。再说了,现在网络发达,随便十一二岁的那些小娃娃写点几百个字的“印象派”文章发到网上都敢跟你一比高下,枉你看了那么多书知道那么多典故满脑子天文地理知识,一点用处都没有。4 d: X' k6 F, r4 T5 k
所以他还是觉得写程序好。起码写程序要学,不像那写文章,只要你会说话,把说的话写出来就叫文章。而且写程序的收入也颇丰,虽然现在在公司体现得不是那么明显,但那50行100元的三元线性回归程序却坚定了他的信念。
绝影这样想着,BOSS Liu继续说:“我现在最大的心愿就是自己写个象棋程序,你知道不,象棋程序最关键的就是局面优劣判断……”
他这样说,绝影还想起自己研究过一点遗传算法,于是接着他说:“如果能把遗传算法用到里面去就爽了。这样就可以简化好多计算。”, q5 n' a1 S/ t1 G3 R1 V
说起遗传算法,好几年后绝影都觉得没白研究,虽然他的“研究”仅限于“知道”,以后随便别人说起什么,他都能说:“如果能把遗传算法用到里面就好了。”7 {) k$ D! S8 n$ D. _% ^
别人说:“这个SSR就是太复杂。”
他说:“如果能把遗传算法用到里面就好了。”1 E$ @4 B% X0 m
别人说:“这个图像识别技术就是太复杂。”
他说:“如果能把遗传算法用到里面就好了。”; N" Q0 v% T8 z: p1 w' ~' ]
别人说:“这个三维重建技术太复杂。”
他说:“如果能把遗传算法用到里面就好了。”
反正别人也不懂遗传算法,就算懂,也就仅限于“知道”。他一讲“遗传算法”就仿佛讲大道理,就仿佛在念《心经》:“是大神咒,是大明咒,是无上咒,是无等等咒…..”
等BOSS Liu吃饱喝足,他站起来很大方地喊:“老板!买单!”
他这是典型的四川人性格,哪怕就是吃碗一块钱的酸辣粉,吃完后都要大大咧咧地喊:“老板!买单!”; ~0 Z! \2 Y% X& Y
绝影抢着去买单,一把被BOSS Liu推开。后来在任何场合绝影总是会抢着买单,唯独不抢BOSS Liu的,因为经过那么一次教训他知道他抢不赢他。明明两个人都是穷人,也许身上的钱还没有他年龄多,都还要抢着去买单,不知道这是不是程序员的习惯。
' n( n2 H2 x1 U3 I5 ]
第二天两人还是睡到楼下幼儿园放《小哪吒》才起床,那是九点十五分准时。公司规定九点钟就要上班,他们俩却总是在放《小哪吒》才起床,如果不是那声音太大把他们吵醒也许他们还要睡。
学校的事情已经了结,周总让他们把所有心思都放到五一节验收的这个CASE上来。其实五一节已经过了很久了,CASE却拖到现在,那边放射科主任几乎是每天一个电话,BOSS Liu负责做登记工作站,绝影做KIPACS影像采集部分,原来那个KIPACS在影像采集功能上实在太不完善,BUG又多,绝影不得不重新来做,也是边做边骂以前的程序员。
BOSS Liu一直因为自己KIREGIS中的多线程技术洋洋得意,可是KIREGIS老是只在公司中内部测试,他说:“公司里这点数据,根本无法体现出多线程技术的优越性。我那KIREGIS设计容量是十万级别的数据!”
等待的日子是辛苦的,终于有一天,周总说:“小刘啊,今天咱们一起去XXX医院,先把软件全部装上去,他们的机器已经到位了。小绝,这次你就不用去了,在家多休息休息。”
这正是BOSS Liu期待的。他忙接着说:“就是就是,绝影你回家好好休息吧,这次我去,应该没什么问题。”) S% N9 J$ w) t- h
绝影回到家,没想到燕儿今天也来了。本来他们还没放假,这边离学校又远,她平时就难得来一趟,这次来还顺便买了菜正在做饭,在这种情况下,最浪漫的事莫过于从后面搂着她的腰说:“亲爱的,你辛苦了。”可绝影偏偏不懂浪漫,他心里惦记着KIPACS的安装要领不知道BOSS Liu听进去没有。当时本来想给他写个文档,BOSS Liu觉得太浪费时间,给他说了几句要点,他又一直在那里摆弄KIREGIS也不知道他听没听,反正他最后是拍着胸口给绝影打了保票。
吃完饭,他对燕儿说:“今天公司去安装软件,我忙了这么久,周总让我今天早点回来休息,估计现在他和BOSS Liu还在医院呢。今天在家我不用工作了,好好陪陪你。”话刚说完,绝影最担心的事情便发生了。周总电话打过来,说:“KIPACS测试好了吗?怎么在这边视频出不来呢?”
绝影一听就急了,KIPACS捕捉视频是绝对没问题的,肯定是他们在安装上出了什么问题,他又耐心地跟周总讲了一遍装要领:要把 “bin”目录中的东西拷贝到安装目录,然后运行regist.bat注册采集卡和报告格式的ocx,再安装采集卡驱动,然后在DSN中添加一个KIPACS数据源,驱动程序为“MS Access”,文件指向“DB”目录中的KIPACS.mdb。说完了,他小心翼翼地试探道:“要不我来一趟吧。”
“嗯,你还是来一趟把,打车过来。”# D. E% s1 I, r8 z" h: j6 Y" C
一听周总这么说绝影气得要死。你早想要自己来那我讲那么多要领有个屁用啊。要不你就直接让我来一趟,要不你听了要领自己在安装一次,不行再让我来。这就好比明明路标上已经标明“解除60公里速度限制”,你开到70公里,交警刷刷就是一张罚单。你下车来指着标志耐心地说:“警察同志,已经解除60公里限制了呀。”那交警点点头若有所思地说:“是呀。你说得很对呢。”他这么说你以为OK没事了刚要转身上车,可他话锋一转:“可是罚单都已经开了。下次吧,下次不罚你了。”那有屁用啊,下次,下次我超速的时候你都不知道哪去了。
燕儿听到他们的电话,对绝影说:“你还是去吧,早点去早点回来,都已经十点了。下次再陪我。”
于是他满怀对燕儿的愧疚打车去了医院。果然是安装的问题,最早的KIPACS用的SDK2000采集卡,但那东西效果实在太差,这次医院的要求要高一些,于是换成了SDK3000。为了这次更换绝影还专门重写了于采集卡相关的代码,原来那个程序员用的ocx开发,搞得像VB,这是他最忌讳的,于是他全部改成了API调用。没想到BOSS Liu聪明一世糊涂一时,偏偏去装个SDK2000的驱动程序。驱动没装对,视频出不来,两人又怪绝影的程序没写好。对他们来说这是个小小的问题,绝影两分钟就可以解决,可就这么一个小小的问题却要绝影大半夜打车10公里跑到医院来。对绝影来说,平常大半夜打车10公里来解决这个小小的问题也是小小的问题,可今天,燕儿还在家里等着自己,对他来说,这就是大事。他们永远不能理解这事对他来说有多大。) p; h) [; M. `: [, f# T; y( m) p
换个驱动,KIPACS果然如在公司测试环境中一样流畅地运行起来。绝影拍拍BOSS Liu的肩说:“小伙子,下次注意点!”这话的言外之意是:“出这个问题责任不在我,在你。我写的程序,怎么会有问题呢?”回头看看周总,他还是丝毫没有让绝影回去的意思,看来他最后的一丝幻想也落空了,想想反正这么晚都已经出来了,就算现在回去燕儿也还是对他有意见,还是跟他们一起搞完再回家算了。9 C3 @. U: I8 b6 o
那天晚上,绝影三点才回家,燕儿已经睡熟了。 g: ]( B" F5 J
u; r; {& B! k7 b1 g
再一次去医院,是验收的日子。那放射科主任手忙脚乱。医院上头的领导要来视察,如果领导不满意,责任肯定都在主任头上,主任又把责任下放到周总头上,周总又把责任下放到BOSS Liu和绝影头上,所以绝影他们也是手忙脚乱。# r: O( E- l% h7 D
KIREGIS的测试效果还是让人满意,BOSS Liu一路顺畅地给领导表演了如何登记,这边登记的数据如何从X光机上调出来,如何从CT上调出来。KIView测试效果也不错,这个软件由周总负责,本来就是历经考验的成熟产品,直接装上用就行了。走到X光机这里,周总胸有成竹地说:“下面是KIPACS工作站,它从KIREGIS数据库中读取登记的记录,将TH600拍摄的图像数字化并转换成DICOM图像,可以进行图像处理,然后可直接打印报告,拍摄的胶片可以直接打印到包工中。下面由公司小绝来演示下使用流程。”
绝影也胸有成竹地走过去,从前台登记,调阅记录,拍X光,待图像进入KIPACS他开始演示调窗。调窗本是放射科医生的专业他自然不懂,只能胡乱地衡窗宽纵窗位地大幅度调,图像也跟着大幅度变化起来。正在医院头头准备点头的时候,突然,屏幕黑了。
(29) C++和ASM
见屏幕一黑,绝影也 不知道是怎么回事,以前在公司测试的时候从来没出现这种情况,反正肯定是程序出了问题,坏就坏在还是全屏,图像一黑,整个屏幕就黑了。他用眼角的余光瞟了 瞟周总,还好周总正在兴致勃勃地给医生们介绍KIPACS是如何如何好,只有医院领导一个人发现了问题。他赶忙退出全屏关掉KIPACS,再次打开。
医院领导正要开口,绝影抢在他前面说:“这是正常现象,一般KIPACS用久了就要重启一次。”那言外之意就是:“这黑屏的事,没啥大不了的,我们早就知道了。并且这又是不能解决的,要能解决我们还不早就解决了。就比如手机一样,就算是Nokia N95,够高档了吧,可是你能拿它放DVD吗?放不了,还是将就着用吧。所以还是麻烦你们偶尔重启一下吧。”
周总听他这么说,回过头来,丈二和尚摸不着头。
最后医院领导还是在验收报告上签了字,一行人撤回公司的时候,周总问:“小绝阿,那个KIPACS重启是怎么回事呢?以前怎么没听你说过?”
绝影哪敢给他讲真话,忙说:“没什么大不了的,回去我调研一下,估计还有些小BUG。”
在公司做CASE就是这样,虽然公司要求所有BUG的发现和修正都要最终体现到软件开发文档里,但实际操作起来,往往是程序员发 现了自己的BUG能隐瞒下来的都隐瞒下来,自己抽个时间或者加班把它修改了,这样给领导的印象要好一些。这和现在很多小煤窑的做法差不多,虽然上头三令五 申要杜绝安全隐患,但事故总还是要发生的,虽然又说发生事故要如实上报及时补救,但小老板们总是能隐瞒不报就隐瞒不报,自己私下处理了事。你想真要是如实 上报你一个小小煤窑一年12个月就报了二十多个事故上去明年的开采许可证还怎么可能拿得到?
绝影说是小事,回到公司又看了半天都还是没搞明白,问题就出在调窗上,这个调窗原理说简单点其实就是把图像的一些属性调整一下然后重新绘制到DC上,小幅 度地调整都没有问题,就是大幅度长时间调整最后显示图像的部分都会黑掉。先他以为是对WM_PAINT消息的处理有问题,这个就比较麻烦,系统经常要发送 WM_PAINT这个消息,在里面下个断点或者加个MessageBox就一直要不停地弹出。搞了半天还是找不出个所以然。你想要是真是对这个消息处理出 现了问题,那应该一早调窗就有问题才对。
调试了几次,绝影发现系统变得越来越慢,打开任务管理器,乖乖,KIPACS居然占用了300多M内存。要知道KIPACS刚启动时不过只占用了17M内存。看样子像是内存泄漏。这样想,他继续调窗,调一下发现内存涨上去可又没降下来,果然是调窗的时候发生了内存泄漏。
知道了原因解决起来就要快得多,原来是GetDC获取DC后没有使用ReleaseDC把它释放,这部分在WM_PAINT消息中,WM_PAINT消息又频繁发送,所以那内存泄漏起来真是要命得很。
加上ReleaseDC,KIPACS终于可以流畅地调窗,看看任务管理器,内存占用基本稳定在20M。
搞完这个BUG,绝影看看时间,已经是晚上9点多,公司的人早不知道什么时候都走光了。这次的事情还是给绝影留下了深刻的教训以至于在很常一段时间,别人问他:“影头,你看看我这程序,怎么老是出问题阿?”他都会跟别人说:“先看看是不是有内存泄漏。”
问题解决了,等到第二天周总来到公司,绝影便轻描淡写地对周总说:“昨天那个KIPACS需要重启的问题我已经解决了,是个小问题,内存泄漏。”
所以什么叫打肿脸充胖子。明明昨天花了5,6个小时憋得几乎走投无路终于解决出的问题现在在老总面前却轻描淡写地说:“是个小CASE而已。”想BOSS Liu也许也是这样,自己不知道熬了几个通宵脑细胞不知杀死多少终于给做出个多线程出 来,却轻描淡写地说:“多线程嘛,那个还不容易,二三十分钟就搞出来了。”两个人都是爱吹牛,好像自己能耐大得不得了,什么技术阿方法阿算法阿解决方案阿 还不一切都尽在掌握中,原以为牛这样吹了,大家就决定自己有多了不起,结果最后受苦的是自己,开心的是老板,老板们正是利用了这种心理,他们会说:“不错 不错,这么个大问题能这样快地解决,这个程序里面还有二十多个BUG,都是小问题,给你一天的时间够了吧。”
周总对绝影反映的问题还是比较关心,他说:“内存泄漏这个问题是广泛存在的阿,这种问题又最不好调试。我给你介绍个软件吧,BoundsCheck,专门测试内存泄漏。”
在以前,绝影绝对不 会去关心别人介绍的什么软件,首先那软件是别人介绍的,自己又不熟悉,软件好不好阿,怎么用阿都要自己去摸索,特别是这个BoundsCheck一听就知 道是个英文版的软件,还要拿金山词霸去翻译菜单或者网上到处去找汉化版,本来以为用这个软件能极大地提高劳动生产率,结果反而花在学习上的时间都远远超过 了它提高的劳动生产率,这叫“磨刀误了砍柴工”。
可这次绝影还是比较慎重,昨天虽然把问题解决了但实在把自己搞得太痛苦,也幸亏昨天开了任务管理器发现了问题,要不说不定把代码跟踪到太平洋还不知道问题在哪里。
去网上下个BoundsCheck6 for VC,原来是大名鼎鼎的Numega公司出的,想能出SoftICE这样的软件的公司出的东西还能有假吗?就比如今天微软宣布出了一个新的操作系统,那还不成为各大网站的头条新闻。所以不仅是衣服,就是软件也有个品牌效应。
那天在公司又调研了一整天,绝影第一次知道了“纯化测试”这个词。以后每次周总说:“OK,明天我们进行Purification。”绝影就跟大家翻译道:“好,明天我们进行纯化测试,没装BoundsCheck的把BoundsCheck装上,不会用的找我。”
最近几天BOSS Liu在公司颇为得意,看来医院对KIREGIS试运行非常满意,要他修改的地方也很少。KIREGIS的代码一直是BOSS Liu在负责,绝影从来没去看,这也好,世界上最幸福的事情就是你把事情交给别人别人做好了交给你居然和你的要求一模一样,根本不用改。因为没什么事 做,BOSS Liu正好潜心研究起C++来。
本来有好多事情都是一样, 会做容易做好难,就说这C++就算你是写了五六年程序的程序员,说函数模板、类模板、纯虚函数、虚基类这些东西你又用上了多少。BOSS Liu研究了一些这方面东西,再加上KIREGIS在医院取得了成功,觉得差不多火候已到,绝影也不过尔尔,不过就是汇编好一点吗?还是那句话,汇编不过 100多个指令,有什么难的。
可绝影总以为他对C++的研究应该仅限于“理论”上。
两人见了面,BOSS Liu问:“你知道这个XXXX基类的构造函数会被调用几次么?”
绝影自知肯定回答不上来,在这种 情况下最好就不要去回答,BOSS Liu是有备而来故意刁难你,不是带着请教的,所以就算你侥幸答对了,也并不能让他对你钦佩的感觉油然而生;要是你答错了,就正中他的下怀,从此以后凡是 有技术上的讨论,他总是会拿“你XXXX这个问题都不知道,还说个P呀”来压你。
这正如鲁迅先生说的,一家人生了孩子,你说:“这孩子好呀,以后要当什么什么大官有多少多少钱。”那你是骗人的,可人家父母爱听。你说:“这孩子最后会死。”这是真话,可人家父母不爱听。怎么办,你最好就说:“呵,这孩子……你看……呵……哈哈……”
所以绝影避开问题地重点,也打起哈哈来:“研究C++阿?有什么好研究的?我告诉你,C++能做到的,用汇编都能做到。汇编能做到,C++还有些做不到哦。”
这是绝影的杀手锏。首先把问题转移到汇编上来。这方面他有几年积累,算是个小行家。再说的确在自定位和精确计算代码长度这两个技术上只有汇编能做到,这是高级语言的死穴。管它什么语言,他用这两点都能把它杀了。
BOSS Liu很不服气地说:“我知道你那汇编,在Windows下不过是换成‘invoke’来调用API罢了。还能唬我。BOSS Jue,你去各大公司看看。你那玩艺过时了。”
“你懂个P,存在就是合理,懂不?这是哪个大哲学家说的。”
“我知道我知道。可你那玩艺就快连存在的价值都没有了。我问你,除非你搞病毒,还能有什么汇编能做高级语言不能做的?”
这又将了绝影一军,每次他跟别人说:“我嘛,擅长汇编。”就最怕别人问:“你搞病毒的?”别人这样说,就好像说:“你这人,真长得就像个贼。”所以每次他 都不得不跟别人讲一大堆什么汇编不一定搞病毒,除了搞病毒汇编还有什么什么用途,还能写什么什么程序。想了半天,绝影实在想不起汇编还有什么优势,但沉默 下去就是认输,从此以后,BOSS Liu就可以名正言顺在他面前显摆C++,从此以后自己和汇编语言在公司中就再没有什么地位。请急之下,他忽然又想起大学时候做过的大数运算库,终于洋洋 得意地说:“谁说没用了,我曾经把一个C++做的大数运算库算法原封不动地翻译成汇编,算1024位乘法速度居然提高了200倍。我用汇编,可以把大部分 操作数都存到寄存器中,可怜的C++阿,还得全部存到内存中,做高级运算还是应该在一旁休息去吧。”
说完这话,BOSS Liu沉默了。这是理论论据和事实论据都充分。本来汇编速度快这是毋庸置疑的,再加上绝影有写好的程序摆在那里,BOSS Liu从哪里驳都驳不倒。见他不说话,绝影大模大样往自己桌子上一坐,心里嘀咕着:“还跟我比C++,我汇编是通吃。”
大概过了10分钟,BOSS Liu忽然跳起来大声说到:“BOSS Jue我差点让你给忽悠了,刚才忘记了CACHE。现在的CPU都有CACHE,CPU对CACHE的访问速度和寄存器差不多,C++会把经常使用的变量放CACHE里面,速度应该和汇编差不多才对。”
绝影本来以为可以稳坐钓鱼台了, 没想到BOSS Liu就是这么个不见棺材不掉泪的人,听他这么说还是有道理,至少从理论上讲应该是这样,这下他又解释不了实践上200倍的速度差,现在没有理论作为依 据,就是牵强地去跟BOSS Liu解释也会把自己在这次争论中置于非常不利的地位。最后,还是绝影沉默了。
从那次争论以后,BOSS Liu再也没给绝影夸过C++的好,也没再夸自己在C++上的造诣有多深。绝影也没再在BOSS Liu面前显摆汇编有多无所不能,自己汇编有多炉火纯青。两人都心知肚明,他们俩水平一般,要是继续在这语言孰优孰劣上争论,谁都没必胜的把握,如果输 了,脸就丢大了。还不如好好再深造几年,到时再一比高低。
很多年以后,绝影终于想到当初想不出来的问题:汇编语言使用寄存器并不是对寄存器访问比对内存访问更快,而是对寄存器寻址比对内存寻址更快。很多时候他想把这个告诉BOSS Liu,但他终于还是没告诉他。
一晃两个月过去,绝影和BOSS Liu去医院对他们的软件系统作了两次例行维护和更新,医院的规模还算大,登记数据已经有三万多条,KIREGIS还是经受住了耐力测试。KIPACS经 过绝影两次更新基本上也运行比较稳定。在领工资的时候,周总对绝影说:“XXX医院的CASE已经验收合格,这个月给你发500元的奖金。因为这个 CASE的收入也不多,就你KIPACS贡献最大,所以奖金也就你有,对其它的人就不要声张了。”
本来绝影觉得这么大的CASE忙了这么久才500元的奖金周总也真是太扣门了,但听周总这么说,绝影还心里笑着走出了他的办公室,恨不得立马当众大声宣布:“知道吗?XXX医院项目奖金500元,就我绝影一个人有!”
BOSS Liu也进了办公室。周总还是说:“XXX医院的CASE已经验收合格,这个月发给你500元的奖金。因为这个CASE的收入也不多,就你KIREGIS贡献最大,所以奖金也就你有,对其它的人就不要声张了。”
当然,BOSS Liu在出来的时候也恨不得力马当众大声宣布:“知道吗?XXX医院项目奖金500元,就我BOSS Liu一个人有!”
大家一个二个领完工资,脸上都喜气洋洋。公司的电话响了,张厂长积极地抢着去接了电话,说了几句,回过头来说:“医院打来的,找绝影,好像程序有些问题。”
绝影一下傻了。傻的不是程序有些问题,是医院居然指名点姓要找绝影,而且医院居然还知道“绝影”的名字,自己麻烦了
(30) RMB2000
见绝影吓得脸都变了色,BOSS Liu打趣的说:“想不到BOSS还是从原始部落出来的!据说有些原始部落就是怕别人知道你的名字,别人知道就能用咒语让你死。”
绝影白了他一眼,接过电话。
电话是放射科主任亲自打过来的,在那头急得要死,说系统不能用了。
明明去安装的时候都是好好的,这BUG再怎么严重也不至于让整个系统都不能用了吧,事情要真有那么严重自己刚到手的奖金估计又要泡汤。忙跟他说:“什么时候发现问题的。”
“前几天就开始了,不过还勉强能用。今天他们说不能用了,我跑过来看,果然不能用了。”
“是什么情况?”
“前几天是登记的时候速度太慢,登一个人起码都要等5分钟,还不如以前用纸登记快。到今天,简直是不能登记了,估计起码要等一个小时。”
听他这么说,绝影终于松了口气。这是意料之中 的事情。想医院一天做的病人起码有几百个,就算如BOSS Liu所说KIREGIS设计容量是10万级别数据量那最多也就几个月就撑爆了。再加上那些X光机,CT机拍的片子转换成DICOM图像一张动辄就是好几 十M,这么大的数据量不慢死才怪。本来在这种情况下应该配套一个数据备份和刻录的软件,奈何CASE的时间太紧,验收的时候也就是勉强才做完连Beta测 试都没有这些增强要求自然没时间去给他考虑,周总的意思是先等验收过了,钱到手了,大家闲下来了,再花点时间慢慢给他做个备份系统。
虽然话说“顾客就是上帝”,现在好多顾客认为自己付了钱,还真把自己当成了上帝,东西出一点小问题就蹦炸起来:“坏了!不能用了!你们赶紧给我搞好!”绝 影和BOSS Liu以前给别的医院做系统维护的时候听多了这样的抱怨,反而反感起来。那时候没办法上头有命令必须要去做,现在又不一样了,东西验收是你签的字,钱我也 拿了,老子现在就是上帝!
于是他慢条斯理地说:“别急别急,那是因为数据量太多了,正常情况。你想想用了那么久了,机器里面装了那么多数据,哪有不慢的道理,就是你自己机器时间长了你还不是得拿Windows优化大师搞一搞。”
“那现在怎么办呀。”主任这么说,声音有点变调,绝影忽然又有点可怜起他来。
“这样吧,你们自己不是有网管吗,让他把硬盘里的数据拷出来刻成光盘然后删掉,数据少了速度自然就快了。”
“这种事情我们怎么敢搞啊,万一把系统搞坏了是小事,数据掉了我们都交不差,现在卫生部规定所有医学数据都至少要保存5年,这个事情谁都马虎不得啊。你给想想办法帮帮忙啊!”
绝影当然知道这事情他们不能搞,这样说就是想吓吓他,以前东西还在做的时候周总总是说:“小绝啊,今天主任打电话过来,说那个KIPACS还需要个什么什 么功能。”所以他肯定地认为KIPACS搞那么长时间加那么多功能出那么多BUG罪魁祸首都是这个主任。他一个小小的要求在那时候就能让绝影起码多加三天 的班。
见主任说话都哆哆嗦嗦,想像着他人在那边全身像筛糠似地打着颤,绝影的虚荣心忽然得到极大的满足,全身都自在起来,于是用很大方地口气说:“这样吧,这事情我我给上面反应一下,我们再调研调研,看能不能给你们做个工具专门来备份。这样对数据就比较安全了。”
“那就最好了。但是这几天我们怎么办呢?”
“这几天?你们以前 没装我们系统的时候是怎么做的现在就怎么做。等到我们把东西做出来吧。机器先不要开了,要再开机器出了什么问题数据掉了那就是你们的事情了。”绝影知道那 主任怕的根本就不是系统坏了,按照合同,坏了你绝影得再给我装,装到我满意为止。他最怕的是数据丢掉。现在哪个软件的License上不是写的:由于用户 操作导致的数据丢失,公司概不负责。绝影他们公司也是这样写的。数据掉了就你自己的事情,你得自己想办法给医院领导给卫生部交待。
主任在那边唯唯诺诺地说:“好,好。那你们尽量快点。急死人了。”
放下电话,绝影对BOSS Liu说:“你懂个P。名字这东西,让别人知道了不得了,其他人他都不认识,以后每次事无巨细他打电话过来都说:喂,找绝影。那还不把整死啊。
下班回家的路上,BOSS Liu从路边的邮政储蓄那里给家里寄了300块钱。绝影觉得他也太扣了,要寄就多寄点,至少都得1000,你300块钱,自己都不好意思拿出手。他迫不及待给燕儿打了个电话,说:“你今天过来吧,我有重要的事情跟你说。”
这学期燕儿也是大四了,绝影在哪个时候别人早不知道他行踪在哪里。但女生不一样,胆子比较小,每天还是老老实实呆在学校,虽然学校里课也没多少事情也没多少,每次来绝影这边好像还得下很大的勇气似的。
将近两年的时间过去,绝影也深深地摸清了燕儿的脾气。要想把她哄过来还得对她说:“有重要事情要跟你说。”至于什么重要的事情,当然是“重要”到要当面才能说,好像就怕电话里一说这事便让全天下人都知道了,肥水流了外人田。
燕儿也不懂吃一堑长一智,虽然每次过来听绝影面授机宜结果都大失所望,原来就这么屁点大个事情还劳驾自己亲自跑过来。女人就是这样,同样一个花招只要你愿意继续耍,就可以让她永远上当下去。
等她来绝影这里已经差不多八点了,晚饭也还没吃。绝影神秘兮兮地从钱包里掏出一把人民币,先一二三四五六七铺开,说:“看见没有?RMB2000大洋,这个月工资。看2000有多少!”说完又把人民币合拢,掂了掂重量,比了比厚度,突然把钱往天上一撒,又赶紧一张一张拣起来,边拣边说:“快拣钱啊!”等钱全部拣完,绝影把它紧紧撰在手里,好像那不是2000,是二十万。
燕儿心里想着他有重要事情要说,对RMB兴趣不大,问:“有啥大事情,快说啊。”
“就这个事情。”
“就这个事情?”
“就这个事情。工资1500,加上XXX医院的奖金,总共2000大洋整。”
“就这个事情?”
“就这个事情。那500奖金全公司就我一个人有,因为我贡献最大。别以为BOSS Liu的KIREGIS做得好什么多线程,那都是忽悠人的,周总都说了,KIREGIS等于是送给他们医院的,真正的重点是我的KIPACS。”
本来燕儿还是有点不高兴,自己大老远跑一趟原来就说这么个事情,在电话里面完全就可以说清楚。不过看见绝影手里撰着钱乐得傻笑,她还是很替他开心。她挺关心他,问:“吃饭了吗?”
“没吃,等你来一起吃。今天领了工资去吃火锅,哈哈。去那家‘刘一手’,没想到他们表面上不咋的,生意还火爆得不得很,我去观察了几天,几乎夜夜都爆满。”
本来两人都穷,难得上一次馆子,不过火锅店却例外。想绝影每次说话都以:“小时候家里穷……”开头,两人以前在学校的时候每周都得算计着明天还有多少钱, 该吃什么,有时候钱还真接不上来,于是就去吃火锅。学校外面的火锅消费满10元就发张1元的代金券,下次来的时候抵1元钱,没钱了,就约几个同学说:“ 走,今天没事,一起吃火锅。”吃完火锅AA制,别人付现金,他们付代金券。
所以今天吃火锅,两人感触还是很深。绝影从来不喝酒,今天也没喝酒,却像喝醉了的人一样,一直跟燕儿滔滔不绝地说话。
他说做那个KIPACS以前的程序员做得要多糟糕有多糟糕,十几个cpp文件到处都是定义的全局变量,又没用匈牙利命名法,没有注释,甚至书写代码连缩近都没有,自己居然给他改好了。亏得周总他们以前还说那个人是个高手,自己还崇拜了他起码半年。
他说那个放射科主任,挺着大肚子,脑袋上光光的,要求还挺不少,又不一次性提完,一会给他提一个一会给他提一个,害得他反过来复过去修改。就像放屁一样,你要么一次性把屁放完,好像屁还是宝贝似的还节约着放,一会放一个一会放一个,你自己到是爽了,可把别人整惨了。
他说调窗的时候内存泄漏,差点把他害死,那天晚上他加班加到晚上九点,饭也没吃,好歹给搞了出来,周总都还不知道。要是换成BOSS Liu,还不一定能做出来,这项目多半就给挂了。
他说那数据库备份,本来当初就应该做,周总硬是说不做。现在想来还是周总老谋深算。要是真给他们做了,今天他们也不会打电话过来孙子一样求公司。想起自己 在大学的时候,老师说他们以前给别人公司搞电话交换机,搞好了把钱收了里面留个后门,保修期一到马上拨过电话过去,那交换机就不工作了,别人公司急得不行 让他们去修。修,当然行,过了保修期,得付钱。周总他们虽然还没有这么恶毒,但终归可以在维护这方面卡他医院一下。他们态度好,就送一点,他们态度不好, 就紧一点,反正我已经收了,你吃屎的还得听咱拉屎的话。
绝影只管自己滔滔不绝的 说,有很多东西他也知道燕儿听不懂。她不知道什么是cpp什么是全局变量什么是匈牙利命名法,也不知道什么是内存泄漏什么是 GetDC,ReleaseDC,可他还是给她说,对他来说,除了燕儿,再也没人可以这么和他分享他的工作和他成功的喜悦。这2000块钱是什么?对别人 来说,就是普通的一个月工资加奖金,对他来说不是,这是他第一次一个月工资加奖金。
燕儿什么话也没说,一边不断给他夹菜一边静静地听他讲。
医院数据库备份工 具很快就做好了,本来周总老早就计划了这个东西,验收完回来就让绝影来做,工具很简单,就是把KIREGIS用的MS SQL数据库中的数据导出到Access数据库中,把原来的数据删除了,把Access数据库的内容刻录下来就OK。本来MS SQL好像自带有导出成Access的功能,写个脚本就能实现,但绝影和BOSS Liu对这个实在不太熟悉,两人又懒,不愿意去网上搜,更不想去论坛上提问。首先网上搜没针对性,人家写的东西,又不是专门量身为你这个CASE打造。一 句话,麻烦。去论坛上提问,那是守株待兔,还要看大虾们今天有没有时间心情好不好来给你解答。
于是就自己做,把MS SQL数据库的内容读出来,再写到Access数据库中去,反正当初在开发的时候就用ODBC,其实这一读一写代码差不多。
绝影再去医院给他们装这个备份工具,主任再不像从前那样趾高气昂,反而对绝影有点毕恭毕敬,起码对他说了五个“谢谢”。走的时候绝影说:“怎么用也写到文档里面去了。你们最好还是派专人来操作,免得人多手杂把数据给损坏了,另外要是出了问题也容易追究责任。”
忙完了这些,大家差不多可以暂时闲下来,BOSS Liu继续研究他的C++,每天还是坐在他的电脑面前看代码写代码。张厂长去负责KIPACS遥控器的CASE,这也是个增强功能,不用很急。周总又天天坐办公室了估计又在调研什么大CASE。
绝影一时找不到什么事情好做,在公司摆弄汇编也不太合适,再说也没什么东西还摆弄的,汇编那东西,就是写个“Hello World”的窗口都要摆弄好久,实在不好“抽时间”来摆弄。不过“抽时间”去书店转转还是可以的,于是又去西南科技书店买了本书:《加密与解密》,看雪 编著,电子工业出版社。本来绝影在看雪论坛上转悠了一阵,觉得那上面都是高手,好多东西都还是看不懂,他看不懂的就觉得别人是高手,其实他也看不懂《史 记》,于是他也觉得司马迁是高手。
正当绝影、BOSS Liu、张厂长三人悠载悠载地过着小日子的时候,有一天,周总把绝影叫到办公室,严肃地说:“小绝啊,我很少批评你,可这次你犯了个严重的错误!”
(31) 大CASE
听周总这么说,绝影吓了一跳,不光他吓了一跳,BOSS Liu和 张厂长也吓了一跳。在他们印象中,周总脸上总是带着平静地表情,即使偶尔批评起人来,也还是带着平静地表情。这时候,绝影突然想起念大学的时候,本来和燕 儿在校外租了房子悠闲地过着小日子,没想到有一天公安局会突然来敲他的门,想到公安局肯定是来查自己非法同居来了,吓得要死。想在来看,周总一定是来清算 平时不按时到公司,作风懒散的事情,果然是“出来混,迟早是要还的”。
周总毫不留情地说:“你看看你写的代码,这个备份工具里面,你居然一次性把SQL数据库里的数据全部读出来放到内存,再写到Access数据库中,为什么要这样,为什么不读一条写一条?”
一听不是清算作风的事情,绝影又带着庆幸地送了一口气,就像当初打开门,原来公安局是来了解杀人焚尸的事情,跟非法同居完全不沾边,自己一下从犯罪嫌疑人变成证人,其中的成就感不言而喻。
再说周总问的这个问题绝影也早就想到过,于是胸有成竹地说:“这个问题我当初也想到了,考虑到读一条写一条可能太浪费时间,还不如一次性读到内存中,那样肯定要快得多。”
听绝影这么说,周总慢条斯理地说:“小 绝啊,这就是你经验不足了。你在公司里测试有多少数据?就一百多条,一百多条数据能测出什么?要是数据有几万十几万呢?你全部读到内存中,内存根本不够, 操作系统只好频繁地使用交换文件,这样速度不但不会提高,反而会慢很多,你自己看看,你系统每次用久了后是不是慢得很?那就是因为用的时间长了,内存占用 多了,系统使用交换文件,最后慢得不得了。”
绝影一边听 周总说,一边注意他的表情,仿佛还带了点洋洋得意的神色。虽然传说中周总写程序还是很牛B的,但绝影从来没见过他写的代码,对这个传说还是持了点保留意 见。没想到这次分析问题周总还是讲得头头是道,这个问题,没点经验的人还真发现不了。于是他唯唯诺诺地说:“有道理有道理。是我没考虑周到。”
“既然这样,那就赶紧改吧,别等问题暴露出来才来忙,我们要防患于未然。你赶紧改,我在旁边看着,改好了重新送过去。”
周总说完,泡了杯茶,端了根板凳坐在绝影旁边。
绝 影突然觉得不自在起来。大家在公司各忙各的,就算实在没事可做也要装出很忙:打开一个Workspace,选中一个内容比较丰富的cpp文件不断把滚动条 拖来拖去,特别是周总出来,就故意用手托住脑袋,做出痛苦的冥思苦想状。在这种状况下,绝影能够很容易“偷偷地”把程序写出来。现在周总坐到旁边看着他, 他反而不知道程序该怎么写了。
所以有时候写 程序就像放屁。放屁这个事情毕竟是件不雅的事,所以大部分人还是要偷偷地放。比如几十个人挤在公交车里,冷不丁谁偷偷放个屁,于是大家一边捂着鼻子一边互 相指责:“你放的,你放的。”而真正放屁的人看到这情况,为掩人耳目,也充当起南郭先生,不断说:“谁放的?谁放的?”在这种情况下,屁很容易就放出来 了。要是真正让你在大庭广众众目睽睽之下来放屁,怕就算你吃下两斤豌豆也放不出也不敢放出一个来,最要命的是肚子咕咕姑不断叫,就是不敢放。
最后绝影终于还是把程序憋了出来。周总满意地点点头,说:“这还差不多,这还差不多。”
原以为这个问题解决了世界从此就太平了,绝影和BOSS Liu又变本加厉起来,以前他们是早上听到《小哪吒》才起床,奈何那幼儿园实在太准时,每天都是九点十五分放《小哪吒》,看来在起床这方面是没什么回旋的余地,于是他们只好中午吃了饭再回去睡个午觉才去公司。
终于有一天,周总说:“公司慢慢壮大起来,管理也要跟上。这样吧,以后大家早上9点签到上班,中午12点吃饭,下午1点又签到,6点下班,刚好每天工作8小时,签到两次,没问题吧。”
大家唯唯诺诺地点头,绝影估计周总已经知道了自己和BOSS Liu懒散的作风,可是他不好发作。进一步思考,肯定是有人告密了,多半是张厂长干的好事,因为每天就他来公司最早,9点就到了。
看家都没什么意见,周总继续说:“公司当然要有公司的纪律,这两天我已经制订了公司的一些相关规定,就把它贴出来,这里面要特别讲的一点是上网。你们的合 同里面已经写了,上网必须在服务器上上,而且必须与工作相关。最近我发现有人在上网的时候做一些与工作完全不相干的事情,以前我没说,今天就特别说一下, 特别是上QQ,这个是要坚决杜绝的,大家也知道,现在QQ的那些病毒多得不得了,要是把服务器打夸了就不好了,主要是那上面有很多重要的东西。”
绝影和BOSS Liu他们都知道,什么QQ病毒啊那些都是周总忽悠人的。一个搞IT的公司,不要说绝影这种早在大学时代就和病毒斗争的人物,就是随便一个倒茶的秘书也知 道如何避免在上网时中病毒这个基本道理。本来工作就是工作,工作就是不应该上QQ,这根本不需要什么理由,现在周总又找些非常占不住脚的理由来说,反而让 大家觉得非常好笑。所以有时候很多事情找个不那么充分的理由还不如不找理由。
末了,周总拍拍绝影的肩说:“大家没什么意见就这样吧,以后就先由绝影就来负责早上签到这个事情。你把公司员工的名单打个表,每天大家就在表上签,月底把表交给我,按就照签到的次数来核算工资。”
绝影狠狠地点点头,就差没说一 句:“包在我身上。”其实他心里最清楚,周总让他来负责,根本就不是因为对他的信任。你想刘备白帝城托孤,对诸葛亮说:“我那个儿子,你能扶就扶,不能扶 就把他废了自己上位吧。”他这么说了,诸葛亮就算有这个心也再没这个胆,本来可能心里还想着:那小子,过两年就把他废了吧。现在还怎么敢!只好诚惶诚恐地 一边磕头一边说:“臣哪敢不效肱股之力啊!”诸葛亮是聪明人,他知道说不定两边都埋伏好了刀斧手就等着砍他呢。正因为刘备有这本事,所以管你诸葛亮头脑如 何如何聪明,关羽武功如何如何高强,他永远都是他们的领导。
于是绝影又无奈地对BOSS Liu说:“明天还是早点来吧。”
本来BOSS Liu对绝影一直都不服,论技术他也不输,论酒量自己肯定比他大,这次绝影跟他说话语气却很软,于是他的心也软了一下,说:“嗯,BOSS的事情,是应该配合一下。”
稳稳当当又过了几个月,这天刚上班不久,BOSS Liu忽然对绝影说:“BOSS不好,出大事了!”
绝影慢条斯理回过头来,说:“啥事,曰。”他知道“不好”,“出大事了”这是BOSS Liu的语气助词,无实意,去掉这些助词,BOSS Liu实际说的是:“BOSS!”也就是喊他一声,所以他也回应得不慌不忙。
“周总今天早上把U盘还我了。”
绝影正忙着优化KIPACS的代码,过几天他又要和周总出差去另一家医院安装,这次他头也没回说:“你的U盘是应该还给你嘛。”
“问题是我U盘上有QQ。”
“你U盘上有你的裸照又如何,反正是你的U盘又不是我的U盘。”
“问题是我昨天晚上把U盘插服务器上上QQ了。”
“你不跟周总说他咋会知道你在服务器上上QQ了?”
“问题是我昨天晚上走的时候忘记取U盘了,今天早上周总还给我的。”
听他这么说,绝影提他捏了把汗,放下手上的代码,回过头来问:“周总咋说?”
“周总说:‘小刘啊,这是你的U盘吗?’我当时还想,里面不是有我的照片吗?你都看了还问。”
“那周总知道你在服务器上上QQ了不?”
“不知道――我不知道他知不知道。”
“周总太狠了。我觉得他多半知道了。”
“那我不是完了。”
“管他的,反正他又没说啥,稳起,他不说你不说,装傻。对他这种人,就得装傻,懂不?”
“嗯!装傻。先把U盘上QQ删了。”
过了半个小时,绝影走到BOSS Liu面前,小心翼翼地说:“我考虑了半天,还是告诉你个秘密吧。”
“曰。”
“走,咱们先出去抽根烟。”
BOSS Liu极不情愿地跟他跑到厕所,说:“赶紧说赶紧说,我手头上事情还多。厕所好臭,干啥跑这来说?”
“这次是个惊天大秘密,我怕我说了吓死你。”
“又是惊天大秘密,你哪次说的事情不是惊天大秘密。”
“是真的,这次如假包换的大秘密。”
“快说吧少废话!”
“其实我在服务器上偷偷装了个CCProxy。”
“考,你当周总白痴啊?你看周总天天在他自己电脑上上网,VPN他都会用,你还CCproxy呢。你就等着死吧。”
“BOSS此言差矣,我用的服务方式启动,隐藏了界面,又把exe名字改了,改成svchoost.exe,天都不知道我在里面干的啥。实话告诉你,我那代理已经成功运行两周了,看来还是经受住了考验。就比如你,你知道我装了这个吗?”
BOSS Liu想想也是,自己天天去那服务器上转悠,有时候晚上下班了还假装加班去上面上上QQ,绝影那代理服务器就在自己眼皮底下工作居然都没能发现,虽然这方法比U盘上QQ要笨十倍,不过好像还真有用,看来不管你周总武功有多高,还是明枪易躲,暗箭难防啊。
“既然BOSS有路子,那就拿出来共享了嘛。你想我哪次领了工资没照顾你?”
“这是当然,所以我思来想去,最后还是决定把这个秘密告诉你。一会回去周总不在的时候我把你机器的IP添加上去。不过千万要小心,万一被周总发现了嘴巴一定要紧,别说是周总,就是公安局的,只要你嘴巴咬得紧他们都不能把你怎么样。”
“BOSS你当我刘某啥人啊!你放心,这事到了我这里就算进了保密局了。”
BOSS Liu斩钉截铁地这样说,绝影忽然想起个事情,当初康有为找袁事凯计划大事,说:“你要想发达,就到老佛爷面前告我造反吧。”袁事凯拍着胸脯说:“君视袁某为何如人也!”没想到袁事凯转过背就把他们告了。想到着,绝影感觉这事悬了。
陈董又风尘仆仆回到了公司,到公司的时候还拖着他的箱子。加上他蓬乱的头发,简直是个专业出差人员的造型,谁也想不到他会是公司的董事长。
回到公司,陈董第一件事是拍着绝影的肩语重心长地说:“小绝啊,多帮帮周总。”第二件事是拍着BOSS Liu的肩语重心长地说:“小刘啊,多帮帮周总。”
放下包,陈董水也没顾得喝,说:“你们不是想做大CASE吗?这次我带大CASE回来了。”