- 1 . AIR应用日渐走入开发者视野

-
在本期周刊中同时出现了4个AIR应用,他们分别是来自意大利RIA咨询公司Comtaste的开源项目DAO-Ext来自PXL Designs,Inc的Attest 1.5beta;来自Richard Bates的CRUDdy Buddy;以及来自relaxmyeyes的RelaxMyEyes;
DAO-Ext是一个让你在Adobe AIR中使用DAO(Data Access Object)模式的工具,它可以使开发者抽取数据库结构定义(Schema)来自动生成actionscript的data access objects(DAO)和value objects。
它的具体特色有:
- 选择一个本地的SQLite数据并载入一个它的schema;
- 为每张表生成一个AS的VO (Value Object)和一个DAO (Data Access Object);
- 所有的DAO都被生成为一个单件类并且使用VO作为itemClass,这个VO作为表的每一行记录;
- AS VO是可绑定对象;
- 点击一次就可以导出所有表的AS DAO和VO;
- 打开文件系统窗口来选择保存生成类的文件夹;
DAO-Ext价值在于它为我们提供了一个代码生成工具,而这个工具是我们开发基于AIR/SQLite应用的有力助手,此外,通过对这个开源工具的学习,我们可以掌握AIR中数据库操作、文件生成等诸多开发技巧;
编者注:如果你对DAO模式不太了解,这里做一下一个简单介绍:DAO模式将程序对数据库的操作封装到数据访问对象中(DAO),因此,你可以以面向对象的方式去操作一个数据库记录。如 UserInfo.getPassword() 做的就是从UserInfo这个表里面,取出密码的过程,而具体操作,则被封装在了DAO中,隐藏了起来。
另外,在Java开发者中,大家习惯于使用Hibernate连接到数据库上去生成相关的Java DAO,这里,这个工具就是一个类似工具。
Attest 1.5beta(需要在线服务)的出现,我认为是本周最大收获,以前我记得这家公司是提供了一个收费的模拟软件,当时如果想测验Flex水平或者进行模拟练习没有好的渠道,所以对大多数想通过Flex认证考试的开发者来说,无疑是一种障碍,现在终于有了一款这样的软件,大家可以一试身手了。Attest 1.5beta目前提供2套60分钟50题的考试,还有几个模拟Adobe Flex认证考试的测验,这些模拟测验所暴露出来的考点将极大的帮助Flex开发者一举通过考试,几个模拟考试被缩减为30分钟25个问题,这些问题能帮助你在临考前加深记忆。Attest的出现无疑是Flex/AIR开发者的福音。 其开发者是: pxldesigns和Holly Schinsky。
CRUDdy Buddy是一个生成CRUD(创建、读取、更新、删除)操作的基础PHP/AS/MXML代码的AIR应用,这些代码可以用来作为开发以PHP为后端的基于adobe Flash/Flex/AIR的应用,其中Flash平台与server的通讯由Zend Framework中的Zend-AMF处理。CRUDdy Buddy为Flash/PHP开发者提供了很方便的代码生成工具,从前端到后端,这样的工具在很大程度上减少了开发者的劳动,从而使创建一个标准RIA应用的时间大大减少。
编者注:CRUDdy Buddy 可谓是PHP程序员的福音,当使用VO模式的时候,CRUDdy Buddy可以节省开发人员很多时间和精力。 如果你是一个Java开发人员,也在寻找一个帮助你自动生成代码的工具的话,可以参考使用XDoclet 来自动生成代码。
relaxmyeyes是一个保护视力的软件。不同之处是这个软件是基于Adobe AIR的。 目前所见到的基于Adobe AIR的软件可能最看重的也是AIR的跨平台特性。 这样的一个视力保护软件在PC, Linux, Mac上都能顺利运行。对于这个软件,后面有更多评论。
- 2 . Adobe最新资讯汇总

