Friday, July 11, 2003

Check out my new blog, bluedragon.blog-city.com

Folks, after posting here at cfmxplus.blogspot.com for over a year, I've now created a new blog, http://bluedragon.blog-city.com. While it's focused primarily on BlueDragon (given my role as CTO of New Atlanta and chief evangelist for BlueDragon), it will of course offer tips of value to all CFML developers. As such, I'll not likely be updating this blog too often anymore.

But I will leave it for posterity, since I know it's linked to by so many. And it's also rich with hundreds of valuable CFML tips (of value to both CFMX and BlueDragon and even CF 4/5 developers). So enjoy it, and if you like the kinds of tips I offer, come on over to the new blog.

I'll add that the blogging tool there at blog-city.com (which happens to run atop BlueDragon I might add) is really well done, and there are lots of features there that I didn't have here at blogger/blogspot, including a calendar interface and lots more.

Indeed, with the ability to group/categorize blog entries, I'll be able to mark which blog entries are of generic value to all CFML developers, so that you can (if you're bent on it) ignore the BlueDragon posts. Still, I'd hope you'd go ahead and read those BlueDragon posts. It's a really cool environment and a great solution to many problems for CFML developers. Since you can run both CF and BD at the same time, why not give it a try?

And for those of you who've bookmarked CFMXPlus, or who are getting RSS feeds, please consider doing the same with the new blog. I think you'll find it worthwhile. I tell you how to get the RSS feed in one of the blog entries, and I'm working to make it still better than it is at present.

And I'll "see you on the flip side".

/charlie

Friday, June 06, 2003

Having problems with CFMX not starting on reboot?

Lots of folks (myself included) have reported problems with CFMX not starting when we reboot our machines. Indeed, there has been a vigorous discussion of the issue on CF-Talk June 6 (tried to publish this blog item then but for some reason it didn't take).

Anyway, Dan Switzer offered a solution that has worked (most of the time) for me. See his blog entry of 4/17/03. Great stuff, Dan.

Wednesday, May 21, 2003

Various caching articles at MM CF support site

I also just happened along a page at the MM CF support site that lists several articles focusing on various ways of doing caching in CFML. Check it out.

Supporting Trusted Connections for SQL Server in CFMX

Someone asked me at the MXOnTheRocks event last week how to support use of trusted connections in SQL Server. I'm sorry I can't recall who it was, and at the time I was not aware of a solution, but I happened upon a technote on the very subject today. In case it interests him or others, see Enabling Microsoft SQL Server trusted connections.

Tuesday, May 13, 2003

"ColdFusion MX Bible" getting great early reviews

Folks, some of you know that I was a co-author of the new ColdFusion MX Bible, from Wiley (the same folks and in the same style as the JavaScript, Flash, and other Bibles), along with my esteemed colleagues Adam and David Churvis and Hal Helms.

There have been some very good early reviews at the Amazon site for the book. I'll admit I've been reluctant to say much about it since (like a movie) you never really know how such things will turn out once through production. I've still not been able to read it yet myself (publisher has been held up in delivering our review copies, and it's too new to be in many bookstores). I was, of course, worried that perhaps the world didn't need "yet another CF book". The reviews here suggest that we may well have struck a chord in the otherwise crowded market.

With many other excellent books by folks I admire and respect, that word from the reading public is certainly very heartwarming to hear. Then again, we can't judge the overall reaction by just these first couple of reviews. I know we can't have pleased everyone. But I thought I'd share this word of early good news. If you're looking for a book on CFMX and more (just like the name of this blog), check it out.

Saturday, May 03, 2003

How to enable secure FTP login from Dreamweaver MX

Need to support SSH enabled secure FTP access from Dreamweaver MX? You can, integrating either MacSSH or PuTTY for Windows, to allow for SSH enabled secure transfer of login information. To learn more, see the Macromedia TechNotes on secure FTP for Mac users and for Windows users.

Monday, April 14, 2003

I've accepted a new position as CTO of New Atlanta, to Evangelize BlueDragon

By now you may have heard that I've accepted an offer to take on the role of CTO for New Atlanta, the folks who make Blue Dragon, an alternative for running CFML on J2EE and .NET platforms. I know that this news will shock many, but after watching the company for a year+ and seeing the great strides they've made, it was hard to ignore them.

If you're not familiar with BlueDragon, I'll point you here to various resources to help get you up to speed. But for those who are already familiar with them, or haven't looked at what they've been doing recently, here's what I saw that I liked a lot:

  • their J2EE deployment capability is more straightforward and streamlined than Macromedia's CFMX for J2EE
  • their upcoming .NET deployment capability is truly unique, the only way to natively integrate CFML and .NET applications
  • those two products help solve important problems for organizations being forced to move off of Macromedia ColdFusion and/or unwilling or unable to move to ColdFusion MX
  • their base server version is offered free for development AND deployment
  • the CFML implementation is very close to being completely compatible with CF5
  • support for CFMX tags and functions is in development
  • their responsiveness to customer (and prospective customer) requests has been superlative
  • I could go on

I think they've got a great niche. The goal isn't to take business from MM, but instead to catch business that would have left MM, for clients being told to move off of CF. Now they don't have to, and BlueDragon can give them greater integration options.

Two of the New Atlanta partners (it's a privately held company) have long wished to have me as their evangelist, and I'd kept them at bay for a variety of reasons. But they finally made me an offer too good to refuse, even making my independent training and consulting pursuits not as attractive. I really look forward to the challenge of helping spread the gospel for them, and helping people see BlueDragon (and the future of CFML) in a new light. Of course, those who know me know that it's what I'm built for! :-)

Of course, some will ask why Macromedia never gave me any sort of position even approaching this. I did apply for the community manager job, both times, but was not selected (despite support from inside various quarters at Macromedia). And while I've been named to Team Macromedia and the Customer Advisory Board, both of which I am honored by, those were not positions that I could really leverage for profit in my business. They were certainly ways for me to continue to give back to the CF community that I've served for 6 years. And I plan to continue to do that in this new role.

I've put together a FAQ to answer what I think will be some common questions both about BlueDragon, my move, and its impact on various activities I'm involved in. I also welcome your feedback at Charlie@NewAtlanta.com. (Carehart@systemanage.com still works.)

Thursday, April 10, 2003

Have you got the google toolbar?

This is indeed off the subject of CF, but since we so often are doing searching on google to help us in our day to day work, I thought you may appreciate this info. Are you using the Google toolbar yet? It's at (http://toolbar.google.com/). It's really nifty and offers several benefits.

