颠覆传统编程:用ChatGPT十倍提升生产力

2024-06-23 15:12

本文主要是介绍颠覆传统编程:用ChatGPT十倍提升生产力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们即将见证一个新的时代!这是最好的时代,也是最坏的时代!

需求背景

背景:

平时会编写博客,并且会把这个博客上传到github上,然后自己买一个域名挂到github上。

我平时编写的博客会有一些图片来辅助说明的,写完之后如果我把图片和文字全部都上传到博客网站,后期图片很多时就会导致网站加载特别慢

所以想把图片存储在一个公共的对象存储平台(腾讯云的cos服务),这样只要上传一个公共访问链接即可,极大的减少存储空间。

需求:

每次写完博客都要手动上传图片,然后把得到的链接在复制到本地的markdown文件中,如果一篇文章的图片特别多,这简直就是灾难!所以我想

  1. 给一个文件路径,自动把markdown文件中本地的图片上传到腾讯云的cos平台,并获取公共链接

  2. 把本地的文章的链接自动替换为公共链接

调研和设计

腾讯云cos服务是提供这样的接口的,但是接口需要鉴权,所以我把上诉的需求拆解为三部分

  • 生成鉴权sign_key
  • 调用腾讯云的接口上传图片,并获取链接
  • 输入markdown文件,找到本地图片链接,上传并替换为公共链接

错误示范

我阅读腾讯云的cos文档,需要提供签名,一共需要八个步骤才能生成


我把这八个过程每一个过程都复制给chatgpt,让他帮我写


总结

后面太多我就不演示了,我直接说总结:

  • 在这个过程中给我的代码基本都是可以运行的,我只需要微调一下就可以用,报错直接扔给他也基本都可以解决
  • 但是整个过程还是需要我理解每一步,并且把这八个步骤进行汇总和调整
  • 比Google搜索要好用一点,但是还没有那么好用,总感觉差点意思

正确示范

生成上面的签名之后,我就让他去写上传接口


仔细阅读一下上面的第二张图片,我要求**【把其中的url的uri替换为文件名,然后它给我代码并解释这是做什么,它说这是上传到【腾讯云的cos服务】,要知道我在这之前是完全没有提到过【腾讯云】、【cos服务】等字眼的,也就是它只依赖我提供的hostcoder-xieshijie-img-1253784930.cos.ap-beijing.myqcloud.com】**这个域名,就判断出我这是腾讯云的cos服务,这就有点厉害了,更厉害的是,当然要求他写一个测试用例:

它直接把我之前费力八个步骤生成的签名直接生成了!这太离谱了!

  • 我以为:chatgpt不知道腾讯云cos签名的生成过程,然后我阅读文档,把八个步骤重组并依次喂给chatgpt,让他帮我写
  • 实际上:chatgpt不仅知道腾讯云cos,在我要求他上传时,就自动把官方推荐的生成签名的方式给我生成了!

这意味着以后大部分网络开源的内容,你甚至不用阅读啃文档,你只要知道一个概念,剩下的就交给他就可以!

后面的上传和替换markdown的内容我就不截图,后面对于chatgpt就非常简单了,最后附上完整的代码(95%是chatgpt写的)

