有点认真的 2022 工作学习总结

2023-01-03 15:23:46 +08:00
 brrruski

2022 年度目标

自评: ★★★★☆

最满意的四个成就

  1. 成为了 Web3 builder
  2. 做出了有人用的开源项目
  3. 靠自己努力来到美国念书
  4. 通过写作影响了一些人

工作

Suiet Wallet

Github 仓库: https://github.com/suiet/suiet

和本科朋友组团队,从 8 月开始投入,做到 12 月已经成为 Sui 钱包生态的 Top3 ,推特粉丝数破 100k 。

通过开发钱包 Chrome 插件,我的前端整体架构能力得到锻炼。Chrome 钱包插件的架构涉及跨上下文通信,主要利用 service worker 实现类后端服务,通过Chrome Messaging 机制建立通信通道,封装成 JS Bridge 来给前端 UI 弹窗提供 API 。存储则是利用 IndexedDB 存储持久化数据,Persist Redux + Chrome Storage存储内存数据。

在 Wallet Standard 的实现过程中,整体交互还是比较复杂的,涉及主体有:DApp 网页环境、Chrome Content Script 沙盒、钱包 Service worker 、钱包 UI 。光这块的消息传递就很麻烦:DApp 网页环境与 Content Script 沙盒环境是通过 window postMessage 广播传递消息,这里我 JS 事件编程利器RxJS把广播收发包机制包装成类似 RPC 函数调用(屏蔽底层通信细节),实现独立连接的效果; Content Script 与 Service worker 又得通过 Chrome Messaging 来通信。

其次是 wallet-standard 的自动检测钱包适配器的机制实现。本质上就是 DApp 引入包含 wallet-standard 的包(如 suiet wallet kit),然后 wallet-standard 会开启一个特定事件监听 register-wallet listener ,wallet 们各自在页面加载后触发注册事件,注册符合 standard 的 adapter ,从而完成 DApp 对钱包的 auto-detection 。

Suiet 是我们团队第一个作品,凝结了我们对 Web3 的期望和激情。Team Work 的过程中我不仅是技术上得到提升,和不同领域的伙伴协作也是拓宽了我的眼界。币圈里做技术的人良莠不齐,很多基建也是不太可靠,开发体验远不如 web2 。但反过来想,这正是我们年轻工程师的机会呀,把 web2 里锤炼过的技术,再注入对 web3 的热情,Build here a better world 。

投入度:★★★★★

产出度:★★★★★

影响力:★★★★★

Suiet Wallet Kit

Github 仓库:https://github.com/suiet/wallet-kit

Wallet Kit 是我们做钱包的副产物,初衷是抢占与 dapp 合作的机会,通过 all in one 的钱包连接管理套件助力铺开我们钱包。这块由团队其他两个小伙伴完成初版的搭建,那会儿文档不太完善,可配置性也不尽人意,接入效果并不好。在 wallet-standard 之后,因我比较熟悉其整体逻辑,我开始着手重构 wallet kit ,主要围绕条件判断逻辑冗杂与可配置性这两块做优化。

造成第一点条件判断冗余的背景是:钱包适配器们对 standard 里 features 功能的实现不尽相同,甚至是缺失的。于是我抽象出一个通用适配器接口和实现类,底层基于 wallet-standard 约定的函数调用方式+自定义错误处理将异化逻辑包裹起来,这样做能够保证暴露给用户的函数签名是一致的,优化 DApp 开发者的体验。

第二点可配置性,作为 React 插件包,我们既提供了 Hooks 又提供了 UI 组件(按钮、弹窗),这对于开发能力较弱的团队来说是很方便的开箱即用,但是,对于大一点的团队,他们对 UI 的定制要求很高,甚至是只用我们的 Hooks 逻辑部分,UI 用自己的。

所以,我首先针对暴露给开发者的 Context 上下文进行了重设计,把钱包项的配置列表以及从浏览器中自动检测到的钱包项都提供出来,有助于开发者们构建自己的钱包选择器 UI 。其次,我支持了钱包预设选项的传入,让开发者能自己决定要展示的预设钱包列表和排序。

在重构的过程中,我学到一个很重要的经验,那就是「向下兼容」!做任何破坏性的更新,一定给已经在用的开发者一个接口的平稳过渡的时间,否则开发者一更新你的包,发现原来的函数改掉了或者直接没有了,项目因升级而运行失败是很糟糕的体验,更何况币圈的开发者能力有得真的弱到让人大跌眼镜(比如文档写的清清楚楚但是还是跑来私戳你要怎么做)。正确的做法应该是:如果可以做到只加参数而不影响旧的功能,那就直接改;否则,将旧的接口标注为 deprecated ,并行启用新的函数接口,并且写好 migration 迁移文档,设定合理的弃用时间节点并告知开发者们。

最后我还把我们的文档给翻新了,用更有趣的方式来介绍用法。我发现我对 emoji 风格的文字叙述还挺在行的哈哈。

Anyway, 这是我第一个有项目在用的开源项目:Github 20+ repo 的引用,以及 npm 周峰值 800+的下载量,完全超出了我今年定下的要为开源社区贡献能力的目标~好有成就感,哈哈!

投入度:★★★☆☆

产出度:★★★★☆

影响力:★★★★☆

Let.sh

Website: https://let.sh/

Let.sh 是我和 lzb 第一个合作的项目,是一个 all-in-one 的开发部署平台。支持如 static files 和 web 服务的一键命令行部署(类似 vercel ),并且支持如本地内网穿透、部署后的 metrics 检测等 features ,是比较适合个人开发者的开发工具。

