使用 SmartIDE 开发golang项目
很荣幸在去年加入到 SmartIDE 产品组,从事开发工作,期间产品经历了无数个迭代,这是一段非常难忘的经历......
从项目开始一位大牛提出了一个哲学问题 —— 先有鸡还是有蛋(SmartIDE 如何开发 SmartIDE),借着这话题,本文将以 Golang 项目 SmartIDE CLI 为例进行演示。
概述
OpenAI 的解释是:SmartIDE 是一款软件开发环境的工具,它使用容器技术来解决软件运行环境的一致性、标准化、快速获取、可扩展性和可维护性问题。它将 IDE 的边界重新定义为包括代码编辑器、运行时、SDK、中间件、应用服务器、配置和底层操作系统等内容。
一些适用的场景:
- 开发环境腐化
- 作为一个工程狮(工程师),底子里就是喜欢各种尝试新事物(新工具、新框架...),有时候玩翻车了,然后告诉领导 / 老板今天我要闭关修炼(重装系统)
- 程序员就是多核的电脑,项目之间来回切换,新旧不同的项目,甚至不同的技术栈,开发调试环境不能隔离,折腾不说,很容易带着问题就上了生产
- 自己的电脑开了一堆的软件,好像这个不能关,那个也得留着,此时再来调试或者压测,电脑直接嗝屁了
- 程序员到处救火,一个开发环境搞半天,增加了对客户或者用户的响应时间,市场压力山大
- 项目组进了小鲜肉,一个环境要帮忙装半天
- 教学用途
- 演示一下,不做更深入的开发
问题:
SmartIDE 的本质还是 WebIDE,所以缺点也是很明显。
- 体验上没有桌面IDE流畅,貌似又回来了原来C/S架构的看不中B/S架构,但是大势所趋现在的B/S架构的市场占有率是碾压式的。
- 服务器资源的限制,给每个用户、每个项目单独划分一定的资源
- 受限于网络传输的速度,这个不太好解决,就算是内网也一样可能出问题
总结:
SmartIDE 对于市场来说还是比较新,还需要时间才能够推广开来,易用性 和 流畅度总会找到一个平衡。
架构
简单来说,按照用户的需求,比如技术栈、IDE类型,本地或者Server 通过 CLI工具调度 docker、k8s ,按照编排好的镜像创建独立的开发环境给到用户使用。
开发视图
从开发的角度,有三个重要的组成部分,CLI、Server、Image
- CLI, 通过 Cobra 框架实现对shell命令的支持,比如 command、args、flag 这些元素,在业务上主要是支持在 本地、远程主机、k8s 三类资源上创建独立开发环境
- Server,是一个运行在服务器上的调度平台,基于 Gin Vue Amin 这个框架的插件式开发,即不动核心代码在单独的文件夹中开发业务即可
- Image,为各种语言编排了独立的镜像,并根据共性编排了base镜像
快速开始
安装 SmartIDE CLI
参考:https://smartide.dev/zh/docs/install/cli/
建议安装每日构建版,以mac为例
# Intel芯片
curl -OL "https://smartidedl.blob.core.chinacloudapi.cn/builds/$(curl -L -s https://smartidedl.blob.core.chinacloudapi.cn/builds/stable.txt)/smartide-osx" \
&& mv -f smartide-osx /usr/local/bin/smartide \
&& ln -s -f /usr/local/bin/smartide /usr/local/bin/se \
&& chmod +x /usr/local/bin/smartide
环境
## 国内安装包下载
wget https://smartidedl.blob.core.chinacloudapi.cn/hybrid/sysbox/sysbox-ce_0.5.2-0.linux_amd64.deb
## 国际安装包下载
wget https://downloads.nestybox.com/sysbox/releases/v0.5.2/sysbox-ce_0.5.2-0.linux_amd64.deb
## 删除现有的所有容器
docker rm $(docker ps -a -q) -f
## 安装
sudo apt-get install ./sysbox-ce_0.5.2-0.linux_amd64.deb
## 查看运行状态,注意 active (running) 文本
sudo systemctl status sysbox -n20
启动
创建环境
通过CLI创建
## 添加 host
smartide host add {vm-host-ip} --password {vm-password} --username {vm-username}
## 在 vm 上新建工作区
smartide start --host {host-id} --repourl https://github.com/SmartIDE/SmartIDE.git
启动完成后,会自动在默认浏览器中打开webide,在terminal中会自动运行一些shell command,让它们执行完即可
通过 Server 创建
公网测试地址: https://dev.smartide.cn/
创建成功后,可以点击icon打开WebIDE
安装工具
手动安装go插件
工具安装
全选,等待安装结束
调试
进入到CLI目录下,比如 http://localhost:6900/?folder=vscode-remote://localhost:6900/home/project/cli
创建 lauch.json 文件
基本调试
以version命令为例
{
"name": "Version",
"type": "go",
"request": "launch",
"console": "integratedTerminal",
"mode": "debug",
"apiVersion": 2,
"program": "${workspaceFolder}",
"showLog": true,
"trace": "verbose",
"args": [
"version"
]
},
Start 命令调试
## 创建目录
mkdir -p /home/smartide/test
## 添加配置到launch.json
{
"name": "Start",
"type": "go",
"request": "launch",
"apiVersion": 2,
"program": "${workspaceFolder}",
"cwd": "/home/smartide/test",
"console": "integratedTerminal",
"mode": "debug",
"args": [
"start",
"--repourl", "https://github.com/idcf-boat-house/boathouse-calculator.git",
"-d"
]
},
进入断点
使用 SmartIDE 开发golang项目的更多相关文章
- Emacs中多个golang项目的配置方法
概述 最近使用golang开发项目时, 发现有时需要同时进行多个golang项目. 在这种情况下, 如果把所有的项目都放在 GOPATH 之下, 不仅管理麻烦(因为各个项目需要提交到不同的代码库), ...
- Sublime for mac 开发Golang : 一步步环境配置
安装Golang 在官网上直接下载安装包就可以了.下载pkg格式的最新安装包 ,直接双击运行,一路按照提示操作就可以完成安装. 或者使用brew进行安装 brew install go 完成安装之后, ...
- golang 项目实战简明指南
原文地址 开发环境搭建 golang 的开发环境搭建比较简单,由于是编译型语言,写好 golang 源码后,只需要执行 go build 就能将源码编译成对应平台(本文中默认为 linux)上的可执行 ...
- IntelliJ IDEA开发golang环境配置
IntelliJ IDEA开发golang环境配置 首先把GO安装好...(自行安装,附上一篇我之前写的MAC安装GO) 安装IntelliJ IDEA,下载地址: https://www.jetbr ...
- Golang项目部署
文章来源:https://goframe.org/deploymen... 一.独立部署 使用GF开发的应用程序可以独立地部署到服务器上,设置为后台守护进程运行即可.这种模式常用在简单的API服务项目 ...
- Angular企业级开发(5)-项目框架搭建
1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...
- C语言可以开发哪些项目?
C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中--,这些迷茫也导致了我们在学习的过程 ...
- NET开发学习项目资源(2)
NET开发学习项目资源 击标题链接即可下载. 目录: 1.征婚交友网站 前台交友信息和后台会员管理两大部分组成. 前台功能模块 该模块主要包括查询交友信息.显示交友信息.会员登录.会员信息管理.修改会 ...
- 使用EmBitz开发STM32项目的环境配置
一.EmBitz软件获取与安装 1.EmBitz软件的获取 EmBitz原名Em::Blocks,是基于Code::Blocks开发的,面向嵌入式的C/C++集成开发环境.支持J-Link和ST-Li ...
- IDEA开发多项目的示例
前言:慢慢习惯用IDEA了,觉得用起来确实还不错,有VS的感觉,但是缺点就是每次启动慢,如果修改以后反应也需要好久,这方面做得不好.但是职能提示个人觉得要比Eclipse好太多.好了现在我用IDEA来 ...
随机推荐
- Jenkins配置项目构建的钉钉通知
在任意一个钉钉群里创建自定义的钉钉机器人,然后能够看到钉钉开放的webhook,复制webhook. Jenkins中安装钉钉插件,然后在项目的配置当中,构建后操作里添加钉钉报警. 安装钉钉通知插件 ...
- 详解JS中 call 方法的实现
摘要:本文将全面的,详细解析call方法的实现原理 本文分享自华为云社区<关于 JavaScript 中 call 方法的实现,附带详细解析!>,作者:CoderBin. 本文将全面的,详 ...
- 常量的定义(const和#define)
定义常量的方法 //均要在调用前(区别全局变量!!) 1.使用#define预处理器 2.使用const关键字 1.#define #define 常量名 常量值 //定义形式,常量名不可以是数字开头 ...
- PAT (Basic Level) Practice 1003 我要通过!分数 20
"答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件,系统就输出"答案正确&q ...
- 企业运维 | MySQL关系型数据库在Docker与Kubernetes容器环境中快速搭建部署主从实践
[点击 关注「 WeiyiGeek」公众号 ] 设为「️ 星标」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 本章目录 目录 ...
- Vue3 Vite3 多环境配置 - 基于 vite 创建 vue3 全家桶项目(续篇)
在项目或产品的迭代过程中,通常会有多套环境,常见的有: dev:开发环境 sit:集成测试环境 uat:用户接收测试环境 pre:预生产环境 prod:生产环境 环境之间配置可能存在差异,如接口地址. ...
- System.IO.FileSystemWatcher的坑
System.IO命名空间下面有一个FileSystemWatcher,这个东西可以实现文件变动的提醒.需要监控文件夹变化(比如FTP服务器)的情形非常适用. 需要监控文件新建时,我们可以这么写: _ ...
- SQL语句编写的练习(MySQL)
SQL语句编写的练习(MySQL) 一.建表 1.学生表(Student) 学号 | 姓名 | 性别 | 出生年月 | 所在班级 create table Student( sno varchar(2 ...
- coding上创建项目、创建代码仓库、将IDEA中的代码提交到coding上的代码仓库、Git的下载、IDEA上配置git
文章目录 一.Git的安装以及子啊IDEA上配置Git(下载好的可以跳过) 二.怎样让IDEA和Git建立关系 三.在coding上创建项目 四.在coding上创建代码仓库 五.Git工作理论 六. ...
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-SumGNN:通过有效的KG聚集进行多类型DDI预测
3.(2021.3.26)Bioinformatics-SumGNN:通过有效的KG聚集进行多类型DDI预测 论文标题: SumGNN: multi-typed drug interaction pr ...