-
Adobe 在本周24号举行的一次Open Iteration Meeting上发布了FlexSDK后续几个版本的发布日期,他们分布是:
- 3.4 beta 1: June '09;
- 3.4: August '09;
- 4.0: Q4 '09;
- 4.1: Q3 '10;
所以可以肯定的是,我们能在今年年末迎来Flex4了!
随后,MAX2009也有了消息,25号官方媒体称MAX 2009 in Los Angeles and Online(no MAX Europe in 2009),即MAX今年的大会将于10月4号到7号在洛山基举行,与往年不同的是,今年欧洲的MAX大会受经济危机影响而取消,取而代之的是一次在线直播的MAX大会,即将洛山基的MAX大会同时在线直播,全世界的社区都能看到这场盛会。
最后,来自FlexSDK team成员的消息称,Flex4在开发过程中为了尊重广大开发者的意见,已经将Flex4组件的前缀Fx去掉,而且重新定义了组件的名称和包结构,Spark风格的组件从原来的mx.components包中,移到了spark.components包中,并且将组件的前两个字母Fx去掉了,个别例外是将Fx前缀该为Skinnable,spark包将与mx处于同一级别;这样的改动会让原来Flex2/3的开发者感到适应和熟悉,不至于太抽象,可以看出现在的Flex确实在听从社区的声音。
编者注:adobe尽管在形势不利的情况下做了很多调整,但是研发的投入和步伐依然没有改变,MAX大会虽然规模少了一场,但是相信其影响甚至还要超过以往,Flex4按部就班的走来也在说明adobe仍然在技术创新上走在时代的前沿,与此同时也在不断走近广大开发者,这样的姿态是做好Flash平台的有力保障,也会给我们广大Flash/Flex开发者足够的信心!
- 3 . ADC新一期文章导读

-
上一期才介绍了ADC的一些精彩文章,本期又迎来了新一轮文章,他们分别是:
高级Flex3开发节选之集成数据与流媒体服务,这篇选自书中的文章介绍了data service的架构,以及详细介绍了BlazeDS关于Remoting和Messaging的用法,并提到了FMS的Media Streaming的用法,该文章对于不太熟悉BlazeDS的人来说绝对值得一看,即使是用过blazeds的人,文章介绍的扩展blaszeds服务的介绍相信也是很有参考意义;
编者注: 这篇文章出自Advanced Flex 3这本书。此书出版社还推出了一本AdvancED ActionScript 3.0 Animation的书。 这本书在动画方面,的确是不可多得的佳品。
使用HP SWFScan来减少来自网络的恶意攻击,惠普公司为大家提供的一个反编译工具来检查你的swf文件中有没有漏洞能被外界漏洞。文中提及,在网络上他们搜索了250个Flash程序,有15%直接把用户名,密码编译到了SWF中。另外,有许多SWF代码有各种各样的安全隐患,比如对于用户输入的过滤,检测不够完善,跨域策略太宽松,跨域脚本注入,数据库连接信息被写入SWF。这些都是潜在的安全隐患。
惠普提及,他们在开发SWFScan的过程中,对超过4000个SWF做了调查,结果发现
- 16% 的SWF有跨域攻击的危险(XSS)
- 77% 的SWF是基于Flash9,Flash10包含调试信息和对于源代码的引用。(这个在国内很常见,目前很多大型门户网站的播放器都是debug版本的,估计开发人员忘了或者不知道需要经过"发布"这一步后,才能进入正式部署)
- 35% 违反了Adobe's安全最佳实践。
编者注:当为一个大型公司做基于Flash的解决方案时,这些大型公司一般都会对你的程序进行安全审计(Security Audit),这些审计包括对于用户名,密码的管理,程序中是否有可能存在的跨域攻击隐患,是否包含SQL注入隐患等等。
使用可分发flashplayer解决方案来提高手机应用的吸引力 ,三位手机开发者来与大家分享们使用Flash Lite3.1的经验和心得;
新的全面的AS语法参考,这是目前发布的Flash/Flex相关产品最新版的语法参考,含有zip下载;
探索Flash CS4 pro中的新3D特色 ,这是一篇较为全面的介绍FlashCS4中3D特性的文章,文章介绍了控制旋转、动画,和编程效果的实例和方法,值得一看;
编者注:Flash CS4的3D支持是基于Flash Player10中关于3D的新特性,这种3D支持严格来讲是对3D变形的支持,而非真正3D场景(摄像机,光线,材质等)的支持,所以作为开发者的你,还不能单纯依赖这个新特性就可以构建3D应用,不过这个特性仍然可以为你的应用增色不少,比如你可以使用一些3D变形的特效到你的应用中(比如相册),结合一些很酷的动画过程,可以达到视觉上很好的效果。从技术角度讲,Flash Player10在3D变换上的支持,是基于它增加了对Z轴的支持(由原来的2维坐标(X,Y)转换为3维坐标(X,Y,Z)),并可以基于X,Y,Z轴的运算来支持3D变形和3D旋转,使被变形或旋转的图像呈现3D的特效。这种特性反映到Flash CS4中,就是工具栏上新增加的用于3D变换的两个工具(3D Rotation tool和3D Translation tool),使用这两个工具你可以在可视化的界面中调整3D参数。几天后的Adobe技术日上,RIAMeeting会有Flash Player10新特性的Topic,其中就会有3D方面的演示。
从基于表格到无表格而使用CSS的web设计第一部分:CSS基础,使用CSS设计页面也许你熟悉,但是在Dreamweaver CS4是使用CSS你熟悉吗,不一定;
编者注:使用CSS完成布局本质上讲不依赖于任何IDE,用记事本也可以完成这个工作,但前提如果你不是技术偏执狂的话,还是尽量使用专业IDE的优势来提高开发效率,在使用WEB标准构建HTML页面方面,DreamWeaver还是有很多有用的特性有待你发掘的。
- 4 . 漫谈经济危机下的RIA

