/首页
/开源
/关于
外包篇 : 修BUG
发表@2018-10-31 22:51:34
更新@2023-01-21 22:47:40
###### 实际上,作为安卓手机用户,我已经很多年没有用过iPhone了,没钱买是主要一方面.但这不能成为阻碍我接外包修bug的理由,虽然积目是一个只有iOS版本而没有Android版本的app. ###### 作为刚入行的WYC,这样一个大工程,那个团队的包工头收了他10万人民币,即便这样,这笔钱也不是他自己的,坊间传闻是在深圳时候曾经靠一个产品骗了一笔钱,在改了无数次方向后,最后还剩约么这么点儿.这10万块的成果就是一个用php yii写的烂api服务器,和一个一打开就先思考会儿而且思考完毕后随时会闪退的iOS App.仔细想来,这包工头也算挺牛逼了.在后面的日子里,我曾经多次和他在北京中宏像素北区一号楼330楼道的南头窗户边上和他聊天,每次提及10万这事儿,作为半个朋友,我总是下意识的先占据在窗户边上的有利位置防止一些悲剧的发生,除此之外,还要不断地安慰他:"交点儿学费,不多不多,你看人家王思聪交学费,单位都是亿"... ... ###### 修BUG成了我在egret百无聊赖的日子里唯一的精神支柱和力量,积目本身作为一个外包项目,在我们确认了合作关系后(价格我就不说了,骗的不多),我对要修复的代码内心其实是有一定心理准备的.这个时候一个叫做XY的新人介入了,他拉了一个QQ群,里面有原来施工队的主力搬砖工人,印象中QQ昵称好像类似于RuanLi之类,他把原来的服务器相关信息,数据库信息等等一些基础信息配置告诉了我,嗯,积目之所以用百度云就是因为这个开端. ###### 再交代一下当初接手到手里的基本状况: ###### 大约有8000用户,活跃度约5000左右,每日新增100人左右. ###### 服务器1C X 1G,带宽1MBps,百度云服务器,图片数据存储于百度云对象存储BOS中,无CDN. ###### 服务器软件是apache,嗯,理解,毕竟比fpm容易部署. ###### 数据库主力是mysql,作为一个LBS软件,这块儿单独部署了MongoDB作为辅助补充(注意,这里有坑) ###### PHP YII 1.x版本,用粗暴的LAMP架构完成了API开发. ###### 客户端不太了解,不过据YBY的反馈,大概意思也算是代码奇葩,画风异常. ###### 作为10万块的小工程,施工队并没有提供后台管理功能(为什么单独提及这个,因为这事儿后面有个XY的梗). ###### 即便前面我提到了:我对要修复的代码内心其实是有一定心理准备的,但实际上我在打开项目后一瞬间,内心确实还是没有挡住那一坨像狗屎一样的代码带来的犹如神力一般的摧枯拉朽的力量.大家都是混施工队行业的,我提几个令人唏嘘不已,心往神驰的神级场景: - 作为C\S类型的架构,原搬砖工仍然采用了B\S中的cookie和session做认证,就是说APP登录后是通过php的session机制实现的认证,这就是老积目用户都经历过的不知道为啥用着用着突然就弹出登录框的原因. - 前面提了,数据库主力是mysql,但由于LBS缘故又引入了MongoDB,但MongoDB似乎除了地理位置运算,又存储了一些其他信息,而这些信息似乎在mysql中也存了一份,具体以哪个为准,我也不知道,RuanLi似乎也忘的差不多了.后来我又问RuanLi,那我存储的时候,应该存哪个里面,RuanLi大概在工地挺忙的,没回我,索性我就两处都存吧. - iOS端略反馈略diao,我这边儿吧,人家RuanLi顶多是不说话,而iOS那里那小哥回复倒是挺及时的,比如:"哎呀,闪退就闪退吧,出了问题再说,不出问题,怎么能修呢"... - 作为收费10万的小工程,没有动用挖掘机起重机等重型机械装备,自然也不会附送用户管理系统.前面说的XY的梗来了,有一次我问他,来来,你给我一个后台管理的地址,我怕他不明白我的意思,就又附加了一句:"就是那种可以管理用户的网页",他说:"有!有!你等等"...我现在回想起当时我看到XY发来的 http://180.xx.xx.xx/phpmyadmin 这个网址的时候,内心是有着万般莫名难状的激动,phpmyadmin这种专业的数据库查询家伙什儿都已经全民普及了!除了暗自佩服XY作为一个普通麻瓜竟然会sql查询外,还对RuanLi等施工队如此将免费开源项目瞬间商业化的商业头脑万分感叹! - 一般情况下,积目的早期用户都属于画风比较异常的一些用户,经常会暴露自己的yangju或yin*为荣或以此为乐趣,所以,避免黄赌毒还是需要的.这个时候,作为当时临时客串的SA XY,就会动用sql查询大法,直接在phpmyadmin中通过模糊查询以及精确匹配等相关高端操作手法,对用户进行删除操作,这样做,导致了一个比较牛逼的结果:大量的脏数据.举个例子,删除了一个长期暴力黄色的用户,结果没有删除该用户发出的弹幕.所以,积目老用户,经常遇到的情况就是闪退(除了脏数据导致的闪退,奇葩的代码也是导致闪退的重要原因) ###### 事已至此,作为骗了人钱,替人擦屁股的我,自然是不会采取大幅度修改代码和大幅度改进架构这种策略了,所以,曲线救国,做了如下一些措施: - 优化数据库,添加了该添加的索引,拆分了n条复杂的查询语句,有效地提升了查询速度. - 修改部分略牛逼的代码,具体我想不太起来了. ###### 在历经了两周左右的大幅优化,以及持续了一个月不断跟进后,app查询速度有了明显的提升,但仅仅是查询速度提升,闪退率依然很高.登录部分问题,也没有得到解决,因为幅度太大.为了方便我测试,WYC用闪送给我送来了一台白色iPhone 5手机,就是下图这手机,积目的老员工应该都认识: ![](https://ti-node.com/static/upload/6344379042195570688)