First, and most straightforward, is that it adds a google search prompt to your browser toolbar. Sure, you can monkey with most browsers to make them use google as the search engine, but that's not all. Besides just making it drop-dead easy to do searches really quickly with google (type in the words and press enter to search the web), the toolbar adds another useful option that I find I use everyday. If you study the google search options, you'll find that one option is to use the "site:" keyword to name a domain in which to limit searches. Well the google toolbar has that as a button:



Makes it really easy when visiting a site to say, "where do they discuss x?"

There's still more. Check out the news, page rank, page info, and other links that provide additional google-oriented info on whatever page you're looking at.

There are a few other elements of that toolbar that aren't really google-search oriented at all. Just neat additions useful on any page you browse. First, the "up" button is also frequently useful, if you're looking at a page and want to see the directory above it. No more editing the url to remove the filename. Just click "up". Of course, not all pages will have something useful in response to that, but when it makes sense, it's a really useful addition (that technically has nothing to do with google).

And those last two buttons in the toolbar above are a way to highlight words on the page that you've used in the search field of the toolbar. And technically, it doesn't matter if you did a search and are looking at google results or just looking at any page. By typing words into the search field, these last two options allow you to find the words on the page you're looking at. The first, called highlight, literally changes the colors of the text in the found page to highlight the searched words in yellow. Again, this is not about looking at a google "cached" version of the page. It will work on any page.

They've just found a way to modify the display of the page even though it's the showing the page as found using its original HTML (magic?). And the last button (tahiti in the example above) is actually going to be the word (or each word) that you typed in that search field. Clicking it will instead jump down in the found page to show you were the word occurs. Both quite useful (though I don't use either as often, myself).

One other thing it adds is a right-click context menu to any link on any page in the browser (again, whether the page is found via google or not). It offers 4 features for the page that the link is pointing to:

- backward links
- cached snapshot of page
- similar pages
- translate page

Those are 4 very interesting options! Of course, each is something you can request using google keywords, if you know how. But most tend to think of google only for searching, rather than for these kind of page-oriented manipulations/analyses that are possible . Check 'em out.

Here's one very practical application: some may already know about the "cached snapshot" option because when you see results from google, one of the options is to link not to the page itself but the cached version. this is useful when either the page has changes, or been removed, or the site is dead (it's how I got hold of Vern Veihe's blog as discussed in a previous blog entry here, even though the front page of his site now shows it to no longer have links).

But another use is when a site is temporarily down. You can go to google, do a search, and see the cached version. One of the mild annoyances of that, though, is that the links off the page all go back to the original site, so if the site's down (or you know the pages in the cached version are no longer really there), then in this case you'll want to see the cached versions of each link. That's what the "cached snapshot" right-click context menu option comes in really handy.

Check it all out!

Monday, April 07, 2003

Resolving the change in Updater 3 that disables web services from Flash Remoting

In my article (and in the release notes) about Updater 3 you'll find that one of the big changes is the disabling by default of support for calling web services from Flash Remoting by way of your CFMX Updater 3 server. This is not about calling web services on that server itself from Flash (because you'll typically call the CFCs directly instead), but more about the fact that you could call any web service at all from Flash by way of the remoting gateway in your (or anyone's) server. But if you do want to re-enable that feature, you can. See the new technote at http://www.macromedia.com/support/coldfusion/ts/documents/enable_flash_webservices.htm/

Highlights of what's new and different in the CFMX Updater 3

Folks, for those interested in an overview of what's new and different in the new CFMX updater 3 (discussed in a few recent entries here), I've put together an article for the May CFDJ. Until that comes out, you can read a preview of it at my "previews" site. There's really quite a lot to this updater and some changes that may surprise you. Indeed, even the previous two updaters may have made changes you didn't know about. I highlight those as well. In fact, if you don't know what release you're running, see the code offered there for telling you.

BTW, if you visit the page and the article, "CFMX Updaters, 1-2-3", is no longer there, it's because it's now available online and as I point out on the previews page, you can find all such articles at http://www.systemanage.com/articles/.

Friday, April 04, 2003

New resources for learning about XML processing in CFMX and CFMx error handling

Interested in learning more about XML processing and error handling in CFMX? Simon Horwith has posted a chapter on each of these subjects from a book that didn't get published. See http://www.how2cf.com/.

Thursday, March 27, 2003

Some big announcements from MM in the flash world toda

There were some big announcements from Macromedia in the Flash world today:

Flash Comm 1.5 is available: many improvements, biggest news may be free developer edition (finally) and http tunneling (ability to communicate over port 80 to get around firewall issues)
- http://www.macromedia.com/go/commserver/

Flash on Pocket PC 2002
- http://www.macromedia.com/go/fp6_ppc/

New Product/Service/Concept: Macromedia Central (visit the site, read the whitepaper, etc.)
- http://www.macromedia.com/go/central/

Tuesday, March 25, 2003

Want to access your PC remotely (or from another machine in your firewall)? Free?

You may have heard about tools like GoToMyPC, or PCAnywhere, or LapLink to be able to access one PC from another, but I just learned of a free tool that's cross-platform. You may want to access a machine remotely (like your home machine when you're on the road or in your office) or even just within your network (such as to access a Linux box from your Windows workstation, or vice-versa), or as in my case I simply wanted to be able to access my main workstation from my laptop within my home/office network. Of course, Windows XP also offers a Remote Desktop feature as well, but both machines have to be XP (I understand).

I just learned of RealVNC (also sometimes called WinVNC, but it's definitely for more than Windows). It's free, at realvnc.com, and it worked flawlessly. Since I'm only using it within my firewall, I'm not too worried about any security risks. It operates on its own port, and offers various forms of mild security who might choose to open that for access from out on the net. Of course, some may want to carefully review the docs about security and other settings.

But the bottom line is that within 2 minutes, I was able to install the server on the workstation and the "viewer" on the laptop, and I was reading email on the workstation's Outlook while sitting in front of the TV watching my Alma Mater in the NCAA tournament. Hurray! :-)

And if I wanted to setup a Linux box now, I could easily access it just as well. Or a Mac. And either of those can be clients, as can a Palm or WinCE client (see the diagram depicting this).


Here's an update on 3/26: take note that, for the downloads of the Windows Client at least, the exe offered is the real program, not an installer program. What I mean is that if you click on it to download/execute it, it will run but if you're not paying attention, when you close it (or restart your machine), you'll find that it's not installed anywhere on your machine! (It was executed out of a temporary directory on your machine.) You need to instead save it to someplace in your file system (like c:\program files), and then setup a shortcut in your Start Programs or desktop in order to run it again. Actually, the server is an installer and does do all that. Curious that they chose to not go that route for the client. There is a zip file offered as well, but it's got just the same executable so you have the same dilemma if you simply run the client program from within the zip file. Just trying to save you the hassle I experienced.

Wednesday, March 19, 2003

Updater 3 requires recompilation of all templates: be aware of a few things, and here's a better compiler

One of the things updater 3 does is change the underlying compiler in CFMX. As such, the installer needs to clear out all the existing compiled class files in the cfusionmx\wwwroot\WEB-INF\cfclasses directory (note that's cfclasses, not classes). The good news is that the installer is supposed to solve that problem by simply renaming your current cfclasses directory to cfclasses_backup.

There are a couple of ramifications of this to be aware of:

1) this means that all first attempts to run CF templates will experience the delay of compiling (which happens only once when code is created or edited, but now needs to happen this once because to CF, it appears to be new code)

2) MM points out in the release notes you can help alleviate that burden by precompiling the code. This is new, as previously the only precompilers were those that folks passed around to each other (as I have in the past). They discuss this issue and their compiler in the release notes, specifically at this point,

3) The precompiler they use is pretty simplistic. It only compiles code "under the web root". That may not suit you. So I have a more complete compiler in my 12/10/02 entry.

4) If you experience any strange errors, it would probably be safe to simply rename the cfclasses directory or delete it (while the CFMX service is stopped). On restarting it, CFMX will create the cfclasses directory when you first execute a CF template.

Installing the Updater: One caution about CFIDE location

This isn't really new for the CFMX updater, but it's something worth paying attention: when installing the CFMX updater, pay attention to the step where you indicate the location of the CFIDE directory. This is where the administrator is located, as well as the RDS and CFC exploring features and the javascript and java files for CFFILE and more.

Anyway, the point is that if you install CFMX with the built-in web server, and then upgrade to using IIS or Apache, you may find that you end up moving the CFIDE out of the cfusionmx\wwwroot to the inetpub\wwwroot. Or you may choose to move it elsewhere for other security reasons.

Anyway, the installer (in my case at least) does not detect that I no longer have CFIDE in the CFusionMX directory, yet it tries to put it there by default. I was aware of this issue and changed the installer during that step to point to the correct location where I have the CFIDE. The problem is that you may not notice this.

Now, someone suggested that the installer wouldn't have let me proceed if I had let the installer try to put the CFIDE in a directory where it didn't already exist. Fair enough. But what if you had copied rather than moved the directory to the new location (as you might when changing from the built-in web server to IIS/Apache, not worrying about it remaining in the cfusionmx\wwwroot where it shouldn't be executed anyway)?

Again, this is just a warning in case the problem might strike anyone else.

Updated version of CFMX Version Checker

Folks, I've got an updated version of my CFMX version checker that I'd last offered on 1/29. This one accounts for the new Updater 3. Save it as getCFMXVersion.cfm and run it in your environment. Enjoy.


<!---
Name: getCFMXVersion.cfm
Author: Charlie Arehart
Version: 3/26/03
Published in the May 2003 CFDJ
--->
<h2>CF Version Analysis:</h2>

<cfscript>
versinfo = arraynew(1);
versinfo[1] = structnew();
versinfo[1].name = "the base version, with no updater";
versinfo[1].number = 48097;

versinfo[2] = structnew();
versinfo[2].name = "Updater 1";
versinfo[2].number = 52311;

versinfo[3] = structnew();
versinfo[3].name = "Updater 2";
versinfo[3].number = 55693;

versinfo[4] = structnew();
versinfo[4].name = "Updater 3";
versinfo[4].number = 58500;

curversion = listlast(Server.ColdFusion.ProductVersion);
</cfscript>

<cfoutput>
This server is running <b>#Server.ColdFusion.ProductName#, #server.coldfusion.ProductLevel#</b>
<p>
The current version number is <b>#Server.ColdFusion.ProductVersion#</b>
<cfif left(Server.ColdFusion.ProductVersion,5) is "6,0,0" >
which means it's running with
<cfif server.coldfusion.appserver is "j2ee" and curversion is 58096>
Updater 3 on ColdFusion MX for J2EE.
<cfelse>
<cfloop from="1" to="#arraylen(versinfo)#" index="i">
<cfif curversion eq versinfo[i].number>
<b>#versinfo[i].name#</b>.
<cfbreak>
<cfelseif curversion lt versinfo[i].number>
<b>patches not yet up to the final release of #versinfo[i].name#</b>
<cfbreak>
<cfelseif i is arraylen(versinfo)>
a version <b>greater than the final release of
#versinfo[arraylen(versinfo)].name#</b>.
This tool has not been updated yet to recognize that version number.
</cfif>
</cfloop>
</cfif>
<cfelse>
<!--- there were no updaters for CF 5 or before, so there's no reason to try to report on them
prior to CFMX, and this program will not report on any version greater than CFMX
(productversion > 6) --->
</cfif>
<p>
There are updaters for CFMX available at
<a href="http://www.macromedia.com/software/coldfusion/special/updater/faq/">
http://www.macromedia.com/software/coldfusion/special/updater/faq/</a>.
</cfoutput>





Actually, the code above is yet another update over a version (below) that I'd first offered here in this posting on 3/19. The version above is just a little better organized than the code below. They produce the same result.I offer the code below for "posterity". :-)



<cfoutput>
<h2>CF Version Analysis:</h2>

This server is running <b>#Server.ColdFusion.ProductName#, #server.coldfusion.PRoductLevel#</b>
<p>
The current version number is <b>#Server.ColdFusion.ProductVersion#</b>
<cfif listfirst(Server.ColdFusion.ProductVersion) is 6>
   which means it's running with
   <cfif listlast(Server.ColdFusion.ProductVersion) le 48097>
     <b>no updater</b>.
   <cfelseif listlast(Server.ColdFusion.ProductVersion) lt 52311>
     <b>patches above the base version but not yet up to the final release of updater 1</b>.
   <cfelseif listlast(Server.ColdFusion.ProductVersion) eq 52311>
     <b>updater 1</b>.
   <cfelseif listlast(Server.ColdFusion.ProductVersion) lt 55693>
     <b>patches above updater 1 but not yet up to the final release of updater 2</b>.
   <cfelseif listlast(Server.ColdFusion.ProductVersion) eq 55693>
     <b>updater 2</b>.
   <cfelseif listlast(Server.ColdFusion.ProductVersion) eq 58096 and Server.ColdFusion.ProductName contains "j2ee">
     <b>updater 3 for #Server.ColdFusion.ProductName#</b>.
   <cfelseif listlast(Server.ColdFusion.ProductVersion) lt 58500>
     <b>patches above updater 2 but not yet up to the final release of updater 3</b>.
   <cfelseif listlast(Server.ColdFusion.ProductVersion) eq 58500>
     <b>updater 3</b>.
   <cfelse>
     a version <b>greater than the final release of updater 3</b>. This tool has not been updated yet to recognize that version number.
   </cfif>
  <cfelse>
     <!--- there were no updaters for CF 5 or before, so there's no reason to try to report on them prior to CFMX, and this program will not report on any version greater than CFMX (prodcutversion > 6) --->
  </cfif>
<p>
There are updaters for CFMX available at <a href="http://www.macromedia.com/software/coldfusion/special/updater/faq/">
http://www.macromedia.com/software/coldfusion/special/updater/faq/</a>.

</cfoutput>

Updater 3 for CFMX is Out

Updater 3 for CFMX is out. I'll have more news to share soon on some surprising hidden gems in the updater.

CFMX Updater 3 Released March 20, 2003
http://www.macromedia.com/software/coldfusion/special/updater/faq/

CFMX Updater3 Release Notes
http://www.macromedia.com/support/coldfusion/releasenotes/mx/releasenotes_mx_updater.html

Saturday, March 08, 2003

MM DevNet User-supplied Tip Library

One of the new aspects of the new MM DevNet is a new location for user-supplied tips, with categories for all the MM products. Pretty nifty. I don't recall seeing this on the old DesDev site, so if it's not really new, let me just point it out for those to whom it IS new. :-) It's at http://www.macromedia.com/cfusion/tipsubmission/main.cfm. There are links there for all the products, a highlight of both the "highest rated" tips and the newest tips, and of course a place to enter your own tips. As for that "rating" feature, you can rate a tip when you view it. It may not be obvious, but you mouse over the stars that show the "average rating" and on clicking a star, you're giving it at that rating.

