主页 迟到的 2020 年终总结
Post
Cancel

迟到的 2020 年终总结

岁月如梭,白驹过隙。年前就打算写的这篇 2020 年终总结,硬生生被拖成了 2021 的“去年回顾”。主要还是因为思前想后,觉得 2020 年实在太过特殊:在 2020 经历的事情,也许今后很长一段时间都不会再有;于是在 2020 总结的经验,似乎也很难运用于未来。不过就算如此,还是勉强写点儿什么,权当留个纪念吧。

关于疫情

疫情当然是关键词,从一个长期驻日的人眼中看来,就是“君病我未病我病君已好”。当国内的小伙伴们都说说笑笑,手舞足蹈,穿上了自己最体面的衣裳,纷纷走出家门的时候,我还只能天天宅家里看着日日新高,瑟瑟发抖。幸运的是三月份的时候趁着疫情还没完全爆开,掐着点儿搬到了大一点的房子里,有了一个稍好的宅家环境,小朋友们也能活动活动,算是今年最明智的选择。

这波病毒其实对软件行业来说,影响有限,我们的项目决策和进度反而比以前要快了不少。远程会议说开就开,不需要排时间排地点;每天在家工作,上下班不用花两小时在电车上;不会有人动不动就跑过来打断思路,可以保持长时间的专注。这些都极大提高了效率并带来了一些“幸福感”。但是肉眼可见,对于需要实体运营的行业,比如餐饮、旅游来说,疫情的打击还是相当严重。观察各个国家政治体制的区别,所造成的抗疫行动和措施的差距,已经不属于我这个“工程师网红”有资格拿出来讨论的东西了。但是单就日本来说,很明显可以看得出,在“保经济”和“抗新冠”之间各种横跳:时而鼓励出游,时而紧急封锁。既不能下决心彻底阻绝疫情,亦不敢直接放开等着全民免疫。各类“左右互搏”的迷惑操作,带来了严重的政策空转和恶劣影响,也成功让日本成了东亚地区表现最差的国家,没有之一。现状打个比喻,大概就是日光倾城而下,整个社会被逼入了死角,步履维艰。

关于工作

扯远了扯远了,还是来讲点代码相关的吧。好吧,其实没什么特别大的进展…

这一年一共发了 16 个 Kingfisher 版本,除了那些年轻时候写的垃圾代码之外,基本算是在功能层面上把这个框架完善到比较满意的状态了。UniWebView 发了 14 个版本,其中包括一次 major 的升级,在工作之余也算带来了稳定的现金流,能减轻一些日常的开销压力。

开源以外的本职工作上的话,由于疫情的原因,我们的直播服务似乎迎来了一次真正的增长。不过利润都是资本家的,生活不易,打工人只期盼下个月奖金能多发一点就好…

关于学习

每年学习新的编程语言的目标还在继续,今年挑了前端的 Elm 和全端的 Rust

Elm 在 objc.io 的一些书里,特别是关于架构和函数式编程的书里,已经提到过很多次了。Elm 其实并不单纯只是一个语言,它同时也是一个典型的单向数据流的前端框架,算是 Redux 或者 Flutter 数据流和鼻祖。相对于使用 JavaScript 或者 Dart 语言来说,Elm 本身是和 Haskell 很接近的纯函数式的语言,因此在使用这类函数式的数据流架构时,会显得更加契合。对于自己来说,Elm 也让我在学了 Haskell 后第一次能将这些东西应用到实际,做出一点东西:为公司项目的 QA 团队写了一点小工具来作为练习。整个流程和开发体验还是不错的,想要的几个依赖也能在社区中轻松找到。不过如果要在更大规模,或者实际的产品中使用 Elm,可能还需要一些观察和更多经验。

Rust 今年已经很火了,接近甚至超过 C 的性能,严谨绝不出错的所有权内存管理模型,以及由此带来的天生安全的多线程,每一个都切中要害,解决的是工程师每天都会头疼的问题。相对于 Haskell 或者 Elm,Rust 的学习曲线虽然要平缓得多,不过可以看出这门语言在设计时针对的就是有一定经验的开发者。如果没有在其他语言的实践中踩过一些坑,可能很难体会得到某些设计上的精妙之处。

现在对于 Rust 的理解还处于写一些简单的命令行工具,不过之后应该至少会尝试做一些更多的事情,比如写一点 web app 或者放到嵌入式设备里看看情况。如果有新的惊喜或者体会,再和大家汇报。

关于阅读

