首页 > 其他分享 >使用通义灵码,参与开源项目全程纪实

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

时间:2024-09-24 17:26:03浏览次数:7  
标签:git obdiag 通义 com 代码 开源 灵码

作者: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 [email protected]: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/

标签:git,obdiag,通义,com,代码,开源,灵码
From: https://www.cnblogs.com/alisystemsoftware/p/18429621

相关文章

  • 使用通义灵码,参与开源项目全程纪实
    作者:shuipin100-34561背景缘起OceanBase。作为一个充满好奇心的DBA,一直一来想探寻数据库的内部世界。开源为我们这些好奇的猫打开了一扇新世界的大门。OceanBase作为分布式关系型数据库的排头兵,自然进入了我的优选名单。起初走进了OceanBase[1]的世界逛了一圈,这对于一个......
  • 找到一个免费开源APP,自动搭载影像数据、地名地址API等
    找到一个免费的开源APP,代码全开源,APP里也自动搭载了影像数据API、地名地址API还有一些天气及算法API。扒了一个具体操作的教程,供大家参考。APP自助开发教程1、进入星图云开发者平台,点击登录,登录后完成开发者认证2、点击进入星图云开发者平台自助开发模块,选择APP,点击立即开始......
  • .net core开源工作流程框架elsa源码阅读之容器的理解
    官方文档:https://v3.elsaworkflows.io/这个框架的依赖注入容器,底层是靠原生的IServiceCollection,没有使用其他的三方容器;然后在这个基础上,作者进行了封装。主要是用了Module类和继承了IFeature接口的类完成了依赖注入容器的封装。Module是用来管理feature和依赖的。Module我称......
  • 腾讯混元文生图开源模型推出小显存版本,仅需6G显存即可运行
    腾讯混元文生图开源模型推出小显存版本,仅需6G显存即可运行7月4日,腾讯混元文生图大模型(混元DiT)宣布开源小显存版本,仅需6G显存即可运行,对使用个人电脑本地部署的开发者十分友好,该版本与LoRA、ControlNet等插件,都已适配至Diffusers库;并新增对Kohya图形化界面的支持,让开发者可......
  • Proxmox:开源虚拟化管理平台的强大功能与应用
    Proxmox是一个开源的虚拟化管理平台,支持KVM(内核虚拟机)和LXC(Linux容器)虚拟化。它为用户提供了一个集中的Web界面,可以方便地管理虚拟机、容器、存储和网络。Proxmox以其高性能和易用性著称,常被用于企业级环境和个人实验室。以下是一些Proxmox的主要特点和功能:虚拟化技术:KVM:支持完全虚......
  • 绘制印章的开源工具DrawStampUtils使用
    最近写了一个绘制印章的工具DrawStampUtils,具有比较完整的印章修改效果,定制化度较高,git地址(https://github.com/xxss0903/drawstamputils),也可以在npmjs中搜索DrawStampUtils即可//将要绘制的canvas组件的引用传入,还有就是对应的毫米转像素的大小传入即可conststampCanva......
  • metaflow netflix开源的数据科学ML&AI 框架
    metaflownetflix开源的数据科学ML&AI框架,类似的也有kedro,metaflow相比kedro来说对于云原生周边支持的更加友好一张图了解metaflow能力如下图,很清晰的说明了metaflow的能力,而且都是基于代码声明的说明metaflow官方文档比较详细,使用上相比kedro基于项目代码结构的模式......
  • 让人眼前一亮的开源项目「GitHub 热点速览」
    时隔两周,我又带着让人眼前一亮的开源项目回来了!告别数据线、蓝牙、WiFi和网络,只需用手机的摄像头扫描一张动图条形码(需安装应用),就能在设备间传输文件的libcimbar,一款无需联网和蓝牙的文件传输工具,仅用摄像头传输数据。用Rust编写的PostgreSQL数据库命令行管理工具rainfro......
  • 828 华为云征文|华为 Flexus 云服务器搭建 SamWaf 开源轻量级网站防火墙
    在当今数字化高速发展的时代,网络安全问题日益凸显。为了保障网站的稳定运行和数据安全,我们可以借助华为Flexus云服务器搭建SamWaf开源轻量级网站防火墙。这不仅是一次技术的挑战,更是为网站筑牢安全防线的重要举措。一、华为Flexus云服务器:强大的安全基石华为Flexus......
  • 828华为云征文|华为云Flexus云服务器X实例 基于CentOS系统镜像快速部署Laravel开源论坛
    最近公司可热闹了!大家都在为搭建博客论坛系统忙得不可开交,尤其是在选服务器这件事儿上,那叫一个纠结。同事A说:“咱得选个厉害的服务器,不然这论坛以后卡得跟蜗牛爬似的可咋办?”同事B回应道:“那可不行,这服务器就像房子的地基,得稳当。”大家七嘴八舌,讨论得热火朝天,仿佛......