【腾讯云 Cloud Studio 实战训练营】一个新的趋势已来

news2024/11/25 6:44:13

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

【腾讯云 Cloud Studio 实战训练营】一个新的趋势已来

本文关键字:腾讯云、云IDE、Cloud Studio、数据可视化

文章目录

  • 【腾讯云 Cloud Studio 实战训练营】一个新的趋势已来
    • 一、云市场与云开发
      • 1. 云市场的变革
      • 2. 云开发的趋势
    • 二、Cloud Studio
      • 1. 产品介绍
      • 2. 资费介绍
      • 3. 产品特点
      • 4. 使用流程
    • 三、案例应用体验
      • 1. 选择应用
      • 2. 项目初始化
      • 3. 项目运行
      • 4. 工作空间管理
      • 5. SSH连接
    • 四、实时数据可视化
      • 1. 项目创建
      • 2. 数据接口准备
      • 3. 引入需要的组件
      • 4. 编写核心代码
      • 5. 运行结果
    • 五、发布到代码仓库

一、云市场与云开发

1. 云市场的变革

回顾近10年的云市场的发展,可以说是产生了巨大的变化,最早云资源主要专注于服务器、云存储、域名、有限的云服务【如SMS、邮件】等。随着软件、硬件、大数据领域的不断发展,云市场能够提供的服务不断增多,包括云计算、对象存储、云数据库、音视频直播、代码托管等等。不仅如此,每一项产品也都在纵深挖掘,细化和扩充各种服务类别,拿轻量应用服务器来举例,已经可以快速创建网站、Web应用、小程序/小游戏、APP、电商应用、云盘、图床和开发测试环境等等,并且这已经是各大厂商的标配:

笔者也工作了近10年,上面提到的这些变化发生在最近几年,起初并不觉得这会对开发模式或整体的产品开发流程有什么大的影响,只是优化了运维部署以及封装了很多开箱即用的资源,为企业进一步降低了成本。但是最近Serverless、低代码平台、云IDE不断涌现,一次又一次对开发模式产生着冲击。之前在Serverless刚刚推出的时候就在腾讯云上玩耍了一下,不过只限于Demo。数月之前,实现了一个较为完整的案例,使用Amazon的各种云服务来支撑一个常见的电商场景。

整个过程基本不需要代码编写,只需要理清逻辑关系,短短几个小时就可以假设出一个功能较为完善的产品服务端,十分的高效。更重要的是,相当于一并完成了项目开发、部署上线的过程,因为全部流程都是在云端直接完成的。

2. 云开发的趋势

这不禁让我感到一丝担忧,虽然看似还没有大规模的使用,但绝对会成为一个趋势,因为整个流程中涉及到的云服务【云函数、云数据库等】都已经很成熟了,而现在又可以将他们用可视化、非代码的方式连接在一起。诚然,整个流程也许不能应对复杂的业务场景,必须由开发者在代码级别亲自操刀。正在小编感觉松一口气时。。。 云IDE再次出现!起初,我还是将其当作一个玩具来看的,毕竟真正的产品开发可能并不会采用,但是试用过之后,我的想法再一次产生了改变。一个很关键的点,开发者的不可代替性进一步被降低,这里指的是不同语言和技术之间的壁垒。
对于工作多年的开发者来说,学习一门新的语言其实是相对容易的,因为开发者此时已经有了相对完备的编程思维,对于不同编程语言的工作原理也是掌握的比较快的,反而遇到更多的是环境、规范方面的问题,并不是说这些问题有多么的难,而是学习成本主要集中在了这部分。设想一下,假如现在有一个工具,可以一键帮你搞定你需要的项目环境,并且不会搞乱你自己的系统环境,同时,自带一个Demo,让你一目了然项目的基本工作流程,这会是一种什么样的体验?

其实云IDE并不是最近才有的,最早可以追溯到很多年前,当时就已经有了项目管理以及自动化部署的工具,而云IDE本身的意义也不仅仅是将本地的编译器移动到了网页上。对于初学者而言,他们的起跑线已经不一样了,学习门槛也不一样了,感觉马上就要受到后浪又一轮的鞭挞了,好在对于开发者来说只要有意的去学习和留意,是很容易掌握的,而且并没有太多的学习成本。

