Archive for 四月, 2010
8个实用的 JavaScript 测试及效验工具
by raio on 四.16, 2010, under 小软收集 [下载]
JavaScript 是一款强大的广泛运用于现代Web站点及应用的脚本语言。作为一个技艺精湛的 Web 开发者,掌握JavaScript可以增强用户的使用体验,提供交互及富客户端等功能。
尽管JavaScript 的语法非常简单,但对于写程序而言仍然是困难重重,就是因为它的运行环境:基于Web浏览器。
以下您可以看到收集的8个实用的 JavaScript 测试及效验工具,它们都可以在不同环境下进行单元测试及校验测试您的脚本。
JSLint
JSLint是基于Web的验证JavaScript错误代码的工具。它拥有的功能及特定的设置来使用您的需求,自定义你的验证算法。
JsUnit
JsUnit是一款在客户端(在浏览时)的单元测试JavaScript框架。对JavaScript而言,JUnit就像是它的一个端口。当然它也可以在多 个浏览器、多个机器的不同操作系统中自动运行。它的发展始于2001年1月。
J3Unit
J3Unit是一个面向对象的JavaScript单元测试框架。J3Unit在网页浏览器中直接运行JavaScript的测试,也可以自动运行 JUnit 和 Jetty。J3Unit是建立在JUint和Script.aculo.us的基础之上来更好地实现自动运行JavaScript 单元测试。面向对象的JavaScript单元测试是由Script.aculo.us的Test.Unit.Runner对象编写的,基于 prototype JavaScript库。
Crosscheck
Crosscheck是一款开源的校验浏览器中的JavaScript测试框架。它可以帮助您在不同的浏览器中,诸如:Internet Explorer、Firefox等,而不需要一 一安装他们来确认您的代码是否正确。您唯一需要的是必须要有Java虚拟机环境。
YUI Test
YUI测试是一款基于浏览器,提供解决方案的测试框架。使用YUI,您可以方便地添加单元测试,寻求JavaScript解决方案。它是由 Yahoo! UI Library开发的一个JavaScriptMVC测试插件,能够让你模范大部分DOM动作,比如写,拖拽,比如模范AJAX响应,并且能够使用断言 (assertions)。它能够象函数一样运行,并且能够在不同的console窗口进行集成测试。虽然它不是在任何 xUnit 框架基础上开发而来,但YUI Test仍然有很多nUnit 和 JUnit的所具有的特性。( While not a direct port from any specific xUnit framework, YUI Test does derive some characteristics from nUnit and JUnit. 这段翻译得不好,但相信大致意思是对的)。
Regular Expression Tool
Regular Expression Tool(正则表达式工具)是一款在线工具,用来测试您的正则表达式代码是否正确。当您想快速测试各种文本例子的正则表达式时非常得心应手。
JSLitmus
JSLitmus是款轻量级的工具,用来测试JavaScript执行性能情况,采用直观的API。
JavaScript Regular Expression Tester
这块便利的应用程序是在浏览器中使用JavaScript来测试JavaScript正则表达式的。操作界面跟其他正则表达式测试工具无异,不同的 是,它测试的是JavaScript正则表达式在JavaScript中的性能情况。
美剧《豪斯医生》采用佳能5D Mark II拍摄
by raio on 四.14, 2010, under 子有乌虚 [文摘]
中高端数码单反相机的视频拍摄能力已经日渐被专业人士接受和追捧。热门美剧《豪斯医生》导演Greg Yaitanes日前就透露,该剧第六季的最后一集已经抛弃传统摄像机,采用佳能EOS 5D Mark II相机拍摄完成。
在接受采访时Greg Yaitanes表示,单反相机大尺寸感光元件带来的浅景深让画面看起来更加丰富。目前使用相机拍摄视频,在对焦上是个难题,不过已经有越来越多的厂商正在开发专门针对视频拍摄需求的镜头。
Greg Yaitanes称,他在拍摄《豪斯医生》第六季完结篇时,使用的是佳能EOS 5D Mark II的1080/24p模式,搭配全系列佳能定焦镜头和24-70、70-200变焦镜头。16GB CF卡每片可拍摄22分钟左右的素材。大部分时间内他都使用手持拍摄,也应用了一款小巧的三脚架。最后他表示,自己已经爱上了这种方案,DSLR拍视频“代表着未来”。

