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

感觉很少有人真的了解 yaml(的缺点),很多人了解的 yaml 其实仅限于 json 语法糖范围

  •  4
     
  •   mcfog ·
    litphp · 2018-11-24 23:57:26 +08:00 via Android · 8113 次点击
    这是一个创建于 2192 天前的主题,其中的信息可能已经有所发展或是发生改变。

    参考资料: https://arp242.net/weblog/yaml_probably_not_so_great_after_all.html

    几个 point:

    yaml 特别复杂,spec 比 xml 更长,是 json 的十倍多,toml 的七倍多

    yaml 复杂在哪里?比 json 超集的地方? 可以表示各种语言原生的类型

    yaml 有很多相关的安全问题,因为 parse 的时候是可能构造各种东西的

    yaml 宣称的可移植性其实并不成立,除非去掉很多强大的特性

    我能理解几乎所有人用说 yaml 的时候,都其实只在说“不超过 json 表达能力的“那个 yaml 的子集,但我希望能让更多人知道其实全集的 yaml 是个问题特别多的东西,另外用 yaml 库 parse 用户输入的时候,请务必多看看文档,可能会有很多 option 是需要调整的

    14 条回复    2018-11-25 11:32:45 +08:00
    HelloAmadeus
        1
    HelloAmadeus  
       2018-11-25 00:58:57 +08:00
    ansible 在用,kubernetes 在用, 你只能是在你写的应用程序里面不用, 甚至你都不能决定你的应用程序里面不用 yaml。 你说出个天花板的理由, 也改变不了什么 。要么你就写个更好的, 而且给现在所有语言都写了能用于生产的 parser, 然后在批评 yaml, 那自然会有人给你点赞。
    iamcoward
        2
    iamcoward  
       2018-11-25 01:06:31 +08:00
    toml 怎么样呢?有没有了解的说说
    via
        3
    via  
       2018-11-25 01:31:46 +08:00 via iPhone
    对于第一个例子我更宁愿相信是 parser 的锅而不是 yaml 本身的
    Trim21
        4
    Trim21  
       2018-11-25 02:32:53 +08:00   ❤️ 3
    需要写 yaml 的时候我都是写 json 然后转换成 yaml...
    trait
        5
    trait  
       2018-11-25 03:01:10 +08:00 via iPhone
    @iamcoward toml 很不错,比起 yaml 长长的一串树结构,toml 的 table 可读性更高,一直是 rust 语言的包管理和工具链配置格式
    buildblock
        6
    buildblock  
       2018-11-25 03:36:51 +08:00 via iPhone   ❤️ 1
    一般情况下 yml 就是拿来做配置的,几个月都不会碰一下,何必纠结这些东西呢。工具是用来解决问题的,不是让你爽的,好用从来都不是一个东西能否得到广泛使用的充分条件。
    lovelybear
        7
    lovelybear  
       2018-11-25 08:36:00 +08:00 via Android
    我倒觉得没必要太过纠结于 yaml 好或者不好,没有完美的编程语言,也没有完美的文件格式,与编程语言一样,配置文件格式没有优劣,一切都以适用性为主,哪种配置文件符合你的需要,哪种配置文件可以更快地帮助你完成开发,哪种配置文件就是最好的。
    yurun
        8
    yurun  
       2018-11-25 08:47:27 +08:00
    同样不喜欢 yaml
    lizheming
        9
    lizheming  
       2018-11-25 09:20:22 +08:00
    yaml 的规范具复杂...有时候加不加引号都需要考虑很久...
    artandlol
        10
    artandlol  
       2018-11-25 09:36:41 +08:00 via iPhone
    https://pulumi.io/
    一个管理 yaml 的编程语言,aws 出品
    zhengxiaowai
        11
    zhengxiaowai  
       2018-11-25 10:00:03 +08:00   ❤️ 1
    yaml 就一个优点可以胜过 json 了,yaml 可以注释 JSON 无法注释。

    你想想看在好几百行的配置文件中,没有注释是一件多可怕的事情
    vakara
        12
    vakara  
       2018-11-25 10:10:05 +08:00 via Android
    写 yaml 还好,读地话,有时候需要游标卡尺…
    hjc4869
        13
    hjc4869  
       2018-11-25 10:17:13 +08:00
    以前我的项目经常用 yaml 做 config,现在全部换回 xml 了🤣
    mcfog
        14
    mcfog  
    OP
       2018-11-25 11:32:45 +08:00   ❤️ 2
    @via yaml parser 实现的不好其实不也还是标准太复杂了所以不容易做好么…

    @buildblock 知道优缺点才能更好的作出选择,开发快只是一点,可维护性,复杂性还有安全性都应该纳入选择的考量范围

    @zhengxiaowai 我同意注释对于配置来说是必须的,因此 JSON 做配置并不明智,但这并不代表这就能成为选择 YAML 的理由,因为市面上常见的配置文件方案里,基本只有 JSON 不支持注释
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:01 · PVG 09:01 · LAX 17:01 · JFK 20:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.