Dan Mackey On ColdFusion Development

ColdFusion, Java, .NET, AJAX, DHTML development and general programming. Daniel is owner and Administrator of CFTagStore.com and works for an Application Development Company in Ireland called Digital Crew. His interests cover all areas of programming in multiple languages with a particular interest in Internet Technologies.

All Articles tagged : ColdFusion
2010-04-29 13:44:00.0

Getting JSP files compiling in Railo

As part of the code samples we are writing for the Teamwork Project Manager API, I needed to get JSP pages compiling. As I have switched mainly to Railo for all my ColdFusion development, I wanted to use that servlet engine and resin to test my work

My knowledge of Resin is pretty poor so this took me a while to figure out (especially the Class Path to JDK bit) but it may help someone else in the same position.

  1. Open up c:\railo\conf\resin.conf
  2. Add in the following to <class-loader> -> <tree-loader path="C:/Program Files/Java/jdk1.6.0_18/lib/"/>
  3. Open up c:\railo\conf\app-default.xml
  4. Uncomment out:
    • <servlet-mapping url-pattern="*.jsp" servlet-name="resin-jsp"/>
      <servlet-mapping url-pattern="*.jspx" servlet-name="resin-jspx"/>
      <servlet-mapping url-pattern="*.php" servlet-name="resin-php"/>

  5. Uncomment out:
    •   <servlet servlet-name="resin-jsp" servlet-class="com.caucho.jsp.JspServlet">
          <init>
            <load-tld-on-init>false</load-tld-on-init>
            <page-cache-max>1024</page-cache-max>
          </init>
          <load-on-startup/>
        </servlet>

        <servlet servlet-name="resin-jspx"
                 servlet-class="com.caucho.jsp.JspServlet">
          <init>
            <load-tld-on-init>false</load-tld-on-init>   
            <page-cache-max>1024</page-cache-max>
            <xml>true</xml>
          </init>
          <load-on-startup/>
        </servlet>

        <servlet servlet-name="resin-php"
                 servlet-class="com.caucho.quercus.servlet.QuercusServlet">
        </servlet>

        <servlet servlet-name="resin-xtp" servlet-class="com.caucho.jsp.XtpServlet"/>

  6. Wait for Railo to restart or Restart it in Services.

Bingo. JSP pages will now be processed along with CFM files

Tags: ColdFusion | Java | JSP | Railo | Tips
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [1] - Leave a comment
2009-01-15 19:57:00.0

CompareHTMLComponent : JAR to compare two HTML fragments

After my initial post yesterday CFX_CompareHTML ColdFusion HTML diff custom tag I got quite a bit of feedback and one of the items raised was that some people dont like CFX tags and I should use JavaLoader to use the JAR file from within ColdFusion. (Thanks Dan Vega)

I have uploaded a JAR file called CompareHTMLComponent which allows you to do this.

To call the diff component use the following:

<cfset paths = arrayNew(1)>
<cfset paths[1] = expandPath("CompareHTMLComponent.jar")>
<cfset loader = createObject("component", "javaloader.JavaLoader").init(paths)>
<cfset compareComponent = loader.create("CompareHTMLComponent")>
<cfset diff = compareComponent.init()>

<cfoutput>#diff.compare("Some HTML","Some more HTML")#</cfoutput>

As always, feedback is most appreciated so hit me with your thoughts in the comments!

The JAR file and examples can be downloaded from here :

DOWNLOAD PACKAGE

Requires Java 1.5 JRE to be installed or it will throw an exception! ColdFusion 8 & Railo 3 should have this but CFMX7 may not.

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [19] - Leave a comment
2009-01-14 14:29:00.0

CFX_CompareHTML ColdFusion HTML diff custom tag

Following on from my last post I have released Version 1 of my ColdFusion HTML Diff Custom Tag, CFX_CompareHTML.

When we wrote Teamwork Project Manager one of my jobs was to compare versions of Notebooks which were marked up using HTML.

I did lots of searching and found Diff.cfc which did a line for line comparison but did not represent the changes in HTML format, it only output the differences line-by-line with all the HTML viewable.

Diff.cfc is perfect for text or source code but we needed something a little bit more user-friendly.

A great start on this was DaisyDiff,  a Java library that diffs (compares) HTML files.

The problem with this was that I had to use CFExecute and some timeouts, writing to the drive etc to get some results. It soon became a nightmare on large files so I decided the best thing to do was to build a CFX tag around the main components of DaisyDiff.

CFX_CompareHTML was born.

You can call the tag using :

<cfx_CompareHTML left="Some HTML content" right="Some more HTML Content">

The tag can be downloaded from here :

DOWNLOAD CFX_COMPAREHTML

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [8] - Leave a comment
2009-01-07 14:58:00.0

Railo 3 : Adding Java CFX Tags

I have a small project that I am working on that needs a Java custom tag that I'm writing. I need this running on ColdFusion 7/8 and Railo 3.

Adding the CFX to CF is fine and I had no problems, except that its laborious. Having to place the file in the right folder, adding that folder to the Java Classpath and restarting CF Application Server.

Railo is a little different. Infact, its a bit easier once you know.

Everytime Railo starts up it runs through the Railo/lib/ folder and adds all JAR files to the Class Path, saving you the hassle of adding them manually.

You still have to add the CFX tag using the Administrator though.

BTW : Railo 3 Community Administrator doesnt have a CFX option in the menu anymore (V2.0 had it) but you can call the page directly using:

http://localhost/railo-context/admin/web.cfm?action=resources.cfx_tags

Another thing to note is that only Jar libraries are allowed in Railo. I created a simple CFX tag using Eclipse and compiled it to TestTag.class.

In ColdFusion, I was able to place this in a Java Class Path accessible folder, restart the service and add the CFX tag using the Administrator. Bingo, tag ran when called in my CF template.

No way could I get this to work in Railo. Because the class path is built up from a folder on startup that enumerates JAR files, .class files would not get loaded.

To fix this, I exported the CFX to a JAR of its own in Eclipse and did the steps above.

Hopefully this will help someone in the same bind. I love Railo but the lack of documentation is killing me. Gert is very good responding by email but sometimes you need answers right away!

Once I finish this little project, I'll release the Java CFX on my blog. Its going to be cool ;-)

<hint>HTML Diff Tag</hint>

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [4] - Leave a comment
2007-10-04 09:42:00.0

ColdFusion Powered Teamwork Project Manager Released

We got there!

After a gruelling few days hard work and an extremely long day yesterday, Topper and myself finally hit our launch milestone and Teamwork Project Manager went live

Already the feedback has been excellent and a roadmap of features will be defined and uploaded today sometime. People really really like the UI and the Teamwork PM approach to Project Management

