博文
疯狂的程序员32(2008-03-22 09:30:00)
摘要:和所有读者朋友一样,绝影也期待着陈董的大CASE,不过用陈董的话说:“小绝阿,从来没让我们失望过。”可是陈董却老是让绝影失望。一个没有什么技术含量的暴利破解,也是绝影职业生涯中第一个破解,确实会被同行们耻笑,不过也做得很有滋味。周总炒了BOSS Liu鱿鱼,若干年后,周总会后悔吗?这次事情是不是BOSS Liu后来大幅度进步的动力?虽然陈董这次让大家失望了,不过在后面,绝影他们真的会做一个大CASE,很有意义,小说也会很全面的去写。另外最近有人提到小说的一些不足,错别字多,语句不通顺,描述不清楚或者有些地方前后矛盾。发到Blog上的小说,基本都是原始版本,也就是写完了后什么也没改就直接复制过来了,所以难免还有很多不足,我本身也是忠实于原文,所以没有改动。我想的如果以后有机会出版,或者发第二版,我会好好把这些错误改正的,由此给大家带来的不变请谅解。
陈董一脸严肃又略带洋洋得意,绝影和BOSS Liu在心中盘算着这个大CASE能大到什么程度,100万,500万还是1亿,于是都期待着陈董继续往下说,恨不得拍着胸脯说:“陈司令,你就下命令吧!”
陈董掉足了两人胃口,才缓缓地打开自己的电脑,摆弄了一阵,向二人招招收,说:“过来,过来。”
两人探过头去,屏幕上是个国外的软件,全是英文。陈董说:“这是个石油上的软件,叫PVT2000,因为油田那边还需要个功能这上面又没有,我们必须给它加上去,其实也不难,简单地说,就是根据两个二次函数在坐标系上绘制它们的图像,求出交点并把坐标标示出来。”
本来两人看那PVT200看得兴致勃勃,心里琢磨着该不会让咱们也做这么个大象出来吧,没想到陈董这么一说,就相当于让咱们做一根大象的尾巴,也许只算尾巴上的几根毛。就比如你看周正龙拍老虎一炮走红,想起当年自己还拍了不少,那周老虎算啥,也不过尔尔。于是将自己的老虎报上去,梦想着自己也凭着这老虎一炮走红,没想到几天后你的老虎让上面给刷下来,领导批示:这分明是只猫嘛!
陈董看出两人有点失望,立刻说:“别急,这只是一小步!首先,这是个收费的软件,就让你用一个月,所以咱们还得先把它破解了。要是不破解,后面的都没意义。所以这才是大头,考验人的地方。小绝阿,你进公司的时候就听说你汇编不错嘛,这次可是你发挥的时候到了。”
听到后半部分,绝影顿时精神振奋,他长期跟别人吹牛说:“对加密算法,软件逆向工程有一定的......
项目部署(2008-03-15 23:57:00)
摘要:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config> <data-sources /> <form-beans> <form-bean name="userForm" type="org.ls.myzd.struts.form.UserForm" /> <form-bean name="questionForm" type="org.ls.myzd.struts.form.QuestionForm" /> <form-bean name="answerForm" type="org.ls.myzd.struts.form.AnswerForm" /> <form-bean name="itemForm" type="org.ls.myzd.struts.form.ItemForm" /> <form-bean name="indexForm" type="org.apache.struts.action.DynaActionForm" /> <form-bean name="showForm" type="org.apache.struts.action.DynaActionForm" /> <form-bean name="adminForm" type="org.ls.......
[org.apache.struts.actions.DispatchActi(2008-03-09 15:50:00)
摘要:HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception javax.servlet.ServletException: org.ls.myzd.struts.action.ShowAction.slectsub(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.ls.myzd.filter.EncodingFilter.doFilter(EncodingFilter.java......
疯狂的程序员31(2008-02-27 12:41:00)
摘要:摘要:回忆起和BOSS Liu在公司里共同工作和生活的一些小事,现在来想,这些事情也是很有意思的。说到工作,很多人想到的就是正襟危坐,神情专注,十二万分的投入。工作本来就应该这样,可是也不应该全部都这样。人嘛,毕竟不是机器,如果是机器,那输入的是0就是0,是1就是1,因为是人,所以有时候输入的是0,自己处理起来却把它搞成了1。
听周总这么说,绝影吓了一跳,不光他吓了一跳,BOSS Liu和张厂长也吓了一跳。在他们印象中,周总脸上总是带着平静地表情,即使偶尔批评起人来,也还是带着平静地表情。这时候,绝影突然想起念大学的时候,本来和燕儿在校外租了房子悠闲地过着小日子,没想到有一天公安局会突然来敲他的门,想到公安局肯定是来查自己非法同居来了,吓得要死。想在来看,周总一定是来清算平时不按时到公司,作风懒散的事情,果然是“出来混,迟早是要还的”。
周总毫不留情地说:“你看看你写的代码,这个备份工具里面,你居然一次性把SQL数据库里的数据全部读出来放到内存,再写到Access数据库中,为什么要这样,为什么不读一条写一条?”
一听不是清算作风的事情,绝影又带着庆幸地送了一口气,就像当初打开门,原来公安局是来了解杀人焚尸的事情,跟非法同居完全不沾边,自己一下从犯罪嫌疑人变成证人,其中的成就感不言而喻。
再说周总问的这个问题绝影也早就想到过,于是胸有成竹地说:“这个问题我当初也想到了,考虑到读一条写一条可能太浪费时间,还不如一次性读到内存中,那样肯定要快得多。”
听绝影这么说,周总慢条斯理地说:“小绝啊,这就是你经验不足了。你在公司里测试有多少数据?就一百多条,一百多条数据能测出什么?要是数据有几万十几万呢?你全部读到内存中,内存根本不够,操作系统只好频繁地使用交换文件,这样速度不但不会提高,反而会慢很多,你自己看看,你系统每次用久了后是不是慢得很?那就是因为用的时间长了,内存占用多了,系统使用交换文件,最后慢得不得了。”
绝影一边听周总说,一边注意他的表情,仿佛还带了点洋洋得意的神色。虽然传说中周总写程序还是很牛B的,但绝影从来没见过他写的代码,对这个传说还是持了点保留意见。没想到这次分析问题周总还是讲得头头是道,这个问题,没点经验的人还真发现不了。于是他唯唯诺诺地说:“有道理有道理。是我没考虑周到。”
“既然这样,那就赶紧改吧,别等问题暴露出来才来忙,我们要防患于未......
疯狂的程序员30(2008-02-27 12:40:00)
摘要:摘要:转眼之间《疯狂的程序员》已经写了超过10万字了。这篇小说能写到现在和大家的支持鼓励是分不开的,我在想,也许没有这么多的支持和鼓励也许老早以前我就没有信心把它更新下去了。所以这里先谢谢大家。如果你已经成为程序员多年,你能回忆起多年以前你第一次领工资领奖金的情景吗?你拿到工资,是否想起来这么久以来的辛酸?拿到工资你做的第一件事情是什么?总之我觉得,那2000块钱不是普通的2000块钱,当你知道2000块是怎么来的,你才会知道2000块为什么不普通。
见绝影吓得脸都变了色,BOSS Liu打趣的说:“想不到BOSS还是从原始部落出来的!据说有些原始部落就是怕别人知道你的名字,别人知道就能用咒语让你死。”
绝影白了他一眼,接过电话。
电话是放射科主任亲自打过来的,在那头急得要死,说系统不能用了。
明明去安装的时候都是好好的,这BUG再怎么严重也不至于让整个系统都不能用了吧,事情要真有那么严重自己刚到手的奖金估计又要泡汤。忙跟他说:“什么时候发现问题的。”
“前几天就开始了,不过还勉强能用。今天他们说不能用了,我跑过来看,果然不能用了。”
“是什么情况?”
“前几天是登记的时候速度太慢,登一个人起码都要等5分钟,还不如以前用纸登记快。到今天,简直是不能登记了,估计起码要等一个小时。”
听他这么说,绝影终于松了口气。这是意料之中的事情。想医院一天做的病人起码有几百个,就算如BOSS Liu所说KIREGIS设计容量是10万级别数据量那最多也就几个月就撑爆了。再加上那些X光机,CT机拍的片子转换成DICOM图像一张动辄就是好几十M,这么大的数据量不慢死才怪。本来在这种情况下应该配套一个数据备份和刻录的软件,奈何CASE的时间太紧,验收的时候也就是勉强才做完连Beta测试都没有这些增强要求自然没时间去给他考虑,周总的意思是先等验收过了,钱到手了,大家闲下来了,再花点时间慢慢给他做个备份系统。
虽然话说“顾客就是上帝”,现在好多顾客认为自己付了钱,还真把自己当成了上帝,东西出一点小问题就蹦炸起来:“坏了!不能用了!你们赶紧给我搞好!”绝影和BOSS Liu以前给别的医院做系统维护的时候听多了这样的抱怨,反而反感起来。那时候没办法上头有命令必须要去做,现在又不一样了,东西验收是你签的字,钱我也拿了,老子现在就是上帝!
于是他慢条斯理地说......
疯狂的程序员29(2008-02-27 12:39:00)
摘要:摘要:今天凌晨1点多,有朋友在QQ上问我:今天还写不写呀,我等着呢。当时我刚开始写,就说:别等了,今天有点晚,你还是先睡觉吧。他说:只要写,我通宵也要等下去。后来他说不管有人怎么攻击我,他们都支持我。我真的非常感动,没想到就一篇小说,还有这么支持我的朋友。想我自己,从以前每天一两天更新一天到现在一周更新两篇,都不能按时在第一时间更新出来,让朋友们在这么冷的冬天等我,我觉得非常惭愧。朋友们这样支持我,我只能说以后我一定不再偷懒,在第一时间早早写出来更新出来免得朋友们久等,对不起。今天写到遇到的内存泄漏的问题。内存泄漏一直是个很容易犯也很难调试的问题。它不像语法错误那样可以在编译时检查出来也不像逻辑错误那样很容易重现出来。今天的小说里介绍了一个工具,也许你早已用过了。还写了绝影和BOSS Liu关于C++和汇编语言之间的争论。语言好坏的争论也是个热门话题,经常在论坛上出现。在这里我想说:语言本身没有好坏之分,用语言的程序员在技术上却有高低之别。所以关于语言孰优孰劣的争论其实都没多大意义,关键是我们对语言掌握和运用得如何。
见屏幕一黑,绝影也不知道是怎么回事,以前在公司测试的时候从来没出现这种情况,反正肯定是程序出了问题,坏就坏在还是全屏,图像一黑,整个屏幕就黑了。他用眼角的余光瞟了瞟周总,还好周总正在兴致勃勃地给医生们介绍KIPACS是如何如何好,只有医院领导一个人发现了问题。他赶忙退出全屏关掉KIPACS,再次打开。
医院领导正要开口,绝影抢在他前面说:“这是正常现象,一般KIPACS用久了就要重启一次。”那言外之意就是:“这黑屏的事,没啥大不了的,我们早就知道了。并且这又是不能解决的,要能解决我们还不早就解决了。就比如手机一样,就算是Nokia N95,够高档了吧,可是你能拿它放DVD吗?放不了,还是将就着用吧。所以还是麻烦你们偶尔重启一下吧。”
周总听他这么说,回过头来,丈二和尚摸不着头。
最后医院领导还是在验收报告上签了字,一行人撤回公司的时候,周总问:“小绝阿,那个KIPACS重启是怎么回事呢?以前怎么没听你说过?”
绝影哪敢给他讲很话,忙说:“没什么大不了的,回去我调研一下,估计还有些小BUG。”
在公司做CASE就是这样,虽然公司要求所有BUG的发现和修正都要最终体现到软件开发文档里,但实际操作起来,往往是程序员发现了自己的BUG能隐瞒下来的都......
疯狂的程序员28(2008-02-27 12:36:00)
摘要:摘要:今天是上班的日子了,想大家都和我一样过了个快乐的春节。今年是奥运年,在这里先祝大家新的一年在学习上、工作上、生活上都能有大幅度提高(这样祝福太土了),另外今天是情人节,也祝有情人的爱情甜蜜,没情人的早日找到情人。今天这章写BOSS Liu和绝影第一次畅谈,也写了一次现场调试发生的意外。也许做一个程序员,特别是一个负责任的程序员,你要牺牲很多很多,特别是你的生活。可是你能够让这些牺牲有意义吗?你为了什么而牺牲了生活,你就要努力把它做好,否则,你的牺牲就没有任何意义,这和不做没有区别。
一般情况下人在什么情况下喝酒?多半朋友聚会聊到兴奋了,或者发生了什么刺激人的大事,比如恋爱了,失恋了,发财了,破产了……
绝影想这么晚了,又没有什么聚会,BOSS Liu找自己喝酒,肯定是受了什么刺激,毕竟同事一场,还是应该好好开导开导他,于是屁颠屁颠跟他跑到楼下烧烤摊。
BOSS Liu一来就大声武气要了两瓶啤酒,一碟煮花生,两条烤鱼。今天是他们俩最后一次领“生活补助”的日子,BOSS Liu显得特别大方,他点菜的口气就像武松的“老板,来三大碗酒,切二斤牛肉”或者孔乙己的“温两碗酒,这次是现钱,酒要好”一样。绝影跟他推辞不喝酒,土匪他们都知道他对那玩艺过敏出差的时候也有过惨痛的教训,BOSS Liu却不知道,他越是推辞,BOSS Liu越是觉得他不给面子,或者深藏不露,就越是让他喝。
所以这喝酒劝酒里面也有很多道理,比如喝醉了的人总说自己没醉,没醉的人反而不停地说醉了醉了不能再喝了。你说:“这个技术,我不会,没接触过。”别人反而说:“你肯定会,就是不愿意说!”
最后还是让绝影坚持了原则,BOSS Liu给他点了瓶豆奶。
两人坐定,绝影平静地说:“说吧,有什么事?”
“没事,就喝酒。”
后来绝影才知道,BOSS Liu就是很普通人不一样,就是喜欢没事的时候喝酒,当然,朋友聚会或者发生了什么刺激的人的事他也会喝,但还是以没事的时候喝为主。这习惯和他喜欢没事的时候写程序差不多。大部分人工作的时候写程序,他喜欢在不工作的时候写程序,虽然他工作也是写程序。
BOSS Liu喝酒也和普通人不一样,一般人几杯酒下去,酒力上来,就开始夸夸其谈,也就是所谓的“放开了”。BOSS Liu两瓶啤酒下去就像呷了两口茶,面不改色心不跳,仍然平静地对绝影说:“你有所不知,写程序,本来乃是我......
【经典+精华】一位高人的话(2008-02-12 07:08:00)
摘要:本文源自互联网,转载。
我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。96,97级的不少大学生都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。 几个误区 初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种: 认为计算机技术等于编程技术: 有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关的课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。 其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员(CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。 咬文嚼字的孔已己作风: 我见过一本女生的《计算机网络原理》教材,这个女生像小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,像计算机网络原理这样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程的时......
疯狂的程序员27(2008-02-11 12:33:00)
摘要:摘要:写完这章,彻底告别了校园生活。以后面对的将是真枪实弹地一个一个CASE,想到写这些CASE,我就非常激动。如果说在学校里更多的是学习,那么在公司里才算开始了一个真正程序员的生涯,从Coder开始,一步一步地接触新项目、新技术、新工具,学到很多在学校里根本学不到的东西。如果说在大学里学到了什么?没学到什么。学到的最重要的东西就是如何去学习。这一章里最后写到的给老师送红包,虽然对阳光底下最伟大的职业有点不敬,但这却是真实发生的事情。对于这样的事情,也只是简单地记叙一下而已。
绝影以为土匪又有什么大事,风风火火跑会寝室结果今天的议题是在哪里吃散伙饭。
回忆一下大学四年跟土匪在一起讨论最多的就是吃饭。
“今天我生日,大家一起吃顿饭吧。”
“今天国庆节,大家一起吃顿饭吧。”
“今天星期六,大家一起吃顿饭吧。”
“今天考试,大家一起吃顿饭吧。”
“今天啥事都没有,大家一起吃顿饭吧。”
毕业了,散伙了,按理说这也算人生中的一件大事,散伙饭肯定要吃的,而且这是各大学历届毕业生的惯例。因为吃饭的次数多了,学校周边的馆子也是有限的,平摊下来一家馆子难免已经吃上好几回了,像散伙饭这样的大事情肯定马虎不得,所以专门开会讨论一下在哪里吃。
会整整开了半个多小时,最后大多数人同意在“陈鱼头”吃散伙饭。说到“陈鱼头”,绝影想起上学期发生的一件事,那天他和往常一样睡到中午才起床,燕儿已经上课去了。还没打开电脑,忽然敲门声响起。他条件反射地问了句:“谁呀?”
“开门,公安局的。”
他的心嗝噔了一下,前段时间同学们正说现在公安局正在严打在学校外非法同居的,难道现在真的查过来了。好在现在燕儿上课去了,想他们也抓不到啥把柄,于是打开门。
公安局的同志进来第一句话却出乎绝影的意料,他们说:“好大一股烟味!电脑机箱也不盖好。”
最后虚惊一场,原来是后面楼居然发生了罕见的杀人焚尸的案子,死者就是那“陈鱼头”的老板,绝影在屋子里面闭门造车,要不是这次公安局的同志过来问他,他还真对外面毫不知情。
案子很快也破了,本来“陈鱼头”就是地理位置不好,再加上经营不善,都濒临倒闭,谁知这个事情发生后在老板娘带领下,它的生意又火爆起来,吃饭的人简直是人山人海。
所以现在赚钱就是这样,什么技术啊,水平啊,味道啊,服务啊对人来说都是瞎扯淡,48块钱一杯的极品南山和98块钱一杯的极品南山有几个人能......
疯狂的程序员26(2008-02-11 12:32:00)
摘要: 摘要:今天写这章,想到了第一次接触多线程的应用程序,那时候绝对多线程是个多神秘多高深的技术,同时想想我们也很好笑,不知道“触发器”这东西居然自己写程序去实现定时刷新。不过我想大概人人都会有这样的经历吧:一件工作,虽然当时把它做出来了,并且自己还觉得满意,但若干年后回忆起来才发现原本有更好更先进的技术,这大概就是水平提高的表现吧。再回想一下做毕业答辩,很有意思。
这也是很正常的事情。BOSS Liu在那里搞他的KIREGIS,绝影自己的电脑被他们考试占用着,于是他经常在他们中间走来走去,偶尔帮他们解决一点小问题,比如VC++从哪里打开阿,题目在哪个目录里面阿。所以周总也没怎么在意。等他回到办公室,绝影赶紧低声问她:“做得怎么样?”
“不行我今天有点紧张,VC++我也用得不多,在学校都是用的TurboC。”
绝影听了觉得很好笑,还自称编程数一数二的人物,居然就用TurboC,可惜那TurboC编译器是16位的,又没有API给你调用,当然你要真能拿它在Windows下绘制出一个窗口那也的确算用得出神入化,技术绝对是数一数二。
所以后来绝影经常问别人:“会写程序吗?”
“当然会,我会C/C++,汇编语言……”
“我说的是会不会写Windows下的应用程序?”
“Windows下的应用程序?那个用C语言能写吗?”
几句话弄得他哭笑不得,他们总认为C++就是VC++,C就是TurboC,语言就是工具,工具就是语言。
听她这么说,绝影心想:完了。本来说写程序的女的就少,更何况这个还是个美女,可惜技术不过关,这种水平肯定要被周总刷下来。其实绝影觉得就算招个美女不写程序又如何?至少能极大地提高他和BOSS Liu的劳动生产率,可是周总肯定不会这样想,美女不是他需要的,他需要的是程序员,他不需要的东西他就认为可能别人也不需要。
尽管这样想,他还是想再帮帮她,碰碰运气,还是那句话:技术都是可以学出来的,但漂亮学不出来。于是他对她说:“那你就用TurboC做吧。”这已经是宽宏大量仁至义尽了。
虽然绝影把声音压得很低,还是被旁边人听见,就是那个搞电路单片机的男生,他说:“那我也用TurboC做吧,VC++我也不熟悉。”
“你先等一下。”绝影走进办公室,对周总说:“那个搞电路的要求用TurboC做题,我觉得无所......