最初是因为想直接集成 Arweave——做 Web3 永久存储的一条区块链, 打他们的 hackerthon 来入圈。于是我们在 let.sh 原有的逻辑上增加了静态文件部署至 Arweave 链,实现所谓真正的 DApp ( Decentralized App 去中心化应用)。但是实际并不好,1 是每次部署都要扣 gas ,2 是部署和访问都很慢,比不上 web2 体验,主要受限于 ar 链的出块共识机制以及通过 ipfs 做路由寻找 peers 的速度。

另外还增加了文件树与预览的新特性,树组件真的是前端做页面少数要用到算法的地方了 2333 。

除了搭建系统之外,还做了一些跨领域的尝试:

这是一个我挺喜欢的产品,lzb 这种本想着做给自己用结果发现可以发展成 side project 的技术热情,我挺佩服的,也要向他学习呀。

投入度:★★★☆☆

产出度:★★☆☆☆

影响力:★☆☆☆☆

其他

学习

学业

入学研究生前后,在专业方面重新做回学生,静心打基础:

Web3

阅读

写作

2022 在写作上是有突破的!开启了个人公众号,学着技术偶像Airing 的 Weekly 周刊,也开始写周刊,并且写出了一篇爆款文章"暂别啦!鹅厂&TME",分享了自己如何在大厂工作和出国留学中做抉择的心理历程,4700+阅读还有 184 点赞,只发了一条在自己朋友圈,完全就是自然增长哦(比如朋友转给他们的朋友看)。非常意外触动到许多和我一样被互联网卷得不舒服的朋友们,他们纷纷来私戳我,说看了我的文字很受触动,佩服我做了他们还不敢做的事,也收到了很多祝福。我才体会到,原来文字真的能传达勇气和力量呀! 2023 ,也请继续保持写作,用知识和故事影响更多人吧!

细数 2022 ,我做了很多新尝试,建立了自己的 crypto 团队,做出了一些不可思议的成就。技术的增长还是主要在前端这块,但是今年已经踏入了 web3 ,增加了对区块链的理解,并且还做了许多跨领域尝试,希望在 2023 能够保持对跨领域的热情,并且把根在区块链和后端扎的再深一点,逐渐转型为后端工程师,理由嘛,当然是不满足于只跟浏览器打交道咯。

2023 还有一个很大的愿望,那就是通过自己的知识去变现,为他人提供价值,很大胆的想法,希望能做到!

最后希望自己在新的一年,能够更聚焦少数领域,成为某个领域的专家,再努力自律一点,把影响力再扩大一点,把收入再增加一点,再爱生活一点!

PS:最后贴一下我的公众号,顺手关注一波吧!

6761 次点击
所在节点    程序员
99 条回复
CingFuture
2023-01-03 19:32:10 +08:00
向你学习
PsychoKidA
2023-01-03 19:32:19 +08:00
向 OP 看齐!想请问下个人学习分享 IP 是哪个啊,想 follow 一下~
PsychoKidA
2023-01-03 19:36:26 +08:00
@PsychoKidA 😅 看到公众号了,忽略楼上
kingjpa
2023-01-03 19:38:10 +08:00
牛皮,点赞
89ao
2023-01-03 19:39:33 +08:00
后生可畏,哥们你几几年的?
finian
2023-01-03 20:39:41 +08:00
优秀👍
feiwan
2023-01-03 21:19:28 +08:00
太牛啦
gloye
2023-01-03 21:23:41 +08:00
大佬太牛了
liangkang1436
2023-01-03 21:30:09 +08:00
啊,太强了
ysicing
2023-01-03 22:35:42 +08:00
厉害👍
brrruski
2023-01-04 00:52:44 +08:00
@89ao 我 97 的,本科毕业去鹅工作了两年,然后 run 出来看世界了哈哈
brrruski
2023-01-04 00:53:11 +08:00
@PsychoKidA 好嘞,感谢关注
brrruski
2023-01-04 00:53:51 +08:00
@pzhyy 哈哈哈真心麻烦,写着写着会懵掉:我现在在哪一层?
brrruski
2023-01-04 00:55:11 +08:00
@leegradyllljjjj 2333 也不是,以后文章还是同步发 v 站,这不想试试知识变现么哈哈
brrruski
2023-01-04 01:00:06 +08:00
@GuiPulp Sui 在 L1 的技术创新点是有的,用 DAG 支持并行区块确认,TPS 不错;另外个人感受相比 aptos 团队低调务实很多,在技术上会更上心一点;其实最主要还是我们那会儿的进场时机很棒,有些机会就是占山为王的 timing 罢了
brrruski
2023-01-04 01:02:10 +08:00
@yumenawei 谢谢,就愣折腾呗哈哈,而且我前面有一直追逐的榜样 Airing ,他给我很大启发。你也可以逛下他的 Blog: https://weekly.ursb.me/
brrruski
2023-01-04 01:03:31 +08:00
@xuzhzzz hhh 还是社会主义战士 我感觉开源也是一种共产主义?(笑
fredliang
2023-01-04 02:01:22 +08:00
实名点赞 🎉
大佬总结得比我靠谱多了!
brrruski
2023-01-04 02:36:57 +08:00
@fredliang v 站真靠谱,第一次发帖就碰到老熟人哈哈。这不,letsh 之父都来(笑
SeaTac
2023-01-04 06:10:55 +08:00
所以 op 在美国有 intern 经历吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/906269

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX