我的2020年记-大浪潮下的小小打工人

我的2020年记-大浪潮下的小小打工人

大纲

2020在疫情中启程,也在疫情中结束;首先是工作上先体验了一波 停工+自由职业 的感觉,2月到4月也是我博客输出最多的时间,随后在4月找到了新工作,开始在新的业务场景中探索,技术大方向上了解并研究了 机器学习、NodeJs、ElasticSearch、Serverless、CI/CD、容器化 等等一系列的东西;
与之前做内部系统的公司不同,进入到做 App的公司让我 对生产环境更为谨慎和敬畏,更多的考虑到细节和退路 。再持续为公司招聘大半年终于把后端运维团队凑齐,基于 nodejs 和 AWS Lambda 的 Serverless 架构 也在探索过程中逐步成型。

工作

海外旅游公司的衰落

由于疫情的影响,公司的春节旺季直接变成了亏本求生存的状态,特别是公司主要做海外轻奢定制游,收入变 0,供应商还有款项拖欠。旅游行业从渠道到供应商全体变老赖,公司全体进入 停工状态 ,领上海最低工资。

当时刚过年,看着海外疫情和国内感染人数蹭蹭往上涨,觉着旅游公司至少大半年没有起色(实际上是一整年了,还是没有一点起色),工作属于挂着简历,没多少面试的状态。但还好与公司 PM 比较熟悉,接了两个外包的活儿,靠着公司低保和外包结款,再加上疫情期间支出也缩减了,一月花呗 1400多,收支平衡还是做到了。

Image

随后在公司进一步缩减规模前,我找到了新工作,是一家做海外APP发行的小公司,吸引我的是深度学习的实践场景、技术氛围的承诺和创业公司依旧 965 的作风,至少意味着技术方向上能有不少的补全以及充足的时间自我提升。

PS:老板还是非常义气的,在几乎没有收入的情境下,六七月还把 19年的年终奖发了

我的征程也是公司的征程

入职后发现公司正好处于分家、搬家、老员工离职的过渡期,给了两天时间交接工作,了解后端状况,然后就搬到了通勤 1h 的中科路(之前面百度去过的地方,真没想到日后会经常走这条路)

随后就接手了越来越多的工作,核心产品请求加密算法改造、AWS ServerlessAWS 的容器化方案 Fargate 和阿里云的 Serverless K8S、过亿 ES 数据清理和迁移、logstash 日志手机方案、CodeReview、性能优化、CI/CD 及持续了大半年的针对运维和开发的招聘。

Image

不断招聘的这大半年,经过 HR 初筛 + 题目初筛到我手上的后端开发简历 33份,运维简历 32份,听说 HR 这半年把符合的都聊了个遍,到最后还是靠着缘分,在12月到元旦这个时间找到了满足需求的人。

持久面试也是一种锻炼,最多的一天排了四个面试,每次都需要从拟好的角度配合对方的经历进行交流, 从一开始控制不住面试时间,到后来渐渐把控好交流节奏,一点点的对这个过程变得熟悉。面试中遇到过从业二十年但知识也随着两侧的斑白慢慢过期的老兵,也遇到过半瓶水但莽撞桀骜的面试者,还有满足技术需求但经历作假被 HR 淘汰的各式各样的人。

Image

到2020年底,团队各角色也已齐整,大部分架构已经搭建完毕趋于稳定,各个组件也都已经调整到符合当前业务的状态,回头一望,一切过往皆为序章;身为后端或身为全栈或为更好的将来做打算,技术生涯不能只放眼于现在,路在脚下,慢慢走。

社区

个人开源

Image

今年的开源贡献算是稳定吧,连续一段时间都能持续输出,新增了 Web3d 模型转换和展示相关的项目和为招聘而写的 hire-tools,还有数据库迁移、API签名计算等零散的小项目。

得知我的 BUG 被深藏北极冰封上千年,心情一阵激动,甚至还为此发了朋友圈。