Some of the features I cant wait for myself, such as:

  • Project Notebooks - Like a mini version comparing word processor without the crap
  • Windows App (My Baby) - A tabbed multiple project installation host for TeamworkPM running in the tasktray - PS:Its cool! C# .NET if your interested
  • Dedicated File Section - Upload, catagorise and store all your files. Have it working but not live yet. Use the very cool CF_ProFlashupload for multiple file uploads
  • Data Export - Various options to export data
  • Developer API - Kinda there but no documentation
  • Many more....

 

Well, enough of the talk, try it out yourself : Signup FREE to Teamwork Project Manager

Topper & Dan launching Teamwork Project Manager

Check out more photos from the office : Teamwork Project Manager Photos

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [5] - Leave a comment
2007-09-25 23:56:00.0

Very impressive and affordable live support application

We all have pet applications. The apps that interest us so much as programmers, users and benefiters that we want to write our own. Its that ingrained thinking of a programming mind that you want to write your own version. My pet application is a live support type application written in ColdFusion and a .NET C# Desktop Operator Console with popup notifications.

I have had various incarnations of such a beast over the years and actually had one running that I developed for CFTagStore.com. I have never actually made one to a point that I was happy with.

The reasons were:

  • Make it easy to use
  • Make it fast
  • Make it accurate when checking if someone is browsing, chatting, left the chat etc
  • Make it efficient - this was the big one! I need to have an efficient database design, efficient polling for new messages etc
  • Make it work across multiple sessions on the same browser
  • Make it work if cookies were disabled
  • The list is endless....

The benefits of live support are huge. I dont really believe in pro active chats, I always feel its better to leave the visitor decide whether they need my help. Although, saying that, when you see someone browse your site in realtime and you know they are looking for advice, its hard not to jump in and try and chat to them ;-)

Anyway, there are 100's of different solutions out there. Some are very good but too expensive (operator seat pricing is the main pricing model), some are very expensive and not that good, but I have finally found one that is both GOOD and RELATIVELY CHEAP.

The app is : Chat4Support

The windows application is a nice small download, there is a very good feature set in the FREE version and you get a full featured demo for 15 days for free. If you really cant live without the pro active chats and various other bells and whistles, a one operator seat for 1 year will cost you about Euro 170. Best of all they take a wide variety of payment options.

The free version in my opinion offers everything you could want:

  • Live visitor monitoring
  • One operator
  • One department
  • Multiple simultaneous chats (5 is the max at any one time in the free version)
  • Windows Application with notifications on new visitor, new chat, visitor leaving etc
  • Live Search Keywords - You know how the person came to your site.

After looking at the quality of this app and the amazing speed, I nearly cried. It solves all the problems that hampered my multiple attempts at my own ColdFusion version and they do it with such speed.

The real test for speed that I always use is: Start a chat and see how fast the operator window is notified. Start chatting and close the chat window without signing out of the chat. Now see if the operator is waiting around for a few minutes not knowing the visitor has left the building. In Chat4Support, it was instant. In Firefox and IE. I was impressed.

Another thing that impressed me was there live visitor monitor. It looks like the live visitor monitor in the Windows app is a web browser control and making calls to their server using AJAX. It was bloody fast. The minute I browsed CFTagStore in my browser, the live footprint updated in the windows app.

This isnt the only nice one I found BTW. Another app that I am also going to try is CuteSoft Live Support. The benefit of this app is that you purchase it outright and install it on your own server. While its not ColdFusion based (I couldnt find a CF based one) it is .NET and uses a number of DBS the recommended one being MS SQL Server.

For roughly $190 (about Euro 120) you can have your own Live Support app running on your own server. This also comes with a nice looking .NET Windows Application for the operator console.

After spending hours looking through various solutions and multiple feature sets and pricing models, it has invigorated me into thinking about actually going back and finishing my ColdFusion version. I had got pretty far! This is what I had working last time I looked at it:

  • .NET Operator Desktop program with multiple chat tabs and chat notifications
  • ColdFusion based chat engine using AJAX
  • Server side polling for messages and chat requests
  • Visitor and Operator chat windows with typing notifications

What I didnt have running to my satisfaction was Live Website Traffic - It just wasnt efficient enough. BTW, in my implementation, I used an APPLICATION variable in the form of a struct to hold all the visitor details, chat requests etc as I found it was a more efficient way than 100s of calls to a database.

I would love to work with other ColdFusion developers on such an application, possibly as open-source and release a decent version to the community for free. Any takers?

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [4] - Leave a comment
2007-08-02 17:35:00.0

Securing Your RSS Feeds Using Basic HTTP Authentication and ColdFusion

We are working on a project at the moment that requires secure RSS feeds. We need it to be secure in both browsers and Feed readers such as FeedDemon so decided that Basic HTTP Authentication was the best way forward.

The snippet of code below demonstrates how to force the user agent (browser/feed reader) to prompt for a username and password which in turn ties into our existing users table without messing around with IIS permissions and users etc

<cfset REQUEST.userAuthenticated = false>
 
<cflogin>
    <cfif isDefined("CFLOGIN")>	
	<cfquery name="checkUser" datasource="myDatasource">
	SELECT	u.userId
	FROM	users AS u
	WHERE	u.userName = <cfqueryparam value="#CFLOGIN.name#">
	    AND u.password = <cfqueryparam value="#CFLOGIN.password#">
	</cfquery>
	
	<cfif checkUser.recordcount NEQ 0>
		<cfset REQUEST.userAuthenticated = true> 
	</cfif>
   </cfif>
</cflogin>

<cfif NOT REQUEST.userAuthenticated>
   <cfheader statuscode="401">
   <cfheader name="WWW-Authenticate" value="Basic realm=""My RSS Feed""">
   <cfabort>
<cfelse>	
	<!----------- Continue With RSS output ------------------->
	Output your RSS Code Here
</cfif>

One small sticking problem which took some time to figure out:

On my local development server, the above worked perfectly. When I uploaded it to the production server running Windows Server 2003 Web Edition, the authentication popped up but kept popping up no matter what was entered in the username and password fields. The Realm header text was also not the one entered in the code above. After alot of digging it turned out to be a simple option on IIS that needed to be turned off.

The option to turn off is Directory Security -> Annonymous Access and Authentication Control - Edit - Integrated Windows Authentication

Once you disable Integrated Windows Authentication the whole thing works like a dream!

Not only is this a good way of securing your RSS feeds, its also perfect for Web Services or even securing your whole application. The draw back is that you cant style the login form as it uses the built in browser dialog.

Tags: ColdFusion | IIS | RSS | Security | Tips | WebDev
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [1] - Leave a comment
2007-04-05 16:00:00.0

Teamwork CMS nearly ready to be launched as a free product

