HackerTube English?
软件边界与变化 →

对方说做到了,怎样验收这个承诺?

一台自制烤面包机、一份 GPL 源码、一句「有云服务」:交付方的说法要变成可检查的条件,验收才不只是相信对方。

本文的问题 · 10
  1. 签名验过了,账本就只有一个版本吗?
  2. 「能加热」要持续多久才算交付?
  3. 感知模块交出去的是照片,还是已经解释过的世界?
  4. 改一条巷子,要找回几份手工工作?
  5. 允许执行代码之后,硬件还欠一次交接
  6. 交付承诺过了一次人事交接
  7. 远程调用究竟向哪台服务器兑现承诺?
  8. 「有云服务」这句话,怎样写成会失败的验收?
  9. 能调用读写接口,就算可靠存储了吗?
  10. 把缓慢推进换成快速接触,检验了哪一项疑问?

签名验过了,账本就只有一个版本吗?

把一笔付款送给两个节点,它们可以各自检查签名。若两条各自通过验证的历史互相冲突,签名并没有指定选哪条。Gensler 把下一层问题表述为「谁追加下一个块」,比特币讲解再引入累计工作量作为选择有效历史的依据。关于 256 位散列的估算只讨论撞中指定目标的通用尝试成本。它衡量的是一种计算任务,不能替我们验证账本规则、消息授权与历史选择这三层是否都正确。

原文与时间戳 · 3
how do you decide who appends that next block?
1. Introduction for 15.S12 Blockchain and Money, Fall 2018 · ▶ 18:33–18:39
the one with the most work put into it
But how does bitcoin actually work? · ▶ 19:10–19:22
on average, 2 to the 256 guesses
How secure is 256 bit security? · ▶ 0:33–0:37

「能加热」要持续多久才算交付?

Thwaites 拆开售价很低的烤面包机,数出数百个零件,最后自己制作的装置短暂发热,元件随即熔化。把这个实物当作接口来看,「接通后产生热」和「在使用时长内持续加热」会让同一件作品得到不同的验收结论。如果重要的是后一个约定,测试就要把持续时间和失效后的状态也写进去。

原文与时间戳 · 2
that, inside this object, which I'd bought for just 3.49 pounds, there were 400 different bits made out of a hundred-plus different materials.
Thomas Thwaites: How I built a toaster -- from scratch · ▶ 1:39–1:51
And for about five seconds, the toaster toasted, but then, unfortunately, the element kind of melted itself.
Thomas Thwaites: How I built a toaster -- from scratch · ▶ 10:31–10:40

感知模块交出去的是照片,还是已经解释过的世界?

Musk 描述的接口把车道、车和行人作为向量交给控制代码。试着把一种故障放在边界两侧:识别器完全漏掉一辆车,与控制器收到了车却选错路线,在最终轨迹上可能很像。排查前一个问题要保留感知输入和输出;只检查控制函数对给定向量的反应,不会让缺席的车重新出现。

原文与时间戳 · 2
you've got cars and humans and lane lines and curves and traffic lights
Elon Musk: SpaceX, Mars, Tesla Autopilot, Self-Driving, Robotics, and AI | Lex Fridman Podcast #252 · ▶ 69:49–70:02
It's outputting proper vectors to the C++ control code
Elon Musk: SpaceX, Mars, Tesla Autopilot, Self-Driving, Robotics, and AI | Lex Fridman Podcast #252 · ▶ 92:29–92:34

改一条巷子,要找回几份手工工作?

《另一个世界》的关卡文件里各有一份主角的行为。改一次主角,就要在每一关再改一遍。《蜘蛛侠》的巷子则是另一种传播路径。巷子一宽,相邻地块的生成结果也可能变化,美术师此前摆好的东西就有被覆盖的风险。给编辑器加“重新生成”按钮之前,试写出两张清单:哪些内容由规则拥有,哪些手工改动必须留下?这比只计算重建要几秒更能估出代价。

原文与时间戳 · 2
for every change I was making on generic things, I had to do it on all files
Classic Game Postmortem - Another World · ▶ 17:26–17:34
just adjusting the alley width in one region could affect many surrounding tiles
Procedurally Crafting Manhattan for Marvel's Spider-Man · ▶ 36:36–36:43

允许执行代码之后,硬件还欠一次交接

