2021年总结

过去一年中有什么变化吗?这是我每年对自己的提问。

深入研究的技术

在技术研究方面,我在上半年的时候主要研究了 Golang 这门语言,并写了很多相关实现原理的文章,都记录在 这里 。由于 Golang 很早就实现了自举,所以当时研究它的时候还是所获很多的,包括对 Golang 的 GMP、GC、堆栈、汇编、内存分配、一些常用库的实现原理等进行了一系列的探讨。包括现在我还会偶尔写一篇文章讲讲 Golang 的某些库的实现原理,或是工程运用。

下半年当时是想着要找一个比较知名的项目进行研究,正好项目中正好因为要切换到分布式数据库,所以我也找到了 TiDB 这个项目进行了比较深入的研究,并写了一系列的文章,在 这里 可以查看,但是数据库这个领域还是比较专业的,里面为了适配各种业务功能充满了各种琐碎的代码,研究下去太浪费时间,话个半年深入研究一门技术已是我的极限,再加上工作中很难用到,所以不想再深入下去。

研究这些东西当然不是说我要去写这些项目,或者说是一定要用这些东西在工作中进行施展,而是要让自己在一定时间内保证一定的技术深度和广度,并且对这个世界保持一定的好奇心,这些都是以后自身发展的资本。

技术之外

前一段时间我在看《程序员修炼之道》的时候,里面讲了一个知识组合投资的概念。就像我们做股票投资一样,一般都推荐不要将所有资金都放到一个篮子里,同样学习也是一样,我们的时间是有限的,不应该将所有的时间都投资到一个领域中。

所以在《程序员修炼之道》中讲到的知识组合投资包含以下几点:

  • 每年学习一门新语言:不同的语言以不同的方式解决相同的问题。多学习几种不同的解决方法,能帮助自己拓宽思维,避免陷入陈规。
  • 每月读一本技术书:在你掌握了当前正在使用的所有技术后,扩展你的领域,学习一些和你的项目不相关的东西。
  • 还要读非技术书:计算机是由人来使用的,你做的事情是为了满足人的需要,这非常重要。
  • 上课:在本地大学或是网上找一些有趣的课程
  • 加入本地的用户组和交流群:独来独往对你的职业生涯是致命的;了解一下公司之外的人们都在做什么。
  • 尝试不同的环境:如果你只在Windows下工作,那么就花点时间在Linux上。如果你只使用简单的编辑器和Makefile,那就试试最新的炫酷复杂的IDE;
  • 与时俱进:关心一下和你当前项目不同的技术,阅读相关的新闻和技术帖。

所以最近几个月中我自己也尝试一些别的东西,避免自己的思维固化。

尝试不同的环境

其实我的工作中是使用 mac 开发,在家里自己搭了一台性能还算强的 PC 作为主力机学习,在下半年的时候我也想尝试使用 Linux 来作为我的主力机使用,看看如何。

其实刚使用的时候还是有很多麻烦,比如它的中文输入法不太好找(不想用搜狗),后来使用了鼠须管输入法;我一般会使用figma来做图,官方没有linux版,只能下载第三方的使用,经常卡死;在 jetbrain 的 goland IED 中输入法无法跟随光标,我只好将输入框调整到一个固定的位置使用;很多工具都没有 Linux 版,导致我只能被迫找替代品,以至于我现在使用工具的时候都会关注一下它是不是支持多平台。

但是也有好的一面,比如开发很顺畅,不会因为环境问题而阻塞;由于无法使用微信,也不会因为闲聊浪费时间;也不能玩游戏,所以每次打开 Linux 只有一个目的,那就是学习。

尝试安卓系统

我记得安卓系统我是在很早之前用过了,最近很多年我都是在使用 IPhone 作为我的主力机,所以最近在考虑添置一台平板的时候购买了三星 tab s7,主要用它闲暇时看看视频,看看 pdf 等。下面我说说作为一个苹果用户是怎么看待这块安卓平板 。

首先不得不说,这应该是能在4k这个价位能买到的最好的平板了,不管是影音,还是手写,我感觉都不逊色于 ipad pro,并且安卓还可以安卓类似李跳跳这样的app来跳过开屏,这是在苹果办不到的。

它还有一个另我惊喜的是,可以通过 termux 来安装一个完整的 Linux 系统,并不只是如此,它还可以通过 VNC 打开一个图形化界面,也就是说我可以通过它来使用 jetbrain 家的产品来做一些轻度的开发,外出应急还是没什么太大的问题。

image-20220109212530182

系统交互也比较舒服,我特别喜欢一点是任何的软件都能直接侧滑返回。在苹果上这可不行,有些软件可以通过左边侧滑返回,有些必须要点击左上角的箭头返回这非常的操蛋。

我还比较喜欢安卓的文件系统,非常的灵活,可自定义程度比较高,文件想放哪儿就放哪儿,不像苹果是一个沙箱,文件操作非常的麻烦。

