天堂之门与棋王

>>>  名人論史——近當代作家的史學觀點  >>> 簡體     傳統

1997.07

最近有两件大新闻和我们资讯人有关,一悲一喜,相信你印象犹新。

一件发生在三月27日,号称「天堂之门」教派的 39 位成员,随海尔波普慧星之来去而集体自杀。该教派成员大多为拥有专业电脑技术的高级知识份子,曾经为当地众多公司提供资讯网路技术服务,协助设计网页,并拥有自己的网站。

另一件大事发生在五月11日,IBM 深蓝电脑在众人的惊愕(随後转为惊叹)声中,击败史上最强的西洋棋王柯斯巴鲁夫(kasparov)-- 此君自 1985 年之後未逢敌手,求一败而不可得。

●无害的邪教 良善的异端 ?!

媒体上对於「天堂之门」大加挞伐,斥之为邪教异端。美国总统称这起事件令人「心痛、作呕和震惊」。我没有机会看到柯林顿的声明原文,不过「作呕」一词实在不解。感觉上外国人的肠胃比较弱些,常见电影上那些老外看到点什麽血腥奇怪的场面,就要冲到洗手间去大吐特吐。

不管外国人的肠胃。就「天堂之门」事件,虽然我反对自杀,不过我倒颇佩服这些人的勇气。自古艰难唯一死!为自己的信仰而死,如果完全出於自愿,没有受迫,旁人有什麽好置喙「作呕」的呢?为信仰而死,2000 年前叫神圣殉教,2000 年後的今天叫邪恶异端?这些平时自食其力,「希望以喜悦的心情快乐地离开地球」的人们,也许在众人眼里认为思想偏差,但比起杀人掠货、掳人勒赎的坏蛋而言,或比起只会为社会制造问题却不知为自己行为负责的飚车族、安公子而言,即使有所批评,哎,我也只能说他们是无害的邪教,良善的异端。他们所造成的破碎家庭虽然也成为社会的负担,但毕竟仍停留在相当「自我」的范围,干卿底事?

从这里,我又想到前不久的宋七力事件、妙天事件、太极门事件。我也曾经和大多数人一样,边看媒体的报导边摇头,大叹不可思议,并以悲怜的口吻谈论这些「愚夫愚妇」。哦哦,事情有没有另一面呢?媒体的渲染力十分惊人,可不要在媒体的激情批判面前迷失了自我的思考喔。我的邻居,工研院研究员,叁与太极门好多年,我知道他们夫妇极大的生活快乐来自於师兄姊们喝茶聊天论古话今。显然这个团体有相当和谐的一面,和「养小鬼」之说实难联想。我的一位朋友罹患严重肝病,辞掉工作在家休养,後来我辗转知道他在妙天处获得很大的恢复,成为他们非常热心的义工。这些「事情的另一面」不会在媒体上出现,因为打落水狗是媒体喜欢做的,是读者喜欢看的。

彼等若有触犯法律的嫌疑(像是诈欺骗财等等),当然应该调查。但是无冕王笔下权力无限膨胀,令人思之悚然。我到底想说什麽呢?我想说,人所不知而自以为知的事,不知凡几;不要过度相信媒体,丧失了自我思考。把科学研究的精神,分一些到生活上。事事馀留一些另面思考空间。

即连面对这篇文章,也是!



●03/11/1997 04:03 P.M.

一九九七年三月十一日下午四点零三分,或许是一个值得书写在历史上的时刻。这一刻 IBM 深蓝电脑以二胜三和一负的成绩,在西洋棋六局赛事中蠃了。对手是独孤求败,打遍天下无敌手的棋王柯斯巴鲁夫(前苏联亚塞拜然人)。

去年二月,同样的两个人(噢不,一部机器和一个人)也举行了相同的赛事,结果深蓝以一胜二和三负输了。今年下到第二局,战况一胜一负时,我对美静说,今年和去年大不相同,去年第一局深蓝胜後,长黑到底;今年先败後胜,意义重大。

深蓝的胜利,是五方面的成功:

★硬体方面,它是一部由 32 颗中央处理器(CPU)组成的 IBMRS/6000SP 电脑,每颗处理器附有 16 个特殊设计的下棋加速器。深蓝每秒钟可扫描大约两亿个棋步,记忆体内则存有百年来世界顶尖棋手的棋谱,十亿套。

★软体方面,由华裔工程师许峰雄为首的深蓝小组,负责驾驭上述巨大的能量。众所周知,「平行处理」向来是棘手问题,如何驾驭 32 匹疾奔马,使它们彼此分工并且合作,需要相当的技术。

