AS Frameworks

Recently I’ve been looking into different frameworks, just to get some experience with other interesting frameworks out there. I’ve compiled a list of some of the frameworks I’ve found. I’m sure I’ve missed a couple of other good ones, if you know of one, please let me know. :)

Gaia
A framework package as a Flash component. Handy for designers, but it kinda made me shrug… Though reading through the docs a couple of interesting features showed through, like the generation of the navigation through the context menu.
Link: http://www.gaiaflashframework.com/index.php

Cairngorm
Used this framework / micro architecture a lot already. Nice Event-Command pairs as well as delegates for calling all (web)services.
Link: http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm

PureMVC
I’ve been working with a PureMVC project lately and looked at it before, quite similar in some ways to Cairngorm, just different names. ;)
A nice resource for pureMVC: http://puremvc.tv/
Link: http://puremvc.org/

Swiz

Swiz is a framework for Adobe Flex that aims to bring complete simplicity to RIA development. Swiz provides Inversion of Control, event handing, and simple life cycle for asynchronous remote methods.

Link: http://code.google.com/p/swizframework/

Dawn

Dawn is a lightweight framework for ActionScript inspired by Google Guice. In addition to Dependency Injection, it provides type safe notifications and helps you to build apps which are loosely coupled, easily unit tested, and less error-prone.

Link: http://wiki.github.com/sammyt/dawn

Mate

Mate is a tag-based, event-driven Flex framework.

Mate framework has been created to make it easy to handle the events your Flex application creates. Mate allows you to define who is handling those events, whether data needs to be retrieved from the server, or other events need to be triggered.

In addition, Mate provides a mechanism for dependency injection to make it easy for the different parts of your application to get the data and objects they need.

Link: http://mate.asfusion.com/

I think I’m going to give Dawn a try soon enough, of all the above it looks the most interesting to me.

Exclude files from Flex PMD

You can exclude files and/or packages from Flex PMD by creating your own rule set, use the "exclude-pattern" tag to exclude files.

XML:
  1. <ruleset name="myruleset"
  2. xmlns=...>
  3. <description>My ruleset</description>
  4. <exclude-pattern>.*/some/package/.*</exclude-pattern>
  5. <exclude-pattern>.*/some/other/package/FunkyClassNamePrefix.*</exclude-pattern>
  6. <include-pattern>.*/some/package/ButNotThisClass.*</include-pattern>
  7. <rule>...
  8. </ruleset>

Link: http://pmd.sourceforge.net/howtomakearuleset.html

Encyclopedia, or a systematic dictionary of the sciences, arts, and crafts

Encyclopédie, ou dictionnaire raisonné des sciences, des arts et des métiers (English: Encyclopedia, or a systematic dictionary of the sciences, arts, and crafts) was a general encyclopedia published in France between 1751 and 1772, with later supplements and revisions in 1772, 1777 and 1780 and numerous foreign editions and later derivatives.

Have a look at http://diderot.alembert.free.fr/ for loads of nice and old images, like the one above.

htaccess trickery

I was looking the other day for a way to make a directory that is behind a .htaccess password protected directory accessible for anybody. Does that make any sense? For instance: www.somedomain.com/protected is password protected directory. I wanted anybody to be able to access www.somedomain.com/protected/notthisone/ without a password. After a little searching I found the following trick:

AuthType Basic
AuthName "Anybody"
AuthUserFile /path/to/some/autfile

Require valid-user

Allow from All
Satisfy Any

I'm actually not sure if I need all of the above or if I can just get away with "Allow from All" and "Satisfy Any".

So basically by adding "Allow from All" you say anybody is allowed to access this directory. The "Satisfy Any" makes sure that you can access it either when you have already entered the password or when you don't have a password.

A nice way to circumvent .htaccess directory protection.

AS3 Version Injection + Flex PMD + TDSI = Rock ‘n Roll! \m/

AS3 Version Injection

Ever been annoyed by Project Managers telling you that a bug you fixed is still in the latest release you did and after some investigation find out that they forgot to clear their cache? Well, fear not! An AS3 Version Injection script is here! :P
I've created a simple AS3 class called Version that will add a time stamp to the context menu. All you need to do is instantiate the Version class once and pass it a reference to you Document Class. On top of the AS I've written a little Ant script that will take a template of the Version class, insert the current date and time and write out the Version class. This way you can just make it part of your Ant build and don't need to worry about manually updating the version number. Also, now you'll have a way of quickly identifying what version somebody is looking at. :)

Flex PMD

This is great for auditing your own code as well as other people's code. I've written a small Ant task that can be ran as part of a build that will run your project through Flex PMD and create a PMD file for you. The PMD file will have a time stamp suffix so you don't overwrite your old file and you can compare issues. To use this Ant script make sure you've downloaded PMD for Ant.

TDSI

Another piece of very useful technology. Up to 20% performance increase just by passing your SWF through it. I downloaded the Apparat source (where TDSI is part of) from Google Code and compiled it. Built another little Ant script to use TDSI with Ant. Just specify the input and the output file and you're done!

Bringing it all together

All the above Ant scripts are saved in a separate file. This way I can import whatever piece I want in my build script, example:

XML:
  1. <import file="as3_version.xml" />

TIP: Place the import after you have defined your properties in the build script, this way the imported scripts can use the properties set in the build script.

Links

Flex PMD

Nice! A Flex (automated) auditing tool! :)

FlexPMD is a tool that helps to improve code quality by auditing any AS3/Flex source directory and detecting common bad practices

Would be interesting to start using this.

Gotcha:
The PMD Violations Viewer only accepts files that are named "pmd.xml", all other files will not be recognized. I run an Ant task to rename the generated pmd.xml to pmd_[insert timestamp here].xml. When I tried uploading the renamed file the PMD Violations Viewer wouldn't accept it. :(

Links: