《前端随想录》与我的技术观
知乎相比传统博客有个问题:缺乏原始意义上的 About Me 页面,不易于其他人知道「这人是谁,做过什么」。虽然你能点进别人主页视奸 Timeline,但这里消息碎片化程度实在太高了。就连回答赞同数排序也未必准确,毕竟自己认真写的干货点赞数比不上随手玩梗的情况,已经再常见不过了。为了在这个日渐浮躁的互联网里好好沉淀一些东西,这篇文章既会成为一个目录,也会成为我自己的 About Me,保持更新并置顶。
作为前端工程师,我的本职工作主要是 Web 生产力应用的研发。这涉及不同层面上的 GUI 应用领域知识,包括富文本编辑、图形编辑、混合应用技术栈、WebGL 渲染、JS 运行时等。此外我也会做一些小型的探索项目,并分享一些技术上的个人见解。这些内容大致可以分为这么几类: 技术教学、动手 Hack、技术评论、个人内省
。
下面列出分类整理后的文章目录。
技术教学
这部分主要是对某项前端技术的入门介绍。我比较关心一些相对「小众」的领域,努力保证文章的趣味性。但如果想真正掌握这些技术,那一定是离不开系统性的学习的。要是我的这些文章能起到 一定的启蒙作用
,那就很不错了。
- 从 JS 引擎到 JS 运行时(上)
- 从 JS 引擎到 JS 运行时(下)
- 实用 WebGL 图像处理入门
- 如何设计一个 WebGL 基础库
- 从回调地狱到自函子上的幺半群:解密熟悉又陌生的 Monad
- 响应式编程入门:实现电梯调度模拟器
- 如何无痛降低 if else 面条代码复杂度
- 零起点的开源社区贡献指南
动手 Hack
这部分主要分享一些我制作新玩具 Demo 或解决具体问题的历程。我选择的题材主要是兴趣导向,并超出个人舒适区的。文章里一般会描述思路和步骤,并提供可以复现的代码库,希望它们能帮助感兴趣的朋友们 接触到一点更大的世界
。
- 将 React 渲染到嵌入式液晶屏
- 将前端技术栈移植到掌上游戏机
- Web 魔方模拟器的设计与实现
- 用 JavaScript 实现微机模拟器
- 让 Chrome 崩溃的一行 CSS 代码
- 哦语言:面向真正粉丝的编程语言
- 基于文本相似度算法,分析 Vue 是抄出来的框架吗?
- 一个拖拽框背后的高中数学
技术评论
这部分主要是我对一些开放性技术问题的个人观点,也包括一些专栏外的知乎回答。鉴于我的个性,有些文章是存在不小争议的。随着时间推移,我自己的理解和认识都可能更新。所以我相信答案本身未必重要, 重要的是分析思考的过程与方法论
。
这些是专栏的评述类文章:
- 一个白学家眼里的 WebAssembly
- 反对函数式编程的政治正确
- 你也许不需要 devDependencies
- 从时间旅行的乌托邦,看状态管理的设计误区
- 这个程序员写的免费在线 PS,让他三十岁前财务自由
- 别再拿奇技淫巧搬砖了
- 浅析 React / Vue 跨端渲染原理与实现
- Slate.js – 革命性的富文本编辑框架
- 小前端眼里的大前端:GMTC 2018 参会小结
- WWDC 中提到的浏览器 Fingerprinting 有多可怕?
这些是与 JS 系语言相关的回答:
- 程序语言都是怎么发明的?
- 随着 TypeScript 继续普及,会不会出现直接跑 TypeScript 的运行时?
- TypeScript 解决了什么痛点?
- 谁能说清楚 JavaScript 的 this 原理?
- JSON 可以替代 XML,为什么网页不用 JSON 格式来写呢?
这些是与可视化编辑器相关的回答:
- 有多大比例的前端工程师,能在合理时间内独立开发出商业级文本编辑器?
- 如何不借助 contentEditable 实现富文本编辑器?
- 基于现代的前端框架,为什么没有成熟的支持控件拖拽布局,并可以自动生成前端代码的设计器出现?
- Slate.js 编辑器引擎有什么致命缺陷?
这些是与原生开发及 WASM 相关的回答:
- WebAssembly 的出现是否会取代 JavaScript?
- 有哪些效果拔群的 WebAssembly 应用?
- 如何看待 WebAssembly 这门技术?
- 现代浏览器生成一个 JS 函数的开销多大?React hooks 的设计频繁生成新函数对性能有影响吗?
- 如果用 C++20 来写 Python 的 Implementation,会有多少性能提升?
- C「带坏了」多少程序语言的设计?
这些是与 WebGL 及图形学相关的回答:
这些是与其他业界动向相关的回答:
- 为什么招聘高级前端开发这么难?
- 如何看待 React 核心成员 Dan Abramov 自曝年薪 13W 美金?
- 2020 年前端最火的技术是什么?
- 已经 2020 年了 Deno 现在怎么样了?
- 前端的未来是数据可视化 D3 / WebGL 还是 Node.js 还是物联网?
- 如何看待美团效仿亚马逊,内部汇报拒用 PPT 而改用 Word?
- 长期当程序员会失去什么?
个人内省
这部分主要是我对自己技术生涯的阶段性总结与回顾。我觉得评价自己,其实比评价他人要困难和痛苦得多。 我做技术是为了什么?我的生活又是为了什么?
这种看起来最简单的问题,却往往并没有那么容易回答。
以上已经整理了我自己认为值得推荐的分享内容,方便有需要的朋友查阅。下面我想多说几句,聊聊我写作的动机与立场。
首先,我并不是想通过这些文章证明我的技术有多强。相反地, 如果你在面试里遇到我,那么你很可能惊喜地发现我无法秒答一些老生常谈的题目
,譬如 this 的几种指向与如何翻转红黑树之类——你看这个在知乎沽名钓誉的家伙,水平也不过如此嘛!
我写许多文章的最大动力并不是炫技(当然也不排除有点这个成分),而是希望像我仰慕的许多大牛那样,能把一些「有价值」的东西分享给更多的人。 比起一些早有标准化答案的经典面试题,我可能更擅长和乐于解决实际遇到的开放性问题
。当然好的算法题也有分析讨论的价值,毕竟它们都需要高质量的思考过程,这在我眼里都比结果的 error-free 更重要。类似地,相比于文章给出的结论对错,我更看重思考的过程本身。
不得不说,我的生涯发展还是受到了许多前辈的影响。虽然我每天都喜闻乐见地等着知乎彻底完蛋,但其实我就是在知乎刚诞生不久的那个年代来到这里,并开始学编程的。这里有许多我高山仰止的大牛,对我有很多潜移默化的熏陶与帮助。这些年过去后,虽然我仍然无法成为他们,但他们在我眼里已经不再那么遥不可及了。尽管许多人今天已因各种原因离开,但我发现今天它的编程专业话题仍然能保持一定的质量。对于中文技术人来说,这里仍然是比微信公众号更好的平台,我会继续保持活跃——当然, 我感兴趣的话题未必仅仅是前端技术,这是我的自由
。对于非技术的写作,我会将内容更新到《 前进达瓦里希
》专栏,它的第一篇文章《 美剧〈切尔诺贝利〉背后的真相
》也获得了不错的反响,这让我感到欣慰。毕竟不管是技术还是非技术的写作,背后都有许多共通的方法论。
其实就算知乎彻底完蛋也没关系,我的所有重要文章内容都有备份。对于转载,只需注明出处即可。在极端情况下,我也保留删除全部文章退出知乎的权利。我也在这里提醒每位知乎创作者, 一定不要信任国内平台的数据安全性
,理由就不必多说了。
虽然这个专栏接受打赏,但盈利并不是我写作的最大动力。两年来,我接受到的打赏总额为 七块钱
。不过如果有金主愿意,我也很乐意接受一些付费的咨询,或专门写一些诸如调研分析或技术推广性质的深度文章。只是这样的选题不应违背我的价值观。如果你有这样的想法,也可以私信联系我。
许多前辈都说「做分享真正受益的是你自己」——某种程度上这说得没错。但如果只有你自己受益,那说明你的分享还可以更好。我写博客的兴趣从 2014 年起培养到了现在,最早的文章和代码都写得很烂,而现在已是今非昔比了。我并不是从小擅长编码的神童型选手,直到大学才开始接触编程。如果说今天有什么成就,靠的也更多是后天的【持续】投入而并非先天的天赋。相信只要持续获得正反馈而慢慢积累,量变总是能带来质变的。
必须重复一遍, 我为我的观点与言论负责,但我不认为我的观点就是正确的
。相反地,我在很多领域的理解与认识都需要持续进步。对我的文章,有不同意见都很欢迎指出,唯一的要求是希望能保证基本的尊重。
我相信,每个人都有权追求自己的人生价值,每个人都能找到自己贡献社会的方式。对目前的我来说这种方式是 Web 前端技术, 但每个人都值得探索属于自己的方式
——「愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。」
在今天这个时代,也许我和我的《前端随想录》哪天也会像网络上的无数前例那样,突然销声匿迹于一片不可抗拒的黑暗之中。
但我仍然愿意付出点滴的努力,希望这世界能多少记得我曾经来过。