Dreamweaver tag library for ColdExt RC 1

ColdExt has had support for tag insight in CFEclipse since way back in Beta 1 (wow, almost 12 months ago now!), but thanks to Dave Ferguson's recent efforts you can now have the same tag insight experience in Dreamweaver.

Today, Dave has released an updated Dreamweaver tag library for ColdExt RC 1 so grab it while it's hot!

ColdExt RC 1 released!

Now up on RIAForge is the first Release Candidate of ColdExt. ColdExt is a ColdFusion tag library which makes it easier to build rich user interfaces using the amazing Ext JS library. ColdExt supports multiple CFML engines including CFMX 7, CF8, Railo 3.0.1 and OpenBD 1.0.

This release provides support for ExtJS 2.2.1 plus 6 new demos and 2 new user extensions - fileUploadField and gridSearch.

The main enhancement in RC 1 is to allow the JS and CSS resources for User Extensions to be loaded up front on the calling page, meaning that UX components can now be used in remote pages loaded via Ajax. This can be configured on the onReady tag using the uxLoad attribute, by specifying a comma delimited list of the extensions to load (based on the folder name of the extension in the /ext/ux folder) or by specifying "all" to load the resources for all extensions. For e.g.

<ext:onReady loadingMask="true" uxLoad="all">

Check out the latest demos for a bit more of a taste of ColdExt, and be sure to view the source of each demo to see how easy ColdExt is to implement.


coldext-rc-1


In other news, Kevin Roche wrote a nice series of blog posts on ColdExt back in December documenting some of the issues he faced in implementing some components. ColdExt also got a mention in Episode 2 of the CF Hour podcast by Dave Ferguson and and Michael Sean Becker â€" cheers guys :)

Also be sure to mark your calendars for April 14-16 2009 as the first ever Ext Conference will see the release of Ext JS 3.0! Expect a ColdExt release to follow during April.


If you have any feedback or feature requests for ColdExt please get in touch by leaving a comment here, using the contact form on the ColdExt project page or emailing me directly (my email address is in the readme.txt file in the downloadable zip!)

Running CF7 and CF8 Services with a batch file menu

As a follow up to my previous post on Running CF7 and CF8 simultaneously on IIS7 I thought I would share the batch file I use to manage the starting and stopping of the ColdFusion services and some other tips. Note that this mostly Vista specific stuff, including the batch file itself (it uses the 'choice' command which is different in Vista compared to previous versions of Windows).

When running both CF7 and CF8 on the same development machine I generally set all the services to Manual start-up and set only one of the ColdFusion Application Server services to Automatic (Delayed Start). Delayed Start is a new option in Vista that aims to keep your system snappier at boot up, so any services that are set to Delayed Start won't be started immediately during the boot process and will instead execute later when other services have had time to start and finish using time-critical resources.


cf-services


To manage the starting and stopping of the ColdFusion services I wrote a simple batch file that has a menu for selecting which service you want to start or stop. If you save the batch file as User\Documents\scripts\cf.bat it is easy to have quick access to the file by hitting the windows key and typing 'cf.bat'. You can then right click on the file and choose "Run as administrator" so that the process will have permission to start and stop services.


cf-batch-file


When the script is running you will be presented with a simple, straight forward menu.


cf-service-menu


Below is the full script if you would like to use it. It could be customised to add any other services you might want to start and stop such as MS SQL Server, MySQL, PostgreSQL, IIS, Apache, etc. Note: use the "view plain" or "copy to clipboard" links to easily copy the code, paste into Notepad, and save as cf.bat.

Enjoy!


@echo off
REM ColdFusion Services helper batch file, by Justin Carter
REM http://www.madfellas.com
REM 
REM This script is provided as is, with no warranty of any kind.
REM Use at your own risk :)
 
:menu
echo.
echo. 1) Start ColdFusion 8
echo. 2) Stop ColdFusion 8
echo.
echo. 3) Start ColdFusion MX 7
echo. 4) Stop ColdFusion MX 7
echo.
echo. Q) Quit
 
echo.
choice /c 1234Q /n /m " Choose a menu option:"
echo.
 
if Errorlevel 5 goto quit
if Errorlevel 4 goto stopcf7
if Errorlevel 3 goto startcf7
if Errorlevel 2 goto stopcf8
if Errorlevel 1 goto startcf8
goto quit
 
