codedump的电报频道
4.48K subscribers
152 photos
4 videos
2 files
627 links
发布个人博客(主页 codedump.info)、想法、推荐等。RSS订阅地址:https://rsshub.app/telegram/channel/codedump_notes,过往汇总搜索可以到:https://app.shokichan.com/c/tg/codedump_notes。
Download Telegram
Forwarded from 硬核小卒
https://github.com/rui314/chibicc

一个C语言编译器项目。为了让读者可以从头到尾清晰地理解项目演进的过程,作者非常用心地编排每一次的commit。虽然这是一个挺“玩具”的编译器,但是已经可以对一些项目进行编译了,这些项目包括Git、SQLite、libpng,它甚至也已经实现了自举。

挺有意思的。
👍23
This media is not supported in your browser
VIEW IN TELEGRAM
#杂
这个动图通过物理的实验演示了一下有的时候最短路径并非最快路径。

数学里有一个结论“两点之间直线最短”,可是注意了这个说法里只说“最短”,并没有说一定“最快”。

以前总以为很直接的做一些事情能够最快得达到目的,因为背后有这个直线最短的理论支撑(理工傻直男)。

经历很多捶打之后,慢慢理解一些事情要圆滑、妥协、曲线前进,因为假如你非得走所谓的“直线”,路上的阻碍不见得一定比绕点弯路就少。

回过头看这个动图里的演示,才恍然大悟:其实“长短”更多是一个数学上的概念,只交待了距离维度而没有时间维度,“快慢”则是物理上的概念。用各自领域来解释都没错,错在了自己看问题的维度不够。
👍30
#杂
《详解 OpenDAL Data Infra 研究社第三期》

由于Databend是一个面向多云环境的云数据库,所以数据需要支持保存在不同云厂商的对象存储里,另外测试的时候也有类似于写入本地fs等的需求,于是需要一个通用的数据读写层来抽象数据在不同存储介质里的读写操作,这个项目就是OpenDAL(DAL,“Data Access Layer”的缩写)。这个项目有挺高的社区活跃参与度,比如前两天有人提交了读写ftp的支持

本期的Data Infra 研究社OpenDAL的作者xuanwo老板将介绍OpenDAL的实现等内容。
👍3
#推特
作者用推特thread简单总结阐述了现在主要的经济观念,由于这个领域我不懂,于是就只是纯转发做了标记以后看到相关的可以回顾一下。

https://twitter.com/myanTokenGeek/status/1564855220617695232
BTW:作者孟岩是以前CSDN上很出名的那位孟岩,早年知道他还是《程序员》杂志刚创办的时候,现在CSDN的 博客 还在。
👍3
#sqlite
这个叫 fly.io 的网站博客上,分享了好些sqlite的实现文章:

SQLite Internals: Pages & B-trees
How SQLite Helps You Do ACID
How SQLite Scales Read Concurrency

另外不知道是我最近研究sqlite的缘故,感觉对比以前能看到的各种玩sqlite的姿势越来越多了。
👍3
#杂
偶然在推上看到有推友讨论深入理解UNIX系统内核》这本书,译者之一的李雨正好是我之前的同事,他的故事也比较“传奇”。

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

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

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

他的故事又(为什么我说“又”)是一个“异常样本”,但在我看来样本提供的就是各种“可能性”。
👍24
#博客
《周刊(第24期):sqlite并发读写的演进之路》

本文梳理sqlite并发读写方案的演进之路,已经介绍现在看到几个可能的优化方案。

公众号:https://mp.weixin.qq.com/s/9Y1EfzM5cups9oklByAW5Q
博客:https://www.codedump.info/post/20220904-weekly-24/
邮件订阅:https://www.getrevue.co/profile/lichuang/add_subscriber
👍8
#杂
我最近特别喜欢“迭代”这个词,尽管这个词现在已经成为一众互联网黑话词中的一员,更多时候用起来都是个梗而已。

之所以喜欢“迭代”,是因为这个词自带了“时间”属性,即认为事物的当前状态只是当前的状态而已,状态可能随着时间流逝发生改变。

当说到“迭代一件事情”时,隐含了以下的情况:

* 它现在可能并不完美,还有很多问题。注意是“现在”,当说“现在”时相当于这个状态是时间序列上的一个点、一个切面上的状态;
* 可以对它进行改进,让它更好一些;
* 即它的状态并不是一成不变的,而是可能随着时间变化发生改变,且能够往更好的方向走的;
* 尽管可能通过改进会更好一些,但是仍然可能继续存在很多问题也并不完美。因为即便改进了也是将来的“现在”的某个状态;
* 尽管在各个对它改进的时间点都可能不完美,但是接受这样的状态,并且相信能继续往前推进让它更好一点。

换言之,“迭代”这个词隐含了一种:接受当前现状、对后续改动开放并且保持乐观的心理状态,并且还能够以一种流动的时间视角去看待事物的发展,而不是在一个时间节点看到某个状态就下定论。
👍15
#杂
我一个大学的同乡师兄,昨天(2022.09.15)从华为离职。从1998.09.15毕业入职华为,到24年后离职,职业生涯里只经历了华为一家公司,完整地“吃下”了这24年华为、中国经济高速发展的红利。尽管如此,过程中间还是有不少艰难的时刻,可以参看他文章中的描写。Again,这是过去24年中国、华为的另一个个人视角。

