V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zachguo
V2EX  ›  程序员

前端工程师也能给火箭写代码了🚀

  •  2
     
  •   zachguo · 2020-06-04 05:11:08 +08:00 · 12961 次点击
    这是一个创建于 1626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://yasoob.me/posts/software_engineering_within_spacex_launch/

    SpaceX 内舱操作界面基于 Chromium 和 JS 开发。

    82 条回复    2022-10-03 20:19:27 +08:00
    dartabe
        1
    dartabe  
       2020-06-04 05:13:40 +08:00
    🚀🚀🚀🚀

    鼓掌👏
    ericls
        2
    ericls  
       2020-06-04 05:30:12 +08:00 via iPhone   ❤️ 15
    操作界面不管什么语言写 不都是前端吗?难道你用 c 写界面 你的界面就底层了?
    ifhwhlwpto
        3
    ifhwhlwpto  
       2020-06-04 05:47:35 +08:00
    @ericls 以前火箭的操作界面是一堆实体按钮和仪表盘,类似飞机那种。
    alphatoad
        4
    alphatoad  
       2020-06-04 06:17:40 +08:00 via iPhone   ❤️ 4
    现在火箭的内存也是 64G 起步了啊,真是今非昔比
    ochatokori
        5
    ochatokori  
       2020-06-04 06:22:27 +08:00 via Android
    万物基于 js,js 一统天下🐶
    Ultraman
        6
    Ultraman  
       2020-06-04 06:43:24 +08:00 via Android   ❤️ 4
    Also, only the actual graphical display application uses Chromium/JS. The rest of the system is all C++.
    rayhy
        7
    rayhy  
       2020-06-04 07:08:06 +08:00 via Android
    之前天天说太空环境下必须要小内存防太空射线 balabala,现在不一样了吗…
    reus
        8
    reus  
       2020-06-04 07:14:00 +08:00   ❤️ 8
    Also, only the actual graphical display application uses Chromium/JS. The rest of the system is all C++. The display code has 100% test coverage, down to validation of graphical output (for example if you have a progress bar and you set it to X% the tests verify that it is actually drawn correctly).

    呵呵,你们这些前端工程师,有多少做得到 100%测试覆盖的?能个屁。
    nuistzhou
        9
    nuistzhou  
       2020-06-04 07:14:02 +08:00 via iPhone
    @rayhy 宇宙射线一说现在不太靠谱了吧,人在里面不穿防护服都待着呢
    rayhy
        10
    rayhy  
       2020-06-04 07:39:00 +08:00
    @nuistzhou 欸,不管怎么,Electron 已经不是笨重臃肿的 Chrome 马甲了,是稳定安全的航天级 GUI 基础架构...
    acrazing
        11
    acrazing  
       2020-06-04 07:45:30 +08:00   ❤️ 4
    @reus 只要老板不压排期, 这有啥难的
    Mohanson
        12
    Mohanson  
       2020-06-04 07:45:59 +08:00 via Android
    python 还登陆过火星呢(狗头
    christin
        13
    christin  
       2020-06-04 07:54:47 +08:00 via iPhone   ❤️ 10
    真·面试造火箭,工作造火箭
    murmur
        14
    murmur  
       2020-06-04 08:09:35 +08:00
    啊哦,chrome 遇到了一个错误,需要关闭
    dxcqcv
        15
    dxcqcv  
       2020-06-04 08:10:18 +08:00
    了不起
    nutting
        16
    nutting  
       2020-06-04 08:22:13 +08:00
    那种环境用这么复杂的系统不怕出问题吗
    janxin
        17
    janxin  
       2020-06-04 08:29:13 +08:00   ❤️ 81
    剩余氧气 undefined%
    Seanfuck
        18
    Seanfuck  
       2020-06-04 08:33:23 +08:00 via iPhone
    看标题还以为是$$
    mostkia
        19
    mostkia  
       2020-06-04 08:39:28 +08:00
    @alphatoad 那是因为以前使用的是加固芯片来抵御宇宙射线的干扰,非常昂贵,所以够用就好,而且这是成熟的系统,重新使用新方案会有风险,nasa 拿国家经费的自然安于现状。而 SX 公司是创业公司,相关领域直接是后来者,不拒绝新技术,马斯克就直接批评了加固芯片这一方案,他用的是冗余解决方案,即火箭上搭载了 3 套机载计算机,通过特定算法来保证计算准确性,即使有某台计算机突然离线,也能正常使用,使用的硬件则是普通的 X86 处理器,费用并不贵,而且科技公司飞船内部界面只有做的好,外观酷炫,一群金主大佬看着不明觉厉,才能融到资啊。硬件上自然需要适当堆料,保证速度。
    butterf1y
        20
    butterf1y  
       2020-06-04 08:41:09 +08:00   ❤️ 1
    @janxin 剩余氧气 NaN%(狗头
    Charod
        21
    Charod  
       2020-06-04 08:44:12 +08:00
    。。。
    onevcat
        22
    onevcat  
       2020-06-04 08:45:50 +08:00   ❤️ 5
    面试造火箭,工作终于也造火箭了!
    wanguorui123
        23
    wanguorui123  
       2020-06-04 08:46:29 +08:00 via iPhone
    0.1+0.2=?
    wanguorui123
        24
    wanguorui123  
       2020-06-04 08:47:32 +08:00 via iPhone
    运算应该用 mathjs 吧
    idealhs
        25
    idealhs  
       2020-06-04 08:52:47 +08:00   ❤️ 1
    其实我看到这玩意就在想,触屏虽然交互友好,但是稳定性不如按钮们啊,太空环境那么复杂,万一触屏坏了他们有没有备用的操作方式
    zachguo
        26
    zachguo  
    OP
       2020-06-04 08:56:13 +08:00
    @idealhs 大概率为了省钱和省事,和 Tesla 一样,谁让 SpaceX 是 Elon 的公司呢
    sadfQED2
        27
    sadfQED2  
       2020-06-04 08:58:18 +08:00 via Android
    @idealhs 实体按键不一样有坏的可能啊
    reus
        28
    reus  
       2020-06-04 09:00:55 +08:00
    @idealhs 你没看原文?

    SpaceX also made use of Chromium and JavaScript for Dragon 2 flight interface. I am not sure how that passed the certification. I assume it was allowed because for every mission-critical input on the display, there was a physical button underneath the display as well. So if in case the screen malfunctioned, the astronauts could potentially make use of the physical buttons.
    zachguo
        29
    zachguo  
    OP
       2020-06-04 09:06:17 +08:00
    @reus
    @idealhs 按钮其实也是有限的,一些类似快捷键的手动开关罢了
    SimonOne
        30
    SimonOne  
       2020-06-04 09:18:56 +08:00
    @idealhs #24 让我想起了小时候的一部动画,某集去了地底,碰上发疯的地底生物来袭,需要启动一台机器驱逐这些怪物,在按钮失效的情况下直接撕开屏幕,把导线一拧就完事了。
    gainsurier
        31
    gainsurier  
       2020-06-04 09:21:43 +08:00
    感觉这玩意和轨道交通那套类似。
    可能是 qt 的 webengine 那一套。前端用 hmi/js,后端用 C++搭建服务。
    kitalphaj
        32
    kitalphaj  
       2020-06-04 09:24:01 +08:00
    JS 和 Chromium 这个有点意思,但是文中也提到是有物理按键做备份的。我搞不懂的是为啥会用 C++或者 Python 之类的语音,希望至少不是关键程序用这种语言。真正的 High Integrity 系统感觉还是用 Ada 之类可完全理论证明的语音比较靠谱。
    exploreXin
        33
    exploreXin  
       2020-06-04 09:28:32 +08:00
    JS 征服世界的目标已经是过去时了,现在的目标是星辰大海。
    zhuweiyou
        34
    zhuweiyou  
       2020-06-04 09:39:25 +08:00   ❤️ 1
    @idealhs 文章写了,如果屏幕出问题,下面还有对应的物理按钮。
    idealhs
        35
    idealhs  
       2020-06-04 09:42:00 +08:00
    @reus 原来如此,我当时看的短视频,所以产生了这个疑问。
    winrar
        36
    winrar  
       2020-06-04 09:42:18 +08:00 via iPhone
    为啥现在人一提到前端就联想到 js 呢?
    dremy
        37
    dremy  
       2020-06-04 09:54:31 +08:00 via iPhone
    @winrar 是一看到 js 就想到前端
    sjtiande
        38
    sjtiande  
       2020-06-04 09:55:08 +08:00   ❤️ 11
    火箭飞不上去是不是要先删除一下 node_modules
    paoqi2048
        39
    paoqi2048  
       2020-06-04 10:01:25 +08:00
    归根结底是 C++
    nightwitch
        40
    nightwitch  
       2020-06-04 10:18:53 +08:00   ❤️ 1
    肯定不是 electron 洛,多半是 Qt 的 QWebEngine,和其他 Qt 组件衔接起来。Qt 在军备上使用的还是很多的,之前美国的哪个驱逐舰的系统也是用 Qt 画的操作界面。
    Vegetable
        41
    Vegetable  
       2020-06-04 10:22:28 +08:00   ❤️ 7
    JavaScript——航天级编程语言
    aogu555
        42
    aogu555  
       2020-06-04 10:26:47 +08:00
    前端的这个前端定义的是用户端,操作端,难道前端就只剩下 js 了吗?
    icebreaker12
        43
    icebreaker12  
       2020-06-04 10:46:21 +08:00
    任何可以用 js 来写的应用,最终都将用 js 来写
    nicevar
        44
    nicevar  
       2020-06-04 10:51:11 +08:00   ❤️ 13
    火箭偏离轨道, 因为 node_modules 太重导致
    alphatoad
        45
    alphatoad  
       2020-06-04 11:41:31 +08:00   ❤️ 1
    @mostkia 我不是这方面领域的专家,不过我记得之前看到过科普文,高频芯片在太空会出问题,不知道原理是什么
    hakono
        46
    hakono  
       2020-06-04 11:53:14 +08:00   ❤️ 3
    @alphatoad 因为宇宙射线。
    和医院里跟 x 光机凑得近的设备没做好防辐射处理的话,CPU 或者内存会出现随机的存储运算错误一样道理。

    以前的航天项目在电子系统的防辐射上相当花钱,spaceX 直接放弃这么做,准备了多套一样的系统并行计算然后互相对比运算结果确保计算结果一致。这么一搞之后电子系统成本直接爆降,龙飞船的控制系统成本才几万美元的样子。
    alphatoad
        47
    alphatoad  
       2020-06-04 11:56:50 +08:00
    @hakono 谢谢,这确实是工业界会用的方法,大型 ecc
    AlphaTr
        48
    AlphaTr  
       2020-06-04 12:02:36 +08:00 via iPhone   ❤️ 22
    仅在一夜之间,Electron 风评即由「笨重臃肿的 Chrome 马甲套壳」变成了「稳定安全的航天级 GUI 基础架构」。

    在飞船 UI 系统宕机时,宇航员手册中记载了最后的应急方案,那就是删掉 node_modules 然后 npm install 。

    「面试造火箭」一语成谶,「宇宙飞船 UI 架构设计」现已加入 BAT 前端面试题库。

    前端培训班题材纷纷由「高仿美团饿了么首页」转向「高仿宇宙飞船控制台」,全套教学视频 + 源码仅需 998 。

    各大前端框架争相游说各国载人航天团队,史称前端太空竞赛。

    社区开始争论 React Hooks 和 Vue Composition API 哪个更适合登月。

    SpaceMVC 项目取代 TodoMVC,成为了下一个前端框架的 battle 标准。

    工程师一旦发现飞船超重,第一个排查问题的位置就是 node_modules 。

    某国湿婆神号飞船任务失败,原因竟是该国程序员屏幕上的咖喱混淆了 == 和 ===,导致类型比较出错。

    转自知乎: https://www.zhihu.com/question/396878847/answer/1261374042
    fakeshadow
        49
    fakeshadow  
       2020-06-04 12:08:51 +08:00   ❤️ 5
    宇航员: 启动紧急逃逸
    显示器: TypeError: ‘undefined’ is not a function
    Huelse
        50
    Huelse  
       2020-06-04 13:37:13 +08:00
    楼上是想笑死我吗
    不过这一套下来的确能省很多很多成本
    newmlp
        51
    newmlp  
       2020-06-04 13:49:02 +08:00
    @idealhs 就是个飞船而已,把人送上去,在把人接回来,没那么多复杂的使用环境
    Phariel
        52
    Phariel  
       2020-06-04 14:04:00 +08:00   ❤️ 1
    面试造火箭 入职。。。 入职还真是造火箭!🐶
    sadfQED2
        53
    sadfQED2  
       2020-06-04 14:27:52 +08:00 via Android
    我好奇火箭的代码是不是用 jetbrains 写的?那我用的也是航天级开发工具?
    shijingshijing
        54
    shijingshijing  
       2020-06-04 14:32:47 +08:00   ❤️ 5
    @hakono
    @alphatoad

    这个东西的学名叫单粒子翻转(SEU, Single Event Upsets),简单来讲就是单个 cell 可能在某种情况下受宇宙射线影响从 0 编程 1 或者反过来。地球上 SEU 察觉不到是因为电离层的保护已经将这些射线大部分屏蔽掉了,事实上几乎每家大型半导体公司都会对此作出一定的说明和应对:
    Intel 的 https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/wp/wp-01206-introduction-single-event-upsets.pdf

    Xilinx 的
    https://www.xilinx.com/support/documentation/white_papers/wp395-Mitigating-SEUs.pdf

    应对 SEU 的措施有很多,硬件层面做 Radiation Hardening,系统设计方面使用三重表决系统( SpaceX 就是三套 FlightControl 表决,可以简单理解为斗地主),还有其他各种冗余设计,双核单步执行实时比较等等。

    硬件方面航空航天领域里面,用的最多的是 PowerPC,代表作是 BAE 的 PowerPC 750,据说火星车上用的这款芯片能做到电路板裸露到外面长达一定时间没有影响,足够完成关机以及其他保护措施。当然不仅仅是 CPU 需要做 Radiation Hardening,内存也需要,整个电路板也会有相应的抗辐照,抗高温,耐低温,抗震等等设计。SpaceX 的理念是不关注最底层的失效可能性,从整个系统层面提高可用性,这样做能够尽可能降低成本,同时保留足够的可用性(一般用 10 的负 9 次方这种概率值来衡量)这样做也是有科学道理的,因为即使是上面的 Radiation Hardening,三重表决等等都做了,也只能是尽可能的 mitigation,而无法彻底 elimination,所以只要指标达到,我在系统层面做优化,在设备层面做优化,在元件层面做优化都是可以的。

    这个领域有一个很形象的比喻,从系统到设备到元件乃至到最底层的晶体管都不是完美的,每一层都像一片瑞士奶酪那样充满着孔洞,我们能做的就是将这些奶酪一层层叠起来,尽量让整个奶酪没有孔洞。
    Chenamy2017
        55
    Chenamy2017  
       2020-06-04 14:42:45 +08:00
    @ochatokori js 一统宇宙了吧。
    glasslion
        56
    glasslion  
       2020-06-04 15:48:56 +08:00
    @nuistzhou 电子设备比人娇嫩多了
    jsq2627
        57
    jsq2627  
       2020-06-04 16:40:35 +08:00
    https://iss-sim.spacex.com/
    来来来,感受一下
    CBS
        58
    CBS  
       2020-06-04 16:41:14 +08:00
    为什么不用 Android,Android 什么时候才能站起来,气抖冷
    BryceBu
        59
    BryceBu  
       2020-06-04 16:52:57 +08:00
    楼上都是人才
    zaul
        60
    zaul  
       2020-06-04 17:57:27 +08:00
    js 牛逼
    meisky6666
        61
    meisky6666  
       2020-06-04 19:16:38 +08:00 via Android
    带 node modules 吗
    muxfc
        62
    muxfc  
       2020-06-04 20:50:47 +08:00
    @shijingshijing 记得好久以前 FPGA 课的老师介绍说航空领域用 lattice 比较多,后来发现好像其实很多时候 Xilinx 什么的也用来着。。
    jedihy
        63
    jedihy  
       2020-06-05 01:08:43 +08:00
    系统貌似是 win10
    594duck
        64
    594duck  
       2020-06-05 04:44:01 +08:00 via iPhone
    完全不看好 3 套系统。一套系统 64G 内存,算他 300w 功耗。3 套就是 900w 。空间站店里什么时候这么富裕了。

    第二 x86 日常芯片哪怕包铅和金都没用。不是稀土芯片就是没用。宇宙高能粒子打穿分分钟

    第三宇航员手册要求无照明条件下重要操作手工盲操作,他这弄两套只要有一个逻辑操作就完蛋了。

    就像特斯拉,互联网吹逼们吹的再好。那是应为互联网不学物理和材料。大部分人连 idc 都没进去过,对功耗和硬件充满了无所谓。
    594duck
        65
    594duck  
       2020-06-05 04:45:38 +08:00 via iPhone
    @rayhy 马斯克会为此付出代价的,等着就好。在地球里高能粒子都能打穿交换机内存导致业务中断(好像国内是 ucloud 的 h3c )更不要说外太空了,他这是乱搞
    594duck
        66
    594duck  
       2020-06-05 04:53:25 +08:00 via iPhone
    @nuistzhou 人有自我修复机制,但是被射穿多了也修不了了。

    来给你举个例子,极端点的切尔诺贝利近辐射源,机器上去按分钟不行了,人上去如果不考虑死活可以呆 1 小时干活。

    宇宙中光是太阳风暴就刺激的要死了,更不要说各种粒子乱飞还没有大气层帮你挡
    jadec0der
        67
    jadec0der  
       2020-06-05 04:56:47 +08:00
    楼上让我有点想笑,继教张小龙做微信之后,教 Musk 做火箭也上线了
    594duck
        68
    594duck  
       2020-06-05 04:59:44 +08:00 via iPhone
    @alphatoad 能耐极端高温和低温的稀土芯片主频都做不高,最高好像就 700Mhz 。但是人家优化极致,主要是走浮点运算优势就够了。然后第一要素是姿态和控制。参看汽车 ecu,这块全是老外的天下。

    马斯克这块吹牛逼太大了。三套系统光是电就不得了。宇宙里还没人用锂电做电池(锂的金属特性太可怕了)

    中国走马斯克的纯电已经把自己的汽车工业草翻了(内燃机比起电动汽车难度是你抱紧我还恐怖的存在好不容易中国在 2013 年前你到了门路自己干废了自己)
    搞不好了。坐等马骗子被抽
    594duck
        69
    594duck  
       2020-06-05 05:01:53 +08:00 via iPhone
    @sadfQED2 实体按键坏了可以卸下面板直接短接。而且实体系统都有备用的。实体按键可以盲操,你难道先喊一句

    hello 马骗子?好的我在。哈哈哈哈哈
    594duck
        70
    594duck  
       2020-06-05 05:07:04 +08:00 via iPhone
    @shijingshijing 兄弟懂行的。 我觉得中国马上要吹 x86 cpu 代替 ecu 造汽车了。也好让无情的耳光狠狠的抽在吹逼们的脸上就好了。

    就像你说的对他们以为叠 3 台主机就好了。可是人家的前提是我的芯片都是稀土造的。能够承受一定的辐射和粒子。国内高互联网的有几个学过高能粒子是什么。马上就要开始瞎搞了
    594duck
        71
    594duck  
       2020-06-05 05:48:43 +08:00
    https://www.zhihu.com/question/31059366

    入门一下就可以了。



    我觉得马上微信朋友圈里吹 B 就要上来了。
    alphatoad
        72
    alphatoad  
       2020-06-05 06:13:54 +08:00 via iPhone
    我懂了,马斯克搞了个 Magi
    eva 厨大欢喜,再接再厉
    jimmy3780
        73
    jimmy3780  
       2020-06-05 08:02:51 +08:00
    @sadfQED2 JetBrains 的客户确实有 NASA 哈哈哈哈哈
    KeyboardManAnAn
        74
    KeyboardManAnAn  
       2020-06-05 09:46:55 +08:00
    不太明白特斯拉和 SpaceX 的桌面 GUI 为啥要用两个技术栈,之前特斯拉不是一直用的 QT 写桌面图形 GUI 的吗?
    KeyboardManAnAn
        75
    KeyboardManAnAn  
       2020-06-05 09:50:01 +08:00
    @nightwitch QWebEngine 本身也是基于 Chromium 的吧, 所以题主说"SpaceX 内舱操作界面基于 Chromium 和 JS 开发"还是没有什么毛病的
    sanddudu
        76
    sanddudu  
       2020-06-05 10:22:41 +08:00
    @KeyboardManAnAn 因为他们就是两家公司,技术不是直接共享的...
    MarkLeeyun
        77
    MarkLeeyun  
       2020-06-05 15:37:27 +08:00
    @alphatoad 哈哈哈哈。
    LostPrayers
        78
    LostPrayers  
       2020-06-05 17:31:41 +08:00   ❤️ 1
    @594duck 我就说你发的这些我有点眼熟,上次看相关问题还是阿波罗开源代码那一波,惊叹 登月用的计算机配置竟然这么低
    594duck
        79
    594duck  
       2020-06-06 06:49:17 +08:00
    @LostPrayers 老哥我和你说现在 V2EX 和一堆互联网吹货们反正物理不用多读,也没什么兴趣爱好,对其它行业根本不了解。2013 年前还是可以的,13 年后真的不行了。全是一股战狼精神。

    其实你去看一下汽车的 ECU 就会发现人家那叫真硬核,都是实时系统。人家那主频真叫低,但是工作环境奇糟糕(-30 度到+120 度)。国内做 ECU 是不行了,拿 OBD 的数据去写 UI 根本没鸟用,天天就喜欢把汽车弄一块影响人机交互的大玻璃,根本没鸟用。朋友的荣威买来的时候觉得科技感十足,开了半年,有一次还开着着那块屏黑了。第二年就卖了(幸好卖的早,不然赔死了)。吹的上天的蔚来,也是,身边一有钱上市公司同事买了,天天那叫一个炫呀,现在低调卖了。

    再说从 WRC 到 CTCC,根本没有人关心你的屏幕是啥做的。还液晶,笑话了。全纯仪表盘最多 LED 。

    F16 的主处理程序 才多少,CPU 主频也低的吓人,F22 也是。

    战斧那 80 年代就带地形匹配技术,整套系统要塞在这么小的导弹里。
    shijingshijing
        80
    shijingshijing  
       2020-06-06 14:54:01 +08:00
    @594duck 是的,现在互联网吹天天幻想着格命这个格命那个,实际上最多也就搞搞原来类似中介的业务,真涉及到硬核的机械、热能、物理和数学的东西,各种拉稀。

    屏幕根本不是新车的痛电,可操控性、安全、省油、环保才是重点,基本上互联网造车都是一上来一块大屏,而且没有备份的用户交互设施。这种屏幕一挂直接瞎。Space X 和 Tesla 好的系统设计没学,触控和液晶大屏这种虚头把脑的倒是抄起来挺快的,最终会付出沉重的代价。

    触控只能有限度条件下使用,一是非关键功能操控,二是必须有冗余设备防止触控失效,触控还要防止误触,并不是什么优选的交互方式,选择触控是因为现在的汽车、飞机、火箭有的功能过于复杂,如果每项都给定一个物理按钮,那么布局会相当困难甚至无法实现,所以才会进行取舍,有部分放到触屏上。最典型的 f-三五就是,导航、站情等信息放到触控上,即使失效了也有语音播报作为备份,核心的火倥、弹射都是物理按钮。互联网很多从业者数学都不及格,还一天天想格人家正统工学的命,比较搞笑。
    594duck
        81
    594duck  
       2020-06-06 15:02:51 +08:00 via iPhone
    @shijingshijing 老哥思路清晰
    Yangz
        82
    Yangz  
       2022-10-03 20:19:27 +08:00
    @muxfc 是的,Latticesemi 的一些产品用能对抗电子辐射的工艺,同时经过了比较严苛的认证,可以搞定一些比较复杂的场景。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 05:27 · PVG 13:27 · LAX 21:27 · JFK 00:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.