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 Cold Fusion

Jan
27

Running IIS 6.0 and Apache Together

Posted by: jwd | Comments (0)

My ColdFusion VPS runs IIS 6.0 on Windows Server 2003.  I wanted to run Apache 2.2 on this server as well, and bind it to the IP address that IIS 6.0 wasn’t using.  I opened the IIS management console to force IIS to listen on a single IP address, but when trying to start Apache I received an “already in use” error.  I double checked that IIS was configured to listen on one IP address, and Apache was configured to listen on the other.  Then I tried several variations of service startup order, etc, still without success.

Let me explain my requirements clearly: I wanted IIS and Apache to each use port 80 of different IP addresses.  Before you leave a comment explaining I could have had them listen on different ports– I know that, but it’s not what I wanted.

My research lead me to this Microsoft knowledgebase article: http://support.microsoft.com/default.aspx?scid=kb;en-us;259349 which referenced IIS 5.0, but I assumed was relevant.  The crux of the matter is this:  “To enhance performance, IIS 5.0 uses “socket pooling”, in which IIS binds to all IP addresses when it starts.”  Yep, you read that correctly.  Regardless of the settings you made in the IIS console, it will bind to ALL available IP addresses.

The workaround in the article is as follows:

  1. Change to the C:\Inetpub\AdminScripts directory.
  2. Execute the following command: CSCRIPT ADSUTIL.VBS SET W3SVC/DisableSocketPooling TRUE

Apparently there are some differences between IIS 5 and 6, because this didn’t correct the problem.  Fortunately I was able to discover something that worked by browsing around a few other sites.

First, you need to install the Support Tools from the Windows Server 2003 cd.  This includes the httpcfg.exe tool, which is what you can use to force IIS to listen only on specific IP addresses.  After you have this installed (there is a start menu option that will open up a command prompt in the correct directory) here are the commands to make the fix:

  1. net stop http /y (This stops IIS)
  2. httpcfg.exe set iplisten /i 10.0.0.2:80 (You must specify the port! Or it will still steal them!)
  3. net start w3svc (Restart IIS)
  4. Start up Apache

I wasn’t able to find any documentation explaining why it didn’t work when I didn’t specify the port.  I guess IIS needs very specific rules when it comes to getting along with other HTTP servers.  I have yet to have this problem with IIS 7.0, mainly because I haven’t tried installing Apache on my Windows 2008 box.  When I try it, I’ll keep you posted as to whether this fix still works.  Or if it’s required… which I’m sure it is since it’s not a bug, it’s a performance enhancer.  I wonder if Microsoft’s STMP service uses a similar “mail enhancement” feature to grab all port 25s?

Categories : Apache Web Server, Cold Fusion, HTTP Servers, IIS 6.0, Windows Server 2003
Comments (0)
Dec
22

JUICE chat (Stratus Peer to Peer)

Posted by: jwd | Comments (0)

One of my ongoing weekend projects is an AIR chat application, recently rechristened “JUICE” a.k.a. “John’s Ultimate Internet Chat Experience”. I realize that may only be the case for myself, but the project has been very educational and entertaining for me.

The initial release used AIR/Flex as the front-end, ColdFusion and MySQL for the backend, and BlazeDS messaging for message transmission and “peer discovery”.  I worked on it over a couple weeks adding features like encryption, toast-style notifications, as well as a few other less notable things.

I knew the architecture was awful and would never scale beyond a couple hundred users (if that many). Here’s the basics of how it worked:

  1. The user would login, ColdFusion/MySQL would send back a list of chat buddies.
  2. Each logged in user would ping the messaging server every 10-30 seconds to announce “I’m still here!”
  3. The pings would be broadcast to everyone logged in (and connected to the messaging server). The application would filter out the ones it was interested in based on user id.
  4. Sending messages worked similarly, the user would send the message (which included information about the intended recipient), which would then be broadcast to EVERYONE.
  5. Everyone would filter this information, and the recipient would know it was for him, and would display it.

You can see why this would not scale well, the amount of traffic and pinging going on.  Eventually even a user with only 1 or 2 buddies would notice a significant drop in performance as the number of total users increased.  There are some applications of “chat” for which BlazeDS messaging and polling is well suited for (like a chat room).  A chat application involving “buddies”  is much better suited for P2P.

Enter Stratus.  I discovered Stratus a few months ago but was unwilling to delve into it on account of my hectic schedule.  Fortunately one of my friends went and did all the dirty work figuring out how to get it up and running (turns out it’s pretty easy) and I was able to apply it to my chat client.

I’m very pleased with the results, though it’s still very much a work in progress.  I’ve even been able to add video and voice chat features, which is why I went through the trouble in the first place.  Here is how my peer discovery mechanism operates.  It requires only 3 calls to the server per client (which I could easily condense to 2 if I wanted).

  1. The user logs in.
  2. If the user successfully authenticated, he connects to Stratus and receives his peer ID.
  3. The user updates his peer ID in the database (which was set to 0) and gets a list of his buddies and their peer IDs.  I also update information like whether or not I have a camera/mic.
  4. The user processes his buddy.  If the peer ID is something other than 0, then I know this buddy logged in before me, so I must send him my peer ID.
  5. Any buddies that have a peer ID of 0 are not logged in, I need to listen for them though since they will get my peer ID when they log in.
  6. When I log out or close the application, I call the server and reset my peer ID to 0.  I also notify all of my connected peers I’m logging out.

There are a few more steps in the process, but it decreases the load on the server significantly, transferring the “burden of proof” onto the clients.

Interesting to note is the way I get the peer ID of a client who connects after me (step 4).  I don’t actually have to make a call for this, rather he simply has to start broadcasting to me on the NetStream I set up to listen for him (step 5).  When the connection is made, an event will be dispatched by the NetStream class.  In fact, 3 events will be fired, I just chose to act on one of them.

The peer ID can be obtained from the peerStreams array on the publishing NetStream.  I then use that information to set up my subscribing NetSream.

if (this.peerId == null || this.peerId == "0") {
    this.peerId = publishNetStream.peerStreams[0].farID;

    this.subscribeNetStream = new NetStream(model.netConnection, this.peerId);
    this.subscribeNetStream.client = new NetStreamClient();
    this.subscribeNetStream.play(streamName);
}

Anyway,I’m planning on doing another post to outline my video and voice handshake protocols.  They’re nothing to write home about, but I’d love some feedback if there’s a better way.  I’m also planning on releasing JUICE after I bring it’s level of functionality back up to where the original version was, so stay tuned and you should see my install badge at the bottom of my blog.

Categories : AIR, Actionscript, Architecture, Cold Fusion, ColdFusion Enterprise Server, Flex 3, Messaging, Scalability
Comments (0)
Apr
22

Data Model Inpector (peek)

Posted by: jwd | Comments (0)

I recently built a console for inspecting arbitrary values contained in my data model.  I wanted something similar to the Flex Builder “Variables” window, and though I haven’t arrived there quite yet, I’ll share what I’ve got so far.

The mechanics are a little boring: I extended TitleWindow, there is a TextInput where I enter the value I want to inspect and a TextArea where the ObjectUtil.toString() dump of the object is output.

The heart of the control is this method:

private function peek(prop : String) : void {
  try {
    var a : Array = prop.split('.');
    var x : * = model;

    for (var i : int = 0; i < a.length; i++) {
      x = x[ a[i] ];
    }
    console.text = ObjectUtil.toString(x);
  }
  catch (error : Error) { }
}

It accepts a “modified-dot-notation” String, parses it, and constructs the result using model as the root.

I knew I was going to use the bracket operator.  In fact I started out spliting my tokens and accessing the values like this: model[ a[0] ] [ a[1] ] [ a[2] ]... and so on.  It wasn’t very scalable, which is why I was pleased with this method.

The interesting thing about it is that because ArrayCollections allow for use of the bracket operator, accessing elements of an ArrayCollection is simple.  Instead of "acName.list.source.2", you can pass the method "acName.2” and it returns the correct value.

Categories : Actionscript, Cold Fusion, Flex 2, Flex 3
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

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)
Oct
13

Error #2044: Unhandled IOErrorEvent; text=Error #2038: File I/O Error.

Posted by: jwd | Comments (4)

I started this post a few months ago while I was working on an AIR application that uploads files to a remote server (by way of an upload script).  I ran into this error, Error #2044: Unhandled IOErrorEvent; text=Error #2038: File I/O Error,  which caused me considerable grief until I discovered the simple solution.  I got the same error in an application I was working on today, and so decided to finish this post.

I looked up the problem when I first encountered it, and there seemed to be a consensus that the problem was due to using a bad URL for the location of the upload script.  That was actually the case for me today, so I was able to fix it right away.

