# 本网站由 https://twitter.com/geoffreyhuntley 用 💖 呈现(在写了巨量的自定义资源(CustomResourceDefinition)之后) # 中文翻译来自莫得感情的 https://twitter.com/find1x。原版:https://noyaml.com/ # 欢迎参与优化, 凸(艹皿艹 ) ↗️ 八爪猫 ↗️ ,然后可以分享分享你如何因为 YAML 过上了更好的生活. 没有: 人: 想: 要: 写: - YAML # 🤔 为什么说 YAML 是一个正确的研发技术 🤔 # # - 100% 测试覆盖率,永远正常编译, 没有错误么有警告, 始终开箱即用 # - 在开发过程中不强制进行错误处理,毕竟在生产状态下运行时出现“爱,(死)亡与(机)器人”那可真的是酷毙了 # - 显示一行“代码挂了”可比打印调用栈行号有用多了 # - 你需要花费几个小时来构建一套新的持续集成流程 # - 业界通行的选择,无可置疑, “毕竟是 kubernetes 用的嘛” # - 比用 windows.ini 好了那么一点 # - 不像 json [1], YAML 有注释 # - 你需要一个超安全的方法来“执行代码” # 🍿 等等,你是说 “可执行的 yaml”?? 🍿 # - https://ruby-doc.org/stdlib-2.4.0/libdoc/yaml/rdoc/YAML.html#module-YAML-label-Security # - https://www.php.net/manual/en/function.yaml-parse.php#refsect1-function.yaml-parse-notes # - https://lgtm.com/blog/swagger_snakeyaml_CVE-2017-1000207_CVE-2017-1000208 # - https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation # 🚨 任何长期使用 YAML 的人最终都会在使用挪威(Norway)的缩写时被逼疯 🚨 # `NO` 会被解析为布尔类型, 再考虑到 YAML 1.1 特性, 我们就得到了 22 种写 “true” 或 “false” 的方法 # 所以你不得不把 “NO” 括起来以免被吓哭. NI: Nicaragua NL: Netherlands NO: Norway # 💣! # 当你用一些看上去像是时间的东西的时候,YAML 他懂你, # “其实你 真·想要 的是从午夜0点开始计算的秒数对吧!” timeOfDay: whatYouWrote: 04:30 # 解析这个文件,再次序列化之后你会得到…… whatYouSurelyMeant: 16200 # 查错愉快! whatYouShouldHaveWritten: !!str 04:30 # YAML 有一个超棒的编码八进制数的方法,更雪中送炭的是,Kubernetes 用的是 YAML 1.1 # 恭喜你获得 DevOps 的期末考试题最终大题答案:在低于 YAML 1.2 版本时,一个大整数会被自动转换为八进制数 - YAML 1.1 使用 `0666` 表示八进制。 - YAML 1.2 使用 `0o666` 表示八进制。 # 🤢 我最近正在学习 GitHub Actions # # 我刚刚在一个小时中提交了八次,在最后一次的提交说明中我写道: # # "我真的不喜欢 yml" - https://twitter.com/eric_sink/status/1430954572848287744 # 😭 如果 SQL 是用 YAML 实现的话 😭 SELECT: - num - name FROM: - customers WHERE EXISTS: SELECT: - name FROM: - orders WHERE: AND: - EQUALS: - customers.num - orders.customer_num - LT: - price - 5 # 他:“看,我买了一箱 DevOps” # 她:“你不可能只买了一箱 DevOps” # 🤣 https://twitter.com/mike_kaufmann/status/1454712996933025794 # “千万别忘了额外的空行,不然你就等死吧” # 👉 https://github.com/IronScheme/IronScheme/commit/2f847793946935bd9143cdfb064f9006f763df68 # 🤡 在不同的 CI 环境下做同样的事情 🤡 # Azure devops jobs: - job: job1 steps: - script: chmod +x ./script.sh - script: ./script.sh # CircleCI jobs: job1: steps: - checkout - run: "execute-script-for-job1" # 某个未来的 CI 系统,谁知道呢 jobs: - steps: job1 - step1: - script: chmod +x ./script.sh - step2: - run: "execute-script-for-job1-inside-step2" # 如果你是用 YAML 为一个模板写一个模板的模板, # 而且模板里还包含了一个 SEARCH 函数? 你需要转义已经转义过的字符 # 并且用双引号把整个 JSON 括起来: "{ \"search(' var=\\\"blue\\\" . # 💊 大量包含痛苦面具的 Twiter 消息 # 👉 https://twitter.com/brunoborges/status/1098472238469111808 👈 # 📢 必读 📢 # # “今天我们来看看一些 YAML 格式里的经典问题” # 👉 https://arp242.net/yaml-config.html 👈 # # “我们把 1000 行 YAML 换成了 10 个结构体,然后大家又开始了” # 👉 https://tinyurl.com/lessons-in-over-engineering 👈 # # “如果您使用与定义应用程序相同的语言和工具来定义基础架构会怎样?” # 👉 https://twitter.com/ellism/status/1008728148131733504 👈 # # “一个 YAML 文件几乎总是‘有效’,即使它就写了一半还氵” # 👉 https://twitter.com/colmmacc/status/1057316977457324032 👈 # # “这个 bug 是 YAML 解析器忽略了负号…… 所以负 GPS 坐标变成了正的” # 👉 https://twitter.com/colmmacc/status/1063470541464461312 👈 # # “每个 YAML 解析器都是个自定义 YAML 解析器” # 👉 https://matrix.yaml.io/valid.html 👈 # # “在 YAML 中有 63 种不同的方式来编写多行字符串” # 👉 https://stackoverflow.com/a/21699210/1094085 👈 # 💭 一些 DevOps 的替代选项和方法(咳咳 爷爷默默 咳咳) 💭 # - https://media.ccc.de/v/36c3-11172-leaving_legacy_behind # - https://nickel-lang.org/ # - https://dhall-lang.org/ # - https://cuelang.org/ # - https://jsonnet.org/ # - https://www.youtube.com/watch?v=tl9I-R83lKo # - https://github.com/xtruder/kubenix/tree/kubenix-2.0/examples/nginx-deployment # 🏁 如果您是可通过 YAML 配置的开发人员工具的供应商,请这样做 🏁 # - https://twitter.com/kzu/status/1163864030911578112 # - https://twitter.com/timeyoutakeit/status/1431052862138769408 # 📖 脚注 📖 # [1] 你可以用这样的方式在 JSON 里写注释: `{"//": "A way to use comments in json"}` 但看上去有大病 # 最后,还有一些来自 reddit.com 对于本站的 ⭐️⭐️⭐️⭐️⭐️ 反馈: - 我需要烧掉运行这个网站的主板。真是太可怕了。 - 这是我见过的最糟糕的网站 - 我原则上同意作者的观点,但该网站是不可原谅的。我将在周一将 YAML 配置添加到我的项目中,以应对那个可怕的“网站”。 - TMD 就是这个网站,为什么它反复弹出我手机的键盘 - 该网站是一个巨大的可编辑文本框 - 为毛?!? - 因为我都说到这个份上了,应该要展示一下良好的标准 - 你在教我们做事? - 虽然我同意网站的精神(去他妈的 yaml),但作者的设计决策至少可以说是有问题的。 - 好消息(我发现的)是您可以选择网站的所有文本,然后将其删除。问题解决。 - 去他妈的这个网站。也许如果这个人不再抱怨 yaml,他们的网站就不会崩溃。 - 是的,我不会从一个能做出这样一个网站——整个都是一个带有不可点击超链接的巨大可编辑文本框——的人那里获得最佳实践的建议。 # 附言:按照设计本意,该网站与 YAML 一样好用。 💕