跃迁引擎

空気を読んだ雨降らないでよ

iOS Research & Development


2018 年终总结

2018 年终总结,记录在今年的最后一天工作日。

本来只想发个沸点,但是写着写着发现字数太多了… ⇎_⇎

总感觉是,碌碌无为

关于工作:

  • 年中的时候,送走了合作一年多的老搭档,一个月后迎来了一位新搭档,嗯,三个月后又送走了她。
  • 年初开发沸点的时候,遇到性能瓶颈,开发周期也非常紧张,做了个冒险的决定,硬着头皮用了一个周末自学 Texture 的整个框架及 Flexbox 布局,又用了三天的时间把基于 UIKit 写好的沸点信息流以及部分详情页全部重构了,期间遇到很多问题,很多挑战,如高频率的闪烁、与工程现存的缓存兼容等,但好在都一一解决了,虽然过程很痛苦,现在看来收益还是远远大于成本的。
  • 小册本地化上线前,被苹果连续审核拒绝 6 次,上诉到审核委员会,最后苹果美国圣何塞总部的一个妹子打电话过来沟通,怼了她整整一个上午,第二天提交了第 7 次,通过了。
  • 上小册就要做内购,做内购就要上 IAP ,上了坑爹IAP 就要应付随时随地可能发生的丢单、掉单问题,这种由移动端驱动服务器进行的验证支付模式,真的反人类,为此设计了一整套用以应付 用户扣款成功后立刻发生断网、扣款凭证上传服务器验证的过程中突然发生断网等异常而导致的丢单问题的自动激活验证的重启处理,即使这样也不能彻底避免丢单问题,可见之
  • 十一回来花了三周的时间开始重构,重头做了掘金 iOS 端的组件化。
  • 众所周知掘金的 iOS 端闪退问题相当频繁,下半年借由组件化的契机进行了大范围的重构,改善最显著的还是内存问题,从7月下旬开始,崩溃率逐步由 2.42% 的水平降低到现在的 0.16%,文章阅读页还是存在很多问题,亟待改善,想想去年接手项目时的崩溃率能达到接近 6% 的水平,用户真的是很善待我们了。
  • 在推进掘金 iOS 端 Swift 化的道路上,尝试了很多方案,也放弃了很多方案,这不是一条好走的路,或者说最开始上混编就是个错误的决定。去年在上海的 Google Developer Days 上和阿里的朋友聊了许久,他们硬生生从 纯 Swift 环境撤回了纯 Objective-C 环境,原因很多,其中的包袱也很多,在今年的 SwiftGG 大会上也听到了唐巧讲述的猿题库 Swift 迁移之路,和我们面临的困境非常像,我思考了许久,至少到目前,我对 Objective-C 迁移到 Swift 的看法是:
    • 1.避免混编,否则你将牺牲 Swift 的许多特性来应对兼容问题,安装包的体积也是一个问题
    • 2.如果无法避免混编,那就不要想着将 Objective-C 的代码“翻译” 成 Swift,更好的做法是,将它们的代码进行隔离管理,新业务用 Swift 继续写,老业务等着迭代来替换,除非你能接受重头来过的代价。
  • 还做了些微不足道的事,比如说上了个 iPad 版本之类的。

关于技术:

这一段应该算是过去的这一年当中最没有成就感的部分,总结下来就是在 iOS 的框架里做个 API 搬运工,并没有太多值得高兴或者说兴奋的事情发生,社区应用从技术层面上讲,就是这个样子。

迷茫

很多 iOS 开发常常会因为一句 「iOS开发没人要了」 而不爽,甚至恼羞成怒,怼曰:没人要是因为你不行,高级专家需求可大着呢。

首先是一名程序员,其次才是一名会 iOS 开发的程序员。

许多 iOS 开发者都在谈论着底层底层,我最近经常会想一件事,就算把 iOS 啃穿了也只是把苹果的 SDK 啃了一遍而已。诚然像 RuntimeSwift 等这些都是完全开源的,但一碰到像 RunLoopCore Animation 内部实现这样的核心技术点,还是有一层厚厚的闭源壁垒,花大把精力在一家平台的 SDK 上,值得吗?

看到有些朋友转行去了 AI 领域,做着挑战与压力并存的工作,觉得自己似乎是在浪费人生。

产生上述想法的原因总结下来就算两个字 —– 焦虑

做了什么