While you're on that page, take note of the separate "tip of the week" link, which takes you to a page with a large number of video tips. These quicktime videos walk through using various features in a variety of MM products. These have been around for a while, though many may have never seen them. Check 'em out!

Thursday, March 06, 2003

Multiple independent CFMX Instances--how to support them on CFMX for JRun

If you've wondered about setting up multiple independent CFMX instances on a single server, which isn't currently possible with the base CFMX product, there is a MM technote about doing it on CFMX for JRun that's detailed and interesting. You might want to check it out.

Wednesday, March 05, 2003

Installing HomeSite+: The Equivalent to Studio 5, and then some

You may know that Macromedia has provided us HomeSite+, which is a near equivalent to most CFers favorite editor, CF Studio 5. The thing is, it's not available for sale or for trial download. It's only on the Dreamweaver MX CD (or in the download if you buy DWMX at the MM store online). I've spoken about HS+ in a couple of past blog entries:
- Obtaining updates for CF and CF Studio 4 and 5 releases on 8/1/02
- Getting into Dreamweaver for Studio users on 9/27/02
- Get CFMX Version of the CFML Reference to Studio and HomeSite+ Help Tab on 10/4/02
- Update to HomeSite+ available on 1/10/03

Something new I wanted to add was that when you install it, it will prompt for a serial number. While it doesn't make it clear, I found that it took the DreamweaverMX serial number.

I also found that, on this fresh installation (versus an upgrade) it prompted to walk through creation of an RDS connection and Development Mappings for internal browsing. If you're new to RDS and development mappings, the password being requested is that defined in the CF Admin for the RDS password. (If it's creating the RDS server for your own localhost, this is the password you created when you installed CF.) You should NOT enter a value for "username" in that interface prompt. Just leave it empty.

You should only enter a username and password if you're using CF 4-5 and your server is configured to use Advanced Security with the Sandbox feature enabled for "RDS passwords", in which case then you'd enter your own username and password as indicated by how that Advanced Security was configured. This is not likely (it's a very rarely used, though powerful, feature). So just try entering the RDS password from the CF Admin alone (no username).

I discuss RDS configuration in more detail in a new User Group presentation I'm offering, called "RDS: From Stress to Success". For more information, including the presentation slides, see the SysteManage presentations area.

One last comment: if you're of the opinion that HS+ isn't really like CF Studio because you can't modify the toolbars, that feature was returned in the "updater" mentioned in the 3rd link in the list above.

Saturday, March 01, 2003

Flash to be integrated into Japan's i-mode

This news may not make much noise among those not into wireless/mobile development, but I think it could be more imporant than many will realize. Macromedia announced this week that they had reached an agreement with NTT DoCoMo, Japan's dominant player in mobile/wireless, to have Flash embedded on their "i-mode" phones. Who cares? Well, Japan has led the way in mobile development, in particular because DoCoMo's dominance means that i-mode and their network/phones have been pretty much the only game in town, and therefore they didn't suffer the stratification of networks, carriers, phones, etc. that we do in the US. Things just congealed there in a way that we can't yet dream of. We can hope that things may improve here, whether or not i-mode itself ever extends much outside Japan.

So what, then? Well, my excitement is that this is a great notch in Flash's belt to become more widespread in mobile phones, even if only in Japan. And success in Japan has been a harbinger of possible moves to the rest of the world. It's not obvious, but it's not entirely unrealistic. When folks eventually realize the power that they can bring to their web apps with Flash, and further that the same skills and results created for web apps can be applied to to mobile phones, I predict there will eventually be an upswelling of interest and acceptance of the platform on other devices and networks. It will take time, but I think this is a significant announcement--and not just for Flash, nor even just current wireless developers.

Perhaps one day many current web developers will be better able to ply their trade in support of wireless apps. WAP and other HTML-based approaches have come and mostly gone--though not for entirely justifiable reasons in some respects. (As a contributor to Professional WAP, I gave that platform a shot back in 2000.) But Flash on a mobile phone: that just makes a lot of sense, and may cause Flash development to make more sense for web app developers as time, markets, consumers, etc all come together to make it a platform of interest. I could be wrong, but we shall see.

Friday, February 28, 2003

Could not update; currently locked by user 'admin' on machine...

Folks, have you ever run into this error:

Could not update; currently locked by user 'admin' on machine 'machinename'

It occasionally happens with an Access database, in my case when someone's trying to do an insert. I may have found an explanation. Now please, keep the suggestions about moving off of Access to yourselves. I KNOW that it's not intended for production use, yadda, yadda. There are people who otherwise find it perfectly adequate.

Before I offer the explanation, to those who might persist with wanting to say that the solution is to move off of Access, to quote Dr. Evil, talking to his son in Austin Powers:

Evil: "Alright, zip it!"
Scott: "You know you can't even.."
Evil:"..zip it! Zip!"
Scott: "Look all I.."
Evil: "..Ladies and Gentlemen of the jury, ex-zip it A!"
Scott: "Number Two would you please back me up.."
Evil: "Look I'm Zippy Longstockings!"
Scott: "I can't.."
Evil: "..You must zip it! (whip sound) zip it good!"

All I want to discuss is this particular problem. ;-)

