原文地址:http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html

看来(根据一位专家的说法是这样,不过还是感觉有点言不由衷),JavaScript最后真的流行起来了

[此处是youtub.com中一段视频,可惜被"墙"了]

对我这个从小就呆头呆脑的人来说,这段视频像是咒语又像是玩笑。(这要看你是否跟我站在了相同的立场上:绿壳鸡蛋不就流行过吗?)

布兰登·艾奇深得他那尖脑壳老板的信任,Navigator浏览器应该有自己的脚本语言,只有开发一门新语言才可行,必须在短时间内设计和实现这门语言,现有的任何语言都不能充当该角色。

我搞不清楚为什么道格(Doug)要编故事。他并不在网景公司。他亲耳听到过我回忆JavaScript诞生的经过,我在Ajax大会的发言中也讲过了。难道是想混淆视听,想在Web开发人员中掀起一股提前讨论MicroHoo C#语言的风潮?

谁知道呢,要计较这些就没完了。不过,鉴于本周是我参与创立的mozilla.org 10周年,我打算讲一点历史。

正如我多次重申过的,而且Netscape的其他人也可以证明,我是因为Netscape要在浏览器中“实现Scheme”才被招聘进公司的。当时,至少负责客户端技术的汤姆·帕坎(Tom Paguin)迈克尔·托伊(Michael Toy)瑞克·谢尔(Rick Schell),以及一个叫马克·安德森(Marc Andreessen)的家伙认为Netscape应该在HTML中嵌入一种语言,一种源程序式的编程语言。而我这个新人要去说服“尖脑壳”的老板几乎是不可能的——实际上更多的则是他们在向我解释问题。

到底是不是要基于Scheme并没有定论,但Scheme确实是吸引我加入Netscape的一个原因。在此之前,我在SGI公司期间,尼克·汤普森(Nick Thompson)引导我学习了SICP(Structure and Interpretation of Computer Programs《计算机程序的构造和解释》)。

当时真正需要的是一种有说服力的概念验证,也就是一个演示程序。在我交付演示程序之后,这个程序在极短的时间内就变为了既成事实。

没错,在加入Netscape后不久,我被调出服务器团队——由于人员不足,我在这个团队干了一段时间,在那里与麦库尔·吐温斯(McCool Twins)阿瑞·卢奥托嫩(Ari Luotonen)有了一段时间不长但很快乐的合作;1995年下半年,阿瑞和我创建了PAC(Proxy Auto Config,代理自动配置)——的时候,Oak语言已经改名为Java,而Netscape正与Sun协商将该语言包含在Navigator中。

Netscape公司内部争论的最大焦点变成了:“为什么要包含两种语言?为什么不只用Java?”得到的回答是:必须有两种语言分别面向编程圣殿中的两类最不可能走到一块的开发人员:组件开发人员——这类人使用C++或(我们希望的)Java和脚本开发人员(爱好者或专业人员)——这类人编写直接嵌入在HTML中的代码。

至于是否使用已有的语言,而不发明一门新语言,也不是我说了算的。上峰的“军令”就是这门语言必须“看起来像Java”。这样,不仅排除了Perl、Python和Tcl,也排除了Scheme。后来,1996年,约翰·奥斯特豪特(John Ousterhout)前来推广TK时,还曾因Tcl错过机会而惋惜过。

谈不上自鸣得意,但我确实为自己吸收了Scheme式的一类函数和Self式的原型(尽管不那么主流)而感到高兴。至于Java的影响,特别是Date的Y2K bug和原始类型与对象类型(如string与String)差异的影响则是非常不幸的。

时光倒转回1995年春天:我记得在此期间见到了比尔·乔伊(Bill Joy),我和他讨论了垃圾收集的细节(card marking for efficient write barriers)。比尔一上来就完全理解了我们所说的一门易用的“脚本语言”与Java的关系,他还拿微软平台的VB与C++之间的关系作类比。据我所知,比尔是我们在Sun公司的支持者。

基普·希克曼(Kipp Hickman)和我在1995年4到5月间研究了Java,基普也开始写他自己的JVM。他和我编写了NSPR的第一个版本,作为他的JVM之下的可移植层。而我在5月中上旬创建Mocha的原型时,也将该版本用作了相同的目的。

