Skip to content

徐徐的 2024 年终总结

大家好,我是徐徐。今天说说 2024 年这一年,进行一个年终总结。

前言

还有 10 天就 2025 年了,最近刚完成了 2024 年的 OKR Review,然后对自己一年的工作做了一些梳理,想想在这里也浅浅地总结一下,当然不限于工作,希望后面每一年都可以进行一次总结。

关于工作

大概分为以下三块:

  1. 为我之前开发的零信任桌面客户端做性能优化和体验优化以及一些工具产品
  2. 常规地从 0 到 1 构建了一个后台 Web 系统
  3. Web 设备指纹 SDK 以及小程序设备指纹 SDK 的探索和开发

Electron 零信任桌面客户端相关工作

画板

上图是我自己画的一个今年在客户端做的相关的工作。

我们研发的这款产品前期比较注重能力上的建设,时间都比较仓促,要完成一些核心的 KPI,所以随着时间的推移,欠下的技术债就相对多了起来,那么就导致了一些性能上的问题和用户体验上的问题,所以今年就花了很多时间去做性能以及用户体验相关的优化。

在写 OKR 的时候,相关的指标都是定好了的。比如性能提升要多少,能耗要降低多少,客服量需要下降多少,在这个过程中我是非常能感受到一个产品要从及格到优秀是多么的不容易,关键是我们的产品经理还请产假了,最终导致的结果就是我和业务方自己写 PRD,然后完成相应的工作。

说说 Electron 性能优化

这里只谈谈大体的思路,具体细节由于篇幅问题就不深入了。要做桌面端的性能优化前期是需要做一些问题摸排的,需要统计端上某些方法的执行耗时以及整个应用的内存占用情况统计,如果没有这些数据,你是无法知道整个客户端在不同机器上的表现情况的,那么也就无法做出相应的调优动作。

第一步:埋点上报统计方法执行耗时和应用的内存占用情况。有了这些上报的数据之后,我们就可以看到一些方法的执行时间,然后也可以看到是在哪些时段内存占用较高,好摸排是否是后台下发策略导致的并发执行导致的问题。

第二步:优化执行耗时长的方法,减少 CPU 的突刺。

经过统计,大部分都是因为底层系统信息采集导致方法执行慢的,因为我们前期为了快很多信息采集都是用命令行实现的,里面有非常多的 Powershell 的调用,后面我们就把所有的命令行调用进行了改造,采用 rust 的方式去调用 windows 的 API 来实现,包括进程信息,软件信息以及一些常规的系统信息和硬件信息。另外通过统计发现,某些时刻客户端的 CPU 占用非常高,后面经过排查是发现很多任务并发执行导致的,特别是在整分钟的时刻,因为我们后台配置了非常多的策略动作,都是几分钟执行一次这种,当然还有秒级别的定时策略。为了缓解这个问题,后面就自己研究和实现了一整套任务队列,上线之后 CPU 的突刺明显减少。

当然在这个优化的过程中其实也让我对 Chrome Devtools 的使用更加熟练了,比如使用 Chrome Task Manager 观察实时 JS 内存使用,使用 Performance 可视化检测内存泄漏,查看内存堆快照以及进行快照对比,通过查看内存分配时间轴信息查看内存回收情况,之前这些技能都是在纯前端开发的时候使用的,但是都不太熟练,后面在 Electron 的使用中,我也用了同样的方式去调试主进程,当然主进程的调试比渲染进程的调试要稍微复杂一些,而且还有一定的局限性,很多时候代码编译过后并不能找到最终的代码块,特别是有原生模块调用的时候,所以很多时候是一步步 debugger 结合本地日志,靠着经验和直觉去发现问题,一遍遍跑内存快照,然后去找出内存快照之间的差异去发现问题。

第三步:灰度和效果回收。当你费尽力气优化后,是需要看到一些数据的,这样才能体现自己的成果,当然在优化之后不能马上直接就上线了,灰度这个过程少不了,可以佐证自己的优化是否生效,因为端上的环境的差异会比较大,如果灰度发现和自己的预期不符合,需要及时调整。我就在这个过程中去反复修改和兼容一些方法的,端上需要做好容错措施,这样才能保障稳定性。

谈谈用户体验

