自动化测试发现了一个令人惊讶的问题:在Postgres、DuckDB和SQL Server等系统中,混合使用整数和浮点数时,传递性比较(a=b,a=c 并不*总是*意味着 b=c)存在问题。这源于这些系统处理类型提升的方式——在比较过程中将整数转换为双精度浮点数。双精度浮点数具有有限的精度,在表示大整数时会导致信息丢失,从而导致比较不准确。 这种不准确性会影响查询优化,并且关键地影响依赖类型提升的连接操作。为了解决这个问题,作者实现了一个自定义比较函数 (`cmpDoubleInt64`),该函数通过将两个值都转换为双精度浮点数*并*转换回整数,来显式检查精度损失,并考虑潜在的四舍五入。 值得注意的是,Python和SQLite可以正确处理这些比较。然而,测试的大多数其他数据库和编程语言都表现出相同的精度问题,这凸显了标准库功能中的差距。提供的代码为面临此问题的开发人员提供了一个解决方案。
澳大利亚的“Triple Zero”(000)紧急呼叫系统出现了一个严重缺陷,可能危及数千人。最近的事件,包括悉尼的一起死亡案例,显示,较旧的三星智能手机可能无法连接到紧急服务,尤其是在依赖沃达丰网络时。
问题源于全国范围内的3G网络关闭。虽然许多手机已过渡到4G/5G,但有些手机缺乏完整的VoLTE(Voice-over-LTE)功能——在这些网络上进行语音通话所必需的——或者在“漫游”到不同运营商以获取信号时存在兼容性问题。这意味着如果主网络不可用,这些手机无法可靠地切换到另一个网络拨打紧急电话。
Telstra的测试证实了某些三星型号的故障,三星已发布受影响设备清单,需要更新或更换。澳大利亚运营商正在通知用户,并将禁止不合规手机接入其网络。这并非澳大利亚独有的问题;欧洲也发现了类似的VoLTE互操作性问题,凸显了4G/5G语音通话技术缺乏全球标准化。
## 基准:面向网页开发者的快速指南
基准是W3C的一项倡议,在网页开发者中越来越受欢迎,作为跨浏览器功能支持的简单指标。它将网页功能分为“非基准”、“新可用”和“广泛可用”(在Chrome、Safari、Edge和Firefox中支持2.5年以上)。
虽然填补了快速评估的空白,但基准并非明确的“通行证”。它不考虑所有浏览器版本、可访问性问题,或是否需要渐进增强/polyfills。它被设计为一个起点,而不是对目标受众和最佳实践进行全面考虑的替代品。
该项目的成功在于建立一个通用的网页功能目录和共享词汇。WebDX社区组正在积极努力改进基准,方法是纳入可访问性数据,将功能映射到polyfills,并通过诸如`baseline-browser-mapping`和`browserslist-config-baseline`之类的工具扩展浏览器覆盖范围。
最终,基准是一个有用的快捷方式——“广泛可用”表示可以安全采用,“新可用”表示需要注意,“非基准”不应阻止探索新功能。鼓励开发者为WebDX组做出贡献,以帮助塑造基准的演进。