比尔说服我们放弃基普的JVM,因为它会导致与Sun的JVM中的bug无法兼容(在那个时候可谓智慧的预言)。而此时此刻,Mocha已经通过在Netscapte Navigator 2.0(的初期测试版)中的快速原型和嵌入证明它自己。

之后的历史匪夷所思,让人难以接受。除此之外,应该说都是对历史的歪曲和调侃。JS在客户端打败了Java,只有Flash能与其竞争,而Flash又支持JS的一个衍生品——ActionScript

现在再回到流行的问题上。其实谈不谈这个问题都无所谓。然而,那些散布于互联网的流行的Ajax库,却经常以被掰碎了、压扁了,然后再以链接形式挑出来的纯文本的形式存在。难道不可以共享吗?

有一种想法——很多人都建议过,最近连道格也打起了这个主意受到了不少人的质疑,最近一次发出质疑声音的人是道格——在可能将会非常长寿的script标签属性中嵌入“神秘的散列码”(crypto-hashes)。这是个好主意吗?

恐怕不是。一方面因为“神秘的散列码”理论上的完备性问题,另一方面则因为其广为人知的药饵攻击(poisoning attacks)。

还有一个主意倒是不错,这个主意我是先从罗布·塞尔(Rob Sayre)那里听说的:通过HTML5中script标签的share属性支持一种可选的“公认的URL”:

<script src="http://my.edge.cached.startup.com/dojo-1.0.0.js"
shared="http://o.aolcdn.com/dojo/1.0.0/dojo/dojo.xd.js">
</script>

如果浏览器首先下载了共享的URL,而且根据HTTP的缓存规则它依然有效,那么就可以使用缓存(及预编译)的脚本,而不必从src属性指定的URL中下载。

这就避免了散列药饵的问题。这个方案只要求内容作者保证src属性指向的文件与share属性指定的这个库的公认(或流行)的版本相同即可。不过当然,我们必须信得过相应的DNS。(Ulp.)

这个方案可以避免在script标签属性值中嵌入不可预测神秘的散列码。

欢迎大家就此问题给我留言。