The error message, and nearly every reference that I've ever found relating to it on the net, has suggested that the problem is that someone else "has the file open". That may make sense in a local network environment, but I just knew that couldn't be the case here. It's on a commercial host. And the DB is NOT in a web-accessible path, so it's not a matter of someone else downloading it or opening it over the web. And the client doesn't ever download or upload new copies via FTP. It's ONLY updated on the net.

So it's really just a strange error that occurs once in a while (in my case, it could be monthly). I'm betting that quite a few others have experienced this problem and just not been able to resolve it.

After all that lead up, what's the solution? Well, in my case, when I looked at the code in which the error was occurring, I noticed something that just had never caught my eye before. It was doing a CFQUERY inserting against one table, and then right after that doing a CFTRANSACTION with another insert (into a different table but the same datasource) followed by another query doing a SELECT MAX to get the autonumber key that was just created. (Again, let's not debate the veracity and wisdom of using autonumber primary keys, but I will note that there are better ways to get the last inserted primary key, even in Access. See my previous blog entry on this.). FWIW, that CFTRANSACTION was using an ISOLATION value of READ_COMMITTED.

I don't know why it was doing the first query outside the CFTRANSACTION, but it struck me that there may be a conflict where the first CFQUERY might still be being processed when the CFTRANSACTION tried to obtain its needed lock on the DB. That would maybe cause this error.