★棋艺方面,延览美国西洋棋高手班杰明为专职顾问,为深蓝贯注棋力,加强整体战略及计算每个落点的权值大小。否则,每秒两亿个棋步形同废物。

★计划负责人的主持功力攸关计划的成功与否,我相信深蓝计划负责人谭崇仁成功地扮演了一位舵手。

★恐怕最为人忽略的成功因素,就是 IBM 对此计划的长期支持。深蓝计划从 1989 开始,至今八年,若再加上其前身「深思」,已经超过十年。十年里这个只钻研下棋技术的小组对公司是没有任何直接效益的。但是 IBM 看到间接效益。不说打败棋王的新闻价值带来(据说)一亿美元的善意和免费宣传,平行处理的经验还可以落实到快递运送、航空、医疗保险、金融投资等各行各业。

有趣的是,赛後媒体纷纷专题讨论所谓机器智慧的问题。大多数的论点是:深蓝只不过是以穷举法、快速运算、大量而永不遗忘的记忆,很「暴力」地击败人类。喔,坐在一端的是有智慧的人类最佳头脑,躺在另一端的是没有智慧的冰冷机器?!没智慧的却蠃了有智慧的?下下人有上上智,上上人有没意智?

更离谱的是棋王自己在赛後记者会上说:『我要声明,我的失败与科技无关,因为电脑的表现完全没有机械的惯性,我不相信有这样优越的电脑』。那麽他是输给谁?也许失败是如此难得,柯斯巴鲁夫不知如何优雅面对。

据说柯斯巴鲁夫举止高傲,不可一世。或许这一战对他是绝佳转捩点。学会谦卑,才显伟大。影歌红星保镳们的说法是:「真正大牌的,都很好相处。只有那初红乍热的,比较麻烦。」

我们应该承认,深蓝在下棋方面,是有智慧的。但是它的确没有其他方面的智慧。它没有办法完善翻译外文,没有办法与一般小孩子流利对话。它没有情绪,没有 EQ。它从不动怒、从不疲倦、从不高兴、从不失望、从不沮丧。没有情绪算不算是最高 EQ?柯斯巴鲁夫在最後关键一局第19手弃子投降,是人类最脆弱的表现。虽然事後专家模拟未完的棋局继续和深蓝对奕,发现果然蠃不了,并「由此可见棋王判断棋路之准确」,但果断而输棋,何不若定静求生机?早降而蠃得赞美,毫无意义。棋王如果与人类交手,肯定不会那麽早降,一定设圈套想绝招,杀手剪()回马枪一一伺候,等待对方的失手错着。早降不也显示了棋王对其「绝对不会犯错的对手」的敬畏?或者说棋王被深蓝的酷震撼到了?

注:「剪」是个错字,其实应该是「金」字边加一个「间」,三声。这个字我无法 keyin 出来,抱歉。

我现在最感兴趣的是,深蓝与棋王的历史之战,所有的棋谱公布在哪里。另外,三句不离本行,我也要抱怨一下,民生报的棋王是卡斯波洛夫,联合报的棋王是柯斯巴鲁夫,同一报系的两份报都这样了,可见译名统一的问题有多严重。

●进入主题

这个月我介绍两个主题,一个是 Multithreading,一个是 Registry。两者有什麽关联吗?风马牛不相及也,只是我最近的阅读心得。

Multithreading 和平行处理有关。刚看完深蓝的一番报导,我想你会对平行处理有兴趣。过去 PC 上的 DOS 作业系统没有支援多工,Windows 3.x 虽有多工却是假多工(合作型多工)。OS/2 和 Windows 95、Windows NT 才有所谓的强制性多工,也因此才有所谓的多绪程式出现。不过别以为执行绪(thread)是新东西,它早早就在大型机器的作业系统中存在了。

关於执行绪,有一些常被人误解的观念,例如「使用执行绪一定有益无害」,或是「执行绪一定能够加快程式的进行」。我即将介绍的这本书里,有一些这一类的 FAQ(常见问答集)。

另一个主题 Registry,有人译为「登录」。这两个中文字乍看之下容易有「动词耶?名词耶?」的困扰。我比较喜欢使用「登录资料库」一词,绝无疑虑。要不乾脆不译也可。Registry 是作业系统的国库,存放着重要的系统资讯、软硬体设定资讯、应用程式资讯。使用者的许多动作,都会造成 Registry 的改变。例如你在 Win95 桌面上按右键,选择随後出现的【内容/设定值】以改变萤幕的解析度,其实就是改变了 Registry 的某项设定。

