一个好的技术一定是其核心思想处处透着简单。大道至简。erlang 的世界观可以用 6 个函数涵盖,这六个函数像乐高积木一样,衍生出一个个的复杂但精美的软件系统;区块链技术核心就三点:p2p 网络,数字签名和共识算法,却诞生了人类世界最叹为观止的一场实验;在 minecraft 里,大家搭建出多姿多彩,美轮美奂的宏大世界所使用的,不过是小小的的方块。
作为一个没事瞎琢磨的中老年程序员,喜欢咬文嚼字的未秃顶理工男,喜欢上一个东西,就总想像剥洋葱那样,把其外表的纷繁复杂一点点祛除,探究内在的机理。
Notion 也不例外。当我在使用产品的过程中慢慢感受和理解 Notion 的机制后,我常常胡思乱想:如果让我从头做个 Notion 这样的软件,该如何入手?
今早起床例行冲凉,大脑还沉浸在昨夜的美梦中,目光呆呆地盯着墙上那经花洒喷头喷出的,拍到我头上又反弹到墙上的无数水珠。水珠被引力的指挥着,不断向下,不断牵引,汇集成一道道细流。莫名其妙地,我想起了 inode,仿佛阿基米德上脑,我 Eureka! 着就冲出了浴室。
在 iPad 上,我画了这样一个图:
还有一些其他(有点乱糟糟)的草图(就不拿出来丢人现眼了)。顺着这些图想下去,我尝试着回答了自己对于 Notion 实现上的一些问题。
一些粗浅的想法
首先,什么是 block?
在我看来,block 的概念非常类似 unix 文件系统中的 inode,但比 ino