• [技术干货] 《ONAP技术详解与应用实践》读书笔记17
    5.10 UUI功能介绍UUI (Usercase UI)为运营商和终端用户提供图形化界面以进行自助管理与监控。UUI的目标包含:识别运营商和终端用户需要ONAP支持的GUI需求。整合每个ONAP各子系统的GUI增强GUI的功能。 UUI由两个模块组成1.GUI模块GUI模块是ONAP中的一个独立组件,可以单独进行部署。GUI模块为运营商和终端用户(如生命周期管理、监控器)提供图形用户界面。运行如下命令启动UUI的GUI模块:sodo docker run -i  -t -d --name uui_ui -p 8080:8080 -e  MSB_ADDR=$OPENO_IP:80 nexus3.onap.org: 10001/onap/usecase-ui2.服务器模块服务器模块是UUI的一个逻辑部件,主要由LCM事件与监控事件两部分组成。 LCM件分析NS文件,监控事件订阅VNF告警和性能数据。运行如下命令启动UUI的服务器模块:sudo docker run -i -t -d --name uui_server -p 8082:8082 -e MSB_ADDR=$OPENO_IP:80 -e MR_ADDR=$MR_IP:3904 nexus3.onap.org:10001/onap/usecase-ui/usecase-uiserver5.11 VF-C功能介绍VF-C项目使用ETSI NFV MANO架构和信息模型作为参考,实现VNF和NS的生命周期管理、故障管理、配置管理、性能管理、计费管理和安全管理。VF-C与ONAP的其他很多项目(如SDC,SO,A&AI和DCAE等)都有关系。VF-C与其他ONAP项目的依赖关系:VF-C与SDC为CSAR交付件互通SO代理SOL005 AP1调用(E2E业务)到VF-CVF-C使用A&AI作为业务、VNF和VL的持久层VF_C中的所有组件把MSB作为API网关进行通信使用DCAE VE采集器API向DCAE上报FCAPS教据使用多云 API增加、查询、更新和删除(CRUD)虚拟资源VF-C支持如下功能:基于ONAP TOSCA和YANG数据模型和工作流的NS和VNF生命周期管理。通过驱动集成包括VFM和通用VNFM的多个VNFM。通过通用VNFM与多VNF集成,不提供VNFM功能。Multi-VIM与Multi-VIMs集成,包括开源和商用VIM。微服务架构和基于模型的资源编排和管理。VF-C作为ONAP中的控制器,包含NFVO和GVNFM两个组件。NFVO组件具有如下特性:符合ETSI NFV MANO架构和信息模型。为NS提供资源编排和全生命周期管理和FCAPS.为VNFM提供标准的SBI为SO提供NBI以参与E2E业务的编排和操作提供接口,与DCAE和闭环自动化的策略配合使用。GVNFM组件具有如下特性:符合ETSI NFV MANO架构和信息模型。为无须厂商VNFM的VNF提供全生命周期管理和FCAPS。提供接口与NFVO组件配合,参与完成NS的LCM和FCAPS管理。提供接口,与DCAE和闭环自动化的策略配合使用VF-C提供的API包括VF-C北向API和VNFM集成API,前者负责网络业务的生周期管理,后者负责VNFM驱动集成。5.11.2重点特性VF-C当前版本支持的主要特性包括:在ONAP中提供MANO的合规编排,并支持闭环编排。NS编排支持PNF: NSLCM支持由VNF, PNF,VL组成的NSD; 目录支持PNFD组成并更新NSD DM.HPA支持:与OOF集成; VF-C支持解析包含HPA特性的R2+TOSCA模型。标准校准: GVNFM和目录中的SOL003校准。NS和VNF手动伸缩容。NS生命周期管理,包括创建、终止和恢复NS实例。VNF生命周期管理,包括创建、终止和恢复VNF实例。VNF FCAPS采集来自厂商EMS的FCAPS数据。VNFM集成,与厂商特定VNFM集成以部署商用VNFVNF集成,通过GVNFM与VNF集成。独立的数据库微服务。VF-C的未来社区规划特性有:SOL005和SOL003接口补齐。与Dublin版本TOSCA数据模型对齐。5.12 VIDVID (Virtual Infrastructure Deployment,虚拟基础设施部署)可用于基础设施部署、实例化基础设施服务与服务管理。VID的实例化模式包括宏观编排和lacarte编排。在选择目标实例化环境(如Multi-Cloud、测试环境等)后,支持:检查是否已有创建或预留的云资源,并触发云资源的创建。基于SDC设计的特定任务,定制业务、VNF或VF以适配当前的实例化。根据实例化工作流反馈实例化进程,在实例化失败时调用维护操作。VID能够进行变更管理,通过与A&AI的集成,检索当前已部署的业务,从SDC业务和VNF/VF模型中衍生出不可知的或特定的变更管理工作流,支持:为给定的业务和VNF/VF调用变更管理。为监控模板调用变更管理。为策略变更调用变更管理。为许可证变更调用变更管理。VID支持对工作流执行停止、启动、重启和恢复等动作,同时也支持对工作流进行调度,如通知、定时自动实例化等。VID的项目/管理看板包含用户管理、项目相关的VNF/VF和业务。VID支持用户对SDC中设计的基础设施服务和关联组件进行实例化操作,包括业务模型、VNF、 VF模块和磁盘卷组。实际使用过程中,在操作员输入合适的数据后, VID会触发MSO对上述业务模型或组件进行实例化操作。VID图形界面提供两个功能:查找已存在的服务实例,用于对查找到的服务实例进行管理。通过SDC服务模板查找某个模板,并根据模板进行服务的实例化操作。截至完稿之前, VID当前版本支持的主要能力包括:PNF即插即用业务实例化。手动VNFscale out增强。变更管理初始化。VID的Dublin版本及后续版本已规划如下能力:Cloud Region的ID一致性。支持展示各Cloud Region的Owner.向SO请求并提供Owner.用SO作为工作流的仓库。
  • [技术干货] Pix2Code介绍
    KeywordDSL,即领域特定语言,它是一种为解决特定领域问题,而对某个特定领域操作和概念进行抽象的语言。外部 DSL,即创建一个专用目的的编程语言。诸如用于 BDD 测试的 Cucumber 也是一种外部 DSL,从某种意义上来说,用于写作的 markdown 也算是一种 DSL。它们通常都需要语法解析器来进行语法分析,并且通常可以在不同的语言、平台上实现。内部 DSL,即:指与项目中使用的通用目的编程语言(Java、C#或Ruby)紧密相关的一类 DSL。它是基于通用编程语言实现的,由它来处理复杂的基础设施和操作。CNNLSTMPerformance从原型图生成DSL(领域专用语言)左边是设计原型图, 右边是对应的DSL, 是描述了GUI的格式化语言. 如: 第一行有一个label和一个switch按钮.剩下的只要把DSL语言编程成源代码即可 .cd compiler# compile .gui file to Android XML UI./android-compiler.py <input file path>.gui# compile .gui file to iOS Storyboard./ios-compiler.py <input file path>.gui# compile .gui file to HTML/CSS (Bootstrap style)./web-compiler.py <input file path>.guiDetail训练阶段训练数据有两部分, 第一部分是设计原型图(GUI), 第二部分是对应的DSL上下文(context). pix2code内部网络又分三部分网络:一个CNN网络用来理解GUI内容, 获得GUI图像特征.一个LSTM网络用来理解DSL上下文的基本规律, a单词token产生下一个b单词token的规律 (不包含与原型图的关系)另一个LSTM’ 用来理解DSL与对应原型图的关系, x 原型图应该生成什么样的上下文token c ?其中第一个LSTM实际使用两层各有128个单元的LSTM模块第二个LSTM’ 实际使用两层各有512个单元的LSTM模块A LSTM (Long-Short Term Memory) network that takes a sequence of tokens as input (tokens being terminals in the language chosen)a CNN (Convolutional Neural Network) used to engineer features out of the mockup.A LSTM’ that takes (q_t, p) as input and outputs a Softmax vector of tokens. The result (x_t+1) is then fed into the next iteration. The output vector is a mapping of probability to a terminal token.The restricted language complexity of the DSL (Domain Specific Language) allows hot vector encoding at the input and a Softmax vector at the output. The LSTM network is fed with a window of tokens of size T (the paper specifies that T=48 is a good window size following empirical tests).源码生成阶段只需输入GUI原型图和一个空的上下文DSL即可, pix2code会生成一个与该GUI图像最相关的DSL code .文章通过之间拼接cnn输出p和LSTM的隐层输出q, 合成为r作为原型图和DSL相关性的依据.实验结果, 虽然在一些长的组件列表和一些组件颜色上有出入, pix2code的整体表现还是不错的:DrawbackNo dataset of GUI to code is available online 缺乏GUI到Code的数据The code is not provided (yet) by the author The code generated is restricted to a subset language (DSL) 限制DSL语言The colors and text are not captured by the AI 颜色和文字尚未捕获
  • [行业资讯] 开源GUI STemWin在小熊派上的移植
    看到小熊派上也能有GUI,想着是不是也可以在移植了Lite OS的系统中,在增加类似的GUI,让系统界面更漂亮一些?...欢迎分享讨论转载自小熊派开源社区:现在市面上有很多成熟的GUI,对STemWin也是闻名许久了,今天我们就带大家来在小熊派上移植开源GUI STemWin。该Demo用GUIBuilder工具画了一个Listview的控件以及三个Text控件以及一个Image控件,最后保存生成代码拷贝到Keil MDK后编译下载到小熊派上运行。具体的Demo可以看如下网址链接:https://mp.weixin.qq.com/s?__biz=MzI3NjE4MTIwMw==&mid=2247486044&idx=1&sn=b4408646281bfc6317e418e440d64667&chksm=eb7833e0dc0fbaf6c3e3a58d2f8f06ed9cd6afa129cc299e7a32a2814be327870984d7e0f843&mpshare=1&scene=1&srcid=&sharer_sharetime=1593419381933&sharer_shareid=1a9b583b81f961e216ddc441c477dda4&key=46108921f0285331812b53aa56d9423096acdac18697206fd39fdec5cbf1340677dd7700ac6cee634acfe4230d62ba9e46f77ab1efc38c452c46bc94f4385787600fbbe7ca78d8431ee91e476035651c&ascene=1&uin=MjcxOTEwNjExOA%3D%3D&devicetype=Windows+10+x64&version=62090523&lang=zh_CN&exportkey=AdZazj%2FBFhJoyZTbL%2B57C5U%3D&pass_ticket=gwCKCdww1n6rfFQipa27q%2FGlGI%2FVP6gSGhRctKStM1OJbYRMC3H8uT7v5Zf094ct
  • [技术干货] 【转载】Linux下9种优秀的代码比对工具推荐
    【转载华为云社区】大家好,我是良许。在我们编写代码的时候,我们经常需要知道两个文件之间,或者同一个文件不同版本之间有什么差异性。在 Windows 下有个很强大的工具叫作 BeyondCompare ,那在 Linux 下需要用到什么工具呢?本文介绍 9 种 Linux 下常用的 9 种代码比对工具,不仅有命令行工具,还有 GUI 界面工具,让你轻松进行代码比对。1. diff命令diff 命令是 Linux 下自带的一个强大的文本比对工具,而且使用起来非常方便。对于它的使用,我之前也单独写过一篇文章介绍,点击下方链接可以查看。教你一招Linux下文本比对方法diff 命令在大多数的 Linux 发行版里已经预装了,它可以逐行比对两个文本文件,并输出它们的差异点。更多介绍可以直接查看它的 man 手册。$ man diff但是,diff 命令虽然强大,但它的输出结果实在是太感人了,不直观也不清晰。于是,有大佬为了弥补这个缺点,基于 diff 开发了更强大的工具。这里推荐两个:colordiff 和 wdiff 。colordiff命令colordiff 是一个 Perl 脚本工具,它的输出结果和 diff 命令一样,但是会给代码着色,并且具有语法高亮功能。同时,你如果不喜欢它的默认颜色的话,还可以自定义主题。你可以自行安装 colordiff 到你的电脑,根据不同的发行版选择不同的安装命令。$ yum install colordiff             [On CentOS/RHEL/Fedora] $ dnf install colordiff             [On Fedora 23+ version] $ sudo apt-get install colordiff    [On Debian/Ubuntu/Mint]同样,你可以使用 man 命令查看它的帮助文档:$ man colordiffwdiff命令diff 命令是逐行比较差异,而 wdiff 更变态,是逐字比较。所以如果你的文本只是修改了少数一些词语的话,使用 wdiff 命令将更加高效。安装命令如下:$ yum install wdiff             [On CentOS/RHEL/Fedora] $ dnf install wdiff             [On Fedora 23+ version] $ sudo apt-get install wdiff    [On Debian/Ubuntu/Mint]更详细内容可以查看它的 man 手册。$ man wdiff2. vimdiff命令vimdiff 等同于 vim -d 命令,即 Vim 编辑器的 diff 模式。该命令后面通常会接两个或多个文件名作为参数,这些文件会同时在 Vim 编辑器的分割窗口中打开,并高亮显示文件中内容有差异的部分。它的中文主页是:http://vimcdoc.sourceforge.net/doc/diff.html以上介绍的两款是 Linux 命令行的对比工具,我们再来看一些 GUI 比对工具。3. KompareKompare 是基于 diff 的一个 GUI 工具,使用者可以很方便看到文件之间的差异,并且支持合并这些差异。Kompare 的特性有如下:支持多种 diff 格式;支持目录之间的比对;支持读取 diff 文件;自定义界面;创建及应用源文件的 patch 文件。该工具的主页为:https://www.kde.org/applications/development/kompare/4. DiffMergeDiffMerge 是一个跨平台的 GUI 文本比对工具,具有 Linux ,Windows ,macOS 三大平台版本。我们知道,BeyondCompare 是一款收费软件,所以如果你们公司的版权要求比较高的话,不妨考虑一下 DiffMerge工具。DiffMerge 具有两大功能:1. 图示化显示两个文件之间的改变。包含内部行高亮和完整的编辑支持。2. 图示化显示三个文件之间的改变。允许自动合并(当可以安全操作时)和对结果文件完全编辑控制。它具有以下特性:支持文件夹比对;集成文件浏览器;高度可配置。该工具的主页为:https://sourcegear.com/diffmerge/5. MeldMeld 是一个轻量级 GUI 代码比对工具,它支持用户比对文件、目录,并且高度集成版本控制软件。但针对软件开发人员,它的以下几个特性尤为吸引人:执行双向和三向差异并合并轻松地在差异和冲突之间导航逐个文件地比较两个或三个目录,显示新文件,缺失文件和更改文件支持许多版本控制系统,包括 Git,Mercurial,Bazaar 和 SVN 等。它的官网为:http://meldmerge.org/6. DiffuseDiffuse 是另外一款很受欢迎的,免费,小巧,也十分简单的 GUI 文本差异比对合并工具,它是用 Python 写成的,具有两个主要功能:文件比对及版本控制,允许文件编辑、合并,并且输出两个文件的差异点。你可以使用它查看文本比对小结,使用鼠标选择文件里的某行进行编辑。它的其它特性包括:语法高亮快捷键便于文本导航无限次撤销支持 unicode 编码文件支持许多版本控制系统,包括 Git,Mercurial,Bazaar 和 SVN 等。它的官网为:http://diffuse.sourceforge.net/7. XXdiffXXdiff 是一款免费、强大的文件及文件夹差异比对及合并工具,它可以运行在很多类 Unix 系统上。不过它有个限制就是它不支持 unicode 文件,也没法办法直接编辑文件。它具有以下特性:递归对比文件及文件夹高亮显示差异点合并差异点,导出结果支持外部 diff 工具,比如:GNU diff,SIG diff ,Cleareddiff ,以及其它更多工具支持脚本拓展8. KDiff3KDiff3 是另外一种很强大的跨平台差异比对及合并工具,它是由 KDevelop 开发而成,可以在所有类 Unix 平台上运行,包括 Linux ,Mac OS ,Windows 等。它可以比对或合并两到三个文件或目录,具有以下特性:可以逐句、逐字对比差异支持自动合并内置编辑器,可以手动解决冲突支持 unicode ,UTF-8 等各种编码格式支持打印差异它的官网为: http://kdiff3.sourceforge.net/9. TkDiffTkDiff 是另外一种跨平台,易于使用的 GUI 文本比对工具,可以运行在 Linux ,Windows 及 MacOS 系统上。它同样提供一个左右分开的界面,用于查看对比的两个文件。但是,它也有一些其它文本对比工具没有的功能,比如差异书签,以及一个便于快速定位导航差异点的导航图。
  • [技术干货] SpaceX 龙飞船中的新触控交互操作系统,意味着什么?
    作者:doodlewind链接:https://www.zhihu.com/question/396878847/answer/1261374042来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。据本台刚刚收到的消息,SpaceX 龙飞船的触控 UI 基于 Chromium + JavaScript 技术栈开发,开放的 Web 技术就此成为了人类首个应用到载人航天领域的 GUI 技术栈。相信这对数百万前端开发者们来说是个更为历史性的时刻。这个基于 Web 技术打造的触控 UI 界面是这样的:<img src="https://pic4.zhimg.com/50/v2-42d7b42106770263c825f25aeb2b1f4d_hd.jpg" data-rawwidth="1020" data-rawheight="675" data-size="normal" data-caption="" data-default-watermark-src="https://pic3.zhimg.com/50/v2-02e88afdb2468a01437ab97b19afa174_hd.jpg" class="origin_image zh-lightbox-thumb" width="1020" data-original="https://pic4.zhimg.com/v2-42d7b42106770263c825f25aeb2b1f4d_r.jpg"/>这个消息可能为业界带来什么重大影响呢?下面是本台洋葱新闻时间:仅在一夜之间,Electron 风评即由「笨重臃肿的 Chrome 马甲套壳」变成了「稳定安全的航天级 GUI 基础架构」。在飞船 UI 系统宕机时,宇航员手册中记载了最后的应急方案,那就是删掉 node_modules 然后 npm install。「面试造火箭」一语成谶,「宇宙飞船 UI 架构设计」现已加入 BAT 前端面试题库。前端培训班题材纷纷由「高仿美团饿了么首页」转向「高仿宇宙飞船控制台」,全套教学视频 + 源码仅需 998。各大前端框架争相游说各国载人航天团队,史称前端太空竞赛。社区开始争论 React Hooks 和 Vue Composition API 哪个更适合登月。SpaceMVC 项目取代 TodoMVC,成为了下一个前端框架的 battle 标准。工程师一旦发现飞船超重,第一个排查问题的位置就是 node_modules。某国湿婆神号飞船任务失败,原因竟是该国程序员屏幕上的咖喱混淆了 == 和  ===,导致类型比较出错。言归正传,这条新闻的出处仅仅是一条非官方的 Tweet。在 Fake News 横行的今天,怎样确定龙飞船 2 号用的就是 JavaScript 呢?SpaceX 并没有开源他们的技术栈,但仍然有不少可供交叉验证的有趣信息源,今天摸到了条大鱼啊(笑)。首先,推文中附上了四年前 Stack Exchange 上 对猎鹰 9 号计算机技术栈的讨论,其中的主要信息源则是 Reddit 上 SpaceX 软件团队的 AMA 介绍 。另外,Hacker News 上近期也有活跃的 后续讨论帖。这里对其中(与 GUI 部分相关的)主要信息整理如下:龙飞船 2 号和猎鹰 9 号的飞控软件系统基于 Linux,其底层均由 C/C++ 实现。Chromium + JavaScript 属于这一系统中的太空舱界面(flight interface)部分。UI 界面有 100% 的测试覆盖率,包括对图形绘制结果的验证。UI 屏幕彼此之间是完全独立的,相当于冗余备份。UI 系统可以重启,在直播中对接国际空间站时就有这样的例子。除了飞控系统中的 UI 外,SpaceX 还有其他需要 GUI 的地方。负责地面软件的团队使用 LabView 开发地面指挥中心的 GUI,企业 IT 团队则使用常见的 Web 技术栈开发项目管理、库存管理等内部后台系统。上面这些信息除了 AMA 之外都可能有偏差,主要讨论者也未必是这套触屏 UI 的实际开发者。不过稍加搜索就能发现更有趣的料,那就是这套 UI 界面设计师自己的 Portfolio 页面:<img src="https://pic3.zhimg.com/50/v2-89ec0ec5370d4abf067d5e2e56f56e33_hd.jpg" data-rawwidth="987" data-rawheight="848" data-size="normal" data-caption="" data-default-watermark-src="https://pic3.zhimg.com/50/v2-e9e2424ae6d998c63b057bced1e9b935_hd.jpg" class="origin_image zh-lightbox-thumb" width="987" data-original="https://pic3.zhimg.com/v2-89ec0ec5370d4abf067d5e2e56f56e33_r.jpg"/>看到这个页面的时候,我第一印象是这真不是「Lorem Ipsum」式的 Demo 吗……这也太梦幻了吧。但在找到设计师 AJ Fitzpartrick 的 LinkedIn 之后,基本可以确定这还真不是 PPT,有被羡慕到。所以为宇宙飞船设计触屏 UI,到底是在干嘛呢?具体细节仍然处于保密状态,但这位设计师公开的工作描述包括了这些:将航天员在飞行阶段的职责转化为软件需求,与太空运营团队合作,创建出用于驾驶舱触屏显示器的线框和 UI 流程。向 SpaceX 团队和 NASA 客户(包括龙飞船的宇航员机组在内)介绍设计和 UI 流程。基于太空旅行的独特条件,制定风格指南和设计规范,例如适应宇航员手套的触摸目标,以及保证震动时的易读性。与软件工程师紧密合作,了解硬件和技术限制,确定用户体验上的空白和设计任务的优先级。将设计产物和用于生产的素材交付给软件工程师。虽然好像也不是特别复杂,但是这牛逼真是可以吹一辈子啊……这里还有一个有趣之处,那就是这位 UI/UX 设计师此前并非来自「航空航天体制内」,而是做 App 与 Web 的设计出身的。他的代表作品包括索尼的全球设计规范和图片编辑器,还有 iOS 的社交应用等。这也体现了 SpaceX 在组建精英团队时的多元文化(例如做上面介绍的飞控软件的团队,其背景就来自于游戏、消费者软件、Web 开发、金融、电信、航空、学术界等)。所以做交互的同学们还是要有点志气,万一哪天我国的宇宙飞船也要招人做设计稿了呢?至于 SpaceX 正式对外的分享资料,则主要来自 2016 年的 GDC 分享 。他们在其中介绍了新一代软件工具技术对他们的价值:<img src="https://pic1.zhimg.com/50/v2-7c6c32ea27e7100bb56964ce12031d6d_hd.jpg" data-rawwidth="2410" data-rawheight="1419" data-size="normal" data-caption="" data-default-watermark-src="https://pic2.zhimg.com/50/v2-b15a1ad29ca638fed3e22f85f677bac2_hd.jpg" class="origin_image zh-lightbox-thumb" width="2410" data-original="https://pic4.zhimg.com/v2-7c6c32ea27e7100bb56964ce12031d6d_r.jpg"/>这页 PPT 直译过来是这样的:算力上的进步开启了全新的可能性存储、计算和渲染能力上的突破,使实现 3D 渲染和交互式地图等特性成为了可能。移动设备在重量和能耗上的改进非常显著。触摸屏已经很便宜,普及到随处可见。浏览器是界面开发的新平台各种库和框架提供了稳定的功能,并能快速实现原型。现代化的开发和调试工具提高了迭代速度。技术的跨业界通用性扩大了潜在的人选范围,减少了磨合时间。PPT 上还有专门的一页讲了触摸屏技术:<img src="https://pic4.zhimg.com/50/v2-841e0b6a2b15fbd03bf27328c68e2f60_hd.jpg" data-rawwidth="2280" data-rawheight="1227" data-size="normal" data-caption="" data-default-watermark-src="https://pic3.zhimg.com/50/v2-20f29c3f36465ffc65c6b685fb7cde1c_hd.jpg" class="origin_image zh-lightbox-thumb" width="2280" data-original="https://pic3.zhimg.com/v2-841e0b6a2b15fbd03bf27328c68e2f60_r.jpg"/>要点直译过来也很简单:将操作控制移到显示屏上后,极大地减少了空间占用和混乱。通过多个相同的显示屏,很容易实现冗余备份。触摸屏的泛用性使得开发变得容易,还能流水线式地执行训练和测试。基于软件的界面布局,提高了迭代速度。这就是新一代 UI 技术栈对航天领域的影响了。不过对于到此为止的这些内容,仍然可能会有些「这不就只是用 JS 画了点花里胡哨的东西而已吗」的质疑。但其实在即将发射的 詹姆斯·韦伯太空望远镜(JWST)里,NASA 已经在用 JavaScript 操控太空望远镜的观测计划了:在 JWST 机载架构中,活动计划均由地面上传。每个计划都包含了多个 Visit,它们通过上层的机载 JavaScript 来处理。而每个 Visit 则会包含由下层机载脚本处理的观测活动(如探测器配置、回转请求等)。这些机载脚本会构建出命令和遥测请求,从而操作观测子系统(如科学仪器、航天器总线中的姿态控制子系统等)。这个架构设计写在了介绍 JWST 的论文(JWST: Maximizing Efficiency and Minimizing Ground Systems)里,如图所示:<img src="https://pic1.zhimg.com/50/v2-3df0c3a20a3905503f3a655ca3a1ffd1_hd.jpg" data-rawwidth="500" data-rawheight="843" data-size="normal" data-caption="" data-default-watermark-src="https://pic1.zhimg.com/50/v2-4ce8985534952ed59b8c6056952b383c_hd.jpg" class="origin_image zh-lightbox-thumb" width="500" data-original="https://pic3.zhimg.com/v2-3df0c3a20a3905503f3a655ca3a1ffd1_r.jpg"/>对于这个破天荒地引入 JS 引擎的操作,其实还有另一篇论文,讲了事件驱动的 JWST 操作设计(Event-driven James Webb Space Telescope Operations)。NASA 使用的是一个由 Nombas 公司开发的普通商用级 JS 引擎,它被嵌入在了 VxWorks 实时操作系统中。论文中探讨了在 JWST 中引入事件驱动架构的优势,值得感兴趣的同学拓展一下视野。Nombas 公司在《JavaScript 20 年》中登场过。它虽然名不见经传,但其实也是首次 TC39 会议的参与者,当时的产品是名称跟 C++ 相反的 Cmm(C minus minus)语言。后来他们在此基础上研发出了嵌入式 ECMAScript 引擎 ScriptEase,亦即被 NASA 选用的产品。这家公司后来被 Openwave 收购。到此为止,我们已经看到 JavaScript 这门「罄竹难书」的语言,居然已经开始在无比高大上的航天领域崭露头角了。在《JavaScript 20 年》史书的结尾处,JS 之父 Brendan Eich 是这样为 JS 正名的:最早他们说 JavaScript 没法做「富互联网应用」。然后他们说 JavaScript 没法快起来。然后他们说 JavaScript 没法修复语言问题。然后他们说 JavaScript 没法做多核与 GPU 运算。今天我们可以再补一条:然后他们说 JavaScript 没法做航天级项目。作者:doodlewind链接:https://www.zhihu.com/question/396878847/answer/1261374042来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。据本台刚刚收到的消息,SpaceX 龙飞船的触控 UI 基于 Chromium + JavaScript 技术栈开发,开放的 Web 技术就此成为了人类首个应用到载人航天领域的 GUI 技术栈。相信这对数百万前端开发者们来说是个更为历史性的时刻。这个基于 Web 技术打造的触控 UI 界面是这样的:<img src="https://pic4.zhimg.com/50/v2-42d7b42106770263c825f25aeb2b1f4d_hd.jpg" data-rawwidth="1020" data-rawheight="675" data-size="normal" data-caption="" data-default-watermark-src="https://pic3.zhimg.com/50/v2-02e88afdb2468a01437ab97b19afa174_hd.jpg" class="origin_image zh-lightbox-thumb" width="1020" data-original="https://pic4.zhimg.com/v2-42d7b42106770263c825f25aeb2b1f4d_r.jpg"/>这个消息可能为业界带来什么重大影响呢?下面是本台洋葱新闻时间:仅在一夜之间,Electron 风评即由「笨重臃肿的 Chrome 马甲套壳」变成了「稳定安全的航天级 GUI 基础架构」。在飞船 UI 系统宕机时,宇航员手册中记载了最后的应急方案,那就是删掉 node_modules 然后 npm install。「面试造火箭」一语成谶,「宇宙飞船 UI 架构设计」现已加入 BAT 前端面试题库。前端培训班题材纷纷由「高仿美团饿了么首页」转向「高仿宇宙飞船控制台」,全套教学视频 + 源码仅需 998。各大前端框架争相游说各国载人航天团队,史称前端太空竞赛。社区开始争论 React Hooks 和 Vue Composition API 哪个更适合登月。SpaceMVC 项目取代 TodoMVC,成为了下一个前端框架的 battle 标准。工程师一旦发现飞船超重,第一个排查问题的位置就是 node_modules。某国湿婆神号飞船任务失败,原因竟是该国程序员屏幕上的咖喱混淆了 == 和  ===,导致类型比较出错。言归正传,这条新闻的出处仅仅是一条非官方的 Tweet。在 Fake News 横行的今天,怎样确定龙飞船 2 号用的就是 JavaScript 呢?SpaceX 并没有开源他们的技术栈,但仍然有不少可供交叉验证的有趣信息源,今天摸到了条大鱼啊(笑)。首先,推文中附上了四年前 Stack Exchange 上 对猎鹰 9 号计算机技术栈的讨论,其中的主要信息源则是 Reddit 上 SpaceX 软件团队的 AMA 介绍 。另外,Hacker News 上近期也有活跃的 后续讨论帖。这里对其中(与 GUI 部分相关的)主要信息整理如下:龙飞船 2 号和猎鹰 9 号的飞控软件系统基于 Linux,其底层均由 C/C++ 实现。Chromium + JavaScript 属于这一系统中的太空舱界面(flight interface)部分。UI 界面有 100% 的测试覆盖率,包括对图形绘制结果的验证。UI 屏幕彼此之间是完全独立的,相当于冗余备份。UI 系统可以重启,在直播中对接国际空间站时就有这样的例子。除了飞控系统中的 UI 外,SpaceX 还有其他需要 GUI 的地方。负责地面软件的团队使用 LabView 开发地面指挥中心的 GUI,企业 IT 团队则使用常见的 Web 技术栈开发项目管理、库存管理等内部后台系统。上面这些信息除了 AMA 之外都可能有偏差,主要讨论者也未必是这套触屏 UI 的实际开发者。不过稍加搜索就能发现更有趣的料,那就是这套 UI 界面设计师自己的 Portfolio 页面:<img src="https://pic3.zhimg.com/50/v2-89ec0ec5370d4abf067d5e2e56f56e33_hd.jpg" data-rawwidth="987" data-rawheight="848" data-size="normal" data-caption="" data-default-watermark-src="https://pic3.zhimg.com/50/v2-e9e2424ae6d998c63b057bced1e9b935_hd.jpg" class="origin_image zh-lightbox-thumb" width="987" data-original="https://pic3.zhimg.com/v2-89ec0ec5370d4abf067d5e2e56f56e33_r.jpg"/>看到这个页面的时候,我第一印象是这真不是「Lorem Ipsum」式的 Demo 吗……这也太梦幻了吧。但在找到设计师 AJ Fitzpartrick 的 LinkedIn 之后,基本可以确定这还真不是 PPT,有被羡慕到。所以为宇宙飞船设计触屏 UI,到底是在干嘛呢?具体细节仍然处于保密状态,但这位设计师公开的工作描述包括了这些:将航天员在飞行阶段的职责转化为软件需求,与太空运营团队合作,创建出用于驾驶舱触屏显示器的线框和 UI 流程。向 SpaceX 团队和 NASA 客户(包括龙飞船的宇航员机组在内)介绍设计和 UI 流程。基于太空旅行的独特条件,制定风格指南和设计规范,例如适应宇航员手套的触摸目标,以及保证震动时的易读性。与软件工程师紧密合作,了解硬件和技术限制,确定用户体验上的空白和设计任务的优先级。将设计产物和用于生产的素材交付给软件工程师。虽然好像也不是特别复杂,但是这牛逼真是可以吹一辈子啊……这里还有一个有趣之处,那就是这位 UI/UX 设计师此前并非来自「航空航天体制内」,而是做 App 与 Web 的设计出身的。他的代表作品包括索尼的全球设计规范和图片编辑器,还有 iOS 的社交应用等。这也体现了 SpaceX 在组建精英团队时的多元文化(例如做上面介绍的飞控软件的团队,其背景就来自于游戏、消费者软件、Web 开发、金融、电信、航空、学术界等)。所以做交互的同学们还是要有点志气,万一哪天我国的宇宙飞船也要招人做设计稿了呢?至于 SpaceX 正式对外的分享资料,则主要来自 2016 年的 GDC 分享 。他们在其中介绍了新一代软件工具技术对他们的价值:<img src="https://pic1.zhimg.com/50/v2-7c6c32ea27e7100bb56964ce12031d6d_hd.jpg" data-rawwidth="2410" data-rawheight="1419" data-size="normal" data-caption="" data-default-watermark-src="https://pic2.zhimg.com/50/v2-b15a1ad29ca638fed3e22f85f677bac2_hd.jpg" class="origin_image zh-lightbox-thumb" width="2410" data-original="https://pic4.zhimg.com/v2-7c6c32ea27e7100bb56964ce12031d6d_r.jpg"/>这页 PPT 直译过来是这样的:算力上的进步开启了全新的可能性存储、计算和渲染能力上的突破,使实现 3D 渲染和交互式地图等特性成为了可能。移动设备在重量和能耗上的改进非常显著。触摸屏已经很便宜,普及到随处可见。浏览器是界面开发的新平台各种库和框架提供了稳定的功能,并能快速实现原型。现代化的开发和调试工具提高了迭代速度。技术的跨业界通用性扩大了潜在的人选范围,减少了磨合时间。PPT 上还有专门的一页讲了触摸屏技术:<img src="https://pic4.zhimg.com/50/v2-841e0b6a2b15fbd03bf27328c68e2f60_hd.jpg" data-rawwidth="2280" data-rawheight="1227" data-size="normal" data-caption="" data-default-watermark-src="https://pic3.zhimg.com/50/v2-20f29c3f36465ffc65c6b685fb7cde1c_hd.jpg" class="origin_image zh-lightbox-thumb" width="2280" data-original="https://pic3.zhimg.com/v2-841e0b6a2b15fbd03bf27328c68e2f60_r.jpg"/>要点直译过来也很简单:将操作控制移到显示屏上后,极大地减少了空间占用和混乱。通过多个相同的显示屏,很容易实现冗余备份。触摸屏的泛用性使得开发变得容易,还能流水线式地执行训练和测试。基于软件的界面布局,提高了迭代速度。这就是新一代 UI 技术栈对航天领域的影响了。不过对于到此为止的这些内容,仍然可能会有些「这不就只是用 JS 画了点花里胡哨的东西而已吗」的质疑。但其实在即将发射的 詹姆斯·韦伯太空望远镜(JWST)里,NASA 已经在用 JavaScript 操控太空望远镜的观测计划了:在 JWST 机载架构中,活动计划均由地面上传。每个计划都包含了多个 Visit,它们通过上层的机载 JavaScript 来处理。而每个 Visit 则会包含由下层机载脚本处理的观测活动(如探测器配置、回转请求等)。这些机载脚本会构建出命令和遥测请求,从而操作观测子系统(如科学仪器、航天器总线中的姿态控制子系统等)。这个架构设计写在了介绍 JWST 的论文(JWST: Maximizing Efficiency and Minimizing Ground Systems)里,如图所示:<img src="https://pic1.zhimg.com/50/v2-3df0c3a20a3905503f3a655ca3a1ffd1_hd.jpg" data-rawwidth="500" data-rawheight="843" data-size="normal" data-caption="" data-default-watermark-src="https://pic1.zhimg.com/50/v2-4ce8985534952ed59b8c6056952b383c_hd.jpg" class="origin_image zh-lightbox-thumb" width="500" data-original="https://pic3.zhimg.com/v2-3df0c3a20a3905503f3a655ca3a1ffd1_r.jpg"/>对于这个破天荒地引入 JS 引擎的操作,其实还有另一篇论文,讲了事件驱动的 JWST 操作设计(Event-driven James Webb Space Telescope Operations)。NASA 使用的是一个由 Nombas 公司开发的普通商用级 JS 引擎,它被嵌入在了 VxWorks 实时操作系统中。论文中探讨了在 JWST 中引入事件驱动架构的优势,值得感兴趣的同学拓展一下视野。Nombas 公司在《JavaScript 20 年》中登场过。它虽然名不见经传,但其实也是首次 TC39 会议的参与者,当时的产品是名称跟 C++ 相反的 Cmm(C minus minus)语言。后来他们在此基础上研发出了嵌入式 ECMAScript 引擎 ScriptEase,亦即被 NASA 选用的产品。这家公司后来被 Openwave 收购。到此为止,我们已经看到 JavaScript 这门「罄竹难书」的语言,居然已经开始在无比高大上的航天领域崭露头角了。在《JavaScript 20 年》史书的结尾处,JS 之父 Brendan Eich 是这样为 JS 正名的:最早他们说 JavaScript 没法做「富互联网应用」。然后他们说 JavaScript 没法快起来。然后他们说 JavaScript 没法修复语言问题。然后他们说 JavaScript 没法做多核与 GPU 运算。今天我们可以再补一条:然后他们说 JavaScript 没法做航天级项目。Wrong every time!于是我们再次应证了这条规律:Always bet on JS.当然了,用不用 JS 说到底看的还是实际场景,龙飞船成功的关键也并不是 JS,而是大量前沿科学与工程领域实打实的硬核积累。但作为 GUI 开发者,这里还是许个小小的祝愿,希望有生之年大家做的 UI,能有机会帮助人类飞向更大的世界吧。Wrong every time!于是我们再次应证了这条规律:Always bet on JS.当然了,用不用 JS 说到底看的还是实际场景,龙飞船成功的关键也并不是 JS,而是大量前沿科学与工程领域实打实的硬核积累。但作为 GUI 开发者,这里还是许个小小的祝愿,希望有生之年大家做的 UI,能有机会帮助人类飞向更大的世界吧。
  • [问题求助] Taishan 2280 V2安装centos7.7 1908 server with gui版本无法启动
    服务器型号:Taishan 2280 V2OS版本:centos7.7 1908 Server with GUI问题描述:系统安装成功,然后再次重启服务器后无法进入系统,通过串口确认内核已经启动,可能是GUI无法启动。题求助:请问Taishan是否不兼容centos7.7?该问题如何解决?
  • [技术干货] 【工具分享】北向GUI调试应用 【转】
    (转自https://developer.huawei.com/ict/forum/thread-19669.html)自研工具,提供北向应用基本功能在华为物联网平台的对接开发中,需要南向和北向同步配合进行,尤其是设备的绑定操作,需要北向先注册,南向才能绑定。但是,部分开发者专注于设备的开发,对于北向的应用没有开发需求,希望有一个简单的工具来提供北向应用的基本功能。所以,我开发了这个北向应用GUI小程序,帮助开发者进行对接阶段的调试和开发。一方面,可以便于暂时不想进行北向服务器端应用开发的开发者,配合使用该GUI程序,完成南向设备端的开发;另一方面,该程序的源码已经分享在github之上,对于编写北向服务器应用的开发者也有一定的参考价值。下载地址:包括可执行程序和源码https://github.com/Huawei/IoT_OceanConnect_North_GUI_APPDemo登录界面:主界面:基本功能:应用管理、设备管理、数据管理、命令管理(分为NB模式和Agent模式)、规则管理、订阅管理。应用管理:配置设备异常时间和离线时间(异常和离线的状态切换,可以在论坛搜索相关帖子了解);刷新Token,Token有有效时间,如果超时,则无法获取相关服务,可以点击该按钮刷新。设备管理:注册设备:注册成功,Log区将显示device id。删除设备。修改设备信息:修改设备的基础配置。获取设备列表:可以根据需求(在线或离线、网关或节点)来获取指定设备列表。查询设备状态:在线OR离线。查询设备基础信息:获取设备的基础信息。数据管理:动态获取设备服务能力。根据设备服务能力刷新界面后,可以查询设备当前服务数据和历史数据。命令管理:动态获取设备服务命令下发能力。根据设备服务能力刷新界面后,可以通过平台下发异步命令(NB-IoT)或下发即时消息(Agent)到设备。查询命令状态(NB-IoT)。删除命令(NB-IoT)。规则管理:创建规则,目前响应形式支持发送邮件和短信,未添加命令的形式。更新规则。查询规则:根据作者和规则名进行查询。修改规则的状态:激活或未激活。删除规则。订阅管理:订阅平台支持的各种消息。这个小工具第一次放出来,难免会有一些小bug,欢迎大家测试使用。如果有任何问题,请保存异常日志,并通过论坛和我联系,谢谢。下载地址:包括可执行程序和源码https://github.com/Huawei/IoT_OceanConnect_North_GUI_APPDemo
总条数:23 到第
上滑加载中