由于上面的焦虑感,导致这一年混混僵僵的做了很多事,但似乎每一件都没什么实际价值或者说是意义不大。

  • 尝试了几门新语言,RubyPythonGo, 也就是照葫芦画瓢的水平
  • 从去年的 GDD 大会之后,试了下 Flutter ,感觉一般,今年又试了几次,没有太多的感触,相反各个群里对 Flutter 的讨论倒是热火朝天。
  • 年初面向公司内部的做了一次技术分享 《面向协议编程(Protocol Oriented Programming)之旅》
  • 尝试给掘金的 iOS 客户端上一套 Crash 自动防护,最后发现 Hook 系统类的风险过大且不可控,不 Hook 系统类能做的防护又很有限,企图一劳永逸的想法破灭,最后不了了之。
  • 参加了 9月份在北京举办的 SwiftGG 大会,见了喵神王巍、唐巧、戴铭等一众大佬。
  • 写了几个 Mac 工具,自己在用,没有开源。
  • 自己的博客重新搭了,但是没有更新内容,都存在电脑里了,不知道为什么,对写文章突然没了什么兴趣。
  • iOS 逆向做了些皮毛研究。
  • 研究了一阵子美军军用训练模拟器的民用版,著名硬核军事模拟游戏 ARMA3C++ 模组
  • 《编程珠玑》英文版,还没读完。
  • 公司后端上容器化的时候,学习 Kubernetes,考虑对掘金的 iOS 代码也做成容器部署到 CI 平台上,后来发现没有太合适的 Objective-C 或者 Swift 的相关镜像,要么放弃,要么自己写一个。
  • 年底投稿了一篇《iOS 知识小集》,南大 给发了微博。

总结

造成年末这种空虚感的最主要原因,是自己的内心并没有一个明确的目标,一直在思考想要做什么,想要什么,但究竟怎么规划,不知道。

这几天读了一些书,也听了一些书,有些感触。

脚踏实地做好自己,iOS 都做不到极致,谈什么更远的目标呢。

其实睡眠质量的影响也很大,推荐一本书《睡眠革命》,亲身实践,睡眠质量显著提升。

今年吸取去年的教训,年初就订好一个清单,逐步实现,一步一个脚印。

关于生活:

  • 今年没怎么运动,一共骑行了 396.17 公里,平路最高时速 46.93 km/h 创造了个人最好成绩 ,主要还是在北京,没有去什么远的地方,环台湾的计划又搁置了一年。
  • 给妹子买了辆 Wilier GTR,找了个周末带着骑了一百多公里,现在再也不跟我骑车了。
  • 踢了十几场球,期间伤了三个月,涨了 15 斤,从 边锋 踢到 边后卫
  • 6月底在小区门口遇到了一条小流浪狗,尾巴被人折断了,很可怜就收养了,现在半岁大,很粘人。
  • 11 月底和妹子一起去了趟日本,棒球青春的圣地 甲子园,圆梦。去了趟京都,随手拍了一些照片。
  • EVA 又在 B 站上从新补番了一遍,还是对这种无处不在的细节震撼。
  • 给父母和自己买了商业医疗保险,程序员的健康问题更像是个隐疾,权当理财了。
  • Steam账单
    • 本地多人合作类
      • 《Overcooked》 ¥26
      • 《Move or Die 4 Pack》 ¥167
      • 《Human: Fall Flat》 ¥60
      • 《Lovers in a Dangerous Spacetime》 ¥48
      • 《Overcooked! 2》 ¥90
      • 《Rocketbirds: Hardboiled Chicken》 免费
      • 《Rocketbirds: Evolution》 免费
    • 本地沙盒模拟类
      • 《Yonder: The Cloud Catcher Chronicles》 ¥46
      • 《太吾绘卷 The Scroll Of Taiwu》 ¥68
      • 《Cities: Skylines Deluxe Edition》 ¥28
      • 《Oxygen Not Included》 ¥58
    • 模拟驾驶类
      • 《Fernbus Simulator - Platinum Edition》 ¥174
    • 体育类
      • 《NBA 2K18》 ¥199
    • 竞技网游
      • 《Counter-Strike: Global Offensive》》 免费

后记

有些啰嗦了,大概就是这些吧。

最近的文章

NSMutableArray原理揭露阅读笔记

NSArray是线性连续内存,这个很好理解。但是NSMutableArray是可以插入和删除的,那么如何做到高效?就比如插入,如何做到尽可能少的移动或者不移动插入元素后其他元素的内存?实现数据结构原理是什么? …

, , , , 开始阅读
更早的文章

进程与线程

我们常说的进程和线程听起来名字很像,但他们之间有着什么样的联系呢? …

, 开始阅读
comments powered by Disqus