xiaobo's profile不率意斋PhotosBlogListsMore ![]() | Help |
|
|
May 12 利其器 有一件事情让C语言显示出巨大的威力,给所有的人留下了深刻的印象。
那时县局电码号码由6位升位到7位,厂家给了一个程序,可以将电话交换机业务数据里的电话号码全部转换成7位的号码,不过不知道出于什么原因,厂家没有提供一个可以将112外线测量台的业务数据批量转为7位号码的办法。112是电话报修用的,于是升位完成两天之后,112台的数据还是6位的号码,谁的电话也修不了。 112的那位同仁姓王,素以英俊潇洒著称,在工作上,他也是出了名的踏实认真,于是他决定开始手工一个个地来修改这些号码。但112台的用户数据维护功能很不好用,他要一次次地选择用户信息修改,输入号码,然后把光标移动到查出来的电话号码上,按下退格键删除全部号码,才能在第一位增加一个“8”字前缀,然后还要把所有的号码再敲进去,选择“保存”,回车,选择“确定”,回车,然后提示“保存成功”,再回车,然后系统就回到主菜单里。 下一个用户要把这一切过程再来一遍。
他英勇地和键盘搏斗了一天以后,修改了100多条数据,但是没有修改的还有三千条呢! 我那天在机房里值班,闲得无聊,地也扫过了,搞了几个画圈圈的程序,在屏幕上运行着看了一会儿,终于感觉也没有什么意思,小香蕉也扔了好几遍,后来连笛子也吹过了。于是就施施然踱出机房,到其他科室串串门。 112台和我们隔壁,我常常去找王帅哥聊天,这一天,闲极无聊的我又溜达到他这里玩,想找人聊会儿,一进门,就看到他正在抱着他那台286电脑苦苦奋战,连话也没空多说。 看到同志这样辛苦,而自己又这么无聊,我心里那是十分的不好意思,于是没话找话,说起来他的这件苦差使来,他叫苦连天,为了证明这件事有多么麻烦和辛苦,他一边埋怨,一边给我演示那个无比麻烦的操作过程。 演示完了,他一挥手又继续工作,已经准备开夜车加班了。王帅哥很忙碌,我也不能继续耽误人家的时间。于是,又很没意思地回到机房里待着。不过这次我很上进,没有再丢香蕉或是搞音乐,从抽屉里翻了一本刚买来的C语言的书来看。 从前,我看这书进,最喜欢看的是图形编程的章节,毕竟花里胡骚的画面更容易引起人的兴趣。但是说实话,那其实都没有什么用。以我当时的能力,也没有能力做出个游戏什么的,最多也就是在屏幕画些不同颜色的圆圈圈、方格格,了不起也就是编出一个能从屏幕一边飞到另一边的纸飞机,其实没有什么实际的用处,只是秀一下,小小地过一把瘾而已。 但是我有个习惯,看新书一定会从第一页看起,从编者按、扉页书评到目录一页一页看。我认为这样看书,能在看书之前对书的内容有个预期,看内容时就能有意识地抓到重点。因此这次也这样开始,看完前言看评论,看完评论看目录…… 结果就看到了目录里的“文件操作”一章。 要放在从前,我是不会在这一章上多停留片刻的,可能直接就翻过去了,这次我心里却轻轻一动,想到王帅哥正在大干苦干的那个工作上来。我想到,112的用户数据应该是保存在一个文件里的。如果我能用程序直接来修改文件里的内容,把每个用户的电话号之前都加一个8字,岂不是就解决问题了? 于是我立即翻到那一章,仔细地研究了一翻,发现文件操作还不算难,我的想法似乎很靠谱。 立即跑到112台,王帅哥还在忙乎,一听我的想法,高兴坏了。 于是我们跑到窗户那里看看牛班长有没有潜伏在附近,确认没有危险之后,噼里啪啦退出112系统,我找了张软盘,把112程序目录下的所有文件都拷了出来,带回到机房继续研究。王帅哥为了防止我的科研项目失败,继续手工修改用户数据,做两手准备。 我打开PC TOOLS5.0开始分析那些文件,运气还算不错,只找了几个文件就找到了用户信息。那时大家还都没有信息安全意识,数据文件也都不加密,用PC TOOLS一打开,整个电话局的用户信息都以16进制的方式一个个列出来了。 那种感觉很奇特,又让人兴奋——从前这些数据都是藏在电脑深处里,要看到它们,需要选择菜单,输入口令,然后它们才会规规矩矩地一条条显示在屏幕上,但是现在,我居然就这么轻而易举地绕开了层层的保护,一览无余。就好像是跑进了魔术师的后台,一个个精心设计的机关明明白白地展现在我的眼前,我想怎么看,就能怎么看。 一种权力感涌上来。黑客的感觉就是如此吧! 和之前的研究相比,接下来写程离就纯是苦力了。首先是要数数。那些信息虽然已经显示出来了,但是都是以16进制的方式排列的,这是计算机内数据的原始形式,要想操纵这些数据,必须找出数据内部的结构来,才能把原始数据变为用户记录。我仔细计算了各个字段的长度,发现只要我每隔一定的长度,就把对应的字节向后移动一个字节,然后加上一个“8”,就能达到全部号码升位的目的。 计算好数据长度,就可以写程序了。翻到书里“文件操作”那一章,开始照葫芦画瓢,打开文件,循环读数据,移动电话号码,写入升位数字…… 终于写完了,所有的语法错误都解决掉了。 运行一下吧。
TURBOC2.1蓝色的屏幕“扑闪”地黑了一下,又回到原来的样子。
没其它动静了。
嗯?怎么回事?没执行?打开用户数据文件看看…… 让我吃惊的是,这个文件已经修改完成了!所有的用户电话号码前面都已经加了一个“8”字头! 我这才反应过来,C语言在处理文件上的速度真得是无与伦比,屏幕扑闪那零点几秒里,正是程序运行的时间,一瞬间里,一切都已经完成了,3000多条用户数据已经修改完毕了。 这这这…… 我激动坏了——这这这、这玩意儿太牛了,我我、我自己也太牛了。就这么一秒钟不到,几千个数据就改完了,人工要近一个月的工作,一秒钟就完事了!我终于明白了,与华而不实的图形程序相比,C语言的强大更多是在业务数据的处理能力上。这东西可不是玩具,这是真家伙,它什么都能干!太强了! 同时,我也意识到,与那些没有用的程序相比,这个程序才真得有用,因为它实实在地解决了工作里的问题,它“创造了价值出来了”! 从这一刻,计算机对我来说,从玩具正式升级为工具(当然,也继续是玩具)。 又检查了几遍生成的新数据文件,确实没有问题,我要现在把数据文件拷贝回去,王帅哥就可以下班了。不行,我这么伟大的成就,就这么交给他太便宜他了,一定要好好秀一下,让他留下点深刻印象,哼,光帅有什么用? 于是,我开始改造这个只需要运行一次的程序。第一件事是为每一条信息的修改动作输出一条提示——“某某用户号码已经由123456升位为8123456!”。程序运行时,这些提示就会一行行闪过。 但是运行得还是太快了,整屏的信息忽忽地向上滚过去,根本看不清,于是我又加入了一个每条记录暂停10毫秒动作,程序一下子慢下来了,需要几秒钟才能运行完,这样就有时间看到快速闪过的信息。 想了一想,又在一开始处入了一个程序著权人的声明:“本程序由某某高手(就是不才我的签名了)制作,版权所有”什么的,还要请使用者在看完这则信息之后,按一下回车才继续运行。 当时互联网还没有流行,不然我还会写上个人主页,联系邮箱什么的。 一切都准备停当了,我特意把已经生成的用户信息文件删掉,把程序复制到软盘里带到112台。王帅哥让开电脑,小小的3.5吋盘插进去,复制程序到112台程序目录下,然后一执行…… 效果好极了,比我测试时还要好。因为那是台286电脑,比我测试时用的386慢得多,慢得多就能让提示信息闪现得更清楚,一条条用户信息滚动着,刚刚能看清,又闪得足够快,十秒钟,搞定了。 请原谅我小小的虚荣心吧! 王帅哥回到112系统中,一查询,号码都变7位了! 再查几条,没问题!查最后一条,也没问题! 打完收功! 这件事让我狠露了一把脸:一个小小的年轻员工,勤奋学习技术,完成“重大技术创新“,节约人力若干,局里特奖励20元(我当时一个月的工资才90多块)以兹鼓励。嘿嘿,风头正健,搞得牛班长也没办法,明知道我跑程序时要退出系统,大犯他的忌讳,但是也不能说什么,只好皮笑肉不笑地把20块钱当众发给了我。 从这件事开始,我终于摆正了认识:单纯的技术发烧友是没有前途的。如果离开实际的业务,技术本身根本没有任何用途,也就没有任何价值,只有把技术和业务结合起来,真实去满足业务需求,解决业务问题,才是正道。 虽然只是很简单的道理,不过还是庆幸自己理解得不算晚。 |
|
|