设想能在游戏主机里执行一条跳转指令。跳到 Linux 的入口地址就能当 PC 用了吗?PS4 团队列出交接时必须成立的条件,包括放好内核、设置页表、停住其他 CPU。此前他们把南桥单独接到一台主板上,才获得可以观察和实验的设备。这里的接口值得写成两栏:执行跳转前调用方要准备什么,以及接手的一方能假定外设已经处于什么状态。

原文与时间戳 · 2
Now the southbridge is a PCIe card for us.
Console Hacking 2016 (33c3) · ▶ 7:30–7:34
shut down FreeBSD cleanly, halt secondary CPUs, make new pagetables
Console Hacking 2016 (33c3) · ▶ 11:13–11:16

交付承诺过了一次人事交接

现场索取内核源码时,原先回邮件的人已经离开。问题从「有人答应交付」变成了「谁能定位对应版本、谁能实际交付」。这也适合在维护模块时追问:如果调用者按文档索取一种行为,而当初写文档的人不在了,项目里的什么记录还能兑现承诺?

原文与时间戳 · 2
He has left the company.
Getting GPLv2 Compliance From A Chinese Company- In Person! · ▶ 4:46–4:47
I am here for the kernel source code.
Getting GPLv2 Compliance From A Chinese Company- In Person! · ▶ 4:37–4:43

远程调用究竟向哪台服务器兑现承诺?

Apple 在 WWDC 演讲里描述了两层约束:发送哪些与任务相关的数据,以及设备可与哪种软件状态的服务器通信。前者需要检查请求内容,后者需要核对远端软件的记录。相同的「已加密」标识无法替代这两项检查;这段引文记录的是发布会提出的承诺。

原文与时间戳 · 2
send only the data that's relevant to your task
WWDC 2024 — June 10 | Apple · ▶ 74:51–74:58
unless its software has been publicly logged for inspection
WWDC 2024 — June 10 | Apple · ▶ 75:23–75:27

「有云服务」这句话,怎样写成会失败的验收?

The Onion 的虚构发言人列举邮件、社交和各种缩写,仍然没有给出一个可以检查的行为。把产品词换成一次明确操作:手机离线前保存一份文件,另一台设备在什么条件下能读到哪个版本?再加一个失败场景:上传到一半断电时,是保留旧版、产生残缺版,还是提示重试?有了这两项,广告里的承诺才出现可以被观察的边界。

原文与时间戳 · 2
How does the cloud work?
HP Offers 'That Cloud Thing Everyone Is Talking About' · ▶ 1:00–1:05
It's so simple and intuitive I don't need to waste your time explaining it.
HP Offers 'That Cloud Thing Everyone Is Talking About' · ▶ 1:05–1:09

能调用读写接口,就算可靠存储了吗?

Tom7 把同一种块设备接口接到几种荒诞的后端,借此暴露接口名称没有说完的承诺。网络回声方案在口述中允许数据因丢包消失,返回数据的主机也不一定可信;本地游戏模拟器则有断电失去状态的限制。它们让调用者继续追问:写完之后能保存多久,在哪些故障下还能读到原值,谁可以改变返回内容?这些问题需要独立约定和验证,不能只从「有 read 和 write」推出答案。这里比较的是讲者明确说出的条件,不把屏幕上一次运行或未完成基准的装置当作实现保证。

原文与时间戳 · 2
this is not a reliable way of storing data
Harder Drive: Hard drives we didn't want or need · ▶ 11:54–12:00
if you turn the computer off everything is lost
Harder Drive: Hard drives we didn't want or need · ▶ 24:48–24:52

把缓慢推进换成快速接触,检验了哪一项疑问?

Katz-Moses 注意到,常见的台锯制动演示常把接触材料缓慢推向锯片。他于是增加一次更快的接触,并把它与其他触发测试一起报告。这个改变让测试针对了速度这一条件。九次触发得到的是这组材料和设置下的观察,讲者据此对人体受伤后果作出的推测还需要另外的证据。

原文与时间戳 · 2
so what if you went as fast as you could
We Tested SawStop 9 Times in Slow-Mo – Here's What Happened · ▶ 3:44–4:02
I did nine activations in a row
We Tested SawStop 9 Times in Slow-Mo – Here's What Happened · ▶ 7:38–7:51

读完再想一步

把你最近收到的一项交付写成三条会失败的验收条件。