As you may have seen on Ray's blog, today we released version 1.0 of the ColdFire ColdFusion Debugger. For those that don't know ColdFire is extension to the Firebug Firefox extension, similar to YSlow, only ColdFire displays ColdFusion debugging info. To use ColdFire you need to install a custom debugging template on your server (coldfire.cfm) then configure ColdFusion to use this template via the Administrator. (Detailed installation instructions can be found in the download.)
I just ran into an issue running the ColdFusion 8 installer on XP Pro in Parallels 3.0. When I first tried to run the installer I couldn't see the contents of the installer window. Turns out I had to stop the VM and change the video settings. I disabled DirectX support and custom screen resolutions was then able to see the installer with no problems. I had the same issue with CF 7 so it seems to be an issue with ColdFusion installer software and certain Parallels video settings.
So this week I had an experience with ColdFusion and ASP.NET that reminded me of why I love ColdFusion. I'm currently working on a project which has a pretty aggressive time line, the goal of which is to migrate some legacy data into a new ColdFusion system. The system has some fairly complex business logic so we decided that the quickest way to get the job done was to write an routine which submits data to the new system as a user would entering data into the application's forms. That way we wouldn't have to reverse engineer any business logic and incorporate it into SQL migration scripts. We also decided to try to leverage some of our .NET resources to help with this task.
I just got home from the on AIR Bus Tour and I have to say that Adobe has done a great job with this tour. The venue was awesome (The Franklin Institute here in Philly), the beer was cold, and the presentations were informative, at least for an AIR newbie like me. I'll admit that haven't had time to look into AIR so I wasn't really getting the hype. However, after tonight's presentations I'm pretty excited about the possibilities... Plus I won a copy of Flex Builder 2 with Charting, so I guess I have no more excuses for not learning Flex.
On my home computer, a MacBook Pro, I have a few Eclipse workspaces: one for ColdFusion development, one for Java stuff, and one for Firefox and JS development. I also run Windows XP under Parallels on this machine and I happen to share a few of these workspaces across platforms. (I'm sure this is not recommended, but hey...) One problem I've run into is that sometimes my Eclipse window gets "stuck" under the menu bar in OS X. This will happen if I've moved my Eclipse window to the top of my Windows screen, close the workspace, then open the workspace in OS X.
When this happens there are two ways to solve the issue. One way is close the workspace in OS X, reopen it in Windows, then resize the window so that it is not at the top of the Windows screen. Sometimes though, I don't have my Windows VM running and I don't feel like starting it up. On those occasions I open the [my_workspace_folder].metadata/.plugins/org.eclipse.ui.workbench/workbench.xml file and modify the following element (near the top of the file):
I can change this to something like:
I then save the file and re-open the workspace in OS X and I'm able to move and resize my Eclipse window as needed.
I don't run into this issue as much now that I'm aware of it, but it really stumped me when I first encountered it so I though it was worth sharing.
With the CFMX 6.1 reaching its end of life my company is in the process of upgrading ColdFusion. Unfortunately Adobe chose to EOL CF 6.1 before CF 8 was released, so my company began the upgrade process to 7.0.2. (I'm going to do my best to convince the powers that be to upgrade to 8, but that may be difficult given that it is brand spankin' new.)
Anyway, we have been running 7.0.2 on our local development boxes for the past month or so and we have only really hit one issue; that issue has to do with the QuerySetCell function. In ColdFusion 7 and 8 the QuerySetCell function does type validation. What does this mean? Well CF 6 wouldn't complain if you tried to set a numeric column to a text value like so:
ColdFusion's built in server-side form validation often gets a bad rap, but this
past week it really came in handy. For those that don't know, ColdFusion can do
certain types of server-side validation depending on how you name your form
fields. All you need to do to trigger this validation is add a suffix to your
form field name. Here are the available validation options:
This is something that drives me crazy. The other day I needed to debug a problem report so I asked the developer to send me SQL he was using to generate the report. The SQL looked something like this:
On Sunday Ray quietly released version 0.0.6 of ColdFire. With this version, the ColdFire extension actually modifies the user agent by adding "ColdFire/0.0.6" to the end of the string. This allows the coldfire.cfm debug template to check the user agent header for this string and only return debugging info if it is present. This means you shouldn't encounter much debugging overhead if you don't have ColdFire installed or if you choose to disable Firebug for your site. ColdFire only modifies the user agent header if Firebug is enabled.
While this may seem like a minor update it actually involved some major changes to the FireFox extension code. The biggest change was the addition of an XPCOM object to handle the request header modification. Compiling an XPCOM typelib requires the Gecko SDK and unfortunately there isn't an Intel Mac build of the SDK. While I could have tried to build it myself, in the interest of time I ended up switching to my PC for extension development. Even then, building the typelib wasn't exactly straightforward. If you find yourself trying to build a XPCOM component on Windows you may find the following helpful: Find xpidl.exe in Gecko SDK for compiling IDL files.
Anyway , enjoy and look for more ColdFire updates soon.
We all know that showing raw error messages to end users is a bad idea. The easiest way to get around this in ColdFusion is to add a site-wide error handler in the ColdFusion administrator. Another option is to use ColdFusion's cferror tag to display a custom page when an error occurs. One thing you may not think about however is returning a proper HTTP status code from your error pages. This really bit me over the past few weeks so I though I'd share a little about what I've learned.