Tags: 360 Flex, automated builds, flash, Flash analytics, flex, Flex caching, Flex conference, Flex skinning
Posted in Blogroll, design, development, flash, flex, php, project management | No Comments »
Checking in Flex/AS3 for corrupt JPGs (invalid images)
-
February 25th, 2010
by Bryce Barrand
In a recent project we were running into problems with corrupt jpg images that end users were uploading. We wanted to check on the Flex side if these images were invalid before even uploading them. (We do check for image validity on the server side as well, but why waste the upload time?)
Here is a function that will take in the byte array for a jpg and tell you if it is valid or not. Keep in mind this doesn’t check everything, just that we have a file that has the correct EOI segment header at the end.
protected function isValid(bytes:ByteArray):Boolean { var toReturn:Boolean = true; //take the file name and check it against jpg extensions to make sure it is a jpg var namePieces:Array = file.name.split("."); //I'm getting the file extension this lame way, bc for some reason file.type is null var extension:String = namePieces[namePieces.length -1]; //if it is indeed a jpeg then we want to check the validity if(extension.toLowerCase() == 'jpg' || extension.toLowerCase() == 'jpeg') { //move to the second to last position in the bytearray bytes.position = bytes.bytesAvailable - 2; //get the last two bytes var secondToLastByte:uint = bytes.readUnsignedByte(); var lastByte:uint = bytes.readUnsignedByte(); //if the last two bytes don't match the EOI segment header at the end of the file //then we know it is invalid if(secondToLastByte != 255 || lastByte != 217) { toReturn = false; } } else { toReturn = false; } return toReturn; }
Inspiration for this bit of code came from http://stackoverflow.com/questions/198438/efficiently-detect-corrupted-jpeg-file
360 Flex
-
February 1st, 2010
by Bryce Barrand
Rain is a big fan of the 360 Flex conferences. We send developers every time, and have noticed the conference quality increase with each year. We are pleased to announce that we are sending 5, count them 5 speakers.
If you are considering going, I highly recommend taking part. If no other reason than to see our beautiful faces. Here is the link to register.
Here are the individuals we are sending, as well as the sessions they are teaching:


Speaker: Aaron Hardy
Title: Queue N Cache
Description: Take control of service calls by creating your own queue and dynamically shifting priority based off user interaction. Load what users are looking at first and and delay the rest for later. Show progress indicators in multiple locations for a single request. Once loaded, cache images in such a way that they can be displayed immediately anywhere in the app.


Speaker: Bryce Barrand
Title: Golden nuggets: How to find and keep top developers
Description: Part I. Even in a down economy, finding top developers is quite a task. For the most part, good people have solid jobs they love. Should you cross train? Pay hefty fees for head hunters? Monster.com? In this session we will go over a couple of options, and what we’ve found to be successful for procuring those “golden nugget” employees.
Part II: Once you have them, what makes them stay? How much does company culture make a difference? How about work load? What type of environment is cost effective for you as the employer and awesome for everybody around? We’ll also cover tips on keeping developers happy, and around for years.


Speaker: Garth Braithwaite (teaching 2 sessions)
Title: Flex 101
Description: Get up to speed on Flex quickly. We’ll be taking a full day of training to cram as much Flex 4 goodness into your head. This training is designed for those who have never used Flex.
Title: Your Flex App Looks Like Poo
Description: There is absolutely no excuse for not skinning your Flex 4 applications. We will be exploring skinning Workflows, skin requirements, and creating custom preloaders. Ultimately overhauling the interface. Although user interface design principles will be discussed, this session will not teach you how to design.


Speaker: Chase Brammer
Title: Analytics Throwdown
Description: Clients will ask, and you will be forced to choose your analytics weapon. Learn about Adomniture’s and Google’s analytics tools and how you can use them to drive business. The session will be divided up into three sections. First, the high level details about the qualities and business benefits of each. Second, a simple walk through of how to use the tools. And last, how to implement and deploy those tools in your applications.


Speaker: Gary Rogers
Title: Automated Build and Deployment Processes
Description: This session would encompass the often misunderstood methods for automating flex build and deployment cycles. Several options and examples would be concisely presented including java ant, php phing and others, as well as how to wield the power of the command line flex sdk. I would present a brief tutorial on how to get started with these methods. Also, a sophisticated GUI based build server concept would be discussed. I would also weigh the pros and cons of nightly builds and scheduled deployments and how these impact various architecture phases of an application. Also arguments discouraging the use of SVN/CVS for deployments would be presented.
In case you missed it at the beginning of the post, here is the link to register.
Alternative Implementation of Grant Skinner’s Spelling Plus library (SPL)
-
December 16th, 2009
by Bryan Elkins
Rain recently purchased a multi-seat site license for a great tool that is certain to save a lot of time and headache: Grant Skinner’s Spelling Plus Library (SPL – info here). This post describes some aspects of the implementation. You can view the source here.
THE WRAPPER CLASS
The quick start documentation lists three .mxml tags to test functionality from within the application’s main .mxml file. That quickly showed us that the SPL library worked well with standard Flex components. However, due to the large scale of our application, we wanted to make sure that the functionality was available from more than just within the main .mxml file. The target property for the SpellingHighlighter.as class is bindable on the tag. So one option would be to make that property universally accessible. However, since we needed some specific behavior modification in our implementation, a wrapper class (SpellChecker.as in the .zip file below) seemed like the best option.
COMPATIBILITY WITH OUR CUSTOM TEXT FIELDS
Many of our text components are instances of Flash’s TextField class deep within custom containers rather than standard Flex text components. SPL, however, only checks the first generation of children within a container to find a TextField. The getBiggestTextField() method in the included code digs recursively to find all available TextFields within the referenced container, grabbing the biggest one for checking.
All the rest of what the class does is contained within the inline documentation. For the robustness, ease of implementation, and extensibility of gskinner.com’s Spelling Plus Library, I’d recommend it to anyone. The only real issue right now is that it doesn’t work with Flash’s new text layout framework; I contacted them about it and they told me that that would soon be remedied.
Here’s the link:
http://blog.mediarain.com/wp-content/uploads/2009/12/splExample.pdf
Tags: ActionScript 3, AS3, checker, flex, Grant Skinner, gskinner.com, spell checking, spelling, Spelling Plus Library, SPL
Posted in development, flash, flex | No Comments »
This ‘Aint No Heavy Metal
-
December 15th, 2009
by John David Anderson
Those who’ve worked closely with Rain knows we’ve been a fan of using frameworks to bootstrap our development process. They have oodles of advantages over the re-invent-the-wheel approach, and our involvement with the PHP framework world has been intimate. I currently lead the documentation efforts for one of the most popular PHP frameworks available, CakePHP.
I’m also a founding member of the team for a new project called Lithium (aka Li3). The project is based on some experimental code in the CakePHP sandbox. Anyone familiar with CakePHP should feel at home in Lithium&emdash;the framework was based on CakePHP concepts and conventions, and many of the same developers who brought you CakePHP are now actively working on Li3.
I’d like to invite you to dive it and check things out by walking along with me through this quick tutorial, which covers the creation of a über-simple blogging application. After having walked through it, you should have a good idea of how Li3 is shaping up, and how to create your own simple applications with it. Read the rest of this entry »
Tags: CakePHP, Li3, Lithium, MongoDB, MVC, PHP framework, RDBMS
Posted in Li3, development, php | No Comments »
Showing Progress for Multiple Loaders
-
December 9th, 2009
by Aaron Hardy
A common thing to do in most any rich application is to show progress while loading remote assets. In ActionScript, the bytesLoaded and bytesTotal properties of classes such as LoaderInfo and URLLoader provide the needed information to show a fancy percentage-based progress indicator. The bytesLoaded property is updated as more and more of the asset is loaded in. Divide that by the bytesTotal and you have the percentage loaded.
Easy enough. How about multiple loaders? Lets say you have a group of 10 images and you’d like to show progress for all the images collectively. Because you have 10 different images you also have 10 different URLLoader instances (or Loader instances, whatever suits your fancy)–one for each image. Math would say that you divide the sum of bytesLoaded by the sum of bytesTotal and that gives you the percentage complete. Two issues arise: Read the rest of this entry »
Tags: bytesLoaded, bytesTotal, LoaderInfo, multiple loaders, progress indicator
Posted in development, flex | 4 Comments »
Posted in Blogroll | No Comments »