首页 > 资讯 > > 正文

Copilot 与 ChatGPT,让程序员如虎添翼 —— 让 AI 们为我们打工!-全球滚动

来源: 2022-12-22 01:55:14

Copilot 来了,程序员会失业吗?ChatGPT 又来了,程序员会失业吗?程序员本来就焦虑,最近似乎越来越焦虑了。在 Copilot 问世时,我感觉自己退化成了工具人:《我退化成一个只会敲 Tab 键的工具人了!》。如今 ChatGPT 又来了,这次我是什么感觉呢?感觉真的 Google 和 StackOverflow 已经不好用了。

不过,经过一段时间对 Copilot 的使用,我的心态已经平和了许多,不再担心失业了。回头来看,其实,它们都是效率工具,它们不是要干掉程序员,而是更好地帮助程序员。众所周知,程序员可以改变世界,那么,借助 Copilot 和 ChatGPT,程序员的自我感觉更棒了!可以更加肆无忌惮地在未知领域里自由探索了!

探索 Vue

前几天,我开始对一个 Vue 项目做一些迭代优化,这是我第一次接触 Vue 项目。我需要对该 Vue 项目进行保护,添加登录功能,详细过程见《使用 IdentityServer 保护 Vue 前端》。我在这一篇日志里提了一下,说自己参考 Vue 的官方文档,给 Vue 应用添加的方法,在 vue-router 的导航守卫里,按照 vue-router 的官方文档去拿这个方法,居然是 undefined!通过 Google 搜索了很久,都是这种官方文档类似的说明(然而并不管用!),于是我去 StackOverflow 上提了这个问题:https://stackoverflow.com/questions/74769607/how-to-access-vues-methods-from-navigation-guard,这个问题到现在,也没有其他人(除了我自己)回复。


(资料图片)

于是我抱着试一试的心理,在 ChatGPT 上问了一下,没有想到立即得到了详细的解答:

它的思路是,将方法添加在 Vue 的 prototype 中,这样,在导航守卫里就能使用 this关键字去访问全局方法了!这真的是比 Google 好用呀!

探索 Mybatis plus

我对 Java 也不熟,它的生态中很多组件,我听上去感觉就是拼写错误。昨天在 Mybatis plus 上就栽了跟头。事情是这样的,我和同事们业余做了一个项目(有兴趣一起来玩的同学们欢迎联系哈),目前刚开始,正在做一个 3D 世界里的角色可以选择自己的皮肤颜色的功能。

https://brickverse.vercel.app/

或者这个链接:https://brick.cat

前端部署在 Vercel 上,后端部署在 Okteto 上。后端服务是一个 Java 项目,我在这个项目里添加了 UserPreference 这个数据表,用来保存用户的偏好设置,详细 api 文档见:https://brickverse-user-service-gracewen1.cloud.okteto.net/doc.html#/brick/%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5%81%8F%E5%A5%BD%E7%AE%A1%E7%90%86/createOrUpdateUserPreferenceUsingPOST。

用户可以有很多设置,我的设想是每个用户可以有多个 key-value 键值对,但同一个用户,同一个 key,只能有一条记录。为了简单,就提供一个接口给到用户添加或者更新偏好。我的设想是,对于同一个 userId, key,如果没有记录就添加,有的话,就更新 value。我对 Mybatis plus 不熟,但是在写的过程中,点出了一个 saveOrUpdate 方法,就认为这正是我要的,保存或者更新嘛。我在 Flyway 脚本里将 userId 和 key 设置成唯一索引,心想,当我试着保存一个记录时,首先尝试插入,碰到已有记录的错误时,该方法就转而调用 update。

