Viewing By Month : August 2003 / Main
August 29, 2003
Now that there are some items for ColdFusion MX 6.1, it makes sense for me to mention the ColdFusion Hot Fixes Tech Note on the macromedia.com support site. You'll find updated JDBC drivers and a fix for the CF Admin with SSL, amongst others.
Tomorrow morning I fly to Vegas for the 4th annual Fusebox Conference with Mach II on Monday. I hope to be blogging from the conference - the hotel rooms have Internet connectivity but I'm not sure about the conference rooms themselves. I'm taking my D-Link DWL-900AP+ WAP as an experiment since I'll be sharing a room with a wireless-equipped colleague (who is already using Mach II for a soon-to-be-production application!). It should be an interesting conference.
With all the talk of Mach II, I figured it would be worthwhile blogging a list of some of the other frameworks (and methodologies) available for ColdFusion. This list is not meant to be exhaustive but it covers all of the ones that I have read at least something about:
- OnTap by Isaac Dealey. A very interesting approach that covers documentation as well as code is based on a rich API (Tapestry API).
- FarCry by Daemon. Technically this is a CMS - Content Management System - but you can build quite sophisticated applications quite quickly with it.
- Fusebox Open Source aka Shared Open Source (SOS) by John Farrar. There's really not very much information available about this one yet but it's been under development for quite a while.
- Fusebox 3 and Fusebox 4 by Hal Helms et al. Fusebox is the most widely used framework for ColdFusion and is - proportionately - as successful in the ColdFusion world as Struts has been in the Java world.
- MVCF by Benoit Hedard. This is more of a methodology than a framework but it does provide a solid set of code idioms to work with.
- MXF aka MX Framework by Murat Demirci. This has just entered beta testing so very little information exists about it yet.
Since I posted my Mach II sample application, a few folks have commented that the
/?event=... URL format doesn't work reliably with Internet Explorer so I have changed it to /index.cfm?event=... which, apparently, IE accepts. Silly IE!
August 28, 2003
Microsoft is locking third parties out of its MSN Messenger service on October 15th by changing the service so that only its latest version of the official MSN Messenger can connect. I use Fire which is a multi-service chat client for Mac OS X so I'll be locked out. I signed on just now and messenger@microsoft.com sent me an unsolicited message warning me that my client needs an immediate security update (and pointing me to the Microsoft website). I guess I'll stop using MSN and recommend my (few) MSN contacts migrate to AIM instead (to which iChat can connect).
Read more about it on: InfoWorld, Mac Central News, Beta News, Silicon News.
Read more about it on: InfoWorld, Mac Central News, Beta News, Silicon News.
August 26, 2003
August 25, 2003
There's a short, pertinent article in the Washington Post about why the Blaster worm and SoBig virus were so successful in targeting the millions of Windows machines out there...
August 24, 2003
macromedia.com has a new look and feel as well as announcing the new MX 2004 versions of Dreamweaver, Flash, Fireworks and Studio. On September 3rd you can be among the first to see the new products in a Breeze Live presentation that connects over 150 user groups.
I've posted some bug fixes for the Mach II core files that correct some minor issues in the initialization of the framework. I've also posted a sample application, MachWiki, which is a simple wiki application. You can download the ZIP file but you need to fix the core files first since MachWiki relies on the fixes!
August 21, 2003
Someone signing themselves ShermB (no reply address) sent me this note:
I'd update my 'anatomy' page but my ISP's ftp service is down right now...
"I believe there is a typo in Mach-II's documentation and config files. The following config file properties should be changes as follows:Sherm appears to be correct: the framework code uses
eventVariable --> eventParameter
argumentsPrecedence --> parameterPrecedence
eventParameter and parameterPrecedence (which are more accurate names) but the documentation (and the sample application mach-ii.xml) refer to eventVariable and argumentsPrecedence. I'd update my 'anatomy' page but my ISP's ftp service is down right now...
I had completely missed a very useful enhancement added in CFMX 6.1 until I saw Ray Camden's blog entry about it. Folks have often bemoaned the fact that you can't write:
Try that on CFMX 6.1 and you'll see it works!
<cffunction name="func">
<cfargument name="arg1" type="string" />
<cfscript>
var x = 0; // rest of my function </cfscript>
</cffunction>
Try that on CFMX (6.0) and you'll get an error because <cfargument name="arg1" type="string" />
<cfscript>
var x = 0; // rest of my function </cfscript>
</cffunction>
var
could only appear in cfset
tags immediately after cfargument
or if the entire function was written as script (and then variables were declared with var
at the top of the function). Try that on CFMX 6.1 and you'll see it works!
August 19, 2003
Timely to see Sue Spielman rage against outsourcing after Adam Howitt asked a similar question. I'm with Sue on this - there are some (a few) IT jobs that you can successfully outsource abroad but in general you need the 'face' time and easy communication that local, native language speakers bring. My experience, over twenty years in IT, is that outsourcing - even to a fairly local third-party agency - creates a burden of management and introduces a communication time lag that ultimately outweighs any apparent cost savings.
Someone pinged me this morning complaining that my site didn't print well. They were right. The styles I use make the pages look good on screen but don't lend themselves to printed output. I'd heard of folks using an alternate style sheet for printing but didn't really know how to do it. A quick Google turned up this simple article on Web Design School Review that provides the bare outline needed.
I made a copy of my regular style sheet and edited it to remove the top nav and left nav (by setting visibility to "hidden") and then resized and repositioned the main content
That's active right now on the Fusebox parts of this site. I'm just about to modify the blog template to make it active there too so it'll be easier to print the blog!
The print style sheet has been added to the new blog templates. It is not present on the catgory archives yet nor on the monthly archives prior to July.
I made a copy of my regular style sheet and edited it to remove the top nav and left nav (by setting visibility to "hidden") and then resized and repositioned the main content
div. Then I added a new style sheet link tag and annotated both links with the media attribute to specify "screen" or "print" as appropriate. That's active right now on the Fusebox parts of this site. I'm just about to modify the blog template to make it active there too so it'll be easier to print the blog!
The print style sheet has been added to the new blog templates. It is not present on the catgory archives yet nor on the monthly archives prior to July.
August 18, 2003
Some years back, I was interested to read a white paper by Jim Conallen about modeling web applications using UML. I actually went to the trouble of extending the CASE tool I was using to allow me to create web application diagrams in UML so I could model forms and server-side includes and so on. Since then, I hadn't really thought much about the subject since it didn't seen to be getting much public love, so to speak.
My interest was piqued again just the other day when Judith Dinowitz (editor of Fusion Authority) asked me if I'd heard of WebML (that link seems a bit unreliable) - a modeling language for web applications. I had, but only really in an academic context. It reminded me of the Conallen white paper so I did a little searching. Jim Conallen moved to Rational, which then got bought by IBM. I found the Modeling Web Application Design with UML white paper (from 1998) which started my interest. It still makes interesting reading and, I suspect, is still somewhat ahead of its time - most web application development happens without much upfront software design and certainly without the sort of rigor that is typically behind UML.
My interest was piqued again just the other day when Judith Dinowitz (editor of Fusion Authority) asked me if I'd heard of WebML (that link seems a bit unreliable) - a modeling language for web applications. I had, but only really in an academic context. It reminded me of the Conallen white paper so I did a little searching. Jim Conallen moved to Rational, which then got bought by IBM. I found the Modeling Web Application Design with UML white paper (from 1998) which started my interest. It still makes interesting reading and, I suspect, is still somewhat ahead of its time - most web application development happens without much upfront software design and certainly without the sort of rigor that is typically behind UML.
August 17, 2003
I've been asked this question a few times so I've written up my answer on a new Mach II page. I've also added some information about the Mach II request lifecycle to the concepts page.
August 16, 2003
The Mach II forum has been surprisingly quiet so far - perhaps folks don't know it exists? It's also available as an RSS feed.
August 15, 2003
If you're having some problems figuring out how the Mach II framework hangs together, I think this anatomy of a sample application page will help.
Segue have just announced SilkPerformer 6, the latest release of their comprehensive load testing tool, which now provides the ability to load test Web Services, J2EE components and Oracle OCI applications as they are built, without needing a client application. This allows you to perform load tests as you build your applications rather than having to wait until near the end of the development cycle!
August 14, 2003
Sandra Clark has made available some tools and extensions for Dreamweaver MX and HomeSite+ (and ColdFusion Studio) that make it easier to write Fusedocs and the Fusebox 4 XML files.
Techspedition now has some sample chapters available from "Discovering Fusebox 4" by John Quarto-vonTivadar et al. The three chapters cover the XML files and the grammar as well as the memory structure of a FB4 application.
Sign up for Macromedia MAX 2003 before September 12th and you'll save $200! I've already mentioned how much there is on offer for ColdFusion developers.
There is now some official documentation (PDF) on the Mach II website.
Meanwhile, I've made some more additions to my Mach II section which now has Getting Started, Concepts and a fledgling analysis of the ContactManager sample application.
Meanwhile, I've made some more additions to my Mach II section which now has Getting Started, Concepts and a fledgling analysis of the ContactManager sample application.
August 12, 2003
The 1.0 release of Mach II is now available for download from the Mach II website. There are two new sample applications (Roulette and ShoppingCart) as well as an updated version of ContactManager.
Sorry my blog has been a little 'slow' lately. I took the day off on Friday to go to General Motors' "Autoshow In Motion" to test drive a bunch of cars (including a Hummer H2 and a Corvette!) and then on Monday I was at an all-day offsite meeting.
After last week's flurry of activity around the ColdFusion MX 6.1 launch and the new online store, it was good to have a little down time!
The H2 is so capable off-road that it's downright boring. I much preferred my old Jeep Wrangler! The Corvette was a blast - same power as my modified '94 Mustang Cobra but with much better handling! The overall winner for the day tho' was the new Honda Civic which confirmed that when our current (15 year old) Civic dies, we'll definitely buy another one!
Normal service will be resumed soon...
After last week's flurry of activity around the ColdFusion MX 6.1 launch and the new online store, it was good to have a little down time!
The H2 is so capable off-road that it's downright boring. I much preferred my old Jeep Wrangler! The Corvette was a blast - same power as my modified '94 Mustang Cobra but with much better handling! The overall winner for the day tho' was the new Honda Civic which confirmed that when our current (15 year old) Civic dies, we'll definitely buy another one!
Normal service will be resumed soon...
August 8, 2003
Well, I just registered for the Fusebox 2003 Conference in Las Vegas over Labor Day weekend. It should be an interesting few days with a chance to meet and greet a lot of 'names' as well as hear about the final releases of both Fusebox 4 and Mach II, the latter of which we are starting to use on a few projects internally.
See y'all there?
See y'all there?
August 7, 2003
Last night we integrated the new LiveDocs system into the search framework on on main site. Searches on both www.macromedia.com and livedocs.macromedia.com will now return results from within the online documentation! Try this search for regular expression functions!
Someone emailed me via the website and forgot to provide their reply-to address so I'm taking the opportunity to respond here:
"I've just taken notice on xforms. I can't find any entries on it. I need your advice on xforms with cfmx.I know very little about XForms at the moment so I can't really answer the question so I'll open it up to the readership. I will note that the fledgling Flash-based DENG browser can render XForms and is available for both Mac and Windows. I expect the DENG project will provide a good, cross-platform rendering engine for XForms.
How to use xforms on cfmx? I use FormsPlayer (an IE xforms plugin) to render an xforms page and post to cfmx. How do I catch the xml instance from xforms submission?"
August 5, 2003
CFMX 6.1 fixes hundreds of bugs but I'd like to go over a few of my favorites:
- 45481 The Migration Wizard was unable to run if browser pop-windows were blocked.
Since I run Safari with Block Pop-Up Windows enabled, this caught me out time and time again whenever I was upgrading servers. I'm very pleased to see the initial migration run all in one window! - 48012 The
cfhttptag failed to time out. A timeout error was returned only after the called URL timed out. No timeout was returned if the called URL did not complete.
I wrote a utility to analyze and validate URLs stored in a database and the failure ofcfhttpto timeout properly made the utility a real pain to use because there were so many out-of-date URLs in the database. I can now validate the database in minutes instead of hours! - 49189 The
cfimporttag did not use cfmappings to look up folders.
Although I haven't personally run foul of this bug, I know quite a few people who have - they'll be pleased to see it fixed. - 49851 When looping over a
cfhttp get, only the first file was retrieved successfully.
This is another bug that caused me problems with my URL validation utility. I worked around it by putting the call tocfhttpin a CFC and usingcfinvokeon that. I can now go back and cleanup my code substantially! - 34762 A
cfincludetag used in acffunctiontag did not inherit access to the Arguments, local variables, and This scopes.
This made it almost impossible to break up large CFCs by placingcffunctionbodies in included files. - 38118 Variables set in the
variablesscope in components were not available in the unprefixed scope.
45138 There was an overlap between thevariablesscope of the calling page and that of the CFC.
These two bugs were the root cause of the unnamed (non-public) scope brouhaha and the common idiom of creating a struct calledinstancein the pseudo-constructor to represent the non-public data in a CFC instance. No more! Now we can usevariablesscope for non-public data and avoid the hackery!
cfoutput, cffile and access other shared scopes. I've already said that I think such practices are generally questionable but there are a couple of situations where this makes an important difference. One example is Mach II which caches the framework CFCs in application scope and now, with CFMX 6.1, you can program Session Façade CFCs that will work properly with the framework.
Rob Brooks-Bilson has great explanation of how the basic scopes work in CFCs posted on his blog. He covers variables scope, this scope and local var scope.
He also posted a very good summary of the enhancements in CFMX 6.1.
He also posted a very good summary of the enhancements in CFMX 6.1.
Along with the new product release there is a wealth of great new articles about CFMX 6.1 on DevNet:
- Making a Good Thing Better by Ben Forta introduces ColdFusion 6.1
- Performance Under The Hood by Jim Schley explains the improvements in the compilation process
cfmailImprovements by John Cummings talks about the various enhancements to the mail tag, including the 1,000,000 messages per hour capability of the Enterprise Edition- Multiple Server Instances by Tim Buntel explains the benefits of the J2EE configuration which allows you to run multiple instances of ColdFusion on a single server
Another big change in ColdFusion MX 6.1 is the compilation process.
CFMX (6.0) compiled
By contrast, CFMX 6.1 compiles
Another side effect of the compilation process overhaul is vastly improved runtime performance...
CFMX (6.0) compiled
.cfm and .cfc pages to .java files and then ran the Java compiler to convert those files into .class bytecode files which were then loaded and executed. The result was a big hit on the first access to a modified file, which could be fairly annoying during development and led to several folks using a precompile batch script when deploying to production. By contrast, CFMX 6.1 compiles
.cfm and .cfc pages directly to bytecode in memory (with the option of saving the bytecode to disk as .class files), ready to be executed. That makes the first access pretty fast, improving developers' lives dramatically! Another side effect of the compilation process overhaul is vastly improved runtime performance...
The ColdFusion MX 6.1 LiveDocs are now available (when you install CFMX 6.1, it gives you that URL). The first thing you'll notice is that the new docs include breadcrumb navigation so it's much easier to find your way around. The next things you'll probably want to read are the new tags / attributes and new functions pages. Yet more reasons to upgrade!
August 4, 2003
One of the major changes, from an installation point of view, in the latest release of ColdFusion MX is that the CFMX for J2EE and CFMX Server installers have been combined. You download one installer and then you have the option of:
Note: on Windows, you will need MDAC 2.6 SP2 or later installed before you install ColdFusion MX 6.1.
- Installing Server Configuration
- Installing J2EE Configuration (ColdFusion MX with JRun 4)
- Installing J2EE Configuration (EAR/WAR file)
Note: on Windows, you will need MDAC 2.6 SP2 or later installed before you install ColdFusion MX 6.1.
Quite a lot of people feel it's good practice to define an
If your CFC extends another one, your
Of course, you can use
Note:
init()
method in every component to initialize each instance: <cffunction name="init" returntype="my.cfc.type">
... initialize the instance ...
<cfreturn this />
</cffunction>
Then you can use it like this: ... initialize the instance ...
<cfreturn this />
</cffunction>
<cfset obj = createObject("component","my.cfc.type").init() />
Notice how init()
returns the entire object to make it easier to call it when you create the component instance. If your CFC extends another one, your
init()
method needs to call the parent init()
method first. But how do you do that? As of CFMX 6.1, you can write this: <cffunction name="init" returntype="my.cfc.type">
<cfset super.init() />
... initialize the instance ...
<cfreturn this />
</cffunction>
The method now begins by calling <cfset super.init() />
... initialize the instance ...
<cfreturn this />
</cffunction>
super.init()
which refers to the parent CFC's init()
method. Of course, you can use
super
to call any of the parent CFC's methods but this is probably the most common usage you'll see. Note:
super
is only available in CFMX 6.1 - upgrade today!
Several people have already noticed that the CFMX 6.1 upgrade is available for download on macromedia.com, even though the official announcement has not been made yet.
The FAQ explains many of the changes in the new edition and the What's New? presentation goes into yet more detail.
The FAQ explains many of the changes in the new edition and the What's New? presentation goes into yet more detail.
I've talked about the Elastic Satellite newsletter a few times in the past and Invioni have decided to make all the issues available online as HTML. You can now browse by issue or author and then by article. Very convenient!
August 1, 2003
Today, we launched a new version of the LiveDocs system. There's still a few glitches to iron out in the visuals and navigation but we wanted to get it out there and get some feedback. A couple of the big changes are: updated look'n'feel to match macromedia.com; removal of the global navigation from the actual documents (so now LiveDocs manuals look like regular HTML documentation!); integrated the "add comment" login with macromedia.com membership.
We migrated all of your old comments to the new system. We added redirects to allow the old
You'll probably also notice that all the LiveDocs pages now end in
I'd like to thank some key members of the team that made the new system possible: Randy Nielsen whose vision created the original LiveDocs system and drove the requirements for the new system, Vijay Shah and Savio Cyriac who worked tirelessly on the all-new application code and Syed Kasim who was QA lead for the project as well as our DBA, Network and Unix teams in IT Operations (especially Perry Wagner who worked late into the night to ensure all the necessary Apache magic happened on time).
Feel free to provide feedback here via comments.
We migrated all of your old comments to the new system. We added redirects to allow the old
.jsp-based URLs to continue working. Hopefully, we got it right! You'll probably also notice that all the LiveDocs pages now end in
.htm (or .html) and yet comments are still dynamically rendered. The new LiveDocs application is a combination of Java Servlets and ColdFusion, running on the same clustered environment that powers the main macromedia.com website. I'll write up the architecture of LiveDocs shortly and explain why we made some of the changes. I'd like to thank some key members of the team that made the new system possible: Randy Nielsen whose vision created the original LiveDocs system and drove the requirements for the new system, Vijay Shah and Savio Cyriac who worked tirelessly on the all-new application code and Syed Kasim who was QA lead for the project as well as our DBA, Network and Unix teams in IT Operations (especially Perry Wagner who worked late into the night to ensure all the necessary Apache magic happened on time).
Feel free to provide feedback here via comments.



