Archive for April, 2004
大话西游台词回顾
Wednesday, April 21st, 2004放过你?你给我一个不杀你的理由!< ?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在一个月黑风高阴森恐怖的晚上我是至尊宝你是白晶晶,奇妙的爱情就从桥头上这一点火开始的
你尽管捅死我吧,生又何哀,死又何苦,等你明白了舍生取义,你自然会回来跟我唱这首歌的!喃呒阿弥陀佛
这我想到了,所以我要拿你身上一件信物给她看,你有什么项链啊,首饰啊,金银珠宝啊,月光宝盒啊什么的……
哇!又升仙啦!咦,为什么要说“又”呢?
哈!我不是关心你,只是蝼蚁尚且偷生,神仙干成你这个样子,干脆不要干算了!
那我们大家立刻开始这段感情吧!
你又明不明白我已经不再是神仙了!我只明白一件事:爱一个人是那么痛苦!
你说谎!你不敢亲我因为你还喜欢我。我告诉你,如果这次你拒绝我的话,你会后悔一辈子的!
你妈贵姓?
谁说我斗鸡眼?我只是把视线集中在一点以改变我以往对事物的看法!
哎!我现在郑重宣布,这座山所有的东西都是属于我的,包括你在内!
你只是得到我的肉体,并不能得到我的灵魂。我已经有爱人了,我们不会有结果的。你让我走吧!
长夜漫漫无心睡眠,我以为只有我睡不着觉,原来晶晶姑娘你也睡不着啊!
我的意中人是个盖世英雄,有一天他会踩着七色的云彩来娶我,我猜中了前头,可是我猜不着这结局……
对不起啊,我不是故意的,我是看你那么冲动,配合你一下而已,我虽然不是什么正人君子,但也不至于趁人之危啊!
以前陪我看月亮的时候,叫人家小甜甜,现在新人胜旧人了,叫人家牛夫人!
这个家伙没事就长篇大论婆婆妈妈叽叽歪歪,就象有一只苍蝇,嗡…对不起,不是一只,是一堆苍蝇围着你,嗡嗡飞到你耳朵里。
你化这个妆就说自己是孙悟空喽?给点儿专业精神好不好!那些毛通通都开叉了,头上象戴了两块年糕,出来混饭得花本钱嘛!
人和妖精都是妈生的,不同的人是人他妈的,妖是妖他妈的。
曾经有一份真诚的爱情放在我面前,我没有珍惜,等到失去的时候才后悔莫及,人世间最痛苦的事莫过于此。如果上天能给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你!如果非要为这份爱加上一个期限,我希望是一万年!
如果有一天我忍不住问你,你一定要骗我.不管你心里有多么不愿意,你都不要告诉我你从来没有喜欢过我
XP, 让人心旷神怡!
Tuesday, April 20th, 2004很久以前就看过这个eXtreame Programming概念。只是当时无知,看到满篇的英文便草草而过;现在看到它获得了Jolt大奖,才重新登上xprogramming.com仔细研习,感慨很多啊。最后的心情是,XP真正体现了“循序渐进”的哲学观点(进化论),真正符合人的正常思维,也符合现实中项目开发的真实现状:即多变的需求。
1 兵车未动,粮草先行 -- TDD(Testing Driven Development),测试先行的开发思想
先生成软件开发框架,不要写具体的实现代码,一点都不要。然后开始编写测试用例(Test Case)。这样做最大的好处,就是站在了用户的高度考虑问题,从一开始就准备写出Product级别的代码。
2 没有最好,只有更好 --重构(Refactoring)
对接口进行重新定义,对其中的代码进行优化,最好是不要改变接口。程序首先是给程序员看,然后才是机器。阅读代码的过程能够极大程度的提高个人水平,对代码的修改当然是建立在理解代码的基础上。
3 “我的眼睛看不见了,你帮我开枪”
“我抠不动扳机”
“来,你做我的眼睛,我来开枪!”
--漫画《城市猎人》中的一幕, 双人编程(Pair Programming)
XP中的精华就是双人编程。双人编程是整个项目运作的纽带,它使得项目中的每个开发人员都必须交流,代码成为共有。知识的共享,项目成员之间的联系更加紧密。每个成员可以成为Driver或者Navigator, 对Task同时进行工作。这样,在这个代码commit到CVS之前,已经经过了两个人的眼睛,通过了两个程序员的大脑,当然还有全部的单元测试。
4 第一天:“哈姆雷特还在上网吗?”
“是的,陛下!”
第二天:“哈姆雷特还在上网吗?”
“是的,陛下!”
第三天:“哈姆雷特……”
“是的是的,陛下!”
---XP项目开始后的第一个迭代后,任何时候,客户都可以得到一个Productive Release,如果他们对这个Release有别的需求,可以形成用户故事,项目组将这个故事加入下一个迭代中,并分配为Task,在若干个迭代后,便会出现新的Productive Release。
……
感谢XP,让我从无尽的文档中逃脱出来,并给我指引了一条贴近真实开发环境的开发之路。
附:资源:
使用JUnitDoclet加快测试开发
Tuesday, April 20th, 2004JUnitDoclet能够自动根据类的结构,生成测试框架。他将会自动找寻类路径中所有的公开的方法和类,根据类生成相应的TestCase和TestSuite类,根据方法生成相应的testXXX方法。它不要求在源代码产生任何标记,就可以生成test skeleton。开发者可以根据Skeleton修正测试。他大大减少了生成JUnit TestCase的时间,加快了开发速度。
JUnitDoclet可以集成在Ant中,使用更加方便。并且能够以一种非常Stupid的方式集成到Eclipse和IntelliJ IDEA中(用External Tools),呵呵……
JUnitDoclet地址:http://www.junitdoclet.org/
关于Blog的称呼方法
Monday, April 19th, 2004Blog为泊来之物,是Web Log的缩写。在国外,它的含义很丰富:可以是一篇日记(a blog),可以是动词,发表日记(to blog, blogging),也可以是作者(blogger)。中文翻译“博客”是非常准确的。在国内,“博客”更多的被理解为“发表网志的人”,或者灵活一点,作为动词,如“今天你博客了没有”。我没有见过称博客站点或者个人网志站点为“博客”的说法,更多的说法是“我的Blog”或者“我的Blog站点”。
前一段时间做的技术探索,在前天的千万记录的测试中瘫痪,郁闷
Monday, April 19th, 2004花了两个多月实现了系统原型。老大发话了:后续的开发先停,用这个数据库测试看看,说罢给了我一个2G的数据库。数据库是一个CSV, 不是规则的CSV,有自己的字段规则。刚开始我想先用C++写个程序,把这些数据按照占位符隔开,然后存入数据库。后来担心2G是Windows文件系统的单个文件大小的最大值,想先把这个2G的东东拆开。胡乱在网上找了几个不能达成目标的工具,再打开Windows Help,才发现FAT32系统文件最大值是4G(附:NTFS无单个文件最大限制,取决于硬盘大小,FAT最大值2G),于是放心的写了C代码。为了避免出错,先做了几个Demo文件,没有问题之后才开始转换这个2G的东西。
事情不是想象那么顺利,在转换到1.08G的时候,不知道出了什么问题,程序停止了(估计是数据中有不规则的行,我也没办法打开看。2G的文本,呵呵,任何编辑器都会死得很难看。Editplus直接悄悄的退出,Notepad, Wordpad直接告诉我内存不足)……胸闷中
准备再来一次的时候,突然想到,为什么不直接将它写入数据库?……我真是个笨蛋……于是打开Eclipse,连上Mysql,首先读出文件中的每一行,然后转换为相应字段,最后写入数据库,一个while(Not File.EOF)循环,加上Log记录……运行过程中又出现了ArrayIndexOutOfBoundsException, DateFormatException,要命的是运行了十几分钟的时候……该死的不规则的数据……没办法,只好改代码,捕获异常,Re-Build, run…一个小时后,这个2G的文本终于进了数据库……
随手来了一个select count(*), 结果赫然是12841782!一千多万条记录!我怀着自信的心情在系统中进行了一个最简单的查询……我没能等到结果出来就睡觉去了,起床的时候再看结果,仅仅初始化的工作就进行了500多秒(也就是select distinct的操作),后来进行的Query的操作就恐怖的不行,几乎每个操作耗时都在130s以上……按照事先定义的要求,千万级数据操作时间响应应该在一分钟以内,也就是说,我前一段时间的工作根本毫无作用!
今天上班,我简直不知道怎么办好了,郁闷得要死 : ( 我为这个项目付出了相当大的努力和汗水,现在却根本不能使用!
现在头脑乱糟糟的,需要清醒。
JavaScript Validation Framework v0.1dr released
Friday, April 16th, 2004这是我在作项目过程中产生的副产品。描述如下:
虽然又很多已有的开发框架提供了验证支持,但是,并非所有的现有产品都能构如己所愿。更不幸的是,如果你所使用的开发框架没有提供验证支持,那么意味着你必须手工在一个一个页面去写JavaScript代码。难度不大,却很麻烦。
JSValidation提供了这方面的支持。比起别的验证框架,它最大的优点在于独立与易于集成。由于纯JavaScript结构,可以很容易的集成到现有的应用中。并且,将所有的表单验证集中管理,使得维护应用更加容易。简便的XML配置,易于扩充的框架,使得JSValidation成为验证框架的首选考虑。
这个项目是我在开发公司系统过程中的副产品。我们使用的Velocity前台表现框架,然而,Velocity并不提供验证支持,难道要在一个一个的页面里面写JavaScript?…
如果你有和我一样的困惑,并想减少工作量,使得工作更加快捷,那么JSValidation也许是你的一个选择。
站点:http://www.jzchen.net/projects/validation/
演示:http://www.jzchen.net/projects/validation/demo.html
下载:http://www.jzchen.net/process-download.asp?file=validate.zip
小强问我,最近在忙什么
Friday, April 16th, 2004我说,忙着怎么快速有效的消灭小强。他说你怎么这么狠,我嘿嘿笑。
然后他说,我看见你在不停的写日记。
这倒使我怀疑起自己写Blog的动机来。到底是娱己,还是愚己,娱人还是愚人?
应该说物以类聚人以群分一点也没有错。所以,写Blog的目的,是发表自己的见地(以文字方式体现),最终希望的在网络这个大环境中,有那么一两个倾听的人,能够产生共鸣,这就够了。
有人要加入LiveChat项目
Tuesday, April 13th, 2004说来惭愧,2月份我将这个项目在G(??,好像是湖北某软件平台)——一个我现在连名字都记不起来的地方注册了,并加入了一大段激动人心的注释,然后便没了下文。不是我不想继续,而是那个时候一直在徘徊是否该将他OpenSource。LiveChat的Demo经过我很长时间的思考,服务器端架构更是经过多次优化,使得50人同时在线时用普通HTTP协议用Modern拨号的延时在2秒以内,服务器端CPU占用率不超过10%——服务器端可是用最没有效率的ASP写的。
LiveChat代表了我自己能够驾驭的JavaScript技术,OO以及性能优化的最高水平,一下要开源,心中自然有点不舍。另外,自己开始着手公司的新项目的技术探索和分析了,用JavaScript的机会少了,观念,模式都在发生本质变化。在这种情况下,如果真的开源,时间倒是其次,关键是切换不同的开发框架,我还不能适应这种快速的改变——结果很可能是耽误了两个项目的时间。我还是要靠公司吃饭的,所以,LiveChat就耽搁了下来。
工作进度排到了8月底,也就是说估计半年内LiveChat不会有动作了。抱歉,对它感兴趣的同仁们。
PS. 前段时间发神经,想摆脱Windows,装了Redhat9, 慢得受不了,安装后半小时就卸掉了。结果是……我丢掉了未备份的Outlook邮件和联系人,所以连项目的确认信也找不到了……
再说一句:为什么Outlook的备份/恢复如此难用?
恋家之犬多次被弃 女主人下杀手爱犬含泪而亡
Tuesday, April 13th, 2004看看这篇新闻:恋家之犬多次被弃 女主人下杀手爱犬含泪而亡
感人之深