也许是觉得自己也许并不能在漫漫历史上有所笔墨,但我的 BUG 会比我存在的更久,在岁月中留下痕迹,也许以后它还会被送进历史博物馆也说不准呢。

Image

lay-excel 项目继续修修补补,中间用了 webpack 重新做了打包,在11月发布了 1.7.2,能帮助到更多的人,让我的代码跑在世界各地的机器上,非常开心且荣幸。

Image

Learnku

Image

2020.12 发现这个平台以来,贡献了一百多个翻译分段,VueJS 见习版主已经到第 10周了,还有两周达到版主的要求。几乎每周都会译者排行截图留恋,霸榜的感觉真好😁。

Image

社区的新帖子每个都点开看,基本每个帖子都点赞,基本每个问题都尝试答,但是社区本身就不太活跃的样子,所以大多数声望都来自翻译;其实想在见习版主结束后转到 go 社区,因为目前个人大的学习方向就是 golang,多在社区交流发帖有利提升。

Image

在这个平台的一两个月,也建立起了对英文技术翻译的一些兴趣和自信,虽然遇到长句翻译也很容易蒙圈,但看到那些英文文档和文章都没这么怕了。

开发者大会

Image

参加了今年的 PHP 开发者大会,了解了一些相对前沿一些的应用和架构开阔眼界,积极互动还得了一堆小奖品

Golang 学差不多考虑去听听 Gopher China,听说 20 年分享的干货还是有不少的。

个人技术提升

深度学习

这门子技术在去年就一直很感兴趣,停工期间公司有技术分享的计划,在自己看了基础入门书籍后,做了两堂关于深度学习的分享。

那本书现在还记忆犹新,名字叫做 《深度学习的数学》 ,主要涉及到的都是数学基础以及卷积、向量机的原理,基于此写了一系列博客,两三星期的样子,写了11篇,有两篇阅读量还出乎意料的不错。

机器学习

Image

随后进入了现在这家公司,规模不是太大,里边也有部分深度学习的技术场景,基于 VGG19 做的图像风格迁移,当时招聘还专门考察了这部分的基础能力;

进公司后第二天老板就送了我两本书,一本 《深度学习之美》,一本 《DEEP LEARNING》 ,第一本看了个多月刷完了,对基本的卷积、时序、OSTM、胶囊网络有了个概念,但是没上手写多少代码,实操还停留在手写数字识别上,也没有整理相关的博客。

体验到了炼丹师的快乐,hhhhh

Image

Image

现在这两本书还在我的案头(并没有垫显示器)

Image

随后公司让调研了很多深度学习相关的产品方向,包括 黑白图转彩色,动漫画风迁移,AI抠图 等等,给一些项目提过一些简单的 PR,能上生产的方向特别少,最后对比多家采用了百度的抠图 API 并针对海外场景做了中转,随后由于产品停滞,进入维护阶段后就没有相关工作了,有点遗憾。

个人对这个方向还是很感兴趣的,就是积累和实践所需成本暂时无法给到,因为其他的 后端、前端方向还需要加精,不能走成了四不像。

MySQL底层

Image
今年把 《从根上理解MySQL》 这本书读了两遍,电子版一遍,纸质版一遍,对 MySQL 的理解个人觉得得到了不少的增强,从底层行结构到页再到表空间,再从索引原理到 JOIN 再到查询优化器,以及 页Buffer 和锁,都是之前业务代码中不曾想到的东西,理解底层之后对 SQL 优化的理解更深,遇到问题的时候更加有方向。

Redis 底层

《Redis 设计与实现》 这本书去年看了一遍底层数据结构,今年重新刷了一遍,看到哨兵和集群还有槽分配的时候,身边的场景不足,了解但不够理解,还需要继续加深。

算法

Image

年初买了本 《小灰的算法之旅》 很快就看完了,对算法思想有了初步的认识,但是 动手太少了 的问题依旧存在,导致很快就会忘掉。

Image

