如何用通义灵码助力项目开发 | OceanBase obdiag 项目共建实践

本文来自 obdiag 项目共建的用户分享

一、背景


我的数据库探索之旅始于OceanBase。作为一位满怀好奇心的DBA,我内心始终怀揣着对数据库内部运作机制的无尽向往。开源如同一把钥匙,为我们这些求知欲旺盛的“好奇猫”解锁了通往新知的神秘大门。在众多分布式关系型数据库中,OceanBase以其领先的技术实力,自然而然地成为我的首选之列。于是,我踏上了深入OceanBase 的旅程。这对于一个没有 C++ 实战经验的小白来说简直要劝退了。为寻找突破点联系到了 hnwyllmm(github账号)大神,他建议有 DBA 背景的小伙伴可以从 obdiag 项目(https://github.com/oceanbase/obdiag) 入手。

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(超详细的图文教程)_vmware安装centos7-CSDN博客)。

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

  • obdiag 是基于 python 开发的,所以在编写代码前需要部署一个 python3.8 的编译环境,我是基于 miniconda 搭建的开发编译环境,简单易于维护。上参考文章(安装conda并搭建python环境(入门教程)-CSDN博客)。
  • 接下来登录自己的github账号。
  • 然后跳转到 obdiag 仓库(GitHub - oceanbase/obdiag: obdiag (OceanBase Diagnostic Tool) is designed to help OceanBase users quickly gather necessary information and analyze the root cause of the problem.)下,点击fork,这一步会将官方仓库代码克隆到自己的仓库下,今后提交代码将会基于这个克隆的代码仓库进行操作。

1723450499

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

1723450529

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

git clone git@github.com:wayyoungboy/oceanbase-diagnostic-tool.git

1723450637

  • 如上参考: 代码贡献流程 · OceanBase 技术交流

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

我个人比较喜欢 VSCode IDE工具,如下就介绍一下使用 VSCode 搭建远程开发环境。
  • 首先下载并安装 VSCode 工具,图形化下一步默认安装即可。 

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

  • 安装 remote ssh 插件。

1723450714

  • 添加远程服务器。

1723450727

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

1723450737

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

1723450753

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

1723450766

  • 打开 obdiag python项目。

1723450776

  • 安装python扩展。

1723450789

  • 选择解析器并进入。 ctrl + shift + P 输入python:select interpreter选择解释器,这里选择 conda 创建的环境即可。 这样就可以开心的在本地开发运行在远程虚拟机里的代码了,当然代码在真实的服务器上也是一样的流程。

1723450802

三、主角登场 - 通义灵码


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

1. 安装通义灵码

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

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

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

enter image description here

在安装完通义灵码插件后,在每个功能函数上都会多一个通义灵码的 logo,点击 logo 就会显示 4 个主要功能(代码解释、单元测试、代码优化、代码注释)。我们点击单元测试,就会生成单元测试代码,我们将测试代码复制到测试目录下,就可以进行功能代码的测试验证了。

3. 使用通义灵码写注释

enter image description here

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

4. 使用心得

  1. 第一次生成的单测代码可能会报错,你可以把报错信息反馈给通义灵码,它会根据报错信息继续修正提供的单测代码。
  2. 当出现多次反复询问同一个问题都不能得到正确测试代码时,你可以耐心的将错误多反馈几次,它会根据错误信息一次一次修正答案。
  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,我知道通义灵码的能力还远没有发挥出来,今后继续探索,未来可期。

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

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

相关文章

idea_卸载与安装

卸载与安装 卸载1、设置 -> 应用2、查找到应用,点击卸载3、把删除记录和设置都勾选上4、删除其它几个位置的残留 安装1、下载安装包2、欢迎安装 -> Next3、选择安装目录 -> Next4、创建快捷图标和添加到环境变量5、确认文件夹的名称 -> Install6、完成安…

day01

Hm-Footer.vue <template><div class"hm-footer">我是hm-footer</div></template><script>export default {}</script><style>.hm-footer{height:100px;line-height:100px;text-align:center;font-size:30px;background-…

NLP 1、人工智能与NLP简介

人人都不看好你&#xff0c;可偏偏你最争气 —— 24.11.26 一、AI和NLP的基本介绍 1.人工智能发展流程 弱人工智能 ——> 强人工智能 ——> 超人工智能 ① 弱人工智能 人工智能算法只能在限定领域解决特定的问题 eg&#xff1a;特定场景下的文本分类、垂直领域下的对…

基于混合ABC和A*算法复现

基于混合ABC和A*算法复现 一、背景介绍二、算法原理&#xff08;一&#xff09;A*算法原理&#xff08;二&#xff09;人工蜂群算法原理&#xff08;三&#xff09;混合ABC和A*算法策略 三、代码实现&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;关键函数实现…

解决SpringBoot连接Websocket报:请求路径 404 No static resource websocket.

问题发现 最近在工作中用到了WebSocket进行前后端的消息通信&#xff0c;后端代码编写完后&#xff0c;测试一下是否连接成功&#xff0c;发现报No static resource websocket.&#xff0c;看这个错貌似将接口变成了静态资源来访问了&#xff0c;第一时间觉得是端点没有注册成…

VITE+VUE3+TS环境搭建

前言&#xff08;与搭建项目无关&#xff09;&#xff1a; 可以安装一个node管理工具&#xff0c;比如nvm&#xff0c;这样可以顺畅的切换vue2和vue3项目&#xff0c;以免出现项目跑不起来的窘境。我使用的nvm&#xff0c;当前node 22.11.0 目录 搭建项目 添加状态管理库&…

红外小目标检测

目录 背景概述算法原理演示效果核心逻辑 使用方式基础镜像配置环境直接运行 参考文献 文章声明&#xff0c;非广告&#xff0c;仅个人体验。 背景 红外图像在许多领域中都有所应用。例如军事领域中&#xff0c;经常需要通过红外成像设备对远距离的目标进行侦察和监视&#xff…

【滑动窗口】找到字符串中所有字母异位词

文章目录 找到字符串中所有字母异位词 class Solution { public:vector<int> findAnagrams(string s, string p) {vector<int> ret;int sLen s.size(), pLen p.size(), validChar;// 母串长度比子串长度还小 直接返回空vectorif (sLen < pLen)return ret;// …

nodepad配置c/c++ cmd快速打开创建项目文件

前提:下载MinGw,并且配置环境变量 点击阅读次篇文章配置MinGw 无论是哪个编译器&#xff0c;执行c文件都是经历以下步骤: 编译文件生成exe文件执行该exe文件 我们先手动完成这两部 手动编译文件使用指令 gcc {你的c文件} -o {生成文件名}生成exe文件 第二步运行exe直接点击该文…

Opencv+ROS实现颜色识别应用

目录 一、工具 二、原理 概念 本质 三、实践 添加发布话题 主要代码 四、成果 五、总结 一、工具 opencvros ubuntu18.04 摄像头 二、原理 概念 彩色图像&#xff1a;RGB&#xff08;红&#xff0c;绿&#xff0c;蓝&#xff09; HSV图像&#xff1a;H&#xff0…

Vue.Draggable使用nested-with-vmodel进行拖拽

Vue.Draggable使用nested-with-vmodel进行拖拽 1. 介绍 ‌draggable‌是一个基于Sortable.js的Vue组件&#xff0c;用于实现拖拽功能。它支持触摸设备、拖拽和选择文本、智能滚动、不同列表之间的拖拽等功能&#xff0c;并且与Vue的视图模型同步刷新&#xff0c;兼容Vue2的过…

【湿度数据处理】中国地面气候资料日值数据集(V3.0)(MATLAB全代码)

【湿度数据处理】中国地面气候资料日值数据集 处理1:数据范围筛选处理2:缺测数据筛查处理3:缺测数据插补参考基于此博客完成各要素数据提取后-【数据集处理】中国地面气候资料日值数据集(V3.0)(含MATLAB全代码),进行后续数据筛选及缺测处理,此处以湿度数据为例。 提取到的…

vulnhub靶场之corrosion靶场1

corrosion靶场1 前言 靶机&#xff1a;corrosion靶场1 攻击&#xff1a;kali 主机发现 使用arp-scan -l发现主机IP&#xff0c;这里直接查看虚拟机需要登录&#xff0c;不过官方并没有提供密码&#xff0c;所以&#xff0c;扫描出IP地址 信息收集 使用nmap查看端口及服务…

代码随想录算法训练营day46|动态规划09

买卖股票的最佳时机四 之前是最多只能完成两笔交易&#xff0c;现在是至多可以买卖k次&#xff0c;那么状态数需要定为2*k1种&#xff0c;此时&#xff0c;就要分析多种情况的递推式 找到奇偶数交替的规则即可 class Solution { public:int maxProfit(int k, vector<int&g…

前端-Git

一.基本概念 Git版本控制系统时一个分布式系统&#xff0c;是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景&#xff1a;多人开发管理代码&#xff1b;异地开发&#xff0c;版本管理&#xff0c;版本回滚。 Git 的三个区域&a…

【软件介绍】变声工具RVC本地部署使用方法

RVC&#xff08;Real-Time Voice Conversion&#xff09;软件是一种能够实现实时声音转换的技术工具&#xff0c;它允许用户改变自己或他人的语音特征&#xff0c;比如音调、音色等&#xff0c;以达到变声的效果。这种技术在娱乐、游戏、内容创作等领域有着广泛的应用。下面是一…

IntelliJ IDEA 中,自动导包功能

在 IntelliJ IDEA 中&#xff0c;自动导包功能可以极大地提高开发效率&#xff0c;减少手动导入包所带来的繁琐和错误。以下是如何在 IntelliJ IDEA 中设置和使用自动导包功能的详细步骤&#xff1a; 一、设置自动导包 打开 IntelliJ IDEA&#xff1a; 启动 IntelliJ IDEA 并打…

【CANOE】【Capl】【RS232】控制串口设备

系列文章目录 内置函数&#xff0c;来控制传统的串口设备&#xff0c;比如继电器等 文章目录 系列文章目录前言一、控制串口二、自定义相关的参数RS232Configure**函数语法****函数功能****参数说明****返回值****示例代码** 三、回调函数的使用RS232OnSend**函数语法****函数…

AX58100+STM32使用FSMC接口,运行EtherCAT Slave协议栈

目录 简介环境硬件接线MCU一侧的初始化时钟FSMC外部中断timer 协议栈生成EtherCAT SlaveSlave infomationgenerichardwareEtherCAT State MachineSynchronisationApplicaitonProcessDataMailbox OD TOOL 协议栈移植协议栈集成和错误初步解决启动协议栈 应用开发集成到TWINCAT集…

IC数字后端实现之大厂IC笔试真题(经典时序计算和时序分析题)

今天小编给大家分享下每年IC秋招春招必考题目——静态时序分析时序分析题。 数字IC后端笔试面试题库 | 经典时序Timing计算题 时序分析题1&#xff1a; 给定如下图所示的timing report&#xff0c;请回答一下几个问题。 1&#xff09;这是一条setup还是hold的timing report?…