对于这个项目失败的原因总结!

来源:互联网 发布:oracle数据库新建用户 编辑:程序博客网 时间:2024/05/07 23:35

0、终于结束了,我们失败了。项目的时间截止了,我感到十分可惜和遗憾

我们很自私,其实我基本上就是为了奖金而去的。自从我上到大学之后的,大大小小的做了不少个项目,失败的倒是有,但是真没这么擦边的。


1、我的客观原因:

说说什么原因吧,大多原因在我身上,我太勉强自己,在1个月之内,完成iOS的软件编写,并要和后台php进行Json通讯,当然这后台也是我来做的。

1、我从未接触过iOS开发,以前做过的游戏都是用的Unity3D来做,直接就跨过了iOS这部分的开发,但我硬要接下这块的任务!
 
2、同样的,我也从来做过php,一直用的都是Jsp或者asp.net,在知道没人做这块的时候,我也硬上了!更别提到后面的和Json进行通讯
 
3、说到上面的这两点,还情有可原,后面的几点,就基本能看到我的缺点了。


2、错误、弯路总结:

在整个项目中,要从web网页中爬所以的公司招聘信息,这部分没做好是我的责任,我没什么借口
我错误的估测自己的能力,才导致我对整个项目的难点和时间没把握好

1、当在爬分智网站的时候,我发现页面无论如何都是用gzip压缩的,也就是我用libcurl获取数据的时候没有指定gzip的时候会得到乱码(因为加上gzip需要使用高版本,需要在编译的时候不上zlib);但当时我死活不知道原因,网上也很少这方面的知识,毕竟大家都觉得,如果你在客户端访问的时候,不指定gzip,网页是不自动进行gzip压缩的!
 
2、还是在爬分智网站(当然在微博)的时候(也是一样的,微博也会一段时间屏蔽一段时间访问次数超过限定次数的ip),我发现需要写一个代理模块,也就是在libcurl获取网页数据的时候,要对当前的ip进行代理设置,这样就能避开网站的ip规则(如果是微博,还需要更换登陆账号),这个模块,花了差不多3天时间才搞定,期间因为我是插网线直接能上网的方式,这样的方式不能设置代理,只有拨号的时候才能设置!
 
3、更可怕的是,当我完成了上面的这两个模块的时候,居然懈怠了!我居然去卖电脑和买手机去了!这个不可原谅!也是间接导致这个项目时间不够的原因!
 
4、后面时间还剩下不多的时候,我发现我一直用的获取网页信息的方式是:通过libcurl把网页的数据,下载到string变量中,然后去用boost的正则表达式匹配我需要的数据。后面在我知道Java的爬虫都是通过使用Dom树去解析html数据(和浏览器是一样道理)的时候,我居然还去改!把原来获取数据的方式,变换成了使用htmlcxx和libxml2解析html数据的形式(最好为了简单快速使用了问题比较多的htmlcxx)。这样子又去了几天!
 
5、好,现在我可以得到html的Dom树了,想要的数据也都有了,按二叉树的形式把数据输出了!怎么样呢?我怎样得到需要的信息呢?比如像下面的数据,他们都在一个table的tr中好获取(毕竟这种网站页面,一个页面有超过1个table的不多见)
华为
腾讯
思科(Cisco)
支付宝
宝洁(P&G)
百度
中国移动
上海通用汽车
富士康
链家房地产
医生招聘      12624条
会计招聘      43272条
文员招聘      37229条
JAVA招聘      13102条
人事专员招聘      7634条
PHP招聘      8688 条
教师招聘      16256条
编辑招聘      14569条
采购招聘      5843条
翻译招聘      10761条

但你看这种:
计算机软件 汽车/摩托车 互联网 金融 通讯 电气/电力/水利 电子 房地产 医药/医院 工业制造 生物化工 家居/室内设计/装潢 广告公关 纺织服装
计算机硬件 IT服务 网络游戏 工业自动化 保险 餐饮 物业 传媒/艺术 印刷 咨询 教育 检测 中介 贸易 零售 食品 美容保健 家具/家电 重工业 运输 卫生保健 医疗设备 休闲/体育/娱乐 旅游/度假/住宿 石化/能源 矿业 航空 政府 环保 农业 跨领域经营 其它 快速消费品 养殖业 礼品/玩具

他都是超链接的形式!

然后网上有看了篇文章,说是使用这种解析Dom树的形式,在单独获取超链接(网络爬虫)的形式,很方便,但是在想要获取到页面数据的时候,还得使用字符串匹配的形式!操!这居然都没我一开始直接用正则表达式匹配页面数据来得快,后面又回到最初的版本,使用正则表达式!
 
6、好了页面数据有了,好像以前都没事了,该得到的也能得到,比如http://www.fenzhi.com/gso3131.html这个页面中的“显示全部信息”,里面的完全信息也能获取到了。下来呢?怎么做推荐?怎么做数据分析???取到的数据需要聚类啊!想了下自己没这方面的知识啊!草草上了个Java的开源聚类算法,后来又弄了个svn分类器。
 
7、哦,统统都搞定了?想一想,好像用户需要在iOS端查看公司数据啊?这么多的数据,数据库能很好的处理么?
比如这段文字
“华为是全球领先的电信解决方案供应商。我们客户需求持续创新,在电信基础网络、业务与软件、专业服务和终端等四大领域都确立了端到端的领先地位。”
用户查询关键字是“华为”,我是要在数据库匹配的时候进行select * from company_info where company_name = '华为',并且还需要select * from company_info where company_introduction like '%华为%',最后还要select * from company_info where company_appraise like '%华为%'、select * from company_info where company_tag like '%华为%'???这样好么?能优化到什么地步?
最后一个团队的成员告诉我,这样的方式最好是进行全文检索。所以后面你会看到我用了lucene4.5;然后又是一段折腾索引也能用了,中文支持也打上了。
 
8、差不多结束了,总觉得有什么地方不对劲,怎么我用c++爬取下来的数据,用Java聚类分类处理之后,还要用Java进行索引?当用户进行查询的时候,又用php把这些数据用Json,返回给客户端?不对。。我又把php换成了Jsp的,这样那样。。。。。。。。。。。
 
9、还剩几天了,实验室的项目又要我完成ActiveX模块,并且让我写详细设计文档!终于,这个项目失败了,时间到了,还没写到后台,前台也停止在使用tableView的阶段!虽然我表面上给大家说,现在基本没时间弄了(可是我却清楚的知道,我前期浪费了多少时间!!!)
 
10、上面的1-9条,都是我该负的责任!我很惭愧!下次我在做任何一个项目(参与或者负责)的时候,一定要回来看看


ps:每次,我还没完成主体功能的时候,就在想后面完成之后再加上什么,比如我这里的还想加上地理位置的信息,然后能让用户在查询公司信息的时候,可以返回附近的公司信息!这太不应该了!等于说我是在YY!



3、我的个人总结(算是忏悔!):

总结:对于团队的成员,没拿到奖金,是我的原因!很抱歉,给大家拖了后腿!今后我无论是不是做软件,我都一定把这段失败的经历着实的刻在我自己的心上!


4、写在最后:

虽然我们团队失败了,但我还是要把这个工程完成!为了给自己一个交代!
原创粉丝点击