:startcf8
echo.
net start "ColdFusion 8 Application Server"
REM net start "ColdFusion 8 .NET Service"
REM net start "ColdFusion 8 ODBC Agent"
REM net start "ColdFusion 8 ODBC Server"
REM net start "ColdFusion 8 Search Server"
cls
echo.
echo. ColdFusion 8 Services started
echo.
goto menu
 
:stopcf8
echo.
net stop "ColdFusion 8 Application Server"
net stop "ColdFusion 8 .NET Service"
net stop "ColdFusion 8 ODBC Agent"
net stop "ColdFusion 8 ODBC Server"
net stop "ColdFusion 8 Search Server"
cls
echo.
echo. ColdFusion 8 Services stopped.
echo.
goto menu
 
:startcf7
echo.
net start "ColdFusion MX 7 Application Server"
REM net start "ColdFusion MX 7 ODBC Agent"
REM net start "ColdFusion MX 7 ODBC Server"
REM net start "ColdFusion MX 7 Search Server"
cls
echo.
echo. ColdFusion MX 7 Services started.
echo.
goto menu
 
:stopcf7
echo.
net stop "ColdFusion MX 7 Application Server"
net stop "ColdFusion MX 7 ODBC Agent"
net stop "ColdFusion MX 7 ODBC Server"
net stop "ColdFusion MX 7 Search Server"
cls
echo.
echo. ColdFusion MX 7 Services stopped.
echo.
goto menu
 
:quit

Running CF7 and CF8 simultaneously on IIS7

Recently I started work at a new job in London and found myself needing to do some local development with CFMX7 while still keeping my existing CF8 installation available for local development as well. One option — which is what I did initially to get up and running quickly — was to run CFMX7 in stand-alone mode using the built-in web server, but eventually I needed to be able to switch between multiple projects (web roots) easily because I could be working on more than one project at a time.

Since we use IIS in our production environments it makes sense to use it in a development environment as well, rather than playing with Apache or another web server, and I also wanted to keep everything under a single web server instance so that I didn't have to worry about fiddling with port numbers and and multiple web server services. Thankfully IIS7 makes per-web site configuration really easy with it's web.config files, as you will see below.

Installation

I started with an existing CF8 installation that was originally set up to apply to all IIS web sites. I also store all my data on D: and so the the CFIDE and CFDOCS folders for CF8 were initially installed to D:\inetpub\wwwroot.

When it came time to install CF7 I chose to install it in server mode using the built-in web server. This places the CFIDE and CFDOCS folders for CF7 in C:\CFusionMX7\wwwroot, so you won't have to worry about overwriting the CF8 files.

ColdFusion Configuration

To allow IIS to talk to ColdFusion we need to make sure the JRunProxyService isn't deactivated which you can do by editing C:\CFusionMX7\runtime\servers\coldfusion\SERVER-INF\jrun.xml. To do this just follow the first step in the Adobe TechNote titled ColdFusion MX: Manually configuring the web server connector for ColdFusion MX Standalone. This simply changes the deactivated value from true to false. (You can also use this opportunity to deactivate the JRun built-in web server by editing the same flag just above in the WebServer service config).

Next we need to make sure the web connector DLL's and configuration files are available. These files won't have been installed and/or created when we chose to use the built-in web server so we will have to extract and configure them manually. We could follow the rest of the above TechNote to get up and running, but it has been summarised much better (and specifically for IIS7) on page 6 of a Community MX article called Getting ColdFusion MX 7.0.2 Running on Vista and IIS. Following steps 1 to 7 you will extract the IIS related DLL files from C:\CFusionMX7\runtime\lib\wsconfig.jar and create two configuration files to go with them. Give the ColdFusion MX 7 Application Server service a restart now for good measure.

IIS7 Configuration

In IIS Manager create a new web site as you would normally, with a new web root and using host headers to differentiate between web sites (e.g. create the site in D:\inetpub\cfmx7, give it the host header cfmx7.local and edit your hosts file to alias 127.0.0.1 as cfmx7.local).

The new site will be created with the Handler Mappings from the top level web server configuration which will be pointing to the CF8 files (meaning if you were creating a new site using CF8 then it would be ready to go without any configuration). To get this site to work with CF7 we just need to change each of the ColdFusion-related mappings to use the web connector that we just extracted and configured above.

 
IIS7 Handler Mappings for ColdFusion MX 7


Select the newly created site in the site tree, double-click on the Handler Mappings icon, and set the executable for each CF-related mapping to C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll. The most important ones will be the wildcard (*), *.cfm(l), *.cfc and *.cfr, though it only takes a few seconds to configure the other 4 or 5 while you're at it.

