那些年我和 ChatGPT 合谋摸鱼的日子

news2024/11/17 16:02:28

文章目录

  • 那些年我和 ChatGPT 合谋摸鱼的日子
    • 1 序个言
    • 2 说正事
    • 3 这次是真正的正事
    • 4 总个结

那些年我和 ChatGPT 合谋摸鱼的日子


1 序个言

看到 CSDN 出这个活动有段时间了,奈何俗务缠身,一直没静下心来想想怎么写。今天碰巧赶上了,就顺便聊聊之前有段时间 ChatGPT 是怎么帮我摸鱼的吧。

虽然不是处女座,但我确确实实是一个对工作和生活都有点完美主义的码畜。为了提高编码效率,写出足以名垂公司史册的优美的代码,我是一点都不吝惜自己的业余时间,几乎大部分都用在代码重构上了:小到一个 if-else,大到整个项目架构,我都想给它提升提升。重构的时候经常忍不住自言自语:要是并发上去了咋整?要是别人想看懂我写的啥又咋整?这一块是不是可以直接写成一行(one-liner)?那一块调用改成函数式风格好像更加比格满满,整?

类似这样的话还有很多,就不一一列举了。

在我的人生信条里,只要瞄准极致的效率,就算达不到要求,至少也能完成个五五六六吧。这样我就有更多的时间和精力享受生活了。体会一下“原来生活是可以更美的”这句话用发自内心的真诚的语气讲出来,是不是真的会很爽。

于是,我在经年累月的自我麻醉下,效率越来越高(貌似),发际线更是不甘落后(多么痛的领域)。

成书于 2014 年的神作《人类简史》

成书于 2014 年的神作《人类简史》

《人类简史》好像说过,整个生物界就只有人类才需要每天工作八小时以上来维持基本的生计。那些我们嗤之以鼻的牛马,细心观察一下它们的动作和神态,在步入断头台之前的时光说不定比在座的各位舒服惬意多了。时间被高效率的现代人急剧压缩,空出来的时间又拿去做所谓“更有意义”的事情。到头来只想着给自己加码了,却忘了加码的另一面,还可以给自己减减负。减负不应只是中小学生的话题,职场码畜如我,同样需要。

突然有那么一天,在上述这般的思绪引领下,我好像找到了一个不错的切入口:2023 年的 3 月,ChatGPT 火了!我也响应与时俱进的号召,投入了学习 ChatGPT 的汪洋大海。刚开始什么都问,蹭着公司的网,问着和公司完全无关的话题:我是谁?从哪里来?到哪里去?

此处省去 5Tb 文字介绍

就这样问了 ChatGPT 好几个月,新鲜感渐渐消磨殆尽了,有一天我终于开始反思了:能不能让 ChatGPT 帮我写业务代码,用魔法打败魔法呢?

于是用上了 GitHub 的 Copilot。写着写着就上瘾了:这玩意儿虽然还不是特别智能,但用它来打个草稿提供一下思路,还是很不错的。据说大部分开发者都和我差不多,用了就停不下来了。还有个什么问卷调查,说用了基于 ChatGPT 的编程工具后,效率平均能提高 30% 左右。不管数据是否真实可靠,从我使用的切身体会来讲,AI 确实帮了我不少忙,可以跳过网页广告,跳过论坛登录,直接给我问题的答案,还是经过组织后的语言,不需要我费心去转换,或者知识迁移发散什么的。能做到这样,有没有那 30% 似乎也没那么重要了。

有了这样的“真知灼见”,我便兴致勃勃地在每一个会用到代码的地方搜寻,希望以 ChatGPT 为代表的人工智能最新成果能帮我改造世界!

2 说正事

有一天,真就被我找到一个不错切入口。

平时上网学东西的时候,我喜欢用 Git 做做笔记,因为 Git 能忠实记录学习中的每一次版本提交——这就是最好的学习证明,因为任何人都无法篡改。由于是自学,怎么方便怎么来,每次提交都用的 Git 命令行。其中使用频率最高的,长这样:

$ git add *; git commit -m 'some comments'; git push

