Contact Doug!
Learn About Doug!
View Doug Boude's online resume
updated 11/18/2009

View Doug Boude's profile on LinkedIn
Link to me!

Follow Doug Boude on Twitter
Follow me!

Be Doug's friend on Facebook
Befriend me!
(I promise not to follow you home)
OO Lexicon
Chat with Doug!
Recent Entries
You may also be interested in...
Florida web site design



Czech your Page Rank!
Check Page Rank of any web site pages instantly:
This free page rank checking tool is powered by Page Rank Checker service
Surf's Up!
Visit Egosurf.org and massage YOUR web ego!
My Score: 9,001
Doug's Books

Read (and recommend)

  • Men are from Mars, Women are from Venus
  • The Wisdom of Crowds: Why the Many Are Smarter Than the Few and How Collective Wisdom Shapes Business, Economies, Societies and Nations
  • Blink: The Power of Thinking Without Thinking
  • Head First Design Patterns
  • Transact-SQL Programming
  • What's So Amazing About Grace?
  • Just So Stories (Rudyard Kipling collection)

Reading

  • Prayer: Does it Make Any Difference?
  • Data Mining (Practical Machine Learning Tools and Techniques)
<< June, 2008 >>
SMTWTFS
1234567
891011121314
15161718192021
22232425262728
2930
Search Blog

Recent Comments
Categories
Archives
Photo Albums
Funnies (5)
Family (3)
RSS

Powered by
BlogCFM v1.11

29 June 2008
My FB 5.5+ Content Pulled a David Blaine!
FB 5.5+ for Model-Gluers
For any of you Model-gluers out there who are dabbling in Fusebox 5.5+ (which I happen to be for a current client project), I came across a hair-pulling situation that I wanted to share with you in the hopes that you'll not have to endure the same.

The symptom: you wrote a perfectly good controller method that is being called and, according to the debugging, is rendering all of your content just fine. But, your final page returns completely empty! It's just gone, not there, not even a single line in your page's source. Poof! It pulled a David Blaine. After spending more time on this than I care to admit, following are the details of the issue and the solution.

The Cause and Solution
You know how in your MG controllers and model CFCs you're in the habit of typing out all of your attributes and their values when declaring a new CFFUNCTION (such as, "<cffunction name="getEntityDetails" output="false" access="public">")? And, you know how in MG, 99.9% of the time, your methods don't need to render any output and so you set the output attribute to "false" just out of habit? Well, if you're using FB 5.5+ (at least in the 'no xml' mode, which is what I'm doing), you have to be mindful NOT to set the output attribute to false if your method is going to render any page output (which is the way to do it in FB 5.5+ in the 'no-xml' mode). You may be saying "duh, if it's rendering output of COURSE you wouldn't set output="false"! But, typically if a method is going to render output, it's going to do so with either cfoutput tags or the like, which would trigger your programmer mind to remind you to change the output attribute. In the approach that FB 5.5+ takes to do this, however, the natural mechanism that would trigger your mind to make the output value change isn't tripped, because we're just not used to seeing it done that way (eg; <cfset myFusebox.do( action="layout.main_template" ) />). At least it didn't trip mine.

Here's an example of a non-working and a working FB 5.5+ method that performs my login functionality and then renders the appropriate display page:

Non-Functioning method:
<cffunction name="login" returntype="void" output="false">
   <cfargument name="myFusebox" />
   <cfargument name="event" />
   [code to perform login logic here]
   <cfset myFusebox.do( action="display.dspHome",contentvariable="body" ) />
   <cfset myFusebox.do( action="layout.main_template" ) />
</cffunction>


Functioning method:
<cffunction name="login">
   <cfargument name="myFusebox" />
   <cfargument name="event" />
   [code to perform login logic here]
   <cfset myFusebox.do( action="display.dspHome",contentvariable="body" ) />
   <cfset myFusebox.do( action="layout.main_template" ) />
</cffunction>


So, even though FB 5.5+ can be used in an MVC manner, and even though many of the ways of thinking you've grown accustomed to with Model Glue do translate directly over to FB 5.5+, SOME DO NOT. Just remain mindful of this fact as you take the FB 5.5+ journey and you should be able to avoid hitting dead ends such as this one.

Doug out.
Posted by dougboude at 11:28 AM | PRINT THIS POST! | Link | 0 comments



14 June 2008
Email Non-Delivery Due To No Reverse DNS Record
Cause and Solution

Here's the scenario...

You're managing several domains on one IP address (beevis.com, butthead.com, and LakersSuck.com), using host headers with your web server in order to do so successfully. If you're unfamiliar with what "using host headers" means, it's a cryptic way of saying that "whenever a user arrives at your web server, check to see what the URL is and redirect them to the appropriate subdirectory based on that value". In our scenario, you're also managing your own email server, perhaps using something like Smartermail, so each of your domains can have their own email addresses (info@beevis.com, info@butthead.com, info@LakersSuck.com).

The Challenge...

Everything's working great for you. User's are being redirected to the appropriate subdirectories on your web server, and you're sending and receiving emails via each of those email addresses just fine. Oh, wait...SOMETIMES the email you send out doesn't arrive at its destination! A glitch in the system? A random gremlin in the processor? A rogue process? After many hours of re-doing settings, checking settings, system restarts, and hunting for common denominators with your clients, you finally stumble upon the fact that it's mostly only emails going to people who use AOL that are not making it to their destination, along with a few other friends who are using their local cable company for email. You turn on logging and watch for any clues, googling what you find until at last you have distilled things down to their cause: Your domains do not have a reverse DNS record in place. What this means is that an outside system cannot take your IP address and look it up to make sure it's associated with the actual domain that is sending the email.


Here's the clue from the mail server's log file:


"Failed Recipient: blabla@aol.com
Reason: Remote host said: 450 #4.1.3 Relaying temporarily denied. Cannot
resolve PTR record for 208.112.55.164"

Further substantiation from AOL's own site  (http://postmaster.aol.com/guidelines/standards.html) solidifies that this is indeed the issue:
 "AOL's mail servers will reject connections from any IP address that does not have reverse DNS (a PTR record). "

 Whew! At least now you know what's causing this faux random issue! Okay then, let's just add a reverse DNS record for each of our domains so that when a receiving system does their look up, they can see that you really are who you say you are.

The Additional Challenge...

After many MORE hours of attempting to create reverse DNS records (PTR records), you figure out that any given IP address is only allowed to resolve back to a single domain name. So your whole configuration of sharing one IP with several domains has now suddenly become a very bad idea, and it's time to give each its own address.

The Solution...

Tech support provides you with two new IP addresses, which you can see and verify on your Windows system by going to your Control Panel --> Network Connections --> [your connection name] --> Properties -->TCP/IP --> Properties.

Assign each of your domains a new IP address in your web server, then edit your DNS entries for each of those domains to reflect the new IP address. It is quite likely that, if you're using hosting, you will not be able to create your own PTR record and will have to contact your host to do this for you (that is the case with Host My Site), so just make sure you have them do that. After the reverse lookup records are in place, you can verify them by visiting http://remote.12dt.com/lookup.php and typing in the IP address. It should come back with the domain name you assigned to it.

Let everything simmer for 24 hours, just to account for whatever propogation delays and caching are floating around, and give things another whirl. You should be good to go at this point.

Doug out.

Posted by dougboude at 5:58 PM | PRINT THIS POST! | Link | 5 comments