That should be it, you will now have an IIS7 site running CFMX7! Create a new .cfm file and use <cfdump var="#server#"> to confirm :)

Creating additional CF7 sites

The beauty of IIS7 is that site-specific configuration is written to an XML file in your web root called web.config. This means no more stuffing around with the IIS metabase as in IIS6, and the benefit we get here is that you can keep a copy of this file (like a "template") and then next time you create a new web site that will use CF7, simple copy and paste the file into the web root and you are ready to rock without any additional configuration! This is what my own web.config file looks like:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <remove name="AboMapperCustom-75808" />
            <remove name="AboMapperCustom-75807" />
            <remove name="AboMapperCustom-75806" />
            <remove name="AboMapperCustom-75805" />
            <remove name="AboMapperCustom-75804" />
            <remove name="AboMapperCustom-75803" />
            <remove name="AboMapperCustom-75802" />
            <remove name="AboMapperCustom-75801" />
            <remove name="AboMapperCustom-75800" />
            <add name="AboMapperCustom-75800" path="*" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="None" responseBufferLimit="0" />
            <add name="AboMapperCustom-75801" path="*.jsp" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
            <add name="AboMapperCustom-75802" path="*.jws" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
            <add name="AboMapperCustom-75803" path="*.cfm" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
            <add name="AboMapperCustom-75804" path="*.cfml" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
            <add name="AboMapperCustom-75805" path="*.cfc" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
            <add name="AboMapperCustom-75806" path="*.cfr" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
            <add name="AboMapperCustom-75807" path="*.cfswf" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
            <add name="AboMapperCustom-75808" path="*.mxml" verb="*" modules="IsapiModule" scriptProcessor="C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="0" />
        </handlers>
    </system.webServer>
</configuration>


Though I haven't tested it, you could probably use a similar procedure for older releases of CF such as CFMX 6.1, or maybe even future versions such as CF9 ;)

Happy configuring!

Weekend Coding Riffs - Issue #3

This issue is a rather short one, covering a band which I've only just discovered in the last few days.

They are Amplifier, an alternative / progressive rock trio from Manchester, UK. For a three-piece band with only 2 full length albums under their belt they have a huge, solid sound with a good range of variety in their songs. Their super fat guitars remind me of a cross between the early 90's sound of The Smashing Pumpkins, the presence of Porcupine Tree, and the bass, digital effects and riff wizardry of Tool. Pretty damn good combination right there I think!

According to their entry on Wikipedia, Amplifier have toured with bands such as Deftones, Opeth, and Porcupine Tree. They have also finished recording on their 3rd studio album which should be released in the coming months - something to keep an eye out for.


amplifier-page


I don't have any players to embed in this issue, so head on over to the Amplifier page on last.fm to listen to their top 10 most played songs. I've been playing them a bit and would love to pick up their albums! Dear Santa... :)

Blog redesign, Twittering, OS X and more...

About a week or so ago I gave my blog another redesign :D This time I've gone a bit more minimalist by using just a couple of gradients and some old-school pixelated design elements for the logo and edge of the content area. In my search for an image to go in the header I thought of using the CF logo somehow but didn't quite know what to put with it; then I stumbled on Kai Koenig's "coolest CF t-shirt ever" photo on Flickr featuring the (slightly modified) CF dude from the AIR Launch Party poster by eboy. <boratVoice>Great success!</boratVoice>

Next, I've begun using Twitter on a regular basis now and you can see my last few messages on the madfellas home page or follow me if you're also using Twitter. I'll mostly be twittering about CF and tech related topics with the usual funny web stuff thrown in. At the moment I'm using the TweetDeck client and I'm finding it quite good.

Over the course of the weekend I'll be playing around with setting up my development environment in OS X along with replacements for my frequently used Windows apps. So far everything is going well and the only things I am really missing are a Windows Media Player 11 which I'm replacing with VLC, and Windows Live Writer which I am running (and composing this blog entry with) using VMware Fusion's Unity feature :)


os-x-live-writer


I've also got a few updates to make to ColdExt in regard to user extensions and some other new features to investigate.

And last but not least... I'll finally be starting work in London next week! More on that to follow later ;)

Ext JS 3.0 Designer tool... Whoa!

Jack Slocum has shared some sneak peak screencasts of the new Designer tool in Ext JS 3.0, and all I have to say is: coooool! It's a slick looking AIR app (built with Ext JS obviously) which lets you drag and drop UI components and data stores onto a canvas to design your UI with no real coding at all. Jack says that it is a tool that he would use himself which speaks volumes for how powerful a tool it will be.

