小松的技术博客

六和敬

若今生迷局深陷,射影含沙。便许你来世袖手天下,一幕繁华。 你可愿转身落座,掌间朱砂,共我温酒煮茶。

2019年年终总结

春生、夏长、秋收、冬藏,四季的变迁重新归零,时间的转轴将再次拨动。《内经》云:冬不藏精,春必温病。意思是说如果我们冬天没有做好阳气的收藏,春天万物复苏之际会得温病。对于我们的知识也是一样,如果在上一年没做好知识的沉淀,那么在来年新技术欣欣向荣之际,就容易迷失。今时之人讲计划,说一年之际在于春,可是自身的资本都不足,计划的保障力又有多少呢?希望我自己 2019 年的沉淀能够支撑起自己 2020 年的远航。

工作

今年一年的工作都是以微信读书故事流为主的。一个人承担了故事流 Android 端几乎所有的工作,涉及了书籍、漫画、公众号、想法详情、视频流等各个类型的开发与迭代。

接近年末,我唯一的感受就是:效率低下。其实年初时的效率还是挺高的,个人在项目初始先行写了 QMUIContinuousNestedScrollLayout 来支撑各种类型的 View 的连续滚动,完美支撑了几次方案的大变革,那个时候,在我做项目之后,我还有余力开启 QMUI 2.0 的开发,写写文档,做点重构,静静的看着 iOS 周末加班。然而越到后面,产品的频繁改动与试错,旧代码例如阅读器等的一些特殊处理兼容,导致整个代码复杂度越来越高,层级越来越深。而被产品追着走的下场就是为了赶时间而采取各种快速实现方案,技术栈越欠越多,到最后就是一坨坨改不动的翔了。

其实我觉得这里主要是业务太复杂导致的,如果再次重构,我的大体框架不会怎么变,而只是业务逻辑代码组织的变更。我自认为我这一年的 bug 生产率还是比较少的了,这也算是这一年在强业务下锻炼的结果吧。

很幸运的是自己还在坚持维护 QMUI Android。如果只是完成需求,那么代码优化与抽取方面的思考可能不会有那么多,长久以往就会养成机器编码式的习惯。而写组件就不一样了,你必须要剥离业务,而且必须要考虑接口的易用性等待,思考得多了,就成习惯了,那么在写业务代码时也就会考虑这些,写出来的代码自然优雅一些。

QMUI

QMUI 对外是一个 Android UI 框架,对个人更多是一个实践与总结的基地。今年主要做了三件事:

  1. QMUIContinuousNestedScrollLayout 的开发
  2. 开始使用一些注解和代码生成来减少编码量
  3. QMUI 2.0 的开发,包括夜间模式的开发、一些组件的重写。

像注解和代码生成,网上讲解的文章很多,但都是 mini 版的 Butterknife 或 ARoute,其实我觉得写这方面的文章不能再写这些方面的了,已经太泛滥而且没意义,如果自己能够从业务中发现可以使用注解与代码生成完成的一些功能或者优化点,提炼出来再分享出来,意义会大很多,而已有的,去读源码就是了,读不懂,再读就是了。

夜间模式的实现是一个完整的功能模块,从设计思路、方案落地都是自己独自探索的,算是今年一个比较大的锻炼吧,需要考虑各种各样的情况。网上文章的分享,基本上大都是通过 LayoutInflater.Factory 来讲解怎么实现 xml 的换肤,太不全面了,所以要了解一个换肤框架,最好还是读别人的开源代码,那样可以了解到更多的细节知识、以及看看别人是怎么组织代码的。我比较习惯阅读源代码的,从很多地方偷了很多代码实现,在项目中改别人的问题时,我比较多的时候也是直接看实现然后改,看得多了,了解得也就全面了。另外我是准备引入字节码注入来搞一些换肤工具的,不过年末了,需求版本太快了,全都搁置了。

QMUI 2.0 还有很多组件的代码重写,一些组件是官方依赖升级或变更,优化实现;另一些组件则是完全重写,采用新的方案或新的组织形式,使得调用更方便。这些更改,有的来源于使用者的 issue,更多的来源于业务上自己使用的不爽。也有一些是技术能力提升了,知识面广了,就觉得原本的实现不行,从而改进。可惜的是读书项目还没时间升级 QMUI 到 2.0,因为升级要改动的比较多,而产品没有留时间。

后面会继续对夜间模式做一些改造吧。然后就是改下拉刷新组件,新组件有了一些思路,会废弃掉原本的而写个新组件,支持上下左右的下拉刷新操作,也会直接依赖于 CoordinatorLayout,读书有下拉刷新,有上拉退出阅读器,有发现卡片左滑出活动界面,有右滑加载更多,有下拉进书城, 我的想法是一统这些场景,所以不会叫下拉刷新,思路和实现方式都有了,就差实现了。

学习

持续学习是一个程序员必备的点。不过空闲的点也只有早上、午休时间、睡前、周末,那么就要看个人能不能抵挡住游戏、抖音、知乎、微博的诱惑了。工作是需要调节剂的,周末我是一般不想搞工作上的事情的,有时候灵感来了,会搞 QMUI 的东西,例如夜间模式的初始方案、注解加代码生成都是在周末完成的。不过今年周末比较多的在沙发上躺尸,一周五天的快节奏,到了周末也已经不是正常的周末了。而一般的工作日,就是刷刷文章了,不玩游戏、少刷抖音,还是有些时间来学习,当然年末还是看了 LOL 世界赛,精彩啊。

