摘要:华为云CodeArts IDE Online服务,提供了可随时随地编码的云上开发环境,同时具备开放的生态和独立插件市场,旨在为开发者提供环境快速获取、功能开箱即用、跨越计算架构、随时随地访问、横向可扩展和支持第三方集成等能力,打造数字时代的开发利器。
本文分享自华为云社区《随时编码即刻创新,华为云发布CodeArts IDE Online服务》,作者: 华为云头条 。
进入二十一世纪20年代,“软件吞噬世界”已经成为现实,新计算、5G、人工智能、DevOps、云原生、应用现代化等众多新概念扑面而来,人类的生产、生活、科研、学习等活动几乎都会和软件产生关联。
软件开发是把人类智慧以代码方式表达出来的过程,面对不可预知且快速变化的世界,开发者面临着前所未有的巨大挑战。例如,软件交付周期和迭代速度要求更高、开发者需要快速学习各种新技术、开发时间碎片化严重、分散的交付团队协同困难、开发与运行环境计算架构不一致将带来交叉编译风险等等。
软件的生产力往往由开发者和开发工具共同决定,开发工具对效率的影响不可忽视。“工欲善其事,必先利其器”,面对新时代的重重挑战,开发者在不断提升自身技能的同时,也对手中的开发工具产生了新的思考和诉求。
2月16日,华为云发布CodeArts IDE Online服务,提供了可随时随地编码的云上开发环境,同时具备开放的生态和独立插件市场,旨在为开发者提供环境快速获取、功能开箱即用、跨越计算架构、随时随地访问、横向可扩展和支持第三方集成等能力,打造数字时代的开发利器。
华为公司自上世纪90年代起即投入软件研发,历经嵌入式软件开发、企业化软件开发、服务化应用开发和云服务开发等多种不同研发形态。
为支持研发效率提升、保证供应链安全,研发团队使用的开发工具从文本编辑器,到图形化的开发工具,再到支持多语言和可扩展的集成开发环境(IDE),逐步进化成支持新语言框架、集成开发者作业流和支持横向能力扩展的桌面IDE和WebIDE,满足了多业务平台的复杂开发要求。在这个过程中,华为总结出开发工具的四条“秘籍”:
面对嵌入式开发领域中多版本分支、多硬件类别和多外部依赖等问题,为帮助开发者提升环境准备效率,华为在深入研究IDE技术内核的基础上,结合云计算的容器技术,推出了内部使用的WebIDE业务形态。
新的业务形态支持开发者快速申请和获取复杂的开发环境,无需配置即可开展工作,将环境准备时间从天级缩短到分钟级。
以代码补全为例,通常有两个技术方向:其一为“AI配对程序员”,开发者用自然语言注释描述,AI自动生成代码;另一个是短符号的“Tab Complete”代码生成。
短期看来,类似AI配对程序员的技术重点是编程辅助,不会进入主作业流程。而短符号代码生成的“Tab-Complete-Done”体验,即在短前缀或无前缀条件下,利用轻量级AI模型对不同场景进行补全结果排序,再由开发者多次敲击Tab键连续完成短符号的代码生成,会让开发者拥有“一切尽在掌握”的感觉,这也成为华为智能化开发的研究重点。
华为设立了与业界最大规模插件生态市场相兼容的插件标准,基于开发者作业流交付大量在IDE中使用的业务插件;同时成立了辅导团队开发者的官方组织,建立了内置于IDE内的独立插件市场。
这些举措能够帮助开发者在一个IDE工具内即可流畅完成开发者作业流,补齐组织内开发人员技能差异,提升开发者研发效率。
为应对分布式开发团队普遍存在的协同和远程办公问题,华为流程IT和工具团队联合推出“在线安全开发”解决方案。
基于安全网络通道、安全数据保护和异常环境检测机制,开发者可以在家庭或外部网络条件下接入,在保证开发体验的前提下,实现核心数据和研发信息保护。该能力有效支撑了华为数万开发者的研发需要,让效率与安全兼得。
华为云CodeArts IDE Online服务融合了华为在软件开发领域的丰富经验以及在开发工具上的能力积累:
面对当前云原生和应用现代化的开发需要,华为云CodeArts IDE Online服务提供了以下新特性:
支持开发者在10秒内快速申请获得开发环境,启动速度相比上一版本提升2倍,环境准备省时省力。开发环境功能齐备,包含开发者日常使用的编码、调试、运行、测试等功能,同时预置Java、Python、C/C++,JavaScript、Go等主流开发语言支持,并可自行扩展。
支持开发者申请不同计算架构(ARM和x86)的开发环境,并可通过运行于不同设备或操作系统上的浏览器访问。且支持一个开发者同时申请多个开发环境,互相不受影响,所提供的云上开发环境算力规格可以远超个人电脑。
支持开发者自定义开发桌面,支持不同配色风格和中英文语言显示。基于内置的插件市场,开发者可以方便的搜索浏览、自动或手工安装插件,实现能力横向扩展,还可按照个人喜好自定义插件位置和界面风格。
提供开放API接口,支持以云服务方式被第三方业务集成并融入开发作业流,满足各类企业的不同开发场景。可根据参数定义,设置环境启动后的技术栈、语言支持、环境变量、插件加载和代码分支,为企业贯彻和执行研发规范提供有效的技术手段。
兼容业界最广泛采用的插件标准,提供独立的插件市场,让开发者既可以享有海量的业界插件,又能实现独立自主的插件安全。独立插件市场支持开发者注册发布商,提供了支持插件开发所需的开放标准、开源框架、打包工具,并支持插件的全生命周期管理。
如今,华为云CodeArts IDE Online服务已经在华为公司广泛应用,服务多个业务线。例如,华为某产品线涉及大量嵌入式开发,面对复杂的产品形态和版本组合,开发者需要时刻应对开发环境准备缓慢、跨操作系统反复切换环境和代码下载耗时长等诸多问题,严重制约开发者交付效率。
基于CodeArts IDE Online提供的在线编程技术和优化的开发者作业流,交付团队将开发环境准备时间从天级缩短到分钟级,且环境就绪后可用性达100%;开发人员无需跨操作系统开发,降低交叉编译风险;代码根据版本需要预置分支或预加载,构建配置云化且支持一键执行,构建效率从10分钟优化到1分钟以内。
已有超过1万名华为内部开发人员据此完成海量版本迭代和需求开发,将个人开发作业流综合效率提升数倍。
为开发者提供端云一体、极致体验、功能强大、生态开放的IDE开发工具是华为云CodeArts产品团队的一贯理念。未来,华为云将在开发工具领域持续创新,提供功能更强、体验更好、内核自研的IDE工具,持续为开发者提供优质服务。
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir