拥抱开源,构建未来:王嘉树与 TDengine 的开源之旅

在当代的技术浪潮中,开源文化不仅催生了无数创新技术,也为广大技术爱好者提供了一个展示才华、相互学习的平台。我们今天采访到的这位北京邮电大学电子工程学院的研究生,就是在这样的背景下,通过开源活动不断探索、学习并实现自我突破的典型代表,他就是王嘉树。

在开源布道者、程序员 Rick 的影响下,王嘉树决定将自身学习到的学术理论与前沿技术相结合,探索开源软件世界的无限可能。而他在 TDengine 开源社区的参与,更是让这段开源之路变得丰富多彩。

初识 TDengine,一场意义非凡的讲座

“我第一次接触到 TDengine 是在一次开源布道会上,涛思数据创始人、TDengine 核心作者陶建辉老师(Jeff)受邀至北京邮电大学进行讲座。当时很多人是为了凑学分才去听的,但我却被讲座内容深深吸引,我觉得这可能是我在本科和研究生期间听过的最赞的讲座了。讲座结束后我还有幸和陶老师进行了一次深入交流,他给了我一些关于开源和计算机学习方面的很实用的建议。因为数据库的复杂性,当时我仅仅去 GitHub 上为 TDengine 点了一个 star(开源地址:https://github.com/taosdata/TDengine),没有再做更多的贡献,但感触颇深,还在博客上记录了这次经历和感想。”

博客链接🔗:https://wjsvec.github.io/2021/10/11/拥抱开源,听技术-开源讲座的一点感想/

受到 Jeff 的影响,王嘉树开始在 GitHub 上寻找合适的项目进行贡献。他选择了文档和前端方面的工作,逐渐适应并深入到开源软件的开发中。2022 年,他正式参与进 TDengine 的开源,并在开源之夏活动中扮演了重要角色。

“我在 2022 年开始关注开源之夏,在预热阶段就主动给几位导师发送了邮件,之前有过接触的 TDengine 导师对我比较感兴趣,最后也是成功申请到了 TDengine 的开源项目。”

成为 TDengine 的 Contributor,更深入理解开源精神

王嘉树的任务是为 TDengine 开发一个 Visual Studio Code 插件,以便更好地管理和查询数据库。虽然这项任务颇具挑战,但他通过勤奋学习和实践,最终顺利完成了开发,并通过 Pull Request 的方式贡献了代码。

“要知道,国外的 InfluxDB 的 VSCode 插件有十几位 Contributor,而且已经开发了两年多了,不过好在对我的要求并没有那么高,我只需要实现增删改查就可以了。当时遇到的最大的麻烦是 VSCode 插件几乎没有什么中文资料,于是只好去啃一手的英文 API 文档。我之前都是偷懒看B站的那种手把手傻瓜教程,官方文档总是望而却步。最后啃完以后发现,官方的文档其实也并不是那么难懂,理解了文档,我最后大概只用了一个半月的时间就完成了开发,也认识了社区里 review 代码的小伙伴。”

在项目完成后,王嘉树还遇到了一次意外的挑战。一位用户在深夜报告说 VSCode 插件出现了问题。他毫不犹豫地开始远程协助用户,并最终发现问题出在用户对 SQL 的理解上。这次经历不仅增强了他解决问题的能力,也加深了他对开源社区精神的理解和认同。

“TDengine 有十几个用户群,我只加了一个,那个插件每天只有几个下载量,这种正好有问题还可以遇到作者的机率还是很小的,当时觉得真的是一种非常不得了的缘分。于是我就私聊了那位群友,现场开了一个腾讯会议为他解决这个问题。虽然问题很简单,不过排查了很久,结束时已经晚上十一点多了。其实我是一个非常讨厌加班和 On-Call 的人,居然能为了一个 bug 开腾讯会议加班到深夜,现在想来也觉得有趣,或许这就是开源的魅力。”

show me your code,开源贡献是最好的简历

参与 TDengine 开源社区的经历,尽管在学术上的贡献有限,但对王嘉树的职业发展产生了巨大的影响。与公司内部的项目相比,开源项目的贡献可以直接展示在简历上,大大增加了他在求职时的竞争力。

“我之前实习的内容大多是只能在公司的内网中看到,在简历上无论怎么去写都显得单薄,毕竟大部分实习生做的功能真的很简单。在 TDengine 社区做的贡献就不一样了,我在简历上只要放一个链接,就可以实实在在的看到我所做的贡献,这种 show me your code 的风格在秋招的时候派上了大用场,相比传统的代码项目,我的简历更受青睐。”

王嘉树的开源之旅不仅是技术成长的旅程,也是个人成长和职业发展的重要途径,因此他也在鼓励更多的大学生参与到开源活动中来。他认为开源不仅能够提供宝贵的项目经验,还能够帮助大家在个人成长、团队合作和解决实际问题方面获得进步。

“对职业发展的帮助绝对是立竿见影的,去年一起参加开源之夏的同学今年拿了四个大厂暑期的 offer。很多学生找实习或者秋招苦于没有很好的项目经历,那参与开源项目就是一个绝佳的机会。而且从个人成长的角度来讲,能够接触到业界的社区也是扩展自己眼界的有效途径。我自己参与开源之夏前是一个非常社恐的人,现在遇到了社区很多热心的朋友,像是 Rick、古思为 、Shuduo Sang 等非常厉害的工程师,还有像是 Fawei 、eVaz 这样热情的社区运营,和他们一起交流不仅让我得到了飞快的成长,同时也对“开源精神”这件事也有了更加深刻的体会。”

在聊到能否推荐一些值得参与的开源社区时,王嘉树也热心表示,“TDengine 就是一个对新手相当友好的社区,GitHub 上会定期有一些 good first issue,还是用的几乎每个同学都学过的C语言。而且 PR 的 review 速度也是非常积极的,很多有商业化背景的开源项目都做不到这一点。如果是对数据库领域感兴趣的同学可以试着参与其中,一定会有所收获。”

通过这次深度采访,我们看到了一个普通大学生如何通过参与开源项目,不仅在技术上得到成长,更在职业道路上走得更远。相信王嘉树的故事一定能鼓励许多像他一样的年轻人,积极参与到开源文化中来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析常用6种分析思路(下)

作为一名数据分析师,你又没有发现,自己经常碰到一些棘手的问题就没有思路,甚至怀疑自己究竟有没有好好学过分析? 在上篇文章里,我们讲到了数据分析中的流程、分类、对比三大块,今天,我们继续讲…

【ElasticSearch】windows server 2019安装ES8.9.1 + kibana8.9.1 + IK分词器

目录 准备工作 ES Kibana IK 安装 es es访问测试 将es安装为系统服务 Kibana 配置es 运行kibana 访问测试 IK 补充 准备工作 ES8.9.1 kibana8.9.1 IK的版本最好要对应上!!! ES es8.9.1: https://artifa…

笔记 | 用go写个docker

仅作为自己学习过程的记录,不具备参考价值 前言 看到一段非常有意思的话: 很多人刚接触docker的时候就会感觉非常神奇,感觉这个技术非常新颖,其实并不然,docker使用到的技术都是之前已经存在过的,只不过旧…

vxe-table展开行嵌套子表,每个子表的数据都是接口获取,每次展开的子表的数据都不同。

我开始是这么写的 <vxe-tableref"tableRef"...:data"data">...<vxe-column type"expand" title"展开行" width"120"><template #content"{ row }"><div class"expand-wrapper"&g…

操作系统——信号

将信号分为以上四个阶段 1.信号注册&#xff1a;是针对信号处理方式的规定&#xff0c;进程收到信号时有三种处理方式&#xff1a;默认动作&#xff0c;忽略&#xff0c;自定义动作。如果不是自定义动作&#xff0c;这一步可以忽略。这个步骤要使用到signal/sigaction接口 2.…

5. 条件和递归

5. 条件和递归 本章主要话题是if表达式, 它根据程序的状态执行不同的代码. 但首先介绍两个操作符号: 向下取整除法操作符和求模操作符.5.1 向下取整除法操作符和求模操作符 向下取整除法操作符(//)对两个数除法运算, 并向下取整得到一个整数. 假设, 一个电影的播放时长为105分…

Vim 常用指令

Vim 是一款功能强大且高度可定制的文本编辑器。其高效的编辑方式使其成为许多程序员和系统管理员的首选。 1. Vim 的基本模式 Vim 具有以下几种基本模式&#xff1a; 正常模式&#xff08;Normal mode&#xff09;&#xff1a;用于浏览和编辑文本&#xff08;按 ESC 进入&am…

Java | Leetcode Java题解之第150题逆波兰表达式求值

题目&#xff1a; 题解&#xff1a; class Solution {public int evalRPN(String[] tokens) {int n tokens.length;int[] stack new int[(n 1) / 2];int index -1;for (int i 0; i < n; i) {String token tokens[i];switch (token) {case "":index--;stack…

react:handleEdit={() => handleEdit(user)} 和 handleEdit={handleEdit(user)}有啥区别

handleEdit{() > handleEdit(user)} 和 handleEdit{handleEdit(user)} 之间的区别在于它们在调用函数时的行为方式不同&#xff0c;尤其是处理函数参数和立即调用方面&#xff1a; ### 1. handleEdit{() > handleEdit(user)} - **行为**: 这是一个箭头函数&#xff0c;…

vi/vim使用命令

你是否在编辑文件时以为键盘坏了&#xff0c;为什么不能删除呢&#xff0c;为什么不能敲代码呢&#xff0c;等你初识vi&#xff0c;会觉得这个东西为什么设计得这么难用&#xff0c;这篇教程带你熟练得用上这款经典的工具 Vi 是在 Unix 系统上广泛使用的编辑器&#xff0c;Vim …

深入探索Spring Boot的自动配置机制

深入探索Spring Boot的自动配置机制 在上一篇中&#xff0c;我们介绍了Spring Boot的自动配置机制及其基本工作原理。这篇文章将进一步扩展这一主题&#xff0c;深入探讨自动配置的内部实现、常见的自动配置类、以及如何通过高级自定义来优化Spring Boot应用的配置。 1. 自动…

Unity与Js通信交互

目录 1.Js给Unity传递消息 2.Unity给Js传递消息 简介: Unity 与 JavaScript 通信交互是指在 Unity 项目中实现与 JavaScript 代码进行数据交换和功能调用的过程。 在 Unity 中&#xff0c;可以通过特定的接口和技术来与外部的 JavaScript 环境进行连接。这使得 Unity 能够利…

Python CGI 编程

Python CGI 编程 1. 引言 CGI,即通用网关接口(Common Gateway Interface),是一种重要的互联网技术,它允许服务器上的程序与客户端(通常是浏览器)进行交互。Python作为一种流行的编程语言,因其简洁易读的语法和强大的功能,被广泛用于CGI编程。本文将详细介绍如何使用…

进击算法工程师深度学习课程

"进击算法工程师深度学习课程"旨在培养学员在深度学习领域的专业技能和实战经验。课程涵盖深度学习基础理论、神经网络架构、模型优化方法等内容&#xff0c;通过项目实践和算法实现&#xff0c;帮助学员掌握深度学习算法原理和应用&#xff0c;提升在算法工程师领域…

EasyExcel文件导出,出现有文件但没有数据的问题

一开始由于JDK版本过高&#xff0c;我用的17&#xff0c;一直excel没有数据&#xff0c;表头也没有&#xff0c;后来摸索了好久&#xff0c;找了资料也没有&#xff0c;后来改了代码后报了一个错误&#xff08;com.alibaba.excel.exception.ExcelGenerateException: java.lang.…

c++【入门】求三个数的平均数

限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 小雅刚刚考完语文、数学、英语的三门期中考试&#xff0c;她想请你编个程序来帮她算算她的平均分&#xff0c;要求输入三个正整数&#xff0c;分别表示三科考试的分数&#xff0c;输出它们的平均值。 输入 一行&#xff0c;…

【抽代复习笔记】19-群(十三):奇偶置换、循环置换的几个定理及例题

定义&#xff1a; ①在Sn中&#xff0c;能够表示为奇数多个对换乘积的置换称为“奇置换”&#xff0c;能够表示为偶数多个对换乘积的置换称为“偶置换”&#xff1b; ②所有偶置换的集合记为An。 例1&#xff1a;&#xff08;1&#xff09;计算S1和S2中奇、偶置换的数目&…

代码随想录第三十七天打卡

56. 合并区间 本题也是重叠区间问题&#xff0c;如果昨天三道都吸收的话&#xff0c;本题就容易理解了。 代码随想录 class Solution { public:static bool cmp(vector<int>a,vector<int>b){if (a[0]b[0])return a[1]<b[1];return a[0]<b[0];}vector<vec…

数据中台-知识图谱平台

【数据分析小兵】专注数据中台产品领域,覆盖开发套件,包含数据集成、数据建模、数据开发、数据服务、数据可视化、数据治理相关产品以及相关行业的技术方案的分享。对数据中台产品想要体验、做二次开发、关注方案资料、做技术交流的朋友们&#xff0c;可以关注我。 1. 概述 随着…

清理Linux操作系统buff/cache缓存

清理Linux操作系统buff/cache缓存 清理页缓存 echo 1 > /proc/sys/vm/drop_caches 或者 sysctl -w vm.drop_caches1 清理目录项和inode缓存 echo 2 > /proc/sys/vm/drop_caches 或者 sysctl -w vm.drop_caches2 同时清理页缓存、目录项和inode缓存 echo 3 > /pr…