现在入门 Android 的知识越来越多,也越来越难,所以年末也挖了一个新坑,写 QMUI 实战,其实也会教大家运用各种新技术,目前更新了三篇,后面会写换肤、夜间模式、dagger 注入的使用、几个炫酷动画、RecyclerView item 更新的一些骚套路等等,好像有点多,感觉会烂尾。

在 Android 方面,今年学习了 kotlin 协程、 room、 PageList 等方面的东西, kotlin 协程实在是太好用了,不过在 Android 上它要配合 Room、ViewModel 等才能最大化它的功效,读书项目是 Rxjava 为主,ViewModel 也是我在故事流和一些新的业务才引入,因此引入 kotlin 协程并不能提升多少效率而且学习成本并不低。但是如果是新项目,绝对值得拥有,配合 dagger 等来做依赖注入,再完美不过了。 依赖注入实在是一个利器,值得学习,dagger 入门较难,但一定是趋势,dagger-android 已经不再维护了,官方准备用新的方式来简化 dagger 的使用了,非常期待。

在 Android 之外,今年学习了一些 Spring、Mysql 等方面的知识点, 用 Spring Boot 来写小项目。体验体验“没什么是一个注解不能搞定的,如果有,那就再加一个注解”的开发方式。Mysql 上学习了很多,做了一些练习,写 sql 语句熟练了很多。

现在我的学习途径一般是:

  1. 极客时间。张绍文的 Android 开发高手课、丁奇的 MySQL 实战课、 王争的数据结构与算法之美和设计模式之美,都是值得订阅的,每天学习一点点,积累起来就是很多了。至少知道各种算法的名字了嘛。
  2. 微信读书上看电子书。
  3. medium。Android 的一些前沿性质的文章,例如 kotlin 协程,在上面可以找到非常棒的文章,而这些会是很晚才被翻译到国内的。国外的人写博文的思维都太好了,能让你读懂。这种思维能力真心学不来。
  4. Android IO 视频、AndroidDevSummit 视频,官方的视频分享,有很多最佳实践与新特性介绍,英文听力还不行,恶补中。
  5. 公众号文章。 微信公众号只能存 5 篇在看文章,不过可以用微信读书收藏自己觉得不错技术文章。
  6. 掘金。使用掘金插件作为 chrome 新标签页,每天刷最新的技术文章。

中医

从 2018 年开始接触中医,然后就持续学习到现在。其起因是带着老妈去医院挂号、排队、检查、拿药,钱是花了不少,病确实严重了。而家族长辈中承受病魔的不是个例,更有因病去世的。当今医学确实是得到了极大的发展,可是好的医生却是可遇不可求,所以我就去自己看一些医书,希望尽一点微薄之力。

从古至今,有很多很好的方剂是被埋没的,很多比较好的药,药店也买不到,真是可惜。通过学习和查阅,我辩证的给老妈使用了一些药食同源为主的中成药,效果还挺好,这一年的静养下来,已经恢复了很多,至少没有以前全身不舒服、急于求医问药的状态了。

不过市场的药材质量真心难以保证。今年秋天感冒了一次,咳嗽,如果去医院,我估计很大可能被定性为支气管炎之类的吧。但我不这么认为,我认为是寒咳,那我就去药店买中成药,一开始买的药效果并不好,不过病也没变严重,然后我去另一个药店拿了类似的药,服用了当天就好了一大半。所以我的辩证是没问题的,只是受到几味用药的不同以及用药的计量影响。

我学中医看的书,一个是懒兔子的书和公众号,懒兔子有一本治疗各种感冒、咳嗽等平时很常见的病的书《医目了然》,很不错,公众号每公众日更新,文字充满趣味。 另一个就是黄元御的书了,目前主要是看塔对伤寒论的注解,想要学好伤寒论。黄元御的文采实在是太厉害了,初看他的书,不过土寒水湿,不过多次看他的书,才能看到很多细节上的区分和阴阳消长的变化。医学之难,一个是病情的变化,另一个就是细微的病证区别而反应不同的脏腑经络之变。需要不断的学习和悟才能融汇贯通。 除此之外,今年也了解个许多药材的功效,虽然前行缓慢,但至少懂得更多了。

西医如同算法,定向、高效。中医如同机器学习与大数据分析,利用前辈们建立好的模型去解决各种实际问题。各自都能在自己的场景下工作,实在没必要选择一个而摒弃另一个,如果能够学好一个,都能大有作为。目前的现状不是中医差或者西医差,而是那些学中医、学西医的人的能力真的不怎么样。如果我一两年前能拥有现在的医学知识,那我觉得我可以阻断我母亲一开始的病情发展而不至于不断恶化,毕竟一开始的病真的很小,可恨奔走于挂号排队之间,迷茫于各大科室职责之外。

2019 年没有做到坚持做一件小事:学习背诵伤寒论。伤寒论经文不足400条,每条平均20个字不到,如果每条学习并背诵一条,如今也能完成全部的学习,可是多次的中断与重新拾起,导致目前掌握的不足三分之一。期待我的 2020 年,能够坚持每一件小事。

←微信← →支付宝 →