序言

二话不说,先扔上我 2016 总结里对 2017 的展望。

对 2017 的展望
很有趣,2016 做出的最大的决定就是抛弃 Android 从事 Js 开发。2017 却碰到了远赴他乡这么有趣的事情。对 2017 大致有以下几点期望 :

  1. 在工作方面能够有一个让人满意的抉择
  2. 希望能够建立前后端的开发体系,入门全栈
  3. 继续深入 Sketch,画自己想画……
  4. 继续研究 Python 以及相关开发
  5. 保持对 RN 的关注度以及踩更多的坑

很惭愧,写完就一股脑都被我扔在了脑后,在 winter-fall 这个 group 里写的年终总结写完便再也没看过。好了,惭愧完了,现在该看看 2017 到底都干了些什么~~~
距离上次写年终总结 3 Jan 2017 已经过去 370 天了

工作

加入嘉云升

在对底层的开发产生一部分抵触心理之后,离开了上家公司在经历了短暂的裸辞之后最终来到了「嘉云升」,那时候是三月初,刚过完年不久。

重构 PGXCloud 项目

也谈不上重构整个项目,主要是针对较为核心的上传功能做了更进一步的优化。由于之前的代码都是面向过程式的代码,几乎没有什么可拓展性,想要实现后续迭代的更新需求以及渲染性能优化,只能通过面向对象的开发方式来重写整个模块。
最开始在看到少则三百多行,多则上千行的代码模块之后,整个人是崩溃的,扑克牌式的命名方式让人不得不拿出小本本记下各自之间的调用关系。在和天博经历了一周多的重构之后,最终以较为满意的结果完成了这次重构,不论是在整个 Promise 的应用还是 Mobx 渲染机制的理解上,都有长足的进步。

巨量表单的开发优化

那段时间是在做 vendor(lims 客户端),机缘巧合在掘金上看到了关于「高阶组件」的一些深入使用案例。在花了半个来小时看完并分享给天博后,总感觉有事情要发生。结果没几天便看到了十多个匹配每个表单页面的 mobx store,可想而知,每个表单对应的行为基本都是一致的,而在 store 上的表现更为明显,一模一样的结构,不一样的字段,每个 store 都存在所有字段的列表,不一样的接口。还是比较容易想出使用高阶函数(组件)进行二次封装,类似于 Java 开发中给不同的类抽象出一个父类,所有共同的行为只需要在父类或者接口中进行调用控制,子类只需要去实现或覆写各自模块不同的部分。虽然时间比较紧,但出于能够降低至少 70% 以上的代码量后,那天晚上还是向志强提出了这个想法,在大致调研了可能出现的问题,如:

  1. 各个字段默认值的问题:如果所有表单都由同一个高阶组件处理,那么每个表单对应的字段是什么?是不是需要去每个子页面中再写一次?
    答: 其实就算是之前的写法,都不需要在 store 中罗列出所有的字段值,除非需要给对应字段添加默认值,而不添加的话,我们的组件在接收到 undefined 的时候,绝大多数组件都是可以正常运行的,个别我们自己写的组件只需要保证不会 crash 即可,这样我们就只需要在 store 中设置一个能够被监听变化的空对象——observable.map({})
  2. 如果对应页面的部分字段需要默认值怎么办?
    答: 我们只需要在对应页面的构造函数中进行默认字段的添加即可。虽然在代码层面上看起来是很多个页面通过高阶组件使用了同一个 store,但实质上在内存层面看的话,它还是 N 多个页面各自有各自的 store 实例,因此我们不需要考虑多个页面之间的相互影响,只需要做两件事,在 store 中添加一个 injectFields 方法,在对应页面的构造函数中给我们的空对象注入需要默认值的字段即可。
  3. 每个页面提交、修改、获取数据的接口都不同,该怎么办呢?
    答:经过观察,每一个页面的接口都几乎一致,只是对应的 id 和 type 不同,我们只需要在进入该页面的时候,将对应的参数传入,这样在高阶组件中就可以获取到,从而调用对应的方法接口即可。

在调研完几个主要的问题后,当时已经是将近十点了,因为时间紧张,为了不影响开发进度,最终还是开了新分支,回家后便开始了凌晨的尝试,第二天成功合并进了主分支。

