一段时间后,我遇到了一位古老的同事,他开始告诉我他面临的这虫子:
“所以,我们通过创建ConfigFile开始国际化网站。我们首先添加了英国,爱尔兰,法国和德国。“
“这一切都很好。然而,快速配置后的一天,长期地狱爆发。事实证明,虽然英国,法国和德尔德纳都很好,挪威不是......“
“虽然网站下降了,我们正在亏损我们追逐落下的松散目的,直到最后找到根本原因。”
当它被馈送到预期表单“否”字符串的代码,那么代码通常会突破,通常是用密码错误,通常它是在尝试使用'false'时的keyerror,当时没有这样的关键。
通过使用引号可以“快速固定” - 肯定的,否则是一个黑客 - 以及那个时间造成损坏:
这个bug的最悲惨方面有多么悲惨的方面,它是根据yaml 2.0规范的预期行为。真正的修复需要明确忽略规范 - 这是大多数yaml解析器拥有它的原因。
Strictyaml通过忽略Thepec的关键部分来解决这个问题,试图创建一个“零惊喜”解析器。
挪威只是冰山一角。此问题首次命中MEI正在维护应用程序版本的配置文件。我最初像这样的档案 - 这造成了没有问题:
>>>来自ruamel.yaml进口负荷>>>加载(版本)== [{" python" :" 3.5.3" ," postgres" :9.3}]#oops那些*两个*应该是字符串
同样,这导致在我的代码中键入错误。再次,我用报价快速修复它。但是,我真正想要的解决方案是:
Christopher Null有一个名称,无法打破软件代码 - 航空公司,银行,每一个错误的程序员都没有知道从他们的肘部击中他。
#如果我们只是打电话给你克里斯托弗没有吗? >>>加载(姓名)== {"名字" :"克里斯托弗" ,"姓氏" : 没有任何 }
类型理论是一个关于编程语言的流行课题,其中设计了精心设计的类型系统(正确地)作为一个磁轭,当播出的阶段发育阶段,而良好的类型系统为边缘案例提供肥沃的繁殖地。
(同样正确的是,极其严格的系统需要推进发廊,并递减回报的法律适用于对这个问题的答案答案“为什么是哈克尔写的,所以LittleSoftware是如此,是哈克尔写的?”)。 不太受欢迎,尽管同样真实的想法是Markuplangumages等yaml与类型的相同问题 - 如演示。 在某种程度上,型系统可以被认为是一个数学问题和UX设备。 在上面的情况下 在上文中,在大多数情况下,隐含的打字代表了UX原则最不惊讶的主要违规行为。