codedump的电报频道
前往频道在 Telegram
5 219
订阅者
+124 小时
+47 天
+6730 天
帖子存档
5 219
#八卦
《当年 1.6 亿美金估值的公司—— Digg 是如何被一句 Python 函数可变默参毁掉的》
来源于对文章《Digg's v4 launch: an optimism born of necessity.》的整理。
这个故事也太戏剧了。
按说查一个Python服务的内存泄露应该不难,另外即便一时半会解决不了也还是有别的办法顶一下的,说到底是技术不行?
5 219
#杂
《详解 OpenDAL |Data Infra 研究社第三期》
由于Databend是一个面向多云环境的云数据库,所以数据需要支持保存在不同云厂商里,另外测试的时候也有类似于写入本地fs等的需求,于是需要一个通用的数据读写层来抽象数据在不同存储介质里的读写操作,这个项目就是OpenDAL(DAL,“Data Access Layer”的缩写)。这个项目有挺高的社区活跃参与度,比如前两天有人提交了读写ftp的支持。
本期的Data Infra 研究社OpenDALxuanwo老板将介绍OpenDAL的实现等内容。
5 219
#杂
这个动图通过物理的实验演示了一下有的时候最短路径并非最快路径。
数学里有一个结论“两点之间直线最短”,可是注意了这个说法里只说“最短”,并没有说一定“最快”。
以前总以为很直接的做一些事情能够最快得达到目的,因为背后有这个直线最短的理论支撑(理工傻直男)。
经历很多捶打之后,慢慢理解一些事情要圆滑、妥协、曲线前进,因为假如你非得走所谓的“直线”,路上的阻碍不见得一定比绕点弯路就少。
回过头看这个动图里的演示,才恍然大悟:其实“长短”更多是一个数学上的概念,只交待了距离维度而没有时间维度,“快慢”则是物理上的概念。用各自领域来解释都没错,错在了自己看问题的维度不够。
5 219
Repost from 硬核小卒
https://github.com/rui314/chibicc
一个C语言编译器项目。为了让读者可以从头到尾清晰地理解项目演进的过程,作者非常用心地编排每一次的commit。虽然这是一个挺“玩具”的编译器,但是已经可以对一些项目进行编译了,这些项目包括Git、SQLite、libpng,它甚至也已经实现了自举。
挺有意思的。
5 219
#科普视频
前阵子推荐了腾讯视频上《青年理工工作者生活研究所》这个节目,今天在B站发现其中两部视频:
《万字解析:今天的游戏技术究竟发展到了什么程度?》
《为了搞明白美颜这件事,我给自己做了 5 张脸》
这两部视频是关于游戏技术和人工智能技术在美颜方面应用的很好的科普视频。
5 219
#杂
程序员始终逃不过所谓的“35岁年龄问题”(有可能这个问题过了几年又变成了40:)
我今年已经40了,而且:
* 我是从大学一毕业就开始做程序员的。
* 从来没有做过一天的管理,从来的身份都是“工程师”,未来也不想转方向。
* 我非常喜欢写代码,未来打算一直写代码到退休。
尽管如此,仍然有很多其他人可能关心的问题,我解决(解答)不了:
* 如何做到“财富自由”?(我工作这些年也没有达到,还欠了一屁股的债,惭愧:)
* 程序员如何转管理?(没想过,和代码打交道比跟人打交道轻松多了:)
* 如何成为“技术大牛”?(别问我,我不是,你认错人了:)
* 如何确保学习的技术永不过时?(空气凝固了:)
....
以上这些别人关注的问题,有些我不关心,还有一些确实是能力所限解答不了。
而且我还有可能将来某天面对这样现实的问题:
* 假如某天我失业了,如何确保一定能再找到一份程序员的工作?
* 新知识你要是学不动了,该怎么办?
....
无法回答。
我对这些现实问题的处理方式就是等真的有问题了再来处理吧(懒惰是程序员的美德之一)。现阶段能做的就是做好工作、在所在领域保持学习。
我这样的“大龄、非成功程序员样本”,可能对陌生人的意义,更多的在于:当你开始问所谓的“35岁年龄问题”时,不妨可以看看我这个“异常样本”。
虽然是“异常样本”,虽然可能不太具备参考价值,也不是“标准答案”,不具备“可复制性”,但是由于我相当多的输出都在网上可见,所以总归可能对所谓的“35岁年龄问题”提供另一种角度和思考。
至于什么角度、如何思考,这就见仁见智了。我只提供事实,不参和观点和评论。
以上。
5 219
#杂
我记得大概是去年这个时候,由于前公司要重构一下存储元数据的存储引擎,开始研究怎么实现一个轻量级的存储引擎。
当时想研究一下市面上的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),等等。
回头来看,很多我后来看来获得技术上很大成长的时候,都是这种独立、深入研究某个领域之后带来的:身边没人请教、自己找答案、深入阅读文档、代码,等等。这样的经历多了以后,对这种压力似乎也感到适应,对压力之后的收益也清楚,甚至对解决这些难题有一些期望了。
5 219
#杂
去年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内存),这样编译速度更快,这些编译工具也就能更快的提示我了。
5 219
#分布式
jepsen官方教程,一步一步讲授如何给etcd服务写jepsen测试:
https://github.com/jepsen-io/jepsen/tree/main/doc/tutorial
5 219
#播客
《EP 15. 【硅谷连线回放】中美基础软件与开源创业市场:实践,异同与机会》
这个叫“OnBoard!”的播客节目,播主是投资机构专注基础软件领域的投资人,所以聊到的领域和我现在工作的领域很接近,这一期请到了PingCAP的创始人一起聊基础软件的创业等话题。
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