后来刷了半个月的 LeetCode 每日一题,有思路的都尝试实现掉,但是很多题都找不到思路,于是乎买了一本 《labuladong 的算法小抄》 ,公众号写的很不错的就买了实体书,但问题又出现了,本来我是去食堂吃饭 12:30 回来就可以刷刷算法,但是新的运维和后端小伙伴来了之后,经常外边吃,本就不充裕的时间通常就来不及看算法了。这本书看了 DFS/BFS/动态规划 后就被放到了桌角,有所斩获,但是跟预想的收获有点差别。

Image

Web3D

Web3d 这个方向是疫情期间研究的,正好女朋友公司也在做这个调研,我顺着 threejs 折腾出来了一个效果还行的渲染,还对模型格式有了一定的理解;

还参与了部分 vue-3d-model 的开发,后来找到新工作后,就没继续往里边提 PR 了。

配合之前的 python 基础以及 node 基础,结合 Docker 整了一个转换模型格式的工具出来,这就是新开源的 3d-model-convert-to-gltf 可以 将 STL/IGES/STEP/OBJ/FBX 格式的模型转换为 GLTF 格式 ,并自动压缩,有利于 web3d 的模型展示和渲染。

文件类型 文件名 转换时间 原大小 转换后大小
stl assets/test.stl 2368.890ms 7.6 MB 86 KB
iges assets/test.iges 1641.226ms 1 M 111 KB
stp assets/test.stp 2969.200ms 5.1 MB 217 KB
fbx assets/Samba Dancing.fbx <1000ms 3.7 MB 614 KB

STEP和IGES模型转换为适用Web的glb格式

还有折腾出的一些 demo 级别的东西

比如 threejs 官方 头盔渲染

Image

比如一个带监控报表的 高达工厂

Image

还有带简单交互,体积计算的小模型 眼骨

Image

模型场景 编辑器

Image

还有 modelbox-sdk 项目,可以动态的 上传模型 ,转换模型,然后直接生成 预览链接 嵌入到项目中

Image

Image

CSS及泛前端

日常工作和方向都偏向后端、运维方面,但前端来说还是很感兴趣,抽空看了 《CSS权威指南·上卷》 以了解 CSS 属性的全局和部分实现机制,介绍还是很清楚,如果工作需要的话当速查书也是很不错的选择。

Image

还在拉钩教育上一分钱薅羊毛买了不少课,写得还是很好的,比如当时追更看的 《前端高手进阶》《Webpack原理与实践》
高手进阶里边对 DOM树、 AST 语法树和浏览器渲染的部分让我印象挺深刻的
Image

Webpack 那本小册对执行机制和插件机制讲的很浅显易懂,看完我就 反手把之前用 glup 打包的 lay-excel 开源项目改为 webpack 了。

并不是只看了 8m,追更到第8讲把 plugin 之类的都讲过了

Image

ElasticSearch

ES 方面之前接触比较少,主要是在换公司之后,有大量业务数据存在了 ES 集群中,而集群的配置又很不合理,于是乎开始了整理老数据和集群优化之旅。

其中最为惊心动魄的就是数据迁移,来之前 ES 的 rollover 都是由特定机器上的定时脚本跑的,不知道何时这个脚本突然不跑了,间接导致了一个超大索引,具体细节记不太清了,大概是 60G,数据量妥妥过亿;有些索引迁移到一半还给误操作删掉了,大概一千万条,还好不是特别重要的数据,至此除了那些立马要执行的删除,我 再也不敢把 DELETE 语句放到 Console 里边了

其实这一千万条还能通过备份找回来,但当时问过了没关系就算了

随后对 ES 的存储部分做了比较详细的调研,最后选择用 AWS ElasticSearch 的 IAM 来做索引的自动过期删除,原有老逻辑的 rollover 还是走自动脚本。

还针对索引的分片策略进行过优化,配合无用数据清理,成功在合理的数据范围内把分片数量从 1000个降到 100个 ,配置也从 三主六数据降到了一主两数据 ,速度还比之前快。

Golang

