<?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>Ajaxian &#187; Aptana</title>
	<atom:link href="http://ajaxian.com/by/topic/aptana/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 02 Feb 2012 22:23:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
    	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>w00t! Feeling Chatty</title>
		<link>http://ajaxian.com/archives/w00t-feeling-chatty</link>
		<comments>http://ajaxian.com/archives/w00t-feeling-chatty#comments</comments>
		<pubDate>Fri, 30 Jan 2009 10:16:56 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5834</guid>
		<description><![CDATA[Live Ajax chat is one of those Comet 101 kind of examples (as RSS readers were to Ajax back in the day!). We saw a couple of items from this meme recently. First, jChat, a showcase chat application using Jaxer: Jaxer ships with a number of basic samples, but I&#8217;ve seen quite a few people <a href="http://ajaxian.com/archives/w00t-feeling-chatty">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/jchat.png" alt="" title="jchat" width="500" height="476" class="alignnone size-full wp-image-5835" /></p>
<p>Live Ajax chat is one of those Comet 101 kind of examples (as RSS readers were to Ajax back in the day!).</p>
<p>We saw a couple of items from this meme recently.</p>
<p>First, <a href="http://opensourcepenguin.net/index.php?option=com_content&#038;task=view&#038;id=129">jChat</a>, a <a href="http://jchat.opensourcepenguin.net/">showcase chat application</a> using Jaxer:</p>
<blockquote><p>
Jaxer ships with a number of basic samples, but I&#8217;ve seen quite a few people online in search of more complex examples and specifically ones that make use of the new ActiveRecord.js library.  The extended example I developed is called jChat.  jChat is fully functional chatroom application that demonstrates integration of the following web related technologies; HTML, CSS, JavaScript, MySQL, YUI, Jaxer, and Activerecord.js.</p>
<p>jChat&#8217;s DOM access/manipulation, event handling, and animation code makes heavy use of YUI.  The YUI Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX.
</p></blockquote>
<p>Then we get to <a href="http://redtagcrazy.com/">Red tag crazy</a> (or w00t! for girls) who told us about their live chat implementation in the wild:</p>
<blockquote><p>
We wanted this to be really fun for our shoppers, and chicks like to chat. Then came the idea, “what if we have a chat system right on our home page?”. The pre-requisites were: it has to be super easy to use, not require any sign-up, no plugins, and it has to support thousands of users at once. Solution = jQuery Ajax.</p>
<p>Our server crashed on day 2 from the memory used by PHP to refresh hundreds of ajax clients at once. Our solution was to cache a single JavaScript file that is loaded via ajax by each client every 15 seconds. This file contains all the necessary data to update a page with a bunch of chat bubbles and slide in new comments as if it were some sort of crazy java plugin. PHP runs via cron-job to update this cached JS/jQuery powered file every 2 seconds on our server, which turns out to be a lot less memory intensive than at every ajax request.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/w00t-feeling-chatty/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>JsMemcached.js: JavaScript Jaxer Client</title>
		<link>http://ajaxian.com/archives/jsmemcachedjs-javascript-jaxer-client</link>
		<comments>http://ajaxian.com/archives/jsmemcachedjs-javascript-jaxer-client#comments</comments>
		<pubDate>Thu, 22 Jan 2009 09:08:44 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jaxer]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5757</guid>
		<description><![CDATA[Rakesh Pai has created a Jaxer JavaScript client for Memcached. Once you load the file you simple configure the main object (change the file rather than calling .config(...) which would make more sense): PLAIN TEXT JAVASCRIPT: &#160; JsMemcached.set&#40;"keyName", "Value here, as long as you want"&#41;; &#160; JsMemcached.get&#40;"keyName"&#41;; &#160; JsMemcached.close&#40;&#41;; // no open() as it is <a href="http://ajaxian.com/archives/jsmemcachedjs-javascript-jaxer-client">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Rakesh Pai has <a href="http://piecesofrakesh.blogspot.com/2009/01/jsmemcachedjs-jaxer-client-for.html">created a Jaxer JavaScript client for Memcached</a>.</p>
<p>Once you load the file you simple configure the main object (change the file rather than calling .config(...) which would make more sense):</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-2');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-2">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">JsMemcached.<span style="color: #006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"keyName"</span>, <span style="color: #3366CC;">"Value here, as long as you want"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">JsMemcached.<span style="color: #006600;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"keyName"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">JsMemcached.<span style="color: #006600;">close</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// no open() as it is lazily done on your behalf</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/jsmemcachedjs-javascript-jaxer-client/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ActiveRecord.js Released: ORM for Multiple JavaScript Environments</title>
		<link>http://ajaxian.com/archives/activerecordjs-released-orm-for-multiple-javascript-environments</link>
		<comments>http://ajaxian.com/archives/activerecordjs-released-orm-for-multiple-javascript-environments#comments</comments>
		<pubDate>Wed, 14 Jan 2009 11:30:27 +0000</pubDate>
		<dc:creator>Brad Neuberg</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Gears]]></category>
		<category><![CDATA[Storage]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5642</guid>
		<description><![CDATA[Aptana has put out their first beta release of ActiveRecord.js. The details according to Ryan Johnson, a developer at Aptana: ActiveRecord.js is an open source object relational mapper (ORM) that supports multiple JavaScript environments, including: Google Gears (client-side persistence) In Memory (if no SQL server is available on the client) Adobe AIR (client-side persistence) SQLite <a href="http://ajaxian.com/archives/activerecordjs-released-orm-for-multiple-javascript-environments">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.aptana.com/">Aptana</a> has <a href="http://www.aptana.com/blog/rjohnson/activerecord_js_released_as_beta">put out their first beta release of ActiveRecord.js</a>. The details according to Ryan Johnson, a developer at Aptana:</p>
<blockquote><p>ActiveRecord.js is an open source object relational mapper (ORM) that supports multiple JavaScript environments, including:</p>
<ul>
<li>Google Gears (client-side persistence)</li>
<li>In Memory (if no SQL server is available on the client)</li>
<li>Adobe AIR (client-side persistence)</li>
<li>SQLite and MySQL (via Aptana Jaxer, the open source Ajax server)</li>
<li>additional environments (like HTML5) expected to come through working with the community on the project</li>
</ul>
<p>ActiveRecord.js abstracts away underlying SQL commands so that JavaScript developers can have a unified API for storing, finding, selecting and retrieving objects and their data using the <a href="http://en.wikipedia.org/wiki/ActiveRecord">ActiveRecord pattern</a> popularized by the Ruby on Rails community.</p></blockquote>
<p>Here is some example code using the ActiveRecord.js framework; note that they've made some interesting changes away from how Ruby on Rail's does the ActiveRecord pattern:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-4');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-4">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> User = ActiveRecord.<span style="color: #006600;">define</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'users'</span>,<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">username: <span style="color: #3366CC;">''</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">email: <span style="color: #3366CC;">''</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">User.<span style="color: #006600;">hasMany</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'articles'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> ryan = User.<span style="color: #006600;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">username: <span style="color: #3366CC;">'ryan'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">email: <span style="color: #3366CC;">'rjohnson@aptana.com'</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> Article = ActiveRecord.<span style="color: #006600;">define</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'articles'</span>,<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">name</span>: <span style="color: #3366CC;">''</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">body: <span style="color: #3366CC;">''</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">user_id: <span style="color:#800000;">0</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Article.<span style="color: #006600;">belongsTo</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'user'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> a = Article.<span style="color: #006600;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">name</span>: <span style="color: #3366CC;">'Announcing ActiveRecord.js'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">user_id: ryan.<span style="color: #006600;">id</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">a.<span style="color: #006600;">set</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'name'</span>,<span style="color: #3366CC;">'Announcing ActiveRecord.js!!!'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">a.<span style="color: #006600;">save</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">a.<span style="color: #006600;">getUser</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == ryan;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">ryan.<span style="color: #006600;">getArticleList</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> == a; </div>
</li>
</ol>
</div>
</div>
</div>
<p><a href="http://www.aptana.com/blog/rjohnson/activerecord_js_released_as_beta">See the Aptana blog post</a> for more details.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/activerecordjs-released-orm-for-multiple-javascript-environments/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Nokia Web Runtime; Aptana plugin available</title>
		<link>http://ajaxian.com/archives/nokia-web-runtime-aptana-plugin-available</link>
		<comments>http://ajaxian.com/archives/nokia-web-runtime-aptana-plugin-available#comments</comments>
		<pubDate>Tue, 13 Jan 2009 11:28:28 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5627</guid>
		<description><![CDATA[The mobile Web is getting increasingly interesting. Nokia has put another hat in the ring with their new Nokia Web Runtime that embeds WebKit into S60 phones: Widgets — you're familiar with them from the desktop. Small, focused web applications that are easy to install and use. Perfect for the small screen. Nokia has extended <a href="http://ajaxian.com/archives/nokia-web-runtime-aptana-plugin-available">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.aptana.com/images/screenshots/nokiascreen_preview.gif" /></p>
<p>The mobile Web is getting increasingly interesting. Nokia has put another hat in the ring with their new <a href="http://www.forum.nokia.com/Resources_and_Information/Explore/Web_Technologies/Web_Runtime/">Nokia Web Runtime</a> that embeds WebKit into S60 phones:</p>
<blockquote><p>
Widgets — you're familiar with them from the desktop. Small, focused web applications that are easy to install and use. Perfect for the small screen. Nokia has extended the S60 browser engine to behave as a runtime platform in its own right.</p>
<p>Web Runtime (WRT) is available in devices based on S60 3rd Edition, Feature Pack 2 and later. It's also available as a software update for selected S60 3rd Edition, Feature Pack 1 devices. WRT is a simple mobile web technology that can really work for you.
</p></blockquote>
<p>Kevin Hakman <a href="http://www.aptana.com/blog/khakman/nokia_wrt_plugin_beta">announced an Aptana plugin for this work</a>:</p>
<blockquote><p>
Aptana is expanding its support for mobile web applications with today’s beta release of the Nokia WRT (Web Runtime) plug-in for Aptana Studio.  The Aptana iPhone Web development plug-in has been one of the most popular for Aptana Studio – and now there’s support for Nokia phones too.  What’s cool (other than all the great development tools in Aptana Studio now available) is that Nokia has embedded WebKit for NATIVE phone apps.  That’s right --  You use your Ajax, JavaScript, HTML and CSS skills to create NATIVE apps – and in so doing get better and more optimized performance along with more capabilities that come from running natively.</p>
<p>The Nokia WRT is based on WebKit.  So there's lots of sound, open web technology there as a foundation upon which to build.  Despite the "duh factor" of this, it's kind of revolutionary since mobile devices historically have required specialized runtimes, libraries and tools resulting in a highly fractious eco-system for mobile app development.  WebKit's adoption by many leading mobile device manufacturers, including Apple for its iPhone, lays a great foundation at last for a mobile standard: JavaScript, HTML, and CSS -- Duh!
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/nokia-web-runtime-aptana-plugin-available/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Ajax side of AIR</title>
		<link>http://ajaxian.com/archives/the-ajax-side-of-air</link>
		<comments>http://ajaxian.com/archives/the-ajax-side-of-air#comments</comments>
		<pubDate>Wed, 19 Nov 2008 11:02:41 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5129</guid>
		<description><![CDATA[AIR 1.5 has been released at MAX this week. For the folks that like to write AIR apps that at least have some JavaScript, you will be happy to see that WebKit has been updated: The version of WebKit included in AIR has been updated to a newer version. The updated version includes Squirrelfish, a <a href="http://ajaxian.com/archives/the-ajax-side-of-air">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.adobe.com/air/2008/11/introducing_adobe_air_15.html">AIR 1.5 has been released</a> at MAX this week.</p>
<p>For the folks that like to write AIR apps that at least have some JavaScript, you will be happy to see that WebKit has been updated:</p>
<blockquote><p>
The version of WebKit included in AIR has been updated to a newer version. The updated version includes Squirrelfish, a new bytecode interpreter that improves the execution speed of JavaScript for common actions. Our internal tests show that HTML-based AIR applications run as much as 35% faster for many types of operations. We have also added support for interactive debuggin fo Ajax-based AIR applications.
</p></blockquote>
<p>There is also a nice <a href="http://www.adobe.com/devnet/air/ajax/samples.html#blackbooksafe">sample app that uses jQuery called BlackbookSafe</a>.</p>
<p><img src="http://www.aptana.com/images/screencast/air_debug.jpg" style="float: right; padding: 8px;" /></p>
<p>Aptana is also helping you out with their <a href="http://www.aptana.com/blog/pcolton/debug_javascript_in_adobe_air_apps">new Studio plugin for AIR debugging</a>:</p>
<blockquote><p>
Today's release of the Adobe AIR Development Plug-in for Aptana Studio (beta) features, you guessed it — JavaScript debugging for Adobe AIR apps along with support for Adobe AIR 1.5 which Adobe announced earlier this week.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/the-ajax-side-of-air/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Aptana Jaxer 1.0 released, brings together the Aptana trinity</title>
		<link>http://ajaxian.com/archives/aptana-jaxer-10-released</link>
		<comments>http://ajaxian.com/archives/aptana-jaxer-10-released#comments</comments>
		<pubDate>Fri, 31 Oct 2008 18:14:10 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4939</guid>
		<description><![CDATA[Paul Colton of Aptana has announced the Jaxer 1.0 release. This comes on the heels of the general availability of Aptana Cloud, and of course their Studio product that ties things together. First, Jaxer 1.0: If you've already been using Jaxer you're likely familiar with its database, file system and socket APIs and its ability <a href="http://ajaxian.com/archives/aptana-jaxer-10-released">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Paul Colton of Aptana has <a href="http://www.aptana.com/blog/pcolton/jaxer10_released">announced the Jaxer 1.0 release</a>. This comes on the heels of the general availability of Aptana Cloud, and of course their Studio product that ties things together.</p>
<p><img src="http://www.aptana.com/images/jaxer_logo_whitebg.jpg" style="float: right; padding: 8px" /></p>
<p>First, Jaxer 1.0:</p>
<blockquote><p>
If you've already been using Jaxer you're likely familiar with its database, file system and socket APIs and its ability to not only run JavaScript and process the HTML DOM at the server, but also to expose server-side functions to the Web such that a HTML page can call back to those functions directly from the Web page. Thus Ajax communications could not be any easier with Jaxer: You just write a server-side function, "proxy it" with one line of code, then call it from the Web browser as if that function were part of the web page. Jaxer handles the client/server communications, data transformations, and provides the client-side function with its return value (either synchronously or asynchronously).</p>
<p>Recently we've added even more capabilities based on community feedback. These including support for RESTful APIs as well as native support for JSON to supplement the E4X (XML for JavaScript) support that's been there all along (thank you Mozilla!). The combination of these means you can easily create RESTful services that can be consumed by a wide array of Ajax applications, Web gadgets, Facebook or OpenSocial apps, and even Adobe Flash or Microsoft Silverlight based apps since those support JavaScript too. Plus mobile devices like the Apple iPhone and phones from other manufacturers are nearly all supporting JavaScript and Ajax. As you can imagine we're excited to see JavaScript become more and more the lingua franca of Web applications. It's already ubiquitous on the client side and now you can use it confidently on the server side.
</p></blockquote>
<p>We sat down with Paul, Uri Sarid (CTO), and Kevin Hakman (Director of Evangelism) to talk about this release in particular as well as the other recent news and the grand plan.</p>
<p>We have the <a href="http://media.ajaxian.com/podcasts/audibleajax-show-31-aptana.mp3">audio directly available</a>, or you can <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=79427931">subscribe to the podcast</a>.</p>
<p>There are a series of nice new screencasts to give you a quick feel for it all. Learn more about <a href="http://www.aptana.com/jaxer/?video">Jaxer</a>,  <a href="http://www.aptana.com/cloud/?video">Cloud</a>, and <a href="http://www.aptana.com/studio/?video">Studio</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/aptana-jaxer-10-released/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://media.ajaxian.com/podcasts/audibleajax-show-31-aptana.mp3" length="12110645" type="audio/mpeg" />
		</item>
		<item>
		<title>Aptana Jaxer 1.0 RC</title>
		<link>http://ajaxian.com/archives/aptana-jaxer-10-rc</link>
		<comments>http://ajaxian.com/archives/aptana-jaxer-10-rc#comments</comments>
		<pubDate>Wed, 08 Oct 2008 10:12:28 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4704</guid>
		<description><![CDATA[The Jaxer team has released a release candidate for Jaxer 1.0. Here a synopsis of all the new features and improvements that have gone into this latest release candidate: Jaxer.Sandbox: HTTP-level control; support readyState, toHTML, waitForCompletion Built-in, extensible dispatching for RESTful and RPC service requests Fast, native JSON support Improved APIs for HTTP Request and <a href="http://ajaxian.com/archives/aptana-jaxer-10-rc">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.aptana.com/images/jaxer_logo_whitebg.jpg" border="0" style="float: right; padding: 8px" /></p>
<p>The Jaxer team has <a href="http://www.aptana.com/blog/khakman/jaxer10rc">released a release candidate for Jaxer 1.0</a>.</p>
<blockquote>
<p>Here a synopsis of all the new features and improvements that have gone into this latest release candidate:</p>
<ul>
<li>	Jaxer.Sandbox: HTTP-level control; support readyState, toHTML, waitForCompletion
</li>
<li>	Built-in, extensible dispatching for RESTful and RPC service requests
</li>
<li>	Fast, native JSON support
</li>
<li>	Improved APIs for HTTP Request and Response
</li>
<li>	More flexible handling of application configuration
</li>
<li>	Many bug fixes, smaller improvements, and cleanups
</li>
</ul>
</blockquote>
<p>They are moving pretty fast, so are looking for feedback before they wrap up a final 1.0 release.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/aptana-jaxer-10-rc/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Aptana Jaxer Benchmarks</title>
		<link>http://ajaxian.com/archives/aptana-jaxer-benchmarks</link>
		<comments>http://ajaxian.com/archives/aptana-jaxer-benchmarks#comments</comments>
		<pubDate>Wed, 17 Sep 2008 13:35:29 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[jaxer]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4498</guid>
		<description><![CDATA[Jaxer has been out in beta for a while and is nearing its 1.0 release. Many comments on Ajaxian about Jaxer have been about performance benchmarks. Uri Sarid, CTO of Aptana, has compiled some initial benchmarks including comparisons to PHP and Ruby on Rails. (Jaxer comes out in between the two): We wanted to answer <a href="http://ajaxian.com/archives/aptana-jaxer-benchmarks">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Jaxer has been out in beta for a while and is nearing its 1.0 release. Many comments on Ajaxian about Jaxer have been about performance benchmarks. Uri Sarid, CTO of Aptana, has <a href="http://www.aptana.com/jaxer/benchmarks">compiled some initial benchmarks</a> including comparisons to PHP and Ruby on Rails. (Jaxer comes out in between the two):</p>
<p><img src="http://www.aptana.com/system/files/jaxer_benchmarks0_individuals_2.png" border="0" /></p>
<blockquote><p>
We wanted to answer a simple question: how does Jaxer, with its server-side DOM and JavaScript, perform relative to these other popular alternatives?</p>
<p>This was not designed to be an all-encompassing shoot-out, or a detailed study of everything you might want to do in a web app. Instead, we took a few common tasks — making database requests, using JSON, etc. — and implemented them as you might expect in the three platforms. We made enough DB requests and JSON calls and so on to give us a reasonable number of milliseconds to measure. But we also wanted to make the repetitions representative of what you might find on somewhat intensive real-world page, so we're not making a million DB requests, just a hundred, for instance. And we included one benchmark of serving an almost-static page: the "almost" was to make sure we were measuring the time the platform took to really read through the page, in case it had dynamic content in it. (Otherwise, if the page were truly static, you could always arrange for the web server to serve it without involving the platform.)
</p></blockquote>
<p>The tests include page scraping tests (e.g. mashup work), database performance, file I/O, JSON, and programatical loops.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/aptana-jaxer-benchmarks/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Form access control via jQuery and Jaxer</title>
		<link>http://ajaxian.com/archives/form-access-control-via-jquery-and-jaxer</link>
		<comments>http://ajaxian.com/archives/form-access-control-via-jquery-and-jaxer#comments</comments>
		<pubDate>Mon, 08 Sep 2008 12:42:41 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4363</guid>
		<description><![CDATA[Tom Kirkpatrick has written about writing one form, and using access control to map it to various roles using jQuery and Jaxer. This is a simple pattern. You never want to use client code to manage access, for obvious reasons. The approach is to use the server to spew out HTML that makes sense, and <a href="http://ajaxian.com/archives/form-access-control-via-jquery-and-jaxer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codegobbler.com/one-form-many-uses-server-side-jquery-jaxer"><img src="http://www.codegobbler.com/sites/codegobbler.com/files/fckeditor/jaxer.jquery.png" border="0"/></a></p>
<p>Tom Kirkpatrick has written about <a href="http://www.codegobbler.com/one-form-many-uses-server-side-jquery-jaxer">writing one form, and using access control to map it to various roles</a> using jQuery and Jaxer.</p>
<p>This is a simple pattern. You never want to use client code to manage access, for obvious reasons. The approach is to use the server to spew out HTML that makes sense, and then parse in the input and check access control.</p>
<p>Using Jaxer, this is all taken care of in JavaScript, and you can use libraries such as jQuery to do work there.</p>
<p>One solution to the roles issue is to manipulate the DOM on the server before it heads to the client. The magic lies in the 'server-nocache' directive which tells Jaxer than "the code should only run on the server, and that the code or should not be cached and will therefore not be available during callbacks."</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-6');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-6">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> runat=<span style="color: #ff0000;">"server-nocache"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">// some kind of authentication to get current users role</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">role = getRole()</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">// remove private form elements</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$((role == 'employer') ? '.employee.private' : '.employer.private')</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; .remove();</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">// disable irrelevant form elements</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$((role == 'employer') ? '.employee input' : '.employer input')</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; .attr('disabled', 'disabled');</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">// no need to inject Jaxer client framework (saves about 20k)</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Jaxer.response.setClientFramework();</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Of course, to be safe, you need to always test access control incoming, and not rely on the HTML that you send down.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/form-access-control-via-jquery-and-jaxer/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Running server side processes via JavaScript with Jaxer</title>
		<link>http://ajaxian.com/archives/running-server-side-processes-via-javascript-with-jaxer</link>
		<comments>http://ajaxian.com/archives/running-server-side-processes-via-javascript-with-jaxer#comments</comments>
		<pubDate>Wed, 20 Aug 2008 15:45:34 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4141</guid>
		<description><![CDATA[Tom Kirkpatrick has written about a new API in Jaxer, Jaxer.Process, that allows you to call out to the host operating system. His example has a call out to get the uptime on the machine: PLAIN TEXT JAVASCRIPT: &#160; &#60;script runat="server-proxy"&#62; function runUptime&#40;&#41; &#123; &#160; &#160; &#160; // run the uptime and return the output <a href="http://ajaxian.com/archives/running-server-side-processes-via-javascript-with-jaxer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codegobbler.com/how-execute-server-side-processes-jaxerprocess"><img src="http://www.codegobbler.com/sites/codegobbler.com/files/fckeditor/jaxer.process.png" border="0" /></a></p>
<p>Tom Kirkpatrick has written about a new API in <a href="http://www.aptana.com/jaxer">Jaxer</a>, <a href="http://www.aptana.com/reference/jaxer/api/Jaxer.index-frame.html">Jaxer.Process</a>, that allows you to call out to the host operating system. His example has a call out to get the uptime on the machine:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-8');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-8">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;script runat=<span style="color: #3366CC;">"server-proxy"</span>&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> runUptime<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// run the uptime and return the output from STDOUT</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> Jaxer.<span style="color: #006600;">Process</span>.<span style="color: #006600;">exec</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"/usr/bin/uptime"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/script&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>You can see the <a href="http://jaxer.codegobbler.com/jaxer-process.html">application running live</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/running-server-side-processes-via-javascript-with-jaxer/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Another Jaxer 1.0 Release Candidate with new APIs</title>
		<link>http://ajaxian.com/archives/another-jaxer-10-release-candidate-with-new-apis</link>
		<comments>http://ajaxian.com/archives/another-jaxer-10-release-candidate-with-new-apis#comments</comments>
		<pubDate>Fri, 01 Aug 2008 18:51:17 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3998</guid>
		<description><![CDATA[Greg Murray has blogged about a new release candidate for Aptana Jaxer that contains a lot of new features. Kevin Hakman told us about the release: We've had server-side JS database APIs all along, but now handing result sets is even easier. There's also now full fine grain control and access to the entire communication <a href="http://ajaxian.com/archives/another-jaxer-10-release-candidate-with-new-apis">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Greg Murray has <a href="http://aptana.com/blog/gmurray/jaxer_1_0_release_candidate_b">blogged about a new release candidate for Aptana Jaxer</a> that contains a lot of new features.</p>
<p>Kevin Hakman told us about the release:</p>
<blockquote><p>
We've had server-side JS database APIs all along, but now handing result sets is even easier.  There's also now full fine grain control and access to the entire communication cycle with APIs for message headers, redirects, content and types.  Speaking of types… for the first time with Jaxer, you can return content types other than HTML including JSON, XML, GIF, etc…  Yes, even GIFs.  Jaxer has a fresh new Image API that among other things can convert Canvas to static images and serve them up.  Like, Greg, I too really like the idea of using Jaxer for easily creating JSON data services which is a rapidly growing trend as developers discover the powerful capabilities of JSON more and more.  In Jaxer, it's very cool since it's all native JavaScript on the client, on the wire, and on the server.  There's even enhanced JSON serialization to make it even easier than before on both client and server.  JSON services also open Jaxer to be useful in combination with rich internet clients other than Ajax UIs such as Flash, Flex or even Silverlight since all those support JavaScript on the client and can consume JSON data.  For Ajax and RIA developers this is a boon since you can now write your client-side and server-side code in the same language.  And if you prefer XML data services Jaxer's native E4X (ECMAScript for XML) support means you can handle XML docs natively in JS on Jaxer as well.</p>
<p>This release also includes a totally new concept:  a secure sandbox which as Greg explains, "lets you load, on the server, pages from other domains and allow their JavaScript to execute without giving them access to the Jaxer API or your own server-side code, but still gives your code access to their window objects and anything inside them".  For anyone who has ever done screenscaping for mashups or other applications, this really helps a lot since Ajax pages have historically thwarted scraping operations.  With this feature in Jaxer you can securely get a remote page, execute its functions, and scrape the resulting DOM nodes (yes, you need not do tedious manipulations with strings) and voila!
</p></blockquote>
<p>Here are the features:</p>
<ul>
<li>Application context settings that allowing for easier app configuration, app properties, database settings, etc...</li>
<li>Database API enhancements with richer APIs for working with result sets.</li>
<li>Server-side image manipulation including server-side canvas support and ability to convert to other image types.</li>
<li>Native command execution API so that you can run system commands and handle the output from those.</li>
<li>Asynchronous server-side JavaScript processing lets you implement callbacks in your server-side code too.</li>
<li>Ability to return custom content types (e.g. json, xml, gif, html, etc...)</li>
<li>Full control of the request/response lifecycle including setting redirects, headers, content, etc...</li>
<li>Secure sandbox supporting cross domain calls, sandboxed JavaScript execution, META refreshes, ...</li>
<li>Serialization support for JavaScript objects to and from XML, E4X and JSON.</li>
</ul>
<p>Uri Sarid has a great post that shows <a href="http://www.aptana.com/blog/uri/dom_scraping_with_jaxer_part_2">how you can do DOM Scraping</a> with Jaxer, and updates it for this latest release:</p>
<blockquote><p>
There's a lot of other new goodness in Jaxer 1.0, as well as the official released version of the Mozilla engine found in Firefox 3. So for example getElementsByClassName is natively implemented (see <a href="http://ejohn.org/blog/getelementsbyclassname-speed-comparison/">John Resig's speed comparison</a>), in addition to the other Mozilla features such as built-in <a href="http://developer.mozilla.org/en/docs/XPath">XPath</a> functionality and a very robust <a href="http://developer.mozilla.org/en/docs/Gecko_DOM_Reference">DOM feature set</a> — just what you need for some serious 'screen scraping', mashups, and content repurposing.</p>
<p>Let's see it in action!
</p></blockquote>
<p>It includes code that shows the Sandbox in action, as well as the DOM work:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-10');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-10">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// Gets a fragment of the remote page's HTML, after some cleanup&nbsp; </span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> getFragment<span style="color:#006600; font-weight:bold;">&#40;</span>title, url, isClassName, identifier, classesToRemove<span style="color:#006600; font-weight:bold;">&#41;</span>&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span>&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> sandbox = <span style="color: #003366; font-weight: bold;">new</span> Jaxer.<span style="color: #006600;">Sandbox</span><span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> contents = sandbox.<span style="color: #006600;">document</span><span style="color:#006600; font-weight:bold;">&#91;</span>isClassName ? <span style="color: #3366CC;">'getElementsByClassName'</span> : <span style="color: #3366CC;">'getElementById'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#40;</span>identifier<span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> container = addToPage<span style="color:#006600; font-weight:bold;">&#40;</span>title, contents<span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>classesToRemove<span style="color:#006600; font-weight:bold;">&#41;</span>&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span>&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">typeof</span> classesToRemove == <span style="color: #3366CC;">"string"</span><span style="color:#006600; font-weight:bold;">&#41;</span> classesToRemove = <span style="color:#006600; font-weight:bold;">&#91;</span>classesToRemove<span style="color:#006600; font-weight:bold;">&#93;</span>;&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; classesToRemove.<span style="color: #006600;">forEach</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>className<span style="color:#006600; font-weight:bold;">&#41;</span>&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span>&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; removeNodeList<span style="color:#006600; font-weight:bold;">&#40;</span>container.<span style="color: #006600;">getElementsByClassName</span><span style="color:#006600; font-weight:bold;">&#40;</span>className<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> container.<span style="color: #006600;">innerHTML</span>;&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">getFragment.<span style="color: #006600;">proxy</span> = <span style="color: #003366; font-weight: bold;">true</span>;&nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/another-jaxer-10-release-candidate-with-new-apis/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Greg Murray, Ryan Johnson join Aptana to work on Jaxer; ORM and MVC are starter projects</title>
		<link>http://ajaxian.com/archives/greg-murray-ryan-johnson-join-aptana-to-work-on-jaxer-orm-and-mvc-are-starter-projects</link>
		<comments>http://ajaxian.com/archives/greg-murray-ryan-johnson-join-aptana-to-work-on-jaxer-orm-and-mvc-are-starter-projects#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:07:34 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3936</guid>
		<description><![CDATA[Paul Colton posted that Aptana has a couple of new recruits in Greg Murray and Ryan Johnson. Greg Murray was the Ajax guy at Sun, created jMaki, and did a lot of work in organizations such as the Open Ajax Alliance. Ryan Johnson is the creator of the livepipe and object.event Ajax libraries. What are <a href="http://ajaxian.com/archives/greg-murray-ryan-johnson-join-aptana-to-work-on-jaxer-orm-and-mvc-are-starter-projects">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Paul Colton posted that Aptana has a couple of new recruits in <a href="http://www.aptana.com/blog/pcolton/ajax_gurus_join_aptana">Greg Murray and Ryan Johnson</a>.</p>
<p>Greg Murray was the Ajax guy at Sun, created jMaki, and did a lot of work in organizations such as the Open Ajax Alliance. Ryan Johnson is the creator of the livepipe and object.event Ajax libraries. What are they doing?</p>
<blockquote><p>
Greg's primary role will be creating increasingly robust application frameworks for <a href="http://www.aptana.com/jaxer">Jaxer</a>, Aptana's open source Ajax server product. Ryan has already been working on MVC concepts for Jaxer and will be collaborating with Greg and the rest of the Jaxer team to drive that and other great concepts for Jaxer forward.  </p>
<p>The timing could not be better. Greg and Ryan have joined up just before we get the Jaxer 1.0 release candidate out the door to the whole community (it's just a matter of days now). This puts us in a great position to start working on some of the next things that'll be in store for Jaxer in the coming months -- and there are some great ideas brewing.  For example, Greg and Ryan have already been collaborating with the Jaxer team to create an ActiveRecord-like JavaScript ORM for Jaxer that promises to make working with JavaScript data a pleasure -- since it'll all be native JavaScript! </p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/greg-murray-ryan-johnson-join-aptana-to-work-on-jaxer-orm-and-mvc-are-starter-projects/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Talking to .NET on the server with Jaxer</title>
		<link>http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer</link>
		<comments>http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer#comments</comments>
		<pubDate>Fri, 04 Jul 2008 11:56:43 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3821</guid>
		<description><![CDATA[What does your CEO do? Paul Colton, CEO of Aptana, gets his fingers dirty. He just wrote a post about accessing COM objects from JavaScript with Jaxer. This is possible as the JavaScript is running on the server, and this server is running on Windows. You can download the source code to check it all <a href="http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>What does your CEO do? Paul Colton, CEO of Aptana, gets his fingers dirty. He just wrote a post about <a href="http://www.aptana.com/blog/pcolton/jaxer_and_dot_net">accessing COM objects from JavaScript with Jaxer</a>.</p>
<p>This is possible as the JavaScript is running on the server, and this server is running on Windows. You can <a href="http://www.aptana.com/system/files/MyCOMObject_0.zip">download the source code</a> to check it all out.</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-12');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-12">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">&lt;html&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">&lt;body&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> runat=<span style="color: #ff0000;">"server-proxy"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;function rotate(angle)</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var img = COMObject(&quot;ImageProcessor.ImageProcessing&quot;);</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.LoadImage(Jaxer.request.documentRoot + &quot;/photo.jpg&quot;);</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.RotateImage(angle);</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.SaveImage(Jaxer.request.documentRoot + &quot;/new.jpg&quot;);</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"angle"</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"button"</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">"Rotate"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">onclick</span>=<span style="color: #ff0000;">"rotate(document.getElementById('angle').value);</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById('img').src =</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #ff0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.getElementById('img').src + '?' + new Date()"</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/br.html"><span style="color: #000000; font-weight: bold;">&lt;br</span></a> /<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">'img'</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"new.jpg"</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp;<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/talking-to-net-on-the-server-with-jaxer/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Leveraging Ext JS on the Server via Jaxer</title>
		<link>http://ajaxian.com/archives/leveraging-ext-js-on-the-server-via-jaxer</link>
		<comments>http://ajaxian.com/archives/leveraging-ext-js-on-the-server-via-jaxer#comments</comments>
		<pubDate>Wed, 11 Jun 2008 11:00:14 +0000</pubDate>
		<dc:creator>Rey Bango</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Sencha]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3739</guid>
		<description><![CDATA[When Aptana released Jaxer, it really excited the community because you could now leverage your client-side skills on the server end of things. Rich Waters of Ext JS talks about how to leverage Ext JS on the server via Jaxer. The code created by Rich creates a Ext JaxerStore which allows you to run queries <a href="http://ajaxian.com/archives/leveraging-ext-js-on-the-server-via-jaxer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>When <a href="http://aptana.com/">Aptana</a> released <a href="http://aptana.com/jaxer">Jaxer</a>, it really excited the community because you could now leverage your client-side skills on the server end of things. <a href="http://www.rich-waters.com/blog/">Rich Waters</a> of Ext JS talks about how to leverage <a href="http://extjs.com/">Ext JS</a> on the server via Jaxer. The code created by Rich creates a Ext JaxerStore which allows you to run queries and directly put them into a Ext Store. This has the benefit of leveraging the same Ext language syntax you've become accustomed to for server-side processing by allowing Jaxer to wrap client and server-side communications up allowing either synchronous or asynchronous calls between the client and server. </p>
<p>I asked Rich why would developers do this versus doing a simple Ajax call to a template sitting on a server:</p>
<blockquote><p>The template bit lets you generate the html before the page is served up so that no extra client side calls are necessary.  I think the Ext template system is really slick and easier than even a lot of other existing server side templating systems. More or less it was also just an example to get people thinking about what could be done now that Ext can be run server-side.</p></blockquote>
<p>The code snippet allows you to make the calls to Jaxer very easily:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-14');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-14">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Ext.<span style="color: #006600;">onReady</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color: #003366; font-weight: bold;">var</span> store = <span style="color: #003366; font-weight: bold;">new</span> Ext.<span style="color: #006600;">data</span>.<span style="color: #006600;">JaxerStore</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;table : <span style="color: #3366CC;">'demo'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;fields : <span style="color:#006600; font-weight:bold;">&#91;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #000066;">name</span> : <span style="color: #3366CC;">'name'</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #000066;">name</span> : <span style="color: #3366CC;">'phone'</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #000066;">name</span> : <span style="color: #3366CC;">'email'</span><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;readerConfig : <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sortInfo : <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sort : <span style="color: #3366CC;">'name'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;dir : <span style="color: #3366CC;">'asc'</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color: #009900; font-style: italic;">// create the Grid</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color: #003366; font-weight: bold;">var</span> grid = <span style="color: #003366; font-weight: bold;">new</span> Ext.<span style="color: #006600;">grid</span>.<span style="color: #006600;">GridPanel</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;store : store,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;columns : <span style="color:#006600; font-weight:bold;">&#91;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span>header : <span style="color: #3366CC;">"Name"</span>, sortable : <span style="color: #003366; font-weight: bold;">true</span>, dataIndex : <span style="color: #3366CC;">'name'</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span>header : <span style="color: #3366CC;">"Phone #"</span>, sortable : <span style="color: #003366; font-weight: bold;">true</span>, dataIndex : <span style="color: #3366CC;">'phone'</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span>header : <span style="color: #3366CC;">"Email"</span>, sortable : <span style="color: #003366; font-weight: bold;">true</span>, dataIndex : <span style="color: #3366CC;">'email'</span><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;viewConfig : <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;forceFit : <span style="color: #003366; font-weight: bold;">true</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;stripeRows : <span style="color: #003366; font-weight: bold;">true</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;height : <span style="color:#800000;">350</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;width : <span style="color:#800000;">680</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;title : <span style="color: #3366CC;">'Jaxer Demo Grid'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp;renderTo : Ext.<span style="color: #006600;">getBody</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>which would then populate a grid control and render it accordingly.</p>
<p>The source code to this new functionality can be <a href="http://extjs.com/blog/images/jaxer/jaxerdemo.zip">downloaded here</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/leveraging-ext-js-on-the-server-via-jaxer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aptana Cloud: A sneak peak</title>
		<link>http://ajaxian.com/archives/aptana-cloud-a-sneak-peak</link>
		<comments>http://ajaxian.com/archives/aptana-cloud-a-sneak-peak#comments</comments>
		<pubDate>Tue, 10 Jun 2008 10:27:26 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3730</guid>
		<description><![CDATA[Dougal Matthews has been playing with Aptana Cloud in a beta form. He wrote up this piece that walks you through the functionality with screenshots: After creating a project it then is automatically available in the cloud options. When you click on the project under the cloud menu you are taken through a (very easy <a href="http://ajaxian.com/archives/aptana-cloud-a-sneak-peak">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.dougalmatthews.com/2008/06/aptana-cloud-hands-on/"><img src="http://ajaxian.com/wp-content/images/aptanacloud.jpg" alt="Aptana Cloud" border="0" width="480" height="322"/></a></p>
<p>Dougal Matthews has been <a href="http://blog.dougalmatthews.com/2008/06/aptana-cloud-hands-on/">playing with Aptana Cloud</a> in a beta form. He wrote up this piece that walks you through the functionality with screenshots:</p>
<blockquote><p>
After creating a project it then is automatically available in the cloud options.</p>
<p>When you click on the project under the cloud menu you are taken through a (very easy to use) wizard for configuration. This runs your through a few steps, setting up a site name, picking a payment plan (the beta is free), payment details and so on. Most of these screens are fairly standard, however the service selection is quite interesting. I imagine these prices are not final, so just take them with a pinch of salt.</p>
<p>The payment scheme seems to be quite flexible and we can see a large number of services that are included, PHP being the main server side language at the moment, with Aptana Jaxer still being a betaâ€¦ (Ruby of Rails is on the â€˜coming soonâ€™ list). The prices range from the cheapest being 256 MB ram and 5 GB hard disc for $0.99 a day, up to 2 GB of ram and 25 GB hard disc for $8.22 a day. Seems fairly reasonably priced.</p>
<p>After set-up is finished, it phones home and does some magic.
</p></blockquote>
<p>This is an important step for Aptana, as it not only gives us a good general cloud service, but it also gives you the perfect place to play with Jaxer. I am looking forward to seeing more.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/aptana-cloud-a-sneak-peak/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Aptana Cloud: Develop on your desktop, sync out to the cloud</title>
		<link>http://ajaxian.com/archives/aptana-cloud-develop-on-your-desktop-sync-out-to-the-cloud</link>
		<comments>http://ajaxian.com/archives/aptana-cloud-develop-on-your-desktop-sync-out-to-the-cloud#comments</comments>
		<pubDate>Mon, 28 Apr 2008 19:41:13 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3602</guid>
		<description><![CDATA[Aptana have announced their cloud platform initiative, Aptana Cloud. Aptana Cloud plugs right into your IDE to provide instant deployment, smart synchronization, and seamless migration as you scale. Aptana Cloud is ideal for developers who use scripting languages to create Ajax, Facebook, mySpace and all other sorts of Web applications. The key is that this <a href="http://ajaxian.com/archives/aptana-cloud-develop-on-your-desktop-sync-out-to-the-cloud">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://aptana.com/cloud"><img src="http://www.aptana.com/system/files/images/cloud_logo_large_0.png" border="0" /></a></p>
<p>Aptana have <a href="http://www.eweek.com/c/a/Application-Development/Aptana-to-Launch-Cloud-Platform/">announced their cloud platform initiative</a>, Aptana Cloud.</p>
<blockquote><p>
Aptana Cloud plugs right into your IDE to provide instant deployment, smart synchronization, and seamless migration as you scale. Aptana Cloud is ideal for developers who use scripting languages to create Ajax, Facebook, mySpace and all other sorts of Web applications.
</p></blockquote>
<p>The key is that this isn't a infrastructure play, which they clearly point out:</p>
<blockquote><p>
Aptana Cloud is architected to complement Cloud infrastructure providers like Amazon, Google, Joyent and others. To get started we've selected Joyent who serves up some of the largest of all Facebook apps.
</p></blockquote>
<p>This shows that their platform is designed to go meta, allowing you to deploy to various clouds in the future.</p>
<p>I think that the number one meme from Web 2.0 Expo last week was the "cloud", coming off of the excitement of Google App Engine. With Aptana Cloud we will see sophisticated tools to make us productive in the cloud. I am very excited to see that it won't be too long until developers will be able to build an application, hit DEPLOY, and be done. This is a huge win.</p>
<p>For developers:</p>
<ul>
<li>IDE plug-in integrates Cloud development, deployment and management life-cycles right into Aptana Studio in either its standalone or Eclipse based editions</li>
<li>Instant deployment of projects to Cloud</li>
<li>One click sync your project to the Cloud, or provide fine grained sync control too</li>
<li>Integrated service management consoles</li>
<li>Configure desired memory size and disk size</li>
<li>Develop and instantly preview remote files right inside your Studio desktop environment</li>
<li>Subversion source control.</li>
</ul>
<p>As Ajax developers, the vision of Jaxer in the cloud is very interesting too. The entire application using JavaScript, and deployed up into the cloud, all through the nice IDE.</p>
<p>I was also pleased to read that not only Ruby on Rails, but Python is on the docket. After developing Django applications and playing with Google App Engine, I would love to be able to use Studio for Python code too. Not that <a href="http://steve-yegge.blogspot.com/2008/04/xemacs-is-dead-long-live-xemacs.html">Emacs (X or GNU) isn't great, Steve!</a></p>
<p>Darryl Taft wrote:</p>
<blockquote><p>
Aptana adds extra value via IDE integration, deployment automation and active monitoring and notification services, Hakman said. â€œIt's like the ease and simplicity between iTunes on your desktop and its connectivity to services on the Web,â€ he said.</p>
<p>For developers, the IDE plug-in integrates cloud development, deployment and management lifecycles right into Aptana Studio in either its standalone or Eclipse-based editions, Hakman said. "The ability to deploy stuff to the cloud from Eclipse is part of this as well."</p>
<p>Other developer features include instant deployment of projects to the cloud; one click can sync your project to the cloud or provide fine-grained sync control; the technology features integrated cloud services management, enables users to provision their cloud right from Aptana Studio, configure desired memory size and disk size, develop and instantly preview remote files right inside the Studio desktop environment, and includes Subversion Source Control.
</p></blockquote>
<p>Can't wait go get an invite. If you want one too, <a href="http://survey.constantcontact.com/survey/a07e2abgqrhffkgzt7x/start">request an account</a>.</p>
<p>Also, Aptana Studio just passed 1,5 million downloads. Impressive.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/aptana-cloud-develop-on-your-desktop-sync-out-to-the-cloud/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Server-side jQuery, E4X, and more with Jaxer</title>
		<link>http://ajaxian.com/archives/server-side-jquery-e4x-and-more-with-jaxer</link>
		<comments>http://ajaxian.com/archives/server-side-jquery-e4x-and-more-with-jaxer#comments</comments>
		<pubDate>Mon, 14 Apr 2008 13:45:17 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Server]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3549</guid>
		<description><![CDATA[Davey Waterson of the Aptana Jaxer team has posted an article on using jQuery on the server-side with E4X and more that shows an example of server-side Ajax with a popular framework. The article describes a polling application that features: Using jQuery server-side to manipulate a DOM before it's sent to the client Doing some <a href="http://ajaxian.com/archives/server-side-jquery-e4x-and-more-with-jaxer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Davey Waterson of the Aptana Jaxer team has posted an article on <a href="http://www.aptana.com/node/336">using jQuery on the server-side with E4X and more</a> that shows an example of server-side Ajax with a popular framework.</p>
<p>The article describes a polling application that features:</p>
<ul>
<li>Using jQuery server-side to manipulate a DOM before it's sent to the client</li>
<li>Doing some database / SQL interactions, server-side in javascript of course</li>
<li>User sessions in javascript (Jaxer.session.set('status', status);)</li>
<li>Using E4X on the server-side.</li>
</ul>
<p>There are fun little features such as nuking portions of the page if the permissions call for it:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-16');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-16">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066;">status</span> == <span style="color: #3366CC;">'voter'</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color: #3366CC;">'.nonvoter'</span> : <span style="color: #3366CC;">'.voter'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">remove</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Since the application delivers no JavaScript itself, this would all work even if the user has JavaScript turned off, on a simple mobile phone, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/server-side-jquery-e4x-and-more-with-jaxer/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Multiple File Uploads with Aptana Jaxer</title>
		<link>http://ajaxian.com/archives/multiple-file-uploads-with-aptana-jaxer</link>
		<comments>http://ajaxian.com/archives/multiple-file-uploads-with-aptana-jaxer#comments</comments>
		<pubDate>Thu, 20 Mar 2008 10:52:55 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3459</guid>
		<description><![CDATA[Dealing with file uploads can be a test of a Web framework. I personally long for the input type="file" to be improved with items such as multiple="true" for multiselection, let alone showing the status of the upload (20% complete). The Jaxer folks have posted on Easy File Uploading using Aptana Jaxer which shows how you <a href="http://ajaxian.com/archives/multiple-file-uploads-with-aptana-jaxer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Dealing with file uploads can be a test of a Web framework. I personally long for the <code>input type="file"</code> to be improved with items such as <code>multiple="true"</code> for multiselection, let alone showing the status of the upload (20% complete).</p>
<p>The Jaxer folks have posted on <a href="http://www.aptana.com/node/323">Easy File Uploading using Aptana Jaxer</a> which shows how you can tinker in JavaScript to get everything you need in a very simple way:</p>
<blockquote><p>
To receive the data from the form when submitted we put some Jaxer code into the page the form will be submitted to. The code below should be in script block with a runat = 'server' attribute, which makes the code run serverside and doesn't present it to the client so you don't expose any serverside filenames or folder structures.
</p></blockquote>
<div class="igBar"><a href="javascript:showCodeTxt('html-18');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-18">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'text/javascript'</span> runat=<span style="color: #ff0000;">'server'</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">var message = &quot;&quot;;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">for (fileCount=0; fileCount <span style="color: #009900;">&lt;Jaxer.request.files.length; fileCount++<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; var fileInfo = Jaxer.request.files<span style="color:#006600; font-weight:bold;">&#91;</span>fileCount<span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; var destinationFilePath = Jaxer.Dir.resolvePath<span style="color:#006600; font-weight:bold;">&#40;</span>fileInfo.originalFileName<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; fileInfo.save<span style="color:#006600; font-weight:bold;">&#40;</span>destinationFilePath<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; message += <span style="color: #ff0000;">"&lt;br&gt;</span>&quot; + [ </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Saved to : &quot; &nbsp; &nbsp; &nbsp; + destinationFilePath</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ,&nbsp; &nbsp; &nbsp; &nbsp;&quot;original filename : &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + fileInfo.originalFileName</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ,&nbsp; &nbsp; &nbsp; &nbsp;&quot;temp filename : &quot;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;+ fileInfo.tempFileName</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ,&nbsp; &nbsp; &nbsp; &nbsp;&quot;contentType : &quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + fileInfo.contentType</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ,&nbsp; &nbsp; &nbsp; &nbsp;&quot;size : &quot; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;+ fileInfo.fileSize</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; ].join(&quot;<span style="color: #009900;">&lt;br /&gt;</span>&quot;);</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">}</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">document.write(message); </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;">&lt;/script&gt;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</span></div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/multiple-file-uploads-with-aptana-jaxer/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RadRails 1.0 Released</title>
		<link>http://ajaxian.com/archives/radrails-10-released</link>
		<comments>http://ajaxian.com/archives/radrails-10-released#comments</comments>
		<pubDate>Wed, 12 Mar 2008 15:07:39 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Screencast]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/radrails-10-released</guid>
		<description><![CDATA[Aptana took over the RadRails open source project a few months back, and now have fully integrated it with Aptana Studio with the RadRails 1.0 release. RadRails 1.0 runs as a plug-in to Aptana Studio. So in addition to all the Ruby on Rails IDE goodies and the integrated Rails shell command-line console, developers get <a href="http://ajaxian.com/archives/radrails-10-released">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Aptana took over the RadRails open source project a few months back, and now have fully integrated it with Aptana Studio with the <a href="http://www.aptana.com/node/320">RadRails 1.0</a> release.</p>
<p>RadRails 1.0 runs as a plug-in to Aptana Studio.  So in addition to all the Ruby on Rails IDE goodies and the integrated Rails shell command-line console, developers get the great HTML, CSS, DOM, JavaScript and Ajax features in Aptana Studio, which can run stand alone or within Eclipse to that all your other Eclipse tools can be right there as well.</p>
<p>The new version has a slew of new and enhanced functionality such as:</p>
<ul>
<li>Rails 2.0 support</li>
<li>JRuby support</li>
<li>Bundled auto-installing gems for rails development</li>
<li>A Ruby profiler for Pro users</li>
<li>An RDoc preview view</li>
<li>Extended RHTML/ERb color preferences</li>
<li>Code completion for ActiveRecord model fields and finders</li>
<li>Code completion suggesting method call arguments</li>
<li>Significant expansion of code warnings and analysis, including syntax changes from Ruby 1.8 to 1.9</li>
<li>An improved look and feel</li>
</ul>
<p>You can watch a <a href="http://www.aptana.tv/movies/aptana_radrails_rails_shell/aptana_radrails_rails_shell.html">screencast of the product at work</a> or a <a href="http://www.aptana.com/rails/#features">full feature list</a>.</p>
<p>Aptana continues to add new functionality to its products as it tries to hit the "best tools for Web development with scripting languages" vision.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/radrails-10-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dojo and Django templates on the server side with Jaxer</title>
		<link>http://ajaxian.com/archives/dojo-and-django-templates-on-the-server-side-with-jaxer</link>
		<comments>http://ajaxian.com/archives/dojo-and-django-templates-on-the-server-side-with-jaxer#comments</comments>
		<pubDate>Tue, 04 Mar 2008 12:58:46 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Aptana]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3393</guid>
		<description><![CDATA[Yesterday we posted about Dojo and AIR and how the framework could be well suited for certain desktop applications. Today we have Kriz Zyp talking about their Jaxer support and how you can use the Django template language, that Dojo recently added, to once again do its thing on the server side. Kris tells us <a href="http://ajaxian.com/archives/dojo-and-django-templates-on-the-server-side-with-jaxer">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday <a href="http://ajaxian.com/archives/dojo-on-air-shows-detail-on-air-itself">we posted about Dojo and AIR</a> and how the framework could be well suited for certain desktop applications. </p>
<p>Today we have Kriz Zyp <a href="http://www.sitepen.com/blog/2008/02/29/jaxer-and-the-dojo-toolkits-dtl/">talking about their Jaxer support</a> and how you can use the <a href="http://ajaxian.com/archives/django-template-language-in-javascript">Django template language</a>, that Dojo recently added, to once again do its thing on the server side.</p>
<p>Kris tells us more:</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-20');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-20">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> runat=<span style="color: #ff0000;">"both"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">djConfig = {baseUrl:&quot;/dojo/&quot;,usePlainJson: true, parseOnLoad: true};</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> runat=<span style="color: #ff0000;">"both"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"../../../dojo/dojo.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> runat=<span style="color: #ff0000;">"server"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">dojo.require(&quot;dojo.jaxer&quot;);</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<blockquote><p>
Once this is done, Dojo should load in Jaxer, and you can utilize the library capabilities of the Dojo Toolkit on the server side. In particular, you can now use the DTL renderer as you would on the browser. The DTL renderer can take templates written using Django template language and render the templates based upon JSON data. If you are running Jaxer, you can view a demonstration of DTL rendering on the server by loading /dojox/dtl/demos/demo_Templated_Jaxer.html (make sure the Dojo Toolkit base URL is correct).</p>
<p>By using Jaxerâ€™s capability to allow scripts to execute on both the client and server, we can utilize our Dojo Toolkit in both environments. On the server we can utilize many of the Dojo Toolkitâ€™s features such as functional language features, math libraries, cryptography, dates, encoding, and more to improve development speed and code quality. We can use the same powerful features and idioms in both the browser and the server. An example of a practical way to use the Dojo Toolkit in both environments is to utilize the DTL renderer as described above to generate HTML on the server, and then use the Dojo Toolkitâ€™s Ajax capabilities to dynamically update the page once itâ€™s on the browser. For example: we could use the DTL renderer to display the comments in a blog, dynamically add any new comment the user makes at the end of the list of comments, and then send the comment to the server using Ajax.</p>
<p>It is important to note that Jaxer is not capable of transferring the programatically set event handlers for widgetsâ€”it can only send the static HTML to the browser. This means you can use DTL as a templating engine to create HTML on the server, but the Dojo Toolkit client side widgets are still necessary if you want to use interactive widgets on the browser.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/dojo-and-django-templates-on-the-server-side-with-jaxer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

