2018 年个人总结

Posted by Marco Liu on January 10, 2019

“2018 ’s summary ”

引言

         2018,是我正式踏入职场的第一年,从17年实习,到18年夏天大学毕业开始试用最后转正,其实回头想一下好像发生了很多事情呀,但总感觉时间过得好快~😭。
         这一年到处叫惨,我也很惨,P2P爆雷、贸易战、经济下滑、互联网公司年底裁员等等,这些对我的影响也就是我的股票和基金接近腰斩了吧,亏了我两个月的工资,嗯,还没到最惨的程度。


2018      回首,掏~

我主要从技术之内与技术之外谈谈我的2018,最后规划一下2019。

技术之内

逆向

         我觉得逆向是我今年学到最有价值的技术,之前一直是正向开发,对一些疑难点总是云里雾里的感觉,而在学习逆向的过程中,会从底层开始学习,借此机会,把《深入理解计算机操作系统》、《iOS应用逆向与安全》两本书给啃完了,在脑海里对整个APP运行流程和底层原理有了大体的框架和思路。也可以学习其他APP的实现方式,比如查看数据库的设计,UI的实现思路,网络请求数据格式等。另外学习逆向还有一个好处就是可以了解APP中的安全问题,防止犯低级错误。在逆向方面主要做了:

  • 1.《实现 AppStore App 的自动下载》
    可能会有人问,为什么要做这么一个项目。主要是两点原因吧,第一点呢,是出于个人兴趣,我对黑灰产的技术其实还是比较感兴趣的(虽然学到的只是皮毛)。第二点呢,通过这么一个项目的实践,可以加深自己对逆向开发的理解,也可以帮助我们分析 Apple 操作系统。相关学习记录和工程已经上传到我的GitHub上面了:
    https://github.com/L-hualong/HLTweakDemo
  • 2.《hook网络请求并成功获取以及修改参数》
    这里我是直接拿的公司的App做的实验,因为可以省去前期繁琐、耗时的分析过程。可以借用monkeyDev这个工具,注入动态库,重签名后,可以将APP内任何请求的参数修改成自己想要的参数。 如果APP是未加固过的oc代码,是可以直接hook任何方法的,至于有什么用,我就简单举个例子吧,eg: 微信自动抢红包、修改微信运动的步数、视频去广告等等。

         能做得更好的地方也有很多,比如 1、对LLVM编译器的底层原理还是停留在表面,没有深入学习,买了《编译原理》这本龙书和《LLVM Cookbook》,一直没时间看完 (也看不懂,真的太难了😭)。2、对iOS逆向大神张总开源的框架《Hikari》没有去集成到自己的项目,以至于自己部门的APP还是处于未加固状态。


工程效率Devops

         在刚进公司的时候,部门是没有工程效率小组的,我也算是见证了部门Devops从0到1的成长,这离不开安卓、iOS、前端、后台同事的共同努力。其中我主要做了:

  • 1.《自动打包上传包服务器》
    之前的流程是,开发人员手动打包之后发到群里,然后测试同事去下载安装,这么传统的方式自然是很低效率的。在一切自动化后,效率自然也上来了。这里的核心脚本命令XcodeBuild的详细使用,可以看我下面的博客文章:
    https://www.hualong.me/2018/03/14/Xcodebuild/
  • 2.《iOS-UI自动化测试》
    这里的UI自动化,需要测试同事编写测试脚本。然后UI自动化的具体原理可以查看我下面写的文章: https://www.hualong.me/2018/06/20/UITest01/
    其中,在测试脚本执行的时候,它需要知道要操作的是具体哪个元素,以及元素的具体位置,否则机器怎么自动执行点击或滑动操作呢,在这里我自己封装了一个为 UIAutomation 添加自动化测试标签的第三方库,已开源到GitHub: https://github.com/L-hualong/HLUIAutoTest
  • 3.《iOS-性能自动化测试》
    这里说的自动化性能测试,指的是在机器执行自动化UI测试的时候,顺便收集APP的性能指标。让APP集成自己封装的性能收集第三方库,然后APP在运行的时候就会采集性能数据了,库已开源至GitHub:https://github.com/TuanDai-MPD/HLAppMonitor

