NBA 为打击“摆烂”(即故意输球以换取高顺位选秀权)而进行的博弈,在萨姆·辛基(Sam Hinkie)带领费城 76 人队推行“过程”(The Process)时期达到了顶峰。虽然为了战略利益而输球并非新鲜事,但辛基毫不掩饰的透明度引发了巨大的争议。对此,联盟多次改革选秀抽签制度以抑制此类行为。 作者提出了关于这一演变的两种理论。第一种观点认为,全国性体育报道和社交媒体的兴起放大了公众的愤怒,使得球队更难掩盖输球策略。按照这种看法,我们对“耻辱感”的认知是由媒体和技术的变迁所决定的,而非因为不道德行为真的有所增加。 另一种观点则认为,NBA 的反摆烂措施反映了管理层内部真正的道德滑坡,球队越来越胆大妄为,将自身利益置于比赛的公平性之上。最终,本文倾向于技术性的解读:正如社交媒体通过消除面对面交流的直接物理后果而助长了网络敌意一样,它也消除了曾经制约球队肆无忌惮地操纵制度的地域性障碍。
网页开发的历史伴随着浏览器渲染不一致的时代,尤其是 Internet Explorer(IE)时期。由于早期的浏览器缺乏标准化的 CSS 支持,开发者被迫使用各种“黑客手法”——利用特定浏览器在解析代码时的漏洞来应用条件样式。
常见的技术包括“星号黑客法”(使用 `*` 或 `_` 前缀来针对 IE)、执行 JavaScript 的 CSS 表达式,以及微软特有的“滤镜”(Filters)来处理透明度、渐变和透明 PNG 图片。开发者还必须应对诸如“双倍外边距浮动”漏洞(Double Margin Float)和“hasLayout”概念等独特的怪癖,并经常依赖 `zoom` 或 `behavior` 等非标准属性来强制实现一致的表现。虽然厂商前缀最初旨在用于测试实验性功能,但它们往往被过早采用,迫使浏览器不得不无限期地对其提供支持。
这些做法在当时对于实现跨浏览器兼容性至关重要,但它们性能开销大、逻辑混乱且极不稳定。幸运的是,现代网页标准已使这些深奥的“黑客手法”基本过时,开发环境也已从利用特定浏览器的解析错误,转向了更统一、更可预测的开发体验。
竞态条件因依赖于特定的、非确定性的线程交织,导致其在调试、测试和模糊测试时极为困难。传统方法(如人工代码审查或添加 `mdelay()`)既耗时又难以创建可靠的回归测试。
为了解决这一问题,作者开发了 **MAccConc**(“内存访问并发”),这是一个用于 Linux 内核的工具包,旨在探索多线程执行交织。该项目利用 **KCOV** 插桩来记录内存访问模式,并识别“通信点”(即线程通过共享内存进行交互的地方)。
主要功能包括:
* **自动 A-B-A 测试:** 一种可通过编程方式探索测试用例所有可能交织情况的工具。
* **手动探索:** 提供图形界面和终端工具,允许开发人员可视化执行过程,并使用“计数增强堆栈跟踪”(count-augmented stack traces)强制执行特定的排序约束,从而为不同运行中的内存访问提供稳定的标识符。
* **延迟注入:** 一种基于 ioctl 的 API,允许用户空间强制或限制内存访问的时序,以可靠地重现或规避特定的竞态条件。
该项目受 SKI 研究启发,现已托管于 GitHub。未来的工作目标是提高效率、集成锁感知诊断功能,并扩展该工具以支持自动化模糊测试。