用户体验这个东西其实是比较感性的一个东西,有的人会觉得这个功能好,有的人会觉得这个功能不好。但是客诉的数量可以侧面反应出大家对这个产品的满意程度和使用方便度,当然这个指标其实是比较单一的,但是它是比较直观的。用户体验还有其他维度,比如实用性,易用性,美观性,交互流畅度之类的,我们所做的优化也都是从这些方面去出发的,比如做一些引导,对界面做一些改版,加上一些动画,然后再做一些实用性的工具箱,都可以提升用户体验。

在做用户体验的时候其实是需要专业的 UI 设计师的,但是对内的产品,UI 设计基本都是最低优先级的,再加上没有产品经理,但是有的优化又必须要做,只能自己上了。但是研发到产品思维的转变这一块并不是那么容易,所以很多时候去做一个功能的时候如果只局限于技术的角度,做出来后可能并不会受到人们的青睐,不过好在自己是前端,所以对一些审美和交互我还是有一些自己的 Sense,大体上可以自己写 PRD 然后评审需求后听取大家的意见再进行修改,大体也能做到个七七八八。

Web 后台系统开发相关工作

今年部门新成立一个部门,主要是做蓝军相关的,所以需要一个平台来承载一些蓝军相关的需求。于是就从 0 到 1 做了一个后台系统,Umi + React + Antd 三件套一把撸完,这块没有什么想讲的,过~~

设备指纹 SDK 相关工作

这一块之前的确没有怎么接触过,以前也都只有知道原生应用有设备指纹应用的场景,后面了解到在 Web 端和小程序也有相应的应用场景。正好部门有些地方的策略可能需要用到这一块的能力,然后就研究起来了。不过上半年没有怎么投入,下半年才开始投入的,了解了相关原理发现其实端上能做的非常有限。客户端最主要的能力就是采集各种信息然后形成各种特征参数,最后喂给算法形成特定的设备指纹哈希。

在这个期间就是了解了各种前端的 API,最主要就是 navigator 上的各种属性,最后整合了一些声音指纹,canvas 指纹,字体指纹,webgl 指纹等,然后获取一些常规的硬件信息,最后加密上报给服务端,然后前期做一些简单的数据分析,看看纯前端方案下的设备指纹膨胀率之类的。

这个东西说实话,用处真的不是很大,在一些风控场景下只能进行辅助分析,加上没有确定的唯一标识(当然可以本地存一个 UUID),即使有一些特征了,最后给算法去计算去训练能产生的收益并不大。因为大部分的策略依赖端上的东西大概还是像应用是否多开,手机是否 root,是否为模拟器之类等一些比较硬核的特征,因为大部分情况下还是在 APP 壳子里面玩,端外 H5 的场景越来越少了。

然后就是小程序的设备指纹,这一块其实也是非常有局限性的,采集的信息大多还是有限,要么就是有的采集需要用户各种授权,作为这种 SDK 你是不能影响业务的核心流程的,很多东西也不是采集得越多就越好,涉及到用户信息相关的安全条例,搞不好整个小程序都被下架,得不偿失,所以只能采集一些比较基本的设备信息,而且还要做一些兜底,各种判断相关方法是不是可以使用,因为小程序的基础版本在很多机器上是有差异性的,那么相关的 API 也是有差异的,最后就变成了各种方法的兼容。

设备指纹最为核心的能力其实还是算法层面的能力,经过模型分析去做相应的指纹生成,端上就是保证采集的信息无误就好,剩下的就交给算法吧。

关于开源、学习

开源

今年在开源项目上并没有太多的投入。有如下几个事项

持续维护 electron-prokit(https://github.com/Xutaotaotao/electron-prokit),主要是修复 BUG。下载 2.8 K,star 242。

持续维护 get-installed-apps(https://github.com/Xutaotaotao/get-installed-apps),更新了一下文档。下载 5.4 K,star 106。

开发了一个黑悟空的壁纸软件,wukong-wallpaper(https://github.com/Xutaotaotao/wukong-wallpaper),纯粹是为了好玩。下载 58,star 6。

和同事一起开发了一个网络安全应急响应工具,FindAll(https://github.com/FindAllTeam/FindAll),这个是工作需要顺带做的,代码没有开源,只有现成的安装包,主要是方便蓝军工作人员。下载 11 K,star 600+。

学习

今年和同事一起去北京参加了一场网络安全运营实战大会,不得不说开阔了不少眼界。AI 的发展非常的迅猛,在安全场景的落地已经有非常多的案例了,没有哪个演讲不涉及 AI 相关的话题,现在已然是趋势,各种 AI Agent 在各种场景的落地和实战都已经全面铺开。这一块今年虽然有所了解和学习,但是一点都不深入,停留在调用 API 的层面,后续需要钻研一下相关的技术,看看如何做一个 AI 前端工程师。

另外一块就是对源码的学习,今年读了 Electron 的一些源码和它周边生态相关的源码,只想说优秀的框架在工程设计上真的非常用心,深深的感受到了自己和顶级天花板的差距。也阅读了 chromium 的一部分源码,这个工程更加庞大,架构的设计非常的复杂,看起来简直就是天书级别的存在,大部分都是 C++ 相关的知识,也有很多是跟前端相关的东西,对于一个前端工程师来说简直就是找虐,但是没有办法,有需求要研究它,只能冲了。

关于徒步、旅行

徒步

今年多了一个爱好,那就是徒步。想想好像也没去过几个地方,因为夏天太热,冬天太冷,冬夏基本没怎么出去,就春天和秋天。徒步让人可以忘掉很多日常的工作和生活,带你跳脱出来,非常适合释放压力和情绪,特别是在一段路程中,走着走着就自己一个人的时候,你可以静静地感受山野间的气息,听松涛的声音以及潺潺的溪流,感觉整座山都是你的,沉溺在大自然的怀抱中。

庐山,唯一去过两次的一座山,景色依旧美丽。

覆卮山,石浪 + 油菜花梯田,适合春天去。

杭州九溪,春夏都很好玩,上海一日往返经典徒步路线。

杏梅尖,有点吓人,小白不建议去,搞不好下山一路摸黑。

虞山,难度正常,景色也不错,就是要几上几下。

栖霞坑,赏秋绝美去处,枫叶真的很好看,路线简单。

龙王山,江浙沪雪景胜地,冬天值得,绝对不容错过的一座山。

旅行

旅行的话,印象最为深刻的就是和几个朋友去了趟川西,来了一场自驾旅游。感受最深的就是每到一个地方大家都是「哇」声一片,真的非常洗眼睛。另外就是你一天可以感受四个季节,感受自然的变化。当然在 318 国道上开车驰骋的感觉也是非常舒服的,景色各不相同,有大河,有草原,有山川,有云海,有雪山,正应了那句话:此生必驾 318。

另外就是还去了景德镇、福州、平潭、缙云。各有特色,各有风情,各有美食,各有风景。

进入景德镇之后你会被各种瓷器吸引,看得让人眼花缭乱,感觉就像进入了陶瓷窝一样,除了瓷器还是瓷器,每个店都有自己的特色,品种也各不相同,如果你是手作或者瓷器爱好者,这个地方可以让你玩上好几天。还有就是景德镇有几家大排档可以去吃一下,味道相当霸道,作为一个重庆人都觉得那个辣度很辣,怕辣的最好不要尝试,怕你流泪。

福州给人的感觉是比较有烟火气息的,旅游业不算太发达,带有小资气息,富有文化底蕴。当然肯定要去打卡几个著名的景点了,不然也枉来一趟,随便逛逛,拿着相机到处拍一拍就非常惬意。

平潭是非常值得去的一个地方,可以租个电动车,然后环岛骑行,满眼都是蔚蓝的天空和碧绿的海水,如果遇到好看的景色可以随处停留拍照打卡,寻找一个海湾和三五好友坐下听海浪的声音,喝一杯略带咸味的手作饮料,静静地等待日落的降临。

缙云跟预期的有所差距,人多,风景不多,地方也小。要去最好是抽空闲的周末,节假日不要去。之所以火爆是因为有几部电视剧是在那个地方取景的,所以很多人都会去打卡。江浙沪周边两日游可以选择这个地方,也有比较容易出片的地方,可以感受山水间的气息。

关于摄影、骑行、羽毛球

摄影

摄影这个爱好我已经保持了很久了,从大学就开始玩,但是设备一直没有怎么更新换代,一台狗头相机拍了六七年,镜头也没有买新的,不过这都不影响我的爱好,因为我觉得完全够用了,不管是人像还是风景都可以适应。之前我拍摄的照片都是发微博,后面开通了微信公众号,就专门建了一个专栏来更新我的摄影记录,然后发了一些存量的照片,有些照片太久远了,实在不想去翻,就看心情,偶尔看到哪一组比较好的我就挑出来发布到公众号上。我周末也会偶尔带上相机到处转悠,然后记录一些街景,如果出去玩我也会带上相机去记录,不得不说好看的照片会让人心情愉悦,因为每一张照片都是独一无二的,它会让你想起当时的一些情景,这也是我为什么喜欢摄影的原因。

骑行

骑行算是今年重拾起来的一个运动。大学的时候就玩骑行,但是那时候玩的是山地车,不是公路车。十一过后我决定试试公路车,后面就开始了骑行运动,不冷的时候每周都会骑,两个月时间大概骑行了 600 公里,当然其中有 300 公里是环太湖获得的里程。从大学过后基本就没有一天骑行超过 100 公里的经历了,但是今年环太湖真的打破了自己的记录,骑完之后感觉自己无所不能。骑行可以让人获得很多很多的多巴胺,让人非常的高兴和兴奋,只要不太过剧烈,对人的身体是非常有好处的。

羽毛球

对于羽毛球,只能算得上初级选手。之前还专门上了私教课,可惜的是刚练到走位就退课了。对于久坐办公室的人,这项运动也非常有好处的,所以今年我也打了很多场羽毛球。基本每周都会打一次,不管是和部门的同事还是公司的同事,反正保持每周一次的频率。和部门的同事打比较悠闲一些,和公司的同事打就是真正的锻炼,会增长自己的技术,因为公司里面还是有很多高手,我也是从一个菜鸟慢慢变成了初级选手,刚开始的时候很多规则都不懂,后面打着打着就感觉自己不管是反应还是走位都比刚开始玩的时候进步了不少,同事都说比之前好多了。

关于读书、写作

读书

今年读书相比于去年少了一些,大概有这几本读完了:《四个春天》、《你当像鸟飞往你的山》、《星期六晚我们去散步吧》、《长安的荔枝》、《牧羊少年的奇幻之旅》。读了一半的有《原本大学微言》,还有两本刚开始读,大概 25%,《被讨厌的勇气》、《特朗普传》。我读书比较混杂,反正啥都读,没事就翻翻,打发时间。其中《牧羊少年的奇幻之旅》真的很治愈,读了之后感觉整个人豁然开朗,这里推荐一下。

写作

今年是真正开始写作的一年,首发是微信公众号,然后是掘金,最后是 CSDN,其他平台实在不想发布了,精力有限,大概数据如下。

公众号中,《30岁了,谈谈我做前端开发的这 6 年》这篇文章爆了,收到了很多读者的反馈和留言,能感受到和我一样的人还有很多。另外就是开了两个付费专栏,说是付费,其实大部分文章都是免费的,就当无偿贡献了,如果有人来问问题,我会反手推荐一下专栏,至于买不买无所谓了,完全看对方的需求了,我也不强求,我只服务我忠实的读者就好了,没必要讨好每一个人。公众号朋友数 1184,阅读量未知。

在掘金上,《谈谈我做 Electron 应用的这一两年》这篇文章爆了,因此上了当时的前端优质文章榜单,很多人都来问我关于 Electron 的问题,和很多的同行进行了交流。掘金朋友数 400+,上面的流量很大,可能大部分都是开发者的原因。

CSDN 感觉很多假人,这个无从考证,反正里面的质量参差不齐,不过还是有非常多人用 CSDN,所以分发到这个里面也可以带来自己的曝光,当然也可以帮助到一些人,朋友数 400+。

今年是尝试探索个人 IP 的第一年,大致感受就是,我吸引来的人,大多都是跟我有差不多经历的人,大部分都是前端开发者,当然也有一些创业者,他们大多是找我提供技术服务或者咨询服务的,也有提供工作机会给我的,约我面试的。网络的确会放大一个人,不过我写的文章都是比较细分领域的,专业性都非常强,所以找到的基本也是咨询 Electron 客户端相关的问题的。至于以后是否要写其他方向的内容再说,比如一些咨询类的,一些工具推荐相关的,这个有待考究,因为写这些不一定能帮助到我自己,所以我还是希望从我自身的日常工作中出发去写相关领域的技术文章,一来是为了总结,二来是为了精进。

结语

回看这一年,时光飞逝。总结一下之后感觉今年好像还是非常丰富多姿的一年呢,文字记录下来之后会让人的思路更加清晰,也会反思自己这一年的一些事情,我自己感觉是非常不错的。

把一年浓缩在 6000 字的文章中就感觉像把自己的一年酿成了一瓶酒,然后写上了年份,可能某一天打开重读的时候还能感受到岁月沉淀的醇香。

每个人都有自己的独特的生活轨迹和思考方式,这篇总结只是我个人的总结和观点,各位看官不喜勿喷。感谢一路相伴的朋友们,愿我们都能在新的年岁里找到属于自己的精彩。

Last updated: