如何用通义灵码助力项目开发 | 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.mzph.cn/web/60605.shtml

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

相关文章

网络安全,文明上网(2)加强网络安全意识

前言 在当今这个数据驱动的时代,对网络安全保持高度警觉已经成为每个人的基本要求。 网络安全意识:信息时代的必备防御 网络已经成为我们生活中不可或缺的一部分,信息技术的快速进步使得我们对网络的依赖性日益增强。然而,网络安全…

实时数据研发 | Flink技术栈

下周要开始接触一些实时的内容了,想来是很幸运的,这是我在新人培训上提问过技术前辈的问题:“想学习实时相关技术,但是部门没有类似的需求,应该如何提升?”当时师姐说先用心去学,然后向主管证明…

Spark SQL 之 QueryStage

ExchangeQueryStageExec ExchangeQueryStageExec 分为两种

探索 RocketMQ:企业级消息中间件的选择与应用

一、关于RocketMQ RocketMQ 是一个高性能、高可靠、可扩展的分布式消息中间件,它是由阿里巴巴开发并贡献给 Apache 软件基金会的一个开源项目。RocketMQ 主要用于处理大规模、高吞吐量、低延迟的消息传递,它是一个轻量级的、功能强大的消息队列系统&…

设计模式之 责任链模式

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,旨在将多个处理对象通过链式结构连接起来,形成一条处理请求的链条。每个处理对象都有机会处理请求,或者将请求传递给链中的下一个对象。这样&#x…

Flink-Source的使用

Data Sources 是什么呢?就字面意思其实就可以知道:数据来源。 Flink 做为一款流式计算框架,它可用来做批处理,也可以用来做流处理,这个 Data Sources 就是数据的来源地。 flink在批/流处理中常见的source主要有两大类…

python开发之Linux

文章目录 1. 基础2. 进阶链接压缩/解压缩 文件权限用户远程操作编辑文件软件安装 1. 基础 # 查看当前目录下文件 ls# 查看当前目录 pwd# 清除界面内容 clear# 切换目录 cd# 创建目录 mkdir# 创建文件 touch 文件 vi 文件# 强制删除 rm -rf # 复制文件 cp 复制文件 复制文件路径…

【数据结构】七种常用排序总结

一、七种排序及其讲解 以下为七种排序的讲解: 【数据结构】插入排序——直接插入排序 和 希尔排序 【数据结构】选择排序——选择排序 和 堆排序 【数据结构】交换排序——冒泡排序 和 快速排序 【数据结构】归并排序 —— 递归及非递归解决归并排序 二、排序的…

计算机网络(14)ip地址超详解

先看图: 注意看第三列蓝色标注的点不会改变,A类地址第一个比特只会是0,B类是10,C类是110,D类是1110,E类是1111. IPv4地址根据其用途和网络规模的不同,分为五个主要类别(A、B、C、D、…

HashMap底层原理

jdk1.8之后hashmap底层结构 jdk1.8之后,是哈希表数据结构,也可以说是数组链表或红黑树,下图是没有添加数据的一个hashmap。 现在开始添加数据,看下面具体步骤 put操作 如下,我们来简单看看hashmap的put源码&#xff…

【GD32】(三) ISP基本使用

0 前言 有一块GD32的板子不知道为啥用着用着就下载不了程序了,没办法,只能另寻他法。作为STM32的平替,GD32的功能和STM32基本是一致的,所以也可以使用ISP来下载程序。于是就开始复活这块板子。 1 BOOT模式 对于熟悉STM32开发的人…

摄像机视频分析软件下载LiteAIServer视频智能分析平台玩手机打电话检测算法技术的实现

随着科技的不断进步,摄像机视频分析软件的发展已经为我们的生活带来了许多便捷。其中,LiteAIServer视频智能分析平台的玩手机打电话检测算法技术尤为突出,它利用先进的图像处理和人工智能技术,能够自动识别并监控视频中的玩手机或…

推荐几个 VSCode 流程图工具

Visual Studio Code(简称VSCode)是一个由微软开发的免费、开源的代码编辑器。 VSCode 发布于 2015 年,而且很快就成为开发者社区中广受欢迎的开发工具。 VSCode 可用于 Windows、macOS 和 Linux 等操作系统。 VSCode 拥有一个庞大的扩展市…

学习Prompt Turning

传统的微调因为代价很高,而且一旦权重很大,这种fine 微微的意思是调不动模型的,所以需要这种提示词调 mindnlp直接有 peft config peft_config PromptTuningConfig(task_type“SEQ_CLS”, num_virtual_tokens10) 方便我们进行prompt tunin…

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)

在当下, 日益发展的时代,宠物的数量应该均为稳步上升,在美国出现了下降的趋势, 中国 2019-2020 年也下降,这部分变化可能与疫情相关。需要对该部分进行必要的解释说明。 问题 1: 基于附件 1 中的数据及您的团队收集的额…

若依-一个请求中返回多个表的信息

背景 主表是点位表关联子表 需要知道对应 合作商的信息关联子表 需要直到对应 区域的信息关联子表 需要直到对应 设备数量 实现的方案 关联实体相关的标签

AWTK-WEB 快速入门(1) - C 语言应用程序

先安装 AWTK Designer 用 AWTK Designer 新建一个应用程序 2.1. 新建应用程序 这里假设应用程序的名称为 AwtkApplicationC,后面会用到,如果使用其它名称,后面要做相应修改。 在窗口上放置一个按钮将按钮的名称改为 “close”将按钮的文本改…

客户流失分析综述

引言 客户流失这个术语通常用来描述在特定时间或合同期内停止与公司进行业务往来的客户倾向性[1]。传统上,关于客户流失的研究始于客户关系管理(CRM)[2]。在运营服务时,防止客户流失至关重要。过去,客户获取相对于流失…

PDF内容提取,MinerU使用

准备环境 # python 3.10 python3 -m pip install huggingface_hub python3 -m pip install modelscope python3 -m pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com下载需要的模型 import json import osimport requests from huggingface_hub…

Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍

Kafka:分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析:从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…