OC转Swift

         在没来团贷之前,一直使用的是object-c语言,进来之后,部门也刚好在将项目从oc语言重构成swift语言。在这一年里,学习了swift语言,也学习了Viper框架,结合面向协议编程的思想来开发需求。说说自己的体会,用swift语言写代码确实很舒服,唯一的缺点就是编译太慢了吧,你可以想象一下,随便删除或增加一行代码,就需要编译几分钟的那种感受(已经是增量编译了),怎一个痛苦可言~😭


技术之外

         在这一年里,体重胖了十几二十斤,年初的时候办了一张健身年卡,现在一年快过去了,去健身房的次数屈指可数,或许是真的没动力去健身房吧 (其实是因为懒)。
         过去一年,我可以说是生活在舒适区的那种人,因为在这里并没有一线城市那样的快节奏,上下班只需十几分钟。下班后的生活大多都是打手游、看电影,重新捡起了很久没玩的《王者荣耀》,花了两三个星期的时间上了最强王者段位,后来发现这游戏也没有多少人玩了 (无敌是多么寂寞),原来更多的人是去玩“吃鸡”了🤣🤣 (已经在网上买了个“吃鸡神器”,希望可以改变落地成盒的现状😛)。
         说到舒适区,我很欣赏我前任的一点就是,她是一个猎奇的人,是一个不愿意待在舒适区生活的人,总喜欢做自己没做过的事情,同理,她不喜欢公务员的那种生活。其实在我的观点里,如果你不愿意去创业,只是待在工薪阶层的话,公务员的生活其实比我们这些人的生活要好很多,他们工作轻松,工资也高,还有时间去干副业,有什么不好的呢🤔。
         嗯,单身狗的身份依然没有改变(脱单是不可能脱单的了,这辈子都不可能脱单的了,撩妹又不会,人还穷)。这一年脸上爆了很多痘痘,留下了很多痘印,虽然我很自恋地认为,如果我没有长痘的话,我其实是比李易峰要帅的😷。
         之前看过一个段子,段子内容大致如下:
         “一哥们让我给他介绍女朋友,要求160以上,可爱点,别太小心眼的。刚好有个符合条件的姑娘单着,我就问了,结果女生的要求是有房有车,月入1w+,身高175以上,样貌耐看。我去问符合该条件的男生,他对女生的要求是身高168以上,必须漂亮甜美的,很会做家务又能赚钱。我又去找了个符合该条件的女生,她的要求是男方要有别墅,有奔驰,有公司,身高180以上…..去尼玛……都特么好好单着吧!!该!!!”
         我就是这样,我喜欢的,别人不喜欢我,别人对我有好感的,我又对她不心动。(像我这样的人在2019年能找得到女朋友吗?😷)


2019      盘他!

         新的一年,一定要多运动(身体是革命的本钱),搬了新家后,家楼下就有篮球场,以后每周可以愉快地打篮球了~。

         对自己新的一年技术上的目标其实还是有蛮多的,先列举以下几点:

  • 1.《RxSwift的原理及应用》
    函数响应式编程是我一直想学的技术,希望能在需求开发之余的时间里尽快弄懂它的原理,然后用RxSwift+MVVM写个实际的demo。RxSwift所涉及到的知识点还是很多的,我先放一张图。
  • 2.《APM 性能调优》
    希望微信开发团队能尽快开源iOS平台上的APM框架,然后借着这个机会,看微信开源的库和自己部门的APM库的源码,取其精华,结合自己部门的APM框架学习微信团队的APM框架。
  • 3.《跨平台Flutter技术》
    现在是大前端的时代,虽然原生开发一直是最正统的 iOS 开发解决方案,苹果也已经构建起了相当完善的开发框架和体系。但是学习最新的跨平台Flutter技术总不是什么坏事,也可以借着这个机会体验一下开源的好处,而不像iOS,一切都是未知的。
  • 4.《数据结构和算法》
    应用层的东西永远在变,也永远学不完,所以我接下来准备刷 LeetCode来锻炼解决问题的思维能力,我觉得,如何去思考本身也是一个需要不断学习和练习的技能。

2019 一起努力💪。

—— Marco 记于 2019.01