致谢
Chris Sells的致谢
写作这本书对我来说,犹如一次非常漫长的旅行。早在2010年9月,我就开始动笔,同月,我又开始在Visual Studio 2012团队工作,为JavaScript程序员进行端到端[4]的Windows 8故事分析[5]。我坐在大厅,面对着Chris Anderson、Josh Williams、Chris Tavares、Jeff Fisher、David Owens、Vijaye Raji、Andy Sterland、Anson Horton和Michael Booth(这些人是WinJS团队的主要成员,也是Visual Studio 2012团队中开发针对Windows 8应用程序的JavaScript的主力成员)。我记得我一直和Chris Anderson就WinJS应用程序的模型进行争论,和David Owens一起构建了首个全功能的Win8/JavaScript模板,和Michael Booth一起对它们进行了重写,向Josh Williams抱怨过在WinJS中缺乏便于开发者使用的数据源(Josh发明了绑定列表,从此让我闭上了嘴)。关于Web平台的知识,这些朋友在12个月里教会我的,比我过去15年来管理自己的网站所学到的东西还要多。
最初,为本书写下大纲的人是Chris Anderson。Windows部门把当时即将成为Windows 8的“假日构建”版本放到了一起,你知道,由于要么使用要么没有的休假政策,很多人会选择12月的一部分时间来休假,于是好多软件开发就中止了。但是,他们中很大一部分又是具备了A+类型的个性[6]的人,实际上,他们根本就无法做到长时间休息而不抓狂,所以这些人也经常会在休假的时候出于乐趣而写写程序。考虑到这一点,Windows 8的假日版在12月1日以前就已经准备好,作为给这些觉得无聊的雇员的圣诞节小礼物,而这些人恰恰就是我们想要获得反馈的人。但是如果要获得反馈,就不单单要给他们提供正确的二进制文件集,还要给他们提供可以上手的文档。于是,Anderson先生便写下了这些文档的第一份草稿,然后把它们交给我,说道:“你来把这些完成,可以吗?”
Chris所写的是一份20页的文档,其中有些章节叫做“入门指南”、“布局”、“动画”,等等,对于每一个主题都给出了一个简短的介绍。我看了一眼,暗自思索,“假如要写一本完整的书,这些内容也已经足够了。”所以,在两个月的时间里,Kraig Brockschmidt(他以《Inside OLE》一书而闻名)和我写下了第一本针对JavaScript程序员的Windows 8书籍。这本书的第一章最初是在2011年9月的时候发表在msdn.com的第一次BUILD会议上,名称是“使用JavaScript(Windows)创建你的第一个Windows应用商店应用程序。”[7]
我之所以告诉大家这些事情,是为了表达以下意思:我需要感谢John Montgomery,是他聘用了我,把我带入这“混乱”的局面之中;我要感谢WinJS和Visual Studio 2012团队,是他们接受了我,让我觉得自己是受欢迎的,还让我参与到Windows编程的全新平台的创造当中。这种情况估计十年才有一次,所以能参与其中是一种荣幸。这本书正是直接来源于这段经历,所以,你们可以把这些经历当做是你自己的——而我,只不过是将之誊抄下来的人。
当然,我只负责了自己的这部分,Brandon完成了剩余的部分,我非常感谢他所做的工作。除了他告诉我,当我1995年写第一本书的时候他还在上高中之外。除了这件事,我们都合作得很愉快,他有很多现实世界的、基于Web的JavaScript经验,这正是我所欠缺的,他在这些方面对我写的章节有很大影响。
不过,整本书可不单单是Brandon和我两个人写成的。我的老朋友和同事,COM领域无可争辩的王者——Don Box,他写了第12章。表面上看,那一章是讲如何使用C++来扩展JavaScript应用程序,但其实是在讲两种语言(另一种是我们熟知的Windows运行时,WinRT)之间的联系。WinRT是微软组件对象模型的下一版本,所以,还能找到比《Essential COM》(《COM本质论》)的作者更合适的人来写这一章吗?真希望这一章能够激发他有朝一日也写出一本《Essential WinRT》。感谢你,Don,不仅因为你写下了这一章,还要感谢你最初把我带入写作的世界,并向我展现了如何以正直诚实之心来从事这一工作。
我也要由衷地感谢Michael Weinhardt,他似乎就是我心中永远的合著者。Michael是这个项目的策划编辑,这意味着他要时不时地踢踢我们这三头“驴子”,确保我们所写的东西事实上是讲得通的。Michael也是我的老朋友了,在我的所有写作经历中,最为美妙的事情就是一直和Michael在一起工作,假如没有他的话,我会拒绝写作。
我也感谢几位审稿人:Chris Anderson、Josh Williams、Jonathan Antoine和Shawn Wildermuth。我要特别感谢Shawn帮我研究了第9章和第10章的内容。我的新工作让我非常忙碌,是他帮助我奠定了这两章的很多基础内容。Shawn,没有你我可能无法完成这些内容。
我还要感谢Joan Murray,我在Addison-Wesley的编辑。她忍受了我两本书的拖延,一本是已经夭折的《Programming Data》(老实说,我写了自己的那一半),而另一本就是大家现在看到的这本。Joan对我可谓是“软硬兼施”,其中还夹杂着一点“祖母的愧疚”。事实上,这本书的出版日期和Windows 8通用版本的发布日期之所以能如此接近,就是因为Joan一直在“鼓励”着我。
最后,我还要感谢我的家人。写这本书,花掉了本该陪伴他们的时间,他们却能够如此理解我。在写了14本书之后(尽管幸运的是第13本从未见天日),我打算将此书作为我的封笔之作。自Sells兄弟出生起,我就一直在写这本书,我之所以在示例程序中使用他们的名字,就是因为即便在写作的时候,我也是如此想念他们。当然,我还必须感谢我的女朋友,Michelle,她在我写作的时候给我烹饪了家常菜,我还要感谢她的儿子Marcus,因为我写的最后一个例子中借用了他的名字。这真是一段快乐的时光,Michelle,你一直以来对我都是这么支持,但是,我不愿让你再为我这么做了。哦,也许在我平稳退休的时候,我还会在海边的小木屋里构思出一本小说来。我也不会再同时从事两份工作了(写书以及我实际的工作),今后,就让新一代去记录那些出现的新技术吧。
好了,Anderson先生。我的任务全部完成了!
Brandon Satrom的致谢
我喜欢历史,因为历史就是一段背景故事,让我们可以更加关注故事所讲述的“现在”。这在小说和生活中都是同样适用的。不用惊讶,这个比喻同样适用你即将读到的这部技术作品。所以,我要先给你讲一段故事……
2011年春天,那时我还在微软工作,我就非常想写一本书,但不是什么书都行,我只是想写一本关于HTML5的书,特别是关于无处不在的Web平台的,想探讨把Web技术用到浏览器之外,用于桌面和设备中的可能性。我稍微了解到一些情况,那个时候Windows团队正同时针对消费者和开发者,对它的平台进行革新。到了2011年9月,当时,我作为BUILD大会的一名参会人员,听到了有关Windows 8、WinJS和WinRT的介绍。整整一周,我都待在阿纳海姆,我逐渐认识到,我要写的不仅仅是一本关于HTML5的书,我要写的是一本介绍如何为Windows 8构建HTML5应用程序的书。
实际上,Chris和我是在第一次BUILD会议的时候认识的,尽管那次见面,我还没有想过要写这本书。你们知道,Chris已经有一位合著者了,而我只不过在他那精彩的第一日主题演讲之后,走近他说了一声"hi",对他和团队表达了祝贺,并请求他对我自己写书进行指导和建议。他很爽快地答应了,在我计划单独写一本Windows 8书籍的时候,我们又聊过几次。(不管他现在怎么说,我仍然坚信Chris并不记得他在BUILD大会上见过我。毕竟那时候,我不过是个不出名的Web开发者,而他可是Chris"COM"Sells!)。
另一个有趣的巧合是,Chris和我在相距不到一个月的时间内,都离开微软到Telerik工作。在那里,我们分属公司的不同部门。那时,Chris正在寻找大家拿在手中这本书的合著者。很偶然的,我们又联系在一起,Chris接纳我作为他的合著者。后面的事情,就像他们说的,我就开始“献丑”了,差不多就是这样吧。
仔细研读书中的几百个页面,把其中所有提到"Metro"的地方都去掉,第五十次重新制作屏幕截图,第一百次重新编译示例代码,随着这本书完成了最终的校订,这段背景故事也已经落下了帷幕。现在回过头来看,我首先要感谢的就是我的合著者,Chris Sells。Chris把这样一个机会给予一个毫无名气的Web开发者,而这个开发者的写作经验只是为MSDN杂志写过几篇文章和一堆未完成的小说。对于Chris给我的这样一个机会,我由衷表示感谢,我同样要感谢他早早坦诚告知我写作的流程。你肯定是对的,Chris,就像你说的,写作根本不是件有趣的事儿。不过,不知何故,我总觉得这仍然是很值得去做的一件事。
让我感到自惭形秽的是,我的名字装饰在了一本书的封面上,更难以置信的是名字旁边不是别人,正是Don Box和Chris Sells的大名。这让我感到既惊讶又离奇。不知为何,我总是觉得我的名字应该只有现在的一半大,并且最好把它印成灰色透明的。我所说的这些,都是为了表达同一个意思:和这两位作者一起工作,并汲取他们多年的专业知识,是我莫大的荣幸。
同样还要感谢Michael Weinhardt——这本书的策划编辑。在我写作的过程,Michael和Chris都是非常出色的指导者,特别是帮助我从杂志篇幅的技术写作转变到书籍篇幅的技术写作上。我写第1章和第3章时,对我来说是一个早期的挑战,但Michael和Chris不断促使我进行加工和修改,直至整章内容逐渐成型。我们三个人之间的每一次互审,对我来说都是一种神奇的开发体验,我很感激Michael和Chris,他们不断地促使我把工作做到最出色,也感谢他们一直以来对我的鼓励。
我也要向付出辛劳工作的审稿人致以谢意,他们是:Chris Anderson、Josh Williams、Jonathan Antoine和Shawn Wildermuth。特别要感谢的是Jonathan,他对细节的关注、事实的验证以及为我指出Windows 8预发行版和下一个版本之间的变化,不止一次让我避免出糗。同样还要感谢我的编辑,Joan Murray,谢谢你一直容忍我,并且让我们一直走在正轨上,谢谢你,Joan!
最后,我还要感谢我的妻子Sarah,以及我的儿子Benjamin和Jack。Sarah,你是我的伴侣、我的挚友,也是我生命中的最爱。谢谢你认可我的才能,并鼓励我进行写作;谢谢你在我写书的时候给予我支持,当我身处高峰时,为我欢呼雀跃;在我心落低谷时,助我尽之所能。Benjamin和Jack,我的儿子们,我爱你们。我受上天如此的眷佑,成为了你们的父亲。谢谢你们给我所需的拥抱和爱吻。同样也要感谢你们的是,你们在我写作的时候对我的干扰和打断。
对于你们三人:谢谢你们在那段时间给予我的耐心和理解,写作就意味着对陪伴你们的时间的剥夺。这是我欠你们的,现在是时候来偿还了,这是我所愿意的。从现在开始吧!
Don Box的致谢
Don想要感谢Deon Brewis、Martin Gudgin、Herb Sutter、Zach Johnson和Logananth Seetharaman,感谢他们给出了深思熟虑的反馈,他还要鼓励Logan,别把5块钱花在一个地方了[8]。
[4]end-to-end,是指从客户需求端出发,到满足客户需求端去。——译者注
[5]一种以讲故事的形式探索用户需求的方式。——译者注
[6]有人认为这种类型的人工作非常敬业、渴望成功。——译者注
[7]http://msdn.microsoft.com/en-US/library/windows/apps/br211385(http://tinysells.com/282)。
[8]大概是Don了解的关于Logan的什么趣事。——译者注