本来借助翻页,感觉效率挺高的,无非就是改改每次提交的注释内容。但时间一长,屏幕前的你可能已经发现了,就会觉得——

每次提交前都要用 键盘 或 鼠标 倒过去修改注释内容,真的很不高效 !!!

有没有什么办法,自己搞个 Git 命令,把要提交的注释就写到最后,实际执行的效果却完全一样呢?

ChatGPT:问我就对了!

它的思路是自定义一个 Git 别名(acpaddcommitpush 的首字母简写):

$ git config --global alias.acp '!git add . && git commit -m "$1" && git push'

用的时候也很 one-liner:

$ git acp 'some comments'

结果报错了:

fatal: 'some comments' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

这时用我苦练多年的 CV 大法,再次求教 ChatGPT。几乎是秒回:

ChatGPT 如是说

ChatGPT 如是说

好吧,原来是不支持在别名中传参数。那就退而求其次,改成运行 shell 脚本吧。于是有了第 2 版方案:

@echo off
git add *
git commit -m %1
git push

这个脚本文件 git-acp.sh 还得找个路径存放,再把路径配到系统的 PATH 才能用。

用了一段时间,我的强迫症又犯了:修改脚本太费劲了,每次都要打开这个 bat 格式的批处理文件,还得熟悉相关的语法。要是能用熟悉的 PowerShell 来写,好像会轻松很多。

让 ChatGPT 打个样吧。于是有了第 3 版:

# Auto commit and push to remote Git repo
param(
    [string]$Comment = ""
)
echo 'Running ...'
cd "$(pwd)"
git add *
git commit -m "weekly update (from $start to $end) $Comment"
git push
echo 'Done.'

写法其实都差不多,只是改成了 PowerShell 实现:

$ git-acp.ps1 'some comments'

时刻践行极简主义,.ps1 也可以干掉:

$ git-acp 'some comments'

就这样,我与这行“极简风” PowerShell 命令渡过了一段令人怀念的美好时光……

3 这次是真正的正事

然而美好的时光总是短暂,一天凌晨四点过,我被一声刺耳的催魂夺命 Call 惊醒。刚上线的系统出 Bug 了,客户催甲方,甲方又催乙方,就这样一直传到我电话里:这个问题务必要解决,甲方在线等修复!务必抓紧时间排查原因!!!

就这样,我又激活了一个新的支线奖励:凌晨四点起床改 Bug。

一顿骚操作过后,系统终于在我 CV 大法的加持下起死回生。这才看了下表:5:20(……如果这就是真爱?!?!?)。

常常感慨命运的捉弄,当年那个无欲无求混吃等死的我,想不到有一天也会转行到 IT,为了一个看似光鲜的身份和闪着金光的铜饭碗,忍气吞声老老实实起床去改 Bug。更想不到的是,紧绷的那根弦突然放松的那一刻,我竟然鬼使神差般的去找那行 git-acp 命令的茬儿——

为什么这个命令不能写成 git acp ... 而只能是 git-acp ... 呢?

趁着最后一丝残存的起床气,我打开了当时和 ChatGPT 的对话页,开启了我的【烦人修山】(山:shit mountain,你懂的)模式。

我想要的,只是实现最开始的需求,通过 Git 的相关操作,实现用 git acp 'some comments' 做添加、提交、推送一站式操作,遇到报错再手动处理。最终,目光停留在了 ChatGPT 给我的第一次改进意见上:Git 别名怎么就不支持参数传递了?报错前不是已经提交本地成功了么?

命运的齿轮就这样开始转动起来:报错的真正原因并非 ChatGPT 说的那样,而是最后那句 git push 把我的注释信息当成了 要推送的远程分支!试问远程仓库怎么会有分支名叫 somecomments 的?

找到了原因,似乎就好办多了:只要想办法让参数和 git push 分开就行了。

难道要写成 git push; ?想多了。❌

这样呢:git push --force ?还是不行。❌

……

突然,灵光一闪而过:要是把参数变成真正的注释呢?比如:$ git push<Space>#<Space>

居然……蒙对了!!!!!!!!!!!!!!!!!!!!!!!!!!!!

于是有了最终的版本:

# Declare a new alias: acp
$ git config --global alias.acp '!git add * && git commit -m \"$1\" && git push # '
# Testing new alias:
$ git acp 'some comment'

于是有了下面这段惊天地泣鬼神的运行结果:

一段惊天地泣鬼神的运行结果

惊天地泣鬼神的运行结果

来,跟我一起大声喊三遍——

大功告成!!!
大功告成!!!
大功告成!!!

4 总个结

老话讲:逢人且说三分话,未可全抛一片心。我不是教各位如何使诈、如何变成城府极深的老狐狸,而是想说:大可不必在 ChatGPT 面前过于 卑躬屈膝 orz。否则,明明最多只用敲三个键搞定的问题,丢给 ChatGPT 能让你绕地球跑上三圈。还解决不了根本问题。

(完)

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

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

相关文章

【Linux扩容根分区】LVM分区扩容过程踩坑记录

最近想要给自己使用的Linux操作系统的根分区进行扩容&#xff0c;解决完发现&#xff0c;原来问题如此简单。 特此记录&#xff0c;希望能帮助到有需要的人。 通过df -Th查看系统磁盘分区情况 通过vgdisplay 查看内容 实操过程中&#xff0c;原来红框中&#xff0c;Free PE …

2024年双十一买啥最划算?双十一好物推荐闭眼入!

一年一度的双十一购物狂欢节已悄然临近&#xff0c;这不仅是一场消费者的盛宴&#xff0c;更是各大品牌竞相展示实力、推出优惠的绝佳时机。在这个全民狂欢的日子里&#xff0c;数码产品作为科技与生活的桥梁&#xff0c;相信已经有不少朋友想要大买特买了。无论是追求极致性能…

《python语言程序设计》2018版第8章18题几何circle2D类(下部)

前言、从9.20激动发言到现在一直没有克制住的心情中,回到编程 比如删掉我设计的导入第二个园的x,y,radius的函数我做了之前设计的变化.建立了两个可以将x,y拿出来的函数out计算两个坐标之间的距离利用已知的两个坐标之间的距离来比对第1个园里的半径,看第2个园的坐标是否在第一…

Linux文本内容管理命令_2

find&#xff1a;-查找命令执行文件 which 命令 whereis 命令 type 命令----查看命令类型 alias &#xff08;命令别名&#xff09; cat 查看文件--更新文件时间&#xff0c;再次cat&#xff0c;时间不会改变 touch--会更新所有属性的时间&#xff0c;文件诞生时间不会改变 …

求n的阶乘的相反数(c语言)

1./请编写函数fun&#xff0c;其功能是:计算并输出下列多项式的值: // s11/1!1/2!1/3!1/4!1/5!1/6!1/7!...1/n! //例如&#xff0c;在主函数中从键盘给n输入15&#xff0c;则输出为:s 2.718282。 //注意:要求n的值大于1但不大于100。 2.我们先输入数字n,然后先讲n!的阶乘计算…

NMOS的原理

NMOS&#xff08;N型金属氧化物半导体场效应晶体管&#xff09;是常见的场效应晶体管&#xff08;FET&#xff09;的一种&#xff0c;其主要电极包括D极&#xff08;Drain&#xff09;、S极&#xff08;Source&#xff09;和G极&#xff08;Gate&#xff09;&#xff0c;每个电…

JavaSE——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解&#xff0c;需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…

【数据结构】栈和队列(Stack Queue)

引言 在对顺序表&#xff0c;链表有了充分的理解之后&#xff0c;现在让我们学习栈和队列&#xff01;&#xff01;&#xff01; 【链表】 &#x1f448;链表 【顺序表】&#x1f448;顺序表 目录 &#x1f4af;栈 1.栈的概念及结构 2.栈的实现 ⭐初始化栈 ⭐入栈 ⭐…

【C++】入门基础知识-1

&#x1f36c;个人主页&#xff1a;Yanni.— &#x1f308;数据结构&#xff1a;Data Structure.​​​​​​ &#x1f382;C语言笔记&#xff1a;C Language Notes &#x1f3c0;OJ题分享&#xff1a; Topic Sharing 目录 前言&#xff1a; C关键字 命名空间 命名空间介…