想写 golang 不是一天两天了,中间尝试过两次但都由于各种各样的原因没有持续下来,直到后来耐住性子抽出俩星期把基础语法和 net/http gin gorm 的常用库弄懂了,才算正式入门,目前做出的东西暂时还没有值得一提的,就是编译产物直接能在 alphine 的基础 Docker 镜像上跑还是很吸引我的,对容器大小压缩和部署很有帮助。

这两天发现了 go-zero 这个开源项目,非常强大,作者微信直连,很赞。

Nodejs – Serverless

来到新公司的另一个收获是对无服务化的理解,AWS Lambda 只是 FAAS 的一种实现方式,目前支持 python/nodejs 两种语言;在 Lambda 中,时间就是金钱,最近修改计费维度为 1ms,省钱的作用就更明显了,代码写越好执行时间越短越省。

两种语言我都写过,都是弱类型的脚本语言,在包管理和逻辑编写上还是 JS 相对更舒服一点,而且 Nodejs 前端也能很快上手,维护成本相对低一些。

曾写过一个 dynamo 数据流同步 ES 的需求,官方代码是 Python 的,部署上去的包特别大,还老是莫名其妙执行超时导致后继所有流推送失败,跑得还特别慢(记得是 1s 上下);随后用 NodeJs 重写了一份相同的逻辑,运行非常稳定,一次推送平均 40ms(算上启动时间)。

写这么久 Lambda,要想真正发挥其作用还是需要与生态相结合,比如 AWS 中的 CDNAPI GATEWAY 以及整合 Lambda 的神器 step function 工作流,可惜现在还不支持 RESTFUL 风格的 API GATEWAY,不然就作为公司无服务架构的核心了。

Serverless 也不全是好的方面,首当其冲 冷启动问题 ,比如长时间没有请求进来,lambda 的运行池中没有你部署的代码,第一次启动就会非常慢,甚至能有几百个毫秒;亦或者请求比较零散,没有做预启动实例的情况下,长时间都只有一个实例在运行,突然请求多起来了,出现了两个实例并行运行的情况,冷启动问题又出现了,这种问题目前的云厂商都还没有好的解决方案。

还有偶现的全局变量连接复用时,连接超时、连接被关闭等问题持续存在,需要经常分析日志和报表才能从中发现和解决。

Docker 容器化及 CI/CD

这一年运维任务上接触最多的就是 Docker 了,从我进入新公司开始,就开始了环境容器化之旅,先是基于 docker-compose 做了一个可复用的测试环境,随后开始为项目编写 Dockerfile,搭建镜像仓库,做项目基础镜像等等工作。

随后新项目要部署,调研了 AWS Fargate 容器化方案以及 Aliyun Serverless K8S 容器化方案对项目做了流程化的部署,弹性伸缩和自动滚动发布是真好用,偶尔看着高峰期自动加上的机器就有种莫名成就感hhhh。

毕竟要容器化部署,打包之类的自然得自动化,公司仓库用的 Github,于是顺理成章用来 GithubActions,跟 Gitlab-CI 用起来差不太多,大多数场景用封装好的 action 就能实现,挺简洁的。

测试分支推送后会自动更新到测试环境,生产环境需要打 tag 生成对应镜像后半手工上线,已经比之前人肉运维逐个机器进行灰度发布好太多了。

个人

旅行

去年和女朋友定下的主题是 “陪你一起看世界”,所以 2020 年农历春节本来打算一起桂林深圳游玩一下,请假、旅行计划和机票都准备好了,但是疫情突如其来,全盘打乱,哪儿也去不成,返沪后疫情未曾好转,还有外包和找工作悬着,所以直到下半年才开始慢慢出游。

单论去过的地方,今年还是有不少的,八月去了黄山,十一回了趟重庆,元旦前去了南阳,再去了杭州,然后去了绍兴。

元旦之行还借了单反,学会了单反的基础操作,也拍出来了一些看起来不错的照片。

黄山之行

Image

黄山真的超美,烟雾朦胧,时不时露出人造小亭和嶙峋奇石,恍若仙境。
Image

