<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>le blog &#187; webdev</title>
	<atom:link href="http://www.normyee.net/blog/category/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.normyee.net/blog</link>
	<description></description>
	<lastBuildDate>Wed, 09 Dec 2009 23:23:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Debugging JavaScript in Adobe AIR apps</title>
		<link>http://www.normyee.net/blog/2009/03/16/debugging-javascript-in-adobe-air-apps/</link>
		<comments>http://www.normyee.net/blog/2009/03/16/debugging-javascript-in-adobe-air-apps/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 01:05:33 +0000</pubDate>
		<dc:creator>norm</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.normyee.net/blog/?p=92</guid>
		<description><![CDATA[Several months back I switched from using Notepad++ to Eclipse-based Aptana Studio to develop an Adobe AIR desktop client for work &#38; have been pretty happy with Aptana other than for the huge amount of memory it gobbles up. Late last week the Adobe AIR Development Plug-In for Aptana came out of beta &#38; is]]></description>
			<content:encoded><![CDATA[<p>Several months back I switched from using <a href="http://notepad-plus.sourceforge.net/" target="_blank">Notepad++</a> to Eclipse-based <a href="http://www.aptana.com/studio" target="_blank">Aptana Studio</a> to develop an Adobe AIR desktop client for work &amp; have been pretty happy with Aptana other than for the huge amount of memory it gobbles up. Late last week the <a href="http://www.aptana.com/air" target="_blank">Adobe AIR Development Plug-In for Aptana</a> came out of beta &amp; is great news for anyone developing HTML/JavaScript-based AIR apps (as opposed to Flash/Flex-based).</p>
<p>One of the drawbacks in developing HTML/JavaScript-based Adobe AIR applications is the lack of debugging tools. It doesn&#8217;t help that AIR&#8217;s error exception will often output an &#8220;undefined at undefined&#8221; error message in the system console when a JS error occurs, without any stack trace, leaving you to guess where it actually occurred. This is fine for a small application, but when you have tens of thousands of lines of JavaScript code you&#8217;ll often be left banging your head on the desk trying to trace down the error in the code.</p>
<p>This <a href="http://tv.aptana.com/videos/debug-javascript-in-adobe-air-apps" target="_blank">screencast</a> from Aptana better illustrates the new features. Be sure to check it out if you&#8217;re using Aptana Studio and/or were looking to give it a try!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.normyee.net/blog/2009/03/16/debugging-javascript-in-adobe-air-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery tips, migrating from jQuery&#8217;s tablesorter to Ext JS&#8217; GridPanel</title>
		<link>http://www.normyee.net/blog/2008/04/02/jquery-tips-migrating-from-jquerys-tablesorter-to-ext-js-gridpanel/</link>
		<comments>http://www.normyee.net/blog/2008/04/02/jquery-tips-migrating-from-jquerys-tablesorter-to-ext-js-gridpanel/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 04:35:51 +0000</pubDate>
		<dc:creator>norm</dc:creator>
				<category><![CDATA[Ext JS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.normyee.net/blog/2008/04/02/jquery-tips-migrating-from-jquerys-tablesorter-to-ext-js-gridpanel/</guid>
		<description><![CDATA[I ran across this post which has some good jQuery tips. Speaking of JavaScript frameworks, I&#8217;ve been spending the last couple weeks ramping up on Ext JS since it comes with a very slick grid component (actually all of the components it comes with are very, very slick). I&#8217;ve been using the jQuery tablesorter plugin]]></description>
			<content:encoded><![CDATA[<p>I ran across <a href="http://monc.se/kitchen/150/eight-tips-that-makes-you-a-better-jquery-coder" target="_blank">this post</a> which has some good jQuery tips.</p>
<p>Speaking of JavaScript frameworks, I&#8217;ve been spending the last couple weeks ramping up on <a href="http://extjs.com/" target="_blank">Ext JS</a> since it comes with a very slick grid component (actually all of the components it comes with are very, very slick). I&#8217;ve been using the jQuery <a href="http://tablesorter.com/docs/" target="_blank">tablesorter plugin</a> for a grid layout used in one of my projects, but it&#8217;s missing a couple of features I need such as grouping &amp; resizable columns, which the Ext JS grid component has.</p>
<p>Migrating to the Ext JS grid has been interesting since I&#8217;ve had a chance to see the pros and cons of each framework and the different approaches taken to build a grid. The jQuery tablesorter plugin operates on an existing HTML table (or one you create in JavaScript and append to the DOM, which is my case) and converts it to a sortable grid, whereas the Ext JS grid uses a datasource such as a JavaScript array, JSON or XML file, etc. and uses that to build the grid.</p>
<p>Ext JS is quite verbose unlike jQuery (<a href="http://ejohn.org/blog/classy-query/" target="_blank">unless you want the verbosity</a> &#8212; note: if it&#8217;s not obvious, that is a April Fool&#8217;s joke <img src='http://www.normyee.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), but I do like how Ext JS is a complete framework with a lot of included widgets that all work well together, no doubt because they all are part of the distribution.</p>
<p>jQuery on the other hand is very compact and the syntax is similarly compact (which I love). The core distribution is kept as tiny as possible, and additional functionality is added via <a href="http://plugins.jquery.com/" target="_blank">plugins</a> such as tablesorter.</p>
<p>The existing implementation of my grid uses jQuery&#8217;s <a href="http://tablesorter.com/docs/" target="_blank">tablesorter</a>, <a href="http://plugins.jquery.com/project/ContextMenu" target="_blank">contextmenu</a>, <a href="http://plugins.jquery.com/project/blockUI" target="_blank">blockui</a>, <a href="http://plugins.jquery.com/project/cluetip" target="_blank">cluetip</a>, and <a href="http://plugins.jquery.com/project/metadata" target="_blank">metadata</a> plugins, whereas to achieve the same functionality in Ext JS and to add new features such as grouping &amp; resizable columns, I am using the following Ext JS objects: <a href="http://extjs.com/deploy/dev/docs/?class=Ext.grid.GridPanel" target="_blank">Ext.grid.GridPanel</a>, <a href="http://extjs.com/deploy/dev/docs/?class=Ext.grid.GroupingView" target="_blank">Ext.grid.GroupingView</a>,  <a href="http://extjs.com/deploy/dev/docs/?class=Ext.data.GroupingStore" target="_blank">Ext.data.GroupingStore</a>, <a href="http://extjs.com/deploy/dev/docs/?class=Ext.data.JsonReader" target="_blank">Ext.data.JsonReader</a>, <a href="http://extjs.com/deploy/dev/docs/?class=Ext.QuickTip">Ext.QuickTip</a>, <a href="http://extjs.com/deploy/dev/docs/?class=Ext.menu.Menu" target="_blank">Ext.menu.Menu</a>, <a href="http://extjs.com/deploy/dev/docs/?class=Ext.MessageBox" target="_blank">Ext.MessageBox</a>, <a href="http://extjs.com/deploy/dev/docs/?class=Ext.Viewport" target="_blank">Ext.Viewport</a>.</p>
<p>It&#8217;s not an apples to apples comparison since some of the Ext JS objects I listed above are used to load the JSON data into something the grid can use, whereas the JSON data was a JS object literal previously and I manually iterated over it to create my table which tablesorter then coverted into a grid. Others like grouping (via Ext.grid.GroupingView) is a new feature that I wanted to implement &amp; wasn&#8217;t available in tablesorter or any other jQuery plugin that I could find at the time. If I was to break it down to replicating my grid&#8217;s functionality in jQuery over to Ext JS, it&#8217;d be the following objects: Ext.grid.GridPanel, Ext.QuickTip, Ext.menu.Menu, Ext.Messagebox.</p>
<p>Each framwork has its pros and cons, but I am glad though that they both work well together (both were designed with this in mind). That&#8217;s a good thing, as I am using both: I&#8217;ve migrated the grid to use Ext JS&#8217; GridPanel, but am still using jQuery to do a couple manipulations to the grid. I can have my cake and eat it, too (though I will see if I can migrate all of the grid functionality over to Ext JS to keep things simpler)!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.normyee.net/blog/2008/04/02/jquery-tips-migrating-from-jquerys-tablesorter-to-ext-js-gridpanel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Preventing xulrunner from caching browser files</title>
		<link>http://www.normyee.net/blog/2008/02/29/preventing-xulrunner-from-caching-browser-files/</link>
		<comments>http://www.normyee.net/blog/2008/02/29/preventing-xulrunner-from-caching-browser-files/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 18:43:48 +0000</pubDate>
		<dc:creator>norm</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[xulrunner]]></category>

		<guid isPermaLink="false">http://www.normyee.net/blog/2008/02/29/preventing-xulrunner-from-caching-browser-files/</guid>
		<description><![CDATA[Leap day post! The xulrunner app I developed hits a web server running on localhost to serve up its main interface, via XUL&#8217;s &#60;browser&#62; tag (similar to HTML&#8217;s IFRAME tag). There are instances where the pages &#38; their dependencies should not be cached. Adding the various HTML &#60;meta&#62; tags (expires, pragma, cache-control) prevents the HTML]]></description>
			<content:encoded><![CDATA[<p>Leap day post!</p>
<p>The xulrunner app I developed hits a web server running on localhost to serve up its main interface, via XUL&#8217;s <a href="http://developer.mozilla.org/en/docs/XUL:browser" target="_blank">&lt;browser&gt;</a> tag (similar to HTML&#8217;s IFRAME tag). There are instances where the pages &amp; their dependencies should not be cached. Adding the various HTML &lt;meta&gt; tags (expires, pragma, cache-control) prevents the HTML pages from caching, but we really wanted to prevent .js files from being  cached since we change the content dynamically in some of them so we didn&#8217;t want to return stale data. If we were running <a href="http://httpd.apache.org" target="_blank">Apache</a>, we could just set some HTTP expires headers via <a href="http://httpd.apache.org/docs/2.2/mod/mod_expires.html" target="_blank">mod_expires</a> but since we needed to keep the app installer as small as possible, we were using a much more lightweight web server.</p>
<p>I first tried the following <a href="http://developer.mozilla.org/en/docs/Debugging_a_XULRunner_Application#Prefs" target="_blank">xul prefs</a>:</p>
<blockquote><p>pref(&#8220;nglayout.debug.disable_xul_cache&#8221;, true);<br />
pref(&#8220;nglayout.debug.disable_xul_fastload&#8221;, true);</p></blockquote>
<p>which didn&#8217;t work. I was seeing .js files being saved to xulrunner&#8217;s cache (on WinXP, it was in the C:\Documents and Settings\[User name]\Local Settings\Application Data\[App Vendor]\[App Name]\Profiles\* folder)</p>
<p>Then it dawned on me that since we were using the XUL &lt;browser&gt; tag, it essentially loads up a web browser to display the content. Since that meant it was essentially Firefox 2 loading up, I looked in Firefox&#8217;s about:config for caching-related preferences and voila:</p>
<blockquote><p>pref(&#8220;browser.cache.disk.enable&#8221;, false);</p></blockquote>
<p>I added that to xulrunner&#8217;s prefs.js &amp; no more caching</p>
]]></content:encoded>
			<wfw:commentRss>http://www.normyee.net/blog/2008/02/29/preventing-xulrunner-from-caching-browser-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>upgrading from apache 2.0.x to 2.2.x</title>
		<link>http://www.normyee.net/blog/2008/02/26/upgrading-from-apache-20x-to-22x/</link>
		<comments>http://www.normyee.net/blog/2008/02/26/upgrading-from-apache-20x-to-22x/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 23:26:57 +0000</pubDate>
		<dc:creator>norm</dc:creator>
				<category><![CDATA[webdev]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://www.normyee.net/blog/2008/02/26/upgrading-from-apache-2x-to-22/</guid>
		<description><![CDATA[Upgraded apache from 2.0.59 to 2.2.8 yesterday and my htaccess rules broke. I searched around &#38; discovered that one of the things that changed with 2.2.x was a renaming of the various apache auth modules. Had to put in the following to my httpd.conf to get things to work again LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authz_host_module]]></description>
			<content:encoded><![CDATA[<p>Upgraded apache from 2.0.59 to 2.2.8 yesterday and my htaccess rules broke. I searched around &amp; discovered that one of the things that changed with 2.2.x was a <a href="http://httpd.apache.org/docs/2.2/new_features_2_2.html#module" target="_blank">renaming of the various apache auth modules</a>. Had to put in the following to my httpd.conf to get things to work again</p>
<blockquote><p><code>LoadModule auth_basic_module modules/mod_auth_basic.so<br />
LoadModule authz_host_module modules/mod_authz_host.so<br />
LoadModule authn_file_module modules/mod_authn_file.so<br />
LoadModule authz_user_module modules/mod_authz_user.so</code></p></blockquote>
<p>Other than that, everything else was easy breezy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.normyee.net/blog/2008/02/26/upgrading-from-apache-20x-to-22x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