(Indeed, one might wonder if another scenario could cause the problem. Imagine a template simply doing a CFTRANSACTION (perhaps again important that it's doing a READ_COMMITTED), which simply happens to try to run at the same time that another CFQUERY against that datasource ran at the same time, on another thread. It may be that what we're seeing here is simply Access's version of a lock pending timeout. I mean, the error was occurring on the INSERT inside the transaction (the first query inside it), so while we might expect any such DB lock timeout to happen on the CFTRANSACTION itself, maybe the way CF passes the ODBC SQL commands to the Jet Engine, the error can't be reported on the CFTRANSACTION and therefore it happens on the CFQUERY.)

Anyone have thoughts? Does this sound useful? I've changed the code in this one template to see if the problem will never show up again. I'm not in a position to run some load testing right now so I can't see if I could recreate and prove if this solves it. If anyone can, please do report your findings.

Monday, February 24, 2003

Impact of mappings on use of CFCs in CF, web services, and Flash remoting

If you've got code running outside the regular web root on your server, you may know that there are a couple of mechanisms in CF that allow you to create "mappings" to point to those. But what about when you're trying to invoke a CFC, whether with CFINVOKE/CFOBJECT/CreateObject, as a web service, or via Flash Remoting? The two mapping approaches have different fundamental purposes, and also they don't both work for all these attempts you may make to invoke a CFC. I've provided here a "map" (pardon the pun) of what works with what.

First, for background, the first of the two approaches for creating mappings are the CF Admin, which at its core is intended to allow tags like CFINCLUDE and CFMODULE to find CF templates using a mapping, such as to find files outside the webroot or simply to create an alias that facilitates easier reuse among multiple directories. People often get tripped up trying to use this mapping in a URL, which is not it's purpose. It's solely for internal use by CF tags and functions, so it does indeed work for invoking a CFC via CFINVOKE or CFOBJECT/CreateObject. But it doesn't work for invoking the CFC as a web service or via Flash Remoting.

The second approach is to create a virtual directory mapping using CF's underlying jrun-web.xml file. If this is new to you, check out my previous blog entry on the topic. It's easy to do and has value for allowing URLs that point to code outside the webroot or again to create an alias to hide the real directory name. Since it works with URLs, it DOES work for invoking a CFC via web services, but not with CFINVOKE/CFOBJECT/CreateObject, nor via Flash Remoting.

Sadly, it turns out that Flash Remoting doesn't work with either mapping approach, at least in my testing. So the only way to call a CFC via remoting is for it to be in the webroot. I'd welcome any observations others have for finding another solution for that.

To summarize, here's what I've found about invoking CFCs in different ways and with different mappings:

- cfinvoke/cfobject: admin mappings YES, jrun-web.xml mappings NO
- web service: admin mappings NO, jrun-web.xml mappings YES
- flash remoting: admin mappings NO, jrun-web.xml mappings NO

I have only tested this on a server with the built-in web server, so I haven't tested how an IIS virtual directory mapping might affect things, nor how use of IIS may change the nature in which either of these other two mappings are respected.

How to Stop Requiring the RDS Password for CFC Exploring

Would you be interested in enabling folks to browse your CFCs documentation without needing to know the RDS or Admin password for your server in order to do so? You can.It just takes either of a couple of undocumented steps.

You may know that you can view the documentation for a CFC by browsing it, but Macromedia designed that feature to require you to provide the server's RDS or Administrator password in order to do so. That's unacceptable for some servers, since those passwords can grant too much access in other respects. But you can change things so that either no password is expected at all (which may not be desirable either), or by requiring a password of your choosing that's used just for browsing CFCs, or by requiring some other username/password pair of your choosing.

To allow browsing without any password at all, you can simply rename the Application.cfm file in the directory where the CFC Explorer is stored: \CFusionMX\wwwroot\CFIDE\componentutils. (You don't directly execute code in this directory, but when you browse a CFC it is where CF runs the CFCExplorer on your behalf.) By renaming that directory's Application.cfm, for instance to xApplication.cfm, the code in that directory will no longer expect the RDS or Admin password. (Some have asserted that another solution is to simply disable the RDS password entirely, but that's throwing the baby out with the bathwater, since it will expose your server to being used by features in tools like ColdFusion Studio, HomeSite+, and Dreamweaver MX which use RDS to access databases, files, and more on the server.)

But while renaming the Application.cfm will no longer require any password at all to browse CFC's, some may worry that exposing their CFC's documentation to just anyone will be an equally unacceptable security risk.

Another alternative is to simply replace the Application.cfm with one that does some other form of authentication of your own choosing. Most have written their own security processing in Application.cfm, so feel free to roll your own. If you'd like to use one written just for this purpose, I've provided one here. Feel free to copy and paste it into a new Application.cfm (again, after renaming the current one in the CFIDE\componentutils directory). There's quite a bit of comments, with only about 30 lines of actual code:

<!--- Application.cfm that can be used to replace that in \CFusionMX\wwwroot\CFIDE\componentutils\ so that the developers don't require the Admin or RDS password in order to explore CFCs. Instead, they will be prompted for a password that you can define in this program. See the line below, which expects the password to be "getcfc" by default:

    <cfif form.password is not "getcfc">

You'll want to change that to some password that you prefer to use for browsing CFCs. You could also switch the code to prompt for both a username and password and then do a lookup in a database instead.

To implement this, rename the Application.cfm that's currently in the \CFusionMX\wwwroot\CFIDE\componentutils\ directory, and save this one there.

Then tell your developers to use whatever password you choose to implement for browsing CFCs. This change will have no other effect of the funcitoning of features that leverage the RDS password. It only overrides the password needed for browsing CFCs.

Note also that this is setup to allow logins to last for an hour (which you can change with the IDLETIMEOUT on CFLOGIN) and it supports a logout, which you can remove if you'd like by taking out the first 4 and the last 7 below.
--->


<!--- if they clicked logout button, log them out --->
<cfif isdefined("form.logout")>
    <cflogout>
</cfif>

<cffunction name="dologin">
    Please Login:
    <form method="post">
    Password: <input type="Password" name="password"><br>
    <input type="Submit" value="Login" name="login">
    </form>
</cffunction>

<!--- set login to allow up to an hour of idleness before timing out, and use a unique applicationtoken to as not to conflict with any others--->
<cflogin applicationtoken="cfcexplore" idletimeout="3600">
    <!--- if here, user is not yet logged in. if not responding to username/password prompt, show them login form --->
    <cfif not isdefined("form.Login")>
        <!--- call the dologin function defined above --->
        <cfscript>dologin();</cfscript>
        <cfabort>
    <cfelse>
        <!--- validate username/password here --->

        <cfif form.password is not "getcfc">
            Invalid password. Try again.
            <!--- call the dologin function defined above --->
            <cfscript>dologin();</cfscript>
            <cfabort>
        </cfif>
        <!--- if valid username/password, log them in--->
        <cfloginuser name="cfcexplorer" password="#form.password#" roles="">
    </cfif>
</cflogin>

<!--- -if they're logged in, give them a logout
-getauthuser() returns the empty string if not logged in --->
<cfif getauthuser() is not "">
    <form method="post">
    <input type="submit" name="logout" value="Logout">
    </form>
</cfif>

The comments explain that it creates an expected password of "getcfc", and how you can change it, even to instead use a query to test usernames and passwords if desired. Hope you find it helpful.

Friday, February 21, 2003

Sunday, February 09, 2003

When remoting seems to fail...could be conflict of URL for page loading movie versus that for remoting server

Have you ever had a Flash Remoting movie that seems to fail, in that some expected communications from the server never is returned? And worse, that even the NetConnection Debugger shows it opening a connection and calling the service but just then getting no further response?

The problem may be caused by a conflict between the URL you're using to loading the movie and that which is being used to connect to the remoting server in your ActionScript, such as the createGatewayConnection.

If that statement indicates to make a remoting connection to serverA, but you try to load the SWF from serverB, you won't get an error, but you won't get the expected result. Instead, the debugging will show what I've referred to above.

Now, on the surface, this may be logical to experienced Flash folks who know that this is a security feature to keep code loaded from one server from being able to connect to code running on another server (of course, that IS allowed if you're using web services).

The thing is, it might happen in a way that you wouldn't immediately recognize as an obvious case of this security breach: Consider if your ActionScript code connects to the server using 127.0.0.1, but then you load the SWF (or the page containing the SWF) using a URL with localhost? In most instances, localhost and 127.0.0.1 are the same thing, but not to Flash, and therefore not when doing remoting this way. So you need to know which server the code is trying to connect to in order to get it to run (that's another challenge that I'll discuss in a later blog entry).

Here's a screenshot of the NetConnection Debugger in this example, where the code is doing:


NetServices.createGatewayConnection("http://127.0.0.1:8500/flashservices/gateway").


but the swf including that code is being called with a url such as http://localhost/whatever.swf:



Notice that it shows the connect (from the createGatewayConnection) and the call (from the getService), but no further response.

More useful is to note that the image is showing that the "details" tab has been selected. Look carefully and notice that the ConnectString is referring to 127.0.0.1, but the MovieUrl says it was opened using localhost. That's the essence of the problem.

Frankly, I wish that the NetConnection Debugger would detect this fact and give us a warning. I tried to look in the .as file supporting the debugger but didn't see an immediate solution. If this is enough to trigger anyone else figuring a solution, do let me know via the "add a comment" feature below.


Chris Kief has shared with me a technote that offers some useful related information. Check out http://www.macromedia.com/support/flash_remoting/ts/documents/fr_determine_url.htm. He adds, "It explains how Flash determines the gateway URL to use. This has surprised more than a couple people." Thanks, Chris.

Saturday, February 08, 2003

Debugging Flash Remoting Interfaces without Opening Flash

Did you know that you can run the Flash Remoting NetConnection Debugger without opening Flash? You can. And you may want to reconsider your use of the Flash Trace() statement, using NetServices.Trace instead. This tip will explain both points.

A little background first: If you're exploring Flash and Flash remoting, you'll soon get familiar with the NetConnection Debugger (more at macromedia).

While many see it as a tool for debugging a move while testing it within the Flash environment, the truth is that you can use it to test ANY movie running on your workstation--as long as that movie has included the NetDebug.as file in its script, that is. You can run the SWF or the file that loads the SWF and if debugging is enabled within it, you'll see that you get the netconnection debugging info for that movie.

One challenge with using it, though, is that it's kind of annoying to have to open Flash just to enable it in order to test movies running outside of Flash this way. You may not have noticed but the NetConnection Debugger is itself a Flash movie. It's located in the Flash program directory such as \Program Files\Macromedia\Flash MX\First Run\WindowSWF, at NetConnection Debugger.swf.

You may want to create a shortcut for it on your desktop, or set it as a favorite in your browser, so that you can easily open it whenever you want to debug a debuggable movie.

Sadly, while it's possible to see this form of debugging info without Flash open, you will not see the output window that's typically opened inside Flash when you have Trace() statements in your ActionScript code. And the result of such traces are NOT written to the NetConnection Debugger.

But all is not lost: if you simply change to using NetServices.trace() instead, you'll see that you get two benefits: first, such traces will still be written to the output window in Flash, if you have it open. More important, the difference with these traces is that they WILL be written to the NetConnectionDebugger. It will be listed as an event called "NetServicesTrace". Curiously, the information about the trace shown in the "summary" window of the debugger window will show whatever value being traced using a header of "who". See below, showing the result of NetServices.trace("test of trace");.



Chris Kief has offered this useful additional information:

As a CFer, I’ve become pretty reliant on to let me see what is going on. But in Flash you can’t just dump things that easily. Try tracing an object using trace() and you receive [Object] [Object]. That is where the NetConnect Debugger comes in. It is able to handle complex objects. So a simple NetDebug.trace(myObj) will allow you to see the details of the object. Here’s a simple demonstration:

#include "NetDebug.as"

myObj = [];
myObj.push({foo:"bar0", bar:"foo0"});
myObj.push({foo:"bar1", bar:"foo1"});
myObj.push({foo:"bar2", bar:"foo2"});
myObj.push({foo:"bar3", bar:"foo3"});

// a string trace
NetDebug.trace("hello");
// an associative array trace
NetDebug.trace(myObj);

I just noticed your blog about NetServices.trace and the fact that it traces with a header of “who” every time. I would recommend using NetDebug.trace() instead as it does not exhibit this behavior.

Monday, February 03, 2003

Tapping into Vern's Old Blog

Most of you know that Vernon Viehe was Macromedia's Community Manager for ColdFusion throughout most of 2002, and he had a blog at http://vvmx.blogspot.com/. Sadly, the blog is closed. While the old blogspot archives are there if you know how to find them, you have to know how to find the archive links, and even then they're weekly. You could also do a Google search for the cached pages, but all that's a hassle.

Instead, and in honor of his contributions, I've gathered them all up here into 3 quarterly installments on my site, at http://www.systemanage.com/vern_blog_archive.cfm. Hopefully, this will make it easier for people to benefit from any of the tips he'd offered that are still timely.

We'll all miss you, Vern.

BTW, folks are indeed still finding Vern's blog through various means, as shown by the fact that his SiteMeter tracking mechanism is still showing visits of a few hundred per week, so people are indeed finding them. I only hope this will help some find them more easily. Also, if those blogspot archives ever are removed, this has captured the information for posterity (well, at least as long as systemanage.com is around!).

Wednesday, January 29, 2003

Determining which CFMX Updater your server is running

Have you wondered which version of CFMX your server is running? meaning it's the base version or one of the updaters (1 or 2 available currently)? You can find out what internal version numbers relate to what updater. See technote 23692 for that mapping of version numbers to updaters.

One strange thing: the technote currently doesn't tell you how to get the current version for your server using code. It presumes you have access to the Admin or the directories in which CFMX is installed. To determine your version, output the CF variable Server.ColdFusion.ProductVersion. While you're at it, if you want to know if it's running Professional or Enteprise, look at Server.ColdFusion.ProductLevel.

Aw heck, here's a routine to determine the current version AND tell you what updater you're running! :-) Save it as getCFMXVersion.cfm and simply run it. You could also call it as a custom tag if desired (cf_getCFMXVersion). I'll post it to the MM Dev Exchange today:

The version I had here has been updated since. See the posting on 3/19 for the latest code.

Wednesday, January 22, 2003

Great 2nd step to getting started with CF/Flash integration

What's the second step to getting started with CF/Flash integration, for those with no prior Flash experience? Check out chapter 23 of the latest CFWACK. Nate Weiss has done a fabulous job, explaining much more in 30-some pages than many articles combined. Of course, that's the advantage of having a whole chapter. Like my recommendation earlier today in my previous posting, where I commended a recent CFDJ article by Ben on the subject, Nate's chapter in the ColdFusion MX Web Application Construction Kit is hands down the best intro I've seen. Again, the point is that he doesn't presume any prior Flash experience.

I hate to indirectly knock those who've done other such articles and even books, but they invariably seem to forget that total newcomers to Flash (while perhaps very experienced programmers in CF and other languages) just get flummoxed when they open Flash for the first time. And if they try to follow the typical "getting started in flash" resources, such as the product's manual, or the help files/samples/tutorials that come with the product, or nearly every Flash book out there, those all suffer from presuming that the reader is interested in learning about drawing/animation/sound/video, etc. These are clearly its benefits over other graphics tools, but they're not what float our boat.

Having to wade through several chapters just to learn the most basic interface fundamentals is a real turn-off for many, but the average remoting books again presume that foundational experience. It was enough to motivate me to start working on the book I described previously, and as much as I might be well-served by keeping my mouth shut about Ben's article and Nate's chapter and just getting my book done, I'm instead using this opportunity to spread the word.

There is a lot of discontent and doubt, as well as downright disdain and misinformation about the prospects of integrating Flash for front-ends (in whole or in part) for CF (and other server) apps. The sooner people get started with seeing just how easy it really can be, the sooner perhaps we'll quell all those ill-formed opinions. There's certainly a lot more to learn than just what's covered in these two resources--which is why I want to do a book to pull more together. But again, if you get these two under your belt, you'll be well-served to take on all the other great resources spread out there in various forms.

As I say in my user group talk, learning this Flash/CF integration is like getting up on a 12 foot wall. It's so cool up here, but you just need a little hand to get up. These two resources do that, and the rest, as they say, is "bud-duh" (or, butter, meaning simple).

Anyway, to get back to Nate's chapter, what's cool is that he not only shows you how to use remoting with CFCs, he also shows it with the new Flash variables scope, as well as also including some sample code doing things "the old way" without remoting, so that one can apply the same techniques to non-remoting servers (including CF5, PHP, perl, you name it). No, it's not new news, but the point is that those who haven't been able to get into Flash have likely not learned that news. Nate even offers a nifty example of using some practical and easy animation. Again, all in all, a quite complete introductory discussion of the topic of Flash/CF integration.

I daresay that even if you've ignored buying the CFWACK because you already have a couple previous issues, this chapter alone may justify the cost (less then $35 at buy.com as of yesterday). Check it out! :-)

Great first article for folks considering Flash/CF Integration

If you've been annoyed by Flash Remoting articles that presume you already understand Flash, there's a great article that quickly walks you through the basics without expecting any prior experience with the Flash interface. A hearty congrats to good ole' Ben Forta for his November CFDJ article, Data Entry ReFORMed. In my mind these are the best 2300 words I can recommend to someone looking to get started with integrate Flash and CF, especially if you already appreciate the power but have looked at various samples and said, "yeah sure, but I can't do that".

Now, don't get me wrong. The various remoting articles at the DesDev, as well as other recent articles in the CFDJ and those at sites like flashcfm.com and mxdev.com are all also fine for showing how to do remoting, but they all presume some Flash experience. As soon as an article says something like "place this actionscript in the actions panel for the first frame", they've lost anyone who doesn't yet know what that means. And while some offer a pre-built flash file to get the reader started, that's no good if the reader isn't shown how to get the file to that point. Ben's article walks you through the bare minimum needed to get started.

And the really cool news is that if you read Ben's article, you'll have enough to be motivated and capable of then enjoying all those fine resources.


Flash/server integration is something I've really come around to after my own painful exploration in the past several months of dozens of books and many more articles. I plan to start sharing more and more. In fact, I've already got a new user group presentation, "Flash for CFers: Getting Over the Hump", available for presentation to any groups that would like me to present it. You can see the PDF of the slides at my site. I'm also exploring being able to present it remotely, whether live or recorded. Let me know if you're interested.

I'm also working on a day-long seminar of the same title to be available soon, and possibly a 3 day class, and also a book. Look for my site and this blog to offer many resources and lessons learned.

Finally, an HTML-only CF PetMarket

A new article on the Macromedia DesDev center announced that there's an HTML-only version of the demonstration PetMarket application. The Flash one was impressive, but for an apples to apples comparison with the Java PetStore and .NET Pet Shop, this is the one I've longed for.

And great news: the CF version takes just 20 templates and about 1500 lines. The J2EE one is a staggering 14,273 lines and even the .NET one is 3,484. Put that in folks pipes to smoke! Of course, some will complain that lines of code is no way to measure the efficacy of an application, yadda yadda yadda. Hey, we all know that CF can just kick butt when it comes to doing things in fewer lines of code, and anyone who's created J2EE apps or even just tried to get started is not surprised by this nearly 10:1 ratio.

Learn more at http://www.macromedia.com/desdev/mx/coldfusion/articles/petmarket.html and get it at http://www.macromedia.com/desdev/mx/blueprint/instructions_cfhtml.html.

Friday, January 10, 2003

Update to HomeSite+ available

A lot of folks may have heard about the available updater for Dreamweaver MX .

But did you know there is an updater for HomeSite+ (from the base 5.1 to a new 5.2 version)? If you' don't know what HomeSite+ is, see Yes there is, and it solves many things including one of the biggest beefs that many have had: you can again customize the toolbars and resource windows! There are still more interesting new features, as listed in the release notes with a long list of what's been fixed (see my favorite, listed as a fix to bug 28406). The updater itself is at updater. Who said MM didn't care about Studio/Homesite users?

Well boo hiss: the recent revision of the Macromedia site in March 2003 has caused the URL for the HS+ updater to be invalid so you're taken to the front page of the MM site. Try this instead: http://www.macromedia.com/cfusion/resourcecenter/rc_driver.cfm?pageName=hsp%5Fupdater. And it's behind a registration/login page. Oh well. Once you're past that, you can indeed get the updater. And the DWMX updater link above is still good.


One thing the updater doesn't fix is that HomeSite+ does NOT by default include the CF docs. See my entry on 10/4 about downloading that addition.

Oh, and if you don't know about HomeSite+, it's basically a merging of HomeSite 5 and CF Studio 5 which is available FREE on your Dreamweaver MX or Studio MX CD. Many don't know it's available because it's not on the install menu of those CDs. Just browse them to find this available, and you can have both DWMX and HS+ together on the same system, using each at your preference. (See my other entries here for more info on HomeSite+, as well as things others on speeding up DWMX and more. Use the search option at left to search for DreamWeaver.)

Tuesday, January 07, 2003

CFMX for the Mac--new implementation of CFMX for J2EE on JRun on the mac

News is traveling fast and furious on some lists about a new announcement of CFMX for J2EE now available to run atop JRun on Mac OS X, at least in a developer (not production) edition. The bottom line is you need to:

a) get the "JRun 4 Developer Version for Mac OSX" at
http://www.macromedia.com/software/jrun/trial/
b) get the ColdFusion MX for J2EE trial for "JRun - Mac OS X - English (Dev
Only)" at http://www.macromedia.com/software/trial_download/

