精华内容
下载资源
问答
  • 流程即代码:云研发、低代码 IDE —— Uncode
    千次阅读
    2021-03-29 00:29:09

    在先前的一系列《云研发:研发即代码》文章里,我们介绍了软件工程的代码化闭环。同时,在《Water:云研发架构模式》介绍了设计这样的开发环境里,我们所需要的一些模式。今天呢,作为这一系列的落地实践,我们将介绍云研发 IDE的设计思想,以及如何实现,当然还有一点儿早期代码:https://github.com/inherd/uncode。

    第一次声明:这是一个概念性 IDE 的设计,暂不适合任何生产环境。

    在开始真正阅读之前呢,为了能更好地让大家理解,我们要回顾一下软件工程行业:

    • DevOps 理念在国内的软件行业有了长足的发展,在包括传统企业(银行、制造业)在内的公司里已经广泛接受,并进行了大规模推广。

    • 云原生技术已经成为市场的主流趋势。云迁移与遗留系统上云是市场的一大热门话题。

    • 中台方法论在实践上还缺少真正的成功案例。

    • 低代码/无代码平台逐渐成为新的建设目标。

    • 云开发有了越来越多的中小规模应用案例。

    • AI 代码生成正在被小范围验证。

    从整个行业而言,人们的关注点一直是如何提升技术生产力? 现在技术到了一个新的阶段了,而需求的转换大大限制了人们的开发速度。于是无论我们的 DevOps 和云开发实施得再好,也会陷入需求与技术隔离的瓶颈。这就是为什么我们需要云研发 理论体系 :),通过代码化的方式,一站式解决需求到设计,再到代码的问题。

    对于云研发理论来说,我已经设计好了理论基础、软件架构、开发模式,并且对其中的一系列东西进行了验证,如:文档代码化、需求代码化、代码的代码化 等。

    我们需要一个容器,把这些内容、模式、代码整合到一起,这就是 Uncode,一个概念性的云研发 IDE。

    Uncode,一个云研发 IDE

    Uncode 是一个面向云研发时代设计的下一代概念性 IDE。特性:

    • 流程化为领域语言。Process as code

    • 一切皆 DSL。万物代码化

    • 开发环境即流程

    简单来说,你可以在这个 IDE 上完成:需求的编写,转换需求为设计,设计关联代码,禅模式编程,开发完即可上线。

    与之相对比的是,传统的一站式 DevOps 门户,尽管你可以通过跳转来完成,但是无法相互关联和设计。与之相近的是 GitOps,即将应用系统的声明性基础架构和应用程序存放在 Git 版本库中。但是它们都不闭环,也不完整。

    云研发 IDE 模式:流程即领域语言

    回到软件开发上,我们的软件开发需求始于一个大特性或者史诗故事,这些故事会转换为一个 feature,如 Cucumber 中的:

    # author: Phodal HUANG
    # status: doing
    # language: zh-CN
    功能: 第一个用户故事
    场景打开 Uncode
    假如我在 Terminal 工具里
    当输入 uncode
    那么则能在 Uncode IDE 里打开当前项目
    

    需求设计人员在这一步之前,将需求转换为了故事,故事与特性之间的关系记录在这个 feature 中。开发人员从 IDE 中看到需求,标记了对应的状态 status,就可以进入代码的设计阶段。

    在设计这个阶段,我们先设计了 design 的三种类型: flow、 model、 ui,对应于流设计、模型设计和 UI 设计。而我们要在 Uncode 中实现的部分便是需求与模型、流和 UI 的绑定。围绕模型,我们还得构造统一的领域语言,用于自动化关联接口与设计。从模式上来说,这个和无代码/低代码的开发是相似的。

    唯一不同的是描述方式。使用领域特定语言来描述内容,我们才能对系统进行合理地重构。

    云研发 IDE 模式:一切皆文件

    Linux/Unix下的哲学核心思想是『一切皆文件』。

    在现今的开发环境之下,我们在看板上挑选卡片,又或者是通过低代码编辑器生成,使用的存储介质都是数据库。而数据库这些东西并不存在于开发环境中,而是放置于远程服务器上。这就造成了另外一个痛点,无法简单反向关联、需求与代码隔离等等。

    于是,作为云研发 IDE 的第二个模式,将所有的内容使用文件保存,并且使用版本管理工具(如 Git)进行管理。如我们的需求以类似于代码的形势存储在数据库中,可以实现以下特性:

    • “不可伪造”

    • “全程留痕”

    • “可以追溯”

    • “公开透明”

    • “集体维护”

    没错,这就是一个区块链系统。一旦需求发生了变化 ,你可以即刻感知到。不过,一旦你的代码与模型不相符合,你的代码就无法提交,或者模型被自动修改 :(。

    云研发 IDE 模式:开发环境即流程

    作为一个集成开发环境,现有的 一站式 DevOps 软件研发管理协作平台 都应该只被当作管理和展示用途。而从设计本身来说,一个 Dashboard 和一个开源工具,本身就分工。

    我们在代码库上有了需求,那么我们可以借助于 IDE:

    1. 将需求以看板的形式在本地重新可视化出来。

    2. 将设计领域的语言在本地可视化出来,并将之与代码进行关联。

    3. 高亮需要所有修改的代码块。如 Controller、View 等。

    4. 将模型的修改反向关联到设计上,以实时追踪设计的正确性。

    我们还可以做一些不那么正确的事情 ,如锁定开发人员的修改范围。

    云研发 IDE 模式:填空式/选择式编程

    对于软件架构师来说,人们经常有这么一些痛点:

    • 面对的是缺乏经验的开发者,难以快速地推进系统的开发。

    • 开发者缺乏对系统的了解,在错误的地方修改错误的代码。

    因此,回到 TypeFlow 的观点上,我们既然已经设计好了模型,设计好了输入和输出,那么我们一定能生成中间的方法及其返回值,并为其设计一个 mock 的对象。如:

    @RequestMapping("/")
    String home() {
    return "Hello, World!"
    }
    

    这种模式对于业务应用开发来说,非常易于实现 —— 生成绑定过程中的各类函数等等。

    选择式编程。而一旦我们在组织内的所有代码都被索引之外,我们有能力通过识别输入和输出,以及对应的方法名,就能在 IDE 中推荐对应的方法让你选择。

    云研发 IDE 基础要素

    就这么一看,我们只需要搞好 IDE 的事情即可。然而, 并非如此,我们还要做的事情还有一些:

    1. 开发即部署。即 local dev 便是 dev server,可直接接入现有的系统。

    2. 万物即 DSL。具备一定等级的程序语言设计能力。

    3. API 的 API。即将现有的内部、外部 API 进行抽象化设计,以提供快速可用的 API。

    开发即部署 —— 云开发环境

    从开发层面来看,我们一直在往复地浪费本地环境和线上开发环境,与此同时还有对应的测试运行时间、构建时间等。我们需要一个于云开发环境的机制。

    加速联调、测试过程。当我们的本地环境上云之后,一旦需要与其它系统对接时,所有的开发、测试效率将大大提升。譬如说,我们的接口需要多提供一个参数,传统模式之后,我们要在本地运行,再通过流水线构建和部署。而现在,不再需要这个过程了,只需要配置好 Gateway,轻轻松松进行开发。

    加速环境搭建。我们不再需要在本地配置开发环境,只需要 1-click 就可以在本地 IDE 里直接调试。

    市面上已经有一个勉强配合的概念:Nocalhost

    抽象的抽象:DSL

    对于需求、设计、开发、测试等的抽象,一直是我在去年研究的重点,它包含了:

    • 需求的抽象

    • 设计化为抽象

      • 架构描述语言

      • 统一建模语言

    • 版本管理抽象

    • 构建工具抽象

    即将这一系列的步骤转换为领域特定语言 —— 只有将流程、工具、行为进行抽象,我们才得以优化整个系统。

    胶水设计:API 的 API

    软件开发是一项复杂的团队活动。在一个系统里,我们要与大量的内、外部系统进行关联。而为了简化开发人员的负担,我们需要提供一个新的 API 来将现有的 API 进行封装。

    如在现有的模式之下,为了记录一个日志,我们需要在依赖管理工具中引入对应的依赖,再添加相当的代码。而所有的 API 都是在更新的,这一系列应该将由 IDE 本身来完成。在这种模式之下,我们只需要输入对应的 snippets,便能完成这一系列的自动化过程操作。

    技术细节

    最后,我们还是回到代码上:https://github.com/inherd/uncode/

    架构设计

    我决定使用我设计的新架构设计套路来展示一上 Uncode IDE 的架构。由于不确定性较大,现有的系统是一种介于单体与微架构 + 模块化的方式设计的,我想了想后来就称之为流体模式。一种在持续演进的过程中,不断进行不可预料地拆分架构单元的模式。

    在驱动方式上,由四种模式构成:

    • 模块化。

    • 管理和过滤器。主要进行领域特定语言的设计

    • 搭档模式(sidecar)。将诸如语言解析等独立为进程,通过进程调用来实现跨平台

    • 容器桥。将 UI 展示与逻辑相隔离,让 IDE 的大部分组件与 UI 无关。

    同时系统的物理设计上,打算采用领域驱动的方式进行。

    框架选型

    考虑到这是底层开发 + 系统编程,我们:

    1. 使用 Rust 来作为主要开发语言

    2. 在 UI 展示上,暂时使用 Tauri(WebView 容器) + React 来展示需求(本地看板)与设计(建模等)。

    3. 使用 TypeScript 作为 UI 部分开发语言

    4. 使用 RPC 作为与多个 DSL 的通信协议

    5. ……

    依旧地,这个项目将继续在 Inherd 小组上开发~~。

    FAQ 及其它

    代码:https://github.com/inherd/uncode/

    vs Intellij IDEA or VSCode / Theia

    并非完全竞争关系,编码这部分的功能,还是这两货比较流行。Uncode 不会在前期造这方面的轮子,只是显式地集成它们,或者被集成。

    Uncode 优先解决 DevOps 的本地化,将其融入开发的开发过程的问题。

    其它

    最后一次声明:这是一个概念性 IDE 的设计,暂不适合任何生产环境。 欢迎加入云研发的微信研讨群。

    更多相关内容
  • 易语言仿易语言代码IDE源码.rar 易语言仿易语言代码IDE源码.rar 易语言仿易语言代码IDE源码.rar 易语言仿易语言代码IDE源码.rar 易语言仿易语言代码IDE源码.rar 易语言仿易语言代码IDE源码.rar
  • 仿易语言代码IDE源码例程程序结合易语言ZYUI模块模仿实现易语言代码IDE效果。 点评:仿易语言代码IDE源码仅供参考。
  • 易语言源码仿易语言代码IDE源码.rar
  • 仿易语言代码IDE源码例程程序结合易语言ZYUI模块模仿实现易语言代码IDE效果。点评:仿易语言代码IDE源码仅供参考。
  • cubeide代码补全

    2020-12-05 22:51:47
    cubeide代码补全
  • 本插件适用于STM32CubeIDE_1.8.0.现在最新版本,亲测有效,其他版本可能不适用。 方法:复制压缩包内的文件到STM32...重启STM32CubeIDE,就有代码补全自动功能。 ****org.eclipse.cdt.ui_7.1.100.202101112014.jar****
  • 将文件内的jar文件复制到STM32CubeIDE安装目录下的plugins文件夹下,重新启动IDE,即可实现代码补全。
  • 将 jar 包保存到 ..\STM32CubeIDE_1.9.0\STM32CubeIDE\plugins 文件夹下,重启 IDE 即可。
  • 2021/8/6正常使用,放到的STM32CubeIDE\plugins目录后覆盖使用!
  • 在STM32CubeIDE安装目录下的plugins文件夹下,找到 org.eclipse.cdt.uixxxxxxxx.jar,把压缩包内....复制到plugins文件夹下覆盖,即可打开STM32CubeIDE的自动代码补全功能 注意要改压缩包内文件名和原文件一致,然后覆盖
  • 现在是2021-05,配合刚装最新版本的IDE,确实能用。...复制压缩包内的文件到STM32CubeIDE安装目录下的plugins文件夹下,即可打开STM32CubeIDE的自动代码补全。 STM32CubeIDE 1.6.1 自动代码补全插件
  • STM32CubeIDE 1.7.0 代码自动补全。2021.8.6
  • 放入plugins文件夹就行
  • 复制压缩包内的文件到STM32CubeIDE安装目录下的plugins文件夹下,即可打开STM32CubeIDE的自动代码补全。
  • LiteIDE 代码补全(不能自动提示代码内容)的解决方法-附件资源
  • STM32cube ide1.6.1代码自动补全 复制文件到STM32CubeIDE安装目录下的plugins文件夹下,就可以进行STM32CubeIDE代码自动补全
  • 复制压缩包内的文件到STM32CubeIDE安装目录下的plugins文件夹下,即可打开STM32CubeIDE的自动代码补全。
  • STM32cube ide1.7.0代码自动补全 复制文件到STM32CubeIDE安装目录下的plugins文件夹下,就可以进行STM32CubeIDE代码自动补全
  • 阿里开源的 IDE 代码规约检测插件,阿里IT大佬们t极力推荐,为开发人员减少困难,提高开发效率。
  • python web ide代码

    2018-07-07 21:40:05
    附件为python web ide开发工具,对于研究开发web ide来说很有用
  • 易语言IDE完善版源代码.zip
  • STM32cube ide1.5\1.6\1.7代码自动补全 复制文件到STM32CubeIDE安装目录下的plugins文件夹下,就可以进行STM32CubeIDE代码自动补全
  • 网络IDE移动版 源代码Web IDE应用
  • golite IDE

    2018-06-13 00:31:43
    golang 开发 深受欢迎的IDE:goLite 平台: windows平台
  • STM32cube ide1.6.1代码自动补全 复制文件到STM32CubeIDE安装目录下的plugins文件夹下,就可以进行STM32CubeIDE代码自动补全
  • Unity 用什么IDE比较好?

    千次阅读 2021-11-14 00:23:45
    缺点:IDE比较臃肿 实测: 什么文件都不打开,打开欢迎页面需要400M 首次从Unity中打开脚本文件,需要20秒的加载时间 加载工程项目文件之后,需要1G 实际使用时,内存占用甚至可达3G 方案二 Rider 优点...

    方案一 原生方案

    Visual Studio

    优点:功能全面,配置简单,是Unity官方推荐的方案,可以选择与Unity一起捆绑安装

    缺点:IDE比较臃肿

    实测:

    什么文件都不打开,打开欢迎页面需要400M

    首次从Unity中打开脚本文件,需要20秒的加载时间

    加载工程项目文件之后,需要1G

    实际使用时,内存占用甚至可达3G

    方案二

    Rider

    优点:比Visual Studio好用,功能完善,版本管理比Visual Studio要方便

    缺点:付费,运行时内存占用达2G,新版本不支持中文

    实测:

    只打开欢迎页面,就需要1.5G

    首次从Unity中打开脚本文件,需要30秒的加载时间

    加载工程项目文件之后,Rider会占用2G内存

    此外,还需要要单独运行一个dotnet的进程,占用1G内存

    合计占用3G内存

    方案三

    VS Code

    缺点:需要手动配置,安装相关插件

    优点:轻量级编辑器

    编辑器在运行时占用80M内存空间

    首次从Unity中打开脚本文件,只需1秒的加载时间

    与Unity协同工作时,需要额外加载一个mono进程,约500M

    合计占用600M内存,简直不要太友好

    如何配置VS Code for Unity?

    1. 下载 VS Code

    Visual Studio Code for Mac 

    2. 安装插件

    前面一个是C#环境,后面是Unity支持工具

    安装之后会提示Unity中最基本的类和属性,比如GameObject和Transform

    下面这个是函数提示插件,可以快速添加常用的函数

    比如Monobehaviour类的OnCollisionEnter等

    可选插件:

    自动生成三斜杠注释、简体中文语言包

    3.配置智能提示

    从Browse选择Visual Studio Code.app

    (注意:必须是从Browse选择)

    在设置中搜索 omnisharp.useGlobalMono,设为always

    可见,已成功显示智能提示。

    如果智能提示失效,可能是环境没加载好,重启一下VS Code就好了。

    4.1.推荐主题

    4.2.自定义主题

    在设置中搜索"主题"

    按照原格式追加以下配置: 

        "workbench.colorCustomizations": { //覆盖当前所选颜色主题的颜色
            "editor.background": "#282D3F", //编辑器背景色
            "editor.selectionBackground": "#3514c554", //用户选中代码段的颜色 
            "editor.findMatchBackground": "#ff0000", //当前搜索匹配的颜色
            "editor.findMatchHighlightBackground": "#fa0a01", //其他搜索匹配项的颜色
            "editor.findRangeHighlightBackground": "#ff9900", //限制搜索范围的颜色
            "editor.lineHighlightBackground": "#00000000", //光标所在行高亮内容的背景颜色
            "editor.lineHighlightBorder": "#00000000" //光标所在行四周边框的背景颜色
             },
            "editor.tokenColorCustomizations": {
            "comments": "#8668a1", // 注释
            "keywords": "#c124ff", // 关键字
            "variables": "#07ff7b", // 变量名
            "strings": "#07ff7b", // 字符串
            "functions": "#f58e07", // 函数名
            "numbers": "#fa3c65" // 数字
             },

    5.其他插件

    Touchbar、前进后退按钮

    附:https://code.visualstudio.com/docs/other/unity

    电脑的推荐配置

    做Unity开发,内存至少还是得有16GB。

    如果只有8GB,用着会很不舒服。

    打开Unity,1.6G

    打开Visual Studio,2~3G

    打开浏览器,10个页面,2G

    系统,2G

    这就已经满了,虽说系统会分配虚拟内存,但是虚拟内存太慢了。

    最后说两条:

    最好不要买M1系列芯片的Mac,否则会踩很多别人没有遇到的坑

    最好还是不要用Mac来开发Unity

    展开全文
  • STM32CubeIDE代码自动补全代码插件
  • 易语言源码插入代码到易语言IDE源码.rar 易语言源码插入代码到易语言IDE源码.rar 易语言源码插入代码到易语言IDE源码.rar 易语言源码插入代码到易语言IDE源码.rar 易语言源码插入代码到易语言IDE源码.rar ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 415,621
精华内容 166,248
关键字:

代码ide