When I encountered the problem a few months ago, you could say that it was from using a bad URL, but it was much less obvious.  I had written the upload script in ColdFusion, hosted on a CF server.  I was certain that I had the URL typed correctly because I could access it in my browser.  I discovered over an hour later that I had an authenticated session that allowed me to see it in the browser, a privilege not shared by the AIR app.

The problem was ultimately remedied by placing a special Application.cfc in the upload script’s directory that did away with the requirement for any session variables.  This particular case may have been due to a combination of the CF server’s settings and the fact that I was using AIR, and not a Flex app that might have been served from the same server as the upload script.

Categories : AIR, Actionscript, Cold Fusion, ColdFusion Enterprise Server, Flex 3, Uncategorized
Comments (4)
Sep
26

Book Review: Adobe Flex 3 Bible

Posted by: jwd | Comments (1)

Adobe Flex 3 Bible by David Gassner doesn’t contain anything ground breaking or spectacular, but overall I was impressed with both the breadth and depth of the book.  Granted, at roughly the thickness of a real Bible (978 pages including index), it would be quite a shame not to achieve some depth.

What I especially appreciated was the in depth treatment of data access in Flex, particularly when it comes to integration with an application server of some sort.  When I began learning Flex it was difficult to find documentation explaining how this was done, and was glossed over in the books I had in a very unsatisfying manner (even in my favorite Programming Flex 2, I’m afraid).  I had to mostly fend for myself by pouring through example code.  It took me about 2 weeks of concentrated effort before I was able to set up my own project to use FDS and JBoss.

Adobe Flex 3 Bible would have been a big time saver for me at that time.  It devotes over 200 pages explaining how to set up and use BlazeDS, AMFPHP, ColdFusion and ASP.NET for data access with Flex.  I was really impressed by this.  Not only is it good information, but it’s presented in a way that’s easy to understand.  I’d recommend this book to beginners on the basis of this section alone.

One of the cover’s bullet points state “Create desktop applications with AIR” and was a bit misleading.  There’s only a small section toward the back of the book that deals specifically with AIR.  It’s not technically incorrect though, because there are insights and information about developing AIR applications interspersed throughout the book (and considering how similar Flex development and AIR development are in terms of syntax, this is not surprising).  If you’re looking to jump right into AIR development and want all the details in one place, please don’t get this book for that reason.

Categories : Actionscript, BlazeDS, Book Reviews, Cold Fusion, Flex 3
Comments (1)
Aug
15

Training Videos

Posted by: jwd | Comments (2)

I created a new site where I hope to start posting screencasts of some of the training I’ve been working on.  Nothing great yet, but I hope I can build up a helpful library over time.  More than anything it helps me understand these concepts better.

URL updated. Well, here it is: http://flexplanations.com

You’ll need Flash player installed to view the training videos.  I should mention that I have a quad-core CPU, 4GB of RAM, and a 15Mbps internet connection, and they work fine for me.  I have noticed issues on my slower computers with slower internet connections.

Categories : AIR, Actionscript, Cold Fusion, Flex 2, Flex 3, Training
Comments (2)
May
17

Book Review: Flex Solutions, Essential Techniques for Flex 2 and 3 Developers

Posted by: jwd | Comments (0)

I first came across Flex Solutions, Essential Techniques for Flex 2 and 3 Developers, by Marco Casario, several months ago.  I was getting an itch to buy a new Flex book and this was one of the titles that turned up in my searches.  It received fairly high reviews at Amazon, but I was unimpressed with it when I browsed the contents for an hour at B&N.  I remember having a “been there, seen that” kind of feeling at the time—the result being that I decided against it at the time.

It happened this spring that I found myself starting an internship at Nike, and that I would be mostly working with Flex (UI) and ColdFusion (backend).  My ColdFusion experience is next to zero, in fact if you don’t count the simple change I made to a simple hit counter I made back when it was still Allaire ColdFusion—my experience IS zero.  I started looking into expanding my ColdFusion library, specifically as it relates to Flex, and my searches lead me once again to Flex Solutions.  For whatever reason, I decided in favor of this book, and I’ve been regretting it ever since.