开展小程序

最开始让我写小程序还是有点意外的,虽然没有进行更进一步的研究,但最终还是以较为完整的开发流程完成了两个小程序 app,加上近期微信在小程序上利用新的渲染引擎推出的 “小游戏” 让这段短暂的小程序开发变得更具实际价值和意义。当然,这对于计科出身并拥有一定 web 前端基础的我并没有什么难度,再加上之前了解过一点 Vue(读音: View), 入手几乎没什么成本。

封闭开发

所谓封闭开发就是传说中的 997,我们是 10 11/12 7,偶尔在汇报的时候可以休息半天一天的样子。即使这样,我依然保持了一周至少两到三次健身房的无氧训练,这保证了在下班之后,不会晕倒在北京凌晨温度零下的大街上。就这样在短时间内,从 web 切换至 React Native,再到 Android 原生开发,虽然有一些生疏,但还是捡起来了。

2017 的第一次通宵

那次通宵是 2017 年第一次通宵也是唯一一次的通宵,由于第二天早晨
11 点会进行我们的第一次和医院的汇报沟通,那天大概还有三四个小时的工作量还没有做完,彼时已经是凌晨 12 点了。在和天博匆匆到达酒店洗漱完毕之后,又开始了接下来四个小时的工作。按照我以往做事的秉性,我一般会将这四个小时的工作量放到起床后的四个小时,但考虑到 Android 端在打包的时候,可能还会有一些未知的问题,而且事关双方汇报的问题,甚至会影响公司,于是 …… 那天晚上我写到了凌晨 5 点多,到写完最后一行代码,电脑已经死机了。睡到 8 点缺一刻的时候,被天博叫醒。到公司后打开电脑开始打包 Android,果然不出所料,debug 包运行没有问题,但是 Release 包就会崩溃闪退,届时已经到了 10 点多了,亚历山大 ……. 最终依靠查看 Android Native Release 的报错信息,一步步成功修复了问题,那几个小时可能是我压力最大的时候,面对一个东西,无可奈何 ……. (鬼知道一个错误 Debug 没问题,Releasae 会直接崩溃,而且当时为了对比调试,新开了一个完全相同的工程,导致调试的代码在两个项目里串了起来,额外增加了调试难度)。

情感

情感小波折

在大概六月份吧,因为 “包子” 的缘故认识了同地的小 A 女孩儿,第一次见面还比较投机,后来出于种种原因,也可能是没有和女生交往的经验导致这次的机缘很快就破灭了,情感第一次出现比较大的波动。

再见了,我的初恋

如果说上一次的是情感小波动,那么这次就算是把初恋交出去,正式谈了次短暂而又美好的恋爱。整个过程还是由于自己心态的问题,加上某人无意之中的心里灌输,导致初恋在维持了三个月后,最终死在了 12 月 24 号那天凌晨,本来 25 号是要宣告天下在一起的日子,我退却了 …… 是我对不住人家,本来一个好好的姑娘,却摊上了我这么一个没脑子的负心汉。
不禁让我想起了初二那年,大概是 10 年前吧,懵懂的自己因为不知道如何和女生相处,主动放弃了已经同意的班花,最终不了了之。原以为自己能够从中吸取教训,却没想到最终还是倒在了同一个问题上。

生活

健身

健身是一种生活态度,不是任务,永无终止…
在公司从望京南搬至利泽中二路后,也不知道为何,可能是为了从身体上开启改变自己的第一步吧,先后报名了三个月的 “Big King” 健身房,同时还花了一笔银子加入了健身大队,每日除了做 HIIT 就是晚上跟着教练做无氧健身动作。迄今,在这件事上已经坚持了有整整五个月了,每个月也都能看到自己身体上的变化,从 110 斤的瘦子一步步迈向了 133 斤的标准体重。从以前的大头儿子,变成胸口、胳膊更加壮实的健身男。不过看起来依然还是没有很壮实的感觉,自己的目标是增重到 140 斤,从此不再刻意去增重。

