<?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>American Butifarra &#187; JavaScript</title> <atom:link href="http://claude.betancourt.us/tag/javascript/feed/" rel="self" type="application/rss+xml" /><link>http://claude.betancourt.us</link> <description>Claude Betancourt&#039;s Personal Blog</description> <lastBuildDate>Fri, 16 Dec 2011 02:43:25 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Compress JavaScript and CSS as Part of your Build Process</title><link>http://claude.betancourt.us/compress-javascript-and-css-as-part-of-your-build-process/</link> <comments>http://claude.betancourt.us/compress-javascript-and-css-as-part-of-your-build-process/#comments</comments> <pubDate>Mon, 05 Jul 2010 04:56:20 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[How-To]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Compression]]></category> <category><![CDATA[Concatenation]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[Web Developement]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=736</guid> <description><![CDATA[Web page performance is critical to keeping customers and visitors moving along on your site. Slow responses typically result in frustrated users, unhappy customers and worse, abandoned orders. It is important to reduce the number of requests generated by a web page in order to increase its actual and perceived performance. <a href="http://claude.betancourt.us/compress-javascript-and-css-as-part-of-your-build-process/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Web page performance is critical to keeping customers and visitors moving along on your site. Slow responses typically result in frustrated users, unhappy customers and worse, abandoned orders. It is important to reduce the number of requests generated by a web page in order to increase its actual and perceived performance.</p><p>One critical way is to reduce the number of external files loaded by a page. Another one is to reduce their size through compression. This post aims to take this concept a step further by automating this tedious process using open-source libraries.</p><p><span id="more-736"></span></p><h3>Example</h3><p>This example will accomplish the task by executing the following steps:</p><ol><li>Create a temporary directory, <code>/build</code></li><li>Compress each JS file into <code>{original}-min.js</code> files</li><li>Compress each CSS file into <code>{original}-min.css</code> files</li><li>Concatenate all compressed JS files into <code>/js/complete.js</code></li><li>Concatenate all compressed CSS files into <code>/css/complete.css</code></li></ol><h3>Requirements</h3><ul><li>Make sure <a href="http://ant.apache.org/" alt="Apache Ant" title="Apache Ant">Apache Ant</a> has been installed on your system.</li><li>Check out a copy of the <a href="http://svn.betancourt.us/public/yui-compression-sample/">sample project</a> from my public SVN repository. This project already contains the open-source libraries necessary, <a href="http://yhoo.it/3FXTgK">YUI compressor</a> and <a href="http://bit.ly/avcPrG">YUI compressor Ant task</a>.</li><li>Setup a system variable, <code>COMPRESSOR_HOME</code> that points to the location of the sample project&#8217;s <code>/lib</code> directory.<ul><li>On Windows, right click My Computer and select properties. Then click the &#8220;Environment Variables&#8221; button under the advanced tab. Add a new system variable, <code>COMPRESSOR_HOME</code>, and set its value to your local path, for example: <code>C:\Documents and Settings\username\Desktop\yui-compression-sample\lib</code></li><li>On Mac OSX and Linux, update <code>~/.profile</code> or similar file and add <code>export COMPRESSOR_HOME=~/YourProjectDir/yui-compression-sample/lib</code></li></ul></li></ul><h3>Examine the configuration</h3><p>Take a look at the contents of <code>build.xml</code>. The first portion defines variables and locations of the libraries.</p><pre class="brush: xml; title: ; notranslate">
&lt;!-- tells Ant to refer to your environment vars --&gt;
&lt;property environment=&quot;env&quot; /&gt;

&lt;!-- defines location of libraries --&gt;
&lt;property name=&quot;lib.dir&quot; value=&quot;${env.COMPRESSOR_HOME}&quot; /&gt;

&lt;!-- defines output directory --&gt;
&lt;property name=&quot;build.dir&quot; value=&quot;build&quot; /&gt;

&lt;!-- output files, one for JS one for CSS --&gt;
&lt;property name=&quot;final_js&quot; value=&quot;${basedir}/js/complete.js&quot; /&gt;
&lt;property name=&quot;final_css&quot; value=&quot;${basedir}/css/complete.css&quot; /&gt;

&lt;!-- define nicknames for libraries --&gt;
&lt;property name=&quot;yui-compressor&quot; location=&quot;${lib.dir}/yuicompressor-2.4.2.jar&quot; /&gt;
&lt;property name=&quot;yui-compressor-ant-task&quot; location=&quot;${lib.dir}/yui-compressor-ant-task-0.5.jar&quot; /&gt;

&lt;!-- adds libraries to the classpath --&gt;
&lt;path id=&quot;yui.classpath&quot;&gt;
	&lt;pathelement location=&quot;${yui-compressor}&quot; /&gt;
	&lt;pathelement location=&quot;${yui-compressor-ant-task}&quot; /&gt;
&lt;/path&gt;

&lt;!-- define tasks --&gt;
&lt;taskdef name=&quot;yui-compressor&quot; classname=&quot;net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask&quot;&gt;
	&lt;classpath refid=&quot;yui.classpath&quot; /&gt;
