TONT 33023 关于无法再支持已经无人再制造的硬件这件事

原文链接:https://devblogs.microsoft.com/oldnewthing/20051209-12/?p=33023

Windows Vista will not have support for really old DVD drives. (The information below was kindly provided to me by the optical storage driver team.)

Windows Vista 对于一些特别老型号的 DVD 光驱已经不再提供支持了。(以下信息由光存储驱动开发组友情提供。)

When PC DVD drives first came out in 1998, the drives themselves did not have support for region codes but instead relied on (and in fact the DVD specification required) the operating system to enforce region coding, with the further understanding that starting on January 1, 2000 all newly-manufactured drives would support region coding in hardware rather than relying on software enforcement. For the purpose of this discussion, I will call the two types of drives “old” (manufactured before 2000) and “new” (manufactured on or after January 1, 2000).

1998年,PC 上的 DVD 光驱刚刚出现的时候,光驱硬件自身并不支持区码限制,而是依赖操作系统来确保这个限制(实际上也是 DVD 标准所要求的),不过在后来更新的标准中,自2000年1月1日起,所有新生产的DVD光驱都应当在硬件、而不是在软件中确保区码限制。为了讨论方便,接下来我将这两种光驱称作『旧』光驱(2000年以前生产)和『新』光驱(2000年1月1日起生产)。

It is that software enforcement that is going away. Turns out that the enforcement of region coding in software had its own problems:

在这个转变的过程中,由软件实现的区码限制消失了,原来是因为由软件实现的区码限制有它自己的问题:

  • It was impossible for third-parties to compile their own CDROM.SYS from the source code in the DDK because the region code enforcement code was not included in the DDK.
    第三方开发者无法从DDK(驱动程序开发包)的源代码中编译他们自己的 CDROM.SYS,因为 DDK 中没有区码限制相关的代码。
  • The region code enforcement code would sometimes mistake a new drive for an old one, resulting in customers unable to play DVDs. Even worse, the driver test team could not reproduce the problem reliably, and the problem went away entirely once a debugger was attached to the system.
    区码限制功能有时候会将新光驱当作旧光驱,导致客户无法播放DVD。更糟糕的是,驱动测试组无法可靠地复现这个问题,而且一接入调试器这个问题就消失了。
  • The code to support the older drives is complex, and the drives that the optical storage team purchased prior to January 1, 2000 are dead or dying. Consequently, testing the code that provides support for old drives has become increasingly difficult, and when the last old drive finally gives up the ghost, testing will become impossible altogether.
    支持旧光驱区码限制的代码很复杂,并且在光存储团队在2000年1月日以前购置的(测试用)光驱大多已经或差不多坏掉了。由此,测试支持旧光驱代码的工作变得愈加困难,等到最后一台旧光驱坏掉的时候,测试工作就会变得完全无法进行了。

These were among the considerations which contributed to the decision to stop supporting these old drives.

以上这些都在决定停止支持这些旧光驱的考虑之中。

What does this mean for you? Almost certainly, the answer is “absolutely nothing”.

而这对你又意味着什么呢?基本可以肯定,答案是『毫无意义』。

First, there is no change to the way data is read from DVD drives, so data discs will still work the same way as they do today. Second, all new DVD drives will continue to run as they did before; the only change is that the risk of mis-identification as an old drive has been removed. Only if you have an old drive will you notice anything different, namely that encrypted/regionalized DVD movies will no longer play. And since the average drive lifetime is only three years, the number of such old drives that are still working is vanishingly small. Not even the optical drive test team can manage to keep their old drives alive that long.

首先,从DVD光驱中读取数据的流程没有任何改变,故而数据光盘的读取效果与现今别无二致。其次,所有的新DVD光驱都会像过去那样正常工作,唯一的变化是会造成将新光驱当作旧光驱这个失误的相关代码已经被移除了。只有当你手里的光驱是『旧』光驱的时候,你才会发现有不一样的情况发生,亦即加密的或有区码限制的DVD影碟无法播放。鉴于光驱的使用寿命平均只有三年,会有这个问题的旧光驱的数量正在急剧缩小。(别忘了,)就连光驱测试组的成员们都没法让这些旧光驱活那么久。

TONT 33043 用实体物品作为提醒

原文链接:https://devblogs.microsoft.com/oldnewthing/20051208-10/?p=33043

On our team, we have a mailing list where people can report problems. Those people could be testers from our team or they could be people from elsewhere in the company. Everybody on the team is expected to keep an eye on the messages and debug problems in their area. The job of monitoring the mailing list to ensure that every issue is ultimately addressed rotates according to a predetermined schedule, and in addition to receiving a piece of reminder mail at 4pm the business day before it’s your turn, you will also find a Mickey Mouse ears hat on your desk when you arrive in the morning.

在我们的团队中,有一个邮件列表用来报告问题,报告问题的人既可能是团队中的测试人员,也可能是公司里其他部门的人。团队成员们都有责任盯好消息,并处理自己所负责的调试工作。监视邮件列表、以便将每个问题都能最重转达给响应人员的工作是按照一个预定的计划轮转的,并且除了工作日下午4点会收到一封邮件、提醒第二天轮到你来做这项工作之外,第二天你的桌子上还会多出一顶米奇老鼠的帽子。

I bought this hat in Disneyland a few years ago and somehow managed to convince the person operating the sewing machine to stitch the name “Dev O’Day” on the back. “It’s an Irish name,” I explained, but it also stands for “Developer of the Day”, which is the title we use for the person who monitors the mailing list.

这顶帽子是几年前我去迪士尼乐园的时候买的,并且设法说服了操作缝纫机给帽子织上名字的人,让他在帽子背面织了『Dev O’Day』这个名字。『这是个爱尔兰名字』,我是这么跟他解释的,不过这个缩写也代表『今日开发者』,亦即我们给今天盯着邮件列表的人的头衔。

One of our team members went on vacation to Disneyland the following year and brought back a back-up hat, which sits in my office. The back-up hat is occasionally brought into service when the primary Dev O’Day hat goes missing, at which point a Search and Rescue mission is undertaken to locate the hat and restore it to circulation. (It’s usually just sitting in the office of someone who was Developer of the Day recently and merely forgot to hand the hat off at the end of the day.)

我们团队里的一位成员第二年的时候也去了迪士尼乐园独家,并且买回来一定备用的帽子,这顶帽子放在我的办公室里。备份帽偶尔会在『主』帽消失的时候用来顶替它的工作,而这时『搜救行动』也会开展起来,将『主』帽重回流通之中。(通常来说,『主』帽只是被留在了最近成为『今日开发者』的某个成员的办公室里,忘了在当天结束的时候交出去而已。)

TONT 33083 当标记的含义中途发生变化的时候

原文链接:https://devblogs.microsoft.com/oldnewthing/20051206-10/?p=33083

The project leader for the initial version of Internet Explorer was well-known for wearing Hawaiian shirts. I’m told that the team managers decided to take one of those shirts and use it as an award to the team member who fixed the most bugs or some similar thing. What the team managers failed to take into account that nobody actually liked having a Hawaiian shirt hanging in their office, especially not one that was worn by somebody else. If you happened to be the person who fixed the most bugs, you sort of reluctantly accepted the shirt even though you really didn’t want it.

Internet Explorer 早期版本的项目领导人的夏威夷衫装束在公司内人尽皆知。团队管理者告诉我,他们决定拿其中一件衬衫当奖励,奖给修复了最多bug或者做了类似贡献的团队成员。但是团队管理者没有考虑到的是,并没有人喜欢在办公室里挂一件夏威夷衬衫,尤其是被别人穿过的那种。如果你碰巧修复了最多的bug,就得不怎么情愿地接受一件衬衫,即便是你并不怎么想要它。

And then a wonderful thing happened: The meaning of the shirt flipped.

然后就发生了一件奇妙的事情:衬衫的含义来了个180度的转变。

I don’t know the details. I suspect at one point, somebody who “won” the shirt just left it in somebody else’s office as a way of getting rid of it. This simple gesture was the turning point. The shirt became a symbol of disapproval. I believe the unofficial rule was that in order to get rid of the shirt, you had to find somebody who messed up at least as bad as whatever you did to earn the shirt in the first place.

我不知道事情的详细经过,估计是在某个时候,某个『赢得』了这件衬衫的人干脆把它留在了别人的办公室里,权当一种丢弃的方式。如此简单的一道行为成为了转折点,衬衫变成了不赞成的标志。我觉得这条不成文的规定是,要想把衬衫推给别人,你得找一个像自己一样因为把事情搞糟(至少跟自己的程度差不多)、因而被塞给了这件衬衫的人。

It took a while before the team managers even realized what happened to their “award”.

团队管理者过了好一阵子才发现自己的『奖励』变成了什么样子。