其实,就健身这件事来讲,莫名的拥有了无比强大的意志力来把这件事坚持下去。很多事情都是需要无比强大的意志力去长期以往的坚持,才能有实质性的收获,过去的过去我也放弃了太多太多有意义的事情,包括生活、学习、还有工作上的事情,但是在这件事上我真的不想输。从小因为营养不良瘦了 20 多年,还因此在第一件感情生活上受到挫折,自己只想做一个不一样的自己,一个能够给别人带来最基本安全感的人,保护自己爱的人和爱自己的人。我身边有不计其数的人,有的减肥、有的增重增肌、能看到实质性变化的人寥寥无几,经常有人因为非常小的伤病就不愿意去了,有的人训练之前大腿软绵绵,半年后大腿还是软绵绵。有的人半年前 150 斤,现在还是 150 斤。三天打鱼两天晒网,笑嘻嘻的并不是健身应有的态度,悲哉悲哉 ……

日常的消费升级

与往年不同,2017 一年消费了至少过去两三年软妹币的总和,自己再也不会因为自建房的潮湿导致起了满身的湿疹,不会因为大冬天还要用双手去洗棉衣,不会每天早起一两个小时去挤公交、挤地铁。不会因为375 天穿同一双鞋穿到破,不会因为每天为了省钱省事不吃早餐晚餐。至少这一年我可以说,我过得很充实,很幸福,至少我还有一个强壮的本钱。当然,到现在虽然比以前进步了一些,但是依然有很多地方的不足 ……

总结 17

整体上来讲,给自己打 6.9 分吧。

  1. 生活方面有了长足的进步,知道不去拿命换钱了,知道善待自己了,知道投资自己了,如🐑哥所说,我变得更加完整了,但有时候还是有点轴,毕竟没了女朋友。
  2. 技术方面,技术上比较令人值得骄傲的是上传模块和多表单模块的设计。我觉得还是需要多关注一些技术社群,多看看别人的世界,别人的眼界,毕竟经历的不同,写出来的代码也会有所不同,闭门造车毕竟比不上大家集思广益。同时还是需要减少对 NBA 的关注。
  3. 投资理财方面,尝试用一些数额不大的资金去投资一些数字货币,毕竟到目前为止,峰瑞资本的文哥(代码家)对以往货币的预测还是非常准的,包括当年 8k btc 时对 120k 价格的预测以及对 iost 准确的抄底预测,避免了很多朋友接盘这个破发币的惨案,同时又在 1.4 毛的价格到 2.2 毛的价格上获得了 37% 的毛利润,匀掉交易基础货币 BTC 的浮动,一天之内净收益达到了 30%。然而目前大家都在观望所有货币拦腰砍的局势,这背后必然是无数人捏不住货币进行疯狂的抛售,换而言之也就是韭菜被收割悲惨命运(比较典型的例子,就是有朋友在 iost 2.8 毛发行价的时候疯狂购买,最终跌倒了 1.7 时受不了抛了,大幅度亏损,而文哥则是在 1.4 的时候鼓动入场,虽然我没有入…)

期许 18

这次就不说什么了,还是针对去年没有完成的任务进一步补锅:

  1. 打通单独开发前后端的能力,哪怕是最基本的功能
  2. 今年区块链和 ML 还是蛮火的,使用 python 来做更多的事情,同时也可以达成目标 1
  3. 尝试一些对不同资源的统筹能力(这也是美团评级的一个软需求)
    (当然,优先级还是 1、2、3,因为 1、2 是 3 的大前提,还有 3 这个软需求也是在技术硬条件满足的情况下才考察的)
  4. 多了解公司业务需求,understand what I am doing ……
  5. 尽量多抽时间写博客,再不济可以列个单子,防止遗忘
  6. 身体方面,目标稳定在 140 斤,不期望成为肌肉男,但需要拥有一个坚实的臂膀
  7. 多读书、多读书、多读书、多思考,看到一件事之前,先利用自己的知识见解分析一下,而不是 “操他妈的,臭傻逼,** 党如何如何…” 转发之前三思
  8. 学会游泳,滑雪,多参加社区活动,多接触外界,尝试更多自己没尝试过的东西,成长
  9. 保持初心,通过社区结识更多有能力的人,积极维护已开发的开源库,开源出更多优质的开源
donation