&lt;/taskdef&gt;
</pre><p>The second portion of <code>build.xml</code> defines the Ant targets to be executed. These tell YUI compressor how the source files are to be processed.</p><pre class="brush: xml; title: ; notranslate">
&lt;!-- targets --&gt;
&lt;target name=&quot;concat&quot;&gt;

	&lt;!-- concatenates all compressed JS files into one --&gt;
	&lt;concat destfile=&quot;${final_js}&quot; force=&quot;true&quot; fixlastline=&quot;true&quot;&gt;
		&lt;fileset dir=&quot;${build.dir}&quot; includes=&quot;**/*.js&quot; /&gt;
		&lt;fileset dir=&quot;${build.dir}&quot; includes=&quot;**/widgets/*.js&quot; /&gt;
	&lt;/concat&gt;

	&lt;!-- concatenates all compressed CSS files into one --&gt;
	&lt;concat destfile=&quot;${final_css}&quot; force=&quot;true&quot; fixlastline=&quot;true&quot;&gt;
		&lt;fileset dir=&quot;${build.dir}&quot; includes=&quot;**/*.css&quot; /&gt;
		&lt;fileset dir=&quot;${build.dir}&quot; includes=&quot;**/flexgrid/*.css&quot; /&gt;
	&lt;/concat&gt;

&lt;/target&gt;

&lt;target name=&quot;compress&quot;&gt;

	&lt;!-- compresses each JavaScript and CSS file --&gt;
	&lt;!-- and saved as {original_name}-min.{extension} --&gt;
	&lt;yui-compressor
		warn=&quot;false&quot;
		munge=&quot;true&quot;
		preserveallsemicolons=&quot;false&quot;
		fromdir=&quot;${basedir}&quot;
		todir=&quot;${build.dir}&quot;
	/&gt;

&lt;/target&gt;

&lt;!-- deletes the temporary directory and all its contents --&gt;
&lt;target name=&quot;clean&quot;&gt;
	&lt;delete dir=&quot;${build.dir}&quot;/&gt;
&lt;/target&gt;

&lt;!-- creates the temporary directory --&gt;
&lt;target name=&quot;start&quot;&gt;
	&lt;mkdir dir=&quot;${build.dir}&quot; /&gt;
&lt;/target&gt;

&lt;target name=&quot;main&quot; depends=&quot;start,compress,concat,clean&quot; /&gt;
</pre><h3>What does this do?</h3><p>If you are new to Ant you are probably wondering why the tasks are defined in reverse order of execution. This is just a personal preference and it does not affect execution.</p><p>The order of execution is controlled by the <code>main</code> task. This is the task Ant runs when a target is not passed to it. The attribute <code>depends</code> tells Ant the order in which the tasks must be executed.</p><h3>Give it a try</h3><p>All you have to do to execute the entire operation is open a command prompt (or a terminal window on OS X), change into the project directory where <code>build.xml</code> lives and type <code>ant</code> and hit <code>Enter</code>. You should see some output that looks like this:</p><pre class="brush: plain; highlight: [19,20,32]; light: true; title: ; notranslate">
claude$ ant
Buildfile: build.xml

start:
     [echo] Building JS-CSS-Compression-and-Concat-Sample with Apache Ant version 1.7.1 compiled on April 8 2010 - System Java 1.6
    [mkdir] Created dir: /Users/claude/Documents/www/yui-compression-sample/build

compress:
[yui-compressor] [53%] global-print.css [920] ---&gt; global-print-min.css [488]
[yui-compressor] [80%] global.css [11895] ---&gt; global-min.css [9564]
[yui-compressor] [79%] style.css [1148] ---&gt; style-min.css [910]
[yui-compressor] [64%] googlemaps-yelp-ext.js [6604] ---&gt; googlemaps-yelp-ext-min.js [4270]
[yui-compressor] [70%] split-filepath.js [814] ---&gt; split-filepath-min.js [576]
[yui-compressor] [73%] ContactForm.js [4711] ---&gt; ContactForm-min.js [3461]
[yui-compressor] [57%] InfoTabs.js [1160] ---&gt; InfoTabs-min.js [669]
[yui-compressor] [55%] InfoWindow.js [1228] ---&gt; InfoWindow-min.js [686]
[yui-compressor] [68%] Intraday.js [9559] ---&gt; Intraday-min.js [6536]
[yui-compressor] [68%] MediaCenter.js [5728] ---&gt; MediaCenter-min.js [3906]
[yui-compressor] [JavaScript] Compressed 7 files to 67% (29KB to 19KB, saving 10KB)
[yui-compressor] [CSS] Compressed 3 files to 78% (13KB to 10KB, saving 3KB)
[yui-compressor] Compressed 10 files to 70% (42KB to 30KB, saving 12KB)

concat:
     [echo] Building /Users/claude/Documents/www/yui-compression-sample/js/complete.js
     [echo] Building /Users/claude/Documents/www/yui-compression-sample/css/complete.css

clean:
   [delete] Deleting directory /Users/claude/Documents/www/yui-compression-sample/build

main:

BUILD SUCCESSFUL
Total time: 1 second
</pre><h3>What Now?</h3><p>Change your HTML code to point to the newly created <code>complete.js</code> and <code>complete.css</code> instead of the individual files. Your page will load and render faster.</p><p>Squeeze even more performance out of your site by implementing other best practices. Get a copy of <a href="http://amzn.to/cueRAt">High Performance Web Sites</a> by Steve Souders and read <a href="http://yhoo.it/bjbsh4">Yahoo&#8217;s rules for exceptional performance</a>.</p><p class="note">Watch <a href="http://www.youtube.com/watch?v=BTHvs3V8DBA#t=90s">Steve Souders&#8217; presentation at Google Tech Talks</a>. Audio problems are fixed 5 minutes in. Skip the first 90 seconds to listen to Steve.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/compress-javascript-and-css-as-part-of-your-build-process/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>ExtJS ComboBox Hidden Field Issues</title><link>http://claude.betancourt.us/extjs-combobox-hidden-field-issues/</link> <comments>http://claude.betancourt.us/extjs-combobox-hidden-field-issues/#comments</comments> <pubDate>Tue, 09 Mar 2010 18:57:26 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Ext JS]]></category> <category><![CDATA[Framework]]></category> <category><![CDATA[How-To]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Ext JS 3]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=721</guid> <description><![CDATA[Despite looking like a typical select box, Ext.form.ComboBox does not behave exactly as you would expect. It submits the display text instead of the selected option's value. This post provides a solution to this problem. <a href="http://claude.betancourt.us/extjs-combobox-hidden-field-issues/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p class="alert">This post refers to version 3.x of the Ext-JS framework.</p><p>Despite looking like a typical select box, <a href="http://www.extjs.com/deploy/dev/docs/?class=Ext.form.ComboBox"><strong>Ext.form.ComboBox</strong></a> doesn&#8217;t behave exactly as you would expect since it submits the display text instead of the selected option&#8217;s value. The documentation states:</p><blockquote><p>A ComboBox works in a similar manner to a traditional HTML &lt;select&gt; field. The difference is that to submit the valueField, you must specify a hiddenName to create a hidden input field to hold the value of the valueField. The displayField is shown in the text field which is named according to the name.</p></blockquote><pre class="brush: jscript; highlight: [5,6]; title: ; notranslate">
this.add([
	{
		xtype: 'combo',
		name: 'suffix',
		hiddenName: 'suffixId', // post this name
		hiddenValue: 0, // default value
		fieldLabel: 'Suffix',
		mode: 'local',
		store: this.suffixStore,
		valueField: 'key',
		displayField: 'display',
		triggerAction: 'all',
		forceSelection: true,
		allowBlank: true
	}
]);
</pre><p>Adding a <strong>hiddenName</strong> and a default value in <strong>hiddenValue</strong> does the trick, the default value (0) is set in the hidden field until a user chooses a different value. Unfortunately this breaks when the ComboBox is set to allow blanks and the user tabs over the field. When this happens, the hiddenValue is set to a null string and the user is never prompted to select a value.</p><p>Upon form submission, the hiddenField (<strong>suffixId</strong>) will be set to neither the default nor a valid value.</p><p>One solution is to listen for the <strong>focus</strong> and <strong>blur</strong> events to reset the value of the hidden field when it has been set to a null string.</p><pre class="brush: jscript; highlight: [15,16,17,18,19]; title: ; notranslate">
this.add([
	{
		xtype: 'combo',
		name: 'suffix',
		hiddenName: 'suffixId',
		hiddenValue: 0,
		fieldLabel: 'Suffix',
		mode: 'local',
		store: this.suffixStore,
		valueField: 'key',
		displayField: 'display',
		triggerAction: 'all',
		forceSelection: true,
		allowBlank: true,
		listeners: {
			'focus': this.handleSuffixChange,
			'blur': this.handleSuffixChange,
			scope: this
		}
	}
]);

handleSuffixChange: function(field) {
	if (field.value==='') {
		field.hiddenField.value = '0';
	}
}
</pre><p>Upon form submission you will be guaranteed a valid value, which is especially beneficial if you&#8217;re using the form values to populate a server side bean object.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/extjs-combobox-hidden-field-issues/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Introduction to Ext.Direct</title><link>http://claude.betancourt.us/introduction-to-extdirect/</link> <comments>http://claude.betancourt.us/introduction-to-extdirect/#comments</comments> <pubDate>Wed, 13 May 2009 14:09:52 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Articles]]></category> <category><![CDATA[Ext JS]]></category> <category><![CDATA[Framework]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Platform]]></category> <category><![CDATA[Protocol]]></category> <category><![CDATA[.NET]]></category> <category><![CDATA[ColdFusion]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[Library]]></category> <category><![CDATA[Perl]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Ruby]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=581</guid> <description><![CDATA[Evan Trimboli of the Ext-JS team just published an article describing Ext.Direct, a remoting API that is part of Ext 3.0. <a href="http://claude.betancourt.us/introduction-to-extdirect/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">E</span>van Trimboli of the Ext-JS team just published an article describing Ext.Direct, a remoting API that is part of Ext 3.0. The team has created a <a href="http://extjs.com/products/extjs/direct.php">remoting specification</a> that you can use to implement the server-side stack of your choice.</p><p>Details about server-specific implementations already being maintained <a href="http://extjs.com/forum/showthread.php?t=67992">can be found here</a>.</p><blockquote><p> Ext.Direct is a new package in Ext JS 3.0 that helps alleviate many of these issues by streamlining communication between your client and server. When using Ext.Direct, you can expect to write 30% less code by eliminating common boiler plate code.</p><p>The Ext.direct namespace introduces several new classes for a close integration with the server-side. New classes have also been added to the Ext.data namespace for working with Ext.data.Stores which are backed by data from an Ext.Direct method.</p><p>Ext.Direct uses a provider architecture, where one or more providers are used to transport data to and from the server. There are several providers that exist in the core at the moment, for example a JsonProvider for simple JSON operations and a PollingProvider for repeated requests. One of the most powerful providers is the RemotingProvider.</p></blockquote><p><a href="http://extjs.com/blog/2009/05/13/introducing-ext-direct/">Read the rest here</a>.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/introduction-to-extdirect/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ext-JS Conference 2009, April 14-16 in Orlando, FL</title><link>http://claude.betancourt.us/ext-conference-2009-april-14-16-in-orlando-fl/</link> <comments>http://claude.betancourt.us/ext-conference-2009-april-14-16-in-orlando-fl/#comments</comments> <pubDate>Tue, 03 Feb 2009 05:35:17 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Ext JS]]></category> <category><![CDATA[Conference]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Library]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=309</guid> <description><![CDATA[Ext-JS has announced their 1st Annual Ext Conference and Ext 3.0 release party on April 14 to 16, 2009 in Orlando, Florida! <a href="http://claude.betancourt.us/ext-conference-2009-april-14-16-in-orlando-fl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">E</span>xt-JS has announced their 1st Annual Ext Conference and Ext 3.0 release party on April 14 to 16, 2009 in Orlando, Florida! Join Jack and the Core Development Team for an intense 3-day conference exploring all of the new features packed into Ext 3.0. Discover best practices for building applications and connect with other members of the Ext Community. The conference provides sessions which will be of interest to all parties involved in application development including managers, designers, developers and application architects.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/ext-conference-2009-april-14-16-in-orlando-fl/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>New Book: Learning Ext-JS</title><link>http://claude.betancourt.us/new-book-learning-ext-js/</link> <comments>http://claude.betancourt.us/new-book-learning-ext-js/#comments</comments> <pubDate>Tue, 09 Dec 2008 22:29:19 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Book]]></category> <category><![CDATA[Ext JS]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Amazon]]></category> <category><![CDATA[Web Developement]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=284</guid> <description><![CDATA[Steve “Cutters” Blades’ book on Ext-JS is out. By using a series of straightforward examples backed by screenshots, Learning Ext JS will help you create web applications that look good and perform beyond the expectations of your users. <a href="http://claude.betancourt.us/new-book-learning-ext-js/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">S</span>teve &#8220;Cutters&#8221; Blades&#8217; book on <a href="http://www.amazon.com/gp/product/1847195148?ie=UTF8&#038;tag=codesnippets-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1847195148" title="Learning Ext-JS">Ext-JS is out</a>.<a href="http://www.amazon.com/gp/product/1847195148?ie=UTF8&#038;tag=codesnippets-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1847195148" title="Learning Ext-JS"><img class="alignright frame" border="0" src="/images/blog/assets/book-learning-extjs.jpg?2ce803"/></a><img src="http://www.assoc-amazon.com/e/ir?t=codesnippets-20&#038;l=as2&#038;o=1&#038;a=1847195148" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br /><blockquote>By using a series of straightforward examples backed by screenshots, Learning Ext JS will help you create web applications that look good and perform beyond the expectations of your users. This book is written for Web Application Developers who are familiar with HTML but may have little to no experience with JavaScript application development. If you are starting to build a new web application, or are re-vamping an existing web application, then this book is for you.</p></blockquote><p><a href="http://www.amazon.com/gp/product/1847195148?ie=UTF8&#038;tag=codesnippets-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1847195148" title="Learning Ext-JS"><strong>Get your copy today.</strong></a></p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/new-book-learning-ext-js/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ext-JS JSON Data Reader For ColdFusion</title><link>http://claude.betancourt.us/ext-js-json-data-reader-for-coldfusion/</link> <comments>http://claude.betancourt.us/ext-js-json-data-reader-for-coldfusion/#comments</comments> <pubDate>Fri, 21 Nov 2008 10:29:45 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Ext JS]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[ColdFusion]]></category> <category><![CDATA[Component]]></category> <category><![CDATA[JSON]]></category> <category><![CDATA[Library]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=237</guid> <description><![CDATA[Steve &#8220;Cutter&#8221; Blades has created a custom JSON Data Reader for ColdFusion, CFQueryReader. It allows Ext-JS developers to populate GridPanels using serialized ColdFusion queries in their native format or formatted for grid. CFQueryReader is designed to accommodate either format automatically.]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">S</span><a href="http://blog.cutterscrossing.com/index.cfm/2008/11/20/ColdFusion-Query-Json-Data-Reader"><strong>teve &#8220;Cutter&#8221; Blades</strong></a> has created a custom <a href="http://www.json.org/">JSON</a> Data Reader for ColdFusion, <strong>CFQueryReader</strong>. It allows Ext-JS developers to populate GridPanels using serialized ColdFusion queries in their native format or <a href="http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions_m-r_18.html#292503">formatted for grid</a>. CFQueryReader is designed to accommodate either format automatically.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/ext-js-json-data-reader-for-coldfusion/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ext-JS Extension for Google Earth API</title><link>http://claude.betancourt.us/ext-js-extension-for-google-earth-api/</link> <comments>http://claude.betancourt.us/ext-js-extension-for-google-earth-api/#comments</comments> <pubDate>Sat, 15 Nov 2008 15:41:14 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Ext JS]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Earth]]></category> <category><![CDATA[Extension]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Library]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=229</guid> <description><![CDATA[Bjørn Sandvik, a project manager at the United Nations Association of Norway has created an Ext-JS user extension for Google Earth. The code and examples are here.]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">B</span>jørn Sandvik, a project manager at the United Nations Association of Norway has created an <a href="http://blog.thematicmapping.org/2008/11/new-ext-js-extension-for-google-earth.html"><strong>Ext-JS user extension for Google Earth</strong></a>. The <a href="http://code.google.com/p/ext-js-google-earth-api/"><strong>code and examples are here</strong></a>.</p><p><a href="http://blog.thematicmapping.org/2008/11/new-ext-js-extension-for-google-earth.html"><img class="aligncenter" src="http://2.bp.blogspot.com/_yECf1Q0GlOk/SR7HyJotSVI/AAAAAAAADRY/MWg0ebYAxRA/s400/example.png" /></a></p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/ext-js-extension-for-google-earth-api/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Ext-JS 3.0 Showcases Visual Designer, Updates Roadmap</title><link>http://claude.betancourt.us/ext-js-30-showcases-visual-designer-updates-roadmap/</link> <comments>http://claude.betancourt.us/ext-js-30-showcases-visual-designer-updates-roadmap/#comments</comments> <pubDate>Tue, 11 Nov 2008 19:55:59 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Articles]]></category> <category><![CDATA[Ext JS]]></category> <category><![CDATA[Framework]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Presentation]]></category> <category><![CDATA[Library]]></category> <category><![CDATA[Screencast]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=192</guid> <description><![CDATA[Jack Slocum has posted a screencast of the visual designer tool that will be part of upcoming release of Ext. The roadmap for version 3, due out in the first quarter of 2009, has also been updated. Here is what &#8230; <a href="http://claude.betancourt.us/ext-js-30-showcases-visual-designer-updates-roadmap/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">J</span>ack Slocum has posted a <a href="http://www.screencast.com/users/JackSlocum/folders/Default/media/f7450651-778b-4bbc-9fc4-4e921a7a2705"><strong>screencast</strong></a> of the visual designer tool that will be part of upcoming release of Ext.</p><p><a href="http://www.screencast.com/users/JackSlocum/folders/Default/media/f7450651-778b-4bbc-9fc4-4e921a7a2705"><img class="aligncenter" src="/images/blog/assets/ext-js-designer.jpg?2ce803" title="Ext-JS Designer Preview Screencast" /></a></p><p>The <a href="http://extjs.com/products/extjs/roadmap.php"><strong>roadmap for version 3</strong></a>, due out in the first quarter of 2009, has also been updated. Here is what we can expect (I am really interested in the ones in bold):</p><ul><li>All new lightweight, high-speed core base library</li><li><strong>Flash Charting API</strong></li><li><strong>Ext.Direct &#8211; Remoting and data streaming/comet support</strong></li><li><strong>Integrated client-server data binding/marshaling of updates</strong></li><li>ListView component</li><li>Enhanced Button and Toolbar components</li><li><strong>ARIA/Section 508 accessibility improvements</strong></li><li>CSS updates for reset style scoping and easier custom theming</li><li><strong>Update the Ext event registration model</strong></li><li>Ext.Ajax enhancements</li></ul> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/ext-js-30-showcases-visual-designer-updates-roadmap/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Tutorial: Ext-JS Charting and Mapping with Google Visualizations</title><link>http://claude.betancourt.us/tutorial-ext-charting-and-mapping-with-google-visualizations/</link> <comments>http://claude.betancourt.us/tutorial-ext-charting-and-mapping-with-google-visualizations/#comments</comments> <pubDate>Tue, 14 Oct 2008 02:27:57 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Ext JS]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Data]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Library]]></category> <category><![CDATA[LinkedIn]]></category> <category><![CDATA[Visualization]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=159</guid> <description><![CDATA[Aaron Conran posted an entry about Ext.ux.GVisualizationPanel, a user extension that takes advantage of the similarities between the Ext data store and Google's data table to allow reuse of an Ext data store with Google's Visualization API. <a href="http://claude.betancourt.us/tutorial-ext-charting-and-mapping-with-google-visualizations/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><a href="http://extjs.com/blog/2008/10/13/google-visualization/">Aaron Conran posted an entry</a> about Ext.ux.GVisualizationPanel, a user extension that takes advantage of the similarities between the Ext data store and Google&#8217;s data table to allow reuse of an Ext data store with Google&#8217;s Visualization API.</p><div><a href="http://code.betancourt.us/ext-google-visualization/"><img src="/images/blog/assets/timeline-full.jpg?2ce803" border="0" alt="" /></a></div><p><a href="http://code.betancourt.us/ext-google-visualization/"><strong>Proceed to the tutorial</strong></a>.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/tutorial-ext-charting-and-mapping-with-google-visualizations/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>Build Your First Ext-JS in Under an Hour</title><link>http://claude.betancourt.us/build-your-first-ext-js-in-under-an-hour/</link> <comments>http://claude.betancourt.us/build-your-first-ext-js-in-under-an-hour/#comments</comments> <pubDate>Thu, 09 Oct 2008 19:36:35 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Ext JS]]></category> <category><![CDATA[Framework]]></category> <category><![CDATA[How-To]]></category> <category><![CDATA[Presentation]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Library]]></category> <category><![CDATA[Webinar]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=154</guid> <description><![CDATA[The Visual Ajax User Group is hosting a webinar with Aaron Conran, Sr. Architect Ext-JS on Thursday, October 16th, 2008. Sign up now. <a href="http://claude.betancourt.us/build-your-first-ext-js-in-under-an-hour/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">T</span>he Visual Ajax User Group is hosting a webinar with Aaron Conran, Sr. Architect Ext-JS on Thursday, October 16th, 2008.</p><p><a href="http://visualajax.blogspot.com/2008/10/learn-about-ext-from-master-hands-on.html">Hands-On Ext is a fast-paced session</a> in which we will build an Ext application in less than an hour. This session demonstrates how to get started using Ext JS and how quickly you can put together a simple application from scratch. Learn how to utilize Ext&#8217;s high-level UI widgets like GridPanel, TabPanel and FormPanel instead of re-inventing the wheel.</p><p>In this session you learn how to:</p><ul><li>Create an application from scratch with Ext JS</li><li>Utilize Ext&#8217;s high-level UI widgets, such as GridPanel, TabPanel and FormPanel.</li></ul><p><a href="https://www1.gotomeeting.com/register/976425294"><strong>Sign up now</strong></a>.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/build-your-first-ext-js-in-under-an-hour/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Steve Souders Releases Hammerhead, Firebug Extension</title><link>http://claude.betancourt.us/steve-souders-releases-hammerhead-firebug-extension/</link> <comments>http://claude.betancourt.us/steve-souders-releases-hammerhead-firebug-extension/#comments</comments> <pubDate>Wed, 01 Oct 2008 06:29:01 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Presentation]]></category> <category><![CDATA[Firebug]]></category> <category><![CDATA[Performance]]></category> <category><![CDATA[Testing]]></category><guid isPermaLink="false">http://claude.betancourt.us/?p=139</guid> <description><![CDATA[Improving performance starts with metrics. How long does it take for the page to load? Seems like a simple question to answer, but gathering accurate measurements can be a challenge. Enter Hammerhead, Steve Sounder's latest Firebug extension. <a href="http://claude.betancourt.us/steve-souders-releases-hammerhead-firebug-extension/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">I</span>mproving performance starts with metrics. How long does it take for the page to load? Seems like a simple question to answer, but gathering accurate measurements can be a challenge. In my experience, performance metrics exist at four stages along the development process.</p><p><a href="http://www.stevesouders.com/blog/2008/09/30/hammerhead-moving-performance-testing-upstream/"><strong>Enter Hammerhead</strong></a>.</p><ul><li>real user data – I love real user metrics. JavaScript frameworks like Jiffy measure page load times from real traffic. When your site is used by a large, diverse audience, data from real page views is ground-truth.</li><li>bucket testing – When you’re getting ready to push a new release, if you’re lucky you can do bucket testing to gather performance metrics. You release the new code to a subset of users while maintaining another set of users on the old code (the “control”). If you sample your user population correctly and gather enough data, comparing the before and after timing information gives you a preview of the latency impact of your next release.</li><li>synthetic or simulated testing – In some situations, it’s not possible to gather real user data. You might not have the infrastructure to do bucket testing and real user instrumentation. Your new build isn’t ready for release, but you still want to gauge where you are with regard to performance. Or perhaps you’re measuring your competitors’ performance. In these situations, the typical solution is to do scripted testing on some machine in your computer lab, or perhaps through a service like Keynote or Gomez.</li><li>dev box – The first place performance testing happens (or should happen) is on the developer’s box. As she finishes her code changes, the developer can see if she made things better or worse. What was the impact of that JavaScript rewrite? What happens if I add another stylesheet, or split my images across two domains?</li></ul> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/steve-souders-releases-hammerhead-firebug-extension/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Google Maps Component for Ext-JS</title><link>http://claude.betancourt.us/googlemap-extjs/</link> <comments>http://claude.betancourt.us/googlemap-extjs/#comments</comments> <pubDate>Tue, 01 Jul 2008 14:41:25 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Articles]]></category> <category><![CDATA[Ext JS]]></category> <category><![CDATA[How-To]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Component]]></category> <category><![CDATA[ext.ux.gmappanel]]></category> <category><![CDATA[gmappanel]]></category> <category><![CDATA[GoogleMaps]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Library]]></category> <category><![CDATA[Map]]></category> <category><![CDATA[Sencha]]></category><guid isPermaLink="false">http://claude.betancourt.us/blog/?p=75</guid> <description><![CDATA[Shea Frederick has created a user-defined extension to integrate Google Maps with ExtJS. <a href="http://claude.betancourt.us/googlemap-extjs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Shea Frederick has created a user-defined extension to <a href="http://extjs.com/blog/2008/07/01/integrating-google-maps-api-with-extjs/">integrate Google Maps with ExtJS</a>.</p><p><strong>UPDATE:</strong>I&#8217;ve created a <a href="http://code.betancourt.us/ext-map/">tutorial that uses the latest version of the extension and Ext-JS</a>.</p><pre class="brush: jscript; title: ; notranslate">
Ext.ns('Sample');
Sample.ExtGMap = function() {

	var el = 'ext-map';

	function _init() {

		new Ext.Panel({
			renderTo: el,
			layout: 'fit',
			height: 300,
			hideLabel: true,
			items: [
		        {
		        	xtype: 'gmappanel',
		        	gmapType: 'map',
		        	zoomLevel: 14,
		            setCenter: {
		        		lat: 40.782686,
		        		lng: -73.96524,
			            marker: {
		        			title: 'Central Park'
			            }
			        }
		        }
			]
		});

	}

	return {
		init: _init
	}

}();
Ext.onReady(Sample.ExtGMap.init, Sample.ExtGMap);
</pre><p>Configuration options:</p><blockquote><p>It’s just as easy to create a Google map window that maps addresses and places markers at their locations (which could just as easily be nested in a layout instead).</p><p>A couple of the primary Google maps handlers and settings are setup as configuration options. For instance, ‘addControl’ allows adding of a standard Google map control (zoom, pan, etc) and the ‘zoomLevel’ sets a default zoom level for the map.</p><p>Geocoding can be used by substituting the lat/long configuration options with a ‘geoCodeAddr’ string.</p><p>The ’setCenter’ configuration allows the default center location of the map to be set, along with a marker. More markers can be added to the map using the ‘markers’ array.</p></blockquote> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/googlemap-extjs/feed/</wfw:commentRss> <slash:comments>14</slash:comments> </item> <item><title>Improving Performance by Combining Scripts and CSS</title><link>http://claude.betancourt.us/improving-performance-by-combining-scripts-and-css/</link> <comments>http://claude.betancourt.us/improving-performance-by-combining-scripts-and-css/#comments</comments> <pubDate>Wed, 09 Apr 2008 13:53:45 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[How-To]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[JavaScript]]></category><guid isPermaLink="false">http://claude.betancourt.us/blog/?p=128</guid> <description><![CDATA[According to the Yahoo! performance team, the best way to improve your web site&#8217;s performance is to reduce the number of requests for assets such as scripts, style sheets and images. One way to accomplish this is by combining all &#8230; <a href="http://claude.betancourt.us/improving-performance-by-combining-scripts-and-css/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">A</span>ccording to the <a title="Exceptional Performance" href="http://developer.yahoo.com/performance/"><strong>Yahoo! performance team</strong></a>, the best way to improve your web site&#8217;s performance is to <a title="YSlow Rule #1" href="http://developer.yahoo.com/performance/rules.html#num_http"><strong>reduce the number of requests</strong></a> for assets such as scripts, style sheets and images. One way to accomplish this is by combining all the script files into one and serving only that file in your production environment. The same approach can also be applied to cascading style sheets.</p><p>The guys at <a title="Cozi.com" href="http://www.cozi.com/"><strong>Cozi</strong></a> <a href="http://blogs.cozi.com/tech/2008/04/combining-js-an.html"><strong>have created a server side solution</strong></a> that takes the pain out of combining these files in some sort of intermediary build process. Here is how they go about doing it:</p><blockquote><p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"><span style="font-size: 10pt; font-family: Consolas; color: blue;">&lt;</span><span style="color: #a31515;"><span style="font-size: 10pt; font-family: Consolas;">WebClientCode</span></span><span style="font-size: 10pt; font-family: Consolas; color: blue;">:</span><span style="color: #a31515;"><span style="font-size: 10pt; font-family: Consolas;">CombinerControl</span></span><span style="font-size: 10pt; font-family: Consolas;"> <span style="color: red;">ID</span><span style="color: blue;">=&#8221;CombineScript&#8221;</span> <span style="color: red;">runat</span><span style="color: blue;">=&#8221;server&#8221;&gt;</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"><span style="font-size: 10pt; font-family: Consolas;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span> <span style="color: red;">src</span><span style="color: blue;">=&#8221;script/third-party/jquery.js&#8221;</span> <span style="color: red;">type</span><span style="color: blue;">=&#8221;text/javascript&#8221;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"><span style="font-size: 10pt; font-family: Consolas;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span> <span style="color: red;">src</span><span style="color: blue;">=&#8221;script/third-party/sifr.js&#8221;</span> <span style="color: red;">type</span><span style="color: blue;">=&#8221;text/javascript&#8221;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"><span style="font-size: 10pt; font-family: Consolas;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span> <span style="color: red;">src</span><span style="color: blue;">=&#8221;script/third-party/soundmanager.js&#8221;</span> <span style="color: red;">type</span><span style="color: blue;">=&#8221;text/javascript&#8221;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"><span style="font-size: 10pt; font-family: Consolas;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span> <span style="color: red;">src</span><span style="color: blue;">=&#8221;script/cozi_date.js&#8221;</span> <span style="color: red;">type</span><span style="color: blue;">=&#8221;text/javascript&#8221;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: normal;"><span style="font-size: 10pt; font-family: Consolas; color: blue;">&lt;/</span><span style="color: #a31515;"><span style="font-size: 10pt; font-family: Consolas;">WebClientCode</span></span><span style="font-size: 10pt; font-family: Consolas; color: blue;">:</span><span style="color: #a31515;"><span style="font-size: 10pt; font-family: Consolas;">CombinerControl</span></span><span style="font-size: 10pt; font-family: Consolas; color: blue;">&gt;</span></p><p>The combiner outputs a reference to an Http Handler which will serve the combined file:</p><p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><span style="font-size: 10pt; line-height: 115%; font-family: Consolas; color: blue;">&lt;</span><span style="color: #a31515;"><span style="font-size: 10pt; line-height: 115%; font-family: Consolas;">script</span></span><span style="font-size: 10pt; line-height: 115%; font-family: Consolas;"> <span style="color: red;">src=<span style="font-size: 10pt; font-family: Consolas; color: blue;">&#8220;../Combiner/Combiner.ashx?ext=js ?<br /> &amp;ver=59169b00 ?<br /> &amp;type=text%2fjavascript ?<br /> &amp;files=!script&#8217;third-party*jquery*sifr*soundmanager*!script*cozi_date*&#8221; ?<br /> </span></span><span style="color: red;">type</span><span style="color: blue;">=&#8221;text/javascript&#8221;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></span></p></blockquote><p>Although they do not provide the source code for the ASP.NET control, they do point to an old article on Vitamin, <a href="http://www.thinkvitamin.com/features/webapps/serving-javascript-fast"><strong>Serving JavaScript Fast</strong></a>, that served as their inspiration.</p><p>Personally I prefer combining the files before they get pushed to production in a build process, as doing it while the client may introduce unexpected delays depending on the traffic load a any given time.</p><p>What do you do to improve performance on your web sites?</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/improving-performance-by-combining-scripts-and-css/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>To Love One&#8217;s Craft: Fun with grep and RegEx&#8230;</title><link>http://claude.betancourt.us/to-love-ones-craft-fun-with-grep-and-regex/</link> <comments>http://claude.betancourt.us/to-love-ones-craft-fun-with-grep-and-regex/#comments</comments> <pubDate>Fri, 28 Mar 2008 00:35:22 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[How-To]]></category> <category><![CDATA[Ext]]></category> <category><![CDATA[JavaScript]]></category><guid isPermaLink="false">http://claude.betancourt.us/blog/2008/03/27/to-love-ones-craft-fun-with-grep-and-regex/</guid> <description><![CDATA[I just read an interesting post by Dave Nelson (spugbrap) in which he details all the fun he had writing a script to search through Ext JS source code and open it with Textpad. So, I checked the TextPad help &#8230; <a href="http://claude.betancourt.us/to-love-ones-craft-fun-with-grep-and-regex/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">I</span> just read an interesting post by Dave Nelson (spugbrap) in which he details all the fun he had writing a script to search through Ext JS source code and open it with Textpad.</p><blockquote><p>So, I checked the TextPad help to see if I could pass in the name of a file containing full file paths for TextPad to open.</p><p>You just need to put an at sign (@) before the filename, and TextPad will look at that file to find a list of files to open. So, I decided to create a temporary file, output the filenames found and converted by my set of commands (above) into that temporary file, and then run TextPad, passing the temporary filename preceded by an @ sign.</p><p><code>textpad $(for g in 'for f in \'grep -Rli "new Ext.Panel" *\'; do (grep -Hn -m 1 "new Ext.Panel" $f | sed -e 's/\(^[^:]\+\):\([0-9]\+\):.*$/\1(\2/g'); done'; do echo 'cygpath -w -a ${g/\(*/}'\(${g/*\(/},'grep -m 1 "new Ext.Panel" ${g/(*/} | sed -e 's/\t/ /g' -e 's/new Ext.Panel.*$//g' | wc -c'\); done) &#038;</code></p><p>I’m sure this could be done more efficiently, but this was a fun challenge to take on, and I managed to find a way to do what I wanted to do.</p></blockquote><p><a href="http://www.spugbrap.com/blog/2008/03/recursively-grep-for-a-substring-open-all-results-in-textpad-with-cursor-positioned-appropriately/">Read on&#8230;</a></p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/to-love-ones-craft-fun-with-grep-and-regex/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Douglas Crockford: &#8220;The State of Ajax&#8221; Talk</title><link>http://claude.betancourt.us/yahoo-user-interface-blog/</link> <comments>http://claude.betancourt.us/yahoo-user-interface-blog/#comments</comments> <pubDate>Mon, 05 Nov 2007 21:06:18 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[Presentation]]></category> <category><![CDATA[Ajax]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Video]]></category><guid isPermaLink="false">http://claude.betancourt.us/blog/?p=102</guid> <description><![CDATA[Watch this video of Douglas Crockford&#8217;s &#8220;The State of Ajax&#8221; talk on Yahoo Developer Network theater.]]></description> <content:encoded><![CDATA[<p><span class="drop_cap">W</span>atch this video of <a href="http://yuiblog.com/blog/2007/11/06/video-crockford/">Douglas Crockford&#8217;s &#8220;The State of Ajax&#8221; talk</a> on Yahoo Developer Network theater.</p> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/yahoo-user-interface-blog/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>So What&#8217;s Ajax All About?</title><link>http://claude.betancourt.us/so-whats-ajax-all-about/</link> <comments>http://claude.betancourt.us/so-whats-ajax-all-about/#comments</comments> <pubDate>Mon, 12 Dec 2005 20:45:00 +0000</pubDate> <dc:creator>Claude</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Ajax]]></category><guid isPermaLink="false">http://claude.betancourt.us/blog/?p=32</guid> <description><![CDATA[Here is a list of resources about Ajax compiled in the last few months: Introduction to Ajax: Understanding Ajax, a productive approach to building Web sites, and how it works &#8211; IBM.com Adaptive Path Article: Ajax: A New Approach to &#8230; <a href="http://claude.betancourt.us/so-whats-ajax-all-about/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Here is a list of resources about Ajax compiled in the last few months:</p><ul><li><a href="http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro1.html">Introduction to Ajax:</a> Understanding Ajax, a productive approach to building Web sites, and how it works &#8211; IBM.com</li><li>Adaptive Path Article: <a href="http://www.adaptivepath.com/publications/essays/archives/000385.php">Ajax: A New Approach to Web Applications</a></li><li><a href="http://prototype.conio.net/" title="Prototype" target="_blank">Prototype Library</a></li><li><a href="http://www.openrico.org/">Rico &#8211; JavaScript for Rich Internet Applications</a></li><li><a href="http://www.getahead.ltd.uk/dwr/">DWR &#8211; Direct Web Remoting</a></li><li><a href="http://www.indiankey.com/cfajax/">CFAjax &#8211; An implementation of DWR for ColdFusion MX</a></li><li><a href="http://en.wikipedia.org/wiki/AJAX">Wiki</a></li><li>Developer.com Article: <a href="http://www.developer.com/xml/article.php/3554271">Measuring the Benefits of AJAX</a></li><li><a href="http://www.ajaxinfo.com/">AjaxInfo.com</a> &#8211; Resource for Developers</li><li><a href="http://www.modernmethod.com/sajax/index.phtml">Sajax</a> &#8211; Simple Ajax Toolkit, very early adoption</li><li>Book: &quot;Ajax in Action&quot; &#8211; <a href="http://www.manning.com/books/crane/about">Manning Publications</a></li><li>Business Week Article: <a href="http://www.businessweek.com/print/magazine/content/05_39/b3952414.htm?chan=gl" target="_blank">Ajax: How To Weave A Faster Web</a></li><li><a href="http://www.ajaxian.com/" title="Ajaxian" target="_blank">Ajaxian</a></li><li><a href="http://icant.co.uk/articles/from-dhtml-to-dom/" title="From DHTML to DOM Scripting" target="_blank">From DHTMLto DOM Scripting</a> &#8211; Chris Heilmann</li></ul> ]]></content:encoded> <wfw:commentRss>http://claude.betancourt.us/so-whats-ajax-all-about/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: claude.betancourt.us @ 2012-02-07 15:08:23 by W3 Total Cache -->