Over the last 7 years we have been developing and improving our in-house ColdFusion based content management system christened Teamwork CMS.

Every website, every application and every tool we develop starts out with a basic Teamwork installation. We have just finished a hugely successful job of implementing plug-ins to the architecture meaning that a website or application can have a specific module (e.g: an imaghe gallery) plugged in and live with in 5 minutes with ZERO programming.

Even the plug-ins can have plug-ins. Peter has created a slick installer for plug-ins allowing you to browse the available plug-ins, choose the one you want and insert it automatically!

More information can be found here:

http://documentation.digital-crew.com/index.cfm/page/developmentblog?rbId=14

Examples of plug-ins that have already been developed are:

  • Blog plug-in (The link above is actually running the Blog plugin!)
  • RSS Parser
  • Photo Gallery ( 2 different types)
  • News and Events
  • Event Calendar
  • FAQ
  • Sitemap
  • Document Library
  • And plenty of more to come!

The Teamwork CMS product will be given out free to non-commercial organisations with a small fee per license if you use the product commercially.

All plug-ins are available to all versions with new plug-ins and updates to old ones being added all the time!

Subscribe to the RSS feed for the Development Blog Here

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [5] - Leave a comment
2007-02-07 23:14:00.0

ColdFusion Application Servers

In the early days of our company any dynamic parts of our work were performed using home built C++ CGI executables. We used ISAPI filters and Peter blew me away one day when he wrote a flat-file database in C++.

Unfortunately (or fortunately depending on where you look at it from) our CGI days came to an end when a CD arrived from some trade show. We had got our hands on some kind of new fangled energy source squashed onto a shiny compact disc called Cold Fusion.

At the time I had barely heard of it. I saw a few sites with .cfm extensions and Cold Fusion Modules was bantered around the place but I didnt know what to make of it. We gave it a lash....and havent looked back!

I have been developing in ColdFusion now for almost 7 years, all the way from Allaires ColdFusion 4.0, through Macromedias reign and onto Adobe for MX7 and BETA testing Scorpio.

Since we first started using ColdFusion, we have at times had to develop using other Application Servers such as PHP, ASP and JSP but always reverted back to the RAD and extensibility of ColdFusion. Need something not in the core? Write it as a Java or C++ CFX and interact with core tags seamlessly!

We would be asked in the early days to justify our choice in language. Why CFML? The server license costs a lot and we have never heard of it. Is it safe? Is it reliable? Is it fast? People just didnt get it! They kept asking why we're not using PHP. Why arent we using ASP or JSP?

How did we justify it? Our work spoke for itself. The speed at which we developed apps and the resultant low cost (compared to the cost if we had to use ASP and doubled our fee)

Hell, for a while we were half of the total Irish companies developing in CFML!!

The Cork ColdFusion User Group comprised of Peter, myself and a guy called Dan King. Later we dragged my buddy Karl along just so we could get more free goodies from Macromedia :-) When we travelled to our first ColdFusion Conference on London, the whole Irish ColdFusion development community could have been wiped out if our 6 seater plane went down! :-)

Now though, we dont have to justify it anymore. People have heard of ColdFusion. People have heard of Blue Dragon and at long last we are seeing more and more vendors supplying CFML application servers.

What prompted me to write this entry was my excitement after just downloading, installing and running Railo in all of 5 minutes. And boy was it fast!! I used the Lite version which runs on Jetty on Port 8888 and did a quick CFDIRECTORY dump of my (rather large) c: drive. I did a comparable one in CFMX 6. Railos was SCREAMING fast!

The other thing to push me writing this was the story about Smith Project on Digg and the resultant HUGE thread on CFTalk regarding Railo hosting. I enjoyed the Railo guys indepth responses to some of the comments and his confidence in his product! Well done Gert!

I always envisioned the day where we could write a quick app (lets say a Project Management Application) and deploy it on a client machine nicely wrapped up in a setup.exe program. This would have a Desktop type application housing a web browser control and inside would be our CFML application all running on the local machine. Full access to the systems resources, a datasource (possibly bundle a cut down DB engine with the package) and we would be away on a hack!

When I saw Railo run with little or no configuration, my dream is getting closer to reality. And the licensing is more favourable than BlueDragon for this type of App. Infact when BlueDragon first surfaced a few years ago, we were in talks with them for such a beast.

PCA Onlines Coral was something that excited me at the time but the functionality it not all there and development on the product is stagnant. Also, their interpretation is built using Windows only technologies and is limiting on the platforms we could deploy.

Anyway, if any one has any comments or ideas on any of the above, I would be delighted to discuss it further in the comments section.

Tags: ColdFusion
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [8] - Leave a comment
2007-01-25 14:10:00.0

Annoying IE7 bug with window.opener.document.location

I hate these types of bugs.

I have just wasted an hour of my day trying to figure this out. It works in Mozilla as expected and I havent tried IE6 but IE7 threw a strange error.

I was trying to check if a certain string was in the url of the window that opened a pop-up.

The code I was using that failed was:

I tried everything I could think of to try and test and re-check my code etc. I stripped it all back and thought maybe it was to do with string types so did the following:

Bingo...it worked. Turns out when I concatenate the str variable with an empty string, it solved the problem.

BTW, the code above is taken from the updates I am making to CF_FileManager to allow it to use CF_ProFlashUpload if you have that component in your dcCom folder.

Working pretty well right now!

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [5] - Leave a comment
2007-01-24 20:48:00.0

Two ColdFusion Things I Love

  1. REQUEST Scope
  2. Query Of Queries

Lately, while working on new interfaces for UDI - Digital Crews Database Interface custom tag (written by Peter www.cftopper.com) I was in the need for a simple method of querying a database using recursion with little overhead on the database.

I needed this to build up the path of a node in a { PARENTID, ID, NAME } type table. For instance, if it was a breadcrumb navigation and I wanted a page 4 levels deep, I wanted to know that the path was : Home » About Us » History » Overview when all I had to work with was the ID of the Overview page.

Before the REQUEST scope (CF 4.5 / 5 and earlier) I would possibly have used a SESSION or passed the data all around the shop. Now, I just pop my data in the REQUEST scope and can access it in the recursive custom tag.

Another issue I had was solved by Query Of Queries. I only wanted to hit the MySQL database once and in my example above, before Query Of Queries, I would have hit the database 4 times in a loop. Not good. Now, I do one query against the database and pass the resultant query into the custom tag (or function) recursively. Far more efficient!

One snag was if I passed the query as follows : <cf_myCustomTag query="#myDBSQuery#"> and tried to use it in the myCustomTag.cfm page as follows <cfquery name="QOQQuery">SELECT * FROM #ATTRIBUTES.query#</cfquery> I got an error saying the query wasnt in memory.