二、Cloud Studio

之前试用过不止一个云IDE产品,来介绍一下本文的主角:腾讯云 Cloud Studio。

1. 产品介绍

以下简介来自官方:

  • Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。
  • Cloud Studio 作为在线 IDE,包含代码高亮、自动补全、Git 集成、终端等 IDE 的基础功能,同时支持实时调试、插件扩展等,可以帮助开发者快速完成各种应用的开发、编译与部署工作。

直接的感受就是把VS Code搬到了云端,并且支持我们需要的所有常用功能,我们也可以像在本地那样方便的拖拽窗口。同时,在项目运行过程中,可以随时访问,虽然没有绑定域名,但是却十分的方便。

2. 资费介绍

目前Cloud Studio每月赠送3000分钟标准型工作空间,也就是50小时,可以说是十分良心了,不知道会持续多久,大家趁现在赶快体验!

  • 标准型
    • CPU:2核/4GB
    • 存储:8GB
    • 资费:0.1 元/分钟
  • 计算型
    • CPU:4核/8GB
    • 存储:16GB
    • 资费:0.2 元/分钟
  • 专业性
    • CPU:8核/16GB
    • 存储:32GB
    • 资费:0.4 元/分钟

3. 产品特点

  • 应用场景【来自官方描述】
    • 快速启动项目:使用 Cloud Studio 的预置环境,您可以直接创建对应类型的工作空间,快速启动项目进入开发状态,无需进行繁琐的环境配置。
    • 实时调试网页:Cloud Studio 内置预览插件,可以实时显示网页应用。当您的代码发生改变之后,预览窗口会自动刷新,这样您就可以在 Cloud Studio 内实时开发调试网页了。
    • 远程访问云服务器:Cloud Studio 支持您连接自己的云服务器,这样就可以在编辑器中查看云服务器上的文件,进行在线编程和部署工作。
  • 支持语言
    • C语言
    • C++
    • C#
    • Java
    • Python
    • JavaScript
    • Go
    • R
    • Rust

4. 使用流程

  • 官方地址:https://www.cloudstudio.net
  • 注册登录


这里可以使用多种方式登录,支持微信、Github和CODING,其中CODING可以用于企业级项目管理和开发,提供了一套完整的在线项目管理功能,这里不多赘述。这里需要注意,如果使用Github登录,在使用之前需要先完成实名认证,入口在右上角的用户设置:

  • 功能界面

主要的工作界面十分简洁,我们首先需要创建一个工作空间,可以使用模板创建,也可以手动创建。手动创建适用于想要导入已有的项目,或者连接到已有的云服务器。本文将主要演示通过模板创建,并在其基础上进行开发,最后发布到Git仓库。

三、案例应用体验

1. 选择应用

应用推荐中我们可以直接体验一些完整的应用,当然在此之上修改也是可以的,比如我们打开一个贪吃蛇游戏:

2. 项目初始化

然后我们点击Fork按钮,开始初始化的流程。一般会根据项目空间的配置自动打开README.md文档,并且执行初始化的命令,我们只需要等待完成即可。

3. 项目运行

有些项目需要使用外置浏览器打开,现在我们已经完成了项目的初始化,并且正在运行中。

如果内置浏览器不能正常预览【重新打开也是一个有效的方法】,可以切换到端口标签页,然后选中正在运行的进程,再点击使用浏览器打开:

此时,只要保证项目运行,我们就可以随时访问了,十分的方面,效果如图:

4. 工作空间管理

创建一个工作空间后,我们可以随时关闭标签页,并在开发空间页面找到正在运行中的实例:

在这个界面中我们可以升级配置或终止实例,最后删除。

5. SSH连接

如果需要SSH链接,可以按如下操作:

粘贴到本地终端执行即可【第一次连接输入yes】,然后我们可以在如下路径找到当前的项目:

四、实时数据可视化

