<?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>Comunidade Portuguesa de Rich Internet Applications &#187; Adobe Air</title>
	<atom:link href="http://www.riapt.org/category/adobe-air/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.riapt.org</link>
	<description></description>
	<lastBuildDate>Sun, 15 Jan 2012 15:48:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Flash Builder 4.5 &#8211; Produtividade e Desenvolvimento para Mobile</title>
		<link>http://www.riapt.org/2011/05/09/flash-builder-4-5-produtividade-e-desenvolvimento-para-mobile/</link>
		<comments>http://www.riapt.org/2011/05/09/flash-builder-4-5-produtividade-e-desenvolvimento-para-mobile/#comments</comments>
		<pubDate>Mon, 09 May 2011 10:19:20 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Rich UI]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=884</guid>
		<description><![CDATA[Foi lançado esta semana o Flash Builder 4.5 cujas novidades assentam no desenvolvimento para Smartphones e Tablets e nas ferramentas de aumento de produtividade. O aumento de produtividade no Flash Builder destaca-se através de várias pequenas mas extremamente úteis funcionalidades para simplificar a vida do programador enquanto escreve código, tais como: Code templates &#8211; o [...]]]></description>
			<content:encoded><![CDATA[<p>Foi lançado esta semana o Flash Builder 4.5 cujas novidades assentam no desenvolvimento para Smartphones e Tablets e nas ferramentas de aumento de produtividade.</p>
<p>O aumento de produtividade no Flash Builder destaca-se através de várias pequenas mas extremamente úteis funcionalidades para simplificar a vida do programador enquanto escreve código, tais como:</p>
<p><strong>Code templates</strong> &#8211; o Flash Builder traz cerca de uma centena de code templates, mas estes são configuráveis pelo programadorsendo fácil adicionar novos. Para activar um code template, basta, por exemplo, escrever &#8220;fori&#8221;, carregar CTRL+Space, e o Flash Builder escreverá automaticamente &#8220;for (var i:Number = 0 &#8230;. etc&#8221;.</p>
<p><strong>Code completion para Metadata</strong> &#8211; basta escrever [B (Ctrl+Space) e o FB preenche o resto <img src='http://www.riapt.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Live error Highlighting</strong> - ao escrever código o Flash Builder agora aponta os erros sem ser necessário compilar. De notar que isto funciona com grande parte dos erros, mas não com todos.</p>
<p><strong>Melhorias no IDE</strong> - a performance do IDE foi melhorada, tal como a velocidade de compilação. O design mode agora consegue fazer o rendering de views mais complexas</p>
<p><strong>Quick-assist </strong>- na realidade esta não é uma, mas sim dezenas de funcionalidades. O Quick-assist é um atalho (CTRL+1) que quando é chamado abre um menu com várias opções, de acordo com o contexto, como por exemplo:</p>
<ul>
<li>Geração de event handlers</li>
<li>Organização dos imports</li>
<li>Criação de métodos automática</li>
<li>Declaração de variáveis</li>
<li>Promoção de variáveis locais para propriedades da classe</li>
<li>[... outras ...]</li>
</ul>
<p>Neste vídeo do Serge, é possível ver algumas destas funcionalidades em acção:</p>
<p><object width="500" height="306"><param name="movie" value="http://www.youtube.com/v/HzUZl_M7vBQ?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HzUZl_M7vBQ?version=3" type="application/x-shockwave-flash" width="500" height="306" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Relativamente ao desenvolvimento para <strong>dispositivos móveis</strong>, o Flash Builder é agora um ambiente extremamente confortável para desenvolver para smartphones e tablets Android, iOS e BlackBerry (Playbook).</p>
<p>A versão que foi disponibilizada ainda só exporta aplicações para Android, mas muito em breve será lançado um update que permite exportar a mesma aplicação com o mesmo código para iOS.</p>
<p>O Flex SDK possui agora um conjunto de componentes &#8220;light&#8221; especialmente optimizados para telemóveis e ainda uma framework que simplifica o desenvolvimento  ao gerir pelo programador a navegação entre as views, a &#8220;cache&#8221; dos dados em cada view, etc. No desenvolvimento para Mobile é importante ter em conta as diferentes resoluções e densidades de cada smartphone &#8211; o Flash Builder possui ferramentas para gerir confortavelmente o desenvolvimento para diferentes ecrãs (multi-screen development).</p>
<p>Neste vídeo do Serge podemos ver mais sobre o desenvolvimento para Mobile:</p>
<p><object width="500" height="306"><param name="movie" value="http://www.youtube.com/v/LqlR-bHc3XI?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/LqlR-bHc3XI?version=3" type="application/x-shockwave-flash" width="500" height="306" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Este é também um vídeo interessante que mostra os Charting components a correr no iPad, iPhone, Android e BlackBerry Playbook:</p>
<p><object width="500" height="306"><param name="movie" value="http://www.youtube.com/v/paTRLcmErNY?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/paTRLcmErNY?version=3" type="application/x-shockwave-flash" width="500" height="306" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Para quem pretende explorar mais o desenvolvimento para Mobile usando Adobe Air, deixo aqui este recurso (embora não seja completamente orientado ao Flex):</p>
<p>&nbsp;</p>
<p><img class="aligncenter" src="http://covers.oreilly.com/images/0636920013884/cat.gif" alt="Book cover of Developing Android Applications with Adobe AIR" /></p>
<p>&nbsp;</p>
<p>Esta é, na minha opinião, a melhor release do Flash Builder até à data. Ou pelo menos, é a mais sólida e que eleva o desenvolvimento em Flex para outro patamar, muito próximo da experiência de desenvolvimento típica no mundo JAVA.</p>
<p>Eu, o Rui Silva e o João Fernandes acompanhamos esta release desde o início e tivemos a oportunidade de contribuir para a evolução da mesma. Orgulhosamente temos agora dois nomes portugueses nos créditos do Flash Builder, se bem que o João Fernandes também merecia. E não queria deixar de mandar um abraço para o Carlos Rovira ali na vizinha Espanha. <img src='http://www.riapt.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p><a href="http://www.riapt.org/wp-content/uploads/2011/05/credits.jpg"><img class="aligncenter size-full wp-image-887" title="credits" src="http://www.riapt.org/wp-content/uploads/2011/05/credits.jpg" alt="" width="640" height="479" /></a></p>
<p>&nbsp;</p>
<p>Não se esqueçam que podem sempre utilizar a <a href="http://groups.google.com/group/riapt" target="_blank">Mailing List</a> para partilhar as vossas experiências ou colocar questões ao resto da comunidade.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2011/05/09/flash-builder-4-5-produtividade-e-desenvolvimento-para-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joining different technologies can give sweet results</title>
		<link>http://www.riapt.org/2010/08/12/joining-different-technologies-can-give-sweet-results/</link>
		<comments>http://www.riapt.org/2010/08/12/joining-different-technologies-can-give-sweet-results/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 20:29:54 +0000</pubDate>
		<dc:creator>Kim Hansen</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[JEPUM]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Pomodoro]]></category>
		<category><![CDATA[Web Responsive]]></category>
		<category><![CDATA[WorkSmart]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=728</guid>
		<description><![CDATA[A couple of fun free apps.. Lately we have played around with Adobe AIR in Web Responsive and the outcome is two small but sweet applications. JEPUM &#8211; Joomla Easy Picture Uploader and Manager This application is somehow geeky, as it combines two technologies rarely seen working (intimately) together: Joomla and Flex (AIR). Basically it [...]]]></description>
			<content:encoded><![CDATA[<p><strong>A couple of fun free apps..</strong></p>
<p>Lately we have played around with Adobe AIR in <a title="Web Responsive" href="http://www.web-responsive.com" target="_blank">Web Responsive</a> and the outcome is two small but sweet applications.</p>
<p><strong>JEPUM &#8211; Joomla Easy Picture Uploader and Manager</strong></p>
<p>This application is somehow geeky, as it combines two technologies rarely seen working (intimately) together: <a title="Joomla" href="http://www.joomla.org" target="_blank">Joomla</a> and <a title="Adobe Flex" href="http://www.adobe.com/products/flex/" target="_blank">Flex</a> (AIR). Basically it is a picture uploader for Joomla, since the normal picture uploader/manager in Joomla is somewhat annoying/time-consuming to use. This application also features integrated FTP installation of the Joomla extension, which serves more as test case/experiment, rather than true usefulness.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/O5O2nKQWsTk&amp;hl=da&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/O5O2nKQWsTk&amp;hl=da&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Get a <a title="JEPUM - free version" href="http://www.web-responsive.com/index.php/productseng/free/jepum-limited" target="_blank">free version of JEPUM</a>.</p>
<p><strong>WorkSmart &#8211; Get more done, feel better</strong></p>
<p>As someone spending plenty of hours sitting at the desk in front of a computer, I am becoming increasingly aware of the long term physical problems this can lead to.</p>
<p>With that in mind, we created a small free application, that uses the Pomodoro technique to increase your productivity at work, while utilizing the work pauses to improve your body posture through targeted mobility and stretching exercises. This is the first application inside the <a title="HealthWize project" href="http://www.health-wize.net" target="_blank">HealthWize project</a>.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/syBn-MbTUbM&amp;hl=da&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/syBn-MbTUbM&amp;hl=da&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Get a <a title="Free version of WorkSmart" href="http://www.health-wize.net/index.php/worksmart" target="_blank">free version of WorkSmart</a>.</p>
<p>Our next version will feature video exercises, which will be a lot of fun.</p>
<p>As always, feedback of any kind is very welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2010/08/12/joining-different-technologies-can-give-sweet-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RiaPT Meeting no Porto &#8211; A experiência, conclusão e os slides!</title>
		<link>http://www.riapt.org/2010/03/24/riapt-meeting-no-porto-a-experiencia-conclusao-e-os-slides/</link>
		<comments>http://www.riapt.org/2010/03/24/riapt-meeting-no-porto-a-experiencia-conclusao-e-os-slides/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 22:07:54 +0000</pubDate>
		<dc:creator>Mauro Martins</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=701</guid>
		<description><![CDATA[Bem, já lá vai mais de uma semana que o Meeting do Porto decorreu. Posso dizer que, de início, pensamos em colocar um limite de 100 pessoas no evento, mas depois pensamos que a procura não iria ser muita, uma vez que no último encontro eramos apenas&#8230; três pessoas! No entanto, lá nos aventuramos em [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, já lá vai mais de uma semana que o Meeting do Porto decorreu.</p>
<p>Posso dizer que, de início, pensamos em colocar um limite de 100 pessoas no evento, mas depois pensamos que a procura não iria ser muita, uma vez que no último encontro eramos apenas&#8230; três pessoas!</p>
<p>No entanto, lá nos aventuramos em colocar o limite de 70 + 10 speakers e a aposta foi ganha! No final, e totalizando toda a gente, eramos 67 pessoas juntas no evento!</p>
<p>O que correu bem?</p>
<ul>
<li><strong>O almoço</strong></li>
</ul>
<p>- Eramos cerca de doze pessoas e foi interessante falar das expectativas sobre o evento, de conversar com pessoas com quem não tivemos hipótese de trocar ideias noutros eventos, etc. O lombo estava bom e mesmo a queimar as duas, lá conseguimos pagar todos e lá fomos para o local onde ia decorrer o evento.</p>
<ul>
<li><strong>O evento</strong></li>
</ul>
<p>- Como todos notaram, o evento começou com cerca de vinte minutos de atraso. Não havia problema se ninguém se esticasse nas apresentações (o que não foi o caso!).</p>
<p>- Uma coisa a referir foi o espírito de todos! Durante as cerca de cinco horas em que tivemos no edifício Maus Hábitos houve sempre um bom convívio, as piadas típicas dos apresentadores ao qual a plateia correspondia sempre com umas gargalhadas. O que dizer do Luís Martins que arranjou um milagroso projector porque o nosso era &#8220;esverdeado&#8221;.</p>
<ul>
<li><strong>O jantar</strong></li>
</ul>
<p>Depois de tantas horas no evento, que bem que soube comer umas belas pizzas de&#8230; 50 centímetros, no S. Marino! Eramos também cerca de doze pessoas e o convívio foi muito interessante, dando para trocar ideias e falar sobre o que se passou no evento, sobre as novas tecnologias, experiências que tenhamos tido, etc. Tudo acabou, por volta da uma da manhã no Rivolli, onde decorria o Fantasporto.</p>
<ul>
<li><strong>Conclusões</strong></li>
</ul>
<p>Como nunca nada corre perfeito, temos noção que houve várias falhas, mas todas elas devido à pouca experiência que os organizadores tinham em realizar eventos.</p>
<ol>
<li>O local &#8211; Embora o local fosse interessante, era notório a falta de condições para a projecção dos conteúdos através do projector. O facto de ter ficado muito escuro a partir do meio do evento, fez com que o público quase não conseguisse ver os speakers.</li>
<li>Talvez devêssemos ter apenas uma refeição em conjunto. Assim, podíamos tentar ter mais pessoas no mesmo espaço;</li>
<li>O controlo do tempo. Esta sim, uma falha um pouco grave, umas vez que perdemos completamente a noção do tempo;</li>
</ol>
<p><strong>Apresentações:</strong></p>
<p>Ainda não consegui que os vídeos ficassem todos disponíveis uma vez que temos limite, tanto no Vimeo, como no Youtube, de tempo para os vídeos (só dá para 10 minutos em cada).</p>
<p>No entanto, já podem ver o vídeo de introdução do evento <a title="intro riapt meeting porto" href="http://www.vimeo.com/10306292" target="_blank">aqui</a></p>
<p>Sendo assim, ficam aqui as apresentações que já nos foram facultadas pelos speakers. Quando me enviarem mais, actualizarei aqui o post</p>
<p><strong>Mauro Martins:</strong></p>
<p><a title="Web, construir é diferente de ver" href="http://www.slideshare.net/Mauredo/riapt-mm" target="_blank">Web &#8211; Construir é diferente de ver</a></p>
<p><strong>Nuno Gomes:</strong></p>
<p><a title="HTML 5, a realidade da utopia" href="http://docs.google.com/present/view?id=dcdk3w8w_19cbr65scc&amp;interval=5" target="_blank">HTML 5, a Realidade da Utopia</a></p>
<p><strong>Miguel Pinto:</strong></p>
<p><a title="Zend framework e flash" href="http://www.slideshare.net/lookatitude/flash-platform-zend-amf" target="_blank">Zend Framework e Flash</a></p>
<p><strong>Felipe Ávila:</strong></p>
<p><a title="The Usability Page" href="http://www.slideshare.net/guestca03209/usability-evolution" target="_blank">The Usability Page</a></p>
<p>Cumprimentos a todos, e preparem-se porque vêm aí mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2010/03/24/riapt-meeting-no-porto-a-experiencia-conclusao-e-os-slides/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RiaPT meeting no Porto!</title>
		<link>http://www.riapt.org/2010/02/08/riapt-meeting-no-porto/</link>
		<comments>http://www.riapt.org/2010/02/08/riapt-meeting-no-porto/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 10:33:23 +0000</pubDate>
		<dc:creator>rduartes</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Introduções]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=632</guid>
		<description><![CDATA[No próximo dia 6 de Março de 2010 vai-se realizar uma reunião do RiaPT no Porto. Vai ser um evento do tipo stand-up and speak com comunicações de elevado interesse com 20 minutos de duração cada para garantir que apenas temos "sumo"...]]></description>
			<content:encoded><![CDATA[<p><strong>6 de Março de 2010 o RiaPT vai voltar ao Porto!</strong></p>
<p>Marca desde já essa data na agenda e prepara-te para passar uma tarde bem disposta juntamente com pessoas que partilham contigo interesses e paixões pela Internet e não só!</p>
<p>Vamos ter speakers a abordar temas de elevado interesse da actualidade que te vão deixar com água na boca para aprender, explorar e procurar as inovações para o design e desenvolvimento das tuas aplicações!</p>
<p>O universo de desenvolvimento de aplicações web está em perfeita erupção! Não são só as tecnologias cliente, mas toda a &#8220;pilha&#8221; de desenvolvimento com as suas diversas tecnologias, linguagens e ferramentas está a ser posta em causa e cada um quer encontrar o seu nicho nesta realidade. Não perca esta oportunidade de ouvir alguns experts  portugueses na área do desenvolvimento de Rich Internet Applications.</p>
<p>Como se isto não fosse suficiente ainda vamos ter prémios para distribuir pelo pessoal que estiver a assistir que vão desde licenças de software a vouchers de cursos de formação e outros.</p>
<p><strong>Não percam! Dia 6 de Março, no Edifício &#8220;Maus Hábitos&#8221;, às 14:00, e sim, no Porto!</strong></p>
<p>Inscreve-te em: <a title="http://riapt.stagehq.com/events/182/booking/new" href="http://riapt.stagehq.com/events/182/booking/new" target="_blank">http://riapt.stagehq.com/events/182/booking/new</a></p>
<h3>Agenda</h3>
<table width="100%">
<tbody>
<tr>
<td>14:00</td>
<td>Abertura</td>
<td>Rui Silva, Mauro Martins</td>
</tr>
<tr>
<td>14:10</td>
<td>Zend Framework com Flash</td>
<td>Miguel Pinto</td>
</tr>
<tr>
<td>14:35</td>
<td>Web &#8211; Construir é diferente de ver!</td>
<td>Mauro Martins</td>
</tr>
<tr>
<td>15:00</td>
<td>Flex Decoupled &#8211; Build Strong from the Foundation</td>
<td>Vítor Monteiro</td>
</tr>
<tr>
<td>15:25</td>
<td>Balsamiq Mockups e Napkee: A arte de &#8220;rabiscar&#8221;</td>
<td>Rui Silva</td>
</tr>
<tr>
<td>15:50</td>
<td>Papervision 3D</td>
<td>João Crispim</td>
</tr>
<tr>
<td>16:10</td>
<td>Coffee Break</td>
<td>Networking</td>
</tr>
<tr>
<td>16:25</td>
<td>Make Web not War: A plataforma Microsoft</td>
<td>Luís Martins</td>
</tr>
<tr>
<td>16:50</td>
<td>Silverlight 101: Anatomia de uma Aplicação</td>
<td>Ricardo Castelhano</td>
</tr>
<tr>
<td>17:15</td>
<td>Swiz e Flex</td>
<td>João Fernandes</td>
</tr>
<tr>
<td>17:40</td>
<td>&#8220;HYPE&#8221;: Voltar à criatividade em Flash!</td>
<td>João Gonçalves</td>
</tr>
<tr>
<td>18:05</td>
<td>HTML5: A realidade da utopia</td>
<td>Nuno Gomes</td>
</tr>
<tr>
<td>18:30</td>
<td>Encerramento &#8211; Prémios</td>
<td>Rui Silva, Mauro Martins</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2010/02/08/riapt-meeting-no-porto/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Parte I &#8211; Flex, AIR &amp; SQLite</title>
		<link>http://www.riapt.org/2009/09/30/parte-i-flex-air-sqlite/</link>
		<comments>http://www.riapt.org/2009/09/30/parte-i-flex-air-sqlite/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 23:56:11 +0000</pubDate>
		<dc:creator>Mauro Martins</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=459</guid>
		<description><![CDATA[  Introdução: Esta é a primeira parte de uma série de três tutoriais que vou colocar sobre a integração de Flex com AIR e SQLite. A primeira (esta) vai centrar-se em uma breve introdução ao AIR com SQLite e vamos criar uma aplicação onde vamos adicionar uma base de dados local, inserir vários tipos de [...]]]></description>
			<content:encoded><![CDATA[<p><strong> </strong></p>
<p><strong><img class="alignnone size-full wp-image-491" src="http://www.riapt.org/wp-content/uploads/2009/09/adobe-air.jpg" alt="adobe-air" width="450" height="397" /></strong></p>
<p><strong>Introdução:</strong></p>
<p>Esta é a primeira parte de uma série de três tutoriais que vou colocar sobre a integração de Flex com AIR e SQLite. A primeira (esta) vai centrar-se em uma breve introdução ao AIR com SQLite e vamos criar uma aplicação onde vamos adicionar uma base de dados local, inserir vários tipos de dados e depois coloca-los directamente em uma datagrid em Flex.</p>
<p>A parte dois que será colocada mais tarde (estou a trabalhar nela) será centrada em criar uma form para adicionar dinamicamente informação à base de dados e em colocar várias tabelas a interagirem entre si em que a primeira tem dados e a segunda possui várias informações relativas aos items anteriores.</p>
<p>A terceira será depois a integração das chamadas da base de dados com itemClasses e também ValueObjects.</p>
<p>Espero que gostem! Mauro.</p>
<p><strong>Parte I</strong></p>
<p>Sem dúvida que se há uma coisa que o Adobe AIR tem de interessante é a capacidadede ser possível criar base de dados locais sem a necessidade de nenhum servidor local como o wamp ou semelhante e com extrema facilidade.</p>
<p>Ter a possibilidade de inserir, actualizar e retirar informação de uma estrutura de base de dados é sem dúvida mais fácil de gerir do que, por exemplo, a utilização de ficheiros de texto ou então ficheiros com estruturas em XML como por vezes acontece.</p>
<p>Este tipo de interactividade entre o Flex ou Flash com estas estruturas permitem-nos fazer relações entre várias tabelas, podendo assim associar facilmente dados que poderão estar organizados nas famosas sequências “one-to-many” (uma entrada na tabela TAB_1 tem várias entradas associadas na tabela TAB_2). Isto torna a injecção de dados em componentes de Flex ou Flash numa acção simples e quase directa.</p>
<p>Para começar a utilizar este tipo de estrutura e para podermos ter qualquer interacção com uma base de dados em SQLite através do AIR, são precisos ,no mínimo, três elementos: um ficheiro (base de dados), uma conexão e uma declaração (query).</p>
<p>Este tutorial vai ser constituído por três partes sendo a primeira mais simples, com criação, adição e preenchimento de uma dataGrid em Flex. A segunda parte do tutorial terá também relação entre mais que uma tabela na mesma base de dados (relações on-to-many) e mais tarde, vamos utilizar itemClasses para termos um mapeamento perfeito e mais correcto da nossa aplicação.</p>
<p><strong>Passando ao código..</strong></p>
<p>// Criamos uma variável que vai guardar a referencia ao nosso ficheiro de base de dados<br />
private var dbFile:File;</p>
<p>// Criamos uma nova conexão e abrimos o ficheiro que contem a base de dados<br />
private var conn:SQLConnection;</p>
<p>// Método init para iniciar as nossas variáveis e associar-lhes valores<br />
private function init () : void {<br />
    dbFile = File.applicationStorageDirectory.resolvePath(&#8220;employees.db&#8221;);<br />
    conn = new SQLConnection();<br />
    conn.open(dbFile);<br />
    createDataBase();<br />
    insertDataBase();<br />
    selectDataBase();<br />
}</p>
<p>// Primeiro criamos a nossa base de dados local<br />
private function createDataBase() : void<br />
{<br />
    // Criamos a variável que vai executar a nossa query, atribuimos a nossa conexão, e criamos a query para depois executar<br />
    var statement : SQLStatement = new SQLStatement();<br />
    statement.sqlConnection = conn;<br />
    statement.text = &#8220;CREATE TABLE employees (empId INTEGER PRIMARY KEY AUTOINCREMENT, empName VARCHAR(255))&#8221;;<br />
    statement.execute();<br />
}</p>
<p>Da mesma forma que é fácil criar uma base de dados, também é fácil adicionarmos conteúdo à mesma bastanto quase copiar o código anterior mudando apenas a nossa query.</p>
<p>private function insertDataBase():void<br />
{<br />
    var dbStatement:SQLStatement = new SQLStatement();<br />
    dbStatement.sqlConnection = conn;<br />
    dbStatement.text = &#8220;INSERT INTO employees (empName) VALUES (:empName)&#8221;;<br />
    dbStatement.parameters[ ":empName" ] = &#8220;António&#8221;;<br />
    dbStatement.execute();<br />
}</p>
<p>Agora que já temos conteúdo, podemos ir buscá-lo através de um SELECT à base de dados</p>
<p>private function selectDataBase():void<br />
{<br />
    var dbStatement:SQLStatement = new SQLStatement();<br />
    dbStatement.sqlConnection = conn;</p>
<p>    dbStatement.text = &#8220;SELECT * FROM employees&#8221;;<br />
    dbStatement.execute();</p>
<p>    // Se quiserem ver o resultado da vossa query&#8230;<br />
    var ac:ArrayCollection = new ArrayCollection(dbStatement.getResult().data);<br />
    var acLength : Number = ac.length;<br />
    for ( var i:uint; i &lt; acLength; i++ )<br />
    {<br />
        trace( ac[i].empId + &#8221; &#8211; &#8221; + ac[i].empName );<br />
    }</p>
<p>}<br />
Já temos aqui uma primeira base mas ainda nos falta controlar várias acções, nomeadamente controlar a execução dos eventos e ter a certeza que estes ocorrem correctamente e só acedemos aos dados quando estes são recebidos / inseridos na nossa aplicação.</p>
<p><strong>Exemplo:</strong></p>
<p>Passando para um exemplo mais concreto, temos, nesta parte I deste tutorial, uma lista de trabalhadores de uma empresa que está guardada em uma base de dados SQLite.</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:WindowedApplication xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221;<br />
                        layout=&#8221;absolute&#8221;<br />
                        creationComplete=&#8221;init()&#8221;&gt;</p>
<p>    &lt;mx:Script&gt;<br />
        &lt;![CDATA[<br />
            import mx.collections.ArrayCollection;</p>
<p>            // Variável que vai ter a informação para o array e que bind para a nossa datagrid<br />
            [Bindable]<br />
            private var empArray : ArrayCollection;</p>
<p>            // Variáveis de conexão<br />
            private var dbFile : File;<br />
            private var conn : SQLConnection;<br />
            private var dbStatement : SQLStatement;</p>
<p>            // Variáveis para controlar as nossas queries<br />
            private var empNames : Array = new Array( &#8220;António Amaro&#8221;, &#8220;Marco Silva&#8221;, &#8220;Luis Ribeiro&#8221;, &#8220;Salvador Mesquita&#8221;, &#8220;Lourenço Pinto&#8221;, &#8220;João Guimarães&#8221; );<br />
            private var empLoc : Array = new Array( &#8220;Financeira&#8221;, &#8220;Desenvolvimento&#8221;, &#8220;Recursos Humanos&#8221;, &#8220;Transportes&#8221;, &#8220;Desenvolvimento&#8221;, &#8220;Vendas&#8221; );<br />
            private var empTel : Array = new Array( &#8220;351&#8243;, &#8220;456&#8243;, &#8220;745&#8243;, &#8220;860&#8243;, &#8220;254&#8243;, &#8220;555&#8243; );<br />
            private var empPos : Number = 0;</p>
<p>            /**<br />
             * INIT<br />
             */<br />
            private function init() : void<br />
            {<br />
                // Criamos a referência para o nosso ficheiro<br />
                dbFile = File.applicationStorageDirectory.resolvePath( &#8220;employees.db&#8221; );</p>
<p>                // Criamos uma nova conexão que nos vai ligar à base de dados<br />
                conn = new SQLConnection();</p>
<p>                // Se a base de dados existe abrimos, senão criamos uma nova<br />
                // Dependendo da acção atribuimos diferentes listeners para invocarmos diferentes métodos<br />
                if ( !dbFile.exists )<br />
                {<br />
                    conn.addEventListener( SQLEvent.OPEN, connOpen );<br />
                } else<br />
                {<br />
                    conn.addEventListener( SQLEvent.OPEN, selectDataBase );<br />
                }<br />
                // Abrimos a base de dados<br />
                conn.open( dbFile );<br />
            }</p>
<p>            /**<br />
             * connOpen<br />
             */<br />
            private function connOpen( e : SQLEvent ) : void<br />
            {<br />
                // abriu a conexão, vai então criar a base de dados<br />
                createDataBase();<br />
            }</p>
<p>            /**<br />
             * createDataBase<br />
             */<br />
            private function createDataBase() : void<br />
            {<br />
                // Criamos a variável que vai executar a nossa query, atribuimos a nossa conexão, e criamos a query para depois executar<br />
                dbStatement = new SQLStatement();<br />
                dbStatement.sqlConnection = conn;<br />
                dbStatement.addEventListener( SQLEvent.RESULT, insertEmpNames, false, 0, true );<br />
                dbStatement.text = &#8220;CREATE TABLE employees (empId INTEGER PRIMARY KEY AUTOINCREMENT, empName VARCHAR(255), empLoc VARCHAR(255), empTel INTEGER)&#8221;;<br />
                dbStatement.execute();<br />
            }</p>
<p>            /**<br />
             * insertEmpNames<br />
             */<br />
            private function insertEmpNames( e : SQLEvent ) : void<br />
            {<br />
                // Depois de criada a base de dados vamos preencher informação<br />
                insertDataBase();<br />
            }</p>
<p>            /**<br />
             * insertDataBase<br />
             */<br />
            private function insertDataBase() : void<br />
            {</p>
<p>                dbStatement = new SQLStatement();<br />
                dbStatement.sqlConnection = conn;</p>
<p>                // Vamos inserindo novos elementos à base de dados até percorrermos todo o nosso array<br />
                if ( empPos &lt; empNames.length &#8211; 1 )<br />
                {<br />
                    dbStatement.addEventListener( SQLEvent.RESULT, insertEmpNames, false, 0, true );<br />
                } else<br />
                {<br />
                    dbStatement.addEventListener( SQLEvent.RESULT, selectDataBase, false, 0, true );<br />
                }</p>
<p>                // Agora vamos adicionar para cada campo, um objecto com o valor que queremos inserir na tabela<br />
                dbStatement.text = &#8220;INSERT INTO employees (empName, empLoc, empTel) VALUES (:empName, :empLoc, :empTel)&#8221;;<br />
                dbStatement.parameters[ ":empName" ] = empNames[ empPos ];<br />
                dbStatement.parameters[ ":empLoc" ] = empLoc[ empPos ];<br />
                dbStatement.parameters[ ":empTel" ] = empTel[ empPos ];<br />
                empPos++;<br />
                dbStatement.execute();</p>
<p>            }</p>
<p>            /**<br />
             * selectDataBase<br />
             */<br />
            private function selectDataBase( e : SQLEvent ) : void<br />
            {<br />
                dbStatement = new SQLStatement();<br />
                dbStatement.sqlConnection = conn;<br />
                dbStatement.addEventListener( SQLEvent.RESULT, attribDataGrid, false, 0, true );</p>
<p>                // Depois de inseridos todos os registos vamos seleccionar tudo que está na base de dados<br />
                dbStatement.text = &#8220;SELECT * FROM employees&#8221;;<br />
                dbStatement.execute();<br />
            }</p>
<p>            private function attribDataGrid( e : SQLEvent ) : void<br />
            {<br />
                // Vamos buscar o valor retornado pela base de dados e colocar directo num array collection<br />
                empArray = new ArrayCollection( dbStatement.getResult().data );<br />
            }<br />
        ]]&gt;<br />
    &lt;/mx:Script&gt;</p>
<p>    &lt;mx:Panel width=&#8221;100%&#8221;<br />
              paddingTop=&#8221;10&#8243;<br />
              paddingBottom=&#8221;10&#8243;<br />
              paddingLeft=&#8221;10&#8243;<br />
              paddingRight=&#8221;10&#8243;<br />
              title=&#8221;TRABALHADORES DA SOFT S.A.&#8221;&gt;</p>
<p>        &lt;mx:DataGrid width=&#8221;100%&#8221;<br />
                     dataProvider=&#8221;{empArray}&#8221;&gt;<br />
            &lt;mx:columns&gt;<br />
                &lt;mx:DataGridColumn headerText=&#8221;Nome&#8221;<br />
                                   dataField=&#8221;empName&#8221;/&gt;<br />
                &lt;mx:DataGridColumn headerText=&#8221;Departamento&#8221;<br />
                                   dataField=&#8221;empLoc&#8221;/&gt;<br />
                &lt;mx:DataGridColumn headerText=&#8221;Telefone&#8221;<br />
                                   dataField=&#8221;empTel&#8221;/&gt;<br />
            &lt;/mx:columns&gt;<br />
        &lt;/mx:DataGrid&gt;<br />
    &lt;/mx:Panel&gt;</p>
<p>&lt;/mx:WindowedApplication&gt;</p>
<p>Como podem ver, é bem simples criamos um sistema de base de dados que a cria, adiciona e mostra os resultados para uma datagrid. Como disse mais a cima, na parte dois do tutorial vamos avançar para relações entre várias tabelas na mesma base de dados para podermos associar a um só item de uma tabela, várias informações de outra.</p>
<p>NOTA: Se quiserem ir testando a criação dos ficheiros de base de dados e não conseguem porque a base de dados já está criada podem apagar &#8220;à mão&#8221; os ficheiros que ficam guardados no vosso computador.</p>
<p>WINDOWS: C:\Users\&lt;user&gt;\AppData\Roaming</p>
<p>MAC: &lt;user&gt;\Libraries\preferences\</p>
<p>Podem descarregar o projecto aqui:</p>
<p><a title="download" href="http://www.imauro.com/tutoriais/dbTutorial.zip" target="_blank">download do ficheiro</a></p>
<p>Para mais informações sobre SQLite no AIR:<br />
<a href="http://coenraets.org/blog/2008/02/sqlite-admin-for-air-10/" target="_blank">http://coenraets.org/blog/2008/02/sqlite-admin-for-air-10/</a><br />
<a href="http://livedocs.adobe.com/flex/3/langref/localDatabaseSQLSupport.html" target="_blank">http://livedocs.adobe.com/flex/3/langref/localDatabaseSQLSupport.html</a></p>
<p>Uma ferramenta muito boa para poderem ver o que vai acontecendo e a estrutura da vossa base de dados, eu aconselhava a instalarem o <a href="http://www.dehats.com/drupal/?q=node/58" target="_blank">Lita</a> que foi referenciado num anterior post meu sobre <a href="http://imauro.com/blog/?p=25" target="_blank">As melhores aplicações AIR para Designers e Developer</a>.</p>
<p>Até à próxima e espero que tenham gostado!</p>
<p>Mauro Martins.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2009/09/30/parte-i-flex-air-sqlite/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>cTIC 2009</title>
		<link>http://www.riapt.org/2009/04/30/ctic-2009/</link>
		<comments>http://www.riapt.org/2009/04/30/ctic-2009/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 11:50:40 +0000</pubDate>
		<dc:creator>João Fernandes</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIAPT]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=414</guid>
		<description><![CDATA[Terá lugar no próximo dia 13 de Maio de 2009 a cTIC 2009 com a seguinte agenda: 9:00 Sessão de Abertura Participantes convidados: Governador Civil de Viseu Presidente da Cãmara Municipal de Viseu Presidente do Instituto Politécnico de Viseu Presidente da Escola Superior de Tecnologia de Viseu Director do Departamento de Informática da ESTV Representantes [...]]]></description>
			<content:encoded><![CDATA[<p>Terá lugar no próximo dia 13 de Maio de 2009 a cTIC 2009 com a seguinte agenda:</p>
<p>9:00 Sessão de Abertura<br />
Participantes convidados:<br />
Governador Civil de Viseu<br />
Presidente da Cãmara Municipal de Viseu<br />
Presidente do Instituto Politécnico de Viseu<br />
Presidente da Escola Superior de Tecnologia de Viseu<br />
Director do Departamento de Informática da ESTV<br />
Representantes dos alunos dos cursos do DI</p>
<p>09:30 Sessão 1<br />
Rich Internet Applications – Uma visão Geral<br />
João Saleiro &#8211; RIaPT<br />
Potencialidades das RIA ao serviço da comunidade e das organizações<br />
Pedro Veloso &#8211; Areal Media<br />
Moderador: Rui Abrantes &#8211; Buzz-id</p>
<p>10:30 Coffee Break</p>
<p>10:45 Sessão 2<br />
Microsoft® Silverlight™ &#8211; Light up the Web<br />
Gonçalo Chaves &#8211; Microsoft Portugal<br />
ADIGITALBOOK (Adobe Flex e AIR )<br />
Rui Cruz &#8211; Areal Media<br />
Moderador: Professor Doutor Óscar Mealha</p>
<p>12:45 Almoço</p>
<p>14:00 Sessão 3<br />
Usabilidade em Contextos Multimédia e Web-based<br />
Professor Doutor Óscar Mealha &#8211; Universidade de Aveiro<br />
Projecto EZ Show (Adobe Flex e AIR )<br />
Rui Abrantes &#8211; Buzz-id<br />
Moderador: Nelson Batista</p>
<p>15:45 Coffee Break</p>
<p>16:00 Sessão 4<br />
Interactividade &#8211; Criar novas fronteiras<br />
Nelson Batista<br />
Segurança em Aplicações Web-based e em Rich Internet Applications<br />
Professor Doutor Carlos Serrão &#8211; ISCTE<br />
Moderador: João Saleiro &#8211; RIaPT</p>
<p>17:30 Sessão de Encerramento<br />
Director do Departamento de Informática da ESTV</p>
<p>As inscrições poderão ser feitas a partir <a href="http://ctic2009.estv.ipv.pt">daqui</a>.</p>
<div id="attachment_416" class="wp-caption aligncenter" style="width: 811px"><a href="http://www.riapt.org/2009/04/30/ctic-2009/div-ctic/" rel="attachment wp-att-416"><img src="http://www.riapt.org/wp-content/uploads/2009/04/div-ctic.jpg" alt="cTIC2009" title="div-ctic" width="700" height="450" class="size-full wp-image-416" /></a><p class="wp-caption-text">cTIC2009</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2009/04/30/ctic-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Flash Platform</title>
		<link>http://www.riapt.org/2008/11/18/the-flash-platform/</link>
		<comments>http://www.riapt.org/2008/11/18/the-flash-platform/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 10:26:03 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Introduções]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=389</guid>
		<description><![CDATA[A Adobe publicou ontem uma imagem muito interessante e elucidativa para representar o ecosistema da Flash Platform. Na imagem é possível ver o universo das ferramentas Adobe, e a forma como se interligam. À esquerda, a azul claro, temos as ferramentas de design: After Effects, Adobe Illustrator, Fireworks e Photoshop. Com estas ferramentas os designers [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<p style="text-align: left;">A Adobe publicou ontem uma imagem muito interessante e elucidativa para representar o ecosistema da <em>Flash Platform</em>. Na imagem é possível ver o universo das ferramentas Adobe, e a forma como se interligam.</p>
<p style="text-align: center;"><a href="http://www.riapt.org/wp-content/uploads/2008/11/picture-11.png"><img class="alignnone size-full wp-image-391" title="The Flash Plattorm" src="http://www.riapt.org/wp-content/uploads/2008/11/picture-11.png" alt="" width="500" height="352" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">À esquerda, a azul claro, temos as ferramentas de design: After Effects, Adobe Illustrator, Fireworks e Photoshop. Com estas ferramentas os designers podem criar o aspecto gráfico das aplicações / sites / experiências / etc, sendo este exportado num novo formato, o FXG. O <a href="http://opensource.adobe.com/wiki/display/flexsdk/FXG+1.0+Specification">FXG</a> é um novo formato da Adobe baseado em XML para representar elementos gráficos, e que é compatível com o universo que circunda a plataforma Flash.</p>
<p style="text-align: left;">A azul escuro temos as aplicações de desenvolvimento: o Flash IDE, Flash Catalyst (anteriormente conhecido por Thermo), e o Flex Builder. O Flash IDE e o Flex Builder são os nossos já velhos conhecidos, sendo o primeiro mais virado para Interaction Designers que procuram um IDE visual, e o segundo para developers que procuram um IDE virado para código. O Flash Catalyst é uma ferramenta que ficará no meio, entre o Flash e o Flex Builder que permitirá a Interaction Designers utilizar um ambiente gráfico e intuitivo para importar layouts feitos nas ferramentas de design, e convertê-los através de alguns cliques para aplicações, podendo ser adicionada interactividade. O resultado o Flash Catalyst é MXML (bem formado, segundo dizem) que depois é entregue aos developers para implementarem toda a parte dura do código. Segundo se diz, o Flash Catalyst pode também carregar MXML já alterado pelos developers (corrijam-me se estiver enganado), pelo que permitirá que ambas as equipas &#8211; developers e designers &#8211; possam trabalhar ao mesmo tempo, recorrendo a um source control. O Flash Catalyst está ainda a um ano de ser lançado em versão final, pelo que durante este período serão certamente disponibilizadas versões beta e de preview.</p>
<p style="text-align: left;">A cinzento, em cima, temos o Flex SDK, a framework de eleição para desenvolvimento de RIAs. É composta por um conjunto de componentes, e ferramentas que assentam em Actionscript 3, para desenvolvimento rápido de aplicações. O Flex SDK está actualmente na versão 3, mas a versão que se segue (nome de código: <a href="http://opensource.adobe.com/wiki/display/flexsdk/Gumbo">Gumbo</a>) vai trazer novidades absolutamente estontantes. Sendo open-source, é possível acompanhar o desenvolvimento do Gumbo, e inclusivé, fazer já aplicações com a actual versão. As milestones do Gumbo são:</p>
<ul>
<li>lançamento do MAX preview agora durante o MAX;</li>
<li>versões Beta 1 e Beta 2 na primeira metade de 2009 (aposto em Fevereiro e Maio);</li>
<li>versão final na segunda metade de 2009.</li>
</ul>
<p>As ferramentas acima &#8220;não fazem mais&#8221; que gerar ficheiros SWF que são depois interpretados e executados nos devidos runtimes: o Flash Player, que corre dentro do browser, e com limitações de acesso à máquina do utilizador (obviamente por motivos de segurança), e o Adobe Air, que permite que os SWFs possam ser instalados nos computadores dos utilizadores e correr como aplicações desktop, com acesso à maquina do utilizador como qualquer outra aplicação (i.e. leitura do disco, clipboard, etc). O Flash Player está neste momento na versão 10 que introduz uma panóplia de <a href="http://labs.adobe.com/technologies/flashplayer10/">funcionalidades</a> fantásticas: suporte nativo a 3D, FileReference local, suporte a filtros avançados (Pixel Bender), suporte avançado a texto, melhor performance com suporte a aceleração pela placa gráfica, etc.</p>
<p>De referir que os runtimes acima são compatíveis com os principais sistemas operativos, nomeadamente Mac, Windows e Linux &#8211; e a grande novidades do Max: graças ao <a href="http://www.openscreenproject.org/">Open Screen project </a>temos também o Flash Player 10 em Symbian, Windows Mobile, Wii, Playstation, etc.</p>
<p>As aplicações (SWFs) que assentam sobre os runtimes acima serão fat clients descarregados para as máquinas dos utilizadores (pelo browser, ou instalados com Adobe Air), e que poderão posteriormente comunicar com um servidor para trocar dados. Essa comunicação pode assentar em diversos protocolos e formatos, tais como simples texto, XML, SOAP (web-services), JSON, e AMF &#8211; o formato de dados em que assenta o Flash Remoting. Estes formatos podem ser trocados sobre HTTP ou HTTPs, Sockets, RTMP, entre outros.</p>
<p>Esta panóplia de formatos de comunicação permitem comunicar com quase todas as tecnologias server-side existentes no mercado, pelo que aplicações feitas em Flash são facilmente integráveis com plataformas existentes, sejam elas Adobe ou de terceiros. Da Adobe, temos os servidores especificamente criados para Flash: BlazeDS e Flash Media Server que introduzem funcionalidades de Data e Multimedia Streaming, entre outras. Depois temos os servidores ColdFusion e LiveCycle ES, de onde a minha funcionalidade favorita deste último é de longe o facto dos servidores poderem tomar a iniciativa de contactar os clientes e empurrar dados (i.e. dados dos clientes sincronizados automaticamente com o servidor). Apesar da Adobe fornecer as suas próprias soluções server-side, como dito acima aplicações Flash podem ser facilmente integradas com outras soluções de backend de entidades terceiras, como, PHP, JAVA, .NET, etc, desde que implementem algum dos protolocos de comunicação acima referidos. Como exemplos de plataformas, temos BEA, SAP, salesforce.com, WebSphere, Zend, etc.</p>
<p>Vendo esta imagem, é inevitável sentir orgulho de ter acreditado e escolhido um dia o caminho da plataforma Flash. Aquilo que começou um dia como uma ferramenta para adicionar animações a páginas Web, é hoje em dia a mais poderosa plataforma para criar aplicações distribuídas e interactivas. As nossas amigas RIAs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/11/18/the-flash-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial MVC no Flex; Entendendo a lógica.</title>
		<link>http://www.riapt.org/2008/11/06/tutorial-mvc-no-flex-entendendo-a-logica/</link>
		<comments>http://www.riapt.org/2008/11/06/tutorial-mvc-no-flex-entendendo-a-logica/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 12:58:12 +0000</pubDate>
		<dc:creator>MarioSantos</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=380</guid>
		<description><![CDATA[Como parte dos meus estudos para a Certificação Flex 3, estou a rever alguns pontos em que me sinto menos à vontade dentro do maravilhoso mundo do Flex. Vou começar por um ponto que ainda hoje reserva bastantes dificuldades de compreensão. Falo do MVC &#8211; Model, View, Controller. O MVC é um padrão quer de [...]]]></description>
			<content:encoded><![CDATA[<p>Como parte dos meus estudos para a Certificação Flex 3, estou a rever alguns pontos em que me sinto menos à vontade dentro do maravilhoso mundo do Flex. Vou começar por um ponto que ainda hoje reserva bastantes dificuldades de compreensão. Falo do MVC &#8211; Model, View, Controller.</p>
<p>O MVC é um padrão quer de desenho quer de arquitectura usando na construção de software. O uso deste padrão é muito vasto, e entende-se como o tratamento separado da lógica de programação e a interface grafica do proprio software que resulta numa enorme versatilidade da aplicação que torna muito mais facil modificar o aspecto visual da aplicação ou o código sem criar dependencias/afectação entre eles lidando facilmente com a comunicação entre utilizador, interface gráfica e o código da nossa aplicação.</p>
<p>Entendendo as siglas;</p>
<ul>
<li><strong>Model</strong> &#8211; Representa a informação / dados da aplicação e as &#8220;regras/definições&#8221; para manipular / trabalhar com esses mesmos dados da aplicação. No flex, geralmente class pessoais ou classes de serviços para lidar com um backend.</li>
<li><strong>View</strong> &#8211; Representa os elementos gráficos da nossa aplicação, como inputText, datagrid, textArea, no flex engloba states, viewstacks, em resumo, todos os componentes gráficos.</li>
<li><strong>Controller</strong> &#8211; Representa o tipo de controlo/detalhes que envolvem a comunicação com o Model (Dados e definições) e o View (Interfaces gráficas) estes detalhes resultam da lógica de comunicação entre o Model e o View e normalmente representam também a interacção com o utilizador.</li>
</ul>
<p>Este padrão MVC foi adaptado por centenas de frameworks, e o Flex não escapou à adaptação sendo que o principal objectivo de uso deste MVC no Flex é a simplicidade e re-utilização do código criando componentes bem definidos que permitem a obtenção de uma enorme versatilidade de todos os eles, bem como uma fácil cominicação entre os mesmo componentes, sem falar numa optimização do desempenho da nossa aplicação.</p>
<p>Ao criarmos um aplicação sem nos preocuparmos com este padrão teremos uma agradavel supresa no final de a termos terminado. O próprio Flex / Framework já está baseada nesta arquitectura e possui mesmo os seu proprio padrão MVC definido, como os componentes que definem a interface do utilizador, os modelos de apresentação de dados e os componentes responsaveis pelo controlo de dados como interacções com linguagens back-end.</p>
<p>Tentar entender este processo no ambito do flex pode ser muito complicado, mas vamos colocar um caso lógico que explica muitas das operações do flex:</p>
<p><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/11/mvc.png"><img class="aligncenter size-full wp-image-723" src="http://msdevstudio.com/blog/wp-content/uploads/2008/11/mvc.png" alt="" width="400" height="300" /></a></p>
<p>Onde estruturamos devidamente os elementos e acções deste modelo:</p>
<p><em><strong>Model:</strong></em></p>
<ul>
<li>Usando action script, definindo como estrutura de class.</li>
<li>Geralmente são usadas varias classes para simplificação de objectivos de cada uma que englobam:</li>
<li> &#8212; Classes de dados nativas</li>
<li> &#8212; Serviços de comunicação com back-end</li>
<li> &#8212; No AIR, classes para lidar com chamadas como o SQLite</li>
</ul>
<p><em><strong>View :</strong></em></p>
<ul>
<li>Todas as views são componentes gráficos do flex</li>
<li>Tem como principal objectivo lidar com o layout da aplicação e disparar eventos para o controller</li>
<li>Não acedem a dados directamente, apenas usam dados de eventos, dataProviders ou propriedades publicas / databinds</li>
<li>São geralmente componentes escritos em MXML</li>
</ul>
<p><em><strong>Controller :<br />
</strong></em></p>
<ul>
<li>Pode existir mais que um, embora apenas seja necessário em aplicações muito complexas.</li>
<li>É usado como ponte entre o View e o Model visto que estes 2 não podem comunicar entre si directamente. Algumas propriedades / funções :</li>
<li> &#8212; Definir dataproviders</li>
<li> &#8212; Chamadas para o Model</li>
<li> &#8212; Lidar com eventos do View</li>
<li> &#8212; Alternar entre views</li>
<li>Não são necessáriamente Action Script, no flex os arquivos MXML podem ser elementos &#8220;Controladores&#8221;</li>
</ul>
<p><span style="underline;">O Padrão MVC não se trata de um programa, formula ou função</span>, trata-se sim de uma forma de organização de código permitindo esta &#8220;triologia&#8221; de funcionamento; criando uma class controlador que recebe/lida com dados de um conjunto de classes (model) e que faz a devida actualização da nossa interface grafica/componentes (view).</p>
<p>Claro que esta explicação pode ser mal entendida e perdoem-me os experts no padrão MVC, mas basicamente é isto que é feito claro que com alguns pontos e detalhes como vimos em cima.</p>
<p>Este tipo de implementações têm varias variantes, podendo nós, devidamente estruturado, criar um padrão MVC para estruturar a nossa aplicação, embora a Adobe disponibilize o Cairngorm que simplifica muito a aprendizagem pincipalmente com exemplos de muitos sites. A sua instalação é muito simples e o seu uso e aprendizagem também. Uma grande referencia em Cairngorm é o blog o David Tucker:</p>
<p><a href="http://www.davidtucker.net/category/cairngorm/">http://www.davidtucker.net/category/cairngorm/</a></p>
<p>Façam download dos videos e exemplos e facilmente verão do que falo.</p>
<p>Bem, na estrutura do exame Flex 3 este é um dos pontos: &#8220;List and describe de differences between model, view and controller in a Flex application&#8221;, que nos pede para explicar as diferenças apontadas em cima.</p>
<p>Bem, por agora é tudo&#8230; fiquem com alguns pontos de referencia do meu estudo sobre MVC.</p>
<p><a href="http://cristobal.baray.com/indiana/projects/mvc.html">http://cristobal.baray.com/indiana/projects/mvc.html</a> (recomendo vivamente)</p>
<p><a href="http://www.wonderhowto.com/how-to/video/how-to-install-cairngorm-in-adobe-flex-3-and-use-mvc-255356/">http://www.wonderhowto.com</a></p>
<p><a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=anatomy_010_04.html">http://livedocs.adobe.com/</a></p>
<p><a href="http://www.iteratif.fr/blog/index.php?post/2008/04/29/Une-implementation-du-modele-MVC-sous-Flex-A-implementation-of-model-MVC-on-Flex">http://www.iteratif.fr/blog/</a></p>
<p>Abraço e pelo menos espero ter esclarecido alguém, e já agora, alguém com uma opinião ??</p>
<p>Post originalmente colocado em: <a href="http://www.msdevstudio.com" target="_blank">http://www.msdevstudio.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/11/06/tutorial-mvc-no-flex-entendendo-a-logica/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IDE Factory: tornando o Flex Builder mais eficiente</title>
		<link>http://www.riapt.org/2008/09/18/ide-factory-tornando-o-flex-mais-simples/</link>
		<comments>http://www.riapt.org/2008/09/18/ide-factory-tornando-o-flex-mais-simples/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 12:46:12 +0000</pubDate>
		<dc:creator>MarioSantos</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[IDE Factory]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=343</guid>
		<description><![CDATA[Que o Flex Builder é meio caminho andado para acelerar a construção das nossas RIAs todos sabemos, mas existem alguns truques a que podemos recorrer para optimizar o código como classes bem construídas e documentadas entre muitas outras coisas. Vou ser sincero e dizer que apenas recentemente me comecei a preocupar mais com isso, simplesmente [...]]]></description>
			<content:encoded><![CDATA[<p>Que o Flex Builder é meio caminho andado para acelerar a construção das nossas RIAs todos sabemos, mas existem alguns truques a que podemos recorrer para optimizar o código como classes bem construídas e documentadas entre muitas outras coisas.</p>
<p>Vou ser sincero e dizer que apenas recentemente me comecei a preocupar mais com isso, simplesmente porque as aplicações que desenvolvia em Flex eram necessariamente pequenas em termos de complexidade. Mas as coisas alteraram-se no desenvolver de um frontend para uma imobiliaria onde tenho um uso acrescido de base de dados bem como a necessidade de uma resposta rápida quer das classes, quer do backend.  Estando quase no final deste projecto analisei todo o código e percebi que tinha algum lixo e muitos comentários e foi então que decidi dar uma limpeza e optimizar as suas classes&#8230; aqui chega a questão: como o fazer ??</p>
<p>Foi na minha procura por uma solução que tropecei com o IDE Factory e posso afirmar que, apesar de não usar metade das suas funções, encontrei uma pérola. Vamos à explicação&#8230;</p>
<table border="0" width="100%">
<tbody>
<tr>
<td width="80%">O IDE Factory é um plugin para o Eclipse / Flex Builder, que lhe acrescenta um menu com uma dezena de opções que são um &#8220;must have&#8221; para todos os &#8220;programadores&#8221; Flex.</p>
<p>De entre muitas opções existem algumas que me pouparam bastante tempo, das quais destaco uma que ilustra perfeitamente o que de melhor esta IDE Factory pode fazer por nós. Depois de instalada, mudei para a view Enterprise IDE e aí foi ver melhoramentos atrás de melhoramentos, além do Flex Package Explorer, Hierarchy Explorer e do Cairngorm Service Explorer no introduz um novo conceito de criar serviços, packages ou componentes, clicando no botão new aparece o agradável menu ao lado onde podem ver uma lista do que a IDE têm para oferecer. Além dos conhecidos ActionScript Class e MXML Component aparecem algumas novidades, como Action Script Interface, Model Locator, Service Locator, Responder, etc&#8230; Uma lista de coisas que se devem ter sempre à mão.</td>
<td><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/09/ide_1.png"><img class="alignright size-full wp-image-620" src="http://msdevstudio.com/blog/wp-content/uploads/2008/09/ide_1.png" alt="IDE Factory" width="174" height="285" /></a></td>
</tr>
</tbody>
</table>
<table border="0" width="100%">
<tbody>
<tr>
<td width="80%">Clicando no Action Script Class é-nos apresentado o mesmo wizard que pela via normal, mas com algumas opções extra, que estão dentro do menu intitulado Code generation (Humm&#8230; como gosto desta palavra..) como podem ver pela imagem ao lado.</td>
<td><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/09/ide2.png"><img class="alignleft size-full wp-image-621" src="http://msdevstudio.com/blog/wp-content/uploads/2008/09/ide2.png" alt="" width="344" height="170" /></a></td>
</tr>
</tbody>
</table>
<table border="0" width="100%">
<tbody>
<tr>
<td width="80%">Alem desta novidade o melhor está para vir, cliquem em &#8220;Next&#8221; e agora é que começa o divertimento, como podem ver o wizard apresenta-se com 2 secções, a das Propertys e das Functions, no meu exemplo (org.riapt.teste) vou criar algumas variaveis e uma função, esperimentem fazer como no ecra seguinte, colocando os mesmos valores ou os vossos proprios valores. Como podem ver, este ecra permite criar variaveis na nossa class bem como definir o seu tipo, sedesejamos getter&#8217;s ou setter&#8217;s, bem como inserir funções.</p>
<p>Isto resume em muito o nosso trabalho, não agora que perdemos algum tempo mas vão reparar na verdadeira utilidade clicando em &#8220;Finish&#8221;, agurardem uns segundos e vejam a vossa class que se irá abrir, além das nossas variaveis devidamente colocadas, temos já as funções get e set da variavel input bem como as funções da instancia e a nossa função str64encode devidamente definida, ora temos a nossa class devidamente estruturada, com comentários e espaços já definidos para a documentação da nossa class&#8230;</td>
<td><a href="http://msdevstudio.com/blog/wp-content/uploads/2008/09/ide3.png"><img class="alignleft size-medium wp-image-622" src="http://msdevstudio.com/blog/wp-content/uploads/2008/09/ide3-300x285.png" alt="" width="300" height="285" /></a></td>
</tr>
</tbody>
</table>
<p>E agora é só preocupar-mo-nos com o que realmente interessa: a nossa programação.</p>
<p>Além destas novidades existem muita outras por explorar neste fantástico IDE Factory, como a criação automática de expressões e4x para lidar com um xml, bastando indicar o xml e o wizard faz o resto mostrando a expressão que deve ser usada para aceder a qualquer elemento do nosso xml, bem como o resultado em tempo real. Temos ainda o &#8220;Format Project Source Files&#8221; que nos altera (cria um back automatico) as nossas classes optimizando o código para os standards AS3 ou o Generate Java Classes from AS Value Objects que num instante cria as nossas classes.</p>
<p>Posso adiantar que esta IDE está cheia de surpresas muito agradáveis e que além de seguirmos os parâmetros de programação ideais nos simplifica muito o trabalho. Experimentem, usem e abusem.</p>
<p>A instalaçâo deste plugin é muito simples, bastando no Flex Builder / Eclipse irem ao menu:</p>
<p>Help-&gt;Software Updates-&gt;Find and install -&gt; Search for new features for install -&gt; New Remote Site e coloquem Enterprise IDE e no link: http://www.idefactory.com/update -&gt; ok.</p>
<p>Devem então ter o novo remote site, clicam em finish e depois irá aparecer o Enterprise IDE. Seleccionem-no, façam o download e prossigam com a instalação. No final reiniciem o Flex Builder / Eclipse e vejam o novo menu no topo &#8220;Enteprise IDE&#8221; e uma nova view &#8220;Enterprise IDE&#8221;.</p>
<p>Garanto que vale bem a pena, apesar de ser mais orientado para programadores com alguma experiencia também é de facil compreensão por parte dos mais novatos.</p>
<p>Site Oficial: http://www.idefactory.com</p>
<p>Deixem as vossas impressões e primeiras experiências.</p>
<address><em>Post publicado paralelamente no <a href="http://www.msdevstudio.com" target="_blank">tsw</a> e <a href="http://riapt.org" target="_blank">riapt</a></em><br />
</address>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/09/18/ide-factory-tornando-o-flex-mais-simples/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Artigo sobre Rich Internet Applications na revista Invest</title>
		<link>http://www.riapt.org/2008/08/08/artigo-sobre-rich-internet-applications-na-revista-invest/</link>
		<comments>http://www.riapt.org/2008/08/08/artigo-sobre-rich-internet-applications-na-revista-invest/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 10:57:11 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Exemplos]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Formação]]></category>
		<category><![CDATA[Introduções]]></category>
		<category><![CDATA[RIAPT]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=289</guid>
		<description><![CDATA[Há cerca de dois meses fui contactado pelo David Sousa da revista Invest para dar uma entrevista sobre Rich Internet Applications. Essa entrevista serviria de base para que construissem um artigo que saiu no número deste mês, e que passei a scanner e coloquei abaixo (clique para ampliar): Só tive acesso ao artigo após ter [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Há cerca de dois meses fui contactado pelo David Sousa da <a href="http://www.revista-invest.com">revista Invest</a> para dar uma entrevista sobre Rich Internet Applications. Essa entrevista serviria de base para que construissem um artigo que saiu no número deste mês, e que passei a scanner e coloquei abaixo (clique para ampliar):</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://www.riapt.org/wp-content/uploads/2008/08/invest.jpg"><img class="size-medium wp-image-290 alignnone" title="invest" src="http://www.riapt.org/wp-content/uploads/2008/08/invest-300x230.jpg" alt="" width="300" height="230" /></a></p>
<p style="text-align: center;">
<p>Só tive acesso ao artigo após ter dado entrada na gráfica, pelo que, na minha opinião, há algumas passagens que poderiam ter ficado mais precisas &#8211; nomeadamente, ser referida a Microsoft e não ser referida a Adobe (!!!), dar em alguns pontos a sensação de que as RIAs são gratuítas, e confundir-se algumas características que pertencem geralmente às Web Applications como características das RIAs. Ainda assim o artigo refere e bem a importância das RIAs para o negócio.</p>
<p>Coloco abaixo a entrevista original, que é mais específica e pormenorizada, podendo ser muito útil para elucidar algumas questões mais ligadas ao negócio que são feitas habitualmente por quem quer saber mais sobre o assunto. Curiosamente, estas são as questões que me são habitualmente feitas pelos clientes. Recordo que a entrevista não foi feita para publicação mas sim para ajudar o autor do artigo, pelo que poderão haver algumas &#8220;gralhas&#8221; de português.</p>
<p style="text-align: center;">
<h2 style="text-align: left;">A entrevista original</h2>
<p style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>1- O que são as aplicações RIA?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Rich Internet Applications são aplicações com um interface gráfico, funcionalidades e interacção semelhantes ao de uma aplicação desktop, tal como o Microsoft Word, mas que correm dentro do web-browser. Imagine que não precisaria de instalar o Microsoft Word, sendo que para o usar bastaria abrir um endereço no seu web-browser. O endereço <a class="EC_moz-txt-link-freetext" href="http://www.buzzword.com/" target="_blank">http://www.buzzword.com/</a> pode ser tomado como um exemplo de um processador de texto colaborativo no formato RIA.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><strong> </strong><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>2- Porque surgiram estas aplicações?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Este tipo de aplicações surgiu de uma evolução natural do software. Hoje em dia queremos aceder aos nossos dados e aplicações de qualquer local, dispositivo, e sistema operativo. Queremos simplicidade, não ter que passar pelo processo de instalação de software nem termos que nos preocupar com manutenção. Numa empresa, por exemplo, é penoso ter que instalar software em centenas ou milhares de computadores, dar manutenção, fazer actualizações, e por aí adiante &#8211; implica elevados custos, e demasiado tempo perdido. Daí as empresas hoje em dia terem convergido para o modelo de &#8220;Web-Application&#8221; &#8211; aplicações baseadas em html que correm remotamente sem terem que ser instaladas nos terminais. Infelizmente, as web-applications apesar de práticas possuem limitações a nível de interface gráfico e funcionalidades, sendo complicado imitar a interacção e objectividade do software desktop. As RIAs são no fundo o próximo passo: pegar no melhor das aplicações Web e das aplicações Desktop e juntar num único conceito.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><strong><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;">3- Quais os seus objectivos principais?</span></span></span></span></strong></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">As RIAs objectivam o mesmo que qualquer outra solução de software: resolver problemas. O cliente tem um problema, e precisa de uma solução. Essa solução pode ser desenvolvida no modelo &#8220;Desktop Application&#8221;, no modelo &#8220;Web Application&#8221;, e agora no modelo &#8220;RIA&#8221;. Portanto a nível de requisitos funcionais, os objectivos são os mesmos: resolver os problemas de negócio.<br />
Porém, no que toca aos requisitos não funcionais &#8211; que se prendem com as características tecnológicas das aplicações &#8211; pretende-se com as RIAs disponibilizar software acessível de qualquer local e computador com ou sem restrições de segurança sendo dado especial destaque ao Interface Gráfico e interacção com o utilizador com vista a que o software seja o tão fácil de usar quanto possível. Regra geral é desdenhada a importância do interface gráfico e simplicidade de utilização, sendo esse um dos primeiros pontos que os clientes cortam no investimento &#8211; porém, surge a questão: de que serve software que funciona se ninguém o souber usar eficientemente?<br />
Outra característica comum nas RIAs é que facilitam a colaboração: é possível que várias pessoas trabalhem sobre os mesmos dados ao mesmo tempo. Este é por exemplo o principal ponto forte do Buzzword: permite que várias pessoas estejam a trabalhar sobre o mesmo documento, algo que actualmente com o Microsoft Word não é possível.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>4- Quem produz essas aplicações (empresas estrangeiras, portuguesas)? Há empresas a trabalhar exclusivamente nelas?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Sobretudo empresas estrangeiras. Posso referir com convicção a Cynergy Systems (<a class="EC_moz-txt-link-freetext" href="http://www.cynergysystems.com/" target="_blank">http://www.cynergysystems.com/</a>), líder mundial na matéria, a Fantasy Interactive, mais dotada no lado criativo (<a class="EC_moz-txt-link-freetext" href="http://www.fantasy-interactive.com/" target="_blank">http://www.fantasy-interactive.com/</a>) e a EffectiveUI (<a class="EC_moz-txt-link-freetext" href="http://www.effectiveui.com/" target="_blank">http://www.effectiveui.com/</a>).<br />
Em Portugal o conceito ainda é recente, e só agora se começa a ver algum interesse &#8211; em parte, um pouco graças aos <a class="EC_moz-txt-link-abbreviated" href="../" target="_blank">www.riapt.org</a>. Sei que existem algumas consultoras interessadas em apostar na matéria devido a contactos regulares que tenho recebido com questões sobre as tecnologias de desenvolvimento, procurando por técnicos especializados, ou solicitando a minha disponibilidade para dar formação e prestar serviços.<br />
Enquanto estive em Madrid no Adobe onAir Tour &#8211; um evento sobre o assunto &#8211; conheci a Buzz-ID (<a class="EC_moz-txt-link-freetext" href="http://www.buzz-id.com/" target="_blank">http://www.buzz-id.com/</a>), uma PME portuguesa que começa a dar cartas interessantes nesta matéria. No meu caso pessoal, comecei em 2005 a reunir esforços para criar uma equipa especializada na matéria &#8211; a <a href="http://www.webfuel.pt">Webfuel</a>. Nestes dois anos estivemos essencialmente a reunir o know-how, a definir workflows e a preparar-mo-nos para o mercado. <span style="text-decoration: line-through;">Neste momento falta simplesmente o &#8220;clique&#8221; &#8211; os clientes e projectos certos &#8211; para o arranque definitivo.</span> (<em>Neste momento já demos o clique e já ninguém nos pára </em>)</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>5- A quem se destinam estas aplicações?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Estas aplicações são como quaisquer outras aplicações, portanto o destinatário é simplesmente qualquer utilizador de software que precise de uma ferramenta para o ajudar em algo. As RIAs podem portanto destinar-se ao end-user &#8211; que precisa por exemplo de ferramentas de manipulação de imagem, de processamento de texto, de agregração de informação, colaboração, etc &#8211; ou ao negócio em si &#8211; qualquer aplicação de business intelligence. Obviamente que os principais interessados serão aqueles que querem tirar partido do facto de não terem que instalar as aplicações podendo usá-las a partir de qualquer local e dispositivo mas sem se quererem limitar à típica &#8220;web application&#8221; baseada em HTML. Muitas empresas estrangeiras que trabalham com SAP começaram a desenvolver a camada de front-end das suas aplicações em tecnologias de desenvolvimento de RIAs &#8211; como o Adobe Flex -, integrando com os backends SAP existentes. A título de curiosidade, a SAP disponibiliza um livro exactamente sobre a integração com o Adobe Flex, e aborda os conceitos de RIA: <a class="EC_moz-txt-link-freetext" href="http://www.sappress.com/product.cfm?account=&amp;product=H1951" target="_blank">http://www.sappress.com/product.cfm?account=&amp;product=H1951</a></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><strong><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;">6- Quanto custa a sua criação?</span></span></span></span></strong></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Em termos de negócio, a diferença de uma RIA para outra aplicação reside sobretudo na camada de front-end. O investimento no backend é exactamente o mesmo, sendo que este simplesmente irá expôr os seus serviços tal como anteriormente na forma de Web-Services ou outra solução de comunicação (como o Flash Remoting). O investimento adicional é feito sobre a camada de front-end que implica colocar na equipa de desenvolvimento especialistas em design, interaction design, usabilidade e user experience. Porém, face ao custo total das aplicações habituais, o investimento adicional é ligeiro, facilmente suportável e perfeitamente justificado.</p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"><br />
</span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>7- Qual o lucro/retorno que as empresas que criam estas aplicações obtêm ou esperam obter?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">O ROI não é sobretudo dirigido a quem desenvolve o software, mas a quem o usa. As empresas que criam estas aplicações não são diferentes das outras empresas de desenvolvimento de software. Simplesmente, investiram numa área de ponta, inseriram na sua equipa criativos e especialistas nas plataformas de RIAs, de forma a desenvolver software que resulta na satisfação do cliente pela sua simplicidade de adopção e utilização.<br />
Porém, empresas de desenvolvimento que criem as suas próprias aplicações genéricas podem usufruir de um novo modelo de negócio de distribuição de software denominado de &#8220;pay-per-use&#8221;. Ao invés de venderem um pacote que o cliente tem que comprar e instalar no seu computador, simplesmente disponibilizam a aplicação na Internet que pode ser usada através de um fee mensal, anual ou simplesmente pontual. (<em>Faltou referir o modelo de negócio <a href="http://en.wikipedia.org/wiki/Software_as_a_Service">Software as a Service</a></em>). A manutenção é feita simplesmente actualizando a aplicação no servidor central, sendo benéfico para quem desenvolve e para quem usa. Obtém-se um modelo de negócio mais fácil de gerir, e mais justo para ambas as partes. Uma vantagem que interessa realçar é que neste modelo não é possível piratear software. O que o utilizador compra é um acesso periódico à aplicação, pelo que a única hipótese para um pirata é roubar o acesso a outra pessoa.</p>
<p class="EC_MsoNormal" style="text-align: left;">Em certos casos específicos, também se pode adoptar um modelo de negócio de revenue-sharing, em que a empresa que desenvolve recebe parte dos lucros que a empresa que utiliza gera através do produto de software.<br />
Outro modelo de negócio que não acho tão interessante, é a remuneração por publicidade, em que são colocados anúncios no meio da aplicação. Porém, é uma solução que a meu ver apenas se justifica em aplicações relacionadas com redes sociais online, e que para o negócio em si não faz sentido nenhum.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>8- Que género de aplicações vão ser reformuladas para o formato RIA?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Quaisquer aplicações que não estejam dependentes das limitações da largura de banda actual, ou das restrições de segurança dos plugins das tecnologias em que se baseiam as RIAs. A título exemplificativo, podemos ir desde backoffices, CRMs, aplicações B2B, B2C às simples aplicações e ferramentas destinadas ao end-user, como processadores de texto, folhas de cálculo ou editores de imagem.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>9- Quais as vantagens/desvantagens deste tipo de aplicações para as empresas clientes?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">O custo de instalação de software desktop em centenas ou milhares de computadores é alto. No caso das aplicações empresariais, temos uma redução drástica no custo de deployment, na medida em que basta colocar a aplicação num servidor HTTP, e a partir daí milhares de terminais ficam com a aplicação disponível através do web-browser.  Além de que, ao se eliminar o passo do deployment, também se obtém um time-to-market muito menor, diminuindo o gap desde o momento em que se fechou o desenvolvimento até ao momento de início da sua utilização em ambiente de produção.<br />
Na manutenção consegue-se novamente obter uma redução drástica de custos, visto que basta dar manutenção a um único ponto: o servidor HTTP onde é disponibilizada a aplicação. Ao actualizar essa aplicação, actualiza todos os clientes &#8220;em simultâneo&#8221;.</p>
<p class="EC_MsoNormal" style="text-align: left;">Quanto à sua utilização, o facto de regra geral serem dotadas de melhores interfaces gráficos resulta numa maior produtividade por parte dos seus utilizadores que se sentem mais confortáveis com a aplicação. Outra ponto que interessa realçar é que as RIAs são muito mais eficientes que as típicas web-applications no que toca à troca de informação com o servidor, obtendo-se tempos de espera muito menores.</p>
<p class="EC_MsoNormal" style="text-align: left;">Imaginemos por exemplo uma aplicação de B2B de gestão de stocks e encomendas. Um distribuidor pretende que os retalhistas com quem trabalha possam usar uma aplicação do distribuidor para fazer reposição de stocks. Se essa aplicação for uma RIA o distribuidor terá somente que entregar ao retalhista o URL da aplicação, com as respectivas credenciais de acesso. O retalhista simplesmente terá que utilizar o seu web-browser para abrir a aplicação, fazer o login, e utilizá-la. Isto é algo que acontece actualmente com as aplicações web, mas no caso das RIAs o retalhista irá usar algo que é realmente uma aplicação, com um interface gráfico e interacção em tudo idênticos ao software desktop, e não um conjunto de páginas HTML que se assemelham a uma aplicação.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>10- Como é feito o controlo de acesso e a segurança às redes RIA?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Os sistemas de controlo de acessos e a segurança são em tudo idênticas às actuais aplicações Web. Os paradigmas e preocupações são exactamente os mesmos, pelo que não há alteração nem no investimento nem no know-how necessário. Qualquer aplicação distribuída, seja ela desktop, web, ou ria, que troque dados num canal deverá garantir que esse canal é seguro através de algumas técnicas habituais &#8211; como o https.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>11- Não há riscos acrescidos de pirataria informática e uma espécie de terrorismo financeiro (caso haja bases de dados financeiras disponíveis na rede)?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Não mais que o risco actualmente existente quando utiliza um sistema de home-banking, como o CaixaDirecta. Porém, é natural que com a proliferação das aplicações RIAs surjam empresas com lacunas a nível de desenvolvimento e segurança e seja complicado para o utilizador distinguir se deve confiar nessa empresa/aplicação ou não. Mas como sabe que pode confiar no seu sistema de home-banking?  Os riscos dependem sobretudo da seriedade e experiência da equipa de desenvolvimento, e do investimento que foi feito em segurança.</p>
<p style="text-align: left;">No caso de aplicações críticas, estas podem e devem ser colocadas a correr em ambientes controlados, em que a aplicação está acessível somente dentro da rede da empresa. O acesso externo poderá ser concedido em condições especiais, como por exemplo, VPN&#8217;s, ou a partes limitadas do sistema consoante as credenciais do utilizador.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><strong><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;">12- Como irá funcionar a utilização destas aplicações? </span></span></span></span></strong></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"><br />
</span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">Simples: abre o seu browser, que regra geral vem equipado com um plugin como o Adobe Flash Player ou Microsoft Silverlight e coloca o endereço da aplicação. Por vezes pode ser necessário fazer um login, mas a partir daí a utilização da aplicação será em tudo idêntica à utilização do seu software habitual. Existem algumas pequenas limitações nos plugins que raramente se notam, mas independentemente disso estou convicto que até ao final deste ano até essas limitações estarão completamente ultrapassadas. (<em>Falava do <a href="http://labs.adobe.com/technologies/flashplayer10/">Flash Player 10</a></em>)</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>13- É sabido que algumas das aplicações são open-source e outras são pagas. Como são definidas as que terão custos e o que as tornam pagas?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Cabe a quem desenvolve tomar essa decisão. Tem exclusivamente a ver com o modelo de negócio escolhido, e com as vantagens e desvantagens dos modelos de licenciamento de software aberto ou fechado. Há casos em que o software open-source é completamente justificado. Por exemplo, a empresa decide disponibilizar gratuitamente o código fonte sendo as receitas geradas pelo suporte e formação. Ou ainda, porque desenvolveu um produto para optimizar o seu negócio (i.e. as receitas são resultantes do negócio e não da venda do software), e acha que se disponibilizar o código fonte do seu produto este irá melhorar com o tempo graças à participação de outras pessoas, resultando consequentemente numa mais valia para o seu negócio que se torna mais eficiente à medida que o software é melhorado.</p>
<p class="EC_MsoNormal" style="text-align: left;">Porém, está é uma questão que não é inerente às RIAs, mas a qualquer tipo de software.</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>14- O que se espera do mercado das aplicações desktop? Vai entrar em falência?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">Não acredito. Simplesmente vai ter que se adaptar a uma nova realidade, em que o destaque está nos dados e não na aplicação, e aprender a co-existir com as Rich Internet Applications. Começa a surgir um novo conceito, o de Rich Desktop Application. Uma Rich Desktop Application (RDA) consiste numa aplicação que é instalada no nosso computador, mas que regra geral é composta essencialmente por um interface gráfico. Os dados e a camada de negócio encontram-se num servidor remoto. E porque queremos instalar uma RDA no nosso computador, se podemos usar uma RIA? Porque podemos não estar sempre ligados à Internet, e não queremos deixar de usar as nossas aplicações quando a ligação está indisponível -  neste caso, quando a ligação é reposta, os dados são sincronizados com o servidor. Ou simplesmente porque as RDAs não estão limitadas pelas restrições de segurança das sandboxes dos plugins sobre as quais assentam as RIAs, permitindo uma maior integração com o sistema operativo.</p>
<p class="EC_MsoNormal" style="text-align: left;">Como disse atrás, o destaque hoje em dia está nos dados e não na aplicação em si. O que o utilizador quer é ubiquidade: manipular os seus dados a partir de qualquer local, independentemente do sistema operativo, dispositivo, ou meio de acesso. O que é criado pelas equipas de desenvolvimento são diferentes terminais: Desktop, Web, RIA, ou mesmo aplicações móveis, mas todos eles acedem e manipulam os mesmos dados. Tecnologias de desenvolvimento de RIAs como o Adobe Flex permitem facilmente criar uma RIA, e depois reutilizar o código para criar uma RDA (neste caso, assente sobre Adobe Air).</p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="font-size: small; font-family: Tahoma,Helvetica,Sans-Serif; color: #333333;"> </span></span></p>
<p class="EC_MsoNormal" style="text-align: left;"><span style="color: black;"><span style="color: #333333;"><span style="font-family: Tahoma,Helvetica,Sans-Serif;"><span style="font-size: small;"><strong>15- Existem problemas de compatibilidade entre máquinas e sistemas informáticos (ex: PC e MAC)?</strong></span></span></span></span></p>
<p class="EC_MsoNormal" style="text-align: left;">
<p class="EC_MsoNormal" style="text-align: left;">A compatibilidade de acesso a uma RIA é definida pelo suporte do plugin sobre o qual a RIA assente nos diferentes sistemas operativos.<br />
O Flash Player, por exemplo, é actualmente suportado em Windows (XP, Vista, 2003, 2000, ME e 98), Linux, Macintosh e Solaris, com uma penetração na ordem dos 95% (<a class="EC_moz-txt-link-freetext" href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html" target="_blank">http://www.adobe.com/products/player_census/flashplayer/version_penetration.html</a>) . A versão Lite do Flash Player pode ainda correr em dispositivos móveis, mas implica a criação de source code específico para essa versão.<br />
O Microsoft Silverlight é actualmente suportado em Windows (Vista,2003, XP) e Mac OS. Está a ser desenvolvido suporte para Linux, e para dispositivos móveis com Windows Mobile 6 e Symbian S60.<br />
A Adobe possui ainda uma tecnologia denominada Adobe Air que permite transformar uma RIA numa RDA dando-lhe funcionalidades adicionais de integração com o sistema operativo. O Adobe Air é compatível de forma idêntica em todos os sistemas operativos, tal como o Flash Player.</p>
<p style="text-align: left;">Em resumo, uma das vantagens das RIAs é efectivamente o facto de que não está dependente do sistema operativo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/08/08/artigo-sobre-rich-internet-applications-na-revista-invest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