不好的方面也有,那就是软件适配很有问题,甚至在 goolgle 的 play store 上根本看不到平板 app 这一分类,可见连官方都放弃了对它的支持。例如,比如微信、企业微信,在ipad上有特殊优化过,但是安卓平板没有;常用的QQ音乐也没有适配,但是听歌软件后台播放就好了,不影响。

所以综上,安卓是有一定的生产力,可以装 Linux 运行 IDE,可以运行任何 Linux 软件,玩法很多。作为一个正常的平板,看看电影,看看书也完全没问题,对于现在 ipad 动不动要六七千来说,我觉得是比较值的。

作为不想被苹果生态绑架的我来说,这次的尝试给我一个重新回到安卓勇气,也许下次换机会选择安卓机。

平时学习

平时在家学习的时候我特别喜欢打开 Youtube lofi 一边听一边看书学习,真的是非常惬意。因为 tab s7 的四扬声器音响效果还不错,所以我使用它来播放 lofi,如下图:

AB44EFA7-9A7B-4F16-A7FC-EE8F01C1DD68

下面我推荐几个我比较喜欢的 Youtube 的 lofi 频道吧。

  • Lofi Gril:这个频道有直播,可以随时听, 24小时直播在线;
  • 阿鲍Abao:他的视频会经常配上日本东京的景色,比如东京日落、日出、雨天等等,有种比较安静的感觉;
  • pikeチャンネル:他的视频会比较干净地展现出他学习地场景,标志性地会有一个漂亮地计时钟,配上纯白的环境和纯音乐,也是挺惬意;
  • The Soul of Wind:通常会配上一个漂亮的动态壁纸,配上纯音乐,我也是蛮喜欢的;

其他

最近在思考项目中软件工程方面的问题,也在做不同的尝试,比如这篇:Golang 简洁架构实战 ,就想在项目中尝试用更加清晰简洁的方式来构建我们的代码,使代码更加清晰易懂。

接下来我还会继续探索一些和技术虽然没什么关系,但是和软件工程相关的问题。对于我来说,以前还是过多的关注软件的具体实现,很少有回过头来看整体,缺少一种抽象思维与总结归纳的能力。

数码产品

显示器

最近我换了一台戴尔的 U2720Q 显示器,以前我使用的使 LG 的某款显示器,因为它的色彩偏白,在家学习的时候看久了经常容易眼睛胀痛,但是换了这台之后没有出现过了。

从显示角度上来说,它的各个方面都很优秀,色彩不会偏白,据网上测评它的显示还是比较准的,并且自带阅读模式,我看书时用起来还是比较舒服的。并且还带有 90w 的反向充电,用mac的同学可以只插一根线就可以解决充电和显示的问题,不过可惜我用的是台式机,这个功能用不上。

扫地机器人

我在618的时候购买了一台小米扫地机器人 pro, 我感觉这应该是今年买过体验相当好的产品。我家养了猫,所以每次回到家里都是一地猫毛,经常感觉空气中弥漫了猫毛,有了它以后基本上不怎么需要打扫了。

买之前还担心它得避障能力,买了之后发现完全是多余的,扫地机器人发展到这个阶段基本上不会乱串,也不会撞到东西,每次都规划好路径仔细清扫干净。不过我这款拖地水箱和尘盒是在一起的,经常水箱会漏水,弄的尘盒里面的垃圾湿黏黏的,建议买个水箱和尘盒分离的。

安卓平板

上面已经说过了。

xbox

可以看我这篇文章,已经分享过了:国行 Xbox Series X 体验

推荐软件

微信读书

首先我感觉它的界面挺简洁的,我使用的时候基本上把所有的社交排名功能都关了,毕竟看书就是看书,不需要在看书的时候搞社交。

再来就是它的读书记录可以全平台同步,我一般在公司里面用浏览器看书,然后晚上坐车回家再手机上接着阅读,回到家再换到平板上还可以接着读,这个体验感比我以前用 kindle 不知道强多少倍。

最后令我感觉好用的就是它的传书功能,因为微信读书上很多书没有,所以我一般在 zlibrary 上把书找好传到微信读书上再阅读,读书记录同样可以同步!

Termux

这个软件是我最近使用安卓平板上的软件,用它可以安装一个完整的 ubuntu,简直不要太舒服。外出学习或者是轻办公只要带一个平板就是可以了。

NextCloud

我体验过很多云盘,但是每个或多或少都有一些缺点。iCloud 同步太慢了,并且在 mac 上无法手动触发同步;Dropbox 体验是最好的,但是太贵了,并且需要翻墙;OneDrive 虽然便宜,但是同步有些不稳定;Google Drive 体验最接近 Dropbox,但是同样需要翻墙。

正好我最近弄了台服务器,不知道做什么用,就搭建了 NextCloud 作为同步盘使用,用了一段时间感觉还挺好用的,首先它是跨平台的,其次它的速度取决你的云服务器,再来就是它数据非常安全,双端加密,即使放一些账号密码放到上面也不怕。