今天发现网页版 Notion 才是正确打开方式
今天换到网页端发现这些毛病都没了,我常用的快捷键也都在,网页端还天然支持多 tab
不过 web 端多 tab 是一个需求。
PS:顺带说一句,现在 evernote 模仿 notion 功能,客户端也整套壳,难用之极,连 cmd+j 键都不支持了。
PS: 编辑器 SAAS 这个领域其实很微妙, 还有一个因素是离线. 很多人因为没原生所以不用 Notion, 还有很多人因为没离线不用 Notion. 很多人用了 bear 之类的东西, 但是那些又没有很好的 collaboration. 因为离线和 collaboration 两个东西放在一起就巨难做:
一般 collaboration 是用 OT 算法写的(比如 Google doc 和所有类似产品, 我不太确定 Notion 是不是已经有了, 但是如果二选一他们肯定会选 collaboration). OT 就是服务器 facilitate 所有客户端来的 event 然后修改给每个客户端 broadcast 的 event 来达到最终一致的效果. 但是这种算法的缺点就是没法离线(比如 Google doc).
另外一种 collaboration 是用 CRDT 数据结构, 是可以自结合的数据结构, 可以离线很久之后自动合并, 能保证最终一致. 但是 CRDT 的问题是每种数据结构都要单独设计, 在大量字符串上面就有一些性能体积的问题, 如何完美解决这个问题现在还是一个学术前沿话题. 之前跟 Fuchsia 系统有点关系的 Xi editor 夭折一部分原因和尝试 CRDT 有关. (不过设计师用的 Figma 的节点是用 CRDT 解决的, 节点比字符串文档单纯一些)
你说的这个原因,导致离线和协作难以实现,想知道 office365 现在是怎么解决这个问题的?
但我还是希望等今后 notion 成长起来的话,能尝试下原生客户端
我记得听内核恐慌吴涛老师讲到,这个多人编辑本身就是 cap 问题。
from: http://www.alloyteam.com/2020/01/14221/
– C Consistensy,一致性
– A Availability,可用性
– P Partition Tolerance,分区容忍性
假设 A , B 两个人同时编辑文件然后网络断了。
那么在网络分区的情况下,客户端发送请求尝试来对 A 区一个节点进行数据写入,由于 AB 区网络不通,这时候无法同步写入信息给到 B 区节点。
在这种场景下,究竟允不允许当前客户端进行数据写入呢?
1 、如果允许客户端数据写入,那么当前节点的可用性得到了保证,但是由于网络分区,所以网络不可触达,数据无法同步。因此此时是无法满足一致性,也就是分布式系统中,同时访问两个节点,可能会返回不同数据。
2 、如果不允许客户端数据写入,那么当前节点的一致性得到了保证,所有节点数据都是一致的。但是由于数据都无法写入,这时系统显然是 “不可用” 的,也就是可用性无法满足
这就是常见的 CP 与 AP 的组合。
但为什么没有提到 CA 的组合呢?为什么假设都是在允许网络分区的情况下呢?答案是这里的场景是分布式系统,如果不允许存在网络分区,那么显然每次写入数据都可以进行同步,自然一致性和可用性显然得到了保障。但这也不是分布式系统了(也就是不满足 a b 同时编辑的前提了)。