Sadly the only ColdFusion covered in the book was the bare basics.  If that’s all there is to working with Flex and ColdFusion, and nothing more, then I’ve got it made this summer.  My job should be a piece of cake.  I don’t fault the book too much on this point, after all it’s not a ColdFusion book.  In my defense, ColdFusion is mentioned 3 times in the product description on Amazon, as in “How to use the ColdFusion Extensions for Flex Builder,” under the What You’ll Learn heading.  Sadly you’ll only learn how to install the extensions, you might gain a vague understanding of what they are.  With regards to how to use them, Casario provides this instruction:

You can learn more about the ColdFusion extensions for Adobe Flex Builder in the video tutorials at the following site: www.adobe.com/devnet/coldfusion/articles/wizards.html.”

The article is dated August 28, 2006;  I haven’t watched it but I can only guess that it will be more helpful than Flex Solutions.

This book falls into the same category as most of the other Flex books I’ve read, and that is the “jack of all trades” category.  That’s probably a great thing if you need to sell books, but if you’ve been working with Flex for over a year and are looking for a book to guide you to the next level, it’s a bad thing.  It’s as though the publishers can’t resist adding those one or two chapters with an introduction to Flex in them, as if leaving out those 50-100 pages would make the book less valuable a resource.  I expect to find that in a book titled Flex for Beginners/Dummies or An Introduction to Flex, but not in a book that aims to be a cookbook.

I would like to say two things in Casario’s defense with regards to that matter.  First, is that it’s not even remotely as bad as those Deitel & Deitel ‘XXX How to Program’ books, where the first 5000 pages explain what a computer is and how to use the world wide web.  Second, he does add an Expert Tips subsection to each recipe.  None of them are that profound, but I wish the publisher could have extracted all those out and offered it as a pocket book or something.

The conclusion is that I would actually recommend this book to someone who’s a little less experienced with Flex.  If you’ve gone through Adobe’s tutorials and you need a few tips to help you finish your “big” application,  I could see the contents of this book being very helpful.  If you’d already consider yourself an advanced Flex developer, you’ll probably end up thinking this book is a waste of money.  Next time I’ll go with my instincts.

Now for a bit more criticism of Flex books in general.  Perhaps I’m too demanding.  I think I may have purchased Programming Flex 2 (Kazoun & Lott) with perfect timing.  I was at the perfect position along my Flex learning curve, the book had all the information I needed and at the right level, and I loved the book.  So much in fact, that I’ve often considered buying the Flex 3 edition even though I know I probably won’t find much new material in it.  I still refer to it often.

I absolutely refuse to accept that I know everything there is to know about Flex and/or Actionscript, but Flex Solutions and most other books I’ve read on the topic have given me very little under the category of “things I don’t know yet”.  I skipped directly to sections with topics I wasn’t as familiar with, but found only the same information I had already seen or heard.  Perhaps when I’ve had time to go through the book more thoroughly my opinion may have changed.

In the meantime, would someone PLEASE write an ADVANCED book about Flex?  Or is that even possible?  Is Flex just one of those things where a book can only take you so far, and you have to find the road to mastery on your own?  I’d write it myself if I considered myself qualified, or if I felt inclined to spend my time writing a book.  I’d undoubtedly hate it too, for reasons I stated above.  Anyway, I’m expecting a copy of the Flex 3 Cookbook soon, which I’ve been anticipating for a while now.  I just hope it doesn’t let me down.

Categories : Actionscript, Book Reviews, Cold Fusion, Flex 2, Flex 3
Comments (0)
Apr
16

Starting To Learn Cold Fusion

Posted by: jwd | Comments (0)

I may be doing an internship this summer, at which I will begin developing back-end support for my Flex applicatiopns using Cold Fusion.  I may be posting on that in the future, depending on how it goes.  I just wanted to document two resources I will be using along this process.

The first is The Smith Project, which is an open source Cold Fusion server.   There is a version that install on Windows, one for Linux, and there’s also a WAR file that can be deployed on your J2EE server of choice.  I’ve installed it on an EC2 instance, but have been having a bit of trouble getting it configured (I need the Linux experience).

Download Smith binaries here
The second is CFEclipse, an Eclipse plugin that I have heard others speak very highly of.  I've installed it on my office computer, but haven't had time to try it out yet.  Here's the update site where Eclipse can find the plugin: http://www.cfeclipse.org/update.

We'll see how it goes.

Categories : Cold Fusion, EC2, Smith CF Server
Comments (0)

Search

Feedburner

Subscribe to

Get the latest updates delivered via email

Calendar

September 2010
M T W T F S S
« Jul    
 12345
6789101112
13141516171819
20212223242526
27282930  

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