做为一个超级使用者(power user),或者一个系统管理者(administrator),你应该要知道 Registry 是什麽东西,有什麽内容,以及如何去维护它。做为一个程式员,你还应该知道有什麽程式方法可以让你将资料写入 Registry,因为程式的安装资讯、反安装资讯、公司名称、产品名称、版本号码、资料档型态,在在都需要登录在 Registry 之中。如果你写的是 ActiveX 相关软体,或是所谓的 shell extension 软体,更是离不开 Registry。

 

■Multithreading Applications in Win32

作者:Jim Beveridge & Robert Wiener
出版公司:Addison Wesley
出版日期:1996 年 12 月
页数:17 章,368 页
售价:US$ 39.95。含光碟片一。

PartI : Threads in Action
1. Why You Need MultiThreading
2. Getting a Feel for Threads
3. Hurry Up and Wait
4. Synchronization
5. Keeping Your Threads on a Leash
6. Overlapped I/O, or Juggling Behind Your Back

PartII : MultiThreading Tools and Tricks
7. Data Consistency
8. Using the C Run-time Library
9. Using C++
10. Threads in MFC
11. GDI/Window Management
12. Debugging
13. Interprocess Communication
14. Building DLLs

PartIII : MultiThreading in Real World Applications
15. Planning an Application
16. ISAPI
17. OLE, ActiveX, and COM

Appendix A: The MTVERIFY Macro

multithreading-in-win32.jpg (14329 bytes)



让我先解释以下几个和本书主题有关的名词(叁考自牛津电脑字典):

multiprocessor system:允许一个以上的处理器(CPU)同时作用的系统。
multiprogramming system:允许一个以上的程式同时作用的系统。
multitasking:同时执行一件以上的工作,谓之。
multithreading:行程切割出来的多个执行单元,每一个单元都是 CPU 的排程对象。
parallel processing:超过一个以上的行程(process),在同一时刻作用,谓之。严格来讲只有在多处理器系统中才能使用这个名词,不过很少有人遵循严谨的定义。
concurrent programming:和 parallel processing 同义。

"Thread",有人译为线,有人译为绪。绪就是线,若以文雅而言,绪比线更胜一筹,我很佩服创造这个译名的人。如果单独出现 "thread",我喜欢使用「执行绪」这个字眼。

所谓绪,就是程式分出来的执行单元。在多工环境中,CPU 的时间分配是以「绪」为对象,行程(process)则只不过是一堆拥有权(ownership)的集合而已。行程可以拥有许多个执行绪。Win32 程式只要以 API 函式 CreateThread() 即可获得一个执行绪。CreateThread() 的第三个叁数需要被指定一个函式,称为执行绪函式。你可以把执行绪本体想像就是那个函式。如果执行绪函式结束,该执行绪也就结束了。

学习执行绪的技术,可以从程式设计和作业系统两个角度下手。你曾经因为学习枯躁的作业系统理论而感到烦燥吗?这本书不会给你这种感觉。作者以第一篇奠定你对执行绪的基础,使用大量的 Win32 console 程式设计了一些很短很简单但是很有教育性的小程式,用来说明执行绪的产生、结束、对效率的影响、各种同步问题...等等等。再以第二篇让你熟悉撰写应用程式时会遭遇到的实际问题,包括使用多绪版的 runtime 函式库、以 C++ 包装执行绪动作、在 MFC 程式中如何产生执行绪...等等等。第三篇以实务经验告诉大家对多绪程式设计的规划、判断,并提供 ISAPI 和 ActiveX 两个实际范例。

这本书有两个体贴读者的地方。第一是它提供一份常见问答集(FAQ),内容分散各处,但目录列於书前。第二是它将书中所介绍的各个与执行绪、多工、同步化控制有关的 Win32 API 的出现页数整理成一个目录,放在封面里页,方便查询。

关於执行绪,MSDN 里头有一堆文章,你只要给关键字 "thread",整片光碟找一遍就可以获得。下面是我整理出来的其他相关书籍,供你叁考:

Operating System Concept 4th edition (A. Silberschatz J. Peterson P.Galvin / Addison Wesley)Chap4: Processes Chap5: CPU Scheduling Chap5: Processes Synchronization Chap6: DeadLocks

Win32 System Services - The Heart of Windows NT (Marshall Brain / Prentice Hall)Chap5: Processes and Threads Chap6: Synchronization

Windows 95 System Programming SECRETS(Matt Pietrek / IDG Books)Chap3: "Modules, Processes, and Threads"

Advanced Windows 3rd edition(Jeffrey Richter / Microsoft Press)Chap2: "Kernel Objects" Chap3: "Processes" Chap4: "Threads" Chap10: "Thread Synchronization"