【论文翻译】AFLGuard: Byzantine-robust Asynchronous Federated Learning

提示&#xff1a;该论文标题为AFLGuard: Byzantine-robust Asynchronous Federated Learning&#xff0c;我将对其进行部分翻译&#xff0c;便于后续阅读。 文章目录 AFLGuard&#xff1a;拜占庭鲁棒的异步联邦学习一、摘要二、引言三、知识前提拜占庭鲁棒联邦学习 四、问题表述…

JVM(HotSpot):程序计数器(Program Counter Register)

文章目录 一、内存结构图二、案例解读三、工作流程四、特点 一、内存结构图 二、案例解读 我们使用javap对字节码进行反编译&#xff0c;来看下程序计数器怎么体现的。 IDEA写一个简单的Java代码 反编译命令 javap -verbose InitTest.class $ javap -verbose InitTest.clas…

解决Typora图片复制到CSDN无法查看问题

下载安装picgo 山东大学镜像源&#xff1a;https://mirrors.sdu.edu.cn/github-release/Molunerfinn_PicGo 开通阿里云对象存储oss 选择创建 填入内容 购买资源包 创建AccessKey 配置PicGo 设定bucket填入创建bucket名称 注意&#xff1a;设定存储区域只需要填写到区域前缀即…

变电站设备检测系统源码分享

变电站设备检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

C++ 继承:打破代码冗余,提升开发效率

目录 继承的概念和定义 继承的概念 继承的定义 定义格式 继承关系和访问限定符 继承基类成员访问方式的变化 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 构造函数 拷贝构造 赋值运算符重载 析构函数 继承与友元 继承与静态成员 菱形继承与…

数据库——sql语言学习 查找语句

一、什么是sql SQL是结构化查询语言&#xff08;Structured Query Language&#xff09;的缩写&#xff0c;它是一种专门为数据库设计的操作命令集&#xff0c;用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;。 二、查找相关语句 ‌‌首先&#xff0c;我们已经设…

【SQL】筛选字符串与正则表达式

目录 语法 需求 示例 分析 代码 语法 SELECT column1, column2, ... FROM table_name WHERE condition; WHERE 子句用于指定过滤条件&#xff0c;以限制从数据库表中检索的数据。当你执行一个查询时&#xff0c;WHERE 子句允许你筛选出满足特定条件的记录。如果记录满…

计算计的风向标大转!计算机专业的新纪元已至!

亲爱的读者们&#xff0c; 在这个科技日新月异的时代&#xff0c;计算机专业正以前所未有的速度引领着行业的变革。从传统编程到人工智能、大数据、云计算等新兴技术的崛起&#xff0c;计算机专业的学习与发展路径正经历着翻天覆地的变化。今天&#xff0c;让我们一同探索这个…

短信视频评论dy版提取,免COOKIE 手机版本介绍说明

抖音系统手机版功能介绍说明 一&#xff1a;描述 根据需要升级了手机版本&#xff0c;手机版本和软件版本的功能一样。并且手机版本增加了评论地区筛选功能。&#xff08;后期&#xff1a;1支持自动留痕&#xff0c;自动私信功能。2 支持详细信息和评论提取的tel筛选。3支持A…

15、网络安全合规由来与要素

数据来源&#xff1a;1.网络安全合规由来与要素_哔哩哔哩_bilibili 合规由来 合规&#xff08;Compliance&#xff09;&#xff1a;指服从、顺从和遵从的行为&#xff0c;强调使公司的经营活动与法律、监管及内部规则保持一致。合规涉及公司适应法律法规及社会规范等规则的经营…

CentOS Stream 9部署Redis

1、安装Redis sudo dnf install redis 2、启动Redis服务 sudo systemctl start redis 3、设置Redis开机自启 sudo systemctl enable redis 4、打开Redis配置文件&#xff1a; sudo vi /etc/redis/redis.conf 在配置文件中找到并修改以下两行&#xff0c;确保密码验证功能已启…