好了,这次真的回到JavaScript流行的问题上了。我们都知道有些Ajax库的确流行。那JavaScript流行吗?很难说。有些Ajax开发人员表示(也证明)了对它的喜爱。但也有很多人骂它,也包括我在内也骂我。我依然认为JavaScript是C和Self草草结合的结果(或一个私生子)。我又想起了约翰逊博士(http://en.wikipedia.org/wiki/Dr._Samuel_Johnson)的那句话:“好的不是原创的,而原创的都不好。”

不过,这没什么。Web总要发展,否则只有死路一条。JS也一样,要不就不会有ES4了。说到ES4,很快将有下文。

Firefox 3好像也会流行的, 它的空间与时间性能测试预示了这一点。相关内容呢,我以后还会陆续地谈到。

觉道庄

2009年11月27日 原创

觉道庄村北门

青云观位于河北青县城东觉道庄村,距天津市七十五公里,观内有15座殿堂,供奉十尊神像,总占地面积一方平万米,是华北平原上历史最悠久的道观。相传春秋战国时期,老子李耳弃周守藏室史官而走,云游四方至此地隐居,德高望重的老子传经布道,救苦救难,民众相聚而居,逐渐形成村落,起名为道德庄。沧桑变迁,元初.老子分神化气,重降此庄,名为张核,道号觉道,村更名为觉道庄,觉道大师积功德,四处化缘,在原老者君讲经道场营造起一座颇有影响的道观青云观,从此,觉道庄就成了道教圣地,村周围先后建起了碧霞庵、五龙圣母庙等道观,历史上曾在此涌现出颇有道诣的道师和法师。

昨天,儿子下载了一款名叫“主题医院”的游戏,在安装了该游戏之后,电脑中的Chrome和IE就被1188.com劫持了:
1、桌面上多出来两个IE快捷方式图标,无法删除;
2、快速启动区IE和Chrome快捷方式的目标被篡改,追加了http://www.1188.com/?8后缀(见下图),无法修改;
3、注册表中多了一些带有1188.com的键值。
经过搜索并试验广大受害网友克敌方法,我总结出了比较简单易行的“反劫持”作战方案:
1、“开始>运行”,输入regedit,打开注册表编辑器,Ctrl+F,搜索“1188.com”,对搜索到的键一律格杀勿论——全都删掉;
2、由于无法修改快速启动区被篡改的IE和Chrome快捷方式,因此需要把它们先拖到桌面上,然后删除;
3、桌面上多出来的IE快捷方式也不能删除,但可以通过Windows自带的“桌面清理”工具将它们删掉,具体步骤如下:
在桌面上右键单击,然后“属性>桌面>自定义桌面>现在清理桌面”,在打开的“清理桌面向导”中点“下一步”,然后在“快捷方式”区域选中桌面上多出来的那两个IE快捷方式,然后“下一步>完成”(见下图)。
4、由于删除了快速启动区的浏览器快捷方式,所以需要自己找到浏览器的安装目录,重新创建——这个不用说都会吧。
事实上,如果这个1188.com只是劫持浏览器,建俩快捷方式,那除了恶心恶心人,让自己臭名远扬以外,也没有什么大不了的,顶多用上述方法“反劫持”罢了。但令人担心的是,如果除此之外,1188.com还会做一些不为人知的事,比如给电脑植入木马病毒,盗窃账号密码等信息,那么用户就会面临着巨大的危险——在网上也看到有人说这个网站不能访问,更能不从中下载任何东西。

昨天,儿子下载了一款名叫“主题医院”的游戏,在安装了该游戏之后,电脑中的Chrome和IE就被1188.com劫持了:

1、桌面上多出来两个IE快捷方式图标,无法删除;

2、快速启动区IE和Chrome快捷方式的目标被篡改,追加了http://www.1188.com/?8后缀(见下图),无法修改;

3、注册表中多了一些带有1188.com的键值。

经过搜索并试验广大受害网友克敌方法,我总结出了比较简单易行的“反劫持”作战方案:

1、“开始>运行”,输入regedit,打开注册表编辑器,Ctrl+F,搜索“1188.com”,对搜索到的键一律格杀勿论——全都删掉;

2、由于无法修改快速启动区被篡改的IE和Chrome快捷方式,因此需要把它们先拖到桌面上,然后删除;

3、桌面上多出来的IE快捷方式也不能删除,但可以通过Windows自带的“桌面清理”工具将它们删掉,具体步骤如下:

在桌面上右键单击,然后“属性>桌面>自定义桌面>现在清理桌面”,在打开的“清理桌面向导”中点“下一步”,然后在“快捷方式”区域选中桌面上多出来的那两个IE快捷方式,然后“下一步>完成”(见下图)。

4、由于删除了快速启动区的浏览器快捷方式,所以需要自己找到浏览器的安装目录,重新创建——这个不用说都会吧。

事实上,如果这个1188.com只是劫持浏览器,建俩快捷方式,那除了恶心恶心人,让自己臭名远扬以外,也没有什么大不了的,顶多用上述方法“反劫持”罢了。但令人担心的是,如果除此之外,1188.com还会做一些不为人知的事,比如给电脑植入木马病毒,盗窃账号密码等信息,那么用户就会面临着巨大的危险——在网上也看到有人说这个网站不能访问,更能不从中下载任何东西。

来自“首届中国动漫艺术大展”(中国美术馆2009.10.26~11.18)

中国原创漫画产业化创作流程

总体流程
剧本创作
美术设计
模型塑造
镜头设计
动画创作
特效渲染
后期输出

总体流程

  1. 剧本创作
  2. 美术设计进行造型设计和制作。通过场景、道具、角色等的设计,来创建富有感染力的画面造型和动画形象,是动画创意的重要组成部分。
  3. 模型塑造:(1)三维建模——使用特定软件制作数学的、线框表示的三维物体的过程。根据美术设计原画手工建立几何体数据模型,其过程类似于造型艺术中的雕塑;(2)场景建模——是指对环境、道具等模型的塑造,当前潮流是追求场景的高度仿真;(3)骨骼蒙皮——在三维动画中添加骨骼和蒙皮,使模型可以按照设计要求进行运动。运用运动生物力学对人或动物模型的骨骼进行控制,可以为人或动物模型产生各种符合物理特性、真实可信的动作效果;(4)肌肉系统——应用生物运动仿生力学,在三维角色模型上建造运行协调机构,实现三维模型肌肉质感的协调联动。
  4. 镜头设计是将文学剧本转化为二维或三维图像表现的分镜头脚本,用以说明叙事顺序和镜头运用。
  5. 动画创作:(1)表情口形——通过对角色面部表情和口形动画的调制,刻画角色的内心感情以及与对白相吻合的口形变化。最新的表情捕捉技术和口形自动生成系统,进一步提高了表情、口形动画调制的效果和准确性;(2)动作表演——动作表演是对于角色动作的关键帧进行调制,使其产生连续性的动作,角色的动作表演既要协调流畅,又要符合动画运动规律。
  6. 特效渲染:(1)刚体和柔体——在三维动画中对刚体和柔体进行物理特性的精确模拟,达成重力、碰撞、弹力的效果,模拟出衣料、毛发等的逼真质感;(2)粒子与流体——在三维动画中对流体和粒子的运动规律和状态进行物理模拟,表现出逼真的水、火、雨雪、烟雾等自然效果;(3)群体和变形——在三维动画中模拟出大规模角色群体运行和物体形变效果的过程;(4)灯光和材质——在三维动画中通过对灯光和物体材质的调节,营造不同物体在各种环境氛围下的特殊效果,以达到逼真的视觉效果。
  7. 后期输出包括合成、校色、音乐、音效、配音、剪辑及最终的成片输出。至此,一部完整的三维动画作品就诞生了。
现代CG动画生产流程

现代CG动画生产流程

美术设计

美术设计——进行造型设计和制作。通过场景、道具、角色等的设计,来创建富有感染力的画面造型和动画形象,是动画创意的重要组成部分。

美术设计

美术设计——进行造型设计设计和制作。通过场景、道具、角色等的设计,来创建富有感染力的画面造型和动画形象,是动画创意的重要组成部分。

查看全文 »

来自“首届中国动漫艺术大展”(中国美术馆2009.10.26~11.18)

现代CG动画生产流程

第一步 漫画编创

第一步 漫画编创

第二步 漫画编绘

第二步 漫画编绘

第三步 流程监管

第三步 流程监管

查看全文 »

MySQL数据类型

2009年11月7日 Web开发, 原创

MySQL

MySQL

MySQL跟其他主流数据库一样,能够存储任何类型的数据,比如字符、数值和日期。而且,大多数应用程序中只会用到这3种数据。

1. 字符数据

1.1 字符数据分为字符型和文本型。字符型又分为两种,一是固定长度字符型(char),存储空间为255字节,不足空间以空格填充;另一种是可变长度字符型(varchar),存储空间为65 535字节,不足空间不用空格填充。在为表列定义字符类型时,必须指定最大字符数(英文每个字母占一个字节,汉字每个字占两个字节),不能超过相应类型的字节上限,例如:

char(40) /* 固定长度字符列,最多可以保存40个英文字母或20个汉字 */
char(280) /* 无效,超过了255字节 */
varchar(280) /* 可变长度字符列,最多可以保存280个英文字母或140个汉字 */

1.2 另外,在为表列指定数据类型的同时,可以同时指定列的字符集,例如:

varchar(20) character set utf8 /* UTF-8字符集,可以用于保存汉字等多字节字符 */

甚至,在创建数据库时也可以直接指定默认的字符集,例如:

create database myblog character set utf8;

1.3 对于要求存储空间大于64KB(64×1024=65 535字节)的列,就需要声明为文本型了。文本型又分为四种:短文本型(tinytext/255)、文本型(text/65 535)、中长文本型(mediumtext/16 777 215)和长文本型(longtext/4 294 967 295)。

由于MySQL提供了65 535字节长的可变长度字符型(varchar),因此短文本型(tinytext)和文本型(text)并不常用。

关于文本型数据,有以下说明:
(1)如果实际文本超出相应类型指定的最大长度,则多余文本将被截掉;
(2)如果实际文本不足相应类型指定的最大长度,则不会删除后面空格;

2. 数值数据

数值数据分为整数和浮点数(带小数点的数,有符号),而整数又分有符号数和无符号数(用于区分正负数)。MySQL中有5种整数数值类型:

较小整数(tinyint/-128~127或0~255);
小整数(smallint/-32 768~32 767或0~65 535);
中长整数(mediumint/-8 388 608~8 388 607或0~16 777 215);
整数(int/-2 147 483 648~2 147 483 647或0~4 294 967 295);
大整数(bigint/-9 223 372 036 854 775 808~9 223 372 036 854 775 807或0~18 446 744 073 709 551 615)。

声明整数类型列时,必须指定该列是有符号(signed)还是无符号(unsigned),例如:

smallint unsigned  /* 表示只保存正整数 */

有两种浮点数值类型:单精度浮点数,float(p,s)和双精度浮点数,double(p,s)。其中,p表示精度(小数点左右两侧的数字位数和),s表示至少保留几位小数。

3.时间数据

时间数据可以是日期、时间、日期加时间。MySQL有5种时间数据类型:

日期型:date YYYY-MM-DD 1000-01-01~9999-12-31
日期时间型:datetime YYYY-MM-DD HH:MI:SS 1000-01-01 00:00:00~9999-12-31 23:59:59
时间戳型:timestamp YYYY-MM-DD HH:MI:SS 1970-01-01 00:00:00 to 2037-12-31 23:59:59
年型:year YYYY 1901 to 2155
时间型:time HHH:MI:SS -838:59:59 to 838:59:59

其中,HHH:MI:SS中的HHH表示已经过去的小时数,而其他日期时间组件YYYY(年)、MM(月)、DD(日)的含义是可以一目了然的。

如果只想在某列中保存日期(年月日),则date即可满足需要;如果想保存日期和时间(年月日时分秒),则要使用datetimetimestampdatatime的区别除表示的时间范围不同之外,是它的值可以在记录增加或被更新时自动生成。

这个事儿有点意思,真假未知中——不过,当作个笑话看也未尝不可。

事件的前因后果是这样的:

最近,总部位于挪威奥斯陆的、国际领先的浏览器制造商Opera公司,因为预见Opera Mini(为手机用户节省流量的服务)Opera Turbo(提供全网加速功能的服务)以及Opera Link(支持用户数据实时同步的服务)的访问量将会激增,批准了一项价值百万克朗(100克朗兑换106元人民币)的服务器采购计划。

于是,众多知名服务器厂商应邀把服务器样机发到Opera公司参加竞标测试。然而,来自一家国际一流厂商的服务器把包括CSS之父、Opera公司首席技术官Håkon Wium Lie博士在内的所有测试人员全部当场雷倒,造成了几乎到手的百万元大单顷刻间付之东流。

到底是为什么呢?原来,当测试人员启动这家厂商的服务器,并使用Opera浏览器打开管理页面时,却被直接重定向到了错误页面。当然,这只是问题的表面而已。重定向嘛,不是服务器端脚本所为,就是客户端脚本的杰作。经过简单查找,现场人员发现管理页面的源代码中赫然写着如下一行JavaScript代码:


if (is.opera) { window.location.href="config/error.htm"; }

把这行代码翻译成人类语言就是:如果查看当前页面的是Opera浏览器,就在窗口地址栏中打开config目录下的error.htm页面!

呵呵,居然胆敢如此歧视Opera浏览器,就算制造商再牛,服务器再好,搁谁那里都没有通过“测试”的道理呀。就因为这一行代码,丢掉百万元大单,称其为史上最贵的JavaScript代码,应该不为过了。

(据说,这行代码是经销商所为;而这家国际一流服务器厂商也未公开,待查中。消息来源cnBeta.com

Google最近发布了集成Android OS的LiveCD,操作系统目前版本为0.2。对于没有Google手机的用户而言,现在也可以通过PC,或者虚拟机来体验这款“千呼万唤始出来”的移动操作系统了。

所谓LiveCD,就是一张位于光盘上的完整的操作系统。Google提供的LiveAndroid是一个ISO文件,下载以后可以将其虚拟到一个光驱中,然后在虚拟计算机里选择该光驱为启动盘,就可以启动Google Android OS了;或者,如果有刻录机,也不嫌麻烦,当然也可以将这个ISO文件刻录成光盘,放在光驱里,然后重新启动计算机,选择从该光驱启动,也可以进入Google Android OS。很简单——这就是LiveCD!

我使用的是前几天下载的VirtualBox 3.0.2(http://www.virtualbox.org/wiki/Downloads),这是一款开源的虚拟机软件,只有67.8MB。安装、设置、启动,都非常简单,不用说了。我为Android新建的“电脑”配置为内存256MB,硬盘2.0G,呵呵,对于一款手机操作系统而言,这算不算奢侈啊?

然后,从LiveAndroid的站点(http://code.google.com/p/live-android/)下载torrent文件(BT种子)。使用迅雷下载这个liveandroidv0.2.iso,文件大小为174MB,我家是1M的ADSL,用时大约40分钟——这段时间里,我安装VirtualBox并新建了虚拟电脑,而且还在Google Translator Toolkit中简单翻译了一下LiveAndroid的README(自述文件——附后)。好了,上截图吧。
第一张,启动VirtualBox后

android_virtualbox

第二张,启动虚拟电脑
android_virtualbox_startup
查看全文 »

先说明一下,现如今林林总总的外版计算机图书中所提到的大师,大概对应的是英文中的guru,意思是“专家、权威、领袖人物、带头人、导师”;泛指在某一领域中有相当建树,而且其成就为世人所公认的一位牛人。

为什么要推荐Eric Meyer的书呢?因为本身是技术专家,同时写书又能写得很浅显易懂的人并不多见(相反,技术高手,写书写不好的倒是常见得很),而Eric Meyer正是这样一位兼具技术和写作天才的人物。说了半天,Eric Meyer是谁呢?他是最负盛名的世界级HTML和CSS专家,W3C CSS&FP工作组成员W3C CSS测试套件的负责人,拥有10多年Web开发和设计经验。简单地说,他就是CSS标准的制定者之一。如果你知道CSS,但没有看过Eric Meyer写的CSS书,那么你的CSS知识结构一定是不完整的,或者说基础一定是不扎实的——夸张一点讲,就像你自认为掌握了一门技术,但实际上并没有得到真传一样!

如前所述,推荐Eric Meyer的书主要有两点理由:首先,他是CSS的制定者之一,对CSS的各方面细节以及所有属性的来龙去脉都了如指掌,因此他讲起CSS来,可以说是如数家珍、透彻明白。其次,他的写作水平绝对一流,各种复杂、难懂的CSS技术细节,甚至大部分CSS书根本不会涉及到的属性,在他的笔下都被描述得栩栩如生、异常清晰。

但是,Eric Meyer的书也有一个“缺点”,那就是行文不加丝毫粉饰的同时,给自己的书配备的插图却非常简单朴素,没有那么光鲜漂亮。无论是他的权威经典著作CSS: The Definitive Guide(中文版《CSS权威指南(第三版)》),还是以理论与实战结合见长的Eric on CSS(中文版《Eric谈CSS卷一》)及More Eric on CSS(中文版《Eric谈CSS卷二》),亦或他唯一一本面向CSS初学者的CSS Web Site Design(中文版《CSS站点设计手册》),概莫能外,全都是简单、直观的插图——虽然这些插图足以、也能够非常典型地说明、演示上下文所要讲解的技术细节,然而,跟其他年轻CSS技术书作者精心设计的插图相比,确实不那么容易吸引那些喜欢蜻蜓点水、拂光掠影的年轻CSS学习者的眼球。

想想也在情理之中,毕竟CSS是讲表现、外观和样式的,如果CSS书的插图不漂亮、不吸引人,怎么让人相信你讲的技术能做出漂亮的网页来呢?然而,不是有那么句话嘛——真理都是赤祼裸的,Eric Meyer书中那些丝毫没有粉饰的插图,似乎就在那里无言地宣称:喜欢真理的人,请走过来;害怕真理的人,请你走开!

事实上,我翻译过CSS: The Definitive Guide的全书(第2版),看过他的Eric on CSS系列,给我的感觉是,他的书只能用“权威”两个字来形容。换句话说,你所有关于CSS的疑问,都可以在他的书中找到完美的,或者不完美但却很合理的答案。最后,我想对CSS初学者,甚至中、高级水平的CSS技术人员说,如果你还没有看过Eric Meyer的书,我相信你早晚都需要补上这一课;因为即使市面上的CSS书再多,即便网上各类CSS免费教程再丰富,也找不出一本书、一个站点的资源能够与他的书相媲美!

因此,我推荐Eric Meyer的CSS权威著作。

注:最近,陆续收到读者来信,询问《jQuery基础教程》目前是第几次印刷。今在此一并回复:目前市面上销售的《jQuery基础教程》均为第4次印刷。为方便第1次印刷的读者,下面将第3次印刷时添加的“译者附注”公布于下,希望能对读者朋友有所帮助。

第3次印刷译者附注

本书自出版以来,受到了广大读者的热烈欢迎。本次印刷对第1次印刷中发现的错误和不妥之处进行了修订。同时,针对读者反馈中比较有代表性的问题,特作如下说明。

1. jQuery版本变化对本书的影响

本书英文原版在写作时,jQuery的最新版本是1.1。到了中文版出版时,jQuery 1.2已经发布了。由于新版本中的一些特性发生了变化,导致本书少量内容与新版本不一致,而且个别示例在新版本下不能运行。其中,主要是jQuery 1.2取消了对XPath选择符的支持(原因是XPath选择符可能会导致性能问题)。为确保使用新版本jQuery的读者能正常运行本书相关示例,现给出两种解决方案:第一种是继续使用XPath选择符,但必须下载Basic XPath插件,下载地址是http://plugins.jquery.com/project/xpath。插件实际上也是一段jQuery脚本,使用时把它贴到你自己编写的jQuery代码前面即可。这样,你的jQuery代码就可以支持XPath选择符了。第二种就是避免使用XPath选择符。对于本书个别示例中使用的XPath选择符,可以尝试把它们修改为其他等效的选择符——例如,把$(‘tr:not([th])’)修改为$(‘tr:not(:has(th))’)。

2. 阅读本书的背景知识

本书作为介绍流行JavaScript库——jQuery的全球第一部著作,内容丰富、通俗易懂,深受广大读者的喜爱,是学习jQuery的必读图书。但是,由于少数读者对HTML、CSS、JavaScript以及DOM的相关知识掌握还不十分全面,造成了在理解本书个别示例时的困难。如果读者感觉自身还缺少某方面的基础知识,可以结合相关技术书籍和本书共同学习,互为参考,以达到齐头并进的学习效果。在此,推荐人民邮电出版社出版的下列图书。

3. 推荐两个实用的小技巧

(1)有读者反映,在将示例中的提示换成中文时,在某些浏览器中显示不正常——显示乱码。这是一个在学习外版书时普遍存在的问题。由于国外作者保存示例代码文件(.js)或网页文件(.html)时,通常默认采用ANSI编码,而这种编码只支持西方字符。因此,如果要在代码或示例中使用中文,一定要记住把这个文件另存为UTF-8编码格式。

(2)从jQuery 1.2开始,Google为jQuery提供了CDN(Content Delivery Network,内容分发网络)支持,以便用户的浏览器从位于全球各地的Google服务器上就近加载jQuery。这是目前使用JavaScript库的一种最流行、最方便、最快捷的方式。如果读者在试验本书示例时不想把jQuery库下载到本地,也可以使用这种远程加载方式——只要把本书示例页面中的下面这行代码:<script src=”jquery.js”></script>

替换成以下代码即可:

<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js” type=”text/javascript”></script>

当然,还有个前提,就是你的电脑必须连接到了互联网。

你在阅读和学习过程中,有任何问题,欢迎致信contact@turingbook.com

最后,祝你阅读愉快!