dans.blog


The miscellaneous ramblings and thoughts of Dan G. Switzer, II

qForms v2.0 Live Code Demo

Ok, here's some live demos of the qForms. If you attempt to download the source and use it in a project, you're using it at your own risk—your on your own.

http://www.pengoworks.com/qforms/v2/demo/

I'll try to keep this fairly up-to-date w/what's going on with the source code, especially if more demos are put together.


qForms v2.0 News / Call For Developers...

I sent this letter to the qForms Mailing List earlier and figured I'd better post it here. Leave me a comment if you're interested in helping with development.

I know many of you have been waiting a long time for news on v2. Believe it or not, it does actually exist. The reason why it's been in sort of permanent hiatus was because I really wasn't doing any work that corresponded w/furthering the development.

qForms v2 is like 95% complete, and has been, for a long time. There have been a few key features I just have never had the time to sit down and really figure out. The key features I wanted to introduce for rev 2 that aren't done to my satisfaction yet are:

  • Applying validation rules to a qGroups (a qGroup is a group of fields that work as a single field. Picture splitting a phone number into separate fields for area code, prefix, suffix, etc and being able to use getValue()/setValue() to retrieve the values of all the fields as one string.)
  • Event queuing. One of the things I want to do is get it to the point where you can safely write add-on hooks w/out fear of them interfering w/other add-ons you must load. This still needs improvement.
  • Masking—still needs some improvements. I've re-written the code from scratch several times.

There are other things that can probably be done to improve things and I think the project really needs some new energy as I think that will help re-spark my energy for the project.

So, where am I going w/all this? Well, last night I submitted a new project request at Tigris.org. I'm hoping that those guys will approve the project soon (or I'll be looking for a new SVN home.)

What's this mean? Well, I'm planning on opening up the SVN repository for open development. Instead of opening the floodgates and letting everyone have access to the SVN repository, I'd prefer to have some volunteers from some of you who are willing to help out on the project.

So, I'm looking for experience JS programmers who have some experience w/Subversion (that's the source control I'm using) and who would like to help out on the qForms project.

As soon as the guys at Tigris approve the project, the URL for qForms SVN will be:

http://qforms.tigris.org/

For those of you not interested in following the actual day-to-day things, keep going to www.pengoworks.com/qforms for updates. However, if you're always interested in playing around w/the latest and possibly unstable builds, that's the place to go.

I'm also going to be posting the language files there (as qForms v2 supports internationalization.)

For those of who never saw it or what to see it again, you can view a preview of qForms v2 at:

http://www.pengoworks.com/qforms/preview/

Here's a brief list of what I have added:

  • Internationalization
  • Auto tabbing (via the setMaxLenght() method)
  • Remove validation rules on-the-fly
  • Keystroke dynamic masking
  • Disable/Enable validation rules per form
  • Much more customizable. (See the preview for how you can replace the default alert() handlers and drive everything via DHTML.)

-Dan


Thunderbird - Temporarily Switch Composing Between Plain Text/HTML

Ok, so it's been a while since I've blogged anything useful—so I figure it's about time I do!

I've been using Thunderbird as my primary e-mail client for my new job. I figured I'd try making the switch away from Outlook to see how it goes. Overall there are a lot of things I really like about Thunderbird. It's definitely faster than Outlook and creating/sending e-mails definitely seems quicker. There are things I miss from Outlook—mainly the complete integration between tasks & e-mail. I've been using the Mozilla Calender project, but I'd like to see all the pieces integrated.

However, the biggest problem I've always had in every e-mail client I've used is that I hate, and I mean hate, HTML e-mail. I find it cumbersome and it's usually harder to read. It seems like everytime I get an e-mail in HTML there are several different fonts. I rarely get an HTML e-mail from someone that actually looks elegant. I also find creating inline responses (which is my preference) is much cleaner and easier to follow when done in Plain Text. That's why I always use Plain Text as my default send method.

more…


SpoofStick: Protect Yourself From Obscured URLs...

I was watching a re-run of The Screen Savers today and they had a guest on who showed off a browser toolbar addon called SpoofStick.

The idea behind this toolbar is that it will resolve the actual website you're on and display the name of the server. Some of you may be thinking: "Why is this useful? When I go to a site I know what site I'm on." Or do you?

One of the most commonly used techniques by hackers attempting to gather person information about users (such as your credit card number or PayPal account,) is to send an e-mail address that looks official which provides a link to "update your personal information." These messages often look legit and the websites they take you too often look they way you'd expect them to—however, they're not actually the official website; it's a copy of the site on a hacker controlled server.

more…


qForms Build 139 Released!

I've had a couple reports of issues or requests to make a few changes, so I've gone ahead and made them. One of the semi-big additions is a validation module that will give you the exact same functionality that's in CFFORM. Rest assured, I've made the same changes in v2. Anyway, here's the latest build:

[-] Change the _q_checkForErrors() function so that the call
    to the isNotEmpty() method used escaped double quotes
    instead of single quotes. This should allow single quotes
    in the description property.
[*] Changed the validateNumeric method to use the parseFloat()
    function to check for a valid numeric value.
