You want it, you got it!
Ok, so I have finally gone and done it. A number of people have been giving me a bit of grief over this, and while the cfcUnit site hasn't yet been updated, I have gone ahead and made available for download cfcUnit's next release, 1.2 Beta 1.
The major enhancement brought forth in this release is the inclusion of a rather versatile Ant task, so now tests can be run from within Eclipse without much trouble or as part of any build/deployment process that employs Ant.
I will post more about this and update the cfcUnit site later on today, but the link below will take you to the download page:
http://sourceforge.net/project/showfiles.php?group_id=100854&package_id=126568&release_id=483297
Let me know how it goes. I look forward to any feedback.
cfcUnit at CFUnited
There has been a lot more attention paid to testing CFCs this year at CFUnited, and cfcUnit is right there at the front when discussing unit testing one's CFML. Perhaps the biggest proponent of unit testing has been John Paul Ashenfelter and his talks on Agile Development and Testing ColdFusion. Additionally, I have seen demos of unit testing by Chris Scott when showing off different functionality of the ColdSpring framework.
A side effect of this attention has been that there will soon be a new Ant task written by John Paul that will allow cfcUnit to be run as a part of an automated build, but it could also be run from within Eclipse just as other unit testing frameworks do now.
Dave Ross and ColdSpring at the Fusebox Conference
New Tartan presentation available via Breeze
A couple of hours ago I gave a presentation introducting Tartan via Breeze. If you weren't able to watch it live, you can watch a recording.
New Tartan Website
I just got finished with my first go at a web site for the Tartan framework. It is a work in progress, but you have to start somewhere. It can be found at:
http://www.tartanframework.org
Much of the content has been contributed by Jared Rypka-Hauer, so if you have anything you want to see there, let me know and we can talk...
Anyhow, check it out!
Mach-II under fire!
There has been a interesting discussion on the Mach-II mailing list recently regarding the very future of the framework. Growing up is hard to do.
Peter Farrell has done a good job of summarizing the debate on his blog. Check it out.
Updated Tartan Framework files available...
There is a new set of files for Tartan. Check it out:
http://sourceforge.net/project/showfiles.php?group_id=100854&package_id=141144
Oh, and let me know if you have any problems.
Blackstone is out!
I just found out from John Beynon's blog that Blackstone (or CFMX 7) is now publicly available for download and purchase from Macromedia at http://www.macromedia.com/software/coldfusion/buy.
We've been waiting a long time, but no more! Go and get it!
New Tartan mailing list
A couple of people have asked about any possible mailing list, so I went ahead and created one at topica.com. The main page for the list can be found at http://lists.topica.com/lists/tartan. You can join the list from this page.
Tartan available for download
Ok, I just went ahead and put the code up to SourceForge as a downloadable zip file. You can get it here: http://sourceforge.net/project/shownotes.php?release_id=297551
Tartan: a new service framework for ColdFusion
Frameworks are a lot of fun to build. Over the last month I have been working on a framework for building ColdFusion service layers. I built it with the intension of making it available locally and remotely using Flash Remoting and web services. I have decided to call this framework Tartan.
Tartan is a command-driven service framework for ColdFusion. It was built to help produce the service layer within a larger application architecture which relies on strict separation or layering of functionality.
All access to the underlying business logic is controlled by public services which are available locally as CFCs and remotly via Flash Remoting and SOAP web services. A service can be composed of any number of commands, each of which implements a discreet operation within the application. These contain the core logic for the application. Commands can communicate with databases via DAOs, manipulate values received from the client, execute other commands and even communicate with services available on other remote servers.
At the center of Tartan are 6 core classes: RemoteService, LocalService, Command, DAO, ValueObject and ExceptionHandler. They provide most of the functionality of the framework, and must be extended by the application developer.
Although I am still working on proper documentation, there is some already, and tartan is now available for download as a part of the OpenXCF project on SourceForge via CVS. I will make it available as a single download really soon.
Event Gateways...
I just got out of Tom Jordal's session on Event Gateways in Blackstone, and I've got to tell you that I loved his presentation style--really laid-back. He went over the way they work and ways to use them, and I really need to get more into this area. I just need to find a good excuse to do it.
The "Sneak Peeks" session is coming up, so I've got to get going.
CFC Birds of a Feather tonight...
Well, tonight I attended the Bird's of a Feather session for CFCs that Ray Camden was good enough to set up for us. It seemed to be a more diverse group than last year and more people seemed to be interested in how things are done and why. It wasn't the gripe session that last year tended to be, and instead questions of "How do I learn how to use components?" were more important. We tended not to focus on what they could not do and instead reflected on different solutions to similar problems.
One person suggested starting with database queries and moving them into components one at a time. Really, the available documentation and body of knowledge since last year has changed quite a bit as more CF developers have embraced OO techniques using CFCs.
We also covered the need for good code generation capabilies similar to those in existance for Java developers--especially for writing boiler-plate code like database CRUD functionality.
Tom Schreck demonstrated a phenominal tool that will create a CFC, database tables that map to that CFC and the form for dealing with that CFC all in one place. He's spent quite some time on it, and it is something worth looking at and investing time and support in.
I also inquired within the group to see if anyone was using cfcUnit and if so what they thought of it. A couple of people in the room were familiar with it and liked it. Once again, I was reminded of the need for even more and better documentation... something I will have to work on.
Anyhow, it was a great session and I hope to get a chance to follow up with some of the attendees later on this week.
CF_Underground Uncovered
I spent the day at CF_Underground today, and I'm glad I did. There were great presentations on using CF with Flex, e-commerce security, extreme programming, creating personas, and software architecture and design patterns. Hal couln't be there, but Michael Smith and Shlomy Gantz did a good job of filling in at the last minute. Lots of good ideas floated around in the many discussions of the day.
There were also a lot of familiar faces from the last CFUN and MAX conferences. Hopefully the guys from Interakt will have more beer opening tricks to share before the week is over!
Anyhow, it's Halloween and the French Quarter should be interesting... I'll add more comments later.
Off to New Orleans!
Well, I'm off to MAX tomorrow morning and should be arriving in New Orleans tomorrow evening. This year should be good for us CFer's since Blackstone is just around the corner, so I'm really looking forward to this next week.
Should anyone want to to talk about cfcUnit, or possibly the OpenXCF, please corner me--I'd be glad to hear whatever you have to say.
Mach-II 1.0.10 Just Released!
I just read that the next point-release of the Mach-II framework has just been released. Some bugs have been fixed and some enhancements have made it in as well. One that I find interesting is that Plugins now execute in the order in which they appear in the configuration document. To get the latest version go to: http://www.mach-ii.com/code.cfm
New Mach-II Exchange
This was just posted on the Mach-II mailing list:
In the spirit of sites like cflib.org and cfczone.org, I've added an "Exchange" to the mach-ii.info site. Check it out http://mach-ii.info/index.cfm?event=exchange and don't forget to submit your code.
Thanks,
Phil
There is another CFML engine on the block
Over the last couple of days there has been discussion about a new CFML engine called railo which is currently in Apha 3. It is written in Java and will run as a standalone application via an embedded webserver or as a J2EE servlet on an application server. While not a complete implementation yet, a quick glance at what is implemented is rather impressive. You can download the latest release from their site (only ~4Mb), unzip the files and start it right from there without any further configuration. Just point your browser at port 8008 (its default port) and it dumps all the built-in scopes using <cfdump>.
Review of MachII
In his blog, ColdFusion vs. Java, Simon Wacker talks about converting an existing ColdFusion application to MachII. For completeness he also implemented it in Java using the Spring framework.
In the final analysis he found the Java version the best and most flexible. I think he misunderestimates the true potential of CFML and I don't really agree with his assesment of MachII as not being as "flexible" as other frameworks. Give it a read and share your thoughts.
cfcUnit at BACFUG
Well, tonight I finally presented cfcUnit to BACFUG. I didn't have any slides prepared, so we just discussed some general concepts of unit testing and best practices. We went over a bit of code and I just created example test code as we went along to answer specific questions that people had.
People wanted to see how it worked, what it took to get started writing tests, and how it could be extended to provide more assertion functions. I think that the code-centric look at cfcUnit worked out rather well. In fact, we even found a bug in one of the error message display functions--one which I just fixed.
I also showed how you could use the framework without using MachII to run the tests in about 5 or 6 lines of code in a standard .cfm file. It was a good excercise and it pointed out that a non-MachII test runner needs to be included in the distribution. This will allow someone to see how it works without having to worry about or understand how MachII is working.
I'll probably do that this weekend and publish the updated version on right away.
Wireframing in Mach-II
A couple of days ago I started working on a new site and all I had was a preliminary set of IA wireframe documents. The site is a rather small one, and so I decided to play around with building a basic online wireframe of the it.
What did I do? I decided to just create a view template for each each page in the site and I gave each page its own public event in the config file. I also created a sub-view and a private event for each section navigation header. I then created a final view template and private event for the rendering of the complete layout.
All I needed to do then was link them all together. I did this with a [preView] plugin that determines if the current page is part of the IA wireframe (public events). If the page is in a section that has its own navigation, it announces and event to render that view. It then announces the final event that assembles the output with the global header and footer, optional section navigation, and the main page.
The plugin is able do to this because of a second XML configuration file that contains the sections and pages within the IA and the relationship between them. What this gives me is a mach-ii.xml file that has all of the public events and views defined without any of the information required for wireframing. What I can now do is gradually convert or swap out views associated with the wireframe with functional pages that implement the display while adding contoller logic to the config file--all without having to mess with the linkages defined by the wireframe.
When all done, I had only spent an afternoon putting this together. I probably could have done this before I ever heard of MachII, but the path I took towards the solution was really illuminated by the framework.
Gotta love a tool that guide you to an such a simple yet elegant solution.
White Screen of Death
Introductions
My name is Paul Kenney, and this is the first entry for this blog and well, I'm pretty excited. Not just because I have a blog, but because this blog is implemented using Mach-II! You might notice that this looks very much like Ray Camden's blog application, and that's because it is, just massively reworked to work in a totally different way.
What is this blog all about? Hell if I know. A good start would be ColdFusion and perhaps Mach-II, design patterns and general object-oriented ColdFusion (yes, it is OO if you want it to be!).
The code for this blog will be available very shortly--I just have to write installation docs and zip it all up. Give me a week.
If you have any suggestions for this blog, let me know and I'll see what I can do. I'll have a contact form up shortly.
Enjoy!