本篇文章聊聊如何使用 GPT 快速完成一个开源小项目,解决实际的问题,顺手点亮上 Nginx 开源社区的贡献者图标 。
【AI 加持的代码编写实战:快速实现 Nginx 配置格式化工具】“Talk is Cheap,Show you the Code 。”
写在前面
整理了一篇本该上个月就发出的内容 。
前段时间,有个投资人朋友,问了我好几会到底如何使用 GPT 或相关工具来写代码的,希望能有个“step by step”的教程,正巧前几天有这么一个例子,就写一篇文章吧 。
其实,我之前已经写过很多篇关于 Nginx 的实践内容了,我很难说我不喜欢这款实践性极强的开源软件 。上个月在折腾内部服务的时候,再次用到了 Nginx 这个老伙计,以及我曾经分享过很多次的 NJS 。
为了更快的验证功能(偷懒不想写代码),我打开了上 Nginx 官方社区的 nginx/njs- 寻找示例配置 。
当我在代码编辑器里打开官方项目的配置时,映入眼帘的是方佛是从 90 年代到现在的内容:
不光是因为有“强迫症”(代码洁癖),更是因为我希望 Nginx 的配置文件都是简洁、美观,以及可靠的,如果没有靠谱好用的 Nginx 格式化工具,那么就做一个呗 。
毕竟,Talk is Cheap 。
完整项目,我已经上传到了 /nginx-,希望它能帮到你 。
当然,也十分欢迎一键三连 。
方案设计
动手之前,我们最好先做一个简单的规划,以及针对这个规划做一些适当的可行性调研 。
社区已有项目调研
我简单翻阅了社区中有关于 Nginx 配置格式化相关的项目,包括其中一个已经坚持了 7 年的格式化开源软件的代码和历史演进过程 。
我发现在社区中,Nginx 代码格式化相关的工具不多,但却分为了三种语言阵营,两种玩法 。按照语言来分类:
按照处理方式来看,则是下面两类玩法:
第一种方法,相对比较“治标”,解决问题会更快一些,但可能会因为 Nginx 配置的演进越来越复杂,解析、格式化能力跟不上迭代,以及判断逻辑不够周全,导致格式化出错 。
比如,/-nginx- 这个在插件市场里被下载了二十万次的插件,就是采用这种方案(基于 JS 版本的 ),以至于有用户确实反馈,会“损坏”配置 。
第二种方法,相对比较“治本”,解决问题更靠谱,但是需要完整的了解 Nginx 配置文件的定义,实现起来需要额外的一些时间 。
况且,我也不太相信创建项目有一段时间的语法解析方案,对于现在的 Nginx 配置的支持能力,目前的 Nginx 配置丰富程度早已经不是早些年可比的了 。
所以,这里我们先来实现一个能解决问题,但是不那么完美的方案吧 。
使用做方案交叉验证
当然,在实现之前,我们可以使用等方法,来对我们想要做的事情,或者想法进行任务拆解或分析,来为我们“查缺补漏” 。
类似的工具很多,社区里随便找一个用跑起来就好 。因为模型的结果有一定的随机性,所以我们可以反复尝试,以及适当调整 “”,让模型的回答更全面一些 。因为很多项目里使用的“提示咒语”默认都是英文,所以在执行之后,得到的结果也都是英文的结果 。
这里我们可以使用来进行偷懒,只需要把内容复制粘贴到里,然后在上面添加一句要求:“将下面的内容翻译为中文” 。
然后,我们稍等片刻,这些内容就变成了阅读更简单的母语内容啦 。
最终方案设计
结合上文提到的各种内容,结合实现时间成本,我们考虑使用“基于字符串特征进行格式化处理”的方案来解决问题 。
我期望工具能够开箱即用,没有任何依赖问题,所以我的基础技术栈选择的是。
- 小学生暑假必看|一口气整理18部高分纪录片 附片源 小学生需要知道的中国之最
- 《我的世界》打破12项吉尼斯记录 mc中的吉尼斯记录
- 世界上最高且在世的人,入选世界吉尼斯记录,身高2米51 史上最高的人吉尼斯记录
- 旭旭宝宝即将完成一项新的成就目前全斗鱼仅有四人能达到这高度 大司马破吉尼斯记录
- 适合集体表演的节目
- 世界上名字最长的城市,竟被列入吉尼斯纪录,翻译成中文仅2字 哪个城市有吉尼斯记录
- 雅加达是哪个国家的
- 推荐三部讲述蛇类的纪录片 世界蛇王奥斯汀吉尼斯记录
- 中国第一巨人鲍喜顺:不听医生忠告执意生子,如今儿子身高1.69米 中国吉尼斯记录最多的人
- 五一节放假