Check it out for yourself :)

Watch the Ext JS 3.0 Designer preview

Weekend Coding Riffs - Issue #2

This issue in my Weekend Coding Riffs series is a bit of a tribute to one of my all time favourite bands Porcupine Tree. Porcupine tree are one of those bands that are hard to put into a box because their back catalogue has so much depth and range in musical styles, from psychedelic rock through to progressive metal. Steven Wilson creates awesome guitar riffs, Gavin Harrison is an amazing drummer, and the whole package of Porcupine Tree playing live is, I think, unparalleled. A dash of Porcupine Tree in my headphones definitely puts me into the coding zone. \m/

The first two tracks in this playlist, Blackest Eyes and Shallow, were chosen because they bring a smile to my face every time I hear their opening riffs; if you're a guitar player you probably know what I mean :) How is it possible to fit so much rock into a riff? Both of these songs, as Jack Black would say, "rock my f#$!^@& socks off".

The last two tracks, Arriving Somewhere and Anesthetize, are both monsters at 12 minutes and over 17 minutes respectively, but these songs prove that a "long" track doesn't necessarily mean boring or repetitive. In fact most of my favourite songs probably weigh in at well over 7 or 8 minutes, and I'd liken it to contrasting novels (and in some cases a series) against short stories. They're all great for different occasions, of course, but when you want to listen to something with some real substance and weight behind it these songs are excellent.

So go on - sit back, press play and write some code!
 


Discover Porcupine Tree!

 

P.S. You're going to need a good 45+ minutes to give these songs a listen right the way through, but it's most definitely worth it ;)

Rolling with a new design, settling in to London life

It's been almost a year since I've given madfellas.com a redesign so I've rolled in a bit of grungy stuff while still keeping a similar colour scheme and layout. I've used a large background image with a gradient on purpose so that I can switch it out easily, at any time, to change the mood of the site. It's not exactly a designer-quality layout, but hey, it's not bad for a nights work :)

We're all settled in to our new place in Shepherds Bush (yes, yes, I know, that's where all the Aussies live!) and have had a relatively quiet week; except for the couple of times we have been to the new Shepherds Bush Westfield shopping centre, that place is nuts!

My girlfriend Monique is finding it a bit tough on the web design job front, even though she has a nice portfolio and plenty of experience. On the CF job front it's pretty quiet too but I'm hoping to get some good news before the end of the week about possible interviews - fingers crossed. We'll see how things go for us in the coming days/weeks.

I'm also off to the UKCFUG tonight which should be cool. It'll be the first CFUG meeting that I've had the opportunity to attend, and hopefully not the last :) Maybe I'll see you there...

ColdExt Beta 3: Lots of Ext JS goodness!

Quite a lot has happened in this release of ColdExt, but I'll try to keep things as short and sweet... If that's possible :)

If you haven't heard of ColdExt before you are probably wondering what it is. ColdExt is a ColdFusion tag library which makes it easier to build rich user interfaces using the amazing Ext JS library. ColdFusion 8 has built-in support for some of the features of Ext JS 1.1, but the idea behind ColdExt is to stay up to date with the current Ext JS release (currently version 2.2) while providing support for as many UI components as possible, and to support CFMX7 as well as other CFML engines (more on this below).

I had originally planned to get Beta 3 out the door much sooner, but after reviewing the small amount of code generation I was doing I thought I should take it a step further. The result is that almost 75% of the ColdExt tags are being generated from a set of easy to update metadata (courtesy of some data scraping). In the event of a new version of Ext JS being released (as was the case with Ext JS 2.2) I can update existing tags with modified attributes or help text, across the whole library, in minutes instead of hours. This also makes it much easier to add new tags to support new components, which is fairly evident from the tag counts in this release (see below).

Making an appearance in Beta 3 is support for User Extensions which live in the new "ux" tag namespace, i.e. <ux:tagName>. The first wave of supported extensions include Grid Filters, Grid Group Summary, Grid Panel Resizer, Grid Row Expander, Grid Row Actions and Portals. If you're after support for a particular extension please put a request on the ColdExt forums and I'll see what I can do.


The changes to ColdExt Beta 3 in a nutshell:

  • Supports Ext JS 2.2
  • 12 new Ext core tags, 11 new User Extension tags (supporting 6 extensions) and 11 new Demos
  • Support for new UI components such as Checkbox and Radio Groups, Date Picker (different to Date Field), Label, Progress Bar and Status Bar
  • Support for User Extensions such as Grid Filters, Grid Group Summary, Grid Panel Resizer, Grid Row Expander, Grid Row Actions and Portals
  • 75% of the tags built by code generation, improving consistency and reliability
  • The <ext:init> tag is now implicit in the <ext:onReady> tag and so is no longer required on every page, however it is still useful for page-level settings such as turning on ext-all-debug.js with the debug attribute 
  • New loadingMask boolean attribute on the <ext:onReady> tag to enable a loading indicator while the page and resources load
  • New passThrough attribute on all tags to allow insertion of arbitrary JSON-formatted data (including potentially unimplemented Ext config properties) directly into Ext components for greater flexibility
  • New attributeCollection attribute on all tags to support passing a ColdFusion Struct into the tag as attribute config data
  • All string type attributes formatted with JSStringFormat() to avoid JavaScript errors
  • Updated ColdExt XML dictionary for CFEclipse tag insight


Also, good news on the CFML engine compatibility front is that ColdExt is now supported on Railo 3.0.0.008. The latest version on the Railo site is still 3.0.0.005 but you can update to the latest preview release by following the preview patch instructions.

Unfortunately there is no OpenBD support just yet as there is a bug with nested custom tags that I'm waiting on a fix for, but hopefully ColdExt will be supported on all major CFML engines soon. Feel the love :)

So without further ado, download ColdExt Beta 3 and see the demos in action!


P.S. I moved to London last week and I'll be attending the UKCFUG meeting on 6th November, so feel free to say "Hi" if you see me because I don't know any CF'ers in London yet :) Happily I've found a great room to rent which I'll be moving into on Sunday with my girlfriend, so now the big challenge is to find a job at a time where the world's economy is in rather poor shape. Fingers crossed...

Weekend Coding Riffs - Issue #1

I love coding while listening to music. Not only does it help block out unwanted background noise - like phones ringing, people typing loudly or the bad jokes of the office clown (just kidding, those things don't bother me so much) - a good guitar riff and some heavy drumming puts me "in the zone" for coding.

(Weird observation: I've frequently had the experience where I've been listening to music at work and paused a track to get up and go to lunch, and upon returning 45 minutes later I've pressed play and the resumption of the song has put me straight back into "the zone"; almost like I didn't have a break in concentration. Weird but cool!)

So I thought I'd start sharing some of the music I like, in a series of "Weekend Coding Riffs" postings. There are a couple of good music services around which let you share songs or playlists online, such as Deezer (my favourite at the moment, supports playlist) and Songza (good for individual songs). I know there are other services like Pandora but these days it's unfortunately restricted to the US only. If you know of any others that work well then let me know ;)

I had a few great songs in mind today from upcoming Australian artists but some are really quite difficult to find online. Instead, I've just picked a couple of songs with similarly themed names, from two of my favourite Aussie bands. Without further ado...

Cog - No Other Way

Via last.fm/music/Cog:

"Organic in the sense that Cog play their instruments, some people would say Cog’s music resembles some sort of progressive rock that flows effortlessly from thick slabs of distorted guitars, twisting rhythms through to vast playgrounds of ambient organospace and back again. Not shy to incorporate sequencing and sampling to propagate more ideas in a live and recording environment, Cog feels this has opened the possibilities for more musical exploration."

This is the opening track from Cog's latest release. This song has an amazing climax and is just a taste of the power they deliver in the other tracks.


Discover Cog!


If you're a fan of any progressive rock / metal you need to listen to the whole album! :)

Karnivool - The Only Way (cover)

Via last.fm/music/Karnivool:

"Karnivool is a five-piece music group from Perth, Australia. Their music style is a combination of melodic progressive rock and alternative rock, with alternative metal influences. Major influences of the band are Nirvana, Meshuggah and Carcass. Capturing a perfect blend of both melodic beauty and heavy, spine-bending rock, Karnivool will appeal to anyone who desires a truly unique sound."

This song is cover of an original song by Gotye, but the Karnivool guys do it amazing justice. I've seen them play this song live and my spine was tingling the whole time, so turn it up loud!

Jump on over to their MySpace page to check out some of their original songs. (In fact, the version of The Only Way on their MySpace page is much better quality, but I don't think it's possible to embed them, bah!).


I hope someone finds these tracks interesting, and maybe in a fortnight I'll whip up another post. (Definitely not next weekend though, because I'm moving to London ;) Haha...)

More Entries