Programming Windows 95(Charles Petzold / Microsoft Press)Chap14: "Multitasking and multithreading"

Programming Windows 95 with MFC(Jeff Prosise / Microsoft Press)Chap14: "Threads and Thread Synchronization"

Inside Visual C++ 4.0(David Kraglinski / Microsoft Press)Chap11: "Windows Message Processing and Multithreaded Programming"

The Revolutionary Guide to MFC 4 programming with Visual C++ (Mike Blaszczak / WROX Press)Chap11: "Writing Multithreaded Applications with MFC"

Programming Windows 95 Unleashed(SAMS Publishing)Chap3: Multitasking, Processes, and Threads

Programming Windows NT 4 Unleashed(SAMS Publishing)Chap22: Threads

「深入浅出 MFC」第2版(侯俊杰/松岗)chap14: "MFC 多绪程式设计"

 

■Inside the Windows 95 Registry

作者:Ron Petrusha
出版公司:O'Reilly
出版日期:1996 年八月
页数:11 章,575 页
售价:US$ 32.95。含 3-1/2" 磁片一。

1. The Registry, or, What Was So Bad About .INI Files?
2. Using the Registry Editor
3. Backing Up and Restoring the Registry
4. The Win32 Registry API
5. Win95 Registry Access from WWin16, DOS, and VxDs
6. The Registry and Visual Basic
7. The Desaware Registry Control
8. What Goes in the Registry : System Settings
9. What Goes in the Registry : Application and User Settings
10. Spying on thee Registry
11. Migrating from .INI Files to the Registry
Appendix A: Where Am I Running?
Appendix B: The Insidee the Windows 95 Registry Diskette


inside-win95-registry.jpg (14287 bytes)


硬体毁掉之前(啊哈,如果事先知道的话),你会备份什麽东西?对,所有的个人资料。应用软体不备份也罢,重新安装就好啦。系统呢?系统当然也是重新安装就好了。

但是,有一样系统资料你不能忘记备份,那就是记录着整个系统环境设定、应用程式设定、使用者喜好设定的资料库:Registry。你不想重新安装系统後又辛苦地一一恢复桌面的布置吧?你也不想放弃个人的一些设定对不对?好,别忘了备份 Registry。

Registry 是什麽东西?Windows 3.x 有 system.ini 和 win.ini 两个档案,用来记录系统环境设定、应用程式设定、使用者喜好设定。Registry 的内容可以说就是 system.ini 和 win.ini 的总和,再加上 OLE(ActiveX)环境设定、各式各样的路径设定...包罗万象。事实上 Registry 可以储存任何东西。是的,任何东西,甚至包括程式的资料。

O'Reilly 的这本书是我今天介绍的四本相关书籍中最硬的一本 -- 我指的是它的技术深度。本书第一章介绍 Registry 到底是什麽东西。第二章讲 RegEdit(一个 Registry 编辑工具)的操作,包括执行画面、一般操作、内容修改、如何汇出/汇入 .REG 档、如何增加搜寻效率等等。这一章最後有一个 VB 程式,用以模拟 RegEdit。有趣的是本章使用了 APISPY32 来刺探 RegEdit 启动时的行为,因而得知 RegEdit 所呼叫的 Registry APIs,做为以 VB 开发模拟程式的线索。各位还记得 APISPY32 吧,Matt Pietrek 的得意作品,我曾在今年三月的无责任书评中介绍过,本刊四月份的一篇「技术总动员:Spy 软体和 DBWIN」也有观念层面上的讨论。这个 APISPY32 也放在本书的书附磁片中。

Registry 是如此重要,将它周期性地备份也就成为必要的日常功课。然而这一点常为坐在电脑前面的人所忽略。第三章介绍 Registry 备份工具(都是 Windows 95 原就附有的)并分析其利弊。作者并发展出一套备份哲学。

第四章足足有 85 页,目的是要经由彻底地验证与详尽的说明,让 Registry APIs 容易使用。这些 APIs 在 Win31 时代存在於 SHELL.DLL 中,在 Win95 时代则是存在於 ADVAPI32.DLL 中。

第五章讲解如何从 Win16 程式和 DOS 程式中存取 Registry。有这个必要吗?是的,毕竟 Win95 底下也可以跑这两种程式。但新开发的程式应该不会往这条路走了,所以视需求你可以跳过本章。但本章另有一个好处,你可以从此了解 registry APIs 如何在 Win95 中实作出来,因为 Win16 程式和 DOS 程式发出的 registry API 最终是由同一个 VMM service 服务。本章提供一个 REGDUMP 工具软体,是个 console 程式,可以把 Registry 全部倾印出来(通常不会少於 15000 行。吓人呐)。

顺带一提,本书谈到低阶题目如 VxD、VMM 时,常常叁考 Andrew Schulman 的"Unauthorized Windows 95" 和 Matt Pietrek 的"Windows 95 System Programming SECRETS" 两本书。

第六章教我们如何以 Visual Basic 存取 Registry。VB 程式员常常对 Windows API 认识不多,对系统也是,因此这一章对他们可能有些困难需要克服。这一章有将近 80 页的长度。

第七章给我们一个 OCX(OLE Custom Controls),此 OCX 在我们自己的 VB 程式和 ADVAPI32.DLL 之间提供帮助,使我们对Registry 的操作更简单,不必呼叫 Registry API。这一章教你如何安装这个 "Desaware" OCX 以及如何使用它(也就是介绍其 properties 和 methods)。"Desaware" OCX 当然也可以使用於 C/C++ 程式。

终於渡过了险山恶水,像我这样原本只是想知道 Registry 内含什麽宝贝的人,终於可以不必理会深涩的技术,好好地看看 Registry 的内容了。第八、九两章介绍 Registry 的三大类资讯:系统设定、应用程式设定、使用者喜好设定。对於软体开发者而言,你会因此知道你的程式应该安装到使用者的什麽地方,你的 DLL 又应该安装到什麽地方...。两章共 126 页。

第十章给我们两个 spy 软体,一个是 RegSpy95,一个是 ApiSpy32。前者是 Alex Schmidt 特别为本书设计的一个工具,包含一个静态 VxD 和一个 Win32 可执行档,用以侦测系统中的其他程式对 Registry 的存取动作。後者是 Matt Pietrek 开发的工具,包含一个 DLL 和一个 Win32 可执行档,用以侦测系统中某个程式的 API 呼叫动作。这一章并不是告诉你这两个软体的设计哲学,而是教你如何善用它们。其中 RegSpy95 的 VxD(FOOTPRNT.386)原始码没有放在书附磁片中。哎,为德不卒!

RegSpy95 记录的资料,洋洋洒洒。它的预设输出装置是 console 萤幕,将输出重导向到档案再慢慢欣赏,是一个好点子。不过那麽庞大的内容,没有筛检的话,无人消受得起。幸运的是 RegSpy95 有非常大的弹性允许你规范它的刺探对象以及输出格式。也许你要问何必有此?RegEdit 不也就够了吗?完全不一样!RegEdit 是让你看 Registry 的现况,RegSpy95 则是让你看到应用程式如何操弄 Registry。

RegSpy95 的设计以及 FootPrnt VxD 的使用在章节中有相当程度的描述。至於 ApiSpy32 就完全只提其使用,如果要知道这个鬼斧神工的东西怎麽做出来的,或是想获得其原始码,你得买看原设计人 Matt Pietrek 的书。

第11章很短,作者给我们一个 Ini2Reg 工具软体,可以把一个 .ini 档转化为 .reg 档,然後你就可以利用 RegEdit 把 .reg 档合并到 Registry 中。
本书提供的所有工具或范例程式都在附录B说明。让我再将几个很棒的工具做个整理:

★ApiSpy32 - 刺探你所指定的某个行程的 API 呼叫动作,连同函式名称、执行时期叁数、回返值、记录到一个输出档中。刺探的 API 名单可弹性调整。

★RegSpy95 - 一个 console 程式,刺探所有行程的 Registry 存取动作。输出的方向以及格式可弹性调整。

★RegMon - 一个 GUI 程式,刺探所有程式的 Registry 存取动作。这个程式曾在 Windows Developer's Journal 的 1996.10 那一期发表过("Examing the Windows 95 Registry")。请注意它与RegSpy95 的差别:RegMon 的刺探引擎是个动态 VxD,所以它没有办法侦测 RegMon 执行前的 Registry 活动。RegSpy95 就不同,它的刺探引擎是个静态 VxD,而且有自己的记忆体缓冲区,可以从系统一启动就开始侦测 Registry 的活动。

★RegDump - 这个工具有三种版本:Win32 console 程式、DOS 程式、Win16 stdio 程式(利用微软的 QuickWin 或宝蓝的 EasyWin,或是 Ansrew Schulman 发展的 WINIO 函式库)。此工具可以输出 Registry 内容,输出格式不同於 .reg 格式,较易阅读。

★Ini2Reg - 一个 console 程式,把 .ini 档转换为 .reg 档。

★RegFSD - 一个 VxD,你可以把它想像成一个虚拟磁碟。利用「控制台」的「新增硬体」精灵安装它之後,整个 Registry 在「档案总管 Explorer」中就变成了 Win95 档案系统中的一个逻辑磁碟,每一个 key 和 subkey 变成了目录和子目录,每一个 value 则成为档案。value 所带的 data 则是档案内容。於是你可以像对待标准资料夹(folder)一样地对待 Registry,也可以使用标准的档案操作函式如 SetCurrentDirectory、ReadFile、WriteFile、FindFirstFile、FindNextFile、FileClose 取代 registry API 函式如 RegOpenKey、RegQueryValue、RegSetValue、RegEnumKey、RegEnumValue。RegFSD 带给我们一些全新观念,作者是这麽说的:

RegFSD is intended to illustrate a concept - namely, that any computer system object can be located within the shell's namespace, and can be handled using a familiar metaphor and a set of API functions appropriate to that metaphor.

附带一提,这本书的纸张有浓浓的化学味道,我的鼻子不太强壮,为此买了个口罩。书中文字密密麻麻。编排也不太理想,颇伤眼力。阅读本书应伴服几颗枸杞明目丸。话说回来,本书真的是「俗搁大碗」,这也是 O'Reilly 出版社向来的风格。

 

■Inside the Registry for Microsoft Windows 95

作者:Gunter Born
出版公司:Microsoft Press
出版日期:1997 年初
页数:7章,346 页
售价:US$ 24.99。无磁片

1. Basics
2. The Registry Editor and Other Registry Tools
3. Registering Filename Extensions
4. Customizing the Desktop, Start Menu, and Control Panel Properties
5. Customizing the Explorer Menu and Shell Icon Settings
6. Miscellaneous Registry Settings
7. Programming Issues
Appendix A: Icons Contained in SHELL32.DLL
Appendix B: Values for the International Key
Appendix C: The Registry in Windows NT 4.0 Workstation
Appendix D: Further Reading

inside-registry-for-win95.jpg (17033 bytes)


相对於刚刚介绍过的上一本技术导向的书,此书就明显偏向给使用者和管理者阅读。章节安排得还不错,对於没有技术背景的人不会有什麽压力。如果你不会写程式,除了第7章之外,全都适合。阅读此书,你要把它想像是一本应用软体的使用手册,而 RegEdit 就是那个应用软体。你要实验,才有体验。

 

■Windows NT Registry Guide

作者:Weiying Chen
出版公司:Addison Wesley
出版日期:1997 年四月
页数: 7 章,264 页
售价:US$ 34.95。含光碟片一。

1. Registry Structure
2. The Registry Editor
3. Registry APIs
4. Using the Registry APIs in Visual Basic Applications
5. C++ Examples of the Registry API
6. ActiveX Technology Support within the Registry
7. NT Shell Extension Programming


很难得看到这麽轻薄短小的电脑书籍了,让人心情为之一宽。

和所有的 Registry 书籍一样,Registry 架构、RegEdit 操作手法、Registry APIs 介绍在本书样样不缺。此外各位可能在第七章看到陌生的东西。第七章介绍 namespace、virtual folder、shell extension。不知道你有没有和我一样的经验,初初接触 Win95 时,我听人家说资料夹(folder)就是档案系统中的目录(directory),可是你知道的,有些资料夹没有对应的磁碟目录(例如「我的电脑」和「网路芳邻」)。原来是 Win95 和 NT 4.0 把自 MS-DOS 2.0 以来就形成的档案目录阶层观念更扩充,称为 namespace。资料夹就是一个 namespace -- 一个 COM 物件,可以内含所谓的「档案物件」。这里的档案物件是广义的,举凡储存设备、网路资源、印表机等等都能够放入资料夹之内。当物件被放入其中,就和该资料夹产生关系。当物件被搬离资料夹,关系就告中断。资料夹和其内的物件有某种特约关系,所以在印表机资料夹中不能够放入一般档案。

像「我的电脑」这种不对应至某个磁碟次目录的资料夹,又被称为虚拟资料夹(virtual folder)。

第7章虽然对於七种 Shell Extension 都做了介绍,却几乎都只是文字描述,份量也不多,具体的程式码更少。Shell Extension 是一种崭新的程式形态,也是一种 COM 物件,以 DLL 的形式呈现,可以扩充Windows 的 shell 的能力。使用者在 shell(不是指 "explorer" 档案总管)上的动作如双击、拖放、按右键、捷径、图示内容...,都是 shell extension 可以着力的项目。我对 shell extension 有高度兴趣,因为它可以实现更棒更方便更物件导向化的使用者介面。

 

■Windows NT Registry TroubleShooting

