AIRIA.cn 联合编写的《Flash Builder 4 中文快速入门》即将发布

June 24th, 2009 momoko8443 No comments

6月1日 FB和FC的public beta 发布后,AIRIA.cn的大当家Junidea就立即召集BBS上的有志青年一起编著《Flash Builder 4 中文快速入门》。作为一个不错的学习交流机会,我也报名参与了几个章节的编写。大家经过几周的努力,主要章节都基本完成,预订周四发布第一个版本的pdf。这里我也利用自己的blog为我的处女作打打广告。等正式发布后我们也会吸取读者意见,完善手册的内容。

mb.jpg

Read more…

在AS3中使用自定义Metadata tag

June 24th, 2009 momoko8443 No comments

最近闲来无事想弄个简单AS3版的Spring framework(支持Ioc和Aop),思路已经有了只差code。上次在team的knowledge sharing meeting上大致演示了一下之前开发的mvc framework——momvc,同事给的意见是新框架最好能做到零配置,不过他们说的零配置,是“约定大于配置”,我并不是特别赞同这一点,这样会使代码不够灵活,造成过多的hard code。不过传统的使用xml配置文件方式确实加大了程序员的工作量,以及协同开发的难度(可能多个程序员要维护同一份配置文件)。于是我想到了annotations,在as3上与之对应的好像也只有Metatag了,于是google了一些自定义metatag的资料,稍作整理分享给大家。

1、在Class中写上自定义Metadata tag

package testcode.test
{
	import testcode.interfaces.IUserService;

	public class UserAction
	{
		[Ioc(Autowired = "userService")]
		public var userService:IUserService;

		public var myProperty:Object ;
		public function UserAction()
		{
		}
	}
}

2、在编译参数中加入 -keep-as3-metadata+=customTagName

image

3、在runtime使用describeType(obj)就能获得之前配置的meta tag,然后你就随心所欲吧

Categories: development Tags:

so terrible upgrade

June 22nd, 2009 momoko8443 No comments

wordpress 2.8发布好多天…每次登陆后台都提示更新,点击自动更新都timeout。于是今天痛下狠心手动升级…
为了把中文版换成英文版,将2.7整个删除,换上英文2.8再恢复db后,可怕的事情发生了…blog竟然显示异常~~~

还好blog离线工具有博文的备份,于是一篇篇手动恢复。不过comments都丢失了,虽然评论不多,但是多少有些遗憾。

Categories: others Tags:

Flash Builder 4 beta 版 试用感受

June 22nd, 2009 momoko8443 No comments

刚下好beta版,随便点了几分钟,说说几点比较明显的改变之处
1、多了几个namespace, s和mx好像是两种主题。fx感觉是非可视化组件

未命名

2、增加了更多的后台技术支持,可能和3中的import webservice帮你生成n多乱七八糟的代码差不多功能。我稍微试用了一下webservice,和以前一样鸡肋。

未命名1

 

Read more…

Categories: development Tags:

Flex Builder的性能调优

June 22nd, 2009 momoko8443 No comments

我们在开发过程中随着项目的不断壮大,经常会碰到编译速度过慢,IDE崩溃等令人头痛的问题,这里我总结了一下网上别人的经验,对FB进行了3点优化,效果明显

1、把 Build Auto 改成 手动 Build

2、project 右键 -> properties -> Flex Application 中,把不需要编译的mxml文件,移除

3、在安装路径下找到FlexBuilder.ini文件,进行编辑,加入如下参数

-vmargs
-Xms512m
-Xmx512m
-XX:MaxPermSize=512m
-XX:PermSize=512m
-XX:+UseParallelGC
-Djava.net.preferIPv4Stack=true

这3条经验中第2条可以明显加快编译速度数倍,第3条可以明显减低FB挂掉的几率。希望对你有所帮助

Flash Player (9,0,124,0) 版本升级后安全沙箱解决方案(http)

June 22nd, 2009 momoko8443 No comments

概述:由于2008年4月Adobe对Flash Player 进行了版本升级(version 9,0,124,0),这一升级对于安全沙箱有较为重大的影响,以前一些配置crossdomain.xml的方式在新的player中变为不可用。因此很多开发人员都遇到了新的问题,由于项目需要,我对http访问外部资源的过沙箱操作进行了一些研究,稍作整理与大家分享

Flash Player 9,0,124,0 以前老版本的过沙箱方法

例如:

你的swf存放位置: http://www.yourswf.com:8080/flexProjectName/test.swf