-
这是来自Adobe Evangelist James ward的一篇博客,介绍当前形式下用户对RIA技术并取得成功的几个案例。文中介绍了几个案例包括在线销售网站Borders.com ,该网站的订单维持率在62%以上(应该是相比经济形势好的时候来对比的吧),文中还引用了一段这个网站的缔造者Allurent公司制作的视频来介绍他们对案例的分析和策略,borders.com网站首页核心部分采用了flash技术,而且在整个网站中与HTML结合的非常完美,丝毫看不出有悖于整体风格的地方,这是值得我们学习的地方;作者介绍的另一个成功案例是CRM服务供应商Model Metrics,用该公司的负责人的话来说,Flex使我们建立一个能够使用Ajax做不到的RIA,我们的perfectcall框架利用了RIA的全部威力使我们的客户增加了对外呼叫数量,使他们每小时增加10到50个呼叫,因而转换为非常大的投资收益率;
- 5 . Android手机将支持Flash

-
来自Flash-lite官方博客 的消息称,Android手机将支持Flash,一家名叫BSQUARE的公司正在研究将Flash集成到Google手机上。该公司的CEO称集成Flash技术到Google Android平台的功能将会带给消费者丰富的内容和前所未有的应用,这些是消费者需要的,也是我们的OEM和ODM顾客获得成功的关键;BSQUARE是一家为微软嵌入式设备的开发者提供软件和技术支持的公司,他们目前的产品主要是winCE平台下开发工具,但是他们是否有能力同样为Android提供这样的服务,我们还需拭目以待!
编者注:其实早在去年MAX2008大会上kevin lynch就演示了Flash在Android上的应用,而且官方也表示了明确adroid版本的Flash将会在几个月内登陆,任何具有200M HZ的处理器,超过16M内存和全功能web浏览器的手机都能够渲染Flash内容。按照google开发的策略(虽然没有正式声明),手机上运行Flash内容应该是不成问题,没有太多的争议和保护,而iphone确是未知数,现在看来iphone也许是全世界最后一个支持flash的手机平台了。
- 6 . 介绍开源项目AMFast