大概因为在家时间比较多,所以相比往年来说,有机会多读了几本书。其中电子书和实体书都有一些,技术书和杂谈书都有一些,中文书和英文书都有一些。稍微对印象深刻的几本写点儿吧。

人类简史:从动物到上帝

很有意思的一本人文类科普读物,其中有些观点很有意思。比如作者认为:

智人之所以区别于别的动物,在于智人拥有“讲故事”的能力,并且这样的故事可以大范围流传,并被接受的相信。

社会制度,价值取向等等,无一不是故事。

我们自小受到的马克思唯物主义认为,物质独立于意识,意识是物质的反应。辩证唯物论承认,事物的发展,当然也包括所谓的社会制度、价值取向等等,都是以矛盾驱动的。这些意识方面的东西,显然是一个个智人编造的“故事”。那我们是不是可以认为,有什么样的物质,就能编造出什么样的故事,也就能满足当时人们对于这些故事的需求。那么,“生产力决定生产关系”这样一个故事,是不是也是特定的物质条件下才能被编出来的,其实也并不是什么“真理”呢?再进一步,可能就上升到,唯物论本身是不是唯物的,要如何证明这个关系?

作者是历史学的专攻,并没有按照中国人的思维,明确给出的一个在马克思哲学框架下的答案。但是作者在书中用了一个很经典的手法,把《汉摩拉比法典》和《独立宣言》做了一番对比解读,来讲解故事到底是如何包装这些价值取向概念的,让人在忍俊不禁的同时拍案叫绝。

如果对于人类的意识和社会状态感兴趣,这本书当真有趣。

复杂生命的起源

这本书有一本“姊妹篇”,《生命进化的跃升》。两本书内容有部分相似,所以除非对这个话题感兴趣,否则基本只需要读一本就够了。

这两本书都是非常硬核的科普书籍,如果对生物学不是很感兴趣,或者没有跟上作者思路的话,可能会读不下去。通过对生物按照三域系统进行分类,作者认为复杂生命的起源发生且仅发生了一次。关于人类的“我是谁”这个终极问题,作者在更大的尺度上给出了一种诠释,并且由此推论和解释了包括人类在内的复杂生命,是如何选择了这一条路径演化至今的。

谁知道呢,也许这就是终极问题的答案。

The Choice: Embrace the Possible

作者是奥斯维辛集中营的幸存者,战后帮助很多心理创伤患者走出阴霾,重新找到快乐。书中讨论了“伤害”和“受难”的区别:“伤害”更多地来自于外界,横行霸道的邻居,无能狂怒的上司,家庭暴力拳脚相向,甜言蜜语连哄带骗;而“受难”完全不同,它是内在的,只有你自己能够伤害到自己,并让自己的内心受难。伤害大多是一时的,但是如果在阴霾中走不出来,受难将会长期持续。

在奥斯威辛集中营的待遇,想来会比我们大多数人所受到的最大的苦难都更加残酷。作者在集中营里失去了至亲,受尽了折磨。但她仍然告诫我们,将自己的痛苦和别人的 (所谓更强烈) 的痛苦相比,然后得出结论:我所承受的痛苦不过如此,并以次期望能够减轻痛苦,是不切实际的。想要“生存”下来,要做的事情是接受:接受从前,也接受当下的情况。如果我们选择的是惩罚自己,让自己感觉到孤单和隔离,去臆想别人的“更大的”痛苦,那其实这样的选择不过是再一次从自己的内心伤害自己。在试图抚慰一个这样的人时,我们不希望对方得到的结论是“你比我惨多了,我的痛苦不算什么”,我们希望的结论是“你可以做到与自己和解,那么我也能!”

所以,不要去比较,而要与自己和解。与其坐地悲伤,不如即时行动。这是我从这本书里学到的东西。

论中国

中国人民的老朋友基辛格同志的一本中国相关的书籍。从书中很容易看出,基辛格是真正的“知华派”,而且是真正的站在美国立场和美国利益的知华派。幸好在他任内中美关系不像 2020 这样糟糕,幸好现在美国政坛上再看不到这种对华认知准确的人物。从这个意义上来说,真是天佑中华。

他对中国的认知,特别是对建国后三代领导人的观察,是建立在大量的交往和实践中的。这和近年来某些令人啼笑皆非的对中国的臆测和揣摩,形成了鲜明的对比。关于使用“民族性”来预测中国的行动,以及以数十年为单位来衡量中国对利益决策的考虑这些技能,大概已经被当代只看短期利益的无知政客们彻底无视了。

总之,作为那段波澜壮阔的历史的亲历者和推动者,基辛格所讲述的“中国故事”,至少为中国人提供另一个审视自我的角度。

重构 - 改善既有代码的设计

这本书很经典,以前是用 Java 举例,这次重读了一遍“与时俱进”用 JavaScript 写的第二版。

重构这个话题不管说起来还是做起来,都十分重要。但是现实里往往会被有意无意忽视,直到陷入泥沼寸步难行之后,才会为当初后悔莫及。大道理讲太多没用,一点一点在实际中尝试去做,让重构逐渐变成一种习惯,而不是刻意为之,才是正道。

第二版除了更换语言之外,也针对最近的风气 (或者换个词,最佳实践) 调整了一部分重构手法。去掉了一些过于老旧,不合时宜,甚至是被时间检验后不靠谱的重构方式,当然也添加了一些新的手法。快速过一遍,留下印象,然后在实践中慢慢掌握,应该是本书的正确食用方式。

毕竟开卷有益。

关于动漫和游戏

因为宅家的缘故,今年在追番和玩游戏上都有所长进。对每个都写个一句话评论吧.. (排名不分先后)

番組

标题短评推荐指数
动物新世代 BNA又名“狸猫成神记”或者“我和白狼不得不说的故事”。以人兽的视角探讨人与动物如何和谐共处的故事(误)。蛮有趣的。4/5
大理寺日志又名“陈十进城记”或者“我和白猫不得不说的故事”。以人兽的视角探讨社会正义和政治黑暗的故事(大误)。蛮有趣的。4/5
在下求搞第三季又名“飞龙上天记”或者“我和白兔不得不说的故事”。以人妖的视角探讨了种族平等,生存与毁灭的故事。不是很有意思。3/5
水果篮子第二季和十二生肖打情骂俏。第一季比较有意思,第二季节奏有点慢。不是很有意思。2/5
试证明理科生已坠入情网用逻辑,公式推导和数据,来量化证明喜欢这件事情。这事儿本身就比较扯,在理工科学生看来,就这?3/5
转生成为了只有乙女游戏破灭Flag的邪恶大小姐转生类,如何在逆境(?)中收逆向后宫的故事。不是很有意思。2/5
辉夜大小姐想让我告白第二季延续了第一季的氛围和制作,虽然每集主题都差不多,但是还是可以很轻松看下来。蛮有趣的。4/5
烟草讲道理这个是2019的番,但是2020才补上。初看觉得是兽娘动物园续作?但是世界观设定很吸引人。最大的问题是眼盲症分不清角色。很有意思。4.5/5
魔法科高校的劣等生 来访者篇因为惯性看了这一季。比较无趣…下一季(如果还有)应该不会再追了。1/5
魔女之旅“虽然能力叼炸天但是我想当路人”的旁观者视角讲了一堆小故事。有一些故事很有深度,也能体会到角色的纠结。总体看着很舒服。4/5
魔王学院的不适任者魔王转生成高中生虐菜的故事,每年都需要一些爽番不是么。从这个意义上来说,这部是成功的。爽就完了,偶尔也要放空脑袋不需要思考对吧。3/5
无能力者娜娜一个普通人怎么在超能力者的环伺下生存,还要想着杀了他们的故事。虽然题材有点黑暗,但是对于心理描写很有趣。柊娜娜人设也深入人心,有点意思。4/5
约定的梦幻岛从带领小伙伴们从食人农场逃跑的故事。除了主角群之外,对于配角们的描写也让人印象深刻。让人相信每个人都有自己的故事。蛮有意思。4/5
Re:从零开始的异世界生活第二季惯性追番。动画来说没有第一季精彩,可能是因为习惯了死亡轮回这个叙事套路了。没什么大问题,但是也没什么出彩点。3/5
富豪刑事“皇帝用的一定是金锄头吧”…用钱一路砸过去的故事,爽就完了。不过故事还是讲完整了,有点意思。3.5/5
总之就是非常可爱月神(?)和凡人先扯证再恋爱的轻松故事,放松用的休闲番,顺便可以看看别人怎么撒糖的,保持学习嘛。有点意思。3/5
租借女友牺牲了其他所有角色,来塑造一个完美的水原千鹤。反正每季都会有新老婆,再多一个也无所谓了。3/5

其他还有一些番,比如《异种族风俗娘评鉴指南》啊《彼得·格里尔的贤者时间》啊我才没有去看呢。比较遗憾的是,今年没有哪个作品能给人眼前突然一亮,能让人打出满分的效果,不过说实话,那些 4 分以上的番,就已经很不错了。之后也许还要去补一下《咒术回战》,也许会有惊喜。

