<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>JoshMattVander</title>
	<atom:link href="http://www.joshmattvander.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joshmattvander.com</link>
	<description>Limpin ain't easy</description>
	<pubDate>Fri, 19 Feb 2010 18:13:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Domain and subdomain routing in rails</title>
		<link>http://www.joshmattvander.com/2010/02/domain-and-subdomain-routing-in-rails/</link>
		<comments>http://www.joshmattvander.com/2010/02/domain-and-subdomain-routing-in-rails/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 18:10:12 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=149</guid>
		<description><![CDATA[I needed to be able to route any domain that was not my own to a single controller.  And furthermore I had to route any subdomain that was not &#8221; and not &#8216;www&#8217; to that same controller.
If you can&#8217;t guess why, it is because it is a hosted application.  In any case, I used the [...]]]></description>
			<content:encoded><![CDATA[<p>I needed to be able to route any domain that was not my own to a single controller.  And furthermore I had to route any subdomain that was not &#8221; and not &#8216;www&#8217; to that same controller.</p>
<p>If you can&#8217;t guess why, it is because it is a hosted application.  In any case, I used the <a href="http://github.com/veilleperso/request_routing" target="_blank">request_routing</a> plugin and it seemed OK for my needs.  The problem was, it didn&#8217;t accept things like :not =&gt; &#8216;www&#8217; or :not =&gt; &#8221;.  So, I ended up using a regular expression for my result.  Here goes.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"> &nbsp;not_domain_regex = <span class="kw4">Regexp</span>.<span class="me1">new</span><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\A</span>(?!(&#8217;</span> + AConfig::domain.<span class="kw3">gsub</span><span class="br0">&#40;</span><span class="st0">&#8216;.&#8217;</span>, <span class="st0">&#8216;<span class="es0">\.</span>&#8216;</span><span class="br0">&#41;</span> + <span class="st0">&#8216;))&#8217;</span>, <span class="kw2">true</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; is_domain_regex = <span class="kw4">Regexp</span>.<span class="me1">new</span><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\A</span>((&#8217;</span> + AConfig::domain.<span class="kw3">gsub</span><span class="br0">&#40;</span><span class="st0">&#8216;.&#8217;</span>, <span class="st0">&#8216;<span class="es0">\.</span>&#8216;</span><span class="br0">&#41;</span> + <span class="st0">&#8216;))&#8217;</span>, <span class="kw2">true</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; map.<span class="me1">connect</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;*path&#8217;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re3">:controller</span> =&gt; <span class="st0">&#8216;external&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re3">:action</span> =&gt; <span class="st0">&#8216;handler&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re3">:conditions</span> =&gt; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">:domain</span> =&gt; not_domain_regex</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; map.<span class="me1">connect</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&#8216;*path&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re3">:controller</span> =&gt; <span class="st0">&#8216;external&#8217;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re3">:action</span> =&gt; <span class="st0">&#8216;handler&#8217;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re3">:conditions</span> =&gt; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">:domain</span> &nbsp;=&gt; is_domain_regex,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">:subdomain</span> =&gt; /<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z0<span class="nu0">-9</span>\-\_<span class="br0">&#93;</span><span class="br0">&#123;</span><span class="nu0">1</span>,<span class="nu0">100</span><span class="br0">&#125;</span><span class="br0">&#91;</span>^www<span class="br0">&#93;</span><span class="br0">&#41;</span>/i</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>The next step in this will be to replace &#8220;*path&#8221; with &#8220;:controller/:action/:id&#8221; and have it route to namespaced controllers.</p>
<p>Ex:</p>
<p>/controllers/external/controller_name.rb</p>
<p>If you have any ideas on that part.  Let me know <img src='http://www.joshmattvander.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2010/02/domain-and-subdomain-routing-in-rails/&amp;t=Domain+and+subdomain+routing+in+rails&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2010/02/domain-and-subdomain-routing-in-rails/&amp;title=Domain+and+subdomain+routing+in+rails&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2010/02/domain-and-subdomain-routing-in-rails/&amp;title=Domain+and+subdomain+routing+in+rails&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2010/02/domain-and-subdomain-routing-in-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cross domain sessions</title>
		<link>http://www.joshmattvander.com/2010/02/cross-domain-sessions/</link>
		<comments>http://www.joshmattvander.com/2010/02/cross-domain-sessions/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 20:04:41 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=138</guid>
		<description><![CDATA[I have been racking my brain for some time on how to accomplish cross domain sessions.  It was especially puzzling at first since the application I was working on ran multiple sites.  So, the code base was the same, even though the domain might change.
I will not go too deep into security on this, I [...]]]></description>
			<content:encoded><![CDATA[<p>I have been racking my brain for some time on how to accomplish cross domain sessions.  It was especially puzzling at first since the application I was working on ran multiple sites.  So, the code base was the same, even though the domain might change.</p>
<p>I will not go too deep into security on this, I am just going to give you the tools to explore the concept.</p>
<p>The first step you will have to take is to create a services file on the original site providing the session, in this case I will be using rails.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#Controller</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> ServiceController &lt; ApplicationController</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">def</span> sessioninfo</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> session<span class="br0">&#91;</span><span class="re3">:user</span><span class="br0">&#93;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="re1">@referrer</span> = <span class="st0">&#8216;var referrer=<span class="es0">\&#8217;</span>&#8216;</span> + request.<span class="me1">env</span><span class="br0">&#91;</span><span class="st0">&#8216;HTTP_REFERER&#8217;</span><span class="br0">&#93;</span>.<span class="me1">to_s</span> + <span class="st0">&#8216;<span class="es0">\&#8217;</span>;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="re1">@user</span> = <span class="st0">&#8216;var user=&#8217;</span> + session<span class="br0">&#91;</span><span class="re3">:user</span><span class="br0">&#93;</span>.<span class="me1">to_json</span> + <span class="st0">&#8216;;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="co1">#there was no session</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">end</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>What ultimately gets outputted from this is the following:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">#output</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> referrer=<span class="st0">&#8216;http://www.thereferrer.com&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> user=<span class="br0">&#123;</span><span class="st0">&quot;user&quot;</span><span class="br0">&#123;</span><span class="st0">&quot;username&quot;</span>:<span class="st0">&quot;joshmattvander&quot;</span><span class="br0">&#125;</span><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Now the session is ultimately exposed on the original site.  But we need to get it from another site.  The only way to accomplish that I can find is to use javascript.  What you are going to do is add a script to the head of the document with your exposed service URL in my case (http://mysite.com/service/sessioninfo).  The reason we are doing this in javascript, is because if we did this on the server side, the session would be blank.  By doing this in javascript it is as if the user was returning to the URL themselves so the session is still alive and kicking.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> scriptEl = $<span class="br0">&#40;</span><span class="st0">&#8216;&lt;script type=&quot;text/javascript&quot; src=&quot;http://mysite.com/service/sessioninfo&quot;&gt;&lt;/script&gt;&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>scriptEl<span class="br0">&#41;</span>.<span class="me1">appendTo</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span><span class="st0">&#8216;head&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; setTimeout<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>referrer &amp;&amp; user<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&#8216;The referring site is: &#8216;</span> + referrer + <span class="st0">&#8216;.&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&#8216;The logged in user is: &#8216;</span> + user<span class="br0">&#91;</span><span class="st0">&#8216;user&#8217;</span><span class="br0">&#93;</span>.<span class="me1">username</span> + <span class="st0">&#8216;.&#8217;</span><span class="br0">&#41;</span>;&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;The session did not transfer&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>, <span class="nu0">500</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>This is the basic mechanism that allows this to happen, but the next step would be securing with some sort of key and adapting this to your needs.</p>
<p>As stated earlier - on my app there are multiple domains being run by a single application.  So I can save the a generated key to a table, and then use that key to re-connect with ajax.</p>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2010/02/cross-domain-sessions/&amp;t=Cross+domain+sessions&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2010/02/cross-domain-sessions/&amp;title=Cross+domain+sessions&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2010/02/cross-domain-sessions/&amp;title=Cross+domain+sessions&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2010/02/cross-domain-sessions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Private variables in javascript</title>
		<link>http://www.joshmattvander.com/2009/09/private-variables-in-javascript/</link>
		<comments>http://www.joshmattvander.com/2009/09/private-variables-in-javascript/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 04:14:11 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=115</guid>
		<description><![CDATA[In a chat the concept of private variables in a javascript object came up. I had seen it before but never really had done them before so I thought I would play around with it a bit.
Javascript by default does not have private variables.  If you have variables that need to be &#8216;read-only&#8217; or [...]]]></description>
			<content:encoded><![CDATA[<p>In a chat the concept of private variables in a javascript object came up. I had seen it before but never really had done them before so I thought I would play around with it a bit.</p>
<p>Javascript by default does not have private variables.  If you have variables that need to be &#8216;read-only&#8217; or &#8216;private&#8217; you can limit it&#8217;s visibility with a closure inside your constructor function.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> foo = <span class="kw2">function</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> privateVar = a;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">getPrivate</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> a;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">setPrivate</span> = <span class="kw2">function</span><span class="br0">&#40;</span>newvar<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a = newvar;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> bar = <span class="kw2">new</span> foo<span class="br0">&#40;</span><span class="nu0">1000</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>bar.<span class="me1">getPrivate</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="co1">// Alerts 1000</span></div>
</li>
<li class="li2">
<div class="de2">bar.<span class="me1">setPrivate</span><span class="br0">&#40;</span><span class="st0">&#8216;Hello&#8217;</span><span class="br0">&#41;</span>; <span class="co1">// Sets privateVar to &#8216;Hello&#8217;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>bar.<span class="me1">getPrivate</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="co1">// Alerts &#8216;Hello&#8217;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>bar.<span class="me1">privateVar</span><span class="br0">&#41;</span>; &nbsp; <span class="co1">// Alerts &#8216;undefined&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/09/private-variables-in-javascript/&amp;t=Private+variables+in+javascript&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/09/private-variables-in-javascript/&amp;title=Private+variables+in+javascript&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/09/private-variables-in-javascript/&amp;title=Private+variables+in+javascript&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/09/private-variables-in-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ajaxifying your website</title>
		<link>http://www.joshmattvander.com/2009/09/ajaxifying-your-website/</link>
		<comments>http://www.joshmattvander.com/2009/09/ajaxifying-your-website/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 17:27:55 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=97</guid>
		<description><![CDATA[This tutorial is intended to be a first look at the concept of &#8220;Ajaxifying&#8221; your website.  That is, creating a progressive-enhancement to how users navigate from page to page.  Traditionally when a user clicks a link, the new page in it&#8217;s entirety will be loaded.  If your header / navigation / footer [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial is intended to be a first look at the concept of &#8220;Ajaxifying&#8221; your website.  That is, creating a progressive-enhancement to how users navigate from page to page.  Traditionally when a user clicks a link, the new page in it&#8217;s entirety will be loaded.  If your header / navigation / footer stays the same throughout, there is little need to re-download that content, furthermore to re-render that content after it downloaded.</p>
<p>This is a generic pattern that you can expand on and implement with your web application.</p>
<h3>First the Javascript</h3>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> QuickLink = <span class="kw2">Class</span>.<span class="me1">create</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; currentPage : <span class="kw2">null</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; initialize : <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">attachLinkEvents</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Set an interval to check for changes in the URI</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; setInterval<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">refresh</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>, <span class="nu0">1000</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; refresh : <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//If a change has taken place, call the dispatch function</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> url = window.<span class="me1">location</span>.<span class="me1">hash</span>.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&#8216;#&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>url.<span class="me1">length</span> &gt; <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">dispatch</span><span class="br0">&#40;</span>url<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; attachLinkEvents : <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Gather a list of links, and replace the default action</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//With our javascript action</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> links = $$<span class="br0">&#40;</span><span class="st0">&#8216;a&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; links.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>linkElement, index<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> href = linkElement.<span class="me1">href</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>href.<span class="me1">indexOf</span><span class="br0">&#40;</span><span class="st0">&#8216;http://www.yourdomain.com/&#8217;</span><span class="br0">&#41;</span> != <span class="nu0">-1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> uri = href.<span class="me1">split</span><span class="br0">&#40;</span><span class="st0">&#8216;http://www.yourdomain.com&#8217;</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Event.<span class="me1">observe</span><span class="br0">&#40;</span>linkElement, <span class="st0">&#8216;click&#8217;</span>, <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.<span class="me1">location</span>.<span class="me1">hash</span> = uri;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Disallow the default click to change pages</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Event.<span class="kw3">stop</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; dispatch : <span class="kw2">function</span><span class="br0">&#40;</span>url<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Check to see if the page you are linking to is NOT the current URL</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//If different, then send your request</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">currentPage</span> != url<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">currentPage</span> = url;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> myAjax = <span class="kw2">new</span> Ajax.<span class="me1">Updater</span><span class="br0">&#40;</span><span class="st0">&#8216;content&#8217;</span>, url, <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parameters : <span class="br0">&#123;</span> <span class="st0">&#8216;quick&#8217;</span> : <span class="kw2">true</span> <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//initialize</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">new</span> QuickLink<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<h3>Your template</h3>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;quick&#8217;</span><span class="br0">&#93;</span>!=<span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt;!DOCTYPE html <span class="kw2">PUBLIC</span> <span class="st0">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</span>&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;html xmlns=<span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span> xml:lang=<span class="st0">&quot;en&quot;</span> lang=<span class="st0">&quot;en&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;head&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;meta http-equiv=<span class="st0">&quot;Content-type&quot;</span> content=<span class="st0">&quot;text/html; charset=utf-8&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;title&gt;Page Title&lt;/title&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/head&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;body&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;div id=<span class="st0">&quot;content&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?</span> <span class="br0">&#125;</span> <span class="kw2">?&gt;</span>&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Some content here</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;quick&#8217;</span><span class="br0">&#93;</span>!=<span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw2">?&gt;</span></div>
</li>
<li class="li2">
<div class="de2">&lt;/div&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/body&gt;</div>
</li>
<li class="li1">
<div class="de1">&lt;/html&gt;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?</span> <span class="br0">&#125;</span> <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<h3>In conclusion</h3>
<p>What we are doing is using AJAX just to refresh the content area.  Your template checks to see if it was an AJAX request and if so, does not send the header and footer of your content back.  This saves you in the following areas:</p>
<ul>
<li>Does not have to re-download everything</li>
<li>If you have scripts that need to be initialized, the scripts will not need to be reparsed</li>
</ul>
<h3>Moving further</h3>
<p>If using a more advanced setup like an MVC framework or if your app has different scripts or elements depending on the page I suggest on the server side you instead send back a payload including dependent scripts and maybe flags to highlight elements as well.  Then you can use output buffering to store the HTML chunk in part of the payload.  Return the response as a JSON object have your Javascript put things where they need to go and THEN write the innerHTML of the content part of the payload.</p>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/09/ajaxifying-your-website/&amp;t=Ajaxifying+your+website&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/09/ajaxifying-your-website/&amp;title=Ajaxifying+your+website&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/09/ajaxifying-your-website/&amp;title=Ajaxifying+your+website&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/09/ajaxifying-your-website/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick and dirty GZIP Compression w/ .htaccess</title>
		<link>http://www.joshmattvander.com/2009/09/quick-and-dirty-gzip-compression-w-htaccess/</link>
		<comments>http://www.joshmattvander.com/2009/09/quick-and-dirty-gzip-compression-w-htaccess/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 17:16:06 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Performance]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=99</guid>
		<description><![CDATA[There are bigger solutions to this problem that you may need to consider.  But if you have a medium trafficked site this will work.



&#160;


&#60;FilesMatch &#34;\\.(js&#124;css&#124;html&#124;htm&#124;php&#124;xml)$&#34;&#62;


&#160; &#160; &#160; &#160; SetOutputFilter DEFLATE


&#60;/FilesMatch&#62;


&#160;



A little something for Expires headers &#038; ETags too



&#160;


&#60;FilesMatch &#34;\.(ico&#124;pdf&#124;flv&#124;jpg&#124;jpeg&#124;png&#124;gif&#124;js&#124;css&#124;swf)$&#34;&#62;


&#160; &#160; &#160; &#160; Header set Expires &#34;Thu, 15 Apr 2010 20:00:00 GMT&#34;


&#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>There are bigger solutions to this problem that you may need to consider.  But if you have a medium trafficked site this will work.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;FilesMatch</span> <span class="st0">&quot;\\.(js|css|html|htm|php|xml)$&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; SetOutputFilter DEFLATE</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/FilesMatch<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>A little something for Expires headers &#038; ETags too</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;FilesMatch</span> <span class="st0">&quot;\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Header set Expires &quot;Thu, 15 Apr 2010 20:00:00 GMT&quot;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Header unset ETag</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; FileETag None</div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/FilesMatch<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/09/quick-and-dirty-gzip-compression-w-htaccess/&amp;t=Quick+and+dirty+GZIP+Compression+w%2F+.htaccess&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/09/quick-and-dirty-gzip-compression-w-htaccess/&amp;title=Quick+and+dirty+GZIP+Compression+w%2F+.htaccess&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/09/quick-and-dirty-gzip-compression-w-htaccess/&amp;title=Quick+and+dirty+GZIP+Compression+w%2F+.htaccess&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/09/quick-and-dirty-gzip-compression-w-htaccess/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Front-End Performance Optimizations</title>
		<link>http://www.joshmattvander.com/2009/08/front-end-performance-optimizations/</link>
		<comments>http://www.joshmattvander.com/2009/08/front-end-performance-optimizations/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 18:24:45 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=89</guid>
		<description><![CDATA[When everyone talks about performance, they talk about tuning a database, they talk about adding machines and they talk about optimizing code on the server.  I have been on this trip about learning how to optimize pages.  This is not necessarily a tutorial, but more a collection of videos so you can begin your quest.

Speed

The [...]]]></description>
			<content:encoded><![CDATA[<p>When everyone talks about performance, they talk about tuning a database, they talk about adding machines and they talk about optimizing code on the server.  I have been on this trip about learning how to optimize pages.  This is not necessarily a tutorial, but more a collection of videos so you can begin your quest.<br />
</p>
<h3>Speed</h3>
<p>
The golden rules: http://developer.yahoo.com/performance/rules.html</p>
<p><object width="480" height="385" data="http://www.youtube.com/v/aJGC0JSlpPE&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/aJGC0JSlpPE&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" /><param name="allowfullscreen" value="true" /></object></p>
<div><object width="512" height="322" data="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" value="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=3881103&amp;vid=1041101&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v2/w1005/1041101_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3D.7GNZXv8LnB.mF6jjzNl7A--&amp;embed=1" /><param name="src" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="flashvars" value="id=3881103&amp;vid=1041101&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v2/w1005/1041101_100_70.jpeg%3Fx%3D158%26y%3D111%26sig%3D.7GNZXv8LnB.mF6jjzNl7A--&amp;embed=1" /><param name="allowfullscreen" value="true" /></object><br />
<a href="http://video.yahoo.com/watch/1041101/3881103">Joseph Smarr: &#8220;High-performance JavaScript: Why Everything You&#8217;ve Been Taught Is Wrong&#8221;</a> @ <a href="http://video.yahoo.com">Yahoo! Video</a></div>
<p><object width="560" height="340" data="http://www.youtube.com/v/Tig31WCc0d8&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/Tig31WCc0d8&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" /><param name="allowfullscreen" value="true" /></object></p>
<p><em>Look at the cascade: You love it!</em></p>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/08/front-end-performance-optimizations/&amp;t=Front-End+Performance+Optimizations&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/08/front-end-performance-optimizations/&amp;title=Front-End+Performance+Optimizations&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/08/front-end-performance-optimizations/&amp;title=Front-End+Performance+Optimizations&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/08/front-end-performance-optimizations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The event model in javascript</title>
		<link>http://www.joshmattvander.com/2009/07/the-event-model-in-javascript/</link>
		<comments>http://www.joshmattvander.com/2009/07/the-event-model-in-javascript/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 04:32:15 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=121</guid>
		<description><![CDATA[This is a video I found on YUI Theater.  If you have spent any amount of time with javascript especially event handling and especially event handling within input fields you&#8217;ve driven yourself to the point of insanity on at least one occasion.  I am not so sure if this video helps as much [...]]]></description>
			<content:encoded><![CDATA[<p>This is a video I found on YUI Theater.  If you have spent any amount of time with javascript especially event handling and especially event handling within input fields you&#8217;ve driven yourself to the point of insanity on at least one occasion.  I am not so sure if this video helps as much as it just shows you how different the implementations are.</p>
<h3>The PPK</h3>
<div><object width="512" height="322"><param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=13163203&#038;vid=4943143&#038;lang=en-us&#038;intl=us&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/8540/84355927.jpeg&#038;embed=1" /><embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" width="512" height="322" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#000000" flashVars="id=13163203&#038;vid=4943143&#038;lang=en-us&#038;intl=us&#038;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/8540/84355927.jpeg&#038;embed=1" ></embed></object><br /><a href="http://video.yahoo.com/watch/4943143/13163203">PPK (Peter-Paul Koch): &quot;JavaScript Events&quot;</a> @ <a href="http://video.yahoo.com" >Yahoo! Video</a></div>
<p><a href="http://www.quirksmode.org/dom/events">Quirksmode DOM Events</a></p>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/07/the-event-model-in-javascript/&amp;t=The+event+model+in+javascript&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/07/the-event-model-in-javascript/&amp;title=The+event+model+in+javascript&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/07/the-event-model-in-javascript/&amp;title=The+event+model+in+javascript&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/07/the-event-model-in-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Site</title>
		<link>http://www.joshmattvander.com/2009/07/new-site/</link>
		<comments>http://www.joshmattvander.com/2009/07/new-site/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 08:32:34 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Random]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=86</guid>
		<description><![CDATA[Yep, it was about time for a change.  I set out this morning to design a new site.  I was using a theme before for my personal blog and I had a seperate site for my freelance business.  Well, I am dropping the freelance and I am switching everything over to my personal site.
From here [...]]]></description>
			<content:encoded><![CDATA[<p>Yep, it was about time for a change.  I set out this morning to design a new site.  I was using a theme before for my personal blog and I had a seperate site for my freelance business.  Well, I am dropping the freelance and I am switching everything over to my personal site.</p>
<p>From here on out, I will be publishing selected freelance work and some various programming explorations.</p>
<p>I hope you enjoy.</p>
<p>-Josh</p>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/07/new-site/&amp;t=New+Site&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/07/new-site/&amp;title=New+Site&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/07/new-site/&amp;title=New+Site&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/07/new-site/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Javascript prototype linkage &#8220;Wierdness&#8221;</title>
		<link>http://www.joshmattvander.com/2009/07/javascript-prototype-linkage-wierdness/</link>
		<comments>http://www.joshmattvander.com/2009/07/javascript-prototype-linkage-wierdness/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 04:26:46 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=117</guid>
		<description><![CDATA[The way object linkage works in javascript is through &#8220;prototype&#8221;.  Prototype is a dynamic linkage between objects.  If we look for a property of an object and it doesn&#8217;t exist, the next thing it will try and do is step backwards in the prototype linkage and find a match before returning undefined.
Here&#8217;s where [...]]]></description>
			<content:encoded><![CDATA[<p>The way object linkage works in javascript is through &#8220;prototype&#8221;.  Prototype is a dynamic linkage between objects.  If we look for a property of an object and it doesn&#8217;t exist, the next thing it will try and do is step backwards in the prototype linkage and find a match before returning undefined.</p>
<p>Here&#8217;s where it gets tricky.  If your initial object has a property set, and the object it inherits from overwrites that property that is all well and good.  But, what if you decide later to delete that property from your new object?  You would think an attempt to access it would return undefined right? <strong>Wrong</strong>.  You are back at square one looking back up the prototype chain.  Take a look.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> foo = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">foo.<span class="me1">prototype</span>.<span class="me1">setBikeColor</span> = <span class="kw2">function</span><span class="br0">&#40;</span>color<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">bike</span> = color;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">foo.<span class="me1">prototype</span>.<span class="me1">bike</span> = <span class="st0">&quot;red&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> bar = <span class="kw2">new</span> foo<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>bar.<span class="me1">bike</span><span class="br0">&#41;</span>; <span class="co1">//Alerts &#8216;red&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">bar.<span class="me1">setBikeColor</span><span class="br0">&#40;</span><span class="st0">&quot;blue&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw3">alert</span><span class="br0">&#40;</span>bar.<span class="me1">bike</span><span class="br0">&#41;</span>; <span class="co1">//Alerts &#8216;blue&#8217;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">delete</span><span class="br0">&#40;</span>bar.<span class="me1">bike</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alert</span><span class="br0">&#40;</span>bar.<span class="me1">bike</span><span class="br0">&#41;</span>; <span class="co1">//Alerts &#8216;red&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>The linkage is always there.  It is always dynamic.  And you can&#8217;t delete &#8216;bike&#8217; from the objects prototype either because you then run the risk of deleting it from everyone.</p>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/07/javascript-prototype-linkage-wierdness/&amp;t=Javascript+prototype+linkage+%22Wierdness%22&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/07/javascript-prototype-linkage-wierdness/&amp;title=Javascript+prototype+linkage+%22Wierdness%22&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/07/javascript-prototype-linkage-wierdness/&amp;title=Javascript+prototype+linkage+%22Wierdness%22&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/07/javascript-prototype-linkage-wierdness/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Javascript Scoping</title>
		<link>http://www.joshmattvander.com/2009/06/javascript-scoping/</link>
		<comments>http://www.joshmattvander.com/2009/06/javascript-scoping/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 04:04:25 +0000</pubDate>
		<dc:creator>JoshMattVander</dc:creator>
		
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.joshmattvander.com/?p=111</guid>
		<description><![CDATA[I wanted to take a minute and talk a little about Javascripts scope and more importantly go through a couple examples.
In the first example, we will add a closure to our constructor function and then call it.



&#160;


&#160; &#160; &#160; &#160; var scopeTest = function&#40;a&#41; &#123;


&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; function foo&#40;&#41; &#123;


&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to take a minute and talk a little about Javascripts scope and more importantly go through a couple examples.</p>
<p>In the first example, we will add a closure to our constructor function and then call it.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> scopeTest = <span class="kw2">function</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> foo<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; foo<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> test = <span class="kw2">new</span> scopeTest<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>; &nbsp;<span class="co1">//Will alert &quot;1&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>In this example we will create a method <strong>foo()</strong> and a method <strong>bar()</strong> to our scopeTest object. The foo method will simply alert the value &#8220;a&#8221; the bar method will add 1 to var a and alert.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> scopeTest = <span class="kw2">function</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">foo</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">bar</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> a = a + <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> test = <span class="kw2">new</span> scopeTest<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; test.<span class="me1">foo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// will alert &quot;1&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; test.<span class="me1">bar</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// will alert &quot;NaN&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>What happened there is, once we say &#8220;var a&#8221; inside the scope of the method bar.  It ignores the variable &#8220;a&#8221; in the scope of our &#8220;scopeTest&#8221; constructor function.</p>
<p>In the final test for this example, we add a method via &#8220;prototype&#8221;</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> scopeTest = <span class="kw2">function</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">foo</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; scopeTest.<span class="me1">prototype</span>.<span class="me1">bar</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">alert</span><span class="br0">&#40;</span>a<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> test = <span class="kw2">new</span> scopeTest<span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; test.<span class="me1">foo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// Will alert 1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; test.<span class="me1">bar</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// Will have an error because a is undefined</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<div><table> <td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://www.joshmattvander.com/2009/06/javascript-scoping/&amp;t=Javascript+Scoping&amp;s=normal' height='80' width='52' frameborder='0' scrolling='no'></iframe></td> <td><iframe src='http://www.reddit.com/button_content?newwindow=1&amp;url=http://www.joshmattvander.com/2009/06/javascript-scoping/&amp;title=Javascript+Scoping&amp;t=2 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td> <td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://www.joshmattvander.com/2009/06/javascript-scoping/&amp;title=Javascript+Scoping&amp;t=1 ' height='80' width='52' scrolling='no' frameborder='0' ></iframe></td></table></div><!-- This is a HTML comment, it will not display in any page. Feel free to remove this comment if it cause any inconvenient to you.
	Thanks for using digg digg, please visit http://www.mkyong.com/blog/digg-digg-wordpress-plugin for any comments and ideas, 
	
    Author : Yong Mook Kim
    Website : http://www.mkyong.com
	-->]]></content:encoded>
			<wfw:commentRss>http://www.joshmattvander.com/2009/06/javascript-scoping/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

