Rob Gonda's Blog

Clearing template cache automatically

Brian Szoszorek wrote an excellent article on clearing trusted cache automatically with even gateways -- directory watcher.
Trusted cache should be enabled in every ColdFusion production server, as it prevents cfm,cfc files from being compiled into Java classes every time. ColdFusion will not check for file system updates, so you would have to clear cache every time you make a change. Brian proposed a solution to automate it via event gateways -- which only work for enterprise installs of course. Really nice I must say.

CFUnited - Ajax Intensive for ColdFusion Developers

I gave an 8-hour class last week at CFUnited, geared towards Ajax Development for ColdFusion. As promised, you can find here all the material used, including slides, additional listings, and source code.



To run the source code, simply copy the cfunited folder under your web root. All examples should run without additional settings. To run the ajaxCFC / Model Glue examples you may use MG 1.1 or MG:Unity, which requires ColdSpring and Reactor, which are all included.

p.s. special thanks to Joe and Ray for publishing the prototype and spry examples.

Post-CFUN Must read links

ColdSpring 1.0 Final is out, and it works with MG:Unity

About an hour after I updated my production server with the head version of ColdSpring, they chose to release final. I just installed it and everything works as expected. Model-Glue: Unity likes it too. I comment because I also upgraded Reactor to the head version and it broke Unity. I had to re-download the one included in the Beta 1 (v 2.0.161) to get it working again.

ajaxCFC update 0.73

ajaxCFC has been updated.

The first change is a fix for the problem experienced by some people when sending the & sign by textareas or the suggest example.

The second change is the ability to send named arguments. It works now similar to how flash remoting does: if you send a single argument in form of an object, it will be passed as a collection instead. You may still pass unlimited arguments and ajaxCFC will match them to the expected named arguments in order, but this will be a problem if some of them are optional.

Example:

DWREngine._execute(_ajaxConfig._cfscriptLocation, null, 'method', arg1, arg2, arg3, result);

This string will invoke a method passing three arguments, which may be named in your function, but have to be in a specific order.

DWREngine._execute(_ajaxConfig._cfscriptLocation, null, 'method', {"cfarg1": arg1, "cfarg3":arg3}, result);

This string will invoke the same method passing only two out of the three arguments.

eCivis is hiring a solid ColdFusion developer

eCivis is looking to hire senior CF developers:

Are you an advanced-level programmer who lives to push ColdFusion and object-oriented web development to the edge? If so, we want to talk to you about joining our unique, market-leading information and technology firm as part of an excellent development team building innovative web-based enterprise applications. Learn more about us at www.ecivis.com.

The Senior Web Developer will partner with our Technical Lead to drive the direction of the company’s technology solutions, define and implement best practices and build lean, powerful and extensible functionality.  This position offers significant responsibility and growth potential. 

Primary Responsibilities:

·      Assist in the design of object-oriented web applications based upon best practices.

·      Resolve technical issues, and ensure proper operation of existing web-based products and services.

·      Ensure development consistency and strive for continued development innovation.

·      Adhere to documentation standards and drive for well-documented code.

·      Identify and relay technical and non-technical issues to the team and management as necessary.

·      Maintain best practices to meet department goals and assist in adapting the department to future changes in technology.

·      Help assess risk related to technology and resources, and assists in minimizing that risk.

Ideal candidate should possess:

·      3+ years developing complex ColdFusion applications

·      Applied knowledge of Object Oriented ColdFusion MX architecture and ColdFusion Components (CFCs)

·      Knowledge of Mach II, Model Glue and other OO Frameworks

·      Understanding of XML structure and Design Patterns

·      Experience with SQL Server, Stored Procedures and Indexes

·      Solid communication skills

·      Demonstrated skill for documenting development  

·      Strong understanding of complex SQL database-driven products

·      Knowledge of JavaScript and CSS

·      Strong problem-solving and debugging skills

Preferred qualifications:

 

·      Macromedia Certified ColdFusion developer

·      Understanding of complex custom tag architectures

·      Product Development Experience

·      CVS and/or Subversion Experience

·      Understanding of Network Infrastructure in a web development environment

·      XHTML

If you meet these qualifications, we invite you to submit a resume’ and cover letter, including a complete salary history via e-mail: technology@ecivis.com or fax: 626-578-6632.  Please no phone calls or postal mail.  Only qualified candidates will be contacted.

Dojo Toolkit and ColdFusion

This came up in an entry I blogged the other day: What if (i/we) write a ColdFusion library to interface with the Dojo toolkit? Dojo is the best JavaScript toolkit out there, very complete, and it's only going to get better. They keep adding neat features, and they're the main library to be used for the Open Ajax Initiative, which include IBM, Eclipse, Google, Mozilla, Yahoo, and others. It's actually the only JavaScript library that includes widgets, an ajax engine, low level effects, ... They just added offline storage though the use of the Flash Platform...

So the raw idea is to develop a ColdFusion library to allow developers to easily implement Dojo Widgets and use the Ajax library, which by the way supports cross-domain scripting now ... Dojo supports Ajax calls through the io, rpc, and json classes. Documentation and examples are limited, extremely limited, but the idea is to make the server side communication transparent for the developers, kind of what I did with ajaxCFC.