接下来,使用一个最基础的模板写一个比较实用的案例。从公共的天气数据接口获取数据,然后每分钟进行更新,同样也适用于其它类型的数据可视化。

1. 项目创建

空间模板中选择Python,然后等待项目启动。这是一个基础的Python Web Demo,主要修改其中的index.html文件:

2. 数据接口准备

OpenWeather是一个免费的天气查询接口,我们可以从其中获取数据,然后做分钟级的数据更新【这主要受限于数据接口本身的数据更新频率以及实际的需要】。

  • 接口注册地址

https://openweathermap.org,注册后邮件验证即可使用【可能需要等待30分钟来激活】。

  • 接口调用样例

https://api.openweathermap.org/data/2.5/weather?lat=40.7128&lon=-74.0060&units=metric&appid={YOUR_KEY}&lang=zh_cn

  • 数据返回样例
{
    "coord": {
        "lon": -74.006,
        "lat": 40.7128
    },
    "weather": [
        {
            "id": 800,
            "main": "Clear",
            "description": "晴",
            "icon": "01d"
        }
    ],
    "base": "stations",
    "main": {
        "temp": 30.09,
        "feels_like": 29.68,
        "temp_min": 28.3,
        "temp_max": 31.72,
        "pressure": 1007,
        "humidity": 39
    },
    "visibility": 10000,
    "wind": {
        "speed": 8.23,
        "deg": 300,
        "gust": 12.35
    },
    ...
}

我们可以使用温度、体感温度、湿度、风速等维度来构建一个不断更新的折线图。对应的字段为:main.temp,main.feels_like,main.humidity,wind.speed。

3. 引入需要的组件

关于图表部分,使用Echarts来完成,首先在页面中引入:

<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.2/echarts.min.js"></script>

然后初始化一个div,作为图表的显示区域:

<div id="main" style="width: 1200px; height: 800px;"></div>

4. 编写核心代码

删除页面中不需要的部分,然后编写核心的功能代码,同时修改一些样式【此处略去】:

let myChart = echarts.init(document.getElementById('main'));
    let dataX = [];  
    let dataTemp = [];  
    let dataFeelsLike = [];  
    let dataHumidity = [];  
    let dataWindSpeed = [];  

    function fetchDataAndUpdateChart() {
        // 如不工作,此处替换API KEY
        const API_URL = 'https://api.openweathermap.org/data/2.5/weather?lat=40.7128&lon=-74.0060&units=metric&appid=a36f2258e0dfa67b4e2ec2dc19cdc4c7&lang=zh_cn';
        
        fetch(API_URL)
            .then(response => response.json())
            .then(data => {
                let currentTime = new Date(data.dt * 1000).toLocaleTimeString();
                dataX.push(currentTime);
                dataTemp.push(data.main.temp);
                dataFeelsLike.push(data.main.feels_like);
                dataHumidity.push(data.main.humidity);
                dataWindSpeed.push(data.wind.speed);

                if (dataX.length > 10) {
                    dataX.shift();
                    dataTemp.shift();
                    dataFeelsLike.shift();
                    dataHumidity.shift();
                    dataWindSpeed.shift();
                }

                let option = {
                    title: {
                        text: 'Weather Data in ' + data.name
                    },
                    tooltip: {
                        trigger: 'axis'
                    },
                    legend: {
                        data: ['温度', '体感', '湿度', '风速']
                    },
                    xAxis: {
                        type: 'category',
                        data: dataX
                    },
                    yAxis: [
                        {
                            type: 'value',
                            name: '温度 (°C)'
                        },
                        {
                            type: 'value',
                            name: '风速 (m/s)',
                            position: 'right'
                        },
                        {
                            type: 'value',
                            name: '湿度 (%)',
                            position: 'right',
                            offset: 80
                        }
                    ],
                    series: [
                        {
                            name: '温度',
                            type: 'line',
                            data: dataTemp
                        },
                        {
                            name: '体感',
                            type: 'line',
                            data: dataFeelsLike
                        },
                        {
                            name: '湿度',
                            type: 'line',
                            yAxisIndex: 2,
                            data: dataHumidity
                        },
                        {
                            name: '风速',
                            type: 'line',
                            yAxisIndex: 1,
                            data: dataWindSpeed
                        }
                    ]
                };
                myChart.setOption(option);
            })
            .catch(error => {
                console.error("Error fetching data:", error);
            });
    }

    // 初始加载数据并设置图表
    fetchDataAndUpdateChart();

    // 每分钟刷新一次数据
    setInterval(fetchDataAndUpdateChart, 60000);

