不到十分钟的时间我就到了小儿子Eric学跆拳道的武馆。透过单向玻璃我看着Eric在老师的示范下一招一式地练着跆拳。一种父爱的暖流从心里流出,眼睛顿时模糊了。想着曼雨最近的举动,我真的不知道这个家还会像一个家似地有多久。她要是真的不回心转意,一意孤行地要与那草蜢诗人共谱爱曲,或者一直在网上公开调情,这个家迟早会散的,Eric和James 会失去母爱的。怎么办,怎么办?
就在我感慨万分的时候,Eric下课了。出了教室他一眼就看见我了。“Daddy, Did you see how I play? Am I great? Do you think I am ready for black belt?"我一把抱起儿子,举过头顶一连说了三个 YES “Yes, yes and yes, my son is great!" 。 父子俩走出武馆,我用遥控器把车锁开了,Eric 三步变两步地跳进后座,我也跟着坐进了车子。
我发动了车了,向I509州际公路方向驶去。一路上我的头脑里几件事一直在打架:早晨没听成的录音、今晚的产品发布、我和曼雨的关系对Eric的影响。老是不能集中精力去想一件事:今晚的产品发布。想起来Stephen Covey 的《The 7 habits of highly effective People》书里说的一个habit "Put the first thing first"。就想现在什么是the first thing?除了安全顺利地把儿子、自己和车子驾回家,下一个first thing 应该是产品发布。其它的事情不紧急,至少可以说今晚整不出名堂来。
不论这个家的前景如何,我目前这份工作还是很重要的,以后这个家说不定就要我一个人撑着了。
我终于能集中注意力去考虑今晚的产品发布了。我手上有两个scripts ,一个是DDL(Database Definition Language), 一个是DML (Data Manipulation Language)。 因为这是一个后续开发的发布,只能用delta script。 我的delta script 是基于Staging 和development region的不同而生成的。这样做是基于一个假设:production region 与staging region 的数据库是一致的。也是基于一个限制:基于安全考量,开发人员不能碰到production database.
但是这是一个不太靠谱的假设,谁知道production DBA 在production database 里面做了什么事,他们又不像我们开发人员那样注重version control。对于任何人来说,我的任务像是要为别人写个安装说明,让那人去一个房间装一盏灯,而我只是两个月前去过那间房的,两个月以来房间里面有什么变化我不知道。对于我就更离谱了。两个月前我又不在项目里,最多是只看到了那房间两个月前的照片。
想到这里,我的心情就变得更加沉重了。但是我知道又怎么样呢?跟老板说清楚然后不做?除非我不想要这个工作了。在这祌情况下一定要让上司认为你尽心尽责了,不要向他说风险,出了问题再想法解决。一定要有“can do spirit"。
万一不行我就与DBA一道on the spot 解决问题吧。
想着想着,车子已经快到家了,小傢伙大概一天劳动量太大也累了,竟然睡着了。
想到孩子我的心像刀绞一样地痛。说实在的我再找一个老婆不难,儿子要再找一个好妈妈就难了。
到家后我让Eric先去洗澡,上了跆拳道的课弄得一身汗。看到James在他房间里做功课,我就没打扰他。下楼,在冰箱里拿出一瓶blue moon,也不用杯子了,打开了就着瓶子喝起来了。
一杯啤酒喝完了,就走进书房(home office)打开电脑为今晚的产品发布开始了最后的准备工作.....
只听到外面Eric 大声说:“Daddy and James, Mummy and uncle are here!"
“How did I do, uncle? Do you think I can be upgraded to black belt?"
接着听到曼雨问道:“爸爸呢?"
Eric 答道:“Daddy is in the office room."接着听着脚步声向书房这边走来。被点到名了,看来不能不露面了,我站起身来,打开书房两扇对开的门。打开门后,迎面看到曼雨、曼云俩兄妹。对着曼雨我没有表情地说了一句:“回来了”,对着曼云我更简单地说句“你好”。曼云倒是不计较“你好长松,这么晚了,你还在忙呀?曼云问道。
“哎,今晚有个产品发布,我正准备呢,十点开始,你今天就住这里吧,已经很晚了。”看他还客气我也客气些,不过也确实没什么说的,我随后说道:“马上就要开始产品发布了,我先去工作了,回头再聊。”
“你先忙,我待一会儿就走,明天我我在大会上发言,还有一些准备工作要做。”曼云说着随着曼雨上楼。我也就顺手把书房门关起来开始了产品发布工作....
大概过了一刻钟的时间,书房的门轻轻地被推开,扭头一看,在柔和的反射灯下,曼雨显得格外妩媚动人,她的语气声调也是同样的温柔:“长松,做的怎么样了?顺利吗?还要多久啊?有什么我可以帮忙的呀?”
我一时都反应不过来了,什么时候她对我这样温言细语过,我真的想不起来了,二十五年前在北大校园里有过的。自从来了美国我成了家属,负担,拖后腿的那一个,她就成了对我不耐其烦,,不满不足,不屑一顾,不情不愿的女人。我,她的丈夫,在她眼里变得never be good enough. 今天怎么啦,曼云教育了她?看来他们是had some serious discussion, 刚才他们还上楼到主人房去了呢,两兄妹这样多谈谈好像对我有好处呢。看来以后要对曼云稍微客气一些。真的希望她的心能收回来。
“还行,这是一个服务器群(server farm),有四个服务器,数据库是在集结式服务器上(cluster server)。我刚刚run了数据库DDL scripts, 管应用的人刚刚弄好第一个服务器。正在测试。没有问题后他们就重复其它三个服务器的安装过程。大概一个小时吧,这个过程没有我的事。我的工作就是run我的DMLscript,希望不遇到问题。应该不用你帮忙,你先睡吧,不要等我了。”我如实地把情况介绍了一下,最后特意加了一句:“你不要等我了。”说实在的对她这样突然的温柔,我还不太习惯,也不知道她出于什么动机,还是不要自找没趣的好,看看再说吧。
“不着急,你慢慢做,不着急,我有本朋友刚出版的短篇小说集,我在床上一边看小说一边等你”说完之后,曼雨丢下不和所措的我,带上书房的门上楼去了。This is something too good to be true! 以前我做产品发布时她都坚持我睡客房,说我吵了她的觉。今天她居然说要等我!what is going on? 是在曼云的劝说下回心转意了,还是因为与诗人的恋情而心怀愧疚为取得心理平衡而给我情感补偿?
Ok, ok, focus, first thing first. Work first. 我收回漂浮不定的思绪,把心思放在手头的工作上。
下一步是run DML scripts。 Sure enough, I get problem at hand. the production DBA告诉我, DML Scripts offers some error. The message says, "column data type mismatch with the data provided"
唉,最担心的事情终于发生了。这些script 都是在staging server 上试过的。怎么办?一个一个地办呗。我就要求把production server 上与出错有关的table DDL发来给我看。第一个发来了,一比就发现问题了,它的column顺序与staging server 上的不一样,一定是production DBA cut corner some time in the past. 不过这不是说理的时候和地方,making it work is all everybody cares.
我根据提供给我的DDL 修改了我的DML script 发给他,一run 果然好了。下一个,下一个...
时间已经近午夜了。DML script 也快见亮了。又一个错误信息发来了
这一次的错误信息是“unique constraint violation" 我又不能看那里的数据,我所加的数据在staging 上是没有的,那就是说production 上有我不知道的数据,这个我真的不知道该怎么办了,我又不能让他把那个duplicated data row 删了,不删的话我要加的数据就加不进去,新的数据加不进去的应用就无法正常运行。
好在这只影响一个不太常用的功能。在一番讨论后决定明天到公司三方面谈,毕竟我是临时接手的,这可能要改动许多数据才能整合起来。大家决定收工睡觉,有话明天谈。
关了电脑,我上楼,准备在客房浴室洗澡然后在客房睡觉。但是洗换内衣在主卧的dresser 的抽屉里。透过门缝,我看到主卧的灯还亮着。难道,难道,她真的在等我?我轻轻地推开主卧的门,眼前的景像让我不知如何是好..