The Dojo IO class already supports data binding, back button fixes, bookmarking though URL state changes, the form serialization I posted last week, and more...

It would be great if I can manage to distribute this load among a few contributors... this could be huge... the ColdFusion community will love us forever. Think about it, not only for it's Ajax features, with it has an amazing amount of widgets and ui interfaces...

Thoughts?

Impressive ColdFusion frameworks

ColdFusion is a great language, and lately, with great frameworks ... Model Glue: Unity, MachII, Fusebox, ColdSpring, Reactor; man ... they're all are truly amazing. Anyways, let's welcome one more to this list. ColdBox was developed by a friend of mine, Luis Majano, and it's amazing. He's currently using it for Sandals Online Booking, who by the way has extremely high traffic... Luis will release this as an open source project -- thank you Luis -- so add one more framework to the list. The code and documentation will be released soon, but I've personally seen it in action and it's worth checking out.

Among the features you may find:

  • MVC Design pattern
  • PROVEN & TESTED for high availabilty and mission critical applications
  • Multi-Layout & View concept (Can be programmed at runtime if needed)
  • One Centralized Variable Collection for data
  • One config.xml for implicit invocation and setup
  • Event Handler CFC's
  • Event Chaining
  • Support for Child Applications
    • Supports as many as you want child applications
    • No extra configurations, just point to the parent's system folder
    • ColdBox auto-senses if it is in a Parent or Child Application
    • ColdBox auto calculates the distance to its parent if parent code is neededBug Reports
  • Event Handler Execution Profiling
  • UDF Library usage (Optional, for legacy)
  • Small footprint controller
  • Optimized for high traffic sites
  • Incorporated ColdBox Dashboard (Optional)
    • Online System Update
    • Online API
    • Main Application Config.xml Editor
    • Online Backups
  • Framework extensions through Plugins
    • Logger (Bug Tracking, Tracers)
    • Renderer (Render Logs, Views, Layouts,etc)
    • FileUtilities (Java Utilities, File Utilities)Webservices (instantiation, refresh, etc)
    • ClientStorage (Permanent variable storage for clustered environment uses WDDX)Messagebox (Universal Error/Warning/Information messagebox)
    • Settings (ColdBox metadata and dashboard utility)Zip (A great zip utility plugin by Arthur Kordowski)
    • cfcViewer (A cfc metadata retriever by Oscar Arevalo )

Model-Glue 2.0: Unity Public Beta 1 is Available

Joe just released Unity Beta 1 to the public; this is your chance to jump into the hottest ColdFusion technology! It is really impressive and I would definitely consider using it for my future projects. Here's an extract from Joe's blog with what you can expect from this beta.


I'm proud to announce that I've applied the "Public Beta 1" label to revision 161 of Model-Glue:Unity. It is available for download at http://www.model-glue.com/downloads.cfm. This version introduces automatically generated Models, codeless data access, and scaffolding. It is still very easy to learn and use.

Documentation

The longest delay in releasing the framework publicly has been documentation. The XML and CFC APIs of the framework are now fully documented, the Quickstart has been rewritten, and a series of friendly "How-To" guides for common tasks are underway. The new, souped-up documentation is available at http://docs.model-glue.com/.

Keeping with tradition, they still start with "Don't Panic!" Seriously, don't. The new stuff is super easy to learn.

Bug Reporting

There is now an official site at which to report framework issues. Please report any and all problems to http://trac.model-glue.com - even installation issues. If something is hard, I want to hear about it. Model-Glue is the ColdFusion framework for everyday ColdFusion programmers, and it should be easy to use.

Upgrading

One goal of the beta is to insure that upgrades are seamless. You should be able to run an existing 1.x application without modification, simply by changing your Model-Glue mapping to the new version (or overwriting your old copy of Model-Glue).

However, I'm sure something is broken, somewhere - it's just that none of the alpha testers or myself are able to find it.

Naming

Up to this point, "Unity" has been the code name for "2.0," but the term has stuck. The term "Model-Glue:Unity" will refer to the 2.0 core that incorporates ColdSpring and native object-relational mapping capabilities.

Reactor

As is, Reactor is bundled with the download, and is the default Object Relational Mapping framework for Model-Glue:Unity. It is possible to support others, but would require creating a custom adapter, DataController, and scaffold .XSL files.

Next Steps

In between presenting (I have seven presentations in the next two weeks, four of them on Model-Glue:Unity), I'll be working on a new Model-Glue.com, finding bugs, and fixing them as soon as they pop up.

Advanced (real) ColdFusion Contest Announced

Ray just announced a new Advanced ColdFusion Contest... he already ran one, but it involved writing Flex and most developers didn't have time to learn it.

This one involves a custom application to analyze code, with custom rules settings, and pluggable in the CF Admin... Sounds interesting and could involve nice RegEx's, optionally the use of CF Async Gateways? Could be nice for large amounts of data... The deadline is at the end of July, which gives you 7 weeks, or gives me 3 weeks since I won't breathe until next months anyways.

There will be prizes, thus far a copy of Fusion Reactor 2, a copy of KTML, and more to come. I could contribute with a copy of intelliJ if there is interest. or how about a job @ iChameleon?

More Entries

This blog is running version 5.9.003. Contact Blog Owner