技术,生活,随看 \随转
#杂
“亲眼看着 databend/datafuse/fuse-query 先从豆瓣广播上的一个个想法变成了代码然后变成了产品最后变成了公司,当时还是豆瓣广播重度用户的我天天在豆瓣广播上追 @BohuTANG
的关于数据库的想法,时隔几年后偶然在 GitHub 上看到了 databend,还是很震惊的”

https://twitter.com/yetone/status/1697072792305610931
#杂
以前看某网红数据库的Raft实现,本质是一个没有Term概念的玩具版,一个Raft实现没有term,最后一定会出各种问题,实际线上也证明了这一点。

但是即便如此,也并没有影响这个数据库产品最后拿到投资,有了钱之后,就可以招更厉害的人做更好的实现,还能招更多的人擦这个屁股,是不是玩具版已经不那么重要了。投资人信了这个故事,从投资人那里拿到的钱也让新来的人愿意加入。

我想起以前和一个中学同学吃早餐,彼时他想约同学打麻将,于是分别给甲、乙、丙另外三人都打了一通电话,核心内容就是:三缺一,就差你了。于是这就凑齐了一桌麻将。

这两个故事的共同点是:跟不同的人说不同的故事,最后把这些不同的资源攒在一起,做自己的事情,马云、贾跃亭都具备这种讲故事攒资源的能力,最后就看这些个故事,能不能成功的收尾了。

除了这些以外,我还想表达的是:如果方向找对了,中间一些实现细节的纰漏,如果不是致命性的,实际不是最大的问题,投资人也肯定不会去看细节,更多看方向。反过来说,也正是因为大方向正确,小细节存在问题,才给了其他人加入、投入资源进一步改进的机会,如果什么都是完备的,这就不能被称为“风险投资”。动态的来看,一时的问题只要不影响方向的正确,如果靠继续投入资源能解决,这就不是太大的问题。技术人,就不要太纠结于细节而忘记方向,以至于局限在自己的专业领域,忘了抬头看看。
#杂
在Mac上装了一个Runcat app,可以监控内存、硬盘、CPU等系统资源的使用。
比较好玩的是,旁边有一只小猫咪,CPU越忙跑得越快,一般CPU飙到90%以上的时候就是在编译Rust的时候。
#杂
偶然在推上看到有推友讨论深入理解UNIX系统内核》这本书,译者之一的李雨正好是我之前的同事,他的故事也比较“传奇”。

中专学历出身(上世纪90年代中,因为好的中专包工作分配,还能去当时还挺吃香的事业单位,所以有好些成绩好的初中毕业生初中毕业以后选择了读中专,李雨就是这种情况),后来中专毕业之后,到运营商工作,从事入户安装网络之类的工作。不知道咋回事开始对刚刚兴起的Linux感兴趣,于是就开始自学编程,加入一家当时在中国做开源Linux桌面系统的公司,一步一步搞起了Linux,后面又开始接触Linux内核编程。

再后来,到了淘宝刚组建的Linux内核组工作正儿八经开始了Linux内核编程相关的工作,好像最后做到了阿里P8级别。华为开始组建自己的OS内核实验室之后,跳到华为从事自主OS内核的开发。

以“华为 李雨”为关键字,能在网上搜到他的一篇PPT

他的故事又(为什么我说“又”)是一个“异常样本”,但在我看来样本提供的就是各种“可能性”。
#杂
我记得大概是去年这个时候,由于前公司要重构一下存储元数据的存储引擎,开始研究怎么实现一个轻量级的存储引擎。

当时想研究一下市面上的B+Tree版本的存储引擎,可是有的项目很大(Innodb、WireTigger等),有的项目就是个玩具,只能演示原理做不到生产级别。这段时间可以说压力很大,印象最深的是当时去北京团建外出到景区,当天凌晨有世界杯亚洲区预选赛澳大利亚对中国,睡不着就一边看代码一边听比赛。

这时候偶然看到的一个精简的2.5版本的sqlite btree库,只有几千行代码,这个简单的实现打开了理解生产级B+Tree实现的大门。

在这之后就是“顺势”看了更高版本的sqlite btree实现,这些故事都写在了:sqlite3.36版本 btree实现(零)- 起步及概述》

仅就“生产级B+Tree”实现而言,sqlite的实现虽然还是有各种问题:比如效率不高等,但是都向我展现了总体的实现思路,后面再看这方面的实现也有了基础,比如今年研究了ARIES这篇论文,最近还在看BW-Tree的论文。

现在一年时间过去了,我又开始探索一个新的领域:Jepsen,想在项目里使用上这个项目来验证我们系统的实现,初期仍然跟以往自己独立研究一些问题一样遇到很多困难,因为太多新的知识点没有接触过:Clojure、模型检验(Model checking),等等。

回头来看,很多我后来看来获得技术上很大成长的时候,都是这种独立、深入研究某个领域之后带来的:身边没人请教、自己找答案、深入阅读文档、代码,等等。这样的经历多了以后,对这种压力似乎也感到适应,对压力之后的收益也清楚,甚至对解决这些难题有一些期望了。
#杂
去年12月因为新工作要使用Rust,于是买来两本Rust编程的书开始学习:

Rust权威指南》Rust程序设计》

我记得当时离职之后有个一周左右的空窗时间,就把这两本书看了个大概,直接到新工作开始干活,边干边加深对Rust的理解。

前两周整理出给多抓鱼的闲书,于是把第一本出掉留下了第二本,正好今天推上一位朋友晒图说在多抓鱼刚好收了我出的这本书。

我回想了一下就学习一门知识的步骤:

1. 找一两本这个领域的书籍来阅读。这个流程不能太长,尽量控制在一个月以内,也不要求面面俱到。这个阶段的目标是:对这门知识的大体结构有了了解,掌握最常用的用法。

2. 上手实践。遇到有难以理解掌握的知识就累积起来,找一个大块的时间做一个总结归纳。我的周刊里有写过Rust并发相关的一篇文章,就是这第二步的总结:《周刊(19期):Rust并发安全相关的几个概念()

3. 了解这个知识领域常用的搜索工具,知道在哪里可以快速找到答案,以Rust而言最好的工具就是浏览器插件:Rust search extension

4. 有了知识体系、实践、知道怎么搜索,这时候实际上书的重要性进一步下降了,因为很多时候我已经知道怎么查找答案了,这也就是为什么会把这本书二手出掉的原因之一,另一个原因是对比起《Rust程序设计》来说,权威指南有点浅了,所以我宁可先留着《Rust程序设计》。

当然回想起来,能快速使用Rust开始干活,也是拜其他工具所赐:

* Rust Analysis插件、Rust编译器都能给出更好的报错信息,“教”我如何写好Rust代码,出错的时候告诉我哪里错了该怎么改。
* 我换了性能更高的笔记本(M1、64G内存),这样编译速度更快,这些编译工具也就能更快的提示我了。
 
 
Back to Top