你想调用的外部资源位置: http://www.othersxml.com:8088/xmlProjectName/resource.xml

老的解决方案:

1、在 http://www.othersxml.com:8088/xmlProjectName/ ,外部资源项目上下文根目录下存放 crossdomain.xml. 这个xml文件中配置对 www.yourswf.com:8080 这一域名的许可。

2、在 test.swf 代码中加入 Security.loadPolicyFile(http://www.othersxml.com:8088/xmlProjectName/crossdomain.xml); 载入许可文件

版本升级后的改变:

即使在http://www.othersxml.com:8088/xmlProjectName/ 下存放了crossdomain.xml文件,并使用loadPolicyFile加载这个文件,也并不意味着 /xmlProjectName/ 下的所有资源对swf进行了开放。

新的策略要求,在http://www.othersxml.com:8088/ 这个服务器根路径上需要存放一份crossdomain.xml文件,这里称之为主策略文件。而如果是仅仅在 /xmlProjectName/ 下存放crossdomain.xml是没有什么作用的

新的解决方案1:

http://www.othersxml.com:8088/ 下添加crossdomain.xml

格式如下

<cross-domain-policy>
<site-control permitted-cross-domain-policies=”all” />
<allow-access-from domain=”www.yourswf.com” to-ports=”8080″ secure=”true” />
<allow-http-request-headers-from headers=”*” domain=”*” />
</cross-domain-policy>

然后在Swf代码中加载这个文件Security.loadPolicyFile(http://www.othersxml.com:8088/crossdomain.xml);

新的解决方案2:

对于因为某些原因无法在服务器根目录下存放crossdomain.xml文件,例如 swf需要访问http://www.othersxml.com:8088/xmlProjectName/ 下的资源,而你作为一个项目开发维护人员仅仅拥有对于 /xmlProjectName/ 下资源的操作权限,而没有对整个服务器资源配置的权限,因此你无法往http://www.othersxml.com:8088/下存放主策略文件crossdomain.xml。这种情况是经常发生的,对于租赁服务器空间来说这是很常见的现象,因此adobe给了另外一套解决方案。

后台开发人员需要在http://www.othersxml.com:8088/xmlProjectName/ 下建立一个servlet,这里我们访问的url取名为 /getPolicyFile.do

在这个servlet中我们需要实现代码级别的策略(crossdomain属于文件基本的策略)

关键代码如下

File file = new File(“D:\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\othersxml\\crossdomain.xml”);

BufferedInputStream bis = new BufferedInputStream( new FileInputStream(file));

byte[] buffer = new byte[4096];

response.addHeader(“Content-Type”, “text/xml; charset=UTF-8″);
response.addHeader(“X-Permitted-Cross-Domain-Policies”, “all”);

OutputStream os = response.getOutputStream();

int length = 0;
while ((length = bis.read(buffer)) != -1)

{
os.write(buffer, 0, length);
os.close();
}
bis.close();

通过代码的形式将policy file 打印出来,并加上http header X-Permitted-Cross-Domain-Policies = all

在swf代码段则使用 Security.loadPolicyFile(http://www.othersxml.com:8088/xmlProjectName/getPolicyFile.do);的形式来进行加载即可突破新的沙箱限制

参考文档:

http://www.riachina.com/showtopic-12813.aspx cimmicola 版主的回帖给予了很大帮助

http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html adobe官方的介绍,很详细

南京游记

June 22nd, 2009 momoko8443 No comments

上个礼拜去了南京,一个字累。

先看一下2 天的行程安排。这是lg 阅读了大量前辈们写的攻略后整理出的最佳出游线路,给一位南京的网友过目后,他还以为是南京人给安排的线路呢,说太合理了

1 、旅游时间: – (周五- 周六)
2 、人数:2
3 、出发站:上海新客站
4 、景点线路安排:
第一天
10 点半左右到达 南京站-> 玄武湖公园-> 湖南路吃午饭-> 总统府-> 下午17 点前入住锦江之星(朝天宫西街)-> 夫子庙吃晚饭,夜游秦淮河

第二天
锦江之星-> 中山陵景区(灵谷寺、音乐台等)-> 湖南路吃晚饭-> 下午19 点左右到南京站离开南京

5 、路线图:


6 、详细攻略
22 日搭乘 7:48 发车D406 列车来于10 点11 分抵达南京站,票价93 x 2 (由于是代售点购买另外付了10 元手续费)

下火车后赶紧购买第二天的回程票,D447 (次日19 :07 发车21 :30 到上海,票价93 x 2 )
这里请大家主要了,由于正值开学排队买票的人非常多,一定要选择好窗口,南京站有购买去上海方向购票专窗的,人会相对少一些(而且排队速度会快很多,别的窗口去北方的乡窝宁们买一张4 块5 毛的站票都要折腾5 分钟),另外广播里说某候车室旁边有专售上海方向动车票,我们没找到,具体位置请询问工作人员。
P8220022
车站书店买了一张南京交通图后就出来火车站(地图5 元),对面就是玄武湖公园了,比长风帕克的银锄湖大不是一点点啊,沿着湖边的小路(上图红色线路)往前走,大致能看到玄武湖的风貌,在右侧还能看到古城墙等风景
DSCF9161(001)(001)
走了拍拍,大约30 来分钟的样子,走到了玄武门,这里是玄武湖公园的入口了,门票30 ,风貌前面沿途也领略过了和老婆合计了一下没进去,因为差不多已经中午了,先吃饭要紧。出玄武门有南京市城市建设展览馆(可以免费入内)再往前走过了马路就是大名鼎鼎的湖南路了。

——————————————————————————–


沿着湖南路走啊走啊,可以看到南京警备司令部,奇怪门口怎么没有战士站岗


终于来到了狮子桥美食街


狮子桥美食街上大多还是非南京特色的饭店,当然我们肯定是冲着南京小吃去的
在美食街中间有家叫《南京大排档》的店,网上好像有很多游客推崇,我们点了炸臭豆腐、烤鸭包、金牌煎饺、鸭血汤(这里强烈推荐烤鸭包,馅料很实在 ,跟价格能成正比)吃了个半饱一共37 元,然后把胃留给了下一家店《回味鸭血粉丝》(这个也是有游客重点推荐的)叫了一份汤包,一份鸭血粉丝汤(好像是14 元)。南京的鸭血粉丝汤和上海的不同,南京的是放鸭肝不放鸭肫,而上海的正好相反。口味么肯定是南京的比较鲜美,汤包皮薄汁多,因为很甜,我不是很喜欢,lg 倒是觉得不错,不过确实是比不上上海的蟹粉小笼


吃完后原路返回,在湖南路上做3 路公交,至” 大行宫北站” 下,步行5 分钟就能到总统府了,(因为下车后过去有些距离,可以过马路向保安大叔打听,还是很热情的)

总统府门票40 ,游客很多

——————————————————————————–
蒋委员长办公室

——————————————————————————–
某会议室(会议室n 多,看来国民政府那会儿就喜欢开会,我党倒是把这一优良传统很好的传承下来了)

——————————————————————————–


总统府内的大致景色差不多都是办公室等这里就不一一赘述了,建议不爱历史的xdjm 就不要去那里参观了。


参观完总统府大约已经是下午16 点15 左右了,宾馆是在携程网提前预定的锦江之星朝天宫店,朝天宫西街近莫愁路(携程网上的口碑不错),店址虽然不在市中心但是相对来说十分安静交通也很便利,门口就有苏果、华联超市,还有2 个药房,一个点心店。从总统府打车到宾馆用了11 块,看地图感觉司机有些绕路。(携程预定169 ,锦江之星会员价好像是159 )

到了宾馆洗个澡休息下,就准备去夫子庙吃完饭了。如果你想去什么景点可以向宾馆工作人员咨询,都会得到十分明了解答。出门左拐再左拐坐4 路公交就能到夫子庙了(朝天宫站– 夫子庙站,南京空调车2 元,非空调1 元)


4 路下车后需要向后步行3 分钟左右达到夫子庙正门

——————————————————————————–
江南贡院,过去高考的地方门票要20 好像,没去

——————————————————————————–
夫子庙庙门口,门票28 ,磨刀霍霍啊。没去

——————————————————————————–
秦淮河的灯饰,感觉还是不错的就是灯光带短了些,建议大家一定要晚上去夫子庙

——————————————————————————–
秦淮河上的游览船,有手摇船和电动的2 种,不清楚具体价格总之不便宜,由于灯光带不长,游览船应该大多数情况下在黑灯瞎火处行驶,感觉不会太实惠



夫子庙有个比较有趣儿的现象,在夫子庙你可以看见至少2 家森马,2 家安踏,2 家真维斯,2 家美邦。。。几乎所有国产品牌服饰专卖店都是double 的,而且除了kfc 和mc 外很少能看到国际品牌的身影。

小吃店还是挺多的,我们买了臭豆腐鸭肫拿着边走边吃,去了某某糕团店点了传说中很灵的牛肉锅贴和牛肉小混沌,还特地吃了南京网友强烈推荐的咸亨酒店外卖部的臭豆腐球。但让人比较失望的是,以上提到的小吃都没说的那么好吃。


逛完夫子庙大概花2 个小时,还是坐4 路回宾馆睡觉,第一天行程大致如此

第二天一早,我们先去对面的小吃店吃早饭,门口赫然醒目的写着,本店小吃由荣膺金陵美食金奖的某先生主持,但是吃了之后也不过如此,徒有虚名嘛。

然后退房,准备去中山陵景区了。先乘3 路2 站后同站换乘9 路乘到底,9 路比较少,等了n 久才来了辆破破的挤满人的车,看来去中山陵的人还蛮多。

大概半个多小时后,终于到达景区。联票有两种规格,一种是140 的包括中山陵、明孝陵、灵谷寺景区等,另一种是80 的,不包括明孝陵。我们买了80 的,因为一天玩这么多地方玩不过来,再加上走马观花的也记不住什么。当然你也可以只买一个景区的门票,不过如果你游完之后还想去其他景区,你乘连接到另一个景区的小火车时就要自己出钱了。

废话不多说了,先上几张照片。

中山陵建于1926 年到1931 年,占地3000 亩,依山而筑,前临平川,后拥青峰,气势磅礴。

中山陵景区正门,由于是周六游人很多。

DSCF9272

DSCF9278

在爬392 级台阶前有个长长的斜坡走道,就当是热身

DSCF9280

DSCF9283

过了这道门就要开始爬楼梯了。

DSCF9284

上面就是孙老先生的长眠之地了,很壮观啊。

DSCF9296

孙中山先生就躺在石棺下面5 米处

DSCF9316

吃好午饭后我们就乘小火车到了灵谷寺,需要提醒大家的是,去中山陵一定要自带食物,不然你就只有吃15 元一碗泡面的命了。

灵谷寺景区入口:

DSCF9317

DSCF9319

DSCF9322

无梁殿:

DSCF9330

DSCF9334

这个是什么塔,名字忘记了,总共9 层,9 在中国是一个很特别的数字,几乎所有的和帝王有关的东西都会和9 有关系。爬到最高层的时候,头已经晕的不行了,不是因为恐高,而是楼梯完全是成螺旋而上的。

P8230080

灵谷寺游览好之后已经是2 点多了,脚酸的直抖,然后我们就乘小火车回到了中山陵,不行前往音乐台。

音乐台的喷泉,会随着音乐而跳动,有彩虹哦,草坪上还有很多和平鸽

P8230092

P8230094

旁边的小姑娘在喂鸽子

P8230100

在音乐台坐到4 点半,还有一个景点孙中山纪念馆没去,鉴于前一天已经去过总统府了,里面也有相类似的纪念馆,和lg 合计了下决定不去纪念馆了,所以就出门坐旅游一号线去了。

大约一个小时后车子终于开到了玄武湖公园,下来后步行5 分钟又来到了狮子林美食城,原本想买桂花鸭的,不过找了一圈没找到。于是我们就去吃饭了,找到前一天看好的尹氏鸡汁汤包馆,远远看去就有一个队伍在排队拿汤包,看来味道一定不错,进去后找了个靠门的小桌坐下,买了2 份鸭血粉丝汤(7 元/ 碗)和1 笼鸡汁汤包(6 元/ 笼) (里面只有这两种小吃)。粉丝汤味道很鲜美,不知道是不是味精的原因,粉丝也烧得很软很有弹性,比七浦路的好吃n 倍,汤包很甜,看来南京人都喜欢吃甜食啊。

吃饱喝足后在京都葫芦王买了串什锦糖葫芦,边走边吃,准备回家。正巧看到湖南路上有地铁到火车站的,于是便去感受了下南京的地铁,南京的地铁有点像4 号线,票价最低2 元。他们的地铁票很神奇,和上海的不一样。

南京的地铁车票,lg 不知道怎么进站还去问工作人员,乡下人的一记。

23082008

进站的时候把这个硬币在刷卡的地方照一下,出站的时候投进硬币槽就可以了。

乘了2 站,6 :20 左右到达南京站,离7 :07 分还有段时间,我们于是又在附近拍了点照片。大约6 :40 我们进站了,门口树了块牌子上面写着手机和水拿手上之类的话,我们照做了,但是安检的时候还是遇到了些插曲,我们的包和一个wdr 的放在一起,铁警叫住我们,去旁边检查下,lg 的包打开看了下,没异样,那个wdr 的包也打开了,原来包里放了n 瓶水。一场虚惊。乘上D447 列车于19 :07 分离开南京。

实现两个AdvancedDataGrid中的实用小功能

June 22nd, 2009 momoko8443 No comments

最近实在没什么东西可写,随便来一篇凑数吧,项目中有用到,稍微花了点时间来实现,希望能帮助大家少走弯路
1、统计group后每个组别下所有items的数量
2、手动定义columns的列宽,直接设置width的话,其余列宽不是平均分配的(要做到按照内容自动分配也不是不可能,就是稍微麻烦些)

演示链接(源码直接右键 view source)

Categories: UI Tags: , ,

momvc 0.1 beta版终于完成了

June 22nd, 2009 momoko8443 No comments

最近利用闲暇时间写了一套flex轻量级mvc框架,我将其命名为momvc。

什么是momvc:
momvc是一套轻量级的flex mvc framework。
momvc的特点:
1、momvc借鉴(可以说是”抄袭”)了j2ee mvc框架”struts1″的架构设计思路,将业务control(struts中称为action,尽量配置在xml文件中),使ui和业务逻辑层完全解耦
2、因为”抄袭”了struts1的设计思路,可以说momvc是struts1的as3版本,因此对于广大j2ee出身的flexers来说大大降低了学习成本,一名熟悉struts1的flexer上手momvc可能只需要半个小时。
3、消息机制一直是flexers选择框架的关注重点,momvc没有使用puremvc中类似于sendNotification的统一消息机制。momvc将消息分成3类,第一类为ui上的用户事件,momvc没有对用户事件进行过多的侵入,在mediator中写addEventListener+callback函数还是开发人员的主要手段。第二类是业务事件,事件由函数驱动framework进行派发,开发人员可以将事件写在xml配置文件中,类似于struts-config.xml中的forward参数,各个mediator通过一个业务事件监听总线来处理业务事件。第三类是业务层(control or action)调用服务层(service)的事件,这里借鉴了公司目前使用的一套名为peony框架的思路,将异步操作同步化,另外加上对于webservice,httpservice,remoteObject等RPC访问方式的封装,已经彻底对开发人员屏蔽消息机制,开发人员可以像调用函数一样进行后台的访问。

目前我使用momvc开发了一个简易留言板作为Best Practice,当然里面没有牵涉到复杂的操作,对于性能方面没有做更多的验证,另外文档方面我最近没有时间去写,因此决定0.1 beta version不对外发布,我会和同事一起对框架进行讨论对其进行完善,争取能在实际项目中检验它。

如果您对momvc有兴趣或者对开发flex mvc框架有兴趣都可以和我联系,共同讨论。

webservice类bug解决方案

June 22nd, 2009 momoko8443 2 comments

上一篇文章《Flex SDK 3.2中WebService的bug–loadWSDL()方法重复加载schema导致死机》中提出了Webservice这个类存在严重bug。项目已经进行了一半,不可能因为flex端的bug而对数据结构和接口重新进行设计。唯有从flex解决了,于是我写了一个简单的MyWebservice类来替代sdk自带的Webservice

大致思路如下

1、使用httpService加载wsdl文件,获取endpoint以及interface namespace

2、根据operation和参数对象 ,加上第1步获取的interface ,拼装成xml格式的 soap message body

类似于


  
    
      
        First Line Manager
        Second Line Manager
        Senior Manager
        Finance
        VM HR
        Purchase Initiator
        Project Manager
        Procurement
        IT Coordinator
        Director
        Service Verifier
        VRM System
        Vendor
        System Admin
      
      
        Closed
      
      BBB/China/IBM

        0
        15
        1
      
    
  

当然,从VBean 到 xml的转换可以写成一个Util类

3、使用AsynRequest发送这个soap message
4、回调函数接收到返回数据后,取其soap body部分,重新生成一个ResultEvent,扔给调用者。

这是一种比较底层的调用方式,因为我对soap不熟悉,这个简单实现功能做的十分单一,也可能会存在某些隐患。日后随着项目的进行,我会逐渐完善它,并最终取代官方的Webservice类。如需要源码,可以留下你的mail