Posted on Leave a comment

Work Complete!

I just finished a fun piece of code for a client. In addition to web server logs, they have a prioprietary advertising campaign tracker. They needed data aggregated and queries optimized which was phase 1 and included some MS SQL stored procedure magic, queries of queries (ColdFusion), and manually creating query result sets.

Phase II was to minimize the amount of text presented, show results in graphs, and create a way for an advertising client to view only their data. Fortunately, ColdFusion comes through with a fancy tag called CFChart and after the server configuration was debugged, graphs appeared. Then text on the screen was hidden using CSS (and I’m really starting to use and enjoy the cascading aspect of css) and made to appear through JavaScript.

Since some charts show way too much data, a form was added to filter the data and only show lines on the graphs that are relevant to the end user’s needs.

Posted on 1 Comment

CFChart problem solved!

I changed multiple variables at once so all of this may not be necessary. The final solution to the CFChart doesn’t work / won’t display / is blank problem is to add a virtual directory in IIS under the website wanting to use CFChart for "CFIDE" and another virtual directory for "JRunScripts". The last post in this thread helped me realize that having virtual directories for CFIDE and JRunScripts in the webroot was not sufficient.

Allan – CFUG Spain 5 Dec 2004 21:16:55 [ permanent link ]
What you have do is:

  1. Create the file GraphData.cfm in the CFIDE directory. (As a file can’t be empty stick a comment in there )
  2. Make sure the IIS website entry has a virtual directory to CFIDE (C:\Inetpub\wwwroot\CFIDE)
  3. Make sure the IIS website entry has a virtual directory to JRunScripts (C:\CFusionMX\runtime\lib\wsconfig\1)

Then restart CFMX server and Bob should be your uncle.

Allan

Update: Insult to injury. 6.5 hours ago, someone online recommended I confirm my mappings for CFIDE and scripts. I misinterpretted their question and blew it! Time to self-deprecate.

Posted on 1 Comment

Time to regroup – CFChart or not CFChart

So I’ve spent most of the day working on this issue. To recount, I’m trying to use CFChart to plot some data but the webpage returns blank. What we know:

The zero byte file reference was interesting. For people having trouble with CFChart or RDS you may need to know:

Some ColdFusion Administrator functions, as well as RDS and cfchart functionality, rely on two ColdFusion templates. However, these templates do not exist by default. You will need to create the following zero-byte files, since IIS will check for them during processing.

  1. Open Windows Explorer.
  2. Navigate to the web_root/CFIDE directory, typically located at \inetpub\wwwroot\CFIDE.
  3. Create a blank file named GraphData.cfm.
  4. Create a directory called main.
  5. Navigate to the new directory at web_root/CFIDE/main.
  6. Create a blank file titled ide.cfm.
  7. Repeat steps B-F for any additional instances of web_root/CFIDE.

At this point I’m running out of time. Can I do this with a different solution?

Posted on 3 Comments

Simple is never simple

So I take on two quickie low cost, fast turn around projects and they are eating me alive!

The first is a ColdFusion reporting project that is simply supposed to take the existing statistics report and produce a chart using CFChart. Works fine on my CFMX6.1 development server but apparently IIS6 and CF7.1 don’t play nice when it comes to CFChart. The problem is with IIS but Adobmedillare has been kind enough to release a hot fix that doesn’t work. "This hot fix explicitly generates HTTP headers before the chart data."

The second simple project is a PHP COTS shopping system (x-cart) that needs some customization. Only, it’s not using PHP per se. The customizations are all done using SMARTY. The challenge with programming, particularly web application programming, is constantly having to learn new languages/frameworks/methodoligies and being able to turn work like its old hack.

Using this simple CFChart example works in CF6.1 and fails in CF7.01 even after the hot fix.

<cfchart>
   <cfchartseries type="pie">
      <cfchartdata item="New car sales" value="50000">
      <cfchartdata item="Used car sales" value="25000">
      <cfchartdata item="Leasing" value="30000">
      <cfchartdata item="Service" value="40000">
   </cfchartseries>
</cfchart>

Anyone have extra tickets for CFUnited? I’d love to go this year but can’t justify the cost of the event.

UPDATE: Just tried the ColdFusion MX 7.0.1 Cumulative Hot Fix 2 with no luck. Note the hot fix advises:

Any individual hot fixes previously installed that are now contained in this cumulative hot fix should be removed.

we recommend always using the latest version of the cumulative hot fix

In short, remove any previous *.jars and only install the latest fix.

Posted on Leave a comment

Woohoo! Aardvark is working again. CSS troubleshooting is easier.


For you developers out there troubleshooting CSS, Aardvark is an extension for Firefox which greatly helps troubleshoot your css since it will show the elements with labels. Aardvark is not listed on Mozilla’s official list of extensions which typically means that the extension is not completely compatible with Firefox, sloppy, or the developer just didn’t submit it. I like Aardvark but had to quit using it when Firefox released version 1.5. Only today did I realize that Aardvark had a new release.

I definitely recommend adding Aardvark to your list of development tools!

Posted on 1 Comment

Project Done!

Most of the time I try to avoid talking about my work. Often it just is not appropriate. However, many people have no idea what I do. I find solutions to computer problems with a focus on web application development and database design; usually my work is in content management, inventory control, and e-commerce/point of sales. I have bid projects on automation of assembly lines, and done work as diverse as writing C++ programs with the aid of Russian programmers (that app had many millions of downloads btw). I sometimes get hands on and build computers or troubleshoot and repair systems. Often, I find some of my solutions to problems both fun and really cool.

I just completed two fun projects that each tormented me with overruns on deadlines due to technical hurdles. The latter was simply a statistical report of some tracked performance on a website. The challenge in organizing and categorizing the data came down to database design choices previously made by the client including housing some of the data in a MS SQL database and some of the data in a MS Access database. A requirement was speed so the choice was made to place as much onus on the MS SQL database for preparing the data. Unfortunately, this came down only to using some aggregate functions to get the totals and unioning a couple of tables. I did have the pleasure of writing a neat little UDF to convert a list into some table results. Because of the way the aggregate functions had to be written, the data came out neither grouped appropriately and with some unavoidably duplicate data.

Fortunately, ColdFusion now has the ability to perform queries on queries including the joining of data across different datasources. So now that I had data appropriately summed albeit out of order and with some duplicates (as stated previously), I could write a query to pull the labels from the MS Access database. All labels and details were in Access; all statistical information, referred to only by id, was in SQL. Next I used a query of query to join the resultset from the stored procedure with the result set from the Access database and now the data started to resemble something meaningful; however, duplicate information still litered the results.

ColdFusion also allows for manually building a result set. I’ve seen the unfortunate growth in popularity of the term "fake query" which is a terrible misnomer. It is a manual query result set. You, the programmer, are programmatically reproducing a set of data that otherwise would have been delivered via a database engine. So, using a loop to step through our latest result set formed from the QoQ and logic within the loop, I create a result set that combines information from the semi-duplicated rows into a single row. In the process I wrote a slick little number using a structure to hold the grand totals for each segment that I could refer to mathmatically when outputing the result set. Then I simply display the results reaching into the structure for additional information when necessary.

Wahla! Greek.