TONT 33103 将软盘用作信号量标记

原文链接:https://devblogs.microsoft.com/oldnewthing/20051205-09/?p=33103

In the very early days of Windows 95, the distribution servers were not particularly powerful. The load of having the entire team installing the most recent build when it came out put undue strain on the server. The solution (until better hardware could be obtained) was to have a stack of floppy disks in the office of the “build shepherd”. (The job of “Build Shepherd” was to perform the initial diagnosis of problems with the build itself or with verification testing and make sure the right developer is called in to address the problem.)

在 Windows 95 研发的初期,用来发版的服务器性能并不算强大。当新版本发布后,整个团队都去上拉取最新构建版本进行安装这件事对服务器造成了可观的压力。解决方法(在换用更强力的硬件之前)是在『构建牧羊人』的办公室里放置一摞软盘。(『构建牧羊人』的工作是对构建版本、或者验证测试进行初步的问题筛查,并确保对应的开发者能被及时叫来处理问题。)

If you wanted to install the latest build, you had to go to the Build Shepherd’s office and take one of the specially-marked floppy disks. When you finished installing, you returned the disk.

假如你想安装最新的构建版,你就需要去构建牧羊人的办公室里去取一张做了特殊标记的软盘,等安装完之后,再把软盘送回去。

In other words, the floppy disk acted as a real-world semaphore token.

换句话说,这些软盘变成了现实世界中的信号量标记。

TONT 33243 为什么(有时)UNC路径的开头允许有盘符?

原文链接:https://devblogs.microsoft.com/oldnewthing/20051122-15/?p=33243

A little-known quirk is that the file system accepts and ignores a drive letter in front of a UNC path. For example, if you have a directory called \\server\share\directory, you can say

有个鲜为人知的奇怪设计是,文件系统接受(并会忽略)UNC 路径的开头包含盘符。例如,如果你有个目录(的共享路径)是\\server\share\directory,你可以输入

dir P:\\server\share\directory

and the directory will be listed to the screen. The leading P: is ignored.

目录内容会成功列出,开头的 P: 被忽略了。

Why is that?

这是为什么呢?

Rewind to 1984 and the upcoming release of MS-DOS 3.1, which added networking support. Up to this point, all fully-qualified file specifications consisted of three components: A drive letter, a path, and a file name. Many programs relied on this breakdown and did things like “helpfully” prepend a drive letter if it looks like you “forgot” one. For example, if you told it to save the results to \\server\share\file.txt it would say, “Oh dear, that’s not good, the user forgot the drive letter! I’ll put the current drive in front to make things better,” resulting in C:\\server\share\file.txt. Other programs would prompt you with “Please enter a drive letter”, and you couldn’t say “No, there’s no drive letter, just take the path and use it.” They insisted on a drive letter, and you darn sure better give them one.

回到 1984 年,MS-DOS 3.1 即将发布,该版本新增了网络支持。到这时为止,所有完全限定的文件规范包含三个组成部分:盘符、路径和文件名。很多应用程序都依赖这种组合方式,并且如果路径看上去是用户『忘了』录入盘符的话,还会在最前面『帮忙』加上一个。例如,如果用户指定将数据保存到 \\server\share\file.txt,程序就会认为:『哎呀,这怎么行,用户忘了写盘符了!让我在最前面加上当前驱动器的盘符,这样就好了』,路径就变成了 C:\\server\share\file.txt。另外也有程序会提示用户『请输入盘符』,而用户无法告诉程序『不不,这个路径里没有盘符,直接用这个路径就行了』。程序是一定要一个盘符的,而用户不给是不行的。

(Compare the Unix programs that “helpfully” rewrite //server/volume/file as /server/volume/file because they “know” that consecutive slashes collapse, unaware of the special exception for two leading slashes.)

(相较之下,UNIX 程序则会『帮忙』将 //server/volume/file 重写为 /server/volume/file,因为他们『知道』连续斜线应当进行合并,但却不知道两道斜线开头是个例外。)

In order to retain compatibility with programs that provided this sort of “unwanted help”, the designers of the networking support in MS-DOS decided to allow the strange syntax C:\\server\share\directory and treat it as if the drive letter simply weren’t there. Some (but not all) of this quirk of path parsing persists today.

为了保持与提供这种『毫无必要的帮助』的程序的兼容性,MS-DOS 网路支持功能的设计者们决定允许 C:\\server\share\directory 这种奇怪语法的存在,并将其视为开头的盘符