To solve it, I created a temp variable called cQuery and set it to ATTRIBUTES.query using <cfset cQuery=ATTRIBUTES.query> and called <cfquery name="QOQQuery">SELECT * FROM #cQuery#</cfquery>

Tags: ColdFusion | Tips
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-10-24 23:40:00.0

I love C# and Visual Studio

As mentioned in my last post, I am learning C# and so far I am loving it!

I have a pretty cool ColdFusion based Live Support application written and started the Operators console in Visual Basic 6 but I decided there is no better way to learn a new language than having to learn it in a productive way. I decided to put the VB6 version on hold and redo it in C#.

And you know what? Its fun! It reminds me of why I love programming so much. The satisfaction of actually accomplishing what you set out to do is second to none.

For me to be completely comfortable with my choice of switching languages, I decided to take all the knowledge I have in Visual Basic and make itty bitty projects accomplishing a specific area. I was pretty hot on the WebBrowser control and could beat it into any shape I wanted so that was the first thing I wanted to do.

Tonight I developed a full tabbed browser in C# with the ability to:

  • Add Tabs
  • Delete Tabs
  • Capture events from the DOM of the selected tab page
  • Interface with my C# application from the JS in the webpage.

The reason I need this is because the ColdFusion Live Support Application takes chat requests from a queue and when accepted by the operator, a new tab is created to hold the chat.

This was a major effort in Visual Basic 6 but it has taken me just under 1 1/2 hours tonight. I even went a bit further and created the whole thing in a reusable class for other projects.

I am really getting to love Object Orientated Programming and hope to use what I learned tonight for my next ColdFusion and Javascript projects.

Tags: .NET | ColdFusion
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [3] - Leave a comment
2006-10-20 01:41:00.0

Efficient MySQL database queries for pagination

Heres a nice little known gem of SQL to help with selecting limited amounts of records from a table. This can be used to pull paginated recordsets from a MySQL database efficiently.

Usually when I do pagination, I do a query on the database and limit the output using

The problem with this is that the whole query is executed and the results filtered out for you by ColdFusion.

I have only ever used the MySQL LIMIT clause with one parameter e.g : LIMIT 10 to return only 10 results but I didnt know you could tell it to start at a specific row and return the next 10 records.

So, the above can be cut down to:

which basically puts all the work on the database and tells it to fetch 10 records from the database starting at record 20.

The ORDER BY is important because the 20 is the row index so it will order the table first and then start at row 20.

A small tip but a valuable one none the less.

Tags: ColdFusion | MySQL | Tips
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [6] - Leave a comment
2006-09-11 23:12:00.0

Scriptable Browser Tag To Send Free O2.ie SMS Texts

Since we set up CFTagStore.com 4 years ago, I have tried many different things to get free SMS text alerts on our sales. With on average 4 sales a day multiplied by 365 at 13 cent per text, we were literally spending too much (189.80 Euro) on something as trivial but necessary as text alerts on sales.

If all 3 people who are involved in the running of CFTagStore.com were to pay for the SMS alerts, we would be 569.40 Euro out of pocket. (Over 4 years - 2277.60 Euro)

The SMS alerts are important to us as sometimes an extra human intervention is needed to successfully deliver the soft products we sell so we used to be shelling that much cash out by sending an email to our O2.ie accounts and using their (rather unreliable and expensive) email-to-text alert service which at the time cost 13 cent per message.

One day, the O2 email-to-text service went down and didnt return for 2 weeks. I wrote numerous emails to O2 explaining that we were paying alot for the service and it was important and got nothing but canned-responses back from a moron who didnt really understand the problem. The answer back? It is working. My answer back? Its not. Return canned-response? We will be upgrading our site in the future and will take your feedback into account.

It was then I said I would write my own app to use the free 500 texts (as it was at the time) to send the alerts to our phones for free. I had done a bit of work on an application that would log into eBay and scrape some information from a users logged in account. The way I went about is was a quick-n-dirty Windows application that used the Microsoft Browser Control coupled with the MS Scripting Control that was called using ColdFusion CFEXECUTE (as a custom tag) and capturing the STDOUT to return to CF. Another nice thing is that even though the core app is a Windows executable, there is no form as such so on the server, you actually never see anything running.

The application was flexible and you loaded it using a host of scripts (either VBScript or Javascript syntax was supported) which let me script a user travelling and clicking through a website. To the host website, it appeared that a user was genuinely using the site so none of the sites could block it in any way. This worked perfectly for years until O2 upgraded (and broke) their site. The security cert they implemented threw a modal security dialog on Internet Explorer (the basis of the Web Browser control I was using) which froze my app. There was no way of using sendKeys or anything to click OK.

Today I managed to tweak the registry on my machine to force the suppression of the dialog and so resumed my free texts through O2. Unfortunately, I lost my source code to the original app so wrote a quick-and-dirty version this evening specifically targeted at O2 and free texts so it doesnt have the generic scripting of the previous version but it does the job!

If anybody wants the code or have a situation in which they may benefit from a scriptable browsing scenario, just email me. I have often thought of adapting the core of the app to help in unit testing etc. Seeing as I lost my original code, on the side at night or in the evenings I am thinking of starting from scratch again and making the solution generic with possibly a wizard for creating the scripts.

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [3] - Leave a comment
2006-09-11 16:05:00.0

RSS Feed Counter

For a while now, I was interested in knowing how many actual subscribers I had to my blog. While my Blog stats showed me general stats, it did not show me a count of the RSS subscribers. Luckily, Peter had the same idea and wrote some handy code which I used as a basis for my tracking.

I added in a few extra fields so capture the user_agent and remote_host fields aswell as the last date the feed was consumed.

I reckoned Peters way was fairly clever and was simple to implement.

The basis is to use CFHEADER to send a message of Moved Permanently so the users agent would update their feed which infact tacked on a UID to identify them.

By checking to see if the UID was present on subsequent calls, I could update the other fields.

Below is a shot of the code and it is short and should make alot of sense.

I also have a field in the database which marks whether the subscriber is an aggregator or an RSS Reader. I am going to use this to place badges on my blog showing the number of individual subscribers like FeedBurner

If nothing else, this little excerise has thought me to look into the ON DUPLICATE KEY UPDATE directive in SQL and the ability to chain a number of updates together.

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [1] - Leave a comment
2006-08-30 11:23:00.0

Securing your applications URL variables

On my current project, security is top priority. The application is working with sensitive financial data so I really have to lock things down. Like most of my solutions ideas, this idea spawned while in the shower and thinking of how I was going to secure my URL variables.

To give a bit of background on the problem:

The framework we are using is our in-house application framework powered by ColdFusion which we have improved over the last 5 or 6 years. The security lies in the actual framework but my project uses quite a bit of AJAX so my ajax calls need to be secured in someway. Why not use the existing framework security I hear you cry? Well I do...to a point. But this is more of an extension to it. Typically an ajax call is done via URL GET and normally to a small action file. This call could easily be called and modified by an unscrupulous person as the main framework security is sometimes bypassed.

The solution:

In my application I have users logged in and I hold their userId in the session variable session.userId

My url would typically look like:

The problem with this is that on the EditTimeSheet page you must in someway check that the user calling the url is valid and that the timeSheetId passed is actually the intended record.

Knowing that I am storing the current users ID in session.userId I reckoned I could use this variable to encode the URL and decode it automatically on the receiving end, again using the users session.userId as the decoding key.

When this link is now click on in the browser, it looks like:

The next thing we have to do is write some code to decrypt this URL on the receiving end. This is the code that does it:

What this code does is check to see if only one URL var is passed. Then it checks to see if has a & or a =. It then attempts to decrypt it using the session.userId and recreates the ColdFusion structure URL[]

In a simple example of the output, have a look at the screen below:

Now, the above is a simple example of the whole concept and I have hard coded USERID in place of SESSION.USERID.

The overall aim is to build 2 UDFs to do all the work and make it nice and reusable and cut down on duplicate code.

Problems with the solution:

One thing you may have asked yourself is what if someone tacks on another variable name/pair value? Will the whole thing be bypassed? Yes and No.
Not only are you masking the variables, your also masking the way your app is working so on the receiving end you could check to see if the first element of the new URL structs value is blank, then ignore the rest of the vars in the struct. This though assumes that you are always using this encoding method in your URLS and that the first element will always be an encrypted string.

One interesting thing of note:

ColdFusion has 2 inbuilt and not widely documented functions called cfusion_encrypt() and cfusion_decrypt() which are exactly the same as encrypt() and decrypt() except that the encoded string they produce is alphanumeric as opposed to all ASCII chars of the latter functions. This makes them perfect for what I need as we are passing and dealing with URL variables.

Download the example files as a ZIP file

I'd love to hear other peoples views and ideas on it, so drop me an email, skype me or simply comment :-)

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [8] - Leave a comment
2006-07-29 12:38:00.0

ColdFusion And AJAX Organizational Chart - Beta

About 2 weeks ago before I started my , I worked on a quick proof-of-concept ColdFusion and Ajax enabled Organizational Chart widget.

My main aim was to create a widget that would render in modern browsers and would allow the adding of nodes to the chart using AJAX so the whole page didnt have to be reloaded.

I faced some interesting problems:

  • I wanted to use pure CSS and DIVs but soon found out this was impossible for the moment so had to settle for a mix of CSS and normal TABLE elements.
  • The logic in finding the current parent to append new elements to needed quite a bit of thought to work on all browsers.
  • Deleting nodes a few levels up had to take sub-nodes into consideration.
  • The user-interface had to be very simple and in context with each node.

I decided on the following:

  • I created a custom tag which runs using recursion. This allows the whole chart to be generated using one line of code and you can choose which node to start rendering from.
  • Because the chart is built using a recursive custom tag and I can choose any start node, implementing the AJAX was easy, easy easy.... All I have to do when an add node icon is clicked, the parent node id is passed using AJAX and the custom tag is called with a start ID of the passed parent and the returned HTML is rendered without reloading the page.
  • I used the extremely handy CFSAVECONTENT to render the HTML from the custom tag and simply return the resultant variable. This made the code really easy, flexible and readable.

The main way to use the tag is:

  • To create a node, you click the Add Node icon from the parent node.
  • To edit a node, you double-click an existing node.
  • To delete a node, you click the Delete Node icon on the node to be deleted.

The editing of nodes is not complete. I envisage this to dynamically create a text area in the node and update the TEXT of the node on the fly using . Another option in the future would be to pop-up a menu that allows you to change the TYPE of node.

Things I would like to see added:

  • Panning of a VIEW area for large charts
  • Ability to change each nodes type
  • Add the ability to render each node with rounded corners using the brilliant NiftyCude library.
  • Ability to export the chart in a variety of formats : graphics or PDF

The funny thing is, I developed this 2 weeks ago on one of my 3 hour after-work learning stints where I generally read new things through blogs or try proof-of-concept ideas that may help in future projects. About 2 days ago, I got an email from someone through who had an idea for a CFOrgChart type tag/application with the same ideas I had planned.

Funny how things happen...

Now the fun part...try the demo : demos/cforgchart/index.cfm

PS: Please use with care and dont ruin it for other people by deleting all nodes. This is only a demo and I havent performed any checking or locking of nodes yet.

PPS: Can someone (Karl :-) ) check this on Safari and report back?

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [12] - Leave a comment
2006-07-20 12:52:00.0

CF_ProFlashUpload Released on CFTagStore.com

Topper has released our Flash based Multiple File Upload with progress status for ColdFusion on CFTagStore.com

You can view the component and online demo from:
http://www.cftagstore.com/tags/flashmultipleupload.cfm

Pricing is $50 per application with discounts for multiple licenses.

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-07-06 11:59:00.0

Latest Project : ColdFusion + AJAX = ColdJax

I am just about finished phase one of the latest Digital Crew project.

We were asked to develop an application to manage submissions of timesheets from indivual contract workers which would feed into the existing clients Intranet (also built by Digital Crew - using our Teamwork Intranet engine).

This is the type of project I love getting passed by my desk. - Where you can innovate. I decided for this project I would make it completely AJAX enabled. 90% of the requests to the server are made behind-the-scenes using AJAX. The user interface is very Web 2.0-ish with big text and buttons and also benefits from keyboard short cuts etc

I took our standard application engine and spent the first 2 days re-writing segments of the framework to communicate with the server entirely using AJAX. The next step was to figure out the various modules and UDFs I would need to maximise code re-use.

Every major widget is called using CFMODULE and controlled by simply passing attributes. This gave me enourmous flexibility and in the future if we need to upgrade some functionality or extend a widget, there is only one segment of code to re-write.

Another aspect I wanted to do right from the start was the layout code. Every part of the application re-uses classes in the global style sheet. Before I would have added and added to the CSS as I needed some styles but with a bit of planning from the start, I identified the main style blocks and wrote more modules (custom tags) to encapsulate them all.

For example, the main modules are:

  • A button module with different colouring and ability to accept href or js functions
  • A timesheet widget module
  • A page turning module
  • A timesheet printing module
  • A tooltip module
  • An encapsulated object based AJAX library
  • An invoice capture module

Overall the satisfaction in writing this application out-weighed the total hours I put into it. Although debugging was alot harder than a traditional application, the AJAX portions actually saved me lots of time!

Tags: AJAX | ColdFusion | My Work
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [1] - Leave a comment
2006-06-27 11:10:00.0

