Viewing By Month : July 2004 / Main
July 27, 2004
I'm heading out to Montana tonight for a friend's wedding. I'll be back at my keyboard some time on August 4th. No blogging for a week.
We're driving - it's just under 1,100 miles - and we'll be going through Reno, Elko, Twin Falls, Idaho Falls, Butte and ending up at Boulder Hot Springs. When I get back I'll be able to add two more states to "my travels" map!
We're driving - it's just under 1,100 miles - and we'll be going through Reno, Elko, Twin Falls, Idaho Falls, Butte and ending up at Boulder Hot Springs. When I get back I'll be able to add two more states to "my travels" map!
If you want to install CFMX J2EE edition on an existing J2EE app server but that machine doesn't have the 'jar' command on it, you can still do it without downloading the Java SDK!
JAR / WAR / EAR files are really just ZIP files. So run the CFMX installer, select J2EE, select WAR (unless your app server only accepts EAR files - WAR files are easier to unpack / deal with). When the installer is done, you'll have a directory containing
A quick recap on the JRun-based CFMX install: use the JRun Management Console (JMC, the admin server on port 8000) to create a new server instance; manually create a
JAR / WAR / EAR files are really just ZIP files. So run the CFMX installer, select J2EE, select WAR (unless your app server only accepts EAR files - WAR files are easier to unpack / deal with). When the installer is done, you'll have a directory containing
cfusion.war and rds.war. Rename both of these to have an extension of .zip instead of .war and now you can simply unzip them (you do have winzip, right? If not, it's a nice small download to get a trial version) into the appropriate directories. A quick recap on the JRun-based CFMX install: use the JRun Management Console (JMC, the admin server on port 8000) to create a new server instance; manually create a
cfusion directory and a CFIDE directory inside that new server directory and unzip cfusion.zip into cfusion and rds.zip into CFIDE; remove the default-ear directory from that server (habit, I can't quite remember why I do it but I seem to remember that it avoids a potential conflict with something); finally use JMC to start the new server instance and off you go!
July 26, 2004
Macromedia - Developer Center : What Is the Significance of Ellipsis? Ellipsis is the Flash 7.2 Updater. Read what Mike Chambers has to say about it and update your copy of Flash MX 2004 today.
July 24, 2004
About a month ago, I talked about the Blackstone event gateway and the JMS subscriber I'd built using it. I've been experimenting some more with the gateway, looking at the sorts of things you can do and have recently written an IRC bot using it. IRC - Internet Relay Chat - is the predecessor of the various instant messaging systems we all use today and a bot is a program that joins a chat room and can interact with other users. Some of you may have seen SmarterChild on AOL Instant Messenger (if you haven't, add SmarterChild as an AOL buddy and send it messages...). Macromedia's Web Team has an IRC server with a number of chat rooms that we use to coordinate releases, discuss projects etc - all internal to the company so it doesn't create security risk (you don't discuss confidential information over AIM, MSN or Y!M I hope?).
I started out with PircBot, a popular Java implementation framework for writing IRC bots. That meant I only needed to write about 100 lines of Java to complete the "IRC bot gateway". I wrote an IRCBot class to extend the PircBot framework, an IRCBotGateway class to implement the Blackstone event gateway, a configuration class to encapsulation the bot's property file and a gateway helper class. The latter can be retrieved from the gateway by the CFC (using a new built-in function) and allows the CFC to make calls back into the gateway code - in this case it allows my IRCBot CFC to send messages and perform "actions" directly against the PircBot framework. The CFC has a single method that is invoked automatically by the gateway every time anyone says something in the chat room. The method is passed information about who said what and then decides what to do about it. It returns a structure containing data that the gateway uses to decide what to do next. I chose to allow three options: the method can be silent (effectively ignoring what was said), return a message (which the gateway sends to the chat room) or return an action (which the gateway sends to the chat room). Most bot reponses can be handled simply through the return structure - the helper class allows the bot to send other messages or take other actions before returning.
My bot doesn't do much right now but since all the parsing and response logic is in ColdFusion, it's easy to program pretty much any behavior! So far it just remembers the last thing each person said and when they said it so it can respond to the question "seen {username}?" - it responds that "{username} was last seen at {time} saying {message}" which can useful if you join a chat room and want to know if someone is around and actively chatting.
The nice thing about the event gateway system is that once you've written the Java code to handle a particular protocol, you can reuse that with different CFCs and configuration files to achieve pretty much any behavior you want for that protocol.
Once Blackstone has been released, I'll probably make my IRC bot available as an example.
I started out with PircBot, a popular Java implementation framework for writing IRC bots. That meant I only needed to write about 100 lines of Java to complete the "IRC bot gateway". I wrote an IRCBot class to extend the PircBot framework, an IRCBotGateway class to implement the Blackstone event gateway, a configuration class to encapsulation the bot's property file and a gateway helper class. The latter can be retrieved from the gateway by the CFC (using a new built-in function) and allows the CFC to make calls back into the gateway code - in this case it allows my IRCBot CFC to send messages and perform "actions" directly against the PircBot framework. The CFC has a single method that is invoked automatically by the gateway every time anyone says something in the chat room. The method is passed information about who said what and then decides what to do about it. It returns a structure containing data that the gateway uses to decide what to do next. I chose to allow three options: the method can be silent (effectively ignoring what was said), return a message (which the gateway sends to the chat room) or return an action (which the gateway sends to the chat room). Most bot reponses can be handled simply through the return structure - the helper class allows the bot to send other messages or take other actions before returning.
My bot doesn't do much right now but since all the parsing and response logic is in ColdFusion, it's easy to program pretty much any behavior! So far it just remembers the last thing each person said and when they said it so it can respond to the question "seen {username}?" - it responds that "{username} was last seen at {time} saying {message}" which can useful if you join a chat room and want to know if someone is around and actively chatting.
The nice thing about the event gateway system is that once you've written the Java code to handle a particular protocol, you can reuse that with different CFCs and configuration files to achieve pretty much any behavior you want for that protocol.
Once Blackstone has been released, I'll probably make my IRC bot available as an example.
July 23, 2004
I finally got around to setting up CVS support in Eclipse for a couple of projects I'm working on. I'd already got Eclipse projects set up for the directories and I'd been using a separate CVS app to update / commit so persuading Eclipse's CVS repository to overlay my local projects wasn't intuitive and Eclipse gave me an error about directories but it still went ahead and bound the project to CVS anyway. Creating new projects with CVS support already configured seems much easier and I'll probably make sure I do that in future!
Anyway, what have I got for my efforts? Stunningly simple yet extremely comprehensive CVS integration. Wow! The Navigator View shows CVS versions and whether files are up to date or not. The context menu on files offers a very rich set of CVS-related commands and the Text Compare (between versions) is very slick too.
Anyway, what have I got for my efforts? Stunningly simple yet extremely comprehensive CVS integration. Wow! The Navigator View shows CVS versions and whether files are up to date or not. The context menu on files offers a very rich set of CVS-related commands and the Text Compare (between versions) is very slick too.
cfeclipse: CFEclipse 1.1.15 released: I'm very pleased to see the CFC Method View enhanced to have an alphabetic order toggle as well as double-clicking a method now taking you to the source of the method (both enhancements I requested so kudos to the CFEclipse team for a speedy response!). The color-coding seems to work pretty well (I've gone for soothing greens and blues). Other features and fixes are listed on the web page but they're mostly not things I'd use - YMMV, e.g., the "Jump to end tag" feature might be very useful for a lot of folks.
The new "Scribble Pad" feature is interesting although I can't get it to work. It allows you to quickly test fragments of code without ending up with a directory full of short test pages - nice idea! I already have a project defined over my web root so I can't define a separate "Scribble" project in the web root - I tried setting the preference to use the existing project for the scribble pad but F8 doesn't bring up the scribble page. At least, it doesn't on my Mac. And I couldn't find how to change / check the assigned function key because I can't find how to access the scribble functionality from the menus. Oh well. Definitely a nice idea tho'.
Looks like the Browser View / CPU usage issue didn't make it into this release (based on my preliminary testing and the brief "Bugs Fixed" list on the website).
The new "Scribble Pad" feature is interesting although I can't get it to work. It allows you to quickly test fragments of code without ending up with a directory full of short test pages - nice idea! I already have a project defined over my web root so I can't define a separate "Scribble" project in the web root - I tried setting the preference to use the existing project for the scribble pad but F8 doesn't bring up the scribble page. At least, it doesn't on my Mac. And I couldn't find how to change / check the assigned function key because I can't find how to access the scribble functionality from the menus. Oh well. Definitely a nice idea tho'.
Looks like the Browser View / CPU usage issue didn't make it into this release (based on my preliminary testing and the brief "Bugs Fixed" list on the website).
July 22, 2004
gregs - server - jrun - JRun resources - Helping me remember what I figure out: this is a very useful collection of links to important resources for anyone running ColdFusion MX but especially for the Enterpise Edition since it covers JRun stuff as well. Looks like there's a blog associated with the site too but I couldn't see an RSS feed link unfortunately...
Update: The RDF/RSS feed is at http://gregs.tcias.co.uk/rdf/.
Update: The RDF/RSS feed is at http://gregs.tcias.co.uk/rdf/.
I saw the big press release a few days ago and everyone's blog picked up on that but no one seemed to talk about what E4X will do. Officially designated ECMA-357, you can read the ECMAScript for XML (E4X) Specification to see that it adds several new syntax elements for handling native XML documents in an intuitive way. It's based on BEA's scripting extensions so it's already been tried out in the field, which is always encouraging for a new computer language standard!
In E4X, you can now specify XML literals that create fully-formed navigable XML structures behind the scenes, and you can traverse these structures using notation similar to XPath, with dots used instead of slashes:
I look forward to seeing E4X support appearing in various implementations of languages based on ECMAScript!
In E4X, you can now specify XML literals that create fully-formed navigable XML structures behind the scenes, and you can traverse these structures using notation similar to XPath, with dots used instead of slashes:
var over27inEng = empdoc..employee.(department.@id == 500 && age > 27);This will return all
employee nodes (like //employee in XPath) which have: - a
departmentchild with anidattribute equal to 500 and - an age
childwith a value greater than 27
I look forward to seeing E4X support appearing in various implementations of languages based on ECMAScript!
July 21, 2004
Having seen Sandy Clark in action talking about Cascading Style Sheets, I was very pleased to see that TeraTech Training now offers a comprehensive 4-day course on this subject! The course covers a huge variety of material from an introduction to web standards and CSS right through to the intricacies of browser quirks and the "IE7" CSS package that makes IE6 more standards-compliant.
Note: TeraTech are also offering a one-day Mach II training course from Hal Helms to give developers a fasttrack way to learn Mach II. At just $349, this sounds like a bargain to me - and it's the Monday after Fusebox 2004 so you can easily combine the two events for very little additional outlay!
Note: TeraTech are also offering a one-day Mach II training course from Hal Helms to give developers a fasttrack way to learn Mach II. At just $349, this sounds like a bargain to me - and it's the Monday after Fusebox 2004 so you can easily combine the two events for very little additional outlay!
Dynamic Code Insighting - Steve Nelson's Personal Blog: Steve Nelson and others are building a tool for Dreamweaver that does some very sophisticated things for Fusebox developers. The project is hosted on CFOpen which is a nice touch since it opens it up for collaborative development. I found this link through John Beynon's blog where he says that this single tool has enabled him to move back to Dreamweaver from Eclipse!
July 19, 2004
This has been on my to-do list since CFUN: I picked up a demo copy of the Alagad Image Component and I'm very impressed! This is a powerful, full-featured image manipulation component that lets you do pretty much anything you can think of with images from getting the height and width of an existing image to dynamically creating completely new images on the fly. For manipulating existing images, you simply create an instance of the Image CFC, read an image file into it and then call methods on it using a fairly intuitive API. You can also create new images, combine images, overlay text on images and so on...
I've been keeping both editors open, day-in, day-out and trying to work with them both in about 50/50 ratio so each editor gets a fair trial.
CFEclipse first:
I really like the CFC Methods View but it would be really useful to be able to switch between code order and alphabetical order (the latter makes it easier to find a given method in a large, unfamiliar CFC; the former makes it easier to find a given method when you're expecting them to be in a particular order, e.g.,
I still can't get on with the Outline View - if I could filter out certain tags, it might be more useful, e.g., hiding
Problems View - I've not seen a single message appear in this window so I've no idea what it does. Is there a good document explaining what it's for?
Select Text Context Menu - useful! Provides shift left / right, wrap in CF comment etc.
And I finally got around to digging deep enough into the Eclipse preferences to find the option to display line numbers!
OK, now back to He3:
I built a Fusebox 4 application today (my first) so the built-in support for the Fusebox XML files was very useful, saving me several visits to the FB4 documentation (Hah! Jeff's excellent book, more like!) and saving me a lot of typing! Unfortunately, the tag insight for
This side-by-side comparison will continue over the next few months as I get more familiar with the underlying Eclipse system as well as the specific products' features...
CFEclipse first:
I really like the CFC Methods View but it would be really useful to be able to switch between code order and alphabetical order (the latter makes it easier to find a given method in a large, unfamiliar CFC; the former makes it easier to find a given method when you're expecting them to be in a particular order, e.g.,
init()
first followed by public methods in alphabetical order, followed by private methods in alphabetical order or whatever). I still can't get on with the Outline View - if I could filter out certain tags, it might be more useful, e.g., hiding
cfset
tags so that you can see the real structure of a method. I tried to filter on //cffunction/cfreturn
to just show functions containing an explicit cfreturn
statement but it seemed to match all functions instead. Any hints & tips on this would be appreciated! Problems View - I've not seen a single message appear in this window so I've no idea what it does. Is there a good document explaining what it's for?
Select Text Context Menu - useful! Provides shift left / right, wrap in CF comment etc.
And I finally got around to digging deep enough into the Eclipse preferences to find the option to display line numbers!
OK, now back to He3:
I built a Fusebox 4 application today (my first) so the built-in support for the Fusebox XML files was very useful, saving me several visits to the FB4 documentation (Hah! Jeff's excellent book, more like!) and saving me a lot of typing! Unfortunately, the tag insight for
set
doesn't offer name
/ value
attributes (and tag completion makes the cursor move to the next line, just like tag completion for cfset
which is kinda weird). This side-by-side comparison will continue over the next few months as I get more familiar with the underlying Eclipse system as well as the specific products' features...
Lots of new stuff on macromedia.com this morning including the preview release of Contribute 3 and lots of information about FlashPaper 2 (now available on Macs!) and the new Web Publishing System. The new FlashPaper release brings FlashPaper to the Mac for the first time, adds full text search and selection and further enhances the Windows version with better Office integration and new PDF generation. Contribute 3 brings full support for CSS and sophisticated workflow, collaboration and administration, with server-side actions enabled via Contribute Publishing Services. I haven't had a chance to really absorb all the information yet. I just downloaded and installed the CT3 preview and I'm about to take it for a test drive...
July 16, 2004
Someone asked about fUseML on one of the Fusebox forums today - it sent me scampering to Google where I found, amongst other things, this wonderfully elaborate PowerPoint-alike fUseML presentation in Flash by Steve Nelson from a past CF South conference. It's a fascinating approach, even tho' it never took off. There have been several attempts over the years to adapt UML for web application development but I hadn't heard of this one before. Any thoughts on why it never took off?
July 15, 2004
Macromedia Weblogs - Christian Cantrell - he wants your macromedia.com feedback! Tell him what you like and don't like about Macromedia's website.
New Atlanta has just announced the availability of a Technology Preview installer for BlueDragon.NET. In the same way that both BD and CFMX have a J2EE version that runs on top of the Java platform and provides tight integration with Java, BD.NET is a .NET assembly that runs on top of the native .NET platform on Windows, providing tight integration with .NET.
July 14, 2004
CFDJ's cover article for July is Isaac Dealey's hints and tips on accessing JDBC metadata. He points out the pros and cons of this technique as well as giving some idea of the power of it. Interesting reading!
Macromedia - Developer Center : iShop: Flash Lite Enabled Comparison Shopping to Go. Oh boy, do I want one of those phones! Articles like this make me very excited about where Flash is going - with Flash Lite on cell phones and Breeze Live and seeing one of the first production Flex apps (Ofoto - via Christophe Coenraets blog).
Which should you use? If you're using CFMX then all scopes are structs and you will be much safer with
In all cases,
structKeyExists(scopeName,"varName")
. It will also be faster than isDefined("scopeName.varName")
. isDefined()
tries very hard to find any possible definition of the requested variable. It searches through the scopes as if the variable name is not scope-qualified - even when it contains a dot (.
) which seems to date back to pre-MX ColdFusion which allowed dots in variable names. For example, if you say: <cfset variables.variables.foo = 42 />you may be surprised to discover that
isDefined("variables.foo")
is YES, even tho' there is no variable called foo
in the variables
scope. If you say isDefined("foo")
and foo
is a URL
scope variable, you'll get YES (unqualified scope lookup) but if you say isDefined("x.foo")
you'll get NO even if x.foo
is passed in the URL - you need isDefined("url.x.foo")
for that. Buggy? Perhaps. Confusing? Certainly! In all cases,
structKeyExists()
lets you test for variable existence much more precisely: structKeyExists(variables,"foo") is NO
structKeyExists(variables,"variables") is YES
structKeyExists(variables.variables,"foo") is YES
(for the examples above). structKeyExists(variables,"variables") is YES
structKeyExists(variables.variables,"foo") is YES
Top News Article | Reuters.com - Good to see the Senate showing some common sense here. No matter what your opinion on gay marriage, I hope you would agree that there are far more important issues that need dealing with...
July 13, 2004
I just noticed my site meter count has passed quarter of a million (visitors) in just over two years. Wow! Thank you! I hope I can keep tempting you back to read what I have to say... Feel free to make comments about what you'd like to see discussed here...
I don't care what the audience thought, Jay London is way funnier than Gary Gulman!
If anyone knows about Jay London doing any comedy gigs in the Bay Area, let me know - my wife and I would love to see him perform live!
If anyone knows about Jay London doing any comedy gigs in the Bay Area, let me know - my wife and I would love to see him perform live!
Mike Spille has plenty to say about unit testing in two recent blog entries: Pyrasun 2.0 - The Spille Blog: Don't Let Yourself Get Unitized & Pyrasun 2.0 - The Spille Blog: Limits of Unit Testing (available in an article on TheServerSide. He makes some good points. Unit testing is a useful tool but don't fall into the trap of thinking you're done just because your unit tests pass. As to why JUnit has become so popular - unit testing is boring as all hell so even a lightweight framework is a big help. It's why Paul Kenney's cfcUnit - a port of JUnit to ColdFusion - is receiving so much attention. Unit testing is a great place to start - and for many people, even unit testing is a new concept. Read Mike's blog and make sure you understand the limitations of unit testing as well as the scale of a 'unit'.
July 12, 2004
Scientists horrified by Bush's Bad Science | The Register. Speaks for itself.
Bush is systematically destroying the environment in favor of short term industrial growth (especially for the oil industry). He is also eroding women's rights in particular and the American people's rights in general through a number of unconstitutional measures that he and his cronies are sneaking quietly past the public...
The Constitution and the Bill of Rights are there for a reason - don't let Bush continue to chip away at our freedom!
Bush is systematically destroying the environment in favor of short term industrial growth (especially for the oil industry). He is also eroding women's rights in particular and the American people's rights in general through a number of unconstitutional measures that he and his cronies are sneaking quietly past the public...
The Constitution and the Bill of Rights are there for a reason - don't let Bush continue to chip away at our freedom!
Robin Debreuil's C# to SWF compiler - early development work at the moment but very interesting nonetheless. Download it and give the guy some feedback - the more ways to produce Flash movies, the better in my opinion!
The latest update to He3 brings Fusebox 4 support: He3 now recognizes fusebox.xml, fusebox.xml.cfm, circuit.xml and circuit.xml.cfm as special files are provides tag insight for the XML grammar for the Fusebox and Circuit configuration files. A new framework wizard is also present for Fusebox 4 to create a template fusebox.xml file (much like the Mach II wizard). Visit RichPalette for more details about He3.
My (unwanted) copy of JDJ turned up today with a copy of Macromedia Flex on a trial CD. That's a lot of Java developers out there who should now be playing with the developer edition of Flex!
July 9, 2004
Bitflux Blog :: Spotlight-like livesearch added - inspired by Apple's Spotlight search in Tiger (OS X 10.4), this blog has a neat search-as-you-type feature built with XMLHttpRequest and a little bit of server-side magic. Impressive!
July 7, 2004
The answer? No, just my age. Today's my birthday and I'm stuck at home in bed with the most miserable head cold I've had for a year or more. Thank goodness for wifi so I can at least do some email even I can't concentrate for more than a few minutes at a time...
The Gmail beta has been opening up in leaps and bounds and Google are clearly having capacity problems... If I see that pesky "Oops..." dialog box again, I swear I'm going to scream! I'd say right now it's availability is something like 50/50 which, even for a beta is a bit of a concern. Overall tho', the service is very slick and it has helped me immensely in managing my mailing list overload (I've even re-subscribed to the high-volume cf-talk list!) because having to deal with it online forces me to be more selective about what I read and reply to. The search is also very useful in terms of tracking issues on mailing lists. I also like that you can see an entire thread on a single screen and read it top-to-bottom - the "conversation" handling is an excellent feature. Lets hope they can scale the service fast enough for the growth.
July 6, 2004
If you've tried this lately, you might be a bit confused that the installation doc refers to a different JAR file than you actually get when you download CFMX 6.1. At the moment, most of the links on macromedia.com that lead to a Mac OS X installation doc for CFMX, will lead you to the 6.0 notes. Here's the Installing and Deploying ColdFusion MX 6.1 on Macintosh OS X instructions. The links on macromedia.com should get fixed shortly - apologies for any inconvenience!
The news that various bodies are recommending users abandon Internet Explorer for "more secure" alternatives is getting a lot of coverage in blogland and some people are noticing a shift in the statistics behind browsers visiting their sites. I use Site Meter to track a number of things including browser share and, yes, I've noticed a fairly dramatic shift lately... IE now accounts for only 50% of traffic on my site, Mozilla 1.x has shot up recently to 37% with Safari at 4% and other Mozilla / Netscape variants making up the balance. This seems to represent a shift amongst tech-savvy folks but it does make me wonder whether Joe User is switching from IE to Firefox?
July 2, 2004
I decided to take CFEclipse for another test drive today, to compare it with He3. Let's start with the install process. There are two ways to install He3 - either download the complete Windows or Mac installer which includes Eclipse 3.0 or, if you already have Eclipse installed, use the built-in mechanism to install just the He3 plugin directly from RichPalette's site. CFEclipse is a ZIP file download from the cfeclipse.tigris.org web site which you unzip and manually move into the Eclipse plugin directory (and restart Eclipse). He3 wins there.
Open them both up (you can run both regular Eclipse and He3 side-by-side if you want) and He3 has a CFML perspective, CFML project / template (cfm) / component (cfc) whereas CFEclipse uses the regular perspective and requires you to add a 'simple' project when you want to use CFML. He3 wins there - it feels less like an add-on and more like it really understands ColdFusion.
CFEclipse has an outline view. I never liked the tree view in Dreamweaver's tag inspector (it was removed in DWMX 2004) so the outline view doesn't really interest me - I just find it too cumbersome for large files. He3 uses a perspective that doesn't have the outline view. For some people CFEclipse wins here but I think it's a wash - I prefer the cleaner perspective layout of He3.
Moving on to code hints etc. At the moment, CFEclipse definitively has the edge in terms of the layout and quality of the hints - showing more information about the tag and type information in the attributes. However, over the course of about an hour, CFEclipse code hints mysteriously switched off on a couple of occasions and I had to restart Eclipse to get the working again. He3 lets you turn the code hints on and off and set the delay before they popup. Overall, it's a close run thing here but CFEclipse wins by a nose.
Preferences. CFEclipse doesn't seem to have a separate set of preferences so He3 wins here.
Color coding. CFEclipse code-codes numbers and strings which He3 doesn't. CFEclipse wins here (but I know RichPalette is currently reworking the whole color-coding thing so it may well take the lead here soon).
Convenience buttons and menu options. CFEclipse provides shortcuts for a few tags via menu options and buttons, e.g., surrounding code with a comment or # signs etc. I know a lot of CF Studio / HomeSite+ users like this but, even after I'd set it up in Dreamweaver, I pretty much never used it. Still, I'll give CFEclipse a win for that. It should be easy enough to add to He3.
Regex / XPath. CFEclipse provides no special support for these whereas He3 provides dedicated panels to let you code-by-example. You paste text into the main regex window and then try out various patterns in the regex field and He3 shows the matches live. When you get the effect you want, copy the pattern into your code. Great for debugging regex patterns too. Similarly for XPath. I know a lot of CFers use regex and I think we'll see a lot more using XPath over the coming year so I'd say these features are both very useful. He3 wins hands down here.
Framework support. CFEclipse provides no special support for Fusebox or Mach II. He3 currently provides a special editor for the Mach II XML configuration file and is promising similar support for the Fusebox 4 XML configuration file. It's useful enough in its current form and I hear plans for improvements are in the pipeline. He3 wins here.
That's how it stacks up in my view. If I've missed some important CFEclipse functionality, let me know, but I looked around all the menus and that's all I could find.
Open them both up (you can run both regular Eclipse and He3 side-by-side if you want) and He3 has a CFML perspective, CFML project / template (cfm) / component (cfc) whereas CFEclipse uses the regular perspective and requires you to add a 'simple' project when you want to use CFML. He3 wins there - it feels less like an add-on and more like it really understands ColdFusion.
CFEclipse has an outline view. I never liked the tree view in Dreamweaver's tag inspector (it was removed in DWMX 2004) so the outline view doesn't really interest me - I just find it too cumbersome for large files. He3 uses a perspective that doesn't have the outline view. For some people CFEclipse wins here but I think it's a wash - I prefer the cleaner perspective layout of He3.
Moving on to code hints etc. At the moment, CFEclipse definitively has the edge in terms of the layout and quality of the hints - showing more information about the tag and type information in the attributes. However, over the course of about an hour, CFEclipse code hints mysteriously switched off on a couple of occasions and I had to restart Eclipse to get the working again. He3 lets you turn the code hints on and off and set the delay before they popup. Overall, it's a close run thing here but CFEclipse wins by a nose.
Preferences. CFEclipse doesn't seem to have a separate set of preferences so He3 wins here.
Color coding. CFEclipse code-codes numbers and strings which He3 doesn't. CFEclipse wins here (but I know RichPalette is currently reworking the whole color-coding thing so it may well take the lead here soon).
Convenience buttons and menu options. CFEclipse provides shortcuts for a few tags via menu options and buttons, e.g., surrounding code with a comment or # signs etc. I know a lot of CF Studio / HomeSite+ users like this but, even after I'd set it up in Dreamweaver, I pretty much never used it. Still, I'll give CFEclipse a win for that. It should be easy enough to add to He3.
Regex / XPath. CFEclipse provides no special support for these whereas He3 provides dedicated panels to let you code-by-example. You paste text into the main regex window and then try out various patterns in the regex field and He3 shows the matches live. When you get the effect you want, copy the pattern into your code. Great for debugging regex patterns too. Similarly for XPath. I know a lot of CFers use regex and I think we'll see a lot more using XPath over the coming year so I'd say these features are both very useful. He3 wins hands down here.
Framework support. CFEclipse provides no special support for Fusebox or Mach II. He3 currently provides a special editor for the Mach II XML configuration file and is promising similar support for the Fusebox 4 XML configuration file. It's useful enough in its current form and I hear plans for improvements are in the pipeline. He3 wins here.
That's how it stacks up in my view. If I've missed some important CFEclipse functionality, let me know, but I looked around all the menus and that's all I could find.
RichPalette, Inc. has just announced the public availability of the beta version of their forthcoming He3 editor. Installers are currently available for Windows and Mac OS X - a Linux installer is scheduled.
This public beta is based on the Eclipse 3.0 Final release (and therefore installs that under the hood - so it's a big download). The Mac install process was seamless with a standard double-click package into
This public beta is based on the Eclipse 3.0 Final release (and therefore installs that under the hood - so it's a big download). The Mac install process was seamless with a standard double-click package into
/Applications/He3. I'd exported my prefs from Eclipse and imported them into He3, then I imported my Eclipse projects and I was up and running in about five minutes.
So far, all the information about Blackstone has been third-hand, based on what bloggers have been saying after seeing Ben preview the product. Now you can read information straight from the horse's mouth: Macromedia - Developer Center : The Blackstone Tour Report. This talks about all the features that Ben has been previewing (with the exception of the event gateway) and also gives some more information about what might be happening around CFCs, including serialized CFCs (so that you can replicate CFCs in
session) and access to CFC code from Java.
July 1, 2004
Paul has provided some cfcUnit documentation but I've heard that a few folks are having some problems so I thought I'd share my experience of getting things runnings.
First off, I didn't start by reading his documentation (I never read documentation until I get stuck). I simply unzipped the download file which gave me a
My directory tree now looks like:
An alternative to moving the CFC directory around would be simply to add a Custom Tag Path pointing at
First off, I didn't start by reading his documentation (I never read documentation until I get stuck). I simply unzipped the download file which gave me a
cfcunit
folder. I moved that into my CF document root. Then I edited cfcunit/ui/index.cfm
and changed the call to expandPath()
so that the path began with "/cfcunit/ui/
instead of just "/ui/
(the code assumes the path /cfcunit/ui/...
so this is the minimal change to get things working). Finally I created an org
directory in my document root and moved Paul's org.cfcunit
directory into it and renamed it to just cfcunit
. (I'm nervous of directory names with dots in them!) My directory tree now looks like:
{docroot}/
org/
cfcunit/ (was org.cfcunit)
Application.cfm, extensions/, etc
cfcunit/
ui/
app/, Application.cfm, etc
Then I went to http://{server:port}/cfcunit/ui/ and it just worked. org/
cfcunit/ (was org.cfcunit)
Application.cfm, extensions/, etc
cfcunit/
ui/
app/, Application.cfm, etc
An alternative to moving the CFC directory around would be simply to add a Custom Tag Path pointing at
{docroot}/cfcunit/cfc
based on Paul's original directory structure.



