Xuanwo's Newsletter
Subscribe
RSS
Archive
Why SQL hang for exactly 940s? TCP and Async Rust!
January 24, 2024
Time for us to start another journey. We'll delve into an SQL hang issue and explore TCP and Async Rust. Along the way, we'll discover numerous helpful tools...
OpenDAL Databases Support
October 16, 2023
OpenDAL is a data access layer that allows users to easily and efficiently retrieve data from various storage services in a unified way. OpenDAL allows users...
2023-35: 从飞书导出日历到 Fastmail
August 28, 2023
在 Databend Labs,我们主要通过飞书进行日常沟通和任务协调。对于需要语音交流的会议,我们通过日历功能来统一安排时间。我个人则更倾向于使用 Fastmail,用其服务管理邮件和日程。因此,我开始考虑能否将飞书的日历同步到 Fastmail,以便在一个平台上统一管理所有日程。 理论上,这并不复杂:...
2023-24: 漩涡事件反思录
June 12, 2023
不知不觉漩涡事件已经过去两年多了,与此同时各大项目中仍在不断重演漩涡事件,正如 @jackworks_asref 最近遇到的这样: 这一期的周报想聊聊我对漩涡事件的理解和反思,并分别从项目贡献者和维护者的角度来探索可行的解决方案,希望对大家有所助益。 什么是漩涡事件? 2021-02-01,我向...
2023-21: 我的 1Password 密钥管理实践
May 27, 2023
这期周报分享我的 1Password 密钥管理实践,主要内容包括常见的密码管理,SSH/Shell 集成和 CI/CD 应用。 这些实践应当同样适用于 bitwarden 等服务。 密码管理 常见的 SaaS 服务密码管理直接使用 1Password 跨平台客户端创建即可,我个人会遵循如下原则:...
2023-18: 将 OpenDAL KV 性能提升 1000%
May 7, 2023
这期周报分享一个 OpenDAL 的低垂果实:通过去除额外的复制开销将 OpenDAL KV 性能提升 1000%! 背景 OpenDAL 在很久之前增加了 Kv Adapter:通过将 Key-Value 存储后端的常用 GET/SET 操作抽象出来以大幅度简化对接一个 kv service...
BeyondStorage: why we failed
March 31, 2023
我在 2021 年度总结 中提到过败走青云的故事。当时,我充满怨气地将项目失败归咎于与公司利益相冲突,留下一堆似是而非的空洞总结。现在一年多过去了,我开始了新的征程,是时候再回顾当时的失败原因、反思并从中学习到经验。 背景 BeyondStorage...
2023-09: 我是如何构建 backon 的?
March 3, 2023
backon 是一个 Rust 错误重试库,今天这篇文章旨在跟分享我在实现它的过程中一些技巧~ 缘起 OpenDAL 实现 RetryLayer 时需要提供一种 backoff 机制,以实现指数退避和 jitter 等特性。虽然我已经通过简单的搜索找到了...
2023-07: 一些里程碑
February 20, 2023
这一期的周报简单总结一下最近开源工作上的一些进展和对未来的展望~ Rebirth of Sccache 在 @sylvestre 的邀请下,我成为了 Sccache 的维护者之一。 在过去的三个月中,我主要做了以下贡献: 存储后端迁移至 OpenDAL 重构了 GHA Cache 服务的实现 增加了 WebDAV...
2023-06: OpenDAL 的文档即代码实践
February 12, 2023
最近做了一个很有趣的尝试,将 OpenDAL 的用户文档彻底合并到代码中,不再区分单独的用户文档和 API 文档。经过几个版本的迭代,我发现这个实践效果确实很不错,今天这篇文章主要就是分享为什么要把文档视为代码,它的好处都有哪些以及在 Rust 项目中该如何执行。 问题 OpenDAL 是一个使用 Rust...
2023-04: 为什么你该试试 Sccache?
January 28, 2023
Sccache 是由 mozilla 团队发起的类 ccache 项目,支持 C/CPP, Rust, nvcc 等语言,并将缓存存储在本地或者云存储后端。在 v0.3.3 版本中,Sccache 加入了原生的 Github Action Cache Service 支持;在后续的 v0.4.0-pre.6...
2022 年度总结: 我的多重宇宙
January 1, 2023
今年的工作和生活都发生了很大的变化,感觉自己像是穿梭在多重宇宙中。大多数时候充满了焦虑与不安,但是又穿插着些许平淡与甜蜜,总得来说还算过的不错。相比于在过去的一年中失去了太多东西的人们,我应当感到知足与幸运。 代码 今年加入了 Datafuse Labs,开始了我全职开源的第一年。...
2022-50: Sccache 和 OpenDAL 的故事
December 15, 2022
最近特别开心! 在周报 2022-45: 使用 sccache 加快 Rust 编译速度 的末尾,我提到希望能把 sscache 的存储后端替换为 opendal: 我给上游提交了一个 proposal: Use opendal to handle the cache storage...
2022-47: Databend 文档的 i18n 实践
November 29, 2022
Databend 的社区官网使用 Docusaurus 构建,托管在 Vercel 上,并使用 Crowdin 进行自动化的 i18n。 这套 SaaS 服务栈有如下好处: 源代码中只需要维护源文件,不需要额外存放翻译后的文件 翻译与源文件始终保持一致,不需要处理过期的翻译等问题...
2022-46: OpenDAL 的错误处理实践
November 22, 2022
最近在为 OpenDAL 实现新功能的时候越来越感觉现有的错误处理逻辑能力捉襟见肘,于是花了不少时间重新设计了一套全新的错误处理逻辑。今天这篇周报就跟大家分享一下我在 OpenDAL 中的错误处理实践,希望为大家在 Rust 中构建自己的错误处理体系提供一些思路。 上下文 任何实践都不能脱离具体的场景。...
2022-45: 使用 sccache 加快 Rust 编译速度
November 15, 2022
sccache 是由 mozilla 开发的编译缓存工具,设计思路是作为一个编译的 wrapper,把编译产物放在保存到存储后端上,尽可能避免重复编译,从而加快整体的编译速度。sccache 支持的编译后端包括 gcc, clang, MSVC, rustc, NVCC 等等。以 Rust...
2022-44: 流浪小猫与自由长毛象
November 8, 2022
categories: Daily date: 2022-11-07T01:00:00Z title: “2022-44: 流浪小猫与自由长毛象” 流浪小猫 寒冷冬夜,遛狗路上。...
2022-43: 工作中的自我调适
October 31, 2022
categories: Daily date: 2022-10-31T01:00:00Z title: “2022-43: 工作中的自我调适”...
2022-42: OpenDAL Key-Value Adapter
October 25, 2022
OpenDAL 在最近的版本中增加了 Adapter 的概念,将 OpenDAL 支持的服务范围从传统的文件系统和对象存储扩展到了诸如 Redis,Moka 等 Key-Value 存储服务上。今天这篇周报就介绍一下我们为什么要增加这个抽象,它解决了哪些问题,以及社区现在的进展。 背景 OpenDAL...
2022-41: Rust Drop 踩坑分享
October 16, 2022
Rust 使用 RAII (Resource Acquisition Is Initialization) 来管理资源:对象初始化会导致资源的初始化,而对象释放时会导致资源的释放。 以 Mutex 为例: { let guard = m.lock(); // do something } // guard...
2022-38: Iteration 22 汇报
September 25, 2022
Iteration 22 从 9/12 开始到 9/25 结束,为期两周。这个周期我的主要工作是删代码: 经过了几个版本的迭代之后,Databend 已经完成了 New Executor,New Planner 的重构,目前正在进行 New Expression。伴随着对 JOIN...
2022-37: 基于 Github 的公开工作流程
September 16, 2022
在 2021 年度总结 中,我首次宣布了公开工作的尝试:Xuanwo's Work。当时 Github Projects 本身在 Beta 中,缺乏周边的 API 支持,功能不完善。而且我也是首次尝试公开工作流程,因此没有过多的介绍我是如何使用,如何管理的。在九个月之后,Github Projects...
2022-36: 为 OpenDAL 增加 IPFS 支持
September 8, 2022
最近在社区同学 @xprazak2 的帮助下为 OpenDAL 增加了 IPFS 支持。 具体的来说是两个 Service: ipfs: IPFS HTTP Gateway 支持 ipmfs: IPFS Mutable File System 支持 其中,ipfs 基于 HTTP Gateway 提供了 read...
2022-33: 电脑坏了之后
August 25, 2022
在一次 cargo bench 之后,电脑突然黑了。 问题定位 之前也突然这样关机过几次,没觉得是个事儿,喝了一口咖啡之后再次按下了开机键。但是在闪过了 Lenove 的 Logo 之后,电脑再次自动关机了。反复尝试多次后,发现连 BIOS 都进不去。这下我知道大条了,肯定有某个组件坏掉了。主板自检能过,应该不是...
2022-32: Github 实用小技巧
August 15, 2022
今天跟大家聊聊我经常使用的 Github 实用小技巧: 引用 Github Issues/PR/Discussion 使用 Fix / Close 来关联一个 Issue 可折叠的区块 Draft / Ready for review 请求 Review 引用回复 引用 Github...
2022-31: Databend 的工程效率实践
August 8, 2022
工程效率对任何工程师团队的重要性都不言而喻:优秀的工程效率实践能够帮助团队更大程度发挥潜能,更高效地进行产品迭代;而低劣的工程效率模仿往往会让团队负重前行,每天都痛苦不堪,最终在沉默中燃尽所有的热情。 出于个人兴趣,我在每家公司都参与过工程效率相关的工作:在青云的时我推动了整条存储产品线 Golang 版本管理向...
2022-30: 如何维护一个开源项目
July 31, 2022
之前跟大家聊了很多如何参与一个开源项目,今天跟大家聊聊如何维护一个开源项目。...
2022-29: 在疫情期间得感冒
July 25, 2022
在这个魔幻的时代,感冒发烧的后果非常严重。...
2022-26: 哑巴英语首次开口
July 4, 2022
Iteration 16 从 6 月 18 号开始到 7 月 3 号结束,为其两周。这个周期有意思的事情不少,其中印象最深刻就是哑巴英语首次开口的经历。 与 Mergify 的采访 Mergify 是一个 Pull Request 自动化工具,主要的功能包括 Auto Merge,Merge Queue,PR...
2022-25: 开源当以上游优先
June 27, 2022
上游优先(Upstream First) 是开源协作中的重要理念,今天就结合实例来聊一聊为什么要采用上游优先以及上游优先该怎么做。 上游优先...
2022-24: 开源,无禁止即可为
June 20, 2022
尽管我们经常说代码贡献并不是唯一的开源贡献方式,参与讨论,Review RFC 也是参与开源的良好途径。但是很多同学仍然会有疑虑:我不是项目的 Maintainer/Committer/Reviewer,我有资格 Review 别人的 PR 吗?本文以我在 envd 中的实践来阐述这样的观点:开源,无禁止即可为。...
2022-23: 新轮子 globiter 和一些想法
June 13, 2022
这周诞生了一个很有意思的想法,如果 databend 能够支持这样的 query: COPY INTO books FROM 's3://databendcloud/loaddata/books.csv' file_format = (type = 'CSV' field_delimiter = ','...
2022-22: 为 Databend 实现压缩支持
June 6, 2022
Iteration 14 从 5/21 开始到 6/4 结束,为期两周。这个周期主要在做 Databend 的压缩支持,具体的来说是支持如下功能: 支持读取 Stage/Location 中的压缩文件 copy into ontime200 from '@s1' FILES =...
2022-21: 远程工作的光谱
May 30, 2022
随着疫情的不断延续,远程工作已经不再是新鲜事物。对绝大多数公司和团队来说,远程工作已经不再是 Yes/No...
2022-20: Iteration 13 汇报
May 23, 2022
Iteration 13 从 5/7 开始到 5/20 结束,为期两周。这个周期成功合并了不少之前提交的 PR,感觉非常有成就感。 difftastic difftastic 是一个使用 Rust 开发的能理解语义的 diff 工具。 在这个周期中,我合并了两个 PR: fix: Bad padding of...