参加了趋势的编程竞赛,感触良多(1)
7月16接到文件,下午打印,分发,晚上讨论,分析总计划以及技术问题拿到了竞赛的题目,觉得不是很难,跟大家商讨了一下开始分配未来的八天时间以及任务。晚上去和mm逛街,要一个星期见不到了。
17号上午-17号晚上:几乎只有我一个人在查资料,gms在陪高中同学玩儿,restart在陪她姐姐逛
18号整天-19号上午:查资料解决技术问题
19号下午-20号上午:定出客户端数据结构以及工作方式
20号下午-??????????????? ?:准备server端数据结构以及界面
21号晚上-22号上午:集成测试,写文档
22号下午-22号晚上:完善文档,测试ftp连接
23号上午-23号中午:传送到ftp上,备份整个程序,然后进行一些添加润饰工作,注意每步添加都要有备份
23号下午-???????????????? :聚餐,打印2004_program_contest_agreement.doc文档,签名寄出
参加了趋势的编程竞赛,感触良多(2)
Client端的设计思路到现在我还是觉得很正确,多个probe或者simulator都向一个队列中写,一个发送线程在读和发送,使用mutex控制同步和互斥。
查资料,网速太慢,浪费了太多时间。开始写client的时候已经过了两天了
文件的生成、修改、访问、删除等操作、进程启动与终止以及当前活动进程的监控由我来完成,restart负责网络报文的抓取以及分析,同时分析email信息(主题、发件人、收件人、附件等),gms负责cpu占用信息的获取以及client发送线程的编写。
我们预先定义了接口,全局变量,以及格式,后来才发现这些还不够,还应该控制版本,控制文件的更新提交,以及加强交流(这个由于restart和我们两个不在一起,后来出现了许多问题)
Server端和Client端放在最后才来写是个巨大的失误,这个最能影响项目进度的东西居然放在时间进行到一半的时候才来弄。后来就发现了许多网络发送与接收的问题,以及自己做内存管理的时候发现的许许多多的内存泄漏。中间还遇到了一个奇怪的问题:机器反应很慢很慢,任务管理器显示cpu占用率只有11%,而内存消耗也只有220M左右,但是我杀死Client进程的以后,机器就比较快乐,cpu占用率和内存消耗还没有变。难道任务管理器出毛病了?
一开始查资料不应该花那么多的时间,具体的问题可以慢慢解决,不必在那里等那该死的网络。说到网络我就来气,平时不觉得网络出不出得了国没什么,一到查资料查不到的时候、或者别人说在codeproject、codeguru上面有却死活连不上的时候,暗中把学校的网络骂了N遍。
?参加了趋势的编程竞赛,感触良多(3)
几个小教训:
1、原来学C++的时候没觉得纯虚函数有什么,想想提供一个缺省的实现不是更好吗?但是到了用的时候发现就出了问题了。gms定义了一个GetSize()方法返回结构体的实际大小(包括里面的指针内容),定义了一个GetType返回其所属内容,并让GetSize缺省返回0,GetType缺省返回1。由于和restart联系不方便,结果restart写的NetworkPacket和Email两个子类里面就没有实现,结果后来debug花费了两个人每人4-5个小时。
2、版本控制:由于晚上连夜赶工,结果三个人都是脑袋晕晕的,结果一个文件生成了多个版本,同时有两个人在改,最后大家都以为自己的那部分的bug已经改正了,结果却在另外一个人生成新版本以后被覆盖掉了。不过igloo实在做得太简略,和eclipse或者wincvs没得比。
3、详细设计文档化:画图的时候没有想好怎么画就开始写代码最后画得一塌糊涂。而且显示模块受到了MFC框架这中思维的制约,没有专门拿一个线程来做,导致了代码逻辑混乱。还好把数据存储和处理分出来了,否则就不可收拾了。