杂七杂八

IOC(DI) in Flex

IOC:Inversion of Control(反转控制)

DI:Dependency Injection(依赖注入)

IOC一词来源于Martin Fowler发表的一篇文章,《Inversion of Control Containers and the Dependency Injection pattern》

那是什么被反转控制了?实际上指的是对象之间的依赖关系被反转控制了,原本由类自身维护所需对象实例的创建现在转由外部的IOC容器来维护。这种维护对象实例化的负责方被反转了。而依赖注入(DI)呢?意思更加明确,即获得所依赖对象的方式是由IOC容器从外部直接注入进来,而非我们通常的使用new的方式在类中来完成。

在JAVA中,大家熟知的Spring框架其核心内容便是反转控制及依赖注入。

使用IOC(DI)有什么好处?大致来说有两点:

1、类或模块之间的耦合度降低了,代码更易重用和维护

2、更加便于编写可测试的代码

随着面向对象的Actionscript3.0的推出,尤其是Flex在企业级应用中越来越多的应用,Flex(Flash)应用框架也越来越多,也有不少框架实现了IOC的功能,当然也包括一些独立的IOC容器框架。

在as3中实现IOC,核心是使用as3中的反射来完成的,相对来说,as3中的反射比起Java来说确实弱了不少,主要是利用describType返回的属性XML进行解析,而这样对性能会有一定的影响,若在as3中大量使用反射的话,一定要考虑到这一点. 另外,关于使用的配置文件,有以XML来进行的,有以MXML来实现的,也有两都均支持的,需注意的是以XML来实现的好外是我们可以直接更改外部XML而不需要重新编译相应源文件,而若使用MXML的话当你更改配置的话需要重新进行编译.

当然,目前以as3实现的IOC也有很多了,主要两在块:

  • 独立的IOC容器:

Flicc

smartypants-ioc (名字取得不错,呵呵)

SwiftSuspenders (比较小巧)

  • 实现了IOC功能的完整框架:

Spring Actionscript(原名:Prana,此框架现已归入Springsource,几乎是Spring IOC实现的as3翻版,熟悉Spring的Java开发人员几乎不需要什么过渡就能理解)

Swiz(也属于比较成熟的框架了)

Robotlegs(MVCS框架,可集成使用其它任何DI容器,最初建立在smartypants-ioc,目前自身使用SwiftSuspenders)

Parsley(由PowerFlasher开发,个人比较喜欢这个框架,本站前面由Daniel也写了一篇Parsley的入门文章,很不错~~~严格意义上来说它不算一种MVC框架,属于一套Toolkit,你完全可以使用自己的MVC方式来组织)

另外这里一份代码,一个Sample,以不同的IOC框架来实现,应该对大家学习比较有用:

http://code.google.com/p/flex-ioc-examples/

希望大家能找到适合自己项目使用的IOC容器^_^

12月1号,欢乐聚会

借着Adobe开发者日的东风,天地会黒羽总陀主,达达和Kenshin来到广州,古墓大哥盛情做东,召集了一班广东的朋友,大家谈天说地,共同畅饮了一番!
黒羽透露了下个月淘宝将会有重量级的产品推出,我们都一个劲猜是不是给基于淘宝的App Store以及相应的分成方案呢!
再一次感谢古墓大哥的盛情,期待下一次的欢聚!

Adobe开发者技术日_2009.12.02_前夜晚宴
感谢Y-boy为大家进行了标注!

再附上11月21号北京方面朋友的腐败聚会照片
bjcnflex

Lokoo的拼图游戏

Lokoo是个好同志,给我们分享了他练手的拼图游戏的代码
点击下载代码

安装方法:
1.解压文件
2.打开flex builder
3.”File”->”Import”->”Other”->在弹出菜单选”Existing Project Into Workspace”
4.选择刚才的解压目录导入项目
5.运行puzzleDemo.as文件

IT草民群:47388222
作者QQ: 深圳_Lokoo(6818248)

Read More »

广州点点乐网络科技有限公司招聘

重点是flex开发工程师,如果合适,待遇至少5000以上,联系ljponline@gmail.com

Flex视频开发工程师
岗位职责:
公司Web IM产品的设计、开发、维护和优化。
任职要求:
1、2年以上的AS3编程经验,熟练使用Flex SDK3.2或Flex Build进行开发;
2、精通Flash Player10 客户端与后台服务端的P2P通讯交互;
3、熟悉Adobe Stratus Service及RTMFP协议,能够开发实现基于Stratus的P2P视频语音服务;
4、精通Openfire服务器,熟悉XMPP协议;
5、熟悉FMS、Red5流媒体服务器;
6、有Web IM开发经验或产品者优先。

