以下是我在周报中写的2019年的年终总结,同时也放自己博客中一份,便于日后追忆。

来到Phoenix一年多,已辗转三个办公区了,从丹棱到互金到科贸一路走来,编辑器也从最初一个简单的替代手工编写XML课件的工具到目前集备录编一体化的AI课件生产系统了。

这期间,给我感触最大的有三个阶段:

一、平台化

平台化之前的编辑器是将组件的拓扑信息、属性配置信息及音频配置信息都打包在编辑器中的,这样对于编辑器和组件的研发同学来说非常的不方便,而且对于不同版本的组件维护起来也相当繁琐,然后当时强哥主导了平台化,将组件从编辑器中解耦,组件的属性配置使用表单库来维护,虽然当时折腾了挺久,但是现在看起来一切都挺值得。

平台化过程中,对我有一个很大的挑战:时间轴上的拓扑结构的无限级嵌套,既要保证正向的渲染,也要保证在删除某个结构时对原有结构的回溯,拓扑是整个时间轴交互的核心所在,如果无法保证拓扑结构的稳定性,其上层建筑都将岌岌可危。由于当时对数据结构和算法相关知识储备不足,导致没有找到很好的解决方案,后来经过与德德沟通,德德给出了一个完美的解决方案,一直沿用至今。

平台化的重构过程中,学到了很多, 其中最重要的就是拓扑结构的嵌套这件事带给我思维上的转变,意识到了对于无论是前端还是后端,算法和数据结构才是根本。

总结:升级个人技能点的方式,不一定非要通过打怪升级,善于利用碎片时间来完善自己,临阵之时才不会出现书到用时方恨少的囧象。具象的来讲,自己在算法,数据结构以及可视化(图形绘制、3d动画等)等领域的探究尚浅,而这些也是目前工作中时常会用的关键技术,以后在这方面要多下功夫。

二、用户量提升后对编辑器的性能优化

随着编辑器用户越来越多,教研老师对配课的需求也各有不同,批评声也随之而来,其中最影响用户体验的一个就是使用了500左右视频切片时,无论任何操作都会导致编辑器卡顿甚至假死,高级预览时该现象更甚。

究其原因,是由于时间轴上的所有内容是绘制在一张画布上,当用户操作时,会导致画布进行频繁的重绘,重绘完成后还有本地的课件写入,这两者导致了性能问题。针对画布的频繁重绘使用离屏画布解决了这个问题;针对于课件的写入操作,我们通过优化产品策略以及C++端的写入接口也解决了。

总结:如果可以一步到位,就不要“先能用,在迭代”。因为目前的每一个阶段都应该是一个质量良好的产品,都应该是一个敢于接受用户挑战的产品。

三、时间轴SDK的封装

时间轴的SDK最近又用typescript重写了一边,强哥给了我很多关于如何封装一个SDK这方面的启发和建议,上个版本的SDK在与业务的解耦合和对外暴露的事件接口方面做得不好,这次就将SDK中的业务代码基本全部清理,取而代之的是针对对应的模块都绑定一个基于观察者模式的发布者,在SDK内部有事件触发时,向外部发布对应的消息指令,外部设置对应的监听来进行接下来的逻辑处理。

SDK中原来的另一大毒瘤是全局变量,这些全局变量不仅会带来安全问题,还会导致变量的全局污染,这次使用单例模式构造了一个DataManager,有点类似于redux或vuex中的Store的概念,一个唯一的数据存储中心,通过它,来让数据私有,对外暴露存取数据的接口,从而使数据的共享更纯粹。

总结: SDK类的架构设计时除了需要考虑到易用性之外,还应该秉承少即是多的原则,尽量将和业务耦合的点开放出接口供外部实现,也可以在SDK与业务模块之间做一层针对简单业务场景的适配层,这样才能最大限度的保证SDK的普适性。

这一年见证了编辑器的一路成长,我自身也在一路探索中受益良多。

在现在这个框架横行的年代,出门和朋友聊天,不会几个流行的框架都不好意思说自己是前端,大家都在盲目的紧跟潮流,一边在论坛上狂刷“学不动了”,一边又嘴里喊着真香的学的不亦乐乎,原来的切图仔,现在的npm三部曲(npm install , npm start , npm uninstall),都是泡沫。学习框架,主要是学习框架的思想以及别人对问题的解决方式、思考方法,并用这种优秀的方法来完善自己。 和胡老师一起共事的这段时间,他就一直在强调要改变我们自身的思维模式,优秀的人都是自我养成的。我也在胡老师的鞭策和激励下看了几本书:《JavaScript设计模式》《设计模式之禅》《程序员的三门课》《程序员的进阶心法》《墨菲定律》《代码整洁之道》《重构》《麦肯锡高效工作法》《聪明的人用方格笔记本》《上地不掷筛子》等。你读的书,看的风景,就是你格局,希望来年可以更多的利用一些碎片时间来读书。

创造性的输入,决定创造性的输出。编辑器目前的很多交互都不是最优解,团队内部也确实没有交互设计岗,所以很多时候就需要群策群力,作为前端研发,更应该担负起更多的这方面的职责,来年需要看一些用户交互和视觉设计相关的书来多一些创造性的输入,填补一下这方面的空缺。

前几天团队内部一起碰了一下关于来年的技术和项目规划,还是有很多充满挑战性的事情需要去做,而且这些事大多都对编辑器以后要做成一个什么样的产品起着关键性的作用,希望大家调整好节奏,步调一致的撸起袖子加油干。借用胡老师常说的一句话就是结硬寨,打呆仗!

今年的我的关键词是【优化】,优化的肯定是自己做的不足的地方,希望来年可以少一些优化,多一些【完成】。


 评论