-
AmFast是一个新的Flash Remoting for Python的解决方案,作为一个AMF3 编码和解码器的python扩展,他的AMF编码和解码器由C写成,所以速度上要优于pyAMF18倍,此外他还有其他特色:
- 用classDef来映射自定义类从而完全控制序列号和反序列化;
- 通过完全控制remote endpoints来映射NetConnection和RemoteObject的头和消息体与可触发目标对象;
- NetConnection and RemoteObject鉴权协议由Target mapping功能支持;
- SQLAlchemy数据持久化包含远程可载入的延迟加载的属性;
- AS代码生成;
它编码和解码器在压缩包里的AmFast-0.2.3\amfast\ext_src目录中,而且还有具体的例子来研究,该项目虽然成立不久,但是其文档、实例等内容一应具全,感觉非常规范,很有希望。
编者注:使用C来编码解码的确是能够很大程度上提升效率的: AMFPHP项目下,有一个叫做AMFExt的php模块,就是用C写的用来加强AMF编解码效率的模块。 测试数据应该能最好的说明一切,当将HelloWorld 迭代10000次的时候,其效率提升已经达到96%了。
- 7 . 使用BlaszeDS和LCDS时将你的服务配置文件(services-config.xml)外部化

-
在基于BlazeDS以及LCDS的项目中,大多数情况下,FlexBuilder默认会让你选择服务器所在文件夹,用于自动读取services-config.xml来设置RemoteObject的EndPoint.这种编码方式将Flex开发团队和Java后台团队绑在了一起。而且,使得你无法随意部署你的服务器和客户端。
来自adobe evangelisthristophe的文章描述了怎样将data service工程中的services-config.xml文件去掉的办法,其实核心的原理就是为remoteobject指定ChannelSet,而FB中默认的DS工程是要将这个service-config.xml文件编译到swf中去的,这样就意味着你只能按照开发环境来部署到实际的环境中去,如果是跟IP有关的应用,你将无法处理。现在好了,你可以用配置文件来处理这种看似不能改变的开发模式,如果实际的部署环境,包括IP和端口或者上下文都要变化时,只需修改你自定义的配置文件就可以,无需重新编译。
编者注:实际上,如果你对BlazeDS以及LCDS的使用仅仅涉及到RemoteObject这个部分而非其他一些高级应用,你是可以直接通过Adobe Flex Cookbook中这篇内容(如何不用services-config.xml就能配置为RemoteObjectendponit)介绍的方法,快速简便的设置服务器地址的。
- 8 . 学习Unity3D与Swiz框架

-
Unity3D的学习在国外已经如火如荼,那么国内 的开发者是不是也要及时赶上呢,本期就给大家介绍一些不错的教程,本期列举一个系列视频:
- Unity 3D - Lesson 1 Part 1
- Unity 3D - Lesson 1 Part 2
- Unity 3D - Lesson 1 Part 3
- Unity 3D - Lesson 1 Part 4
- Unity 3D - Lesson 1 Part 5
- Unity 3D - Lesson 1 Part 6
- Unity 3D - Lesson 1 Part 7
此外,还收集到了一个全面学习Unity3D 的资料库:Unity3D Motherload
上一期内容中向大家介绍了新兴Flex框架Swiz,本期为大家介绍它的具体用法,也是系列教程:
- Using Swiz Part 1: 开始时的步骤
- Using Swiz Part 2: 依赖注入
- Using Swiz Part 3: 事件
- Swiz Part 4: 动态响应者
- Swiz Part 5: 使用假的异步标识来模拟服务端调用
Swiz是目前知名度和认可度仅次于Cairngorm和PureMVC的框架,而且很多人在使用它,建议大家仔细研究研究,相信不会让你失望!
- 9 . 优秀网站与应用推荐

-
本期推荐RelaxMyEyes为优秀网站,不是因为这个作品有多么酷,而是因为这样一个小小的提醒工具体现着关注健康、关爱生命的人性化理念,据我所知这种类型的AIR应用还是第一个;此外,整个网站简洁、干净、内容突出醒目,卡通式的banner更让人容易接受,内容的布局也很合理,重点突出,主次分明,图片与文字相互映衬很好的表达了作者的思想,而且能吸引观众;面对这样贴心的服务,你能不动心吗?
- 10 . 一周开发技巧汇总