作者:Rob Tidrow
出版公司:New Riders
出版日期:1996 年末
页数:8 章,400 页
售价:US$ 39.99。含光碟片一。

1. Introducing the Windows NT Registry
2. Understanding the Windows NT Registry Structure
3. Understanding the Role of Initialization Files in the Windows NT Registry
4. Using the Windows NT Registry Editor
5. Examining Network Settings in the Windows NT Registry
6. Using System Policy Editor to Modify Registry Data
7. Administering Remote Registries from Windows NT
8. Troubleshooting Specific Problems Using the Windows NT Registry

Appendix A: Windows NT Registry Values
Appendix B: About the Software on the CD-ROM
Appendix C: Finding More Information
Appendix D: Troubleshooting Specific Windows 95 Problems in the Registry

winnt-registry.jpg (20077 bytes)


奇怪,英文书的字怎麽愈来愈小?真伤眼力。阅读本书,请伴服枸杞明目丸,双份!

这本书没有讲如何在程式中存取 Registry,全部都是使用者(应该说是系统管理者)层面的知识。乍见之下 WinNT 的 Registry 和 Win95 的极类似,其实也有不少差异。

NT Server 常被用来做为网路作业系统,所以第5、6、7章相当强调了Registry 在网路这一部份的性质。光碟片附有一些工具软体,都是共享软体或免费软体。这些工具都是对 Registry 做一些整理、搜寻的动作。
 

■杂志文章与其他

无独有偶,PC Magazine May/06/1997 的【First Look】专栏也介绍了五本 Registry 书籍。彷佛这玩意儿一下子炙手可热。其中除了 O'Reilly 的那一本与我的名单重复之外,另四本如下,各有极简短的说明。我只列出书名、出版社名称和价格:

1. Windows 95 Registry & Customization Handbook(Que,US$ 50)
2. The Windows 95 Registry:A Survival Guide for Users(MIS Press,US$ 25)
3. Windows 95 Registry Troubleshooting(New Riders,US$ 40)
4. Using the Windows 95 Registry(QUE,US$ 60)


除了上述书籍,PC Magazine 上也有四篇与 Registry 有关的文章:

★The Windows 95 Registry Part1 ... Barry Simon 1995/10/24
(讨论 Registry 架构)

★The Windows 95 Registry Part2 ... Barry Simon 1995/11/07
(讨论 HKEY_CLASSES_ROOT)

★The Windows 95 Registry Part3 ... Barry Simon 1996/01/09
(利用 Registry 修改系统图示)

★Explorering the Windows 95 Registry ... Jeff Prosise 1995/11/21
(Registry 泛论)


●读者来函一

无数次想写信给你。看到坏书想,看到好书也想。近几年,对於坏的译本,已经难以忍受了。好多不错的原着都给译者糟蹋了,不是吗?
好的原着如果遇人不淑,真是令人吐血。其实多译好书是台湾目前
迫切需要的,但是够格的不译,不够格的乱译。


看到坏书和看到好书,请首先想到写回函卡给出版社(愿意 cc 一份给我自是吾所欢迎)。我非常同意你说「多译好书是台湾目前迫切所需」,是的,本土的软体应用书籍不虞匮乏,品质也愈来愈好,但是本土的技术书籍严重贫血,需要洋将补强,并且不必有人数限制。

我曾经严厉批评少数出版人对於翻译的不正确态度。由於有资方的不正确态度,才会有劳方的不正确行为。对於那些荒谬行为和荒谬产品我已经说过很多。好译作真的贡献匪浅,让人如沐春风,可惜我们很少能够陶醉在春风里。

交大外文系曾经想开科技翻译的课程,我不知道开成了没有。多培养人才确是当务之急。不过科技翻译是该以科技人员为主,外语人员为辅?还是该以外语人员为主,科技人员为辅?我想前者比较容易成功。

BBS 上的电脑书讯版常有人反应,看过一些烂书可是骂不出所以然来。我希望我能够挑几本有代表性的中译烂书,为大家示范一下骂法。这些代表性包括:

1.「挂羊头卖狗肉」:迳行将原书改名,企图误导购买行为。
2.「爱德华剪刀手」:迳行删除原书内容而丝毫不加说明。
3.「小孩子玩大车」:外行人译内行书,闹出一大堆笑话。
4.「和稀泥打烂仗」:错字、别字、掉页、错页...一大坨一大坨。

我知道大家喜欢看这些东西,因为鸟气实在受够了。可是这麽一泼洒就又把我推到火坑里了。唔,我还在考虑。
 

●读者来函二

侯先生,您好!
无责任书评是我在很久以前就听过的,之前也看过几篇,
一直到几天前才在书局看到集结成书,当下就刷了。虽然比较没有什麽时效性,但是我比较喜欢这种可以一次把它K完的感觉。
我汇集了相当的能量,终於写了这封信。
说实在的,我翻阅时边看边笑、边看边感动、有时也有一种怵目惊心的感觉!有时也合上书本,来杯咖啡、看着大海(我家是不用望远镜的,因为它就在我的脚下),陷入一种沉思之中。尤其是看到【对中译本的批评】,每每说到我的心坎 ,好爽啊!像这一本 "xxxxxxxxx",
我就觉得真的是!@#$%^&*(!@#$%^&,
校稿的人在干什麽吃的(我想应该如您所云,根本就无人校稿。)
译者也是 very 烂,我一直想骂他,就是找不到他的 email 位址。
整本书我不知道画了多少错字以及别字。若有机会的话,帮我骂骂他。


为免徒生困扰,我把你举发的那本书书名拿掉了,抱歉。

我说,何不动手写书籍回函卡给出版社?通常那是免贴邮票的。出版社看了回函卡怵目惊心,对於那种作者译者一定列入拒绝往来户名单。当然,看到好书也别忘了寄回函卡写几句赞美的话,那对用心的出版社和用心的作者译者是莫大的鼓舞。

我想对您说的话很简单,谢谢您花下的时间。希望您对书的要求一定一定要继续下去,(因为我也会监督的哦,哈哈哈┅┅),如果也能影响您周遭的作者,那就更美了。

我们对当今电脑书籍的好和坏,一定要不吝啬地明确表达出来。这就能形成一股监督力量。以前没有管道,现在有了,很多 BBS 站都有电脑书讯版,彼此也有转信功能。把您的看法写上去应该有效果。我知道许多家出版社的主管都已经注意到这个电脑书讯版,他们也很有诚心要把东西做好。他们需要读者诚恳的回应。当然他们也需要鼓励,看到好书请别吝啬说些好话。这些好话会产生巨大而不可思议的能量。我没有骗你。

读者影响出版社,出版社影响作者,看来是条颇为可行的路。出版社的态度举足轻重,如果他们对书籍的态度正确,不够水准的作者译者根本就没有生存空间。打零工的啦、捞一票的啦、混日子的啦... 各色人等就不会出现在需要高度专业的电脑书籍写作领域里头了。

我所接触的出版社负责人其实都相当诚恳地希望出版好书,但碍於本身的人力物力没有办法筛选作者以及书籍内容。让我们助彼一臂之力,同时也为我们自己往後的阅读利益尽点心。

作者这边嘛,点名评论当然有绝对的威力。不过如果你评论的是那种欠缺反省能力的执笔人,或者拿笔名当保护伞的人,可能会「是非红尘不到彼」。作家有笔名本是常见的事(侯捷就是笔名),不过国内电脑文坛认真经营笔名的人不多,拿笔名当保护伞的人倒不少。

关於出版社「没有能力筛选作者以及书籍内容」,这一点我认为有非常值得改善的空间,否则「出版社=印刷+铺货」,这出版事业做得就没有意思。什麽?你说出版社还会帮忙排版?很多作者早就自己排版罗。

我内心的千言万语,我内心的感慨,我内心的莫名感动,我都将它化成一句【谢谢您 谢谢您 谢谢您 谢谢您】,不晓得会不会太简单了,但是我是由衷的。不知您是否明了!!!

明了。同时谢谢您带来的激励。直言罪人,所以我需要这种鼓舞。

最近我与一家出版社的高阶主管晤面论书。他赠送我一本自家生产的有关於 Photoshop 的书籍。很棒的质感,不论封面、编排、印刷、纸张。我询问市场反应如何,他笑呵呵地说出乎意料的好。是了,好东西是不会寂寞的。市场的选择性以及对高品质的接受度,给了这位主管很大的信心。我相信,高品质是一条不可能回头的路。你看,我们慢慢有了彩色书,有了文图并茂并且极尽心思编排的软体应用书籍,有了全网片输出的书籍。或快或慢,不管着作或译作,好书会成为主流,烂书会成为另类,我有信心。而我们的勇於批评与适时鼓励,会加快出版业者的进化脚步。

我已看到软体应用性书籍进入高质感层次,其数目差不多可以从质变到达量变了。至於技术性书籍,还有相当的路要走。


 carton-manybooks.jpg (31443 bytes)


侯捷 2010-09-10 08:31:04

[新一篇] 選義按部,考辭就班

[舊一篇] David Kruglinski 死亡紀事
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表