Photoshop CS5 新特性介绍 把图像处理推向下一个境界
by raio on 四.14, 2010, under 小软收集 [下载]
CNET科技资讯网4月14日国际报道 两年前,Adobe认为,Photoshop CS5最大的变化只是打造一个64位的Mac版本,但周一发布的最新版本显然远远超越Adobe起初的预期。
Photoshop CS5带给摄影师、画家以及广大的设计人员许多实用的功能,而Photoshop CS5只是AdobeCreative Suite 5套餐软件当中的一项改变而已。让我们瞧瞧,30天后出上市的新版软件有哪些新功能:

自动镜头校正(Automatic lens corrections)。根据Adobe对各种相机与镜头的测量自动校正,可更轻易消除桶状和枕状变型(barrel and pincushion distortion) 、相片周边暗角(vignetting),以及造成边缘出现彩色光晕的色像差(chromatic aberration) 。此功能把先前必须手动调整的校正自动化。
更新对高动态范围(high-dynamic range;HDR)摄影技术的支持。此功能可把曝光(exposures)程度不同的影像结合起来,产生想要的外观。Adobe认为,Photoshop CS5的HDR Pro功能已超越目前市面上最常用的同类工具–HDRsoft的Photomatix。Photoshop CS5的HDR Pro可用来修补太亮或太暗的画面,也可用来营造阴森的、彷佛置身另一世界的景观。

内容自动填补(Content-aware fill)。此功能让你删除相片中某个区域(例如不想要的物体),遗留的空白区块由Photoshop自动帮你填补,即使是复杂的背景也没问题。此功能也适用于填补相片四角的空白。
一个先进的智能型选择工具,让你更轻易把某些物件从背景中隔离(isolate)出来。先前,Photoshop使用者必须花费大量时间作这项繁琐的事,有时还必须购买外挂程序(plug-ins)来协助完成任务,所以任何自动化的改良功能都大有帮助。
Puppet warp功能。这让你根据控制点(control points)和锚点(anchor points),以自由型式的调整方式,来搬移某一场景的元素。Adobe示范如何把象鼻从地面移到象嘴,但更可能的用途或许是让模特儿看起来更苗条、曲线更凹凸有致。
在Mac OS X上支持64位。Photoshop CS4自2008年9月推出以来,一直支持Windows环境,但现在Mac使用者也将受益。支持64位后,可处理极大的影像,且能充分利用内存容量逾 4GB的电脑功能。
画家工具箱新增符合物理定律的画笔与调色盘,包括像是墨水流动、细部笔刷形状等等的属性。这个过程靠电脑的绘图处理器(GPU)加速。

附外挂程序(plug-in)可处理高端相机产生的原始图档(raw image) –虽不方便但很强大的文件,撷取自影像感测器(image sensor),而未转成JPEG文件–添加了新的、高清的处理演算法(processing algorithm)。Adobe也将把这项去除杂讯(noise reduction)和边缘锐化(edge sharpening) 的技术引进即将推出的Lightroom 3。
当然,新版软件还提供其他许多功能,只是不比上述功能抢眼。Photoshop产品经理Bryan O’Neil Hughes表示,已顺应使用者的需求做了超过36项的改变。
Adobe尚未宣布新版产品的定价,但根据往年更新的惯例,升级至新产品可能得花上数百美元。Adobe表示,新软件可望在30天内上市。
Photoshop顾客会不会迫不及待拥抱新的功能,还有待观察。有些顾客抱怨Photoshop功能太繁复,最渴望的是执行速度加快、更苗条的版本。但Adobe指出,问题在于,该把哪些功能从Photoshop剔除,大家并无共识。
不过,在简化方面,Photoshop CS5的确在右上方增加一系列按钮,方便使用者从事各种平常的任务。
Photoshop问世已20年,多年来一直与时俱进,始能历久不衰。Ticonderoga证券公司分析师Jay Vleeschhouwer估计,这项产品每年大约为Adobe赚进2.35亿到2.4亿美元。
另外,CS5的旗舰功能是Repousse,这个模组让2D形状突出,转型成3D形状。
Creative Suite其他功能还包括:Premiere Pro影片编辑、After Effects影片效果、 Illustrator向量图形、InDesign页面样式设计、DreamWeaver网站制作、Flash Pro程序制作、Flash Catalyst程序转换,以及处理PDF文档的Acrobat等等。全套软件内容丰富,装入多片DVD。
由于全套软件包罗万象,Adobe很难用单一主题概述所有新的改变。但那不是重点,重要的是必须能够说服其广大的顾客愿意继续掏腰包购买。
深入浅出理解索引结构
by raio on 四.08, 2010, under 编程小技 [代码]
实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“zhang”。也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。
我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张”字,我们可以看到在查部首之后的检字表中“张”的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63页,“张”的下面是“弩”字,页面是390页。很显然,这些字并不是真正的分别位于“张”字的上下方,现在您看到的连续的“驰、张、弩”三字实际上就是他们在非聚集索引中的排序,是字典正文中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。
我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。
通过以上例子,我们可以理解到什么是“聚集索引”和“非聚集索引”。
进一步引申一下,我们可以很容易的理解:每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。
(二)何时使用聚集索引或非聚集索引
下面的表总结了何时使用聚集索引或非聚集索引(很重要)。
动作描述
使用聚集索引
使用非聚集索引
列经常被分组排序
应
应
返回某范围内的数据
应
不应
一个或极少不同值
不应
不应
小数目的不同值
应
不应
大数目的不同值
不应
应
频繁更新的列
不应
应
外键列
应
应
主键列
应
应
频繁修改索引列
不应
应
事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。
(三)结合实际,谈索引使用的误区
理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。
1、主键就是聚集索引
这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键上建立聚集索引的。
通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但笔者认为这样做意义不大。
显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。
从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会负作用,但对于查询速度并没有影响。
在办公自动化系统中,无论是系统首页显示的需要用户签收的文件、会议还是用户进行文件查询等任何情况下进行数据查询都离不开字段的是“日期”还有用户本身的“用户名”。
通常,办公自动化的首页会显示每个用户尚未签收的文件或会议。虽然我们的where语句可以仅仅限制当前用户尚未签收的情况,但如果您的系统已建立了很长时间,并且数据量很大,那么,每次每个用户打开首页的时候都进行一次全表扫描,这样做意义是不大的,绝大多数的用户1个月前的文件都已经浏览过了,这样做只能徒增数据库的开销而已。事实上,我们完全可以让用户打开系统首页时,数据库仅仅查询这个用户近3个月来未阅览的文件,通过“日期”这个字段来限制表扫描,提高查询速度。如果您的办公自动化系统已经建立的2年,那么您的首页显示速度理论上将是原来速度8倍,甚至更快。
在这里之所以提到“理论上”三字,是因为
Delphi通过ADO连接MYSQL
by raio on 四.01, 2010, under 编程小技 [代码]
procedure TForm1.Button1Click(Sender: TObject);
begin
try
ADOCon1.ConnectionString:=(‘DRIVER={MySQL ODBC 3.51 Driver};’+
‘SERVER=localhost;’+
‘DATABASE=lionx;’+
‘USER=root;’+
‘PASSWORD=109;’+
‘OPTION=3;’);
ADOCon1.Close;
ADOCon1.Open;
except
application.MessageBox(‘无法连接数据库服务器.请与管理员联系’,'提示’,MB_ICONINFORMATION);
end ;
ADOQ1.Active:=true;
end;