Read More »

多nginx单php-fpm的配置方法

用php fastcgi和nginx搭配的形式是很常见的,在很BT的需求下,可能会需要多个nginx走不同的端口,而进程只用一个php-fpm。

本文所讲的环境比上述一句话还要BT,存在一个php-fpm,而且每个nginx都以一个非超级用户所有来进行运行。

这样就存在了一个BT的情况,php-fpm默认不能以root权限运行,而普通用户来运行的话,对其他用户的目录,php-fpm将没有权限,页面在运行php的时候,会提示404。 Read More »

Hostmonster上创建SVN

本文大部分参考自徐明的博客,结合自己的实际操作,方便自己以后参考。

1. 申请SSH登录,在hostmonster那提交一个ticket,粘贴上自己的身份证复印件,通常一天内搞定
2. 登录SSH,执行以下操作

$ mkdir tools
$ cd tools
$ wget http://subversion.tigris.org/downloads/subversion-1.6.6.tar.bz2
$ wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.bz2
$ tar xjf subversion-1.6.6.tar.bz2
$ tar xjf subversion-deps-1.6.6.tar.bz2
$ mkdir svn
$ cd subversion-1.6.6
$ ./configure -prefix=$HOME/tools/svn -with-expat=builtin -with-pic -with-ssl
$ make
$ make install

经过上面几步,subversion就安装到了 $HOME/tools/svn 里面去了
然后修改$HOME目录下的“.bashrc”文件

vi .bashrc

添加一行,方便登录后在任何地方都可以执行到svn的命令

export PATH=~/python/bin:~/tools/svn/bin:$PATH

在tools目录下创建svn仓库:

# mkdir svnrep
# cd svnrep
# svnadmin create eshop

3. 在Windows中访问SVN目录
安装了TortoiseSVN后,打开TortoiseSVN的settings面板,在左边的功能导航选择Network,修改右边的SSH Client设置

C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -l yoursshloginaccount -pw yourpassword

这里需要填写你的hostmonster的登录用户名和密码

选择一个空白工作目录,在资源管理器中用鼠标右键点击打开“SVN Checkout…”,填写

svn+ssh://yoursshloginaccount@yourdomain.com/home2/yoursshloginaccount/tools/svnrep/eshop/

确认后,这个空白目录就会变成一个和你的SVN仓库关联起来的svn工作目录,可以往这个目录中添加文件,提交到SVN仓库中去。

4. 在SSH中check out代码仓库的内容
通常php或别的脚本语言开发,我们的操作是在本地对代码进行测试开发测试,然后提交上SVN仓库,服务器端应用的发布目录就直接从SVN仓库中进行代码检出。

....假设当前目录有一个magento的程序,导入程序进SVN代码仓库
$ svn import -m "init import" magento file://$HOME/tools/svnrep/eshop/trunk/
$ cd
....把magento的内容导出到www目录进行发布
$ svn co file://$HOME/tools/svnrep/eshop/trunk/ www

IT妖怪的RSS Widget

用Dashcode做了一个简单的RSS Widget。
这样Mac用户可以实时关注IT妖怪了。
Screen shot 2009-10-15 at 9.25.16 AM

下载: IT妖怪
双击添加到Dashboard.

Efflex-开源的Flex效果库

Flex下的效果库,除了Tweener一样的,就很少了。
Efflex提供cover flow, cube, flint, pixelate等效果,可以让我们的flex应用多那么一点色彩。

Read More »

FlexBook和Zoomer

Quietly Scheming的Ely Greenfield的却是个大牛。他的qs控件都实用,很先进。他似乎对多媒体制作很在行,对效果很在行。
Screen shot 2009-09-16 at 10.33.11 PM

这个实例主要介绍了两个控件的用法:FlexBook,Zoomer。
在研究其他的类PageFlip控件时候,发现一个问题,Page view->Detail view的转换(查看一页上的详细内容)总显得不自然。
这个实例中,当你点击页面上的一个缩略图时候,整个页面都会缩放。

Read More »

[仅供研究]Outsmart的Videoroom

Outsmart是一流的flex ria开发公司。位于新西兰。
大家都对Videoroom那个例子印象很深。

Outsmart去年也推出了他们的一个在线3d游戏网站: smallworlds.com
Screen shot 2009-09-15 at 11.14.46 PM

Read More »