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 们为我们打工!
关键词:
Copilot来了,程序员会失业吗?ChatGPT又来了,程序员会失业吗?程序员本来就焦虑,最近似乎越来越焦虑了。在Copilot问世时,我感觉自己退化2022-12-19
网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天后上报给征信机构,因为有些借贷机构可2022-12-18
12月17日中午,2022中国足协杯赛事组委会官方宣布:淄博蹴鞠因自身原因无法按时抵达赛区参加原定于今日举行的2022中国足协杯第三轮对阵山东泰2022-12-17
截至2022年12月16日收盘,西力科技(688616)报收于10 9元,下跌3 28%,换手率1 19%,成交量0 65万手,成交额712 49万元。12月12022-12-17
1、有固定收入的,抚养费一般可按其月总收入的百分之二十至三十的比例给付。负担两个以上子女抚养费的,比例可适当提高,但一般不得超过月总收2022-12-16
撰文|魏然编辑|谭潮出品|零碳知识局2022年3月的一天。风力发电占英国电力的47.9%,其次是核能18.2%,天然气17.1%,进口电力8.5%,2022-12-16
12月15日可降解塑料板块较上一交易日下跌0 69%,道恩股份领跌。当日上证指数报收于3168 65,下跌0 25%。深证成指报收于11358 11,上涨0 32%。2022-12-16
格隆汇12月15日丨茂化实华(000637)(000637 SZ)发布股票交易异常波动公告,近期有媒体披露:华南最大氢燃料电池供氢中心在茂名石化建成投产,产出并2022-12-15
(原标题:道氏技术:芜湖基地一期三元前驱体项目已于2022年5月开工,积极推进建设中)同花顺(300033)金融研究中心12月15日讯,有投资者向道2022-12-15
盗窃数额巨大的,达到3万到10万元钱以上的话,处3年到10年有期徒刑。并处罚金。如果数额达到特别巨大的话,也就是说30万到50万元以上的话,是2022-12-15
金鲳鱼是海鱼吗?金鲳鱼是一种海鱼。正常天气下,一般分上下午三次食用,方便排灌。当然,养殖金鲳鱼最好的选择是在海边,而且表现不错。同类2022-12-14
(原标题:美锦能源:公司控股子公司已生产燃料电池洒水车、洗扫车以及压缩式垃圾车,目前公司正申报上述产品道路机动车辆生产企业及产品准入2022-12-14
股票代码:603730 股票简称:岱美股份 公告编号:2022-054 上海岱美汽车内饰件股份有限公司 关于公开发2022-12-13
BLACKPINKJennie在巴黎演唱会前见缝插针的工作,引发了韩国网友们的关注。小编获悉,目前正在欧洲巡演的BLACKPINK成员Jennie,被网友们发2022-12-13
12月12日,建信稳定得利债券A最新单位净值为1 498元,累计净值为1 498元,较前一交易日下跌0 4%。历史数据显示该基金近1个月上涨0 07%,近3个月2022-12-13
宜宾纸业:关于控股股东参与四川银鸽竹浆纸业有限公司重整项目的提示性公告 docx2022-12-12
港元拆息涨跌不一,隔夜拆息回升至2 15833厘;1星期拆息跌至3 06637厘;2星期拆息跌至3 54173厘。与楼按相关的1个月拆息连跌4日至4 88756厘;32022-12-12
证券代码:600691 证券简称:阳煤化工 公告编号:临 2022-039 阳煤化工股份有限公司 第2022-12-09
证券代码:688685 证券简称:迈信林 公告编号:2022-049 江苏迈信林航空科技股份有限公司股东 2022-12-08
金龙羽(002882)12月07日在投资者关系平台上答复了投资者关心的问题。投资者:您好!现阶段新能源并网压力再现,电网电力建设迫在眉睫,地产保2022-12-07
12月6日盘中消息,10点14分如意集团(002193)触及涨停板。目前价格8 61,上涨9 96%。其所属行业纺织制造目前下跌。领涨股为如意集团。该股为纺织服2022-12-06
中欣氟材(002915)11月30日在投资者关系平台上答复了投资者关心的问题。2022-12-01
日前,湖州德清举行在湖州看见美丽中国实干争先主题实践2022年半年度重大项目集中签约仪式。本次活动共签约产业项目60个,涵盖了绿色家居、2022-07-18
早春时节,行走张垣大地,空气清爽,河面解冻,绿意萌发。一幅优美的生态画卷徐徐铺展,既是大自然的馈赠,更是张家口对生态环境潜心保护的2022-03-21
3月19日,由省卫生健康委组织开展的冀康周末大讲堂系列活动举行开班仪式和第一季度培训。活动采取视频会的形式举行,共有250余家机构、26002022-03-21