[+] Added validateSame validation method
[+] Added validateInteger validation method
[-] Used my old homegrown compression routine on the compressed files.
    It doesn't compress the files down as much as either jsCruncher Pro
    or w3compiler, but it shouldn't break the source code either.
[+] Added cfform.js validation module. This should give you all of the
    exact same functionality as provided w/CFFORM.

As always, you can download the latest version of qForms from http://www.pengoworks.com/qforms/download/.


Microsoft Offering Security Bulletins RSS Feed...

I just noticed that Microsoft is now providing Security Bulletins in a new RSS feed.

Since I use my RSS reader just about daily, this seems like a great way to stay up-to-date on new Security Bulletins. Microsoft is also offering a number of other RSS feeds you can monitor. I'll also be monitoring the Microsoft SQL Server RSS Feed.


Mozilla v0.9 Released!!!

Firefox v0.9 has just been released. The Release Candidate (RC) was just released on the 10th, so I suspect the RC they felt was pretty stable. Anyway, here's a peak at what's new:

  • Extension Manager
  • Theme Manager
  • Data Migration/Import
  • New Visual Theme
  • Better Bookmarks
  • Better Search
  • Smaller Download
  • Online Help

I'm in the process of installing v0.9 as I type this. Hopefully all my extensions continue to work. I really love Firefox—it's become my primary browser, and I was beginning to think I'd be using IE forever.

more…


Another Day, more Macromedia TechNotes...

Two more TechNotes from Macromedia. The first deals with turning on verbose logging—which can be extremely useful when debugging server problems—and the second deals w/a problem WebSphere users may be experiencing when running the CF Administrator and using WebSphere v5.0.2.x.


Another Macromedia TechNote...

Must be TechNote day at Macromedia. They've released another article, this one relating to the fact that if you specify a maximum heap greater than 1.8GBs, CFMX will fail to start.


Macromedia Releases Two New TechNotes...

Macromedia released a couple of TechNote articles today. The first talks about the differences between CF5 and CFMX and how large query results require a much higher memory footprint (due largely to the fact that Java supports Unicode—which requires more bits per character (32 bits over 16 bits.)

The second TechNote relates to how to determ which Java classes are being loaded by into the JVM at load. This could be very useful for debugging purposes.


Inserting CDATA into an XML element using CFMX...

I was having a horrible time trying to insert some CDATA into an element using the CFMX version of an XML "DOM." I use the word "DOM" very lighty w/CFMX, because it really is a hacked together solution that doesn't do much of anything well.

Anyway, I had tried everything under the sun to get my CDATA inserted and I was having absolutely no luck. If I tried to insert the text using xmlText, the CDATA tag would get escape—which is obviously not the behavior I wanted.

Fortunately, Nathan Dintenfass was quick to respond to my disperate cry on one of my mailing lists, with a link from Macromedia's LiveDocs:

more…


UDF: xmlDelete() for CFMX

I needed a way to filter out nodes from an XML document in CFMX. XPath is a great mechanism for finding nodes, so I decided to throw together a little UDF which would allow me to delete any nodes in an XPath expression. Here's the UDF:

/****************************************************************
UDF: xmlDelete(xml, xpath)
Author: Dan G. Switzer, II
Date: 5/27/2004

Arguments:
xml - the xml document to delete nodes from
xpath - the xpath statement which defines the nodes to delete
****************************************************************/

function xmlDelete(oXml, sXpath){
    var oNodes = xmlSearch(oXml, sXpath);
    var bNodesFound = iif(arrayLen(oNodes) gt 0, true, false);
    while( arrayLen(oNodes) GT 0 ){
        arrayClear(oNodes[1]);
        arrayDeleteAt(oNodes, 1);
    }
    return bNodesFound;
}

If you need to delete all the nodes which have an attribute of "active" where the value is "false", you can use the follow:

more…


Update to component() UDF...

I made a modification to my component() UDF that I blogged about last year. I basically added a try/catch to spit out a friendlier error message if the component isn't loaded when passing in a relative path.


What I'd Like To See In Blackstone: Request-based Mappings

Ok, in honor of Tim Buntel's new blog, I'm going to start a little series of blog entries entitled "What I'd Like To See In Blackstone." I'm going to start off the series with a feature I've wanted in the language since CF3 first came out and I started using CF-based custom tags, and that's the ability to create a request-based mappings.

I'd love to be able to create dynamic mappings on page request for both the location of custom tags and for general mappings—which would be especially useful for referencing components. What I'd love to see is a syntax like the following:

<cfmapping
    type="alias"
    logical="/com"
    path="c:\root\site\build\com\"
    />


<cfmapping
    type="customTag"
    path="c:\root\site\build\customTags\"
    />

more…


Tim Buntel's ColdFusion Blackstone Blog

Apparently Ben Forta has finally convinced Tim Buntel, product management for ColdFusion, to open up a blog covering Blackstone—the next version of the ColdFusion product.

There's nothing much but an introduction and a picture in the opening post. Hopefully Tim will make this a good source for what's coming in Blackstone—the good stuff only known by those currently under NDA.