<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-6650413229535480271</id><updated>2008-05-25T10:14:24.400-07:00</updated><title type="text">Coldfusion by Russ &lt;CFRuss&gt;</title><link rel="alternate" type="text/html" href="http://cfruss.blogspot.com/" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/posts/default" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><geo:lat>40.793739</geo:lat><geo:long>-124.161025</geo:long><link rel="self" href="http://feeds.feedburner.com/cfruss" type="application/atom+xml" /><feedburner:emailServiceId>1199337</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-4234191091490449511</id><published>2008-05-01T23:25:00.000-07:00</published><updated>2008-05-02T00:03:42.801-07:00</updated><title type="text">JQuery: powerful, easy, amazing!</title><content type="html">The for the past month I've really been exploring what JQuery can do and I have to say: wow. If you want to spruce up your site's user experience, this is a great way to go. Not only is it easy to understand, but there is a large number of ready-made plugins for it (with good documentation, too!)&lt;br /&gt;For example, you can easily transform a list into a slick drop down menu complete with animation. Or add a image gallery with carousel navigation. Or add a touch of AJAX with a search-box auto-complete feature. Web 2.0, ahoy!&lt;br /&gt;&lt;br /&gt;Part of the power behind JQuery is how it uses "selectors" to identify (and objectify) HTML page elements. Once "objectified" in your javascript, you can then use the expansive JQuery function library on selected element(s). Here is a list of JQuery selectors: &lt;a href="http://docs.jquery.com/Selectors"&gt;http://docs.jquery.com/Selectors&lt;/a&gt; . Seem familiar? If so, it's because JQuery borrows and expands upon CSS selectors.&lt;br /&gt;And while I'm giving you good links, here is some documentation for the JQuery function library: &lt;a href="http://www.visualjquery.com/1.1.2.html"&gt;http://www.visualjquery.com/1.1.2.html&lt;/a&gt; (keep in mind that this is mildly outdated: there are a few more cool functions added in 1.2)&lt;br /&gt;&lt;br /&gt;If you want to see what I've done with it lately, check out the product search on: &lt;a href="http://www.emilystrange.com/beware/getlostengine.cfm"&gt;http://www.emilystrange.com/beware/getlostengine.cfm&lt;/a&gt; (try searching for cat)&lt;br /&gt;I used JQuery's auto-complete AJAX feature, the TableSorter and associated Paging plugin, and I even created my own widget for the TableSorter plugin that adds alternating row colors to the results table. The search filtering is all done with custom JQuery code too.&lt;br /&gt;&lt;br /&gt;For the better part of my web-career I've distanced myself from javascript because it was unreliable and most of it just seemed chunky. Plus, the web didn't start to pick up enough speed (literally) until a few years ago when broadband became standard issue. All of these factors kept me from ever using javascript for anything serious, much less depending on it for site functionality. But that has changed. With browser standardization and high-speed internet came "Web 2.0", and slicker user functionality has become vital.&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=1zwp7w"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=1zwp7w" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=IguikH"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=IguikH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=iflJsh"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=iflJsh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=7AdZlH"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=7AdZlH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=wwFjHh"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=wwFjHh" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=y6i0qh"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=y6i0qh" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/281944574" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/281944574/jquery-powerful-easy-amazing.html" title="JQuery: powerful, easy, amazing!" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=4234191091490449511" title="2 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/4234191091490449511/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/4234191091490449511" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/4234191091490449511" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/05/jquery-powerful-easy-amazing.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-7802114167925960496</id><published>2008-03-18T23:25:00.000-07:00</published><updated>2008-03-19T00:11:27.274-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><category scheme="http://www.blogger.com/atom/ns#" term="cfcs" /><category scheme="http://www.blogger.com/atom/ns#" term="server management" /><title type="text">CFCs vs. Spaghetti Code: Round 1, Fight!</title><content type="html">Ever inherit a batch of code so disturbing that you just have to rewrite the whole damn thing? Well, I did, and so far... ehh.&lt;br /&gt;&lt;br /&gt;The CF powers-that-be tout CFCs as being great because they promote reuse of code. While this is quite true, the overlords of Coldfusion have neglected to mention in any of their documentation just how to go about reusing CFCs &lt;span style="font-style: italic;"&gt;well&lt;/span&gt;. Sure, you can CFINVOKE methods from it or instantiate it with CreateObject() or access it as a webservice... blah, blah, blah. What I want to know is, &lt;span style="font-weight: bold;"&gt;why does my CFC cripple the server under high-load?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Yesterday, after spending a month rewriting our shopping cart as a CFC (hey, it's complicated alright?), I was finally able to post it and see what happens. After about an hour, JRun started throwing funny null errors and ran up queued requests like there was no tomorrow. Yikes! I quickly put the old cart back up, and everything was cool again. Okay... so what happened?&lt;br /&gt;&lt;br /&gt;I spent most of today investigating. Although CFCs can act like objects, my CFC is stateless. It has no properties of its own and for all intents and purposes is essentially just a nice way to keep my cart code in one place. Every time a method from it is called, it must be passed some identifying variables. I had considered writing it as a state-based CFC and storing unique copies in each user's session scope, but I figured my server couldn't afford to store complex objects in it's memory for up to half an hour at a time. Plus, erasing a user's cart every time their session times out is actually a step down from the old cart code, which uses cookies to store cart info "forever."&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;So, the methods in my CFC are being accessed by individual CFINVOKE tags, about 4-7 per page. I found a comment on some blog somewhere about how it is better to instantiate the component and then access methods from the instantiated object. Although my CFC is stateless, I thought, hey why not? ... And that turned out even worse. The server lasted about 5 minutes before junking out.&lt;br /&gt;&lt;br /&gt;Well... thats all I could come up with for this round. I hate to say it but...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;The winner of Round 1 is: Spaghetti code!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Ugh, so what next? I found another random blog that says that you can store stateless CFCS in the application scope. I'm gonna give it a shot tomorrow and see what happens. I'm a little concerned because I saw a forum post by Mr. Camden explaining how CFCs in the application scope became unstable under high-stress. Hmmmm... mind you this post was dated back in 2003 and he was expressing how it may be fixed soon. So... we'll see!&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=TgvAhx"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=TgvAhx" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=gDGJ0rF"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=gDGJ0rF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=T2hLUJf"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=T2hLUJf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=YVAID9F"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=YVAID9F" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=HSWqUGf"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=HSWqUGf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=mCNwoLf"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=mCNwoLf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/254115732" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/254115732/cfcs-vs-spaghetti-code-round-1-fight.html" title="CFCs vs. Spaghetti Code: Round 1, Fight!" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=7802114167925960496" title="2 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/7802114167925960496/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/7802114167925960496" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/7802114167925960496" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/03/cfcs-vs-spaghetti-code-round-1-fight.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-9026782992673528587</id><published>2008-03-18T23:08:00.000-07:00</published><updated>2008-03-18T23:24:39.849-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><category scheme="http://www.blogger.com/atom/ns#" term="bugs" /><category scheme="http://www.blogger.com/atom/ns#" term="functions" /><title type="text">Round()... and why I sometimes hate my life.</title><content type="html">I came across a frustrating Coldfusion MX 6.1 bug today. When attempting to use the Round() function, my numbers were not rounding correctly. Instead of rounding up at .5, they were being rounded down. Uhh... wtf, cf?&lt;br /&gt;&lt;br /&gt;I spent about an hour or so debugging the issue, and sadly, I still cannot say for certain what the problem was. My best guess is that one of the variables in my expression may not have been of type numeric (although it held a numeric value), which could've somehow caused Coldfusion to get confused when performing the Round() function.&lt;br /&gt;&lt;br /&gt;After this thought entered my mind, I immediately encapsulated the expression in a Val() function and "presto!", Round() started working again and I began to reconcile my feelings towards the computer. I had wasted so much time on something so moronic that I didn't feel the need to really fish around for the exact reason WHY Round() stopped working right, I was just happy that it was over with.&lt;br /&gt;&lt;br /&gt;Just thinking about it gives me a headache again!&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=juuQ8h"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=juuQ8h" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=eMyUWBF"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=eMyUWBF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=2ScBu0f"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=2ScBu0f" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=tC7DlyF"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=tC7DlyF" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=TAir5vf"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=TAir5vf" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=RgACn4f"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=RgACn4f" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/254104682" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/254104682/round-and-why-i-sometimes-hate-my-life.html" title="Round()... and why I sometimes hate my life." /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=9026782992673528587" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/9026782992673528587/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/9026782992673528587" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/9026782992673528587" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/03/round-and-why-i-sometimes-hate-my-life.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-5747334701520321803</id><published>2008-01-24T00:14:00.000-08:00</published><updated>2008-01-24T00:40:40.296-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cfcs" /><category scheme="http://www.blogger.com/atom/ns#" term="email" /><category scheme="http://www.blogger.com/atom/ns#" term="server management" /><title type="text">MX 6.1 Issue: CFPOP vs. open-source IMAP alternatives... and why you may end up with CFX_POP3</title><content type="html">Today I spent a large portion of my time fighting a losing battle against bugs. Bugs in Java, bugs in Coldfusion MX 6.1, bugs in the open-source scripts I tried to use... ahhh! Finally I broke down and begged the boss to just buy CFX_POP3 for $20. Let me explain my dilemma:&lt;br /&gt;&lt;br /&gt;My goal: A script that will automatically remove email addresses from our mailing list if we receive a "recipient does not exist" response. This means not only getting a list of messages in the inbox, but also parsing the message body to find the email address that will be removed.&lt;br /&gt;&lt;br /&gt;First try: &amp;lt;CFPOP&gt; . This is Coldfusion's built in POP email tag. In theory, you can handle all the normal email functions with it. In practice, if you try to access a message that is in UTF-7 (rather than UTF-8, the current standard), you'll get an error message. This isn't Coldfusion's fault- rather, UTF-7 is no longer supported in Java. There are a couple of .jar's out there that should enable Java to handle UTF-7, but none of them worked for me. &lt;br /&gt;&lt;br /&gt;Second attempt: IMAP via open-source CFCs. I tried &lt;a href="http://sourceforge.net/projects/cfimap-cfc/"&gt;cfimap&lt;/a&gt; AND &lt;a href="http://www.opensourcecf.com/1/2006/12/ImapCFC-Update.cfm"&gt;imap.cfc&lt;/a&gt;, both of which were not compatible with MX 6.1, and no amount of debugging got me anywhere.&lt;br /&gt;&lt;br /&gt;My solution: &lt;a href="http://store.newmediadevelopment.net/cfx_tag.cfm?ProductID=16"&gt;CF_POP3&lt;/a&gt; For $20, I should've just gone for it in the first place. It has some extra features that CFPOP lacks, but what counts is that it supports UTF-7. &lt;br /&gt;&lt;br /&gt;Thank goodness I'm done with debugging other people's open-source code. For now.&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=0oJkOO"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=0oJkOO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=vrxhaCD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=vrxhaCD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=YvmTxXd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=YvmTxXd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=3jH51WD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=3jH51WD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=AAQQogd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=AAQQogd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=S28z9Yd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=S28z9Yd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/222162265" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/222162265/mx-61-issue-cfpop-vs-open-source-imap.html" title="MX 6.1 Issue: CFPOP vs. open-source IMAP alternatives... and why you may end up with CFX_POP3" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=5747334701520321803" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/5747334701520321803/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/5747334701520321803" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/5747334701520321803" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/01/mx-61-issue-cfpop-vs-open-source-imap.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-8764581267590618725</id><published>2008-01-14T20:12:00.000-08:00</published><updated>2008-01-14T20:50:06.593-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="server management" /><title type="text">Tip: Speed up your SQL database with indexing</title><content type="html">When your database starts to grow, you'll find that your queries take longer and longer to complete. This is because they have to search more and more rows. This slowdown can affect your entire website or application as the slow queries inevitably occupy more simultaneous threads. You can even experience temporary outages if slow queries occupy all your threads, forcing every query request to wait!&lt;br /&gt;&lt;br /&gt;There are numerous ways to fix this:&lt;br /&gt;1. Code conservatively so that your query the database as little as possible.&lt;br /&gt;2. Include primary keys in your WHERE and JOIN-ON clauses.&lt;br /&gt;3. Run a Query Analyzer tool on slow queries to find out what parts of your query are slowest, and then...&lt;br /&gt;4. Create indexes on columns that are frequently used in WHERE or JOIN clauses.&lt;br /&gt;&lt;br /&gt;Main points when indexing:&lt;br /&gt;1. Don't index columns where a large percentage of rows haveh the same values. This defeats the whole purpose. &lt;br /&gt;2. Don't index large varchar columns. Again, this will not increase performance.&lt;br /&gt;3. Don't index every column. Just index the ones used to identify unique rows in a large number of WHERE and JOIN clauses.&lt;br /&gt;4. Go read some more in-depth documentation on indexing. This is just a general overview. Here is a decent article regarding Clustered VS. Non-Clustered Indexes: &lt;a href="http://www.daemon.com.au/index.cfm?objectid=ABF13B5F-EA69-0EC7-F7FAD8ABCA1E04FD"&gt;daemon: Database Indexing Strategies for FarCry&lt;/a&gt;. (FYI Farcry is a CMS, but the DB principals are the same)&lt;br /&gt;&lt;br /&gt;For example:&lt;br /&gt;In the case of one website I'm working on, my predecessor chose to ignore Primary Keys and generate his own uniquely identifying numbers. These numbers are used in many queries, but none of the columns were indexed. After applying an index to these columns, the entire website saw a significant performance boost. In fact, this has helped reduce the number of SQL Deadlocks by minimizing row-lock time.&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=NFMh1D"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=NFMh1D" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=w1LC07D"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=w1LC07D" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=RUv5fgd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=RUv5fgd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=10ko32D"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=10ko32D" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=l0jvgWd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=l0jvgWd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=V4OxnNd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=V4OxnNd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/216843020" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/216843020/tip-speed-up-your-sql-database-with.html" title="Tip: Speed up your SQL database with indexing" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=8764581267590618725" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/8764581267590618725/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/8764581267590618725" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/8764581267590618725" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/01/tip-speed-up-your-sql-database-with.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-8557167731969586301</id><published>2008-01-10T20:20:00.000-08:00</published><updated>2008-01-10T20:40:26.760-08:00</updated><title type="text">Query of Queries - "unsupported type conversion error" in MX 6.1</title><content type="html">I just ran into this frustrating bug yesterday. When working with Query of Queries you (&amp;lt;cfquery dtype="query"&gt;) you may get the error, "unsupported type conversion error." After doing some research I found out that the reason this occurs is because Coldfusion attempts to automatically determine the data types for columns in QofQ. If it gets it wrong and you try to use the QofQ in such a way that conflicts with the data-type Coldfusion assigned, you will get this error.&lt;br /&gt;&lt;br /&gt;To remedy this you must be sure that when you create the QofQ, the data in your columns LOOKS like the data types you think they should be. For example, if you want Coldfusion to assign the varchar datatype to a column, you should initially populate the column with at least one cell that contains a non-numeric character. If a column contains only integers, Coldfusion will assign an "int" data type to it. I don't know the details of how Coldfusion determines a "date" data type for QofQ, but I'm sure you'll figure it out.&lt;br /&gt;&lt;br /&gt;I just find it helpful to know that this "bug" exists so that when I get an "unsupported type conversion error" I'll know what is causing it.&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=Y2ITXm"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=Y2ITXm" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=OwFquqD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=OwFquqD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=bUNmPYd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=bUNmPYd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=OfMyhgD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=OfMyhgD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=q4XuZgd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=q4XuZgd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=UZLtaJd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=UZLtaJd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/214779002" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/214779002/query-of-queries-unsupported-type.html" title="Query of Queries - &quot;unsupported type conversion error&quot; in MX 6.1" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=8557167731969586301" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/8557167731969586301/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/8557167731969586301" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/8557167731969586301" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/01/query-of-queries-unsupported-type.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-6298582282200319702</id><published>2008-01-07T23:29:00.000-08:00</published><updated>2008-01-07T23:54:54.018-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="bugs" /><category scheme="http://www.blogger.com/atom/ns#" term="ms sql 2000" /><title type="text">"IN operator" and Null values--a bug in MS SQL 2000</title><content type="html">Just discovered a bug in MS SQL 2000 today. When performing a query with the &lt;span style="font-weight:bold;"&gt;IN operator&lt;/span&gt;, you'll need to make sure that the associated &lt;span style="font-weight:bold;"&gt;value list&lt;/span&gt; does not contain any null values. If it does, the expression will always return false. The fix for this is simple enough: simply add &lt;span style="font-weight:bold;"&gt;AND column IS NOT NULL&lt;/span&gt; to your SELECT sub-query.&lt;br /&gt;&lt;br /&gt;For example, the following SQL query:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;SELECT intelligence_rating&lt;br /&gt;FROM aliens&lt;br /&gt;WHERE home_world IN (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM worlds&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE class = 'M'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Would need to be changed to:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;SELECT intelligence_rating&lt;br /&gt;FROM aliens&lt;br /&gt;WHERE home_world IN (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM worlds&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE class = 'M'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AND name IS NOT NULL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;If there were any worlds that did not have a value in the &lt;span style="font-weight:bold;"&gt;name&lt;/span&gt; column. Good thing we can safely assume that all worlds have names. For now... (queue scary music?)&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=QqT54X"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=QqT54X" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=xegE6yD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=xegE6yD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=IQ2yZld"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=IQ2yZld" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=HlXnEaD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=HlXnEaD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=VDmDmTd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=VDmDmTd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=0xQIccd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=0xQIccd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/213054870" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/213054870/ms-sql-2000-bug-where-value-in-select.html" title="&quot;IN operator&quot; and Null values--a bug in MS SQL 2000" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=6298582282200319702" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/6298582282200319702/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/6298582282200319702" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/6298582282200319702" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/01/ms-sql-2000-bug-where-value-in-select.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-1478529915663678510</id><published>2008-01-03T19:40:00.000-08:00</published><updated>2008-01-03T21:28:07.286-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><category scheme="http://www.blogger.com/atom/ns#" term="cfcs" /><category scheme="http://www.blogger.com/atom/ns#" term="undocumented" /><title type="text">Passing multiple same-named arguments to a CFC via GET or POST</title><content type="html">&lt;h1 style="color: white; font-size: 1px; display: none; visibility: hidden; margin:0px;padding:0px;"&gt;functions,  cfcs, components, cffunction, cfcompnent, cfargument, lists, tricks, secrets, unknown, tips, interesting, uncommon, undocumented&lt;/h1&gt;I discovered a useful undocumented behavior of Coldfusion components today! It turns out that if you define the value of a named argument more than once in a remote method call (via GET or POST), those values will be passed as a comma-delimited list. This behavior is different than how Coldfusion would treat argument multiples in every other function call--normally, Coldfusion either overwrites arguments with their last defined value or throws an error.&lt;br /&gt;&lt;br /&gt;Here is an example:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;example.cfc&lt;/b&gt;&lt;br /&gt;&lt;div style="padding-left: 16px; padding-right:16px;background-color: rgb(238, 238, 238); font-family: courier new;"&gt;&lt;br /&gt;&lt;span style='color:#900'&gt;&amp;#60;&amp;#99;&amp;#102;&amp;#99;&amp;#111;&amp;#109;&amp;#112;&amp;#111;&amp;#110;&amp;#101;&amp;#110;&amp;#116;&amp;#62;&lt;/span&gt;&lt;br /&gt;&amp;#9;&lt;span style='color:#900'&gt;&amp;#60;&amp;#99;&amp;#102;&amp;#102;&amp;#117;&amp;#110;&amp;#99;&amp;#116;&amp;#105;&amp;#111;&amp;#110;&amp;#32;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&amp;#61;&amp;#34;&amp;#116;&amp;#101;&amp;#115;&amp;#116;&amp;#34;&amp;#32;&amp;#97;&amp;#99;&amp;#99;&amp;#101;&amp;#115;&amp;#115;&amp;#61;&amp;#34;&amp;#114;&amp;#101;&amp;#109;&amp;#111;&amp;#116;&amp;#101;&amp;#34;&amp;#32;&amp;#114;&amp;#101;&amp;#116;&amp;#117;&amp;#114;&amp;#110;&amp;#116;&amp;#121;&amp;#112;&amp;#101;&amp;#61;&amp;#34;&amp;#97;&amp;#110;&amp;#121;&amp;#34;&amp;#62;&lt;/span&gt;&lt;br /&gt;&amp;#9;&amp;#9;&lt;span style='color:#900'&gt;&amp;#60;&amp;#99;&amp;#102;&amp;#100;&amp;#117;&amp;#109;&amp;#112;&amp;#32;&amp;#118;&amp;#97;&amp;#114;&amp;#61;&amp;#34;&amp;#35;&amp;#97;&amp;#114;&amp;#103;&amp;#117;&amp;#109;&amp;#101;&amp;#110;&amp;#116;&amp;#115;&amp;#35;&amp;#34;&amp;#62;&lt;/span&gt;&lt;br /&gt;&amp;#9;&lt;span style='color:#900'&gt;&amp;#60;&amp;#47;&amp;#99;&amp;#102;&amp;#102;&amp;#117;&amp;#110;&amp;#99;&amp;#116;&amp;#105;&amp;#111;&amp;#110;&amp;#62;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Then simply type something like this as a url to call the above component: http://www.yourdomain.com/&lt;br&gt;&lt;b&gt;example.cfc?method=test&amp;a=1&amp;a=2&amp;a=oh&amp;a=3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is what you'll see:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_3XSk2C5jhyM/R33CE76tjmI/AAAAAAAAAAU/z7aGQDyzrNE/s1600-h/samename.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_3XSk2C5jhyM/R33CE76tjmI/AAAAAAAAAAU/z7aGQDyzrNE/s200/samename.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5151486938840927842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;kinda cool, huh? &lt;br /&gt;&lt;br /&gt;I've tested this behavior in Coldfusion MX 6.1 and MX 7. If anyone out there would like to test it on MX 8 and let me know how it works, that would be great!&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=qu1XOd"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=qu1XOd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=J2xyyPD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=J2xyyPD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=ihVGyWd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=ihVGyWd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=zDzHQZD"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=zDzHQZD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=HJ6xMAd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=HJ6xMAd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=O56Lyrd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=O56Lyrd" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/210929940" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/210929940/passing-multiple-same-named-arguments.html" title="Passing multiple same-named arguments to a CFC via GET or POST" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=1478529915663678510" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/1478529915663678510/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/1478529915663678510" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/1478529915663678510" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2008/01/passing-multiple-same-named-arguments.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-112018104950929501</id><published>2007-12-23T23:33:00.000-08:00</published><updated>2007-12-24T01:09:05.929-08:00</updated><title type="text">RentACoder.com and ExpertRating.com review</title><content type="html">I just signed up on a job search site called &lt;a href="http://www.rentacoder.com/RentACoder/Default.asp?txtFromURL=AId_6787961"&gt;RentACoder.com&lt;/a&gt; .  So far it looks promising, with a large amount of jobs of various sizes and payouts. It is partnered with ExpertRating.com, an online certification site. Certain certification tests you pass on ExpertRating.com will automatically show up on your &lt;a href="http://www.rentacoder.com/RentACoder/Default.asp?txtFromURL=AId_6787961"&gt;RentACoder.com&lt;/a&gt; profile. At first I was skeptical about getting online certification from ExpertRating.com (because you can easily cheat), but then I took the Coldfusion MX 7 test. It was about "medium" difficulty for me, and I've been coding in Coldfusion for a few years now. The toughest questions were regarding: syntax rules that I rarely encounter, custom tags, and general language overviews. All the questions were multiple choice though, so that helped a little.&lt;br /&gt;&lt;br /&gt;In any case, I passed the certification and can now proclaim my competence while promoting their website with this fine logo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.expertrating.com/transcript.asp?transcriptid=1474252"&gt;&lt;img src="http://www.expertrating.com/logos/coldfusion_mx7.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=MXF4Dq"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=MXF4Dq" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=ZZm41JC"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=ZZm41JC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=LBQfAuc"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=LBQfAuc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=JT9EqsC"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=JT9EqsC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=DUXiz3c"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=DUXiz3c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=sGKf9Ac"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=sGKf9Ac" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/205502879" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/205502879/rentacodercom-and-expertratingcom.html" title="RentACoder.com and ExpertRating.com review" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=112018104950929501" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/112018104950929501/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/112018104950929501" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/112018104950929501" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/12/rentacodercom-and-expertratingcom.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-7800022989958151288</id><published>2007-12-18T22:57:00.000-08:00</published><updated>2007-12-19T10:26:10.319-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><title type="text">My Strange Cat @ EmilyStrange.com ROUND 2 - MS SQL 2000 vs. Pagination</title><content type="html">In all my excitement while creating &lt;a href="http://emilystrange.com/beware/games/mystrangecat"&gt;My Strange Cat&lt;/a&gt;, I overlooked a bug in MS SQL 2000. Well, not really a bug... more like a missing feature. Most current SQL databases feature the ability to paginate your query results using LIMIT and OFFSET (or something similar), where LIMIT is the number of rows you want to return and OFFSET is the row that you want to start at. This keeps pagination nice and simple, and keeps your queries to the minimum size necessary. Check out &lt;a href="http://www.petefreitag.com/item/451.cfm"&gt;Pete Freitag's blog&lt;/a&gt; about it.&lt;br /&gt;&lt;br /&gt;Unfortunately, MSSQL 2000 does not support this feature, or ANY kind of simple row counting functionality. The closest you can get to actual pagination is by using the TOP keyword with 2 subqueries--see &lt;a href="http://josephlindsay.com/archives/2005/05/27/paging-results-in-ms-sql-server/"&gt;this example&lt;/a&gt; by Joseph Lindsay. This doesn't quite work the same though--when viewing the last page of results the SQL server is working just as hard as (or harder than) it would without this form of paging. &lt;br /&gt;&lt;br /&gt;The only other solution I could find was to query the server for ALL the records in the table, cache that query with cfquery's "cachedWithin" attribute, run subqueries using Coldfusion's query of queries feature (which is mighty cool, I might add.) and then set the "startrow" and "maxrows" attributes in my cfoutput tag to paginate the results when it is time to display the data.&lt;br /&gt;&lt;br /&gt;This solution works well because it takes the load off of SQL and puts it onto Coldfusion. I only have to run one big SQL query every so often (currently every half hour) and then Coldfusion does the rest of the work. This is a huge upgrade to my previous code which ran that same big SQL query for every single page hit (ouch!) Keep in mind this solution should only be used with small recordsets. If I had a table with 50,000 rows and a few ntext columns, I doubt my server would still be running because it would try to cache the whole table (and fail miserably.)&lt;br /&gt;&lt;br /&gt;And in case you are wondering what I'm going to do when my table does get to 50,000 rows or some other obscene number, I have a couple backup plans. First--I wrote another solution for my app using the &lt;a href="http://josephlindsay.com/archives/2005/05/27/paging-results-in-ms-sql-server/"&gt;TOP / ORDER BY method&lt;/a&gt; and stored it away in a safe place. Second, if I absolutely have to I will make my future self do the work of recreating the table in MS SQL 2005 and copying all the data over, then rewriting the code to use LIMIT and OFFSET.&lt;br /&gt;&lt;br /&gt;All I can say is, "Why didn't I just create database in MS SQL 2005 in first place?!?" BAH!&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=JYqMtK"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=JYqMtK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=ABiYa8C"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=ABiYa8C" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=4E23u1c"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=4E23u1c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=VdkwLKC"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=VdkwLKC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=hiPgCsc"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=hiPgCsc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=EltUmLc"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=EltUmLc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/202610721" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/202610721/my-strange-cat-emilystrangecom-round-2.html" title="My Strange Cat @ EmilyStrange.com ROUND 2 - MS SQL 2000 vs. Pagination" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=7800022989958151288" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/7800022989958151288/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/7800022989958151288" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/7800022989958151288" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/12/my-strange-cat-emilystrangecom-round-2.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-1876876267880233864</id><published>2007-12-16T14:45:00.000-08:00</published><updated>2007-12-19T10:26:26.741-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><category scheme="http://www.blogger.com/atom/ns#" term="cfcs" /><category scheme="http://www.blogger.com/atom/ns#" term="ajax" /><category scheme="http://www.blogger.com/atom/ns#" term="rss" /><title type="text">Creating My Strange Cat @ EmilyStrange.com--Adventures in AJAX, JSMX, and ImageCFC</title><content type="html">My latest scripting project was &lt;a href="http://emilystrange.com/beware/games/mystrangecat"&gt;My Strange Cat&lt;/a&gt;, a feature of EmilyStrange.com . Essentially, I was tasked with creating an app that would allow people to upload pictures of their cats, add captions directly to the image, AND add Emily the Strange artwork as "watermarks" on top of the image. I also had to implement a "5-paw" voting system, user-suggested keyword "tags", and a dynamic RSS feed that would accept url sorting variables.&lt;br /&gt;By far, my biggest hurdle was conquering the image processing. I needed functions that would resize images, add text to images, and add images on top of images. Sure it would have been POSSIBLE to write it all from scratch, but luckily I found &lt;a href="http://www.opensourcecf.com/imagecfc/"&gt;Image.cfc&lt;/a&gt;, a free open-source Coldfusion component. It contained all of the above functionality and more. This code probably cut my development time in half! In less than one day I was able to provide the boss with some basic image editing functionality and a taste of what the app would become. &lt;br /&gt;My next hurdle was implementing the image editing functions in such a way that didn't require the end-user to reload the page every time they made a change. How is that possible? AJAX!&lt;br /&gt;I'm new to AJAX, so I needed something really simple and easy to use. After some google searching, I found &lt;a href="http://www.lalabird.com"&gt;JSMX&lt;/a&gt;. JSMX is neat because the javascript is incredibly easy to understand and works well with Coldfusion. Plus I was able to easily customize it to fit my own twisted needs...&lt;br /&gt;Next up was the "5-paw" voting system. This is another AJAX based idea that should have been easier than it was. I went through so many different free downloads I honestly don't even remember whose open-source AJAX code I ended up using. And after I finally got it working, lo and behold, the code I found conflicted with JSMX. Bah! In the end I kept JSMX for the image editing page but used the other AJAX script for the gallery pages. Not as elegant as I usually like things to be, but it did save time (and thus money.)&lt;br /&gt;Next up, keyword "tags". By Tags, I am referring to user-generated search terms--the sort used by Flickr, YouTube, and other user-generated content sites. Again, I wanted this feature to post information to the server without refreshing the page. AJAX to the rescue! The AJAX for this was so simple that I just wrote it myself. I was also a little burnt out on searching for free code after my experience with the "voting" code. The most interesting part of this code was the "most popular tags" portion at the bottom. I had to write some tricky SQL to return the TOP 30 tags with the most hits, a sub-query to sort the results by alphabetical order, and then I had to calculate what font size to display the tags at. I did so by figuring out what percentage of the maximum number of hits each tag had, then simply multiplying that percentage by the max font size I wanted to display. To keep font from being unreasonably small, I wrote an IF tag in the loop: IF the calculated font of this tag is smaller than 8px, set it to 8px. &lt;br /&gt;Next up was the dynamic RSS feed. I wanted users to be able to save RSS feeds of whatever record "views" they wanted. For example, if they wanted their RSS feed to contain only the 5 most recent posts with the keyword "stupid cat", they could have that. This is easy to do by writing your RSS with coldfusion. You may be saying, "But wait, I thought RSS feeds had to be .xml files?" Wrong! Turns out you can name them anything so long as the file contains a proper RSS feed. This is good for us because that means we can name them with a .cfm and have our server process the page with Coldfusion.&lt;br /&gt;For the project the way that I implemented RSS was that by simply adding a url parameter "rss=true", the main index.cfm page will generate RSS content instead of HTML. This way I don't have to rewrite any processing code AND any future changes to  processing will be automatically reflected in the RSS feed. Quick, elegant, and functional. I love it ;) Essentially, the code works like so: IF url.rss IS 'true', include the RSS template and abort further processing. Then the RSS page contains a cfoutput tag that loops over the same query as the HTML page would have. &lt;br /&gt;&lt;br /&gt;Well anyways, hope that ramble was interesting and informative!&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=hixZNt"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=hixZNt" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=KbY9QgC"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=KbY9QgC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=coH6qxc"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=coH6qxc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=cfiQcxC"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=cfiQcxC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=r3Um84c"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=r3Um84c" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=vwi8bNc"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=vwi8bNc" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/201398800" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/201398800/creating-my-strange-cat-emilystrangecom.html" title="Creating My Strange Cat @ EmilyStrange.com--Adventures in AJAX, JSMX, and ImageCFC" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=1876876267880233864" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/1876876267880233864/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/1876876267880233864" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/1876876267880233864" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/12/creating-my-strange-cat-emilystrangecom.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-4182415581370151474</id><published>2007-10-28T02:10:00.001-07:00</published><updated>2007-12-20T01:06:38.605-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="server management" /><title type="text">Shared Hosting Security Issues</title><content type="html">I'm so frustrated with the web host provider for my newest independent project. I accidentally discovered a serious security issue and have been trying to get them to fix it, but they haven't even been getting back to me. It shouldn't be MY responsibility to try to get them to fix THEIR problem! &lt;br /&gt;&lt;br /&gt;Long story short, the moral is: don't trust shared hosting security! And NEVER store sensitive customer information (ssn's, credit card info, etc) on a shared database server.&lt;br /&gt;&lt;br /&gt;And watch where you buy stuff online. Personally, I think paypal is the ONLY way to do it.&lt;br /&gt;&lt;br /&gt;Sigh.&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=sGJu66"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=sGJu66" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=LR4SQBA"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=LR4SQBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=fEYAQia"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=fEYAQia" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=AjVzk8A"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=AjVzk8A" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=mZYqMTa"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=mZYqMTa" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=k21uPca"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=k21uPca" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/176158696" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/176158696/shared-hosting-security-issues.html" title="Shared Hosting Security Issues" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=4182415581370151474" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/4182415581370151474/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/4182415581370151474" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/4182415581370151474" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/10/shared-hosting-security-issues.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-727006038904747859</id><published>2007-10-14T01:14:00.000-07:00</published><updated>2007-12-20T01:06:51.930-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><category scheme="http://www.blogger.com/atom/ns#" term="server management" /><title type="text">Make your own remote server monitor!</title><content type="html">Site going down in the middle of the night? Here is how to set up your own remote server monitor that will email your host support team (and even send you a text message!):&lt;br /&gt;&lt;br /&gt;1. Install Coldfusion developer (it's free!) on one your development machines. It cannot go on the same server that is being monitored because if it goes down, so will the monitor (duh.) This step is easier said than done, but if you already have Coldfusion installed on a local machine then you don't have to worry about it.&lt;br /&gt;&lt;br /&gt;2. Set up a mail server that coldfusion can access with the cfmail tag. The mail server cannot be located on the server that you are monitoring!&lt;br /&gt;&lt;br /&gt;3. Copy &amp; modify this simple code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&amp;lt;!--- ServerMonitor.cfm ---&gt; &lt;br /&gt;Testing the server...&lt;br /&gt;&amp;lt;cftry&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;cfhttp url="http://www.yoursite.com" throwOnError="yes" redirect="no"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Success!&lt;br /&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;cfcatch&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Monitor failure!&lt;br /&gt;    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- send email to host support team ---&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfmail to="support@yourhost.com" from="youremail@yourOTHERhost.com" subject="Server Monitor Failure"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Our server, (INSERT YOUR SERVER NAME HERE), may be having troubles. Could you please check on it? Thank you!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/cfmail&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--- send text message to you ---&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;cfmail to="SEE STEP 4" from="youremail@yourOTHERhost.com" subject="Server Monitor Failure"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Our server, (INSERT YOUR SERVER NAME HERE), may be having troubles. Could you please check on it? Thank you!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/cfmail&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/cfcatch&gt;&lt;br /&gt;&amp;lt;/cftry&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Did you know you can send text messages with simple emails? You do now! Here is a list of providers and associated text-message email addresses:&lt;br /&gt;&lt;br /&gt;AT&amp;T Wireless&lt;br /&gt;NUMBER@mmode.com&lt;br /&gt;&lt;br /&gt;Cingular&lt;br /&gt;NUMBER@mms.mycingular.com&lt;br /&gt;&lt;br /&gt;Sprint&lt;br /&gt;NUMBER@pm.sprint.com&lt;br /&gt;&lt;br /&gt;T-Mobile&lt;br /&gt;NUMBER@tmomail.net&lt;br /&gt;&lt;br /&gt;Verizon&lt;br /&gt;NUMBER@vzwpix.com&lt;br /&gt;&lt;br /&gt;5. Schedule ServerMonitor.cfm (the above code) to run automatically every half hour (or something like that) in Coldfusion Administrator (or with Windows Task Sceduler). I say every half hour because if the server goes down you don't want to be recieving a million text messages or have your host support team get pissed at you. (p.s. it might be best to disable the text messaging option if you don't get unlimited text messages)&lt;br /&gt;&lt;br /&gt;Now just remember to leave the machine on all night. That's it! No more worrying about checking your busy e-commerce site in the middle of the night, no more calling host support at 2am asking them to reboot the server :)&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=3RUMUs"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=3RUMUs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=cIn7rdk6"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=cIn7rdk6" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=ui88FVS0"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=ui88FVS0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=TRrJY14K"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=TRrJY14K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=sWA3NQQG"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=sWA3NQQG" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/169836673" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/169836673/make-your-own-remote-server-monitor.html" title="Make your own remote server monitor!" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=727006038904747859" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/727006038904747859/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/727006038904747859" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/727006038904747859" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/10/make-your-own-remote-server-monitor.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-6862593727663996295</id><published>2007-10-07T20:24:00.001-07:00</published><updated>2008-01-03T21:26:36.201-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="functions" /><title type="text">ExpandPath()</title><content type="html">I recently happened upon a cool CF function that returns the absolute path of a directory on your server after being passed a relative path: &lt;a href="http://livedocs.adobe.com/coldfusion/7/htmldocs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=ColdFusion_Documentation&amp;file=part_cfm.htm"&gt;ExpandPath()&lt;/a&gt;&lt;br /&gt;This function is especially helpful when something requires an absolute path-- which is usually the case for file management tags (cffile, cfdirectory, cfftp), system functions (fileExists(), directoryExists(), getFileFromPath(), GetProfileString()) and some others (cfexecute, cfdocument.)&lt;br /&gt;For those of us working on shared servers, this tag is especially useful because: 1. Sometimes you don't know the absolute path and 2. Even if you did, there is no guarantee that it won't change someday. Speaking of things changing someday, this tag is extremely helpful when writing portable or compartmentalized code--which we should be doing anyways to save us from future headaches ("...damnit, I changed my webroot location and now I have to fix all my absolute references! Oh the horror...")&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=cddFKb"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=cddFKb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=yAZTwvbH"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=yAZTwvbH" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=eIYybJHd"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=eIYybJHd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=y0htTKK6"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=y0htTKK6" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=5ytPuqxi"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=5ytPuqxi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=Vs0tNg3O"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=Vs0tNg3O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/166780403" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/166780403/expandpath.html" title="ExpandPath()" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=6862593727663996295" title="1 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/6862593727663996295/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/6862593727663996295" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/6862593727663996295" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/10/expandpath.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-4279764931005605899</id><published>2007-09-21T00:01:00.000-07:00</published><updated>2007-12-20T01:06:16.636-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><category scheme="http://www.blogger.com/atom/ns#" term="server management" /><title type="text">How to clear your Coldfusion server cache (not a pretty job, but someone's gotta do it...)</title><content type="html">&lt;p class="whs17"&gt;I found the following information somewhere on the web (that means it &lt;span style="font-style: italic;"&gt;must &lt;/span&gt;be true!)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="whs17"&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="whs17"&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="whs17"&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt;How to Clear   your CFMX Server Cache -&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;The CFMX server reads ColdFusion files and recompiles this information   to Java Class files. Sometimes, after making changes to the JAR files   within the ColdFusion library (/lib), or your CFM scripts, you may need   to perform the following steps to 'clear your cache' as we like to call   it. &lt;/p&gt; &lt;p&gt;The folder that contains the Java *.class files is in the location shown   below. Your path may vary depending on your installation location.&lt;/p&gt; &lt;p&gt;e.g. C:\CFusionMX\wwwroot\WEB-INF\cfclasses&lt;/p&gt; &lt;ol class="whs18" type="1"&gt;&lt;li class="kadov-p"&gt;&lt;p&gt;Make a backup of all the (*.class) files in a   separate folder. &lt;/p&gt;&lt;/li&gt;&lt;li class="kadov-p"&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt;Stop&lt;/b&gt;&lt;/span&gt; the   ColdFusion Application Server &lt;/p&gt;&lt;/li&gt;&lt;li class="kadov-p"&gt;&lt;p&gt;Delete all (*.class) files in the "cfclasses"   folder specified in above. &lt;/p&gt;&lt;/li&gt;&lt;li class="kadov-p"&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;b&gt;Start&lt;/b&gt;&lt;/span&gt;   the ColdFusion Application Server&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;ol class="whs18" type="1"&gt;&lt;/ol&gt; &lt;p&gt;&lt;/p&gt;But really though, it works. I did it today when I installed that hotfix from my last post. You can trust me.... lol. Now you're never going to do it.&lt;br /&gt;Anyways, from what I've read Coldfusion caches all your Coldfusion pages in this folder. If you make a lot of changes to your site, then you probably have a bunch of unused cache files. This can contribute to a slower site because the server has to search through those files whenever a page is accessed. One forum-fellow said he had 40,000 files in there, oh snap! I didn't have quite that many, but still, I'm glad I found out how to "clear my cache" (as they like to call it.)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;p&gt;   &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=OwXdhS"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=OwXdhS" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=Bk9XxAAA"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=Bk9XxAAA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=OH1QH5Pk"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=OH1QH5Pk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=6puuGttM"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=6puuGttM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=kZ6gS3hB"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=kZ6gS3hB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=dciBLLps"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=dciBLLps" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/159353372" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/159353372/how-to-clear-your-coldfusion-server.html" title="How to clear your Coldfusion server cache (not a pretty job, but someone's gotta do it...)" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=4279764931005605899" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/4279764931005605899/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/4279764931005605899" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/4279764931005605899" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/09/how-to-clear-your-coldfusion-server.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-1476085599967505619</id><published>2007-09-19T18:25:00.000-07:00</published><updated>2007-12-19T10:26:50.678-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql" /><category scheme="http://www.blogger.com/atom/ns#" term="coldfusion" /><title type="text">cfQueryParam -- featuring zombies and oral surgeons</title><content type="html">Check out this &lt;a href="http://www.forta.com/blog/index.cfm/2005/12/21/SQL-Injection-Attacks-Easy-To-Prevent-But-Apparently-Still-Ignored"&gt;article&lt;/a&gt; by Ben Forta about SQL Injection Attacks. Yikes! It's scary to think that someone could simply put a few extra lines into a url and totally ruin a database. Thank goodness for cfQueryParam (not to be confused with cfParam!)&lt;br /&gt;So today I spent some time searching through query after query making sure that any of them with user input was filtered with cfQueryParam. Kind of mind-numbing, but alas, very necessary. The only snags that I hit had to do with using LIKE statements or functions in queries with cfQueryParam. Here is what I learned.&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Example of how to use LIKE with cfQueryParam (for my oral surgeon):&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;SELECT&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;tooth&lt;br /&gt;FROM mouth&lt;br /&gt;WHERE tooth LIKE &amp;lt;cfqueryparam value="%#form.wisdomTooth#%" cfsqltype="CF_SQL_VARCHAR"&gt;&lt;/blockquote&gt;The trick here is that instead of putting the wildcard indicators (%) on the outside of the cfqueryparam tag, you have to include them in the value attribute. In fact, Coldfusion throws an error if you try to put anything outside the cfqueryparam tag.&lt;br /&gt;&lt;br /&gt;The following is a great illustration of what will NOT work (for zombies&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;with discerning taste):&lt;br /&gt;&lt;blockquote&gt;SELECT brains&lt;br /&gt;FROM people&lt;br /&gt;WHERE tasteRating = tasteTest(&amp;lt;cfqueryparam value="#url.victimSkin#" cfsqltype="CF_SQL_INTEGER"&gt;)&lt;/blockquote&gt;You would need to put the tasteTest function INSIDE the cfqueryparam value attribute, like so: &amp;lt;cfqueryparam value="tasteTest(#url.taste#)" cfsqltype="CF_SQL_INTEGER"&gt;&lt;br /&gt;&lt;br /&gt;This brings me to another cute piece of information that I found today. There is bug in Coldfusion MX 6.1 regarding the use of functions inside cfqueryparam tags. If you are too good for MX 6.1 and only use "new" versions of Coldfusion, then this won't apply to you, Mr. Fancypants. For the rest of us: &lt;a href="http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_19108&amp;amp;sliceId=2"&gt;Coldfusion MX 6.1 Hot Fix for cfQuery / cfQueryParam&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;p.s. Although the cfsqltype is NOT a required attribute, someone somewhere said that it improves performance, which makes sense to me--so what the hell, why not use it? Apparently it is hard to come by  a chart of cfsqltypes and their associated SQL data types (it was not included in the Coldfusion MX 6.1 LiveDocs.)&lt;br /&gt;So here is the link to the Adobe LiveDocs page that DOES include a chart: &lt;a href="http://livedocs.adobe.com/coldfusion/7/htmldocs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=ColdFusion_Documentation&amp;amp;file=00000317.htm"&gt;Coldfusion MX 7 cfQueryParam (with data type chart!)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=SNedya"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=SNedya" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=IRIjoV0A"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=IRIjoV0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=uNgTktMm"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=uNgTktMm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=F9yaJ4bU"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=F9yaJ4bU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=yZfhx8hL"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=yZfhx8hL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=1w5ZnNSl"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=1w5ZnNSl" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/158867534" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/158867534/like-it-ps-theres-bug-in-61.html" title="cfQueryParam -- featuring zombies and oral surgeons" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=1476085599967505619" title="2 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/1476085599967505619/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/1476085599967505619" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/1476085599967505619" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/09/like-it-ps-theres-bug-in-61.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6650413229535480271.post-8643381727953808240</id><published>2007-09-19T02:40:00.000-07:00</published><updated>2007-09-21T01:08:28.060-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="spry" /><title type="text">I'm learning Spry... what are you doing?</title><content type="html">The biggest change in Dreamweaver CS3 has to be the Spry framework. Nothing like built-in AJAX!&lt;br /&gt;I have been wrangling with Spry off and on for the last few weeks and so far I suck at it. There is just so much to learn! It doesn't help that I don't have CS3 at home, so I'm stuck writing Spry code by hand (something I don't recommend.)&lt;br /&gt;I dig the debug info, but compared to Coldfusion's debug service it is weaksauce. Oh well, better than nothing.&lt;br /&gt;&lt;br /&gt;With Spry in mind, I've been slowly developing my first serious Web 2.0 app. The idea of it is to offer a listing of touring bands that will be coming through a user's local area. Something like byofl.org (Book Your Own Fuckin' Life, lol) My idea will require auto-geolocation similar to craigslist, but it will need to be combined with a location radius so the user can select bands coming though only his town or any town within a specified radii (up to 250 miles perhaps).&lt;br /&gt;Since I've been doing music in bands for about 7 years and have been on 3 tours, I know how desperate touring bands are for shows and how hard it is to find them. Not to mention finding a place to shower... This app would be unique in that the target users are show bookers--or even  anyone that could provide services such as lodging, food, showers, etc.&lt;br /&gt;&lt;br /&gt;I think it will be a hit if I can get the user interface right. That's why I'm going with Spry for now. The cool thing about Web 2.0 is that I'll be delivering the content using XML, so it won't be too tough to develop a whole new interface down the road if I want. I mean, I'm gonna have to do something in Flash too! Then I gotta try out plugging it into Adobe AIR and Google Desktop. I can't wait!&lt;div class="blogger-post-footer"&gt;Content provided by: &lt;a href="http://cfruss.blogspot.com/"&gt;cfruss.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/cfruss?a=Uys6uN"&gt;&lt;img src="http://feeds.feedburner.com/~a/cfruss?i=Uys6uN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/cfruss?a=3I8q3OeT"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=3I8q3OeT" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=MiW4G6CX"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=MiW4G6CX" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=CtxH1sDE"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=CtxH1sDE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=fs51W7NB"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=fs51W7NB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/cfruss?a=LDaKfUaO"&gt;&lt;img src="http://feeds.feedburner.com/~f/cfruss?i=LDaKfUaO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cfruss/~4/158621195" height="1" width="1"/&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/cfruss/~3/158621195/im-learning-spry-what-are-you-doing.html" title="I'm learning Spry... what are you doing?" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6650413229535480271&amp;postID=8643381727953808240" title="0 Comments" /><link rel="replies" type="application/atom+xml" href="http://cfruss.blogspot.com/feeds/8643381727953808240/comments/default" title="Post Comments" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/8643381727953808240" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6650413229535480271/posts/default/8643381727953808240" /><author><name>Russ</name><uri>http://www.blogger.com/profile/14689026926020041677</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://cfruss.blogspot.com/2007/09/im-learning-spry-what-are-you-doing.html</feedburner:origLink></entry></feed>
