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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
EMR Serverless StarRocks,5000CU*H 48000GB*H
性能测试 PTS,5000VUM额度
简介: 我借助通义灵码完成了 obdiag 项目的第一个 PR,成为了 obdiag 项目的 contributor,我知道通义灵码的能力还远没有发挥出来,今后继续探索,未来可期。

01 背景


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


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

02 远程开发环境搭建


欲学剑法,先要找到“宝剑”。欲学游泳,先要找到“泳池”。欲学书法,先要找到“笔墨纸砚”。欲学开发,先要搭建起“开发环境”。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,这一步会将官方仓库代码克隆到自己的仓库下,今后提交代码将会基于这个克隆的代码仓库进行操作。

image.png

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

image.png

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


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

image.png

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


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

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


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


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


安装 remote ssh 插件。

image.png

添加远程服务器。

image.png

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

image.png

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

image.png

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

image.png

打开 obdiag python 项目。

image.png

安装 python 扩展。

image.png

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

image.png

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

03 主角登场


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


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


1. 安装通义灵码

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

image.png

image.png

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


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

image.png

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


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


3. 使用通义灵码写注释

image.png

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


4. 使用心得

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


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


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


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


04 贡献代码


当给开源项目修改 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 了。


05 小结


通义灵码对于解决批量类、经验类等工作确实很有帮助,对于了解一个陌生的项目也非常得心应手,下次接触新项目时不妨尝试一下通义灵码,会带给你惊喜的。我借助通义灵码完成了 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/

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
30天前
|
人工智能 Kubernetes Cloud Native
利用通义灵码实现我的第一次开源贡献
本文将分享作者的开源之旅。
|
3月前
|
人工智能 IDE 测试技术
《AIGC+软件开发新范式》--07.通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?(1)
在AI 热度持续上升的当下,阿里云推出AI智能编码助手—通义灵码。通义灵码是一款基于阿里云通义代码大模型打造的智能编码助手,基于海量优秀开源代数据集和编程教科书训练,为开发者带来高效、流畅的编码体验。
|
3月前
|
存储 Java 开发者
《AIGC+软件开发新范式》--07.通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?(2)
在AI 热度持续上升的当下,阿里云推出AI智能编码助手—通义灵码。通义灵码是一款基于阿里云通义代码大模型打造的智能编码助手,基于海量优秀开源代数据集和编程教科书训练,为开发者带来高效、流畅的编码体验。
|
3月前
|
人工智能 程序员 开发工具
《AIGC+软件开发新范式》--06.“AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?
在AI 热度持续上升的当下,阿里云推出AI智能编码助手—通义灵码。通义灵码是一款基于阿里云通义代码大模型打造的智能编码助手,基于海量优秀开源代数据集和编程教科书训练,为开发者带来高效、流畅的编码体验。
161 0
|
4月前
|
人工智能 IDE Java
通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?
以编码助手形态来帮助开发者提质、提效的通义灵码,自从入职阿里云后便深受广大同事的欢迎,一起通过多个实战场景演示感受它的工作能力吧: 01/ 使用 Spring Boot 创建一个新项目 02/ 维护遗留系统代码库 03/ 生命游戏/报错场景演示
68950 2
|
4月前
|
人工智能 程序员 开发工具
“AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?
本文中阿里云后端工程师云徊将从项目开发的实际需求出发,演示通义灵码在开发工作中可提供的帮助。
|
21天前
|
人工智能 IDE 测试技术
一文教会你如何用好通义灵码,让这款 AI 编码工具帮你做更多工作,更高效
如何用好通义灵码?欢迎收藏最佳使用指南。本文提供通义灵码使用指南,涵盖快捷键、配置调整、跨文件索引及上下文管理等内容,帮助用户更高效地使用通义灵码。
|
2月前
|
人工智能 IDE 程序员
一文梳理我们是如何打造出国内领先的 AI 编程助手「通义灵码」
大语言模型的革命性突破使智能编程成为了可能,通义灵码正是基于通义大模型打造的 AI 编程助手,通过 IDE 插件的形式提供代码补全、单元测试生成等功能,能达到毫秒级的响应速度。目前,通义灵码已在阿里云内部及多家企业中应用,阿里云也在探索多智能体产品,即 AI 程序员,助力数字世界的蓬勃发展,颠覆 IT 生产力。
13515 140
|
4天前
|
消息中间件 人工智能 运维
|
1月前
|
人工智能 自然语言处理 开发者
通义灵码助力开学第一课!百万开发者首选的 AI 编码工具通义灵码是如何炼成的?
我们非常高兴的宣布,通义灵码插件下载量突破400万啦!
1226 1
通义灵码助力开学第一课!百万开发者首选的 AI 编码工具通义灵码是如何炼成的?