5. 运行结果

代码编写完成后,我们在底部的终端窗口使用Ctrl + C终止进程,然后使用以下命令重新启动服务:

python ./app.py

最终结果如下:

五、发布到代码仓库

提交到代码库前要注意是否需要修改README和yml两个文件,然后按如下步骤操作即可:

授权通过后选择账号信息,然后再次点击该按钮,选择公有仓库或私有仓库。选择需要提交的文件,再次点击Publish Branch按钮:

最终效果如下:https://github.com/zhu123759/cloud-studio-python-data-view【提交到仓库时可以为项目重命名】

扫描下方二维码,加入CSDN官方粉丝微信群,可以与我直接交流,还有更多福利哦~
在这里插入图片描述

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

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

相关文章

Datahub稳定版本0.10.4安装指南(独孤风版本)

大家好&#xff0c;我是独孤风&#xff0c;大数据流动的作者。 曾几何时&#xff0c;我在第一次安装JDK环境的时候也遇到了不小的麻烦&#xff0c;当时还有朋友就因为这个环境问题觉得自己根本不是编程的料&#xff0c;选择了放弃。当时有个段子说&#xff0c;“如果不是JDK环境…

生物学家呼吁:基因组测序是从大流行病中快速获得信息的最重要方法之一

生物学家Jason Ladner和Jason Sahl于2023年8月1日发表在《PLOS Biology》&#xff08;IF20229.8&#xff09;的一篇文章中主张&#xff0c;持续发展基因组测序是能从大流行病中快速获得信息的最重要方法之一。基因组测序对全球应对COVID-19产生了巨大影响&#xff0c;随着更多研…

与这个夏天的快乐与不快乐,都挥手告别吧!

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 伊姐 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 2023这个夏天&#xff0c; 地震、暴热、洪水……呼的一下&#xff0c; 密集发生的天灾让人揪心&#xff0c…

Unity-Shader-高亮Highlight

常用Shader-高亮&#xff0c;可动态调整高亮颜色、高亮强度范围/等级、高亮闪烁速度、高亮状态 Shader "CustomShader/Highlight" {Properties{_Color("Color", Color) (0.9044118,0.6640914,0.03325041,0)_Albedo("Albedo", 2D) "white…

vue自定义密码输入框解决浏览器自动填充密码的问题

浏览器对于type"password"的输入框会自动填充密码&#xff0c;但有时出于安全或者其他原因&#xff0c;我们不希望浏览器记住并自动填充密码。通过网上查到的一些解决方案&#xff0c;可以总结出以下几种解决方案(主要用edge浏览器进行测试)&#xff1a; 通过autoco…

玩一玩通义千问Qwen开源版,Win11 RTX3060本地安装记录!

大概在两天前&#xff0c;阿里做了一件大事儿。 就是开源了一个低配版的通义千问模型--通义千问-7B-Chat。 这应该是国内第一个大厂开源的大语言模型吧。 虽然是低配版&#xff0c;但是在各类测试里面都非常能打。 官方介绍&#xff1a; Qwen-7B是基于Transformer的大语言模…

[JavaScript游戏开发] Q版地图上让英雄、地图都动起来

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 第五章 Q版地图上让英雄、地图都动起来…

数据结构—图的遍历

6.3图的遍历 遍历定义&#xff1a; ​ 从已给的连通图中某一顶点出发&#xff0c;沿着一些边访问遍历图中所有的顶点&#xff0c;且使每个顶点仅被访问一次&#xff0c;就叫作图的遍历&#xff0c;它是图的基本运算。 遍历实质&#xff1a;找每个顶点的邻接点的过程。 图的…

数据结构笔记--链表经典高频题

