2018 总结 && 2019 目标

2018 已经过去了,在 2018 年中的时候给自己定了 11 个目标:2018 目标,最优先的目标大部分也完成的差不多了,对 Go 源码的阅读工作量稍微有点低估(剩下一些查漏补缺的东西了)。。后来发现有位国外的兄弟也在干类似的事情,不过比我包装的更好:go-under-the-hood。虽有冲动把我的 Go 语言总结也慢慢向这种开源书的形式靠拢,不过想想,好像也没什么特别大的收益,暂时作罢。

18 年初阅读 Go 源码的时候,总算是把 Go 的反人类的 Plan9 汇编啃下来了,如果有条件的话,自认为可以直接撸起汇编就造轮子,不过没什么需求的话也没必要强求。这点还是蛮自豪的,毕竟 plan9 汇编确实资料太少,官方文档语焉不详,compile 和 objdump 出来的东西还不一样,不同架构上也不一样,还有各种体系结构相关的 bp 例外,如果不是看了一大堆资料,问各种人,那还真是搞不定。

不过 18 年目标中的另外几个源码阅读目标没有完成。。。实际上在读 Go 的源码的过程中,自己的阅读功力已经有很大的提升了,在公司内某次做分享之前还又回去翻了翻刚毕业的时候读的巨痛苦的 beanstalkd,发现只要半小时就能把基本功能捋清楚。说明读源码的基本目的是达到了,追求量也没啥必要(这么安慰一下自己)。

今年在公司内做了比较大的一件事情,把之前乱七八糟的 XFS 统一到了一起,从设计到实施基本从头到尾都做差不多了。目前还有很长很长的扫尾工作,毕竟涉及到数据,不像无状态服务那样,做完校验就算完成。不过整体上还是做得挺满意的。项目的代码虽然不多(10w 以内),但是几乎涉及到了大部分的 Go 常见的用法、简单的无锁编程,并发安全,高并发锁冲突,测试方法论,DAG 图模型,甚至还踩到了 Go 1.9.2 的 GC bug,感觉在 Go 上真是人生完整了。。

这套系统虽然脱胎自业务系统,但是后期的东西已经和业务本身没什么关系了。做完之后再来回顾,实际上这个系统是:流式计算、数据 Proxy、复杂计算业务混合的一个系统。单独每一个方面都可以继续深入地做下去,但是毕竟我们在业务部门,所以之后还是要先考虑考虑公司和部门的风向然后再做决定(估计也不是我能决定得了的事情)。

除了做的事情之外,在公司内总算是晋升成功了。虽然工资实在是没涨多少,不过走一遍流程,也算是大概摸到了一些大公司游戏规则的门道。个中着实有些辛酸和无奈,不足为外人道。

公司外嘛,Go 高级编程 总算是开始走出版流程了,第一次写书,在写的时候已经尽力了。。回头再来看,有很多很多值得改进的地方,同时也有很多很多想要增加的内容。但是在写的时候,这些就已经是我能想到的大部分东西了。可见人总是在进步的,过去的产出不满意也正是说明人本身进步了(嗯,安慰自己二连发)。

今年在开源方面实在是乏善可陈,一整年没有输出一个好轮子(汗)。年底的时候在知乎上看到一众 Rust 党攻击 Golang 语法丑,功能少,性能差,终于下定决心把正在积灰的几本 Rust 书从书柜里翻出来,开始深入学习。并且把我之前两个 Go 的轮子先后翻译出了 Rust 版:elastic-rsasm-cli-rust

从这段时间的学习和观察来看,这门语言未来的应用领域确实会比 Go 广泛,比如 Baremetal 场景,或者嵌入式,或者需要性能更好的模拟器领域,存储领域,proxy 领域。但是在特定场景,比如需要快速上线的互联网业务系统上,是不太可能干翻 Go 的,虽然 Go 本身也挺挫,现在连 Java 都没有干翻。

Rust 现在靠谱的轮子也比较少,github 上的 awesome-rust 和 awesome-go 几乎差了几倍的轮子数。所以只要你愿意,现在入场的话,一定能找到很多空白的领域等着你去填。

说了这么多,其实就一个意思,早一点储备些知识没什么坏处。技术圈变化快,没人知道下一个风口是什么,什么时候来。说不定就是真的是那些智能穿戴设备公司一夜暴火了呢?

19 年同样需要给自己一些目标,也写在这里吧,慢慢补充:

1.阅读 10 本书
《building microservices》
《Reengineering Legacy Software》
《Designing Data Intensive Applications》
《领域驱动设计精髓》
《实现领域驱动设计》
《Rust in Action》
《中台战略》
《深入浅出 Rust》
《Rust by Example》
阅读了一半的:
《Streaming Systems》
《Stream Processing with Apache Flink》

3.精通 Rust

4.产出 5 篇方法论文章
明显已经完成了。

5.产出一个靠谱的原创轮子

6.至少阅读一个稍大型的开源项目的代码并有阅读笔记

7.彻底完成 golang-notes 的剩余章节。。。

8.英语能够达到工作对话水平。

9.完成分布式系统课程

10.阅读简单的 linux 内核源码

Xargin

Xargin

If you don't keep moving, you'll quickly fall behind
Beijing