黄山给我印象最深的除了日出,还有凌晨四点为了看日出出门后看到的第一眼星空, 它不像城市内看到的星星那么暗淡无光,也不像虚拟星空软件里边每颗星都那么刺眼,但就是那么清晰,buling buling 的闪,抬头看到的那一刹那我感觉眼泪都快涌出来了,无际的星光以及皎洁的月光洒在额头上,自己就像变身成了光,置身于空旷无际的宇宙。

Image

当时拍照全靠手机,无法照下这震撼的一幕,网上找了拍摄图,但跟身临其境的体验差别还是很大的。

国庆之行

Image

十一国庆去了绍兴见了家长,天气不冷不热,温度刚好,风儿喧嚣,充满了生活的气息。

Image

还跟大学室友、女朋友一起在重庆齐聚一堂,虽然我是土生土长的重庆人,但有些地方也是第一次去,有些店也是第一次吃。

洪崖洞不管去几次都会有一种华灯初上,千与千寻的感觉~

Image

到了重庆自然是少不了的火锅,较场口佩姐火锅(伙伴们搜出来的,本地人只听过没去吃过)

Image

国庆生活还是很丰富多彩的,连续十一天,从东到西又从西到东。

Image

元旦之行

Image

元旦九天的安排更为松散,学了两晚上的单反,然后就带着一路游一路拍,从上海到南阳与记忆中的人和物团聚,再从南阳到杭州领略西湖风光,最后再拜访了女方家长,收官!

记忆和现实交触的校园

Image

总是能回想起踏上技术之路的点点滴滴,熟悉的学生社团、熟悉的教室,位置没变场景没变,但是人变了,变得都不认识了,教室也没有我们的位置了。

Image

蒙出来的精选作品分享

Image

Image

Image

Image

Image

Image

关于未来

时间不会停下来等待任何人,变化总在时时刻刻的发生着 ,从实习进入互联网工作的这两年中,经历过数次业务缩减裁员,公司由盛转衰再到疫情打击下的举步维艰。再经历了停工+自由职业,再慢慢稳定找到了一个适合当前阶段的公司开始新征程。

之前看 《谁偷了我的奶酪》,就喜欢像 匆匆、嗅嗅 那样,不放松警惕,发现周围的变化,脚踏实地去做,用以应对突然可能发生的变动,尽量把主动权握到自己手里!

在平时也都会有一种危机感和焦虑感,一是来自技术,二是来自生活。 互联网行业现在相对传统行业确实有着相对高的薪资,有点机器逐步淘汰和剥削传统手工业的感觉。举个可能不很恰当的例子,当年煤矿业也是令人羡慕的赚钱行当,资深矿工也能拿到相对不错的高薪资,但是随着产业和大工业的发展,矿工的工资也变得与普通工种一样。像程序猿这个行当,在智能化和滚滚后浪推前浪的趋势下,在未来也可能变成普通工种,唯像前文说的 “匆匆”、“嗅嗅” 那样关注及适应变化,方可在时代的大潮起伏中向前游去。

本帖已被设为精华帖!
本帖由系统于 5年前 自动加精
Image
讨论数量: 18

这生活也太充实了! :+1:

5年前 评论
Image wj2015 (楼主) 5年前
Summer

超勤奋的兄弟 :+1: 2021 加油

5年前 评论
Image wj2015 (楼主) 5年前
Epona

膜拜大佬!

5年前 评论
Image wj2015 (楼主) 5年前

人生赢家啊 :+1:

4年前 评论

厉害,向大佬学习 :+1: :+1:

4年前 评论

善于总结的生活,真好 :+1:

4年前 评论

那个学校 是南阳理工吗

4年前 评论
Image Tacks 4年前
Image catnotone (作者) 4年前
Image wj2015 (楼主) 4年前

很厉害。学习的对象。

用 3d 写东西感觉很好。比如在 3D 世界里,有个人物模型,可以走走停停,进房间,可以跟别人打招呼,做表情,最后主要看看 LC 教程。当然会很卡了吧。

4年前 评论
Image wj2015 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!