使用通义灵码,参与开源项目全程纪实

作者:shuipin100-34561

背景

缘起 OceanBase。作为一个充满好奇心的 DBA,一直一来想探寻数据库的内部世界。开源为我们这些好奇的猫打开了一扇新世界的大门。OceanBase 作为分布式关系型数据库的排头兵,自然进入了我的优选名单。起初走进了 OceanBase [ 1] 的世界逛了一圈,这对于一个没有 C++ 实战经验的小白来说简直要劝退了。

为寻找突破点联系到了 hnwyllmm(github 账号)大神,他建议有 DBA 背景的小伙伴可以从 obdiag 项目 [ 2] 入手。OceanBase Diagnostic Tool(obdiag)是一款专门为 OceanBase 打造的敏捷诊断工具,功能包括诊断信息收集、分析、巡检,可以在 OceanBase 集群不同的部署模式下(OCP,OBD 或用户根据文档手工部署)实现一键执行。obdiag 项目是 python 语言写的,比较容易上手。找到了切入点,那就走起打怪升级。

远程开发环境搭建

欲学剑法,先要找到“宝剑”。欲学游泳,先要找到“泳池”。欲学书法,先要找到“笔墨纸砚”。欲学开发,先要搭建起“开发环境”。obdiag 目前是运行在 Linux 环境中的,使用 windows 环境的我采用了远程开发方式,即把开发环境部署在虚拟机的 Centos 系统中,然后使用 VSCode 远程连接 Centos 进行开发。

1. 虚拟环境下搭建 Centos 系统

我使用的是 VMware workstation + Centos7.9 的系统环境。在 VMware workstation 中搭建 Centos 的文章有很多,这里附上一个详细文章,供参考(在VMware 中安装 CentOS7(超详细的图文教程) [ 3] )。

2. Centos 系统下部署 obdiag 开发环境

obdiag 是基于 python 开发的,所以在编写代码前需要部署一个 python3.8 的编译环境,我是基于 miniconda 搭建的开发编译环境,简单易于维护。上参考文章(安装 conda 并搭建 python 环境(入门教程) [ 4] )。

接下来登录自己的 github 账号。

然后跳转到 obdiag 仓库(https://github.com/oceanbase/obdiag) 下,点击fork,这一步会将官方仓库代码克隆到自己的仓库下,今后提交代码将会基于这个克隆的代码仓库进行操作。

日常的代码拉取和贡献流程大致如下。

下载个人仓库的代码,按照下图在个人仓库找到 obdiag 仓库的 ssh 链接,并使用 git clone 命令下载到自己的虚拟环境中。

git clone git@github.com:owner_name/obdiag.git

如上参考:代码贡献流程 (yuque.com) [ 5]

3. 使用 VSCode 搭建远程开发环境

我个人比较喜欢 VSCode IDE 工具,如下就介绍一下使用 VSCode 搭建远程开发环境。

首先下载并安装 VSCode 工具,图形化下一步默认安装即可。

下载链接:Visual Studio Code - Code Editing. Redefined [ 6]

安装 remote ssh 插件。

添加远程服务器。

输入要连接的服务器及用户名。

选择一个 config 配置文件,默认第一个即可。

如果已有该机器连接,可连接一个新窗口。

打开 obdiag python 项目。

安装 python 扩展。

选择解析器并进入。

ctrl + shift + P 输入 python:select interpreter 选择解释器,这里选择 conda 创建的环境即可。

这样就可以开心的在本地开发运行在远程虚拟机里的代码了,当然代码在真实的服务器上也是一样的流程。

主角登场

部署好 obdiag 开发环境后,该如何上手呢,我的答案是需求,可以通过项目的 issue 去寻找需求,也可以和社区的小伙伴沟通交流拿到需求。我的第一个 obdiag 项目需求是给 ssh_client 包写单元测试。但是拿到这个需求后,因为不熟悉项目,还是有点无从下手的感觉,但是现在有了开发好帮手,通义灵码的出现可以大大消解我们的无助感。

那如何使用通义灵码来帮助我们呢,使用 VSCode 的小伙伴只需要安装插件即可。

1. 安装通义灵码

搜索通义灵码(TONGYI Lingma),找到通义灵码后点击安装。

重启 Visual Studio Code,重启成功后登录阿里云账号,即刻开启智能编码之旅。

2. 使用通义灵码写单元测试

在安装完通义灵码插件后,在每个功能函数上都会多一个通义灵码的 logo,点击 logo 就会显示 4 个主要功能(代码解释、单元测试、代码优化、代码注释)。

我们点击单元测试,就会生成单元测试代码,我们将测试代码复制到测试目录下,就可以进行功能代码的测试验证了。

3. 使用通义灵码写注释

同样,给代码生成注释,也是同样的流程,非常简单。

4. 使用心得

第一次生成的单测代码可能会报错,你可以把报错信息反馈给通义灵码,它会根据报错信息继续修正提供的单测代码。

当出现多次反复询问同一个问题都不能得到正确测试代码时,你可以耐心的将错误多反馈几次,它会根据错误信息一次一次修正答案。

你可以像和一位专家对话一样,不断的把自己的想法输入给通义灵码,然后根据它的回答,来修正自己的想法。

通义灵码给单测生成的注释也非常精准,可以节省大量对着字典翻译英文的时间,这个绝对会帮助到你的。

贡献代码

当给开源项目修改 bug 后,或者给开源项目贡献新特性后,可以通过提交 PR 的方式将代码提交给官方代码仓库。

首先在自己的开发环境中新建一个开发分支。

git checkout -b feature-name

提交代码到自己 fork 的仓库中。

git add .

git commit -m “add unittest for ssh_client”

git push origin feature-branch

此时在自己的 github 仓库会出现 Compare & pull request 按钮,点击它就可以提交 PR 了。

小结

通义灵码对于解决批量类、经验类等工作确实很有帮助,对于了解一个陌生的项目也非常得心应手,下次接触新项目时不妨尝试一下通义灵码,会带给你惊喜的。我借助通义灵码完成了 obdiag 项目的第一个 PR,成为了 obdiag 项目的 contributor,我知道通义灵码的能力还远没有发挥出来,今后继续探索,未来可期。

本文是作者 shuipin100-34561 参加 2024 天池云原生编程挑战赛的赛事感悟,点击此处,查看参赛原文。

相关链接:

[1] OceanBase

https://github.com/oceanbase/oceanbase

[2] obdiag 项目

https://github.com/oceanbase/obdiag

[3] 在VMware 中安装 CentOS7(超详细的图文教程)

https://blog.csdn.net/wts563540/article/details/139699520

[4] 安装 conda 并搭建 python 环境(入门教程)

https://blog.csdn.net/Linshaodan520/article/details/138734234

[5] 代码贡献流程 (yuque.com)

https://oceanbase.yuque.com/org-wiki-obtech-vh7w9r/imzr6c/erw0dtl19g08hg3z

[6] Visual Studio Code - Code Editing. Redefined

https://code.visualstudio.com/

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ComfyUI中缺失节点安装一点小小注意事项

加载工作流,遇到了红当当的缺失节点警告窗口: 在ComfyUI-Manager点击安装缺失节点,发现竟然弹出4个,而上面告警窗口中只是缺失3个,究竟是怎么回事呢,刚开始接触ComfyUI时,我也是不管3721&#x…

04 面部表情识别:Pytorch实现表情识别-表情数据集训练代码

总目录:人脸检测与表情分类 https://blog.csdn.net/whiffeyf/category_12793480.html 目录 0 相关资料1 面部表情识数据集2 模型下载3 训练0 相关资料 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码):https://blog.csdn.net/guyuealian/article/details/1…

【c语言数据结构】超详细!模拟实现双向链表(初始化、销毁、头删、尾删、头插、尾插、指定位置插入与删除、查找数据、判断链表是否为空)

特点: 结构:指向前一结点指针数据指向后一结点指针由于循环,尾结点的下一结点next指向头结点(哨兵结点)空的双向链表只有自循环的哨兵结点(头结点) 模拟实现双向链表 LIST.h #define _CRT_…

【WorldView系列卫星】

WorldView系列卫星 WorldView系列卫星是美国DigitalGlobe公司推出的一系列先进商业遥感卫星,旨在提供高分辨率的地球成像服务。该系列卫星以其卓越的成像能力,如高分辨率、快速重访时间和宽幅扫描能力,引领了地球观测技术的新标准。以下是对…

最新版C/C++通过CLion2024进行Linux远程开发保姆级教学

目前来说,对Linux远程开发支持相对比较好的也就是Clion和VSCode了,这两个其实对于C和C语言开发都很友好,大可不必过于纠结使用那个,至于VS和QtCreator,前者太过重量级了,后者更是不用说,主要用于…

110Redis 简明教程--Redis 数据类型

Redis strings 字符串是一种最基本、最常用的 Redis 值类型。 Redis 字符串是二进制安全的,这意味着一个 Redis 字符串能包含任意类型的数据,例如: 一张经过 base64 编码的图片或者一个序列化的 Ruby 对象。通过这样的方式,Redis …

双亲委派机制SPI

SPI如何破坏双亲委派机制?可根据以下概念一步步深入 什么是双亲委派机制? 双亲委派机制是Java类加载器体系中采用的一种类加载策略,旨在保证类加载的安全性和稳定性。 这一机制规定了类加载的顺序和规则,即当一个类加载器收到类…

创建单链表

一、完成单链表操作,要求节点构造类型。 1、建立学生结构体(学号,姓名,成绩) 2、循环调用头插法创建整表 3、遍历单链表 4、任意位置插入一个完整的学生信息 5、任意位置删除一个学生。 6、单链表逆置 7、单链表按照学…

SpringBoot框架在文档管理中的创新应用

第3章 系统分析 3.1 需求分析 在线文档管理系统主要是为了提高工作人员的工作效率和更方便快捷的满足员工,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑员工的可操作性,遵循…

ELK-03-skywalking监控linux系统

文章目录 前言一、下载node_exporter二、启动node_exporter三、下载OpenTelemetry Collector四、启动OpenTelemetry Collector4.1 将配置文件下载到同级目录4.2 启动 五、查看总结 前言 skywalking安装完成后,开始我们的第一个监控-监控linux系统。 参考官方文档&a…

最古早的linux发行版,已发行30年!!

最古早的linux发行版,已发行30年!! 当谈到 Linux 发行版时,大多数人首先想到的可能是像 Ubuntu、Fedora 或 CentOS 这样的知名发行版。然而,在 Linux 的世界中,还有一款古老而稳定的发行版,它以…

SIGformer: Sign-aware Graph Transformer for Recommendation---论文学习笔记

SIGIR 2024 用于推荐的符号感知图像转换器 摘要 在推荐系统中,大多数基于图的方法主要关注用户的正面反馈,而忽视了负面反馈的价值。而将正负反馈结合起来形成符号图可以更全面地理解用户偏好。然而,现有的尝试整合这俩种类型反馈的方法很…

图片压缩工具免费怎么找?归纳了这几个压缩工具

有哪些图片压缩工具免费?在数字化时代,图像已成为我们生活中不可或缺的一部分。无论是网站设计、社交媒体分享还是文件传输,高质量的图片都扮演着重要的角色。但高质量往往意味着大文件体积,这可能会导致加载速度变慢或存储空间不…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

体制内打工人收藏!5款AI写作工具,助你变成单位笔杆子~

对于初入体制内职场的新手或是日常任务繁重、难以抽身撰写文件的同事们,别再让加班的夜晚成为常态!现在,就让我揭秘几个高效公文写作宝库,它们能助你迅速掌握公文写作的精髓,海量素材信手拈来,更有快速成文…

8个高清视频素材网站,免费下载。

想要找到免费还能商用的视频素材,一定要收藏好这8个网站,高清、4K高质量,无水印,适合专业剪辑和自媒体伙伴。 1、菜鸟图库(免费商用) 视频素材下载_mp4视频大全 - 菜鸟图库 菜鸟图库网素材非常丰富&#x…

2024年AI写作工具:10款网站让你告别文章/材料创作困难!

随着AI科技的迅猛跃进,我们正步入一个前所未有的便捷时代,其广泛应用已渗透到生活的每个角落。笔者精心挑选了10款高效AI智能助手,借助这些强大工具,我们不仅能够显著提升工作效率,还能激发无限创意潜能,让…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Cloudreve云盘

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Cloudreve云盘 Cloudreve是一款开源的云存储管理系统,支持本机和第三方存储,提供用户管理、文件上传、下载、分享、在线预览等多种功能,适用于搭建个人和团队的私有云盘服务 …

【CSP】2024第二轮前的准备工作

第二轮成绩还没出,估分有希望但不高,发个帖子涨rp 1. 大纲 目前最新版本2023版NOI大纲 ,字字珠玑要细品,比如这次CSP-J第一轮就考到了格雷编码,没有经历GESP逐级洗礼的普娃哪知道这个啊。 2.在线培训 金牌教练在线…

三步教你如何让内容与众不同!

​声明:此篇为 ai123.cn 原创文章,转载请标明出处链接:https://ai123.cn/#1 在当今这个快速变化的市场中,内容的更新与维护成为了一项巨大的挑战。信息的过载导致用户对内容的“获得感”提出了更高的要求,他们不再满足…