Googolflex!!
  • Home
  • About
  • Contracting

Recent Posts

  • Sprint’s new “Simply ‘Almost’ Everything®” Plans
  • CSS Changes in Flex 4
  • Dotted Underline LinkButton (Flex)

About The Author : jwd

This is John Dusbabek's tech blog. John is a software engineer and Flex developer in Provo, UT, where he lives with his lovely wife and four sons.

Recent Comments

  • Nikos on Flex: Binding to an Interface
  • Iain Hosking on Apache mod_proxy_balancer: No Protocol handler was valid

Archive for March, 2009

Mar
31

Uninstalling IE 8 on Windows Vista

Posted by: jwd | Comments (0)

I blindly clicked a link to upgrade to IE 8 this morning.  Sadly it was my first Windows Vista experience all over again– seriously, I had some pretty terrifying flashbacks.

Needless to say I couldn’t stand using it for more than 3 hours.  The uninstall process was non-obvious if you think of the browser as an “application,” like I do.  If you think of it as part of the OS, like they must at Microsoft, the way is a little more clear.

Here’s how in case anyone else made the same mistake I did (i.e. installing IE 8).

1. Open the control panel.
2. Open “Programs and Features” from the control panel.
3. Click “View installed updates” in the left-hand navigation panel. (This was the trickiest part.  I spent a while trying to find it among the other programs before realizing it wasn’t there and changing my approach).
4. If you have a lot of updates, it’s easier to use the “Search” box.  Don’t type “IE” in the search box, though, spell it out “Internet Ex…”.
5. Select it, right-click and choose “Uninstall” (it should be the only option)

The rest of the uninstall process was pretty easy (the smoothest part of my IE 8 experience).  It required a restart, but IE 7 was back when I logged in.

I might try installing it again later this year, if it’s strill as bad as it was today I might have to make a permanent switch to Firefox (which I’ve been resisting as much as possible).

Update: (4/2/2009) Apparently I overrated the uninstall procedure.  For some reason my mouse cursor in IE is always the “grab” cursor.  Which means I can’t select text (among other things).  This was the straw that broke the camel’s back.  I’ve changed my default browser to Firefox.  All I can do now is hope that Firefox gets better.

Categories : Uncategorized
Comments (0)
Mar
20

Go Daddy Substrings

Posted by: jwd | Comments (0)

I just made an interesting (though unremarkable) discovery. If you check for a domain’s availability at GoDaddy.com, and the domain name you check contains the substring “godaddy” it will prompt you to “enter another domain name”.

Whatever domain name you try– also try it at another registrar and you will see that it’s probably available. I tried “GodAddYou.com” (which was available 15 minutes ago, according to Hostway).

Makes me wonder what other substrings they’re filtering, and what other registrars might be filtering.

Categories : Uncategorized
Comments (0)
Mar
18

Messaging with Flex/ColdFusion via BlazeDS: Part 2 (Flex configuration)

Posted by: jwd | Comments (0)

This is part two of a two part series. See part one, Messaging with Flex/ColdFusion via BlazeDS : Part 1 (CF configuration)

This installment will go over setting up messaging in Flex, and assumes everything is working correctly on the server. Recall I will be covering two scenarios. A client-publish/client-subscribe model, and a server-publish/client-subscribe model.

Configuring Channels with ActionScript

I prefer defining my channels and channel sets in ActionScript on the client for a number of reasons. It does away with the need for client side configuration files and additional command line parameters that need to be set up each time I check out the project onto a new machine.

A channel is instantiated as follows:

private var pollChannel : AMFChannel = new AMFChannel(“cf-polling-amf”, http://cfserver.domain.com/flex2gateway/cfamfpolling);

The cf-polling-amf corresponds to the channel definition in the services-config.xml file residing on the server. If you gave it a different name previously, or set up a new one, the names should correspond.

The channel set is instantiated as follows:

private var amfChannelSet : ChannelSet = new ChannelSet();

Then, somewhere inside a method (init(), for example) the channel needs to be assigned to the channel set using the addChannel() method. The channel is now ready to use for remoting or messaging.

Publish/Subscribe

There are three classes you’ll use almost exclusively when dealing with AMF messaging. The Producer class, which connects to the messaging channel and is used to send messages. The AsyncMessage class which defines the format of the messages broadcast via the Producer. And the Consumer, which subscribes to the incoming messages received from the server.

The channelSet and destination properties need to be set on the Producer and Consumer, where the destination corresponds to the destination configured in the messaging-config.xml file on the server.

A MessageFaultEvent.FAULT listener can be attached to the Producer to listen for any errors that occur when connecting. And a MessageEvent.MESSAGE listener should be attached to the Consumer to handle messages that are broadcast to the clients.

Finally the consumer must call it’s subscribe method to indicate it is ready to receive messages. A consumer can subscribe and unsubscribe as often as needed.

Publishing a Message

The Publisher sends message to the server in the form of an AsyncMessage. The AsyncMessage class has two properties that we will be concerned with, the headers property and the body property.

The headers property is a dynamic object that you can add any data you want to. In this case we only need to set up one header value (many more are set after you call send() as it moves up the call stack) which is gatewayid. The gatewayid will correspond to the event gateway you set up in your CF Adminstrator.

The body property on the AsyncMessage class is used to send the message payload, and can contain anything. It is an anonymous object, and can have any number of additional properties or objects attached to it.

After setting these properties, the producer calls send, and passes the message as a parameter. The rest happens on the server and in the method that handles the MessageEvent.

Handling the Message Event

Handling the MessageEvent is similar to creating it, only backward. All of the properties that were set when it was published should be there (unless the CFC gateway explicitly removed or overwrote them). Nested in the event is a body and a headers property. They can be accessed as follows:

event.message.body
event.message.headers

And that’s all there is to it.


Server Publish

As previously mentioned, the server can also publish messages. This is different from the previous scenario in the following ways:

1. You only need to set up a Consumer… no Publisher is needed since the client will not be publishing messages.
2. A CFC on the server needs to manually publish the message. This can happen in a variety of applications.

This is accomplished in ColdFusion by setting up the event object, and then passing it in a call to SendGatewayMessage(). Here is some sample code demonstrating:

<cfset data.message = “someObjectOrValue” />
<cfset data.type = "optionalValue" />

<cfset event.body = data />
<cfset event.Destination = "AValidDestination" />
<cfset ret = SendGatewayMessage("anEventGateway", event) />

Other Applications

There are a number of configurations you could have that I haven’t mentioned. A Flex application could publish messages and broadcast to a separate Flex or AIR application that is subscribed to the same channel. There are a variety of methods available to filter messages received.

I’ve only just scratched the surface in getting it set up. What I’m excited for is for an RTMP library to become available, as Adobe announced plans to open source it in the first half of this year. We’ll see how that turns out.

Categories : AIR, Actionscript, BlazeDS, Cold Fusion, ColdFusion Enterprise Server, Flex 3
Comments (0)
Mar
17

WordPress 2.7 Admin UI

Posted by: jwd | Comments (0)

Since updating to WordPress 2.7 I’ve started using ScribeFire almost exclusively.  To me the WP admin UI looks as though some “interaction designers” went in and had their way with it.  Don’t get me wrong… it’s really nice and it looks great.  Alas, almost everything is more pleasant except for writing posts.  Had to be interaction designers.

Categories : Blogging
Comments (0)
Mar
17

Messaging with Flex/ColdFusion via BlazeDS : Part 1 (CF configuration)

Posted by: jwd | Comments (0)

I just went through setting up Flex / ColdFusion messaging via BlazeDS, and have come through it rather unscarred considering it’s my first time using Flex messaging. Most of the documentation I have regarding messaging is biased toward Java (including the sample apps included with BlazeDS). A lot of what I found online, though very helpful, didn’t really apply to the way I wanted to do it. I’m going to document some of the steps here in the hopes that it may be helpful for others (2 parts).

Here are a few details about my configuration that may help you determine if this post might be helpful to you.

  1. When I create a new Flex project, I always leave the “Application server type” set to “None”. This helps me to create applications that can be used against multiple server types.
  2. My ColdFusion server isn’t running on the same server I develop on, nor is it usually the same server I serve my production SWFs from.
  3. This assumes you have BlazeDS correctly set up with ColdFusion, and all of your configuration files (messaging/proxy/remoting/service-config.xml) roughly the same as the default ones included in the BlazeDS distribution (note: there are special ones included for ColdFusion).. If you need help installing and configuring BlazeDS with CF, go here: http://labs.adobe.com/wiki/index.php/BlazeDS:Release_Notes .
  4. I will be going through 2 scenarios on the client side. First, is a standard publish/subscribe setup, where the clients publish and subscribe. Second, a situation where the client only subscribes, relying on the server to do all the publishing.
  5. I don’t maintain any of the above mentioned configuration files in the project, electing to manually instantiate my channels/channel sets in ActionScript.

Setting up services-config.xml

The services-config.xml file already contains a channel definition named “cf-polling-amf”. It can be used as-is if you want your poll interval to be 8 seconds. To change it, set the <polling-interval-seconds> tag to the desired interval.

Setting up messaging-config.xml

Next open the messaging-config.xml file. Here is where you set up your adapters and destinations. If the line isn’t included under the <adapters> tag, you will need to add it”

<adapter-definition id="cfgateway" class="coldfusion.flex.CFEventGatewayAdapter" default="true" />

The default destination “ColdFusionGateway” as configured is sufficient for this post. If you set up your own, there are three tags you will need to define:

  1. <adapter>, this should refer to the adapters defined in messaging-config.xml, usually set to cfgateway.
  2. <gatewayid>, this can be set as a wildcard (*) meaning the client will define it, or you can set it to a specific gatewayid (which I will explain how to set up shortly)
  3. <channel>, which refers to one of the channels defined in services-config.xml, in this case “cf-polling-amf”.

Setting up a gateway CFC

An event gateway is tied to a specific CFC file, and is configured in the ColdFusion administrator. First we will set up two CFC classes. One will be used in our client-broadcast/subscribe setup, the other in the server-broadcast/client-subscribe setup.

The basic client-broadcast/subscribe CFC should look like the following:

<cfcomponent output="false">
  <cffunction name="onIncomingMessage" access="remote" returntype="struct">
    <cfargument name="event" type="struct" required="true"/>
    <cfreturn event.data />
  </cffunction>
</cfcomponent>

It’s important that it has that name, and accepts and returns a struct-type. It’s perfectly OK to process the headers or do whatever it is you need to do before the return value is broadcast.

The server-broadcast/subscribe CFC should look like the following:

<cfcomponent output="false">
</cfcomponent>

Complicated, I know, but try not to cry…

Setting up the event gateway

Login to your ColdFusion Administrator and expand the “Event Gateways” tab. From the menu select “Gateway Instances”. Fill in the following fields:

  1. GatewayID. You will use this either in your messaging-config.xml, and/or in your Flex application.
  2. Gateway Type. Select “Data Services Messaging”. It should be there if BlazeDS is set up correctly with ColdFusion.
  3. CFC Path. Enter or browse to the absolute path of the CFC that will handle this gateway’s requests.

Since we’re using the messaging-config.xml, there’s no need to select a configuration file; and leave the startup mode to auto. If you created both CFCs as described above, then you will need to configure a separate gateway instance for each of them.
Once you restart the server, ColdFusion is set up for messaging.

Continued in part two: Messaging with Flex/ColdFusion via BlazeDS: Part 2 (Flex configuration)

Categories : Actionscript, BlazeDS, Cold Fusion, ColdFusion Enterprise Server, Flex 3, Messaging, Windows Server 2003
Comments (0)
Mar
03

Book Review: Flex 3 Component Solutions

Posted by: jwd | Comments (0)

Flex 3 Component Solutions, subtitled Build Amazing Interfaces with Flex Components, by Jack Herrington is an interesting read.  Though I worry that the content will become somewhat dated (moreso than a book that covers Flex in a more general light) as time goes on and the community comes out with ever more inspiring custom components.

If you are looking for a book that showcases a bunch of existing Flex components (that aren’t a part of the standard Flex framework) then get this book and enjoy it. The book is well written and organized, and Herrington does an excellent job covering a lot of really cool components that will have people who visit your site asking, ‘Wow, how’d he do that?’

If you’d like to give a more in depth answer to that question than, “I just tied this component into my app” OR if you’re looking for a book that deals more in how to create cool, advanced Flex components (like I was); then you might feel a tinge of disappointment. Chapter 15 is dedicated to this topic, but it will feel like child’s play to anyone who has extended UIComponent.

To anyone who has played around with the “Tour de Flex” application (http://flex.org/tour), many of the examples will seem familiar. In fact, if you enjoyed this book you’ll probably enjoy exploring Tour de Flex. Though there is a lot of overlap, each also showcases components that are not in the other.

Creating components and integrating components are two very distinct (though related) topics. Before deciding to get this book, you should know that it is definitely weighted more towards integrating existing components.

Categories : AIR, Actionscript, Flex 3
Comments (0)

Search

Feedburner

Subscribe to

Get the latest updates delivered via email

Calendar

March 2009
M T W T F S S
« Jan   Apr »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Archives

  • July 2010 (1)
  • June 2010 (2)
  • May 2010 (1)
  • February 2010 (11)
  • January 2010 (3)
  • December 2009 (5)
  • November 2009 (1)
  • August 2009 (8)
  • July 2009 (8)
  • May 2009 (4)
  • April 2009 (1)
  • March 2009 (6)
  • January 2009 (1)
  • November 2008 (4)
  • October 2008 (5)
  • September 2008 (1)
  • August 2008 (5)
  • July 2008 (1)
  • June 2008 (2)
  • May 2008 (8)
  • April 2008 (5)
  • March 2008 (2)
  • February 2008 (3)
  • January 2008 (1)
  • December 2007 (6)
  • November 2007 (9)
  • October 2007 (1)
  • September 2007 (2)

Categories

Tag Cloud

adobe apache Architecture book review C++ centos client server architecture Custom Components database Design error message fedora flash catalyst flex Flex 3 Flex 4 fms iis 6 Interaction Design load balancing master-master master-slave mod_proxy_balancer Monkey Patching MySQL no protocol p2p peer to peer Perl PHP Red5 regex replication self registration selinux Shell Scripting shortcut manager skins socket policy file sockets states stored procedures stratus tools workflow

Coworkers

  • Casey Jackman
  • Sean Murphy

Family

  • Emily & CJ
  • Family Blog
  • Gary Dusbabek

Meta

  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org

RSS FlexExamples

  • Styling the text selection format on a Spark TextArea control in Flex 4
  • Setting the scale mode on a Spark Image control in Flex Hero
  • Setting the fill mode on a Spark Image control in Flex Hero
  • Setting a bitmap image fill on a Spark Form container in Flex Hero
  • Setting a bitmap image fill on a Spark FormHeading control in Flex Hero

Spam Blocked

847 spam comments
blocked by
Akismet

Sponsored Links

JUICE Chat

BYU Adobe Users Group


Copyright © 2010 All Rights Reserved
Flexx Theme by iThemes
Powered by WordPress