# -*- coding=utf-8
import hmac
import hashlib
import os
import re
import requests# 定义 SecretKey 和 KeyTime
# 替换为自己的key和id
secret_key = "xieshijie_key"
key_time = "1680947045;2980950645"
secret_id = "xieshijie_id"
http_method = 'put'def generate_url_param_list():return ""def generate_header_list():return ""def generate_sign_key_val(uri_pathname):# 生成 SignKeysign_key = hmac.new(secret_key.encode(),key_time.encode(),hashlib.sha1).hexdigest()# 生成 HttpStringhttp_string = f"{http_method.lower()}\n{uri_pathname}\n"http_string += "\n"http_string += "\n"# 生成 StringToSignstring_to_sign = f"sha1\n{key_time}\n{hashlib.sha1(http_string.encode()).hexdigest()}\n"# 生成 Signaturesignature = hmac.new(sign_key.encode(),string_to_sign.encode(),hashlib.sha1).hexdigest()# 生成签名sign_key_val = f"q-sign-algorithm=sha1" \f"&q-ak={secret_id}" \f"&q-sign-time={key_time}" \f"&q-key-time={key_time}" \f"&q-header-list={generate_header_list()}" \f"&q-url-param-list={generate_url_param_list()}" \f"&q-signature={signature}"return sign_key_valdef generate_file_name(file_path):# 获取文件名return file_path.split('/')[-1]def put_request(file_path, sign_key):# 设置请求头headers = {'host': 'coder-xieshijie-img-1253784930.cos.ap-beijing.myqcloud.com','Authorization': sign_key}# 设置请求体with open(file_path, 'rb') as f:data = f.read()uri = generate_file_name(file_path)# 发送 PUT 请求url = f'https://coder-xieshijie-img-1253784930.cos.ap-beijing.myqcloud.com/{uri}'response = requests.put(url, headers=headers, data=data)# 判断响应状态码并返回结果if response.status_code == 200:print('本地图片上传成功')return urlelse:print('本地图片上传失败')return 'fail'def replace_local_image_links(file_path):"""读取Markdown文件,提取其中的本地图片链接并替换为基于图片名称计算的新链接。Args:file_path (str): Markdown文件路径。"""# 判断文件是否是Markdown格式if not file_path.endswith('.md'):print('该文件不是Markdown格式。')return# 读取Markdown文件内容with open(file_path, 'r', encoding='utf-8') as f:content = f.read()# 匹配所有本地图片链接  匹配形式为:![...](...)regex = r"!\[\S+\]\((\S+)\)"matches = re.findall(regex, content)# 替换本地图片链接为新链接for match in matches:# 判断链接是否是本地路径if not match.startswith('http'):# 获取图片名称和路径if os.path.isabs(match):image_name = os.path.basename(match)image_path = matchelse:image_name = os.path.basename(match)image_path = os.path.abspath(os.path.join(os.path.dirname(file_path), match))sign_key = generate_sign_key_val('/' + image_name)# 上传图片到COS并计算新链接new_link = put_request(image_path, sign_key)# 替换Markdown文件中的链接content = content.replace(match, new_link)# 将替换后的Markdown内容写回文件with open(file_path, 'w', encoding='utf-8') as f:f.write(content)print('本地图片链接替换完成。')if __name__ == '__main__':# 测试替换replace_local_image_links("/Users/xieshijie/Desktop/test.md")

我用了差不多半天的时间完成这件事,大部分时间是阅读腾讯云的cos服务文档和分步骤生成签名的过程,如果正确使用实际我觉得可以缩短到1个小时!


升级plus

整个过程让我对ChatGPT的潜力有了更深的认识。起初,我花费了半天的时间,主要用于阅读腾讯云COS服务的文档以及分步骤生成签名的过程。然而,正确利用ChatGPT实际上可以将这个过程缩短到一个小时,甚至更少。

ChatGPT不仅能高效地生成代码,还能在一些复杂的任务中表现出强大的理解和推理能力。这次体验让我更加坚定地认为,ChatGPT正在以一种前所未有的方式颠覆传统的编程和开发流程,真正实现了十倍的生产力提升。

于是,我果断充了一个GPT-4

image-20240623134517420


更多惊喜

我们的公众号还将定期分享:

  • 最新互联网资讯:让你时刻掌握行业动态。

  • AI前沿新闻:紧跟技术潮流,不断提升自我。

  • 技术分享与职业发展:助你在职业生涯中走得更远、更稳。

  • 程序员生活趣事:让你在忙碌的工作之余找到共鸣与乐趣。

关注回复【1024】惊喜等你来拿!

敬请关注【程序员世杰】

coder_world_618

这篇关于颠覆传统编程:用ChatGPT十倍提升生产力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087514

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

C#异步编程ConfigureAwait的使用小结

《C#异步编程ConfigureAwait的使用小结》本文介绍了异步编程在GUI和服务器端应用的优势,详细的介绍了async和await的关键作用,通过实例解析了在UI线程正确使用await.Conf... 异步编程是并发的一种形式,它有两大好处:对于面向终端用户的GUI程序,提高了响应能力对于服务器端应

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语