游戏

只列出今年买了且玩了的..

Switch

标题游戏状态短评推荐指数
宝可梦不可思议迷宫救助队DX3小时,搁置只有日语版,宝可梦死忠也许可以考虑?不是我的菜。1/5
集合吧!动物森友会255小时,继续中应该不用再介绍了。花鱼虫全满,很适合宅起来玩,有朋友一起就更好了。5/5
勇者斗恶龙XI S 寻觅逝去的时光55小时,通关日本现象级游戏,标准 RPG,打死一周目魔王以后的叙事方式很有意思。3.5/5
Wenjia3小时,搁置在现实与过去之间穿梭向前的平台游戏,视听上很舒服。没有深入,很难评分。有时间一定通关。-/5
异度之刃决定版50小时,通关高清重置版本,玩的时候体会已经和当年不一样了。个人觉得没有异度2好玩。3/5
世界游戏大全512小时,搁置本来希望能和小朋友一起玩,结果果然还是我太天真了。聚会的话比马里奥派对或者赛车差多了。2/5
皮克敏3豪华版15小时,通关两个小朋友出奇地喜欢,算是今年游戏的惊喜。挺可爱的,不过想要满分也不容易,很有意思。4/5
塞尔达无双 灾厄启示录20小时,通关标准的无双类游戏,一般,能玩。割草爱好者可以买,塞尔达爱好者的话建议云通关就够了。3/5
超级马里奥创作家 25小时,继续中任亏券快到期了随便换的..还在努力中,不过感觉不太适合我。创造力不太够..3/5
Carto3小时,继续中很有趣的游戏,按照提示,使用拼图的方式扩展地图解锁故事。让人耳目一新。4/5

PlayStation

PS 4 Pro 已经被我卖掉了,PS 5 迟迟买不到,所以基本没有玩什么 PS 游戏…希望能快一点买到新主机。

标题游戏状态短评推荐指数
十三机兵防卫圈25小时,通关叙事风格很特别的游戏,剧情互相解锁,层层推进,很有意思。但是战斗部分比较无聊。总体表现很好。4.5/5
最终幻想 7 重置版40小时,通关童年记忆,可堪完美的重置。埋了很多完全不同于原作的伏笔,让重置版更有意思,也让人很在意后续发展。爱丽丝真香就对了。4/5
尼尔:机械纪元35小时,通关很特别的作品,但是不结合《龙背》的话,是很难抓住剧情重点的,需要大量补充背景知识。另外第二段重复实在有点拖沓。4/5

PC

今年换了 3070,所以搁置了很久的 PC 也成了大型游戏机。Steam 国区价格实在太香了..

标题游戏状态短评推荐指数
文明 675小时,??这游戏也没有通关啥的..可以配合上面推荐的基本人文类的科普书一起。挺好玩的,再玩一个回合就睡!4.5/5
杀戮尖塔15小时,搁置算是带领 Roguelike 走入大众视野的第一款游戏?对于常年打炉石的我来说,很快就能领悟要点4/5
神界:原罪24小时,放弃欧美系 RPG,我习惯了日式 RPG,所以这个不是太玩得下去。喜欢的人大概会很喜欢?我一般.3/5
赛博朋克207737小时,继续中据说主机版很惨,PC 版还好,也没有特别多 bug。肯定没达到当初的预期,但慢慢做支线,多逛街,还是有点意思的。4/5
精灵与萤火意志3小时,继续中画风很好,中规中矩的平台游戏。如果喜欢空洞骑士的话,应该也会喜欢这款作品。4/5
欧洲卡车模拟器215小时,继续中如果觉得累了,可以打开音乐播放器,然后开始玩这个。少有的能让人放松,让人放空,让人慢下来的游戏。很喜欢。4.5/5
魔兽世界 9.0?? 小时,继续中WOW 玩了十多年了,从最开始的疯狂,到现在依靠惯性每次资料片开了去看个剧情升个级。把网游彻底玩成了单机。4/5
黑帝斯5小时,继续中Roguelike 的关卡动作类游戏,画风很好,故事也很抓人。还没有逃出来,努力中。推荐。5/5
Townscaper2小时,继续中和欧卡2一样,让人放空的游戏。也可以给小朋友们当作鼠标练习,电脑要从娃娃抓起嘛。4/5

明天就要正式开始新的一年了,现在该去煮饭了。明年的年终总结再见!

该博客文章由作者通过 CC BY 4.0 进行授权。

使用 Property Wrapper 为 Codable 解码设定默认值

关于 SwiftUI State 的一些细节