ColdFusion Dev Needed: Albany, NY

Naresh Taneja, of USTech Solutions, forwarded on the following position. If interested, please email your latest resume.

Position: Coldfusion Consultant
Duration: 24+ Months
Location: Albany, NY

Description
Required

  • Minimum of 60 months of experience with ColdFusion 8 or newer administration / programming
  • Minimum of 60 months of experience of Microsoft IIS 6 web server administration
  • Minimum of 60 months of SQL-Server administration / database design & development in versions 2000, 2005 and/or 2008
  • Minimum of 48 months of experience in SQL-Server development tool set including; Management Studio and Business Intelligence Development Studio (BIDS) for Integration Services (SSIS).
  • Minimum of 48 months of experience using Content Management tools such as Adobe Creative Suite (CS 5) Contribute or Drupal
  • Minimum of 48 months of experience mentoring and training staff
  • Minimum 24 months experience working with end-users to assess business needs, translate needs into application requirements and use those requirement specifications to architect, develop and
  • Bachelor's Degree in Computer Science

ColdFusion Dev needed: South Florida

Ellie Taylor called me this morning, looking for a solid ColdFusion developer in south Florida.

Beacon Hill Technologies is seeking a Coldfusion/SQL Devloper for a direct hire or contract position with a large financial company in Coral Springs FL.

Required Skills:

  • Expert in Coldfusion (5+ years/current)
  • Advanced skills in MS-SQL
  • Strong skills in Java, JQuery and Crystal Reports
  • Must be able to design, develop and document
  • Local Area Candidate Preferred
  • Position is Onsite in Coral Springs

Top 3 skills:

  • Certified in Coldfusion
  • Strong in SQL- They will be doing extensive updates to the database
  • Strong Java/Jquery skills

This opportunity is for a long term contract if you are interested but only looking for permanent this can be negotiated. The opportunity is with a large fast paced financial firm. The reason for the need is due to their tremendous growth this past year.

Please feel free to reach me (Ellie Taylor) directly, they are looking to do interviews this week.

eBay Looking for a ColdFusion Developer

Ben Smith, of Panzer Solutions, sent me an email stating that eBay is looking for a ColdFusion developer to work on their Marketing Resource Management solution (MARS). Here are the particulars:

Job Title : ColdFusion Developer Location : San Jose, CA Duration : 3+ months with extensions Required Skills: Excellent working knowledge of ColdFusion

Job Description: The ColdFusion developer will augment eBay's Marketing Resource Management solution (MARS), built in ColdFusion, based on pre-defined and prioritized business and technical requirements.

If you're interested, click on his name (at the top of this post) and send him the latest version of your resume.

ColdFusion 10 File Uploads and MIME Types

Quick Note: On one project that I'm on, we're in the process of moving from ColdFusion 9 to 10. During some regression testing, one of the testers began receiving errors on file uploads. When looking at the code, I saw this:

view plain print about
1fileUploadResult = fileUpload(arguments.tierCSSDirectory, "header_background_image", "image/*", "overwrite");

Now, I remembered that there were changes to MIME type checking in CF 10, but I wasn't entirely sure. This code, written by one of our developer's several months ago, would allow any "image" MIME type. What we discovered is that we couldn't do this kind of wildcard mapping under CF 10, that we now had to list out each accepted MIME type as a comma delimited list.

Just thought I'd share.

ColdFusion Position - Denver, Colorado - Zen Planner

Ben Pate, of Zen Planner, contacted me yesterday about a new position they have, in their office in Denver, Colorado. A quick look shows a fun company to work for, with a great list of benefits. Check out their job posting and, if you're interested, drop Ben an email.

Mura Shared ORM Model - A Follow-Up

So, in my last post I talked about setting up a shared ORM model within Mura CMS. But, you always find the kicker after-the-fact. Mine's not a biggie though. I had setup a CF mapping to myModel

view plain print about
1<cfset this.mappings["/myModel"] = variables.mapPrefix & variables.BaseDir & "/mySite/includes/themes/mySite/model">

Turns out this wasn't the best location. I was pushing to the themes directory, because that was what the client wanted ("What the client wants....") Sometimes, you find a valid reason to deviate.

The Mura {site}/includes folder has it's own Application.cfc, with this wonderful tidbit of code in it:

view plain print about
1<cfif not listFindNoCase("styles.js.cfm,templates.js.cfm,editor.css.cfm,default.js.cfm,config.js.cfm",listLast(cgi.SCRIPT_NAME,"/"))>
2        <cfoutput>Access Restricted.</cfoutput>
3        <cfabort>
4        </cfif>

Now, most of the time this won't matter to you. Until you need to hit a remote method, of your model, for an Ajax request. Then...well, you see what happens. Now, you could probably change the Application.cfc, but I don't know if Mura won't overwrite this file on some future update, so it's better to just move my model into my {site} directory, as a sibling of the includes folder.

Creating a shared ORM model in Mura CMS

So, I'm working a new project, and using Mura CMS. We decided to write our modules as plugins, and are using the MuraFW/1 plugin template to do so. Thing is, each plugin really needs to share a common model that uses ColdFusion's ORM.

The MuraFW/1 plugin template has facility for defining a cfclocation for ORM configuration, but that location is relative to the plugin itself, so this took a little hunting. Finally, what made the most sense was to define ORM for the Mura site (as a whole), and let that definition propogate down to the plugins.

For those who are unfamiliar with Mura, it's a very nice CMS, and very extensible, but incredibly undocumented. There is some documentation, but it's spotty, and there are articles on their site that are quite dated. (I know this is something they are working on, so I'll leave it at that.) Luckily, I do write code for a living, so I just started pulling on strings until I found the thread I needed.

The MuraFW/1 template's application.cfc includes the core application settings:

view plain print about
1include '../../config/applicationSettings.cfm';

That works to our advantage, as anything defined in the core app then becomes available to the plugin. Looking at that file, I started looking for anything related to ORM. The first bit I came upon showed me this:

view plain print about
1<cfset this.ormenabled = properties.getProperty("ormenabled","true") />

From there, I had to figure out where ormenabled would come from. I discovered that all of those properties are defined in the /config/settings.ini.cfm file. So, if I added the right properties, I should have my orm configuration. Here is a list of the properties supported by the applicationSettings.cfm at this time:

  • ormenabled
  • ormdbcreate
  • ormcfclocation
  • ormflushAtRequestEnd
  • ormeventhandling
  • ormautomanageSession
  • ormsavemapping
  • ormskipCFCwitherror
  • ormuseDBforMapping
  • ormautogenmap
  • ormlogsql

So, knowing this, I started looking at my model. First, I placed the model in my theme:

/mysite/includes/themes/mysite/model

This was a requirement of the client, so that was ok for me. Except now, I needed a reference to that directory. A mapping. Mura allows custom CF mappings, by making changes to the /config/mappings.cfm file:

view plain print about
1<cfset this.mappings["/myModel"] = variables.mapPrefix & variables.BaseDir & "/mysite/includes/themes/mysite/model">

Now that I had my mapping, I needed to setup the ORM settings in that settings.ini.cfm file:

view plain print about
1ormenabled=true
2ormcfclocation=/myModel
3ormflushAtRequestEnd=false
4ormautomanageSession=false
5ormeventhandling=true

The only thing I was missing was my ORM Event Handler. While the settings allowed me to enable ormeventhandling, they did not allow me to define the handler. For that, I added the setting in my plugin Application.cfc files, right after the initial includes:

view plain print about
1this.ormsettings.eventhandler = "myModel.aop.GlobalEventHandler";

I reloaded my application, then updated my plugins (in the Mura Plugin admin) for good measure. Presto! Shared ORM! Hopefully this will help others from spinning their wheels.

Side Note: During this process, I also updated to the Mura v6 Preview. Wow! What an improvement. And the Bootstrap usage should make layout and theming much easier.

VFS and Zip Files...Kinda

There are several posts, out there in the wild, about using ColdFusion's built-in VFS support for working with zip files. I posted the other day (and fairly quickly removed it), about using the FileMove() function to rename a zip file and all of it's contents. What I discovered, though, was that this wasn't possible. Even though the documentation states that FileMove() and FileCopy() support the in-memory file system, I found that zip files are not included in that support. Luckily there was the CFScript Community Components project, for working with zip files within script. And, though zip files were unsupported, "ram://" was still a viable option:

  /**
   *  Rename a zip file, and the internal files as well
   *  @access private
   *  @returntype boolean
   *  @output false
   */
  function RenameZipAndContents (required string srcPath, string destPath=ARGUMENTS.srcPath, required string srcFileRoot, required string newFileRoot) {
    // Create the zip object
    var zip = CreateObject("component", "com.ccc.zip").Init();
    // Create a temp directory in RAM
    var vfsDir = "ram:///" & ARGUMENTS.newFileRoot & "/";
    DirectoryCreate(LOCAL.vfsDir & "zip");
    // Unzip the source file to the RAM directory
    zip.unzip(destination=LOCAL.vfsDir & "zip", file=ARGUMENTS.srcPath & ARGUMENTS.srcFileRoot & ".zip");
    // Get a list of the files
    var files = DirectoryList(LOCAL.vfsDir & "zip", false, "query");
    // Loop the file list
    for (LOCAL.file in LOCAL.files) {
      // Get the file extension
      var ext = Right(LOCAL.file.name, 4);
      // Rename the file
      FileMove(LOCAL.vfsDir & "zip/" & LOCAL.file.name, LOCAL.vfsDir & "zip/" & ARGUMENTS.newFileRoot & LOCAL.ext);
      // Zip up renamed file in new zip
      zip.zip(file=ARGUMENTS.srcPath & ARGUMENTS.srcFileRoot & ".zip", source=LOCAL.vfsDir & "zip/" & ARGUMENTS.newFileRoot & LOCAL.ext);
      // Delete original file from zip
      zip.delete(file=ARGUMENTS.srcPath & ARGUMENTS.srcFileRoot & ".zip", entrypath=LOCAL.file.name);
    }
    // Delete the temp RAM directory
    DirectoryDelete(LOCAL.vfsDir, true);
    // Rename the original zip file
    FileMove(ARGUMENTS.srcPath & ARGUMENTS.srcFileRoot & ".zip", ARGUMENTS.destPath & ARGUMENTS.newFileRoot & ".zip");

return true; }

Yes, that's a lot of jumping through hoops, and the multiple zip operations really drag out something that should be pretty simple. I'm not sure why zip isn't supported by these operations. Maybe some future revision will correct that.

ColdFusion Roadmap

Shilpi, the 'Security Czar' of Adobe's ColdFusion Engineering team, recently posted about the Roadmap for future ColdFusion Server Devlopment, post CF 10. This links to an abbreviated set of slides, presented in a PDF document, that layout the focus on next two versions of CF.

There are some things you might easily miss, in reading over the slides. First thing I picked out was in "Splendor"'s Other focus areas section, you see Pluggable Framework mentioned. Hmmmmmm...

Mobile, Social, HTML 5 and the Cloud are big topics here, but I also noted that "Dazzle" has Customizable Enterprise Video Portal mentioned. Interesting...

Another one that's easy to miss? How about the timeline? According to the last slide, "Splendor" looks like a 2013 release, while "Dazzle" is slated for 2014. That's a much more progressive release cycle than we're used to seeing.

The biggest, immediate take away here, is the fact that Adobe is obviously investing time and resources in to continuing to produce and progress the ColdFusion platform. That's a win.

ColdFusion + Ext JS Position: Los Angeles

This was forwarded to me yesterday. Anyone who might be interested, ping me on the contact form and I'll forward you the details:

ColdFusion Developer will be responsible for the development of financial reporting systems. He/She will also develop detailed system design and programming specifications, support daily business activity by providing technical support of systems and regularly meet with the IT project lead to review progress and problems related to the job. Additionally he/she will design intuitive and effective UIs using modern client-side technologies, including AJAX, Sencha Ext JS, and other JavaScript libraries.

ColdFusion developer with 5 years+ experience. Knowledge of ColdFusion CFC components, and MVC frameworks, and current feature set in ColdFusion 9.

Knowledge of (Sencha/4.1) Ext JS

Excellent knowledge of JavaScript, HTML, CSS, Web services, and importing Web-based data to Excel.

Good written and verbal communication skills.

Maintains a solid knowledge of information system software development life cycle and quality assurance

Demonstrates proficiency in systems analysis of business requirements.

Good knowledge of relational databases and SQL, experience with Oracle including writing stored procedures, triggers, views etc?

Previous Entries / More Entries