《以梦为马 不负韶华--写在离开华为之际》
👍107
#函数式编程
最近在看Clojure这门函数式编程语言,找到一个不错的对函数式编程特点的入门介绍:“命令式编程与函数式编程的主要区别:

“命令式编程关注的是"what",即"做什么",它按步骤规定程序要做的事情,并在这一过程中改变状态(计算机的内存、硬盘);
声明式编程,或者更确切些,函数式编程关注的是"how",即"怎么做",它描述处理数据的方式(定义函数),组合这些"方式",来完成对数据的处理。

命令式编程更加贴合机器的结构;函数式编程更加贴合数学与人的抽象思维。”

在线演示版本:《函数式编程入门》
PDF版本:https://www.yichenxu.me/files/talks/fp/Handout.pdf
👍19
#函数式编程

另外一份介绍函数式编程的文档Why Functional Programming Matters
👍15
#databend
《活动推荐|Data Infra 研究社第四期》

databend项目开始有使用用户了,这一期请来Dmall 数据库负责人来分享在项目中使用databend来做数据归档、节省成本的一些实践经验。
👍5
#推荐
OI(Olympiad in Informatics,信息学奥林匹克竞赛)在中国起源于 1984 年,是五大高中学科竞赛之一。OI Wiki,致力于成为一个免费开放且持续更新的 编程竞赛(competitive programming) 知识整合站点,大家可以在这里获取与竞赛相关的、有趣又实用的知识。
👏1
This media is not supported in your browser
VIEW IN TELEGRAM
#杂
在Mac上装了一个Runcat app,可以监控内存、硬盘、CPU等系统资源的使用。
比较好玩的是,旁边有一只小猫咪,CPU越忙跑得越快,一般CPU飙到90%以上的时候就是在编译Rust的时候。
👍22
#杂

我今天看sqlite btree的平衡实现,一个感想就是树形结构的实现比其他诸如链表、数组之类的结构复杂多了。

任何树形的数据结构,都要满足某种程度上的平衡,维持这个“平衡”的操作十分复杂。红黑树、B-Tree都需要在平衡被破坏之后,马上进行自下而上的平衡操作。比如截图中sqlite的负责平衡的函数,实现长达800多行,这还只是平衡算法其中的一种情况。

除此之外,中间的corner case的测试也很多,构造出测试的用例数据也难,如果不能覆盖所有场景,很难拍板说这个实现针对任何数据都是对的。

而链表之类的可就简单多了,除了头尾节点跟链表上的其他节点略有不同以外,其他都一致,这意味着边界情况很少。

这可能也是现在LSM类型的存储比Btree类型要流行得多的原因。
👍8
#三体
腾讯和Netflix分别发布了《三体》电视剧版本的预告片,预计都会在2023年面世。

先说Netflix版本。在我眼里,《三体》是带有一些东方哲学色彩的科幻片,比如罗辑最后并不是想办法消灭了三体人,而是有某种手段达成了与三体人之间的一种平衡:你不来犯我,我也不会灭你。按照以往欧美拍摄东方色彩故事上的表现,比如《花木兰》,感觉欧美人要理解带有中国色彩的故事来,不一定能说得好。再来的一个担心是,《三体》主要的故事背景都在中国,这意味着需要大量的亚裔(面孔)的演员,好像在好莱坞找到这一大批优秀的亚裔演员有点困难,我看了一下豆瓣页面上奈飞版本的演员表,基本都是欧美演员,这个就让我有点摸不着头脑了。(附:《三体》网飞官宣的12名演员,认识一下

再说腾讯版本。最大的担忧是不知道怎么讲好《三体》第一部的女主角叶文洁在文革期间的遭遇而逐渐黑化的故事。目前在国内的尺度上,WG不是不可以谈,但是怎么谈、谈到什么程度,不好把握,但是要讲好叶文洁这个人物又不得不谈,这就比较考验编剧的能力了。第二个担忧是,国内科幻剧的制作经验较少,能不能拍好一部科幻巨作,也存疑。

总而言之,在今天看到奈飞的预告片和演员表之后,我倒是觉得:奈飞版本不一定就会比腾讯版本更好、更接近于原著,等到时候上映了再看看吧。

腾讯版三体预告片 Netflix版三体预告片
👍3
#杂
我记得在微软收购了Github之后,由于有了有钱的金主爸爸,于是Github上可以随便开private仓库了。

这个对我来说最大的影响就是,我能把我阅读项目代码的注释直接放到这些私人仓库里面了。

一般来说,“阅读一个项目源代码”我有两方面的输出:
* 整理清楚思路之后写代码分析类的文章。
* 还没整理清楚的时候就直接一边看一边在代码里写注释。

第二个工作其实才是常态。这种一边读一边留注释的过程,有时候感觉就是跟作者在通过代码在交流;如果这份代码之前没什么人看过,又会有一种考古队员擦拭考古出来的东西逐步还原本来面目的感觉。

截图是最近在看sqlite btree平衡算法的实现,对我来说很难看懂,但是大部分时候,最终整理发表的那些代码分析类文章,就是这样一点一点扣细节给扣出来的。
👍39