The announcement, though not posted online yet, was shared on one list as follows:

Macromedia debuts JRun 4, J2EE server for OSX
Tuesday, January 7, 2003 @ 12:05am

Macromedia today announced Macromedia JRun 4 for Mac OS X, the first
commercial J2EE compatible application server to support Mac OS X. JRun
can deploy and manage standards-based Java applications, offering
features for accelerated deployment and scalability along with full Java
2 Enterprise Edition (J2EE) compatibility. A developer version of JRun 4
is available for free online, while commercial versions are $900 per
processor.

Macromedia also announced that the Developer Edition of Macromedia
ColdFusion MX for J2EE Application Servers (CFX for J2EE) now supports
Mac OS X. CFX for J2EE adds ColdFusion scripting capabilities to J2EE
application servers (including JRun 4 for Mac OS X) and enables
Macromedia Studio MX developers to both create and test ColdFusion MX
applications on the Mac OS X platform. The free developer edition is
available online.

I'll add that if in the future MM comes out with CFMX for J2EE to run on other servers, as has been discussed, then when it comes out to run on Tomcat, which is bundled with OS X (I hear), then you won't even need the JRun middleman. No news yet on when that might happen, but it's been discussed publicly as a future plan.

February CFDJ Preview Article, "Fun with Filters in CFMX"

If you'd like to get a preview (and offer any feedback) on my planned February CFDJ article, "Fun with Filters in CFMX", check it out at http://www.systemanage.com/previews/. I'll need any feedback in the next couple of days, and will have to pull it soon after that, but until then enjoy.

Friday, January 03, 2003

Getting IE 6 windows to preserve status bar

This isn't so much a CF tip, but it's one that many CF developers may appreciate. In IE 6 (installed on one of my WinXP machines), I found that when I opened new windows the "status bar" (where we can see the URL of a hyperlink by mousing over it) would not be preserved. I'd have to turn it on with View>Status Bar, but had to always do that. It wouldn't preserve it.

I found a solution for it at a Univ of Wisconsin site. Hope you find it useful, too.