前言 面经&#xff1a; 针对链表的题目&#xff0c;对于笔试可以不太在乎空间复杂度&#xff0c;以时间复杂度为主&#xff08;能过就行&#xff0c;对于任何题型都一样&#xff0c;笔试能过就行&#xff09;&#xff1b;对于面试&#xff0c;时间复杂度依然处在第一位&#xf…

量化交易可视化(9)-热力图

热力图的含义 热力图是一种用颜色编码数据密度的二维图表。它的含义是通过不同颜色的渐变来显示数据的相对密度或值的大小。 热力图通常用于可视化矩阵或二维表格数据&#xff0c;其中每个单元格的值被映射到一个颜色&#xff0c;从而形成一个色阶。较小的值通常用较浅的颜色表…

许多智能算法并不智能(续)

许多智能算法被认为并不智能&#xff0c;主要是因为它们在某些方面仍然存在一些限制。以下是一些常见的原因&#xff1a; 缺乏常识和理解能力&#xff1a;当前的智能算法主要依赖于大量的数据和模式识别来做出决策&#xff0c;但它们通常缺乏对世界的常识和深层理解。这意味着它…

视觉大模型的全面解析

前言 本文主要围绕Foundational Models&#xff0c;即基础模型&#xff08;通过自监督或半监督方式在大规模数据上训练的模型&#xff0c;可以适应其它多个下游任务。&#xff09;这个概念&#xff0c;向大家全面阐述一个崭新的视觉系统。例如&#xff0c;通过 SAM&#xff0c;…

nbcio-boot因升级mybatis-plus到3.5.3.1和JSQLParser 到4.6引起的online表单开发的数据库导入出错解决

更多功能看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 nbcio-boot因升级…

【雕爷学编程】Arduino动手做(01)---干簧管传感器模块2

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

接龙序列(14届)

对于一个长度为 K 的整数数列&#xff1a;A1,A2,...,AK&#xff0c;我们称之为接龙数列当且仅当 Ai 的首位数字恰好等于 Ai−1的末位数字 (2≤i≤K2≤i≤K)。 例如 12,23,35,56,61,11 是接龙数列&#xff1b;12,23,34,56 不是接龙数列&#xff0c;因为 56 的首位数字不等于 34…

matplotlib 笔记:plot 折线图

1 基本用法 import numpy as np import matplotlib.pyplot as plt x np.linspace(0,10,50) y np.tan(x)**2 np.cos(x)plt.plot(x, y) plt.show() 2 linestyle 折线图类型 import numpy as np import matplotlib.pyplot as pltx np.linspace(0,10,50) y np.tan(x)**2 np…

node配置Web 服务器

1、什么是 Web 服务器 Web服务器一般指网站服务器&#xff0c;是指驻留于因特网上某种类型计算机的程序&#xff0c;Web服务器的基本功能就是提供Web信息浏览服务。 它只需支持HTTP协议、HTML文档格式及URL&#xff0c;与客户端的网络浏览器配合。 大多数 web 服务器都支持服…

如何优化测试用例?

在我们日常测试工作中&#xff0c;编写测试用例往往花费较多时间&#xff0c;而且设计的测试用例冗杂和不完整&#xff0c;从而造成用例执行检查不完整&#xff0c;效率低下&#xff0c;不能及时发现项目缺陷。 因此提高测试用例编写和执行效率迫在眉睫&#xff0c;一般来说&am…

Dubbo3.0 Demo

将SpringBoot工程集成Dubbo 1.创建父工程 2.创建子工程consumer&#xff0c;provider 3.初始化工程 4.引入依赖 在provider和consumer中引入dubbo依赖 <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</a…

文心一言 VS 讯飞星火 VS chatgpt (73)-- 算法导论7.1 4题

四、如何修改 QUICKSORT&#xff0c;使得它能够以非递增序进行排序? 文心一言&#xff1a; 快速排序&#xff08;Quicksort&#xff09;是一种常用的排序算法&#xff0c;基于分治策略进行设计。默认情况下&#xff0c;快速排序会以递增序进行排序。若想修改快速排序以实现非…