CREATE TABLE `user_preference` (`id` bigint NOT NULL AUTO_INCREMENT,`user_id` varchar(100) NOT NULL,`key` varchar(100) NOT NULL,`value` varchar(10000) NOT NULL,`create_time` datetime DEFAULT NULL,`update_time` datetime DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `user_id_key` (`user_id`,`key`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

public boolean saveOrUpdatePreference(String userId, UserPreferenceDto dto) {var key = dto.getKey();var value = dto.getValue();UserPreference userPreference = new UserPreference();userPreference.setUserId(userId);userPreference.setKey(key);userPreference.setValue(value);return this.saveOrUpdate(userPreference);}

没想到,实际上,当想要更新这个 value 时,仍然报了唯一索引冲突错误,而没有进行更新。这时,我才知道,这个 saveOrUpdate,在不传入主键时,总是尝试插入。这时我用 Google 搜索如何让 saveOrUpdate 根据自定义查询条件去判断是否已存在呢?发现似乎只有国人在用 Mybatis Plus,找到的链接全是 csdn 对 saveOrUpdate 的泛泛简介,没有一篇文章讲解高级用法。

这时我抱着试一试的想法,去问了一下 ChatGPT,没想到它立刻马上给予了详细的说明,不仅有代码示例,还有温馨提示,主要指出我的代码问题在于调用 saveOrUpdate 时,没有去数据库里查询已有记录。

你看,它给的代码示例,在调用 saveOrUpdate 之前,先使用 QueryWrapper 去查询了数据库里的现有记录,然后再设置值。看到这里我秒懂了,我需要在调用 saveOrUpdate 之前,根据 userId 和 key 来查询一下数据库中的记录。这时,我想,能不能把这个查询做为参数直接扔给 saveOrUpdate 呢?我试着在 saveOrUpdate 的第一个参数后加了一个逗号,这时, Copilot 就自动帮我补全了代码,我一看,还正是我需要的条件呢!

我按了一下 Tab 键,提交了这个改动:

在 cicd 流水线跑完后,我再试了一次,重新选择皮肤颜色,更新成功了!

总结

我感觉自己从此可以摆脱面向 Google 和 StackOverflow 编程的习惯了,转而面向 ChatGPT 和 Copilot 编程。ChatGPT 和 Copilot,可以让程序员在尝试新的领域时,变得更加有效率。就像朋友圈有朋友留言说的,ChatGPT 和 Copilot 可以互相结对编程,让 AI 们为我们打工!

x
推荐阅读

Copilot 与 ChatGPT,让程序员如虎添翼 —— 让 AI 们为我们打工!-全球滚动

2022-12-22 01:55:14

奕东电子(301123)12月20日股东户数2.7万户,较上期增加0.05%

2022-12-21 16:06:29

华闻集团董秘回复:现就您关注的问题回复如下: 近期没有机构来公司调研|天天快讯

2022-12-21 09:58:33

【全球独家】国联股份: 关于以集中竞价交易方式回购公司股份方案的公告

2022-12-20 22:26:31

月内拉升2000多基点 2023年人民币汇率稳定仍是重点

2022-12-20 14:59:47

小金鱼A借款逾期6天不还会影响征信吗-焦点热议

2022-12-20 08:44:38

皇庭国际(000056):变更注册资本暨修订《公司章程》

2022-12-19 20:20:13

*ST中昌(600242)12月19日主力资金净卖出467.57万元

2022-12-19 15:10:58

环球关注:2022年海南冬交会招商引资项目签约额超205亿元

2022-12-19 09:05:07

热点!打破域限,跨省协作 河南固始招投标迈上新台阶

2022-12-18 23:31:45
相关新闻

Copilot 与 ChatGPT,让程序员如虎添翼 —— 让 AI 们为我们打工!-全球滚动

2022-12-22 01:55:14

奕东电子(301123)12月20日股东户数2.7万户,较上期增加0.05%

2022-12-21 16:06:29

华闻集团董秘回复:现就您关注的问题回复如下: 近期没有机构来公司调研|天天快讯

2022-12-21 09:58:33

【全球独家】国联股份: 关于以集中竞价交易方式回购公司股份方案的公告

2022-12-20 22:26:31

月内拉升2000多基点 2023年人民币汇率稳定仍是重点

2022-12-20 14:59:47

小金鱼A借款逾期6天不还会影响征信吗-焦点热议

2022-12-20 08:44:38

皇庭国际(000056):变更注册资本暨修订《公司章程》

2022-12-19 20:20:13

*ST中昌(600242)12月19日主力资金净卖出467.57万元

2022-12-19 15:10:58

环球关注:2022年海南冬交会招商引资项目签约额超205亿元

2022-12-19 09:05:07

热点!打破域限,跨省协作 河南固始招投标迈上新台阶

2022-12-18 23:31:45

代理这种新冠“特效药”?国药集团回应 每日速递

2022-12-18 08:34:56

深圳大鹏湾水域6月1日起实施“一次引航” 环球速看料

2022-12-17 12:26:11

*ST亚联: 北京雍行律师事务所关于深圳证券交易所《关于对吉林亚联发展科技股份有限公司的关注函》所涉法律问题的法律意见书

2022-12-16 20:16:25

恒天然携手沃尔沃卡车、森那美汽车及麻省理工PolyJoule 以科技创新全力加速可持续发展步伐 世界今热点

2022-12-16 14:47:18

BOSS直聘-W(02076.HK):以介绍方式于香港联交所主板上市

2022-12-16 08:15:37

中国·宁陵第十四届梨花节盛大开幕

2022-12-15 19:37:56

河南郏县:医保征缴“云专线” 贴心服务“不掉线” 环球精选

2022-12-15 14:19:07

买车库能贷款出来吗|实时

2022-12-15 08:03:59

焦点信息:盛屯矿业(600711.SH):拟参设合资公司建设新能源动力电池三元前驱体项目

2022-12-14 17:59:01

仇长根研究台湾三十年 郭伟峰为其新著作序

2022-12-14 13:30:19

世界快资讯:西部大开发板块12月13日涨0.61%,西部牧业领涨,主力资金净流入1947.06万元

2022-12-14 04:30:39

热讯:贵州三力董秘回复:小芄医药科技(成都)有限公司,主要与医院合作,开展互联网医院、线上诊疗、慢病管理等业务

2022-12-13 15:35:56

世界今日报丨振华科技(000733)12月12日主力资金净买入1.25亿元

2022-12-13 08:48:10

世界播报:解除不定期租赁合同的经济补偿

2022-12-12 18:39:04

广东省加快开展基础设施领域REITs试点工作 鼓励国企积极参与_快报

2022-12-12 14:05:46

全球资讯:美股收盘:美联储决议愈行愈近 三大指数尾盘承压跳水

2022-12-10 06:25:56

盛泰集团(605138.SH):子公司拟以1.21亿澳元收购Gundaline拥有的卡拉托尔农场的土地、建筑、机器设备和水资源权利等相关资产|快讯

2022-12-07 17:15:45

动态:台华新材:公司主要产品为锦纶长丝、坯布以及成品面料

2022-12-06 17:02:30

杂交水稻制种新技术体系 可破解制种高成本难题

2022-02-10 10:44:58

期待冰雪运动在更多校园“破冰”启航

2022-02-10 10:44:58

“智慧社区”带来宜居新生活

2022-02-10 10:44:57

80%广西百色感染者为同一自然村 专家提醒:春运返程需错

2022-02-10 10:44:57

世界最深地下实验室里,他们在寻找暗物质的絮语

2022-02-10 10:44:44

不用烧、不用填 生物处理技术出手,垃圾成资源

2022-02-10 10:44:44

春风送新景 文化暖民心

2022-02-10 10:44:41

冬奥早报丨雪上项目中国多项出击 任子威冲击短道速滑第

2022-02-10 10:44:40

踏虎觅“花郎” “凿花”技艺高

2022-02-10 10:44:40

11家协会、学会联合倡议抵制“丑书”

2022-02-10 10:44:39

11家协会、学会联合倡议规范使用汉字

2022-02-10 10:44:37

新春特别版冰墩墩已在路上

2022-02-10 10:44:35

中科大科研团队首次测得神秘“第二声”衰减率

2022-02-10 10:44:35