Disappointed with Project Aarvark DVD

The FogCreek Project Aarvark DVD arrived to the office yesterday and Topper and myself scrambled to re-arrange our evening so we could have our Nerd Night In

I cant tell you how excited Topper and myself were to see this DVD. With a killer project on the horizon in Digital Crew which I cant talk about yet, we couldnt wait to see what we thought would be a feature about how a project is started, budgeted, planned and managed.

What a let down. The whole DVD circled around the personal lives of the 4 interns. They showed the interns juggling, jogging, growing tomato plants and bumbling their way through demos.

They didnt show the initial meetings, setting the roles of the individual interns in the project or any of the discussions that may have gone into the whole project. I was hoping for insight into arguements and discussions on challenges they faced and how they managed the whole project.

Topper and myself finished up at 2am last night feeling let down.

One interesting thing in the DVD was their first public demo and stand at CFUnited of all places!

They even mentioned ColdFusion and the fact that some people think its a waste of time and some people thinking it is the future of Web based Applications. As you all know, we are firmly in the latter category ;-)

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [2] - Leave a comment
2006-06-23 12:10:00.0

CFThread and CFJoin added to BlueDragon 7

Just noticed the following blog post from Vince Bonfanti titled

Multi-threaded programming in BlueDragon 7.0

One of the coolest new features of BlueDragon 7.0 is the ability to do multi-threaded programming. The basic idea is very simple: any CFML code wrapped in the new CFTHREAD tag is rendered on a separate thread while the main (request) thread continues processing concurrently. The main (request) thread can wait for the CFTHREAD by using the new CFJOIN tag.

This would be so so useful! There are many times where you need the processing to continue while a sub-task is run on a seperate thread!

I wish Adobe and New Atlanta would sit down together and form some kind of committee to decide on the inclusion of new tags and functionality to CFML the language.

It will be hard to write CFML applications for both application servers if there are some features available to one and not in the other. Especially tags that cant be really created using custom extensions etc

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-06-23 12:03:00.0

ColdFusion Multiple File Upload On Mac OSX using Safari

Thanks Karl!!

Karl (a good friend and decent ColdFusioneer) took the trouble to test the Flash Upload widget on Mac OSX using Safari and it worked seamlessly!

We are getting close. Now all we need is Flash 8 to be released for Linux and we may have achieved our goal.

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-06-22 12:28:00.0

Flash Multiple File Upload Control - 90% finished!

As you all probably know, Topper and myself have been working on a powerful ColdFusion based multiple file upload control with progress indicators etc.

I am delighted to be able to post a link to a fully functional online sneak preview:

http://www.cftopper.com/playground/dcFileUpload/test.cfm

More can be read here on Toppers Blog

Just wondering if anybody with a Mac can run the demo and report back the results!

We have yet to get our hands on a Mac :-(

BTW, Linux still doesnt have Flash 8 released so the demo unfortunately wont run on Linux.

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [2] - Leave a comment
2006-06-22 12:16:00.0

MySQL Database tools - Navicat, Toad and CFMyAdmin

We generally use 2 databases MSSQL and MySQL for our applications. Our personal preference is MySQL but sometimes due to customer requirements we have to use MSSQL.

For ages we were looking for a MySQL manager program like MSSQL Enterprise and in the earlier days used to use MySQLFront, a great little app which is no longer being actively developed. In fact our ColdFusion based MySQL admin tool, CFMyAdmin was modelled on this great little app.

As time moved on and we needed more functionality and reliability, we found Navicat. We bought 4 licenses (best value ever - $139 per license for Enterprise Windows Edition) and havent looked back! The latest version 7.2.5 has absolutely everything we require and is FAST.

Yesterday, I found another FREE MySQL database tool that looks interesting called TOAD for MySQL.

Its extremely complex at first and the user interface isnt as polished as Navicat but the SQL tools and syntax colouring looks promising.

The only thing lacking in both TOAD and NaviCat is an intellisense type interface while writing your sql but hopefully this feature will be introduced shortly.

EDITED 26th June 2006 - Thank you Gary for your comment on the Intellisense. My error, it appears TOAD has intellisence built in. i will turn it on, check it and report back!

As I mentioned above, we developed a ColdFusion based MySQL manager called CFMyAdmin a few years ago and unfortunately, the development has stalled. We plan on picking this free community project up again in the near future, start from scratch and developing a more robust and powerful ColdFusion based MySQL manager.

The problem with CFMyAdmin was that it is extremely hard to make a connection to a MySQL database using a connection string. It works perfectly in ColdFusion 5 as CF5 supports dynamic connection strings but MX removed this option so we had to use Macromedias Java Factory classes to make a connection to the database by creating a DSN on the fly. A lot of thought will have to go into how to connect to the DBS before we can start developing.

Tags: ColdFusion | MySQL
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [3] - Leave a comment
2006-06-20 11:45:00.0

Most Useful ColdFusion Custom Tag - UDI

One of the great tools Peter wrote, UDI - Ultimate Database Interface is something we use in every ColdFusion project we work on here in Digital Crew. From Website Administrations, to Intranet applications.

UDI has 2 specific parts to it :

  • Design Time View
    This view gives you a wizard based view of your database allowing you to create a View/Edit/Delete interface for any of your database tables.

    Its amazingly simple yet powerful. The wizard pulls in all the fields in your database (MySQL, MSSQL or MSAccess) and allows you to define what type of data is contained in the field and allows you to choose a specific interface to manage the data. This could be a Date Selector, URL, Textbox, text input, duel-select, drop-down based on another table, image (with image selecting tools) etc

    With 5 minutes of clicking and building, you can create a spreadsheet type view of your database tables.
  • Runtime View
    The runtime view is the actual view you use to view, edit and delete data. This is broken into 2 panes. The top pane gives a paged grid with summary records and the bottom pane contains the generated form holding all the different types of controls per field. You can double-click a record in the View Pane and the data for that record is loaded into an easy to use form for editing.

The whole package is so easy to use and literally saves us days of extra work. Gone are the days of hand coding hundreds of admin pages for editing data. Now we just click, point and define our data. The rest is handled. Also, the component only uses one code base and auto generates the required pages for calling the component.

With over 65 internal projects using the component and more than 150+ 3rd party developers using the component around the world, UDI has literally become a must-have tool!

You can view the component on CFTagStore.com and order it for $100. Bulk licensing is available and also a demo to try before you buy! I guarantee you wont be disappointed!

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [2] - Leave a comment
2006-06-14 14:34:00.0

Why its a great time to be a ColdFusion developer

Brian Kotek has written an article for Builder.com entitled Take advantage of an opportunity while the ColdFusion landscape is hot in which he summarizes why "it's never been a better time to be a ColdFusion developer". (Tip : Ben Forta )
Tags: ColdFusion
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-06-12 21:52:00.0

Thoughts On Flash, AJAX and ColdFusion

Peter and myself meet up regularly outside of work for a coffee and wild ramblings on the direction our development should be taking. We discuss upcoming technologies, applications that interest us aswell as arguing the finer points of whether Flash or AJAX should be used when creating online applications. What will happen to ColdFusion, etc etc

We had such a discussion today and debated the pros and cons of each. It went along these lines:

Flash

Flash is great but it is not wonderful in all ocassions. It has the potential to beat AJAX to a pulp but the sluggy controls make it painful to use. The sluggy controls I am talking about are things like Scrollbars, Buttons, Grids etc

Flash has also got a big enough learning curve if you come from a pure programming background and seems to be designed more for graphic designers than normal programmers. I know this is a brave statement but look at the Flash Development environment. You cant really start with a blank code page and work away. It is getting there though. BTW, the programming gone into the Flash IDE alone is superb!

Flash is perfect for things like Image manipulation and small widgets used in conjunction with HTML and Javascript. Its cross-platform and has a huge user base. Write once, deploy on different platforms with one code base.  Relatively secure code wise although unfortunately there are SWF decompilers available :-( The only true RIA Flash app I was impressed with was Yahoo Maps Beta

AJAX

Easy to learn and easy to use. The problem is all the different browsers and platforms need specific implementations. It cant access the local file system and cant do image manipulation particularly well. It is a good light weight tool for quick widgets where Flash would be overkill. I think Googles implementation of AJAX is the best out there. Gmail and Google Groups truely impress me. I often wondered about the pain involved in managing these apps with all the different browsers and platforms and code forks until I read about Google Widgets and realised they wrote everything in Java and their platform converted everything into AJAX enabled HTML code.

I suppose in a way ColdFusion is like that. Write in CFML and its interpretted/compiled into Java servlets. A good way to abstract things.

ColdFusion

We love it. But where is it going? Are Adobe going to ruin it? Was Macromedias decision to integrate it more with Flash the right direction to take it?

Will it eventually be stopped and integrated completely into Flex? I hope not.

ColdFusion is a great Application Server and has continued to stay ahead of BlueDragon. CFML is a great language and in my opinion the best choice for web applications. For pure and utter RAD development, ColdFusion is the way to go. If you need something extra you can call in Java using CFOBJECT or write a CFX tag in C++ or Java. I wouldnt pick any other language over it! We have used it for 6 years and recommend it everytime a new project comes in the door! The time saved building a project more than makes up for the license cost!

Forget Ruby On Rails and PHP etc but ASP.net is looking interesting. I kinda like the whole .net idea. Maybe CFML should be developed more as a language rather than trying to trying to put the kitchen sink into the Application Server. One thing that could be improved is its handling of data types... 

I noticed over the last 2 years Ben Forta has started to push Flex more in his blogs (as well as mobile technologies) more so than pure ColdFusion. I feel sad about that. Ben was the main evangalist of ColdFusion and it was nice to have someone like that presiding over the technology. I always found Ben very approachable via email and the few times I met him and liked to think of him as pure  ColdFusion but I realise what areas Adobe is pushing and hence Ben pushing them. I also found this sense of loss when Charlie Arehart left New Atlanta. Charlie was a great guy for helping the community and everytime we had an issue with BlueDragon he literaly got back to us straight-away and followed up until the issue was resolved. I think ColdFusion needs someone like that back in the community.

Which brings me to summing up what I have begun to notice in the last few years. The ColdFusion community is lacking support and resources.The community seems to be revolved around a small few people. EasyCFM used to be full of steam but has almost fallen off the radar. I wish I could help in some way. Maybe in the future I can.

The ColdFusion Exchange used to be HUGE back in the Allaire days but since being turned into a Rich Internet Application (pah..) its a joke. BTW, this is exactly the WRONG way to design an internet application. Sloooowwwww widgets and no right-click-open-in-new-window that piss people off!

Tags: AJAX | ColdFusion | Flash
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [3] - Leave a comment
2006-05-29 13:25:00.0

Uploading multiple files with ColdFusion

One of the most common annoyances about ColdFusion is the way the file upload functionality is implemented. Unlike ASP, PHP, JSP etc, file uploading is not handled by the Application Server (ColdFusion) but is farmed out to the webserver (IIS or Apache etc)

This means that while the file is being uploaded, ColdFusion just kinda sits there waiting for the file to be uploaded and a reference to the file handed back to CF. This means that you cant use some of the upload tricks of ASP, PHP etc to show the progress of the upload etc

Over the years, Peter and myself have tried to find a way of accomplishing this on the server side but to no avail. We have tried CFX tags, Java servlets called through ColdFusion etc

Andrei Kondrashev made a good stab at it using a CFX Tag and ISAPI filter but if you are on a server where installing such beasts isnt feasible there is nothing much can be done.

We wrote an ActiveX and DHTML ColdFusion component to allow multiple file uploads but the disadvantage is that it is IE only for selecting multiple files all at once. The DHTML interface is cross-browser and will uploaded multiple files but still requires you to add each file seperatley.

With the introduction of Flash 8, the problem is now achievable. ColdFusion will still use the webserver to upload the file so server side analysis of the file upload progress is still a no-no but using a Flash Component, DHTML and some clever programming, we can select and upload multiple files and give user feedback on the file upload progress.

I am tasked with designing the interface, the methods required, functionality and documentation and Peter is going to do the actual Flash programming.

Together we are finally going to solve this annoying problem and will be releasing our solution on CFTagStore.com for others to purchase and use in their applications.

Using Flash is beneficial for the following reasons:

  • Client side checking of file size instead of waiting for a PFO from the server after the upload
  • Select multiple files using SHIFT/CTRL or drag a selection using mouse
  • Available to all browsers on all platforms
  • Interface with Javascript for customisation and control such as event handlers etc
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [7] - Leave a comment
2006-05-23 14:15:00.0

Something positive everyday

Frequently Peter and myself go for coffee and try and quantify all the various bits and pieces we have developed over the last 6 years and how to keep improving applications, tags and sites we manage.

One of the things we always say is that we will Do at least 1 positive thing everyday to get us to the places we want to go with the company and as programmers/developers.

Well, I started. It may be small but its a start:

Tuesday 23/5/2006:

I have added an RSS button to CFTagStore.com for the latest tags. This will link to an RSS feed of the latest updates to tags and new tags added.

I also for the first time ever used FEED:// to automatically call up your RSS Reader and add the feed to your folders. Plus I added the relevant HTML tags so readers can automatically find the feed.

For generating the RSS feed, I used Peters extremely easy to use ColdFusion custom tag : SimpleRSS2

Tags: ColdFusion
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-05-22 16:14:00.0

CFImageResizer - Preview

Over the weekend I was looking through my old posts and spotted my post about the cool Flickr Image Resizing Flash widget and stumbled upon Googles new GMail Contact photo editor and it got me side-tracked into developing our own widget.

There are many many times where an online easy-to-use image cropping tool would be handy for both us and our clients.

Using the X Javascript Library, I got enough functionality complete in a few hours to show a screenshot. I am going to make this robust, easy to use and useful, possibly interfacing with Java through ColdFusion <CFOBJECT> to do the actual image cropping. The only snag is it will be JPG and PNG only :-(

 

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [2] - Leave a comment
2006-05-19 12:38:00.0

CFForumsExpress MSSQL and MYSQL

Just finished packaging up CFForumsExpress with MSSQL and MYSQL support with integrated Administration.

This is a pre-release version to help customers get up and running with MSSQL.

If you have purchased a copy and would like to use the pre-release version, please email me dan@digital-crew.com

 

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-05-16 15:19:00.0

ColdFusion Live Support Chat Application

About a year ago, I posted on my blog my thoughts on a ColdFusion based live support tool and that I was planning on prototyping my idea.

Well to update on this, I did actually write the application and had it working with a nice AJAX client application and a Windows Application running in the task tray for the operators.

I had it fairly advanced with the ability for operators to have multiple chat requests open at once, canned responses, visual and audio alerts etc

It was about 90% built with a good bit of testing to complete but I got pulled off it to work on various other projects and applications.

It is my mission to pick this project up again in the next few weeks after I finally get the latest version of CFForumsExpress shipped.

I would love to hear peoples ideas on a ColdFusion based live support tool....

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [4] - Leave a comment
2006-05-16 00:17:00.0

Windows Authentication and ColdFusion

Recently a project came up where we had to integrate user login information in our database with the users Windows Authentication on the network.

Peter did a great job of implementing this using the very handy CGI variable : #cgi.auth_user#

When a person logs in using WindowsNT authentication, ColdFusion passes the users login name in the variable cgi.auth_user

Peter kept a field in the users database called usersNetworkLogin and if the users session data was 0, he looked up the database against this variable. If a user was matched, he set the user logged in with session.loggedInUserId set to the users actual id from the database.

To save a dbs lookup in the future he set a cookie on the users machine.

This is a small bit of code and logic but has helped us out enormously on the Intranet project we were working on.......

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [3] - Leave a comment
2006-05-15 22:13:00.0

Freefoam Guarantee Application

Just completed a nice little application to help Freefoam staff print Guarantee Certificates and Address Labels.

The application was written in VB and uses a WebBrowser Control to display the online HTML based Certificates which are in turn generated using ColdFusion.

Each certificate contains META data which is polled by the VB app, de-serialized and transformed into a raster image which can be sent directly to a DYMO LabelWriter 400 Turbo printer. At the same time the label is printed, the HTML certificate is sent to a Colour HP Printer.

The user can enter a Certificate number and the correct certificate loaded in the browser control.

The application runs in the system tray and is instantly available for use by double-clicking the task tray icon.

Small App but one that was fun to write and saves a hell of a lot of time to the client.....

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-05-12 18:43:00.0

VMWare - Run ColdFusion Linux On Windows XP

Haven't posted in a while due to a number of reasons so its time for an update...

There are 2 main thins right now:

  • Running ColdFusion Linux on Windows XP

    We are primarily a Windows based development house so Linux is not in our skill set yet.

    For ages we have been meaning to delve into the possibilities of duel platform development and in the past even went so far as setting up DCLinux, a Red Hat based Development Server running CFMX6.1.

    The problem with this is that most of my R&D, product development etc happens when I am "in the zone" and this is usually at home or in places other than the office.
    I needed a Linux installation running on my Windows XP laptop.

    This weekend, I decided it was time to finally do something about it and thought the only reliable way was to duel-boot my laptop.

    WRONG.

    Welcome VMWare.... the most amazing application I have come across in some time.

    Get this.... it only took 1 hour to get it running flawlessly!!

    I now have Fedora 5 Linux with CFMX6.1 running in a window on my desktop and can connect to it via my Windows browser using http://192.168.64.128:8300/

    What makes things even better is that I can connect to my existing MySQL database on the Windows machine through Linux so don’t have to worry about installing and configuring MySQL on Linux!!

    Also, the Linux Virtual Machine can view my localhost in Windows so I can test front-end stuff in Linux Firefox too!

    This truly is the dogs bollox! I can finally get all my CF Apps and tags Linux compatible!
  • Windows Application for Printing

    The other main application I am working on at the moment is a Windows Desktop Application that can pull data from our server in Dublin and generate graphical certificates and also address labels.

    Then with one click of a button both the Certificate and Label are printed on 2 different printers. The cert goes to a colour inkjet printer onto special certificate type paper and the label gets printed directly to a Dymo LabelWriter 320 printer.

    The app runs in the Windows task tray and is readily available. Some nice programming went into this one and I am damn proud of it.

    The core of the application is a WebBrowser Control hosted in a VB6 application.

    Some nifty printing and graphic techniques ensure the labels come out scaled to the size of the label.
Tags: ColdFusion | Linux | VMWare
Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [0] - Leave a comment
2006-05-12 17:59:00.0

Project Management Quick App

 
I am in desperate need of a quick application to manage my day-to-day projects and tasks. I have tried Gantt Project which is a good little Sourceforge Project but there are too many nuances and limitations. The biggest that turned me off was the inability to set a task in hours as opposed to days. This is ludicrous as all tasks need to be tracked and not all tasks take a day to complete. I have tasks that can take 10 mins to 2 hours.

Tonight I have a few hours spare and depending on my mood later and the amount of work I get done today, I am going to knock up a QAD (Quick And Dirty) personal project management app.

For ages I have been thinking about the best app to suit me. Peter and myself have great ideas on a full-blown app but we dont always agree on the way it should run.

This is what I want in mine until we finish our big app.
  • Ability to add Project Categories and Sub-Categories
  • Ability to add Projects
  • Ability to add Tasks to Projects
  • Quick access to the app
    - Tray Control
    - Fast task adding, deleting and editing
  • Simple reporting
  • ColdFusion based with AJAX for speed and usability

Tray Control

I need the app to be quickly accesible so I want a tray control app so when I right click, the menu pops up with my Cats, Projects and Tasks. Clicking on the task will complete it, start/stop the task etc. This could be fun the more I think about the features!

Add to your del.icio.us    DIGG This!    Technorati Cosmos Link    Post to Reddit    Add to your Furl    Add to Blinklist
Comments [2] - Leave a comment