<?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></title>
	<atom:link href="http://luismessias.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://luismessias.com/blog</link>
	<description>Flex, AIR, AS3, Flash, RIA, PHP, ZendPHP, JAVA</description>
	<lastBuildDate>Fri, 09 Jul 2010 02:38:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Excelente plugin para o Flash Builder 4 &#8211; SourceMate: getters &amp; setters</title>
		<link>http://luismessias.com/blog/2010/07/08/excelente-plugin-para-o-flash-builder-4-sourcemate-getters-setters/</link>
		<comments>http://luismessias.com/blog/2010/07/08/excelente-plugin-para-o-flash-builder-4-sourcemate-getters-setters/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 02:38:51 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Configurações]]></category>
		<category><![CDATA[Sem categoria]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[getters]]></category>
		<category><![CDATA[setters]]></category>
		<category><![CDATA[source mate]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=355</guid>
		<description><![CDATA[
			
				
			
		


O SourceMate, o parceiro definitivo para o desenvolvedor sério de Flex e ActionScript, adiciona recomposição, geração de códigos, snippets de códigos e muito mais ao Flash Builder 4. Entre as principais características estão a criação de múltiplos getter/setter, interface de extração e recomposição de método de extração, criação de arquivo versão Ant e marcadores de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F07%2F08%2Fexcelente-plugin-para-o-flash-builder-4-sourcemate-getters-setters%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F07%2F08%2Fexcelente-plugin-para-o-flash-builder-4-sourcemate-getters-setters%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://www.elementriver.com/sourcemate/"><img title="sourcemate" src="http://theflashblog.com/wp-content/uploads/sourcemate.gif" alt="" width="407" height="52" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">O SourceMate, o parceiro definitivo para o desenvolvedor sério de Flex e ActionScript, adiciona recomposição, geração de códigos, snippets de códigos e muito mais ao Flash Builder 4. Entre as principais características estão a criação de múltiplos getter/setter, interface de extração e recomposição de método de extração, criação de arquivo versão Ant e marcadores de tarefa TODO e FIXME.</p>
<h4></h4>
<h2><strong>Instalação:</strong></h2>
<p>Abra o menu: Ajuda&gt; Instalar Novo Software</p>
<p>Uma vez na caixa de diálogo de instalação, insira a seguinte URL:</p>
<p>http://updates.elementriver.com/sourcemate/v1</p>
<h2></h2>
<h2><strong>Resultado:</strong></h2>
<p><a href="http://luismessias.com/blog/wp-content/uploads/2010/07/sourcemate.png"><img class="alignnone size-full wp-image-358" title="sourcemate" src="http://luismessias.com/blog/wp-content/uploads/2010/07/sourcemate.png" alt="" width="658" height="297" /></a></p>
<h4><a href="http://www.elementriver.com/sourcemate/" target="_blank">SourceMate*</a>, por Element River</h4>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=355&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/07/08/excelente-plugin-para-o-flash-builder-4-sourcemate-getters-setters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integração Flex 4 &amp; Spring 3 com Spring BlazeDS [Parte I]</title>
		<link>http://luismessias.com/blog/2010/06/22/integracao-flex-4-spring-3-com-spring-blazeds-parte-i/</link>
		<comments>http://luismessias.com/blog/2010/06/22/integracao-flex-4-spring-3-com-spring-blazeds-parte-i/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 03:30:22 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Spring BlazeDS]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=312</guid>
		<description><![CDATA[
			
				
			
		
No final de 2008, a comunidade Spring começou a trabalhar no projeto de integração Spring BlazeDS para adicionar suporte ao Flex no desenvolvimento de aplicações com Java e Spring.
O BlazeDS cria instâncias de objetos do lado do servidor Java e usa os para responder aos pedidos do remote object. A integração com Spring BlazeDS permite [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F06%2F22%2Fintegracao-flex-4-spring-3-com-spring-blazeds-parte-i%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F06%2F22%2Fintegracao-flex-4-spring-3-com-spring-blazeds-parte-i%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="text-align: justify;">No final de 2008, a comunidade Spring começou a trabalhar no projeto de integração Spring BlazeDS para adicionar suporte ao Flex no desenvolvimento de aplicações com Java e Spring.<br />
O BlazeDS cria instâncias de objetos do lado do servidor Java e usa os para responder aos pedidos do remote object. A integração com Spring BlazeDS permite que você configure o Spring beans como um destino BlazeDS para utilização de remote objects no Flex.</p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://luismessias.com/blog/wp-content/uploads/2010/06/flash_builder.png"><img class="alignnone size-full wp-image-323" title="flash_builder" src="http://luismessias.com/blog/wp-content/uploads/2010/06/flash_builder.png" alt="" width="100" height="99" /></a><a href="http://www.springsource.org/spring-flex"> <img class="size-full wp-image-317 alignnone" title="Spring BlazeDS Integration" src="http://luismessias.com/blog/wp-content/uploads/2010/06/logo.png" alt="" width="187" height="57" /></a><a href="http://www.adobe.com/go/try_fashbuilder"></a></p>
<h2><strong><span style="color: #057af9;">Ferramentas necessárias:</span></strong></h2>
<p style="text-align: justify;">•  Eclipse 3.5 (Galileo) para Java EE Developers &#8211; <a href="http://www.eclipse.org/downloads/" target="_blank">http://www.eclipse.org/downloads/</a><br />
ou,  SpringSource Tool Suite : <a href="http://www.springsource.com/products/springsource-tool-suite-download/" target="_blank">http://www.springsource.com/products/springsource-tool-suite-download/</a><br />
• Flash Builder 4, plugin para instalar na distribuição do eclipse 3.5  -  <a href="http://www.adobe.com/go/try_fashbuilder" target="_blank">http://www.adobe.com/go/try_fashbuilder</a><br />
• Tomcat 6: <a href="http://tomcat.apache.org/" target="_self">http://tomcat.apache.org/</a><br />
• BlazeDS 4 (Binary Distribution): <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/ " target="_blank">http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/ </a><br />
• Spring Framework 3.0.2 (vanilla release): <a href="http://www.springsource.org/download " target="_blank">http://www.springsource.org/download </a><br />
• Spring BlazeDS Integration 1.0.3 (vanilla release): <a href="http://www.springsource.org/spring-flex">http://www.springsource.org/spring-flex</a><br />
• AOP Alliance 1.0: <a href="http://sourceforge.net/projects/aopalliance/files/" target="_blank">http://sourceforge.net/projects/aopalliance/files/</a><br />
• backport-util-concurrent 3.1: <a href="http://sourceforge.net/projects/backport-jsr166/files/backport-jsr166/" target="_self">http://sourceforge.net/projects/backport-jsr166/files/backport-jsr166/</a><br />
• cglib 2.2 <a href="http://sourceforge.net/projects/cglib/files/" target="_blank">http://sourceforge.net/projects/cglib/files/</a><br />
• asm 3.2 <a href="http://forge.ow2.org/projects/asm/" target="_blank">http://forge.ow2.org/projects/asm/</a></p>
<p style="text-align: justify;">
<h2><span style="color: #057af9;"><strong><strong>Como fazer:</strong></strong></span></h2>
<p style="text-align: justify;"><span style="color: #057af9;"><strong>1)</strong></span> Primeiro instale o Eclipse e, em seguida, instalar o Flash Builder 4 plugin para a distribuição Eclipse  que você acabou de instalar.</p>
<p style="text-align: justify;"><span style="color: #057af9;"><strong>2)</strong></span> No Eclipse crie um servidor:<br />
1. File &gt; New &gt; Other<br />
2. Selecione Server &gt; Server<br />
3. Clique em Avançar<br />
4. Selecione&gt; Apache Tomcat v6.0 Server<br />
5. Clique em Avançar<br />
6. Especifique o local onde o Tomcat está instalado e selecione o JRE<br />
7. Clique em Concluir</p>
<p style="text-align: justify;"><span style="color: #057af9;"><strong>3)</strong></span> Criar um &#8220;Dynamic Web project&#8221;</p>
<p style="text-align: justify;">No Eclipse, importe o arquivo blazeds.war para criar o projeto:<br />
1. Escolha File &gt; Import<br />
2. Selecione  WAR file. Especifique o local do arquivo blazeds.war.<br />
Dê um nome para o projecto web, flexcomspring<br />
3. Clique em Concluir</p>
<p style="text-align: justify;">Primeiro remova o arquivo xalan.jar do diretório: WebContent/WEB-INF/lib. Em seguida, vá em propriedades do projeto.   Selecione Java Build Path e em seguida, clique na guia Source. Defina o<br />
diretório de saída: flexcomspring/WebContent/WEB-INF/classes</p>
<p style="text-align: justify;">Isso faz com que todas as classes Java criadas no projeto serem implantadas na aplicação web.<br />
No WebContent/WEB-INF/flex atualizar o services-config.xml para o seguinte código:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;my-amf&quot;</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;mx.messaging.channels.AMFChannel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;endpoint</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;http://{server.name}:{server.port}/{context.root}/messagebroker/amf&quot;</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.endpoints.AMFEndpoint&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel-definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;my-streaming-amf&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;mx.messaging.channels.StreamingAMFChannel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;endpoint</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf&quot;</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.endpoints.StreamingAMFEndpoint&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel-definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;my-polling-amf&quot;</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;mx.messaging.channels.AMFChannel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;endpoint</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling&quot;</span></span>
<span style="color: #009900;">	  <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.endpoints.AMFEndpoint&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel-definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><strong>Lista 1 &#8211; services-config.xml</strong></p>
<p><span style="color: #009eff;"><strong>4)</strong></span> Em seguida, você precisa adicionar as dependências necessárias para  a aplicação web. Copie todas as bibliotecas do Spring Framework / arquivos .JAR (localizado na pasta dist) para o seguinte diretório: WebContent/WEB-INF/lib.<br />
Também copie as bibliotecas do Spring BlazeDS Integration (localizado na pasta dist ) para a pasta lib. Faça o mesmo para aopalliance.jar, backport-util- concurrent.jar, cglib-2.2.jar, asm-3.2.jar.</p>
<p><span style="color: #009eff;"><strong>5)</strong></span> Para configurar o servidor para o Flex Remoting, primeiro editar o web.xml em: WebContent/WEB-INF. Substituir seu conteúdo para:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;web-app</span> </span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://java.sun.com/xml/ns/javaee&quot;</span> </span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">xmlns:web</span>=<span style="color: #ff0000;">&quot;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;</span>
<span style="color: #009900;">        http://java.sun.com/xml/ns/javaee</span>
<span style="color: #009900;">        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&quot;</span></span>
<span style="color: #009900;">	<span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;2.5&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			org.springframework.web.context.ContextLoaderListener
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>flex.messaging.HttpFlexSession<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/listener<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>flexcomspring<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			org.springframework.web.servlet.DispatcherServlet
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;init-param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>contextConfigLocation<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/param-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;param-value<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/param-value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/init-param<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;load-on-startup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/load-on-startup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>flexcomspring<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/messagebroker/*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><strong>Lista 2 &#8211; web.xml</strong></p>
<p>O Spring irá agora tratar os pedidos para o messagebroker / url.<br />
<strong> </strong></p>
<p><strong><span style="color: #009eff;">6)</span> </strong>Agora configure o Spring criando um arquivo applicationContext.xml em WebContent/WEB-INF com o seguinte código:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;beans</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.springframework.org/schema/beans&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">xmlns:flex</span>=<span style="color: #ff0000;">&quot;http://www.springframework.org/schema/flex&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">xmlns:context</span>=<span style="color: #ff0000;">&quot;http://www.springframework.org/schema/context&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;</span>
<span style="color: #009900;">        http://www.springframework.org/schema/beans</span>
<span style="color: #009900;">        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</span>
<span style="color: #009900;">        http://www.springframework.org/schema/flex </span>
<span style="color: #009900;">        http://www.springframework.org/schema/flex/spring-flex-1.0.xsd</span>
<span style="color: #009900;">        http://www.springframework.org/schema/context</span>
<span style="color: #009900;">        http://www.springframework.org/schema/context/spring-context-3.0.xsd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
 	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;flex:message-broker<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;flex:remoting-service</span> <span style="color: #000066;">default-channels</span>=<span style="color: #ff0000;">&quot;my-amf&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/flex:message-broker<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;context:component-scan</span> <span style="color: #000066;">base-package</span>=<span style="color: #ff0000;">&quot;com.luis.flex&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/beans<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><strong>Lista 3 &#8211; applicationContext.xml</strong></p>
<p style="text-align: justify;">Na lista 3 cria-se o Flex message-broker, que permitirá ao Flex habilitar o remoting-service, utilizando o canal my-amf. O  component-scan vai encontrar classes no pacote &#8220;com.luis.flex&#8221; que foram anotados para Remoting.</p>
<p style="text-align: justify;"><span style="color: #009eff;"><strong>7)</strong></span> Agora crie uma classe Java simples que será exposta através do AMF channel para uma aplicação Flex. Na pasta src criar uma nova classe no pacote criado anteriormente com o nome &#8220;OlaMundoService&#8221;. Definir com o seguinte código  em OlaMundoService.java para:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.luis.flex</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.flex.remoting.RemotingDestination</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.flex.remoting.RemotingInclude</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.springframework.stereotype.Service</span><span style="color: #339933;">;</span>
&nbsp;
@Service
@RemotingDestination
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> OlaMundoService <span style="color: #009900;">&#123;</span>
    @RemotingInclude
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> olaUser<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;Olá, &quot;</span> <span style="color: #339933;">+</span> name<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Lista 4 &#8211; OlaMundoService.java</strong></p>
<p>Na classe OlaMundoService você vai notar duas anotações. O @Service annotation diz ao Spring qual classe é um serviço e @RemotingDestination expõe a classe como um remoting endpoint para o Flex. Esta classe também contém um único método chamado olaUser, que simplesmente recebe uma string. Por padrão, todos os métodos públicos de uma classe estão disponíveis para remoting. Você pode ocultar um método público de ser exposto como um endpoint remoto usando o @RemotingExclude.</p>
<p>﻿<span style="color: #009eff;"><strong>8 )</strong></span> Agora crie uma aplicação Flex que vai chamar o método olaUser em OlaMundoService. Para começar a construir a aplicação Flex, basta criar um novo projeto Flex. No assistente para Novo projeto Flex de o nome: &#8220;olaMundo&#8221;, selecione Web como o tipo de aplicação, e definir o Flex SDK versão para Flex 4.0 (geralmente o padrão). Também escolha J2EE como o tipo de servidor de aplicativos, habilite Use Remote Object Access Service, e selecione BlazeDS. Certifique-se que Create Combined Java/Flex Project Using WTP não está marcada e clique em Avançar. Agora insira as informações para o projeto flexcomspring. A pasta raiz é a pasta <strong>WebContent</strong> no projeto flexcomspring. A URL raiz deve ser <strong>http://localhost:8080/flexcomspring /</strong>. A raiz de contexto deve ser <strong>/flexcomspring.</strong></p>
<p><strong><a href="http://luismessias.com/blog/wp-content/uploads/2010/06/config1.png"><img class="aligncenter size-full wp-image-346" title="config" src="http://luismessias.com/blog/wp-content/uploads/2010/06/config1.png" alt="" width="618" height="170" /></a><br />
</strong></p>
<p>Clique em Concluir para criar o projeto. Agora você deve ver o código da aplicação. Substitua o código pelo seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">			   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> </span>
<span style="color: #000000;">			   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RemoteObject</span> id=<span style="color: #ff0000;">&quot;ro&quot;</span> destination=<span style="color: #ff0000;">&quot;olaMundoService&quot;</span> </span>
<span style="color: #000000;">		endpoint=<span style="color: #ff0000;">&quot;http://localhost:8080/flexcomspring/messagebroker/amf&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:layout</span><span style="color: #7400FF;">&gt;</span><span style="color: #7400FF;">&lt;s:VerticalLayout</span><span style="color: #7400FF;">/&gt;</span><span style="color: #7400FF;">&lt;/s:layout</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:TextInput</span> id=<span style="color: #ff0000;">&quot;txt&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> label=<span style="color: #ff0000;">&quot;Enviar&quot;</span> click=<span style="color: #ff0000;">&quot;ro.olaUser(txt.text)&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> id=<span style="color: #ff0000;">&quot;lbl&quot;</span> text=<span style="color: #ff0000;">&quot;{ro.olaUser.lastResult}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p style="text-align: justify;"><strong>Lista 5 &#8211; olaMundo.mxml</strong></p>
<p style="text-align: justify;">
Agora, execute a aplicação olaMundo (uma maneira é clicar com o botão direito no olaMundo. mxml, selecione Executar como e, em seguida, selecione Web Application). Digite seu nome no TextInput Clique no botão Enviar. Isto irá iniciar um pedido Flex Remoting para o servidor Tomcat chamando o Spring DispatcherServlet, que então procura o serviço OlaMundoService. Este destino é automaticamente mapeado para o Spring OlaMundoService Bean. Em seguida, o método olaUser será chamado no bean, passando para a chamada  do RemoteObject no cliente. O método retorna uma nova String, que é então serializado em AMF, inserido no corpo da resposta HTTP, e enviados de volta para o cliente. Você acabou de concluir uma aplicação web com Flex  para comunicar através de aplicações com Spring BlazeDS usando o Spring BlazeDS Integration!</p>
<p style="text-align: justify;"><a href="http://luismessias.com/blog/wp-content/uploads/2010/06/app.png"><img class="aligncenter size-full wp-image-347" title="app" src="http://luismessias.com/blog/wp-content/uploads/2010/06/app.png" alt="" width="150" height="88" /></a></p>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=312&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/06/22/integracao-flex-4-spring-3-com-spring-blazeds-parte-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tour de Flex 2.0 &#8211; Cerca de 500 exemplos Flex!</title>
		<link>http://luismessias.com/blog/2010/06/21/tour-de-flex-2-0-cerca-de-500-exemplos-flex/</link>
		<comments>http://luismessias.com/blog/2010/06/21/tour-de-flex-2-0-cerca-de-500-exemplos-flex/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 02:00:27 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Exemplos]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Dashboard]]></category>
		<category><![CDATA[Doug McCune's]]></category>
		<category><![CDATA[Tour de Flex]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=326</guid>
		<description><![CDATA[
			
				
			
		


Adobe acaba de lançar o novo Tour de versão Flex 2.0 , que agora contém cerca 500 exemplos Flex! A nova versão tem novos exemplos (apenas disponível na versão AIR do Tour de Flex), incluindo:

 Detecção de armazenamento em massa
 Processo Nativo
 Abrir com o aplicativo padrão
 Socket Server

Além disso, existem alguns bons exemplos do [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F06%2F21%2Ftour-de-flex-2-0-cerca-de-500-exemplos-flex%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F06%2F21%2Ftour-de-flex-2-0-cerca-de-500-exemplos-flex%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><!-- .entry-meta --></p>
<div>
<p>Adobe acaba de lançar o novo <a href="http://flex.org/tour" target="_blank">Tour de versão Flex 2.0</a> , que agora contém cerca 500 exemplos Flex! A nova versão tem novos exemplos (apenas disponível na versão AIR do Tour de Flex), incluindo:</p>
<ul>
<li> Detecção de armazenamento em massa</li>
<li> Processo Nativo</li>
<li> Abrir com o aplicativo padrão</li>
<li> Socket Server</li>
</ul>
<p>Além disso, existem alguns bons exemplos do novo Flash Player 10.1 e AIR 2 APIs, incluindo:</p>
<ul>
<li> Handler de erro global</li>
<li> Globalização / Internacionalização</li>
<li> Acesso ao Microfone</li>
</ul>
<p>Aqui está um exemplo do <a href="http://dougmccune.com/blog/" target="_blank">Doug McCune&#8217;s</a> <a href="http://www.adobe.com/devnet/flex/tourdeflex/web/#docIndex=0;illustIndex=0;sampleId=16300" target="_blank">Physics Form</a> bem legal e um dashboard em tempo real do Tour de Flex: <a href="http://www.adobe.com/devnet/flex/tourdeflex/web/#docIndex=-1;illustIndex=0;sampleId=14050" target="_blank">real-time Tour de Flex Dashboard</a>.</p>
<p>Se você já tem instalado o Tour de Flex, então ele deve fazer o auto update para a versão mais recente quando você iniciá-lo. Caso contrário, instale-o a partir daqui:</p>
<p style="text-align: left;"><iframe frameborder="0" src="http://tourdeflex.adobe.com/badge/index.html" width="100%" height="200"></iframe></p>
</div>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=326&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/06/21/tour-de-flex-2-0-cerca-de-500-exemplos-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Interface Design Patterns</title>
		<link>http://luismessias.com/blog/2010/06/06/user-interface-design-patterns/</link>
		<comments>http://luismessias.com/blog/2010/06/06/user-interface-design-patterns/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 05:03:11 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Web Resources]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=296</guid>
		<description><![CDATA[
			
				
			
		
Exis­tem mui­tas manei­ras de lidar com um requi­sito espe­cí­fico de um pro­jeto de inter­face e – como desig­ner – a coisa mais importante que você pode fazer é sele­ci­o­nar a opção que melhor reflita as neces­si­da­des de seus usuá­rios. Os exem­plos abaixo são parte de uma com­pi­la­ção com os melho­res dos melho­res, publi­ca­ções online e bibli­o­te­cas dedi­ca­das a com­par­ti­lhar infor­ma­ções [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F06%2F06%2Fuser-interface-design-patterns%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F06%2F06%2Fuser-interface-design-patterns%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Exis­tem mui­tas manei­ras de lidar com um requi­sito espe­cí­fico de um pro­jeto de inter­face e – como desig­ner – a coisa mais importante que você pode fazer é sele­ci­o­nar a opção que melhor reflita as neces­si­da­des de seus usuá­rios. Os exem­plos abaixo são parte de uma com­pi­la­ção com os melho­res dos melho­res, publi­ca­ções online e bibli­o­te­cas dedi­ca­das a com­par­ti­lhar infor­ma­ções e explo­rar con­ceitos rela­ti­vos aos padrões de design de inter­face do usuário.</p>
<hr />
<p><a title="UI-patterns" href="http://ui-patterns.com/" target="_blank"><img class="size-full wp-image-298 alignnone" title="UI-patterns" src="http://luismessias.com/blog/wp-content/uploads/2010/06/uip-150x150.gif" alt="" width="120" height="120" /></a></p>
<p><a title="UI-patterns" onclick="javascript:pageTracker._trackPageview('/outgoing/ui-patterns.com/');" href="http://ui-patterns.com/" target="_blank">UI-patterns.com</a></p>
<p>UI-patterns.com é uma cole­ção de padrões de design onde os desig­ners de inter­face podem bus­car ins­pi­ra­ção. O site per­mite que os usuá­rios man­ter con­jun­tos de suas pró­prias (publi­ca­mente aces­sí­veis aos visi­tan­tes do site) para que você possa ver outras cole­ções de padrão de design de inter­face do usuário.</p>
<hr /><a title="Konigi" onclick="javascript:pageTracker._trackPageview('/outgoing/konigi.com/showcase/latest');" href="http://konigi.com/showcase/latest" target="_blank"></a><a href="http://konigi.com/showcase/latest" target="_blank"><img class="alignnone size-full wp-image-300" title="Konigi" src="http://luismessias.com/blog/wp-content/uploads/2010/06/konigi-150x150.jpg" alt="" width="130" height="130" /></a></p>
<p><a title="Konigi" onclick="javascript:pageTracker._trackPageview('/outgoing/konigi.com/showcase/latest');" href="http://konigi.com/showcase/latest" target="_blank">Konigi</a></p>
<p>Konigi des­taca exem­plos do design de inte­ra­ção e do uso de design visual no mundo-real. Exis­tem mui­tas for­mas de utilizar,navegar e encon­trar o con­teúdo dese­jado no site, incluindo uma página de Tags popu­la­res com as palavras-chave mais usa­das divi­di­das em três cate­go­rias: palavra-chave, pro­duto e empresa.</p>
<hr /><a href="http://www.welie.com/patterns/index.php" target="_blank"><img class="alignnone size-full wp-image-301" title="Inte­rac­tion Design Pat­tern Library" src="http://luismessias.com/blog/wp-content/uploads/2010/06/mines-orange-small-150x150.png" alt="" width="124" height="124" /></a><a title="Welie.com" onclick="javascript:pageTracker._trackPageview('/outgoing/www.welie.com/patterns/index.php');" href="http://www.welie.com/patterns/index.php" target="_blank"></a></p>
<p><a title="Welie.com" onclick="javascript:pageTracker._trackPageview('/outgoing/www.welie.com/patterns/index.php');" href="http://www.welie.com/patterns/index.php" target="_blank">Inte­rac­tion Design Pat­tern Library</a></p>
<p>Welie.com pos­sui uma bibli­o­teca de padrões de design de inte­ra­ção man­tida por Mar­tijn van Welie, Ph.D. em Human Com­pu­ter Inte­rac­tion. A bibli­o­teca pos­sui uma tone­lada de padrões de design que envol­vem várias tare­fas de um site. Cada padrão segue um for­mato espe­cí­fico: o pro­blema, a solu­ção, quando usar o padrão, por que você deve usar o padrão de design e os exem­plos do padrão em uso.</p>
<hr /><a href="http://designsnips.com/" target="_blank"><img class="alignnone size-full wp-image-302" title="design|snips" src="http://luismessias.com/blog/wp-content/uploads/2010/06/design_patterns-150x150.gif" alt="" width="130" height="130" /></a><a title="design|snips" onclick="javascript:pageTracker._trackPageview('/outgoing/designsnips.com/');" href="http://designsnips.com/" target="_blank"></a></p>
<p><a title="design|snips" onclick="javascript:pageTracker._trackPageview('/outgoing/designsnips.com/');" href="http://designsnips.com/" target="_blank">design|snips</a></p>
<p>Esta Gale­ria de design concentra-se em com­po­nen­tes comuns de pági­nas web bem como nas ten­dên­cias de design. Design|snips pos­sui mais de 30 cate­go­rias, o que per­mite que se encon­tre facil­mente o padrão de design ou ten­dên­cia que mais inte­res­sam. Além disso, os usuá­rios têm per­mis­são para clas­si­fi­car cada design em des­ta­que na Galeria.</p>
<hr /><a href="http://uipatternfactory.com/" target="_blank"><img class="alignnone size-full wp-image-303" title="The UI Pat­tern Factory" src="http://luismessias.com/blog/wp-content/uploads/2010/06/gd-150x150.gif" alt="" width="130" height="130" /></a><a title="UI Pattern Factory" onclick="javascript:pageTracker._trackPageview('/outgoing/uipatternfactory.com/');" href="http://uipatternfactory.com/" target="_blank"></a></p>
<p><a title="UI Pattern Factory" onclick="javascript:pageTracker._trackPageview('/outgoing/uipatternfactory.com/');" href="http://uipatternfactory.com/" target="_blank">The UI Pat­tern Factory</a></p>
<p>The UI Pat­tern Fac­tory é uma bibli­o­teca e gale­ria de design de inter­face do usuá­rio. O inte­res­sante do UI Pat­tern Fac­tory é que as vezes eles com­par­ti­lham vídeos para melhor des­cre­ver os pro­ble­mas e solu­ções de design. Alem disso os usu­a­rios podem con­tri­buir com exem­plos que são arqui­va­dos em uma conta no Flickr: <a title=" Flickr group: UIPatternFactory.com" onclick="javascript:pageTracker._trackPageview('/outgoing/www.flickr.com/groups/uipatternfactory/');" href="http://www.flickr.com/groups/uipatternfactory/" target="_blank">UIPatternFactory.com</a></p>
<hr /><a title="Elements of Design" onclick="javascript:pageTracker._trackPageview('/outgoing/www.smileycat.com/design_elements/');" href="http://www.smileycat.com/design_elements/" target="_blank"></a><a href="http://www.smileycat.com/design_elements/" target="_blank"><img class="alignnone size-full wp-image-304" title="Ele­ments of Design" src="http://luismessias.com/blog/wp-content/uploads/2010/06/elements-of-design-150x150.jpg" alt="" width="130" height="130" /></a></p>
<p><a title="Elements of Design" onclick="javascript:pageTracker._trackPageview('/outgoing/www.smileycat.com/design_elements/');" href="http://www.smileycat.com/design_elements/" target="_blank">Ele­ments of Design</a></p>
<p>Ele­ments of Design concentra-se em com­po­nen­tes espe­cí­fi­cos do web design, tais como for­mu­lá­rios de login e nave­ga­ção de site, na espe­rança de ins­pi­rar desig­ners, bem como para real­çar mode­los que estão se tor­nando padrão.</p>
<hr /><a href="http://luismessias.com/blog/wp-content/uploads/2010/06/elements-of-design-150x150.jpg" target="_blank"></a><a href="http://web-patterns.net/" target="_blank"><img class="alignnone size-full wp-image-305" title="Web &amp; Patterns" src="http://luismessias.com/blog/wp-content/uploads/2010/06/webpatterns.jpg" alt="" width="130" height="112" /></a></p>
<p><a href="http://web-patterns.net/" target="_blank">Web &amp; Patterns</a></p>
<p>Web &amp; Patterns, é um site onde podem encontrar padrões, ilustrações, etc. Podem aceder a alguns conteúdos gratuitamente, outros terão de se tornar membros.</p>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=296&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/06/06/user-interface-design-patterns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Dica] Debugger Teclas de Atalho em várias IDE´s</title>
		<link>http://luismessias.com/blog/2010/05/24/dica-debugger-teclas-de-atalho-em-varias-ide%c2%b4s/</link>
		<comments>http://luismessias.com/blog/2010/05/24/dica-debugger-teclas-de-atalho-em-varias-ide%c2%b4s/#comments</comments>
		<pubDate>Mon, 24 May 2010 18:37:58 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[atalhos]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[teclas]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=291</guid>
		<description><![CDATA[
			
				
			
		
Debugger &#8211; Teclas de atalho




IDE
Run
Continue
Step Over
Step Into
Step Out
Suspend
Debug




Eclipse
Ctrl+F11
F8
F6
F5
F7
N/A
F11


Firebug



F11
F10




Netbeans

F5
F8
F7
Ctrl+F7




IntelliJ
Shift-F10
F9
F8
F7
Shift+F8

Shift+F9


Visual Studio
Ctrl+F5
F5
F10
F11
Shift+F11
Ctrl+Alt+Break
F5



Escrevi este post porque uso IDEs diferentes com bastante frequência (para o trabalho e  projetos pessoais), e o fato de que as teclas de atalho run/debug diferem em cada IDE, isso realmente me irrita!
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F05%2F24%2Fdica-debugger-teclas-de-atalho-em-varias-ide%25c2%25b4s%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F05%2F24%2Fdica-debugger-teclas-de-atalho-em-varias-ide%25c2%25b4s%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><strong>Debugger &#8211; Teclas de atalho<br />
</strong></p>
<table id="wptable-3" class="wptable rowstyle-alt" cellspacing="1">
<thead>
<tr>
<th class="sortable" style="width: 75px;" align="center">IDE</th>
<th class="sortable" style="width: 50px;" align="center">Run</th>
<th class="sortable" style="width: 50px;" align="center">Continue</th>
<th class="sortable" style="width: 50px;" align="center">Step Over</th>
<th class="sortable" style="width: 50px;" align="center">Step Into</th>
<th class="sortable" style="width: 50px;" align="center">Step Out</th>
<th class="sortable" style="width: 50px;" align="center">Suspend</th>
<th class="sortable" style="width: 30px;">Debug</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 75px;" align="center">Eclipse</td>
<td style="width: 50px;" align="center">Ctrl+F11</td>
<td style="width: 50px;" align="center">F8</td>
<td style="width: 50px;" align="center">F6</td>
<td style="width: 50px;" align="center">F5</td>
<td style="width: 50px;" align="center">F7</td>
<td style="width: 50px;" align="center">N/A</td>
<td style="width: 30px;">F11</td>
</tr>
<tr class="alt">
<td style="width: 75px;" align="center">Firebug</td>
<td style="width: 50px;"></td>
<td style="width: 50px;"></td>
<td style="width: 50px;"></td>
<td style="width: 50px;" align="center">F11</td>
<td style="width: 50px;" align="center">F10</td>
<td style="width: 50px;"></td>
<td style="width: 30px;"></td>
</tr>
<tr>
<td style="width: 75px;" align="center">Netbeans</td>
<td style="width: 50px;"></td>
<td style="width: 50px;" align="center">F5</td>
<td style="width: 50px;" align="center">F8</td>
<td style="width: 50px;" align="center">F7</td>
<td style="width: 50px;" align="center">Ctrl+F7</td>
<td style="width: 50px;"></td>
<td style="width: 30px;"></td>
</tr>
<tr class="alt">
<td style="width: 75px;" align="center">IntelliJ</td>
<td style="width: 50px;" align="center">Shift-F10</td>
<td style="width: 50px;" align="center">F9</td>
<td style="width: 50px;" align="center">F8</td>
<td style="width: 50px;" align="center">F7</td>
<td style="width: 50px;" align="center">Shift+F8</td>
<td style="width: 50px;"></td>
<td style="width: 30px;">Shift+F9</td>
</tr>
<tr>
<td style="width: 75px;" align="center">Visual Studio</td>
<td style="width: 50px;" align="center">Ctrl+F5</td>
<td style="width: 50px;" align="center">F5</td>
<td style="width: 50px;" align="center">F10</td>
<td style="width: 50px;" align="center">F11</td>
<td style="width: 50px;" align="center">Shift+F11</td>
<td style="width: 50px;" align="center">Ctrl+Alt+Break</td>
<td style="width: 30px;">F5</td>
</tr>
</tbody>
</table>
<p>Escrevi este post porque uso IDEs diferentes com bastante frequência (para o trabalho e  projetos pessoais), e o fato de que as teclas de atalho run/debug diferem em cada IDE, isso realmente me irrita!</p>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=291&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/05/24/dica-debugger-teclas-de-atalho-em-varias-ide%c2%b4s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concurso para desenvolvedores Flex!! &#8220;Adobe Acrobat PDF Portfolio Navigator&#8221;</title>
		<link>http://luismessias.com/blog/2010/05/01/concurso-para-desenvolvedores-flex-adobe-acrobat-pdf-portfolio-navigator/</link>
		<comments>http://luismessias.com/blog/2010/05/01/concurso-para-desenvolvedores-flex-adobe-acrobat-pdf-portfolio-navigator/#comments</comments>
		<pubDate>Sat, 01 May 2010 18:20:35 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Adobe Acrobat]]></category>
		<category><![CDATA[concurso]]></category>
		<category><![CDATA[Contest]]></category>
		<category><![CDATA[ganhe]]></category>
		<category><![CDATA[PDF Portfolio Navigator]]></category>
		<category><![CDATA[prémios]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=285</guid>
		<description><![CDATA[
			
				
			
		
Caso você não tenha ouvido, Adobe Acrobat 9 tem uma API de ActionScript para portfólios PDF.
Aprenda e faça-se sobressair de outros desenvolvedores Flex. O &#8220;Adobe Acrobat PDF Portfolio Navigator Developer Contest&#8221; pode ser sua oportunidade de ter o seu trabalho comentado por algumas das empresas RIA top no mundo. No concurso, você também pode ganhar [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F05%2F01%2Fconcurso-para-desenvolvedores-flex-adobe-acrobat-pdf-portfolio-navigator%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F05%2F01%2Fconcurso-para-desenvolvedores-flex-adobe-acrobat-pdf-portfolio-navigator%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Caso você não tenha ouvido, <strong>Adobe Acrobat 9</strong> tem uma <strong>API de ActionScript</strong> para portfólios PDF.</p>
<p>Aprenda e faça-se sobressair de outros desenvolvedores Flex. O &#8220;Adobe Acrobat PDF Portfolio Navigator Developer Contest&#8221; pode ser sua oportunidade de ter o seu trabalho comentado por algumas das empresas <strong>RIA</strong> top no mundo. No concurso, você também pode ganhar excelentes prémios.</p>
<p>Um painel de especialistas da<strong> Adobe</strong> irá selecionar <strong>10 trabalhos</strong>. Representantes de diversas empresas RIA irão rever os 10 melhores trabalhos e selecionar três vencedores. Esta é uma ótima maneira de começar o seu trabalho e mostrar a estas empresas o seu trabalho que estão sempre à procura de colaboradores criativos.</p>
<p>Os juízes destas empresas líderes no mundo <strong>RIA</strong> são:<br />
<strong>• Blitz<br />
• Catalyst Resources<br />
• Effective UI<br />
• G2<br />
• Universal Mind</strong></p>
<p><strong><span style="color: #ff6600;">1º lugar: </span></strong><br />
Escolha entre <strong>Dell Adamo Desire ou MacBook Air 2.13GHz</strong></p>
<p><strong><span style="color: #ff6600;">2º lugar: </span></strong><br />
<strong>Apple iPad wifi, 3G 32GB device</strong></p>
<p><strong><span style="color: #ff6600;">3º lugar: </span></strong><br />
<strong>HP Mini 5102 device</strong><br />
<strong><br />
<span style="color: #ff6600;">10 finalistas: </span></strong><br />
Destaque em Adobe.com</p>
<p>Ir a <a href="http://www.acrobatusers.com/navigator-contest" target="_blank">Adobe Acrobat PDF Portfolio Navigator Developer Contest</a> para obter mais informações.</p>
<p>Boa sorte a todos!</p>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=285&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/05/01/concurso-para-desenvolvedores-flex-adobe-acrobat-pdf-portfolio-navigator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evento BR Conference</title>
		<link>http://luismessias.com/blog/2010/04/27/evento-br-conference/</link>
		<comments>http://luismessias.com/blog/2010/04/27/evento-br-conference/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 01:11:55 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[br conference]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=280</guid>
		<description><![CDATA[
			
				
			
		
O BR Conference 2010, é o primeiro evento realizado no Brasil sobre RIA (Rich Internet Application) e ColdFusion.
Com o apoio da Adobe Systems Inc&#8217;s e a participação de alguns dos melhores e mais renomados profissionais do mundo nas ferramentas e tecnologias ColdFusion, Flex, AIR, Flash Media Server e LiveCycle, o BR Conference 2010 é um [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F27%2Fevento-br-conference%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F27%2Fevento-br-conference%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>O <a href="http://www.brconference.com.br" target="_blank"><strong>BR Conference 2010</strong></a>, é o primeiro evento realizado no Brasil sobre<strong> RIA</strong> (Rich Internet Application) e <strong>ColdFusion</strong>.</p>
<p>Com o apoio da Adobe Systems Inc&#8217;s e a participação de alguns dos melhores e mais renomados profissionais do mundo nas ferramentas e tecnologias ColdFusion, Flex, AIR, Flash Media Server e LiveCycle, o BR Conference 2010 é um evento criado por desenvolvedores para desenvolvedores.</p>
<p style="text-align: center;"><a href="http://www.brconference.com.br" target="_blank"><img class="size-full wp-image-281 aligncenter" title="brconf" src="http://luismessias.com/blog/wp-content/uploads/2010/04/brconf.jpg" alt="" width="500" height="113" /></a></p>
<p style="text-align: center;">
<p>O objetivo do evento é apresentar ao seu público soluções de alta escala, novos recursos e tendências do mercado no desenvolvimento de aplicações ricas para Web e Desktop, atendendo a necessidade de empresas, governo, estudantes e profissionais que desejem aprofundar seus conhecimentos.</p>
<p>Além das sessões, apresentações e painéis de discussão, o público terá a oportunidade de contato com os desenvolvedores, gurus, patrocinadores e dirigentes da comunidade.</p>
<p>O evento será uma ocasião oportuna para a formação de parcerias entre os setores privado, acadêmico e governamental e um momento único para as empresas divulgarem seus produtos e serviços a este público especializado.</p>
<h2><span style="color: #2170dd;">Palestrantes</span></h2>
<p><span style="text-decoration: underline;">Comunidade Internacional:</span> Raymond Candem, Ben Forta, Terrence Ryan, Adam Lehman, Lee Brimelow, Kevin Schmidt, Liz Frederick, Charlie Arehart;</p>
<p><span style="text-decoration: underline;">Comunidade Nacional:</span> Neto Leal, Fabio Vedovelli, Flavio Mikami, Lauro Santos, Gabriela Perry, Fransico Paulino (Tofinha).</p>
<h2><span style="color: #2170dd;">Local e Datas do Evento</span></h2>
<p><strong>Data: </strong> 19, 20 e 21 de agosto de 2010 (quinta, sexta e sábado)</p>
<p><strong>Local</strong>:  Sendo definido – Rio de Janeiro – RJ.</p>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=280&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/04/27/evento-br-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando Shared Objects no Flex</title>
		<link>http://luismessias.com/blog/2010/04/25/usando-shared-objects-no-flex/</link>
		<comments>http://luismessias.com/blog/2010/04/25/usando-shared-objects-no-flex/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 06:30:26 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Exemplos]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[SharedObject]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=258</guid>
		<description><![CDATA[
			
				
			
		
Funcionalidade muito utilizada em sites, a qual é o armazenamento de dados no cookie do browser, esta função é muito utilizada para salvar as preferências de usuários como: login, email, ultimo acesso entre outras informações.
No Flex isso também é possível podendo ser até mais poderoso do que as formas atuais, para fazer isso você deve [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F25%2Fusando-shared-objects-no-flex%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F25%2Fusando-shared-objects-no-flex%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Funcionalidade muito utilizada em sites, a qual é o armazenamento de dados no cookie do browser, esta função é muito utilizada para salvar as preferências de usuários como: login, email, ultimo acesso entre outras informações.<br />
No Flex isso também é possível podendo ser até mais poderoso do que as formas atuais, para fazer isso você deve utilizar o SharedObject.</p>
<p>A função do Shared Objects (ShO) é armazenar dados localmente, funcionando como um cookies do browser. Assim você pode armazenar dados e chamá-los durante a sessão atual ou em outra futura sessão. Contudo estes dados não podem ser acessados por outra aplicação Flex mais sim apenas pela aplicação criadora.</p>
<p>Shared Objects vs Cookies</p>
<p>É comum desenvolvedores confundirem ShO com cookies.<br />
Os <strong>cookies </strong>que aderem ao padrão RFC 2109 geralmente têm as seguintes características:</p>
<p>• Eles podem expirar, e geralmente é feito isso no final da sessão por default.<br />
• Podem ser desabilitados pelos clientes.<br />
• Há um limite de 300 cookies sendo no Maximo 20 por site.<br />
• Um cookie tem o espaço de armazenamento de 4 kb.<br />
• Há a possibilidade de serem considerados como arquivos maliciosos.<br />
• Há uma comunicação entre cliente e servidor para armazenamento dos dados.</p>
<p><strong>Shared Object</strong> tem as seguintes características:</p>
<p>• Eles não expiram por default.<br />
• Por padrão o seu limite de armazenamento é de 100 kb.<br />
• Eles podem armazenar dados simples como: String, Date, Array ….<br />
• A aplicação pode indicar locais específicos para o armazenamento dos dados.<br />
• Não há transmissão e comunicação entre o cliente e o servidor para a busca e armazenamento dos dados.</p>
<p>Com a classe SharedObject é possível realizar qualquer manipulação dos dados que ficarão armazenados no cliente. Esta possui os seguintes métodos:</p>
<p>• clear() &#8211; Limpa permanentemente todos os dados contidos no Shared Object.<br />
• flush() – Grava os dados do ShO no cliente.<br />
• getLocal() – Retorna uma instancia do ShO no cliente, caso não exista o mesmo cria uma.<br />
• getSize() – Retorna o tamanho em Bytes do ShO no cliente. Uma observação o tamanho default é de 100kb, contudo isto pode ser alterado para mais.</p>
<p><strong>Na prática:</strong><br />
Criando uma lista de contatos.</p>
<p>Criar uma classe chamada ShareObjectHelper a qual irá realizar a manipulação dos dados do Shared Object, tais como: incluir, remover e listar.<br />
Esta é uma classe bem simples no qual será usado um ArrayCollection para armazenar todos os dados que armazenarão dos contatos que o usuário incluiu.</p>
<p><iframe frameborder="0" src="http://www.luismessias.com/blog/exemplos/flex/sharedobj/index.html" width="100%" height="380"></iframe></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package <span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">collections</span>.<span style="color: #006600;">ArrayCollection</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">net</span>.<span style="color: #0066CC;">SharedObject</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SharedObjectHelper <span style="color: #66cc66;">&#123;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _sharedObject:<span style="color: #0066CC;">SharedObject</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _dpSharedObject:ArrayCollection;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _nomeArquivoSharedObject:<span style="color: #0066CC;">String</span>;
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * Construtor
		 */</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> SharedObjectHelper<span style="color: #66cc66;">&#40;</span>valor:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
			inicializaHelper<span style="color: #66cc66;">&#40;</span>valor<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * @private
		 * Responsavel por recuperar a instancia do SharedObject baseado no
		 * parametro.
		 *
		 */</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> inicializaHelper<span style="color: #66cc66;">&#40;</span>valor:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			_dpSharedObject = <span style="color: #000000; font-weight: bold;">new</span> ArrayCollection<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			_nomeArquivoSharedObject = valor;
			_sharedObject = <span style="color: #0066CC;">SharedObject</span>.<span style="color: #0066CC;">getLocal</span><span style="color: #66cc66;">&#40;</span>_nomeArquivoSharedObject<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>getObjects<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
				_dpSharedObject = getObjects<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * Retorna todos um array de dados que está armazendo no SharedObject
		 * @return ArrayCollection
		 */</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getObjects<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:ArrayCollection <span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">return</span> _sharedObject.<span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#91;</span>_nomeArquivoSharedObject<span style="color: #66cc66;">&#93;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * Adiciona um dado ao array de dados.
		 * @param Object
		 */</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addObject<span style="color: #66cc66;">&#40;</span>o:<span style="color: #0066CC;">Object</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			_dpSharedObject.<span style="color: #006600;">addItem</span><span style="color: #66cc66;">&#40;</span>o<span style="color: #66cc66;">&#41;</span>;
			updateSharedObjects<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">/**
		 * @private
		 * Vincula o array de dados a um SharedObject.
		 */</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> updateSharedObjects<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> <span style="color: #66cc66;">&#123;</span>
			_sharedObject.<span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#91;</span>_nomeArquivoSharedObject<span style="color: #66cc66;">&#93;</span> = _dpSharedObject;
			_sharedObject.<span style="color: #0066CC;">flush</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:local=<span style="color: #ff0000;">&quot;*&quot;</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span></span>
<span style="color: #000000;">				creationComplete=<span style="color: #ff0000;">&quot;init()&quot;</span> backgroundColor=<span style="color: #ff0000;">&quot;#ffffff&quot;</span></span>
<span style="color: #000000;">				layout=<span style="color: #ff0000;">&quot;vertical&quot;</span> </span>
<span style="color: #000000;">				backgroundGradientAlphas=<span style="color: #ff0000;">&quot;[1.0, 1.0]&quot;</span> </span>
<span style="color: #000000;">				backgroundGradientColors=<span style="color: #ff0000;">&quot;[#D3D3D3, #E7E7E7]&quot;</span> viewSourceURL=<span style="color: #ff0000;">&quot;srcview/index.html&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #339933;">&lt;mx:Script&gt;</span>
<span style="color: #339933;">		&lt;![CDATA[</span>
<span style="color: #339933;">			import mx.events.ValidationResultEvent;</span>
<span style="color: #339933;">			import mx.validators.ValidationResult;</span>
<span style="color: #339933;">			import mx.collections.ArrayCollection;</span>
<span style="color: #339933;">			import mx.utils.ObjectUtil;</span>
<span style="color: #339933;">			import flash.net.SharedObject;</span>
&nbsp;
<span style="color: #339933;">			[Bindable]</span>
<span style="color: #339933;">			public var dpContatos:ArrayCollection = new ArrayCollection();</span>
&nbsp;
<span style="color: #339933;">			public var shoHelper:SharedObjectHelper;</span>
&nbsp;
<span style="color: #339933;">			/**</span>
<span style="color: #339933;">			 * @private</span>
<span style="color: #339933;">			 * Inicializa a classe SharedObjectHelper e ja cria/recupera</span>
<span style="color: #339933;">			 * instancia de um objeto SharedObject.</span>
<span style="color: #339933;">			 */</span>
&nbsp;
&nbsp;
<span style="color: #339933;">			private function init():void {</span>
<span style="color: #339933;">				shoHelper = new SharedObjectHelper(&quot;contatos&quot;);</span>
&nbsp;
<span style="color: #339933;">				if (shoHelper.getObjects()) {</span>
<span style="color: #339933;">					dpContatos = shoHelper.getObjects();</span>
<span style="color: #339933;">				}</span>
&nbsp;
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			/**</span>
<span style="color: #339933;">			 * @private</span>
<span style="color: #339933;">			 * Adiciona um contato na lista de contatos e executa o addObject da classe</span>
<span style="color: #339933;">			 * sharedObjectHelper.</span>
<span style="color: #339933;">			 */</span>
<span style="color: #339933;">			private function addContato():void {</span>
<span style="color: #339933;">				if(valNome.validate().type == ValidationResultEvent.VALID){</span>
<span style="color: #339933;">					/* Cria um objeto dinamico com os atributos dos fomularios */</span>
<span style="color: #339933;">					var objInsert:Object = {nome: txtNome.text, apelido: txtApelido.text};</span>
<span style="color: #339933;">					shoHelper.addObject(objInsert);</span>
&nbsp;
<span style="color: #339933;">					dpContatos = shoHelper.getObjects();</span>
&nbsp;
<span style="color: #339933;">					/* Limpa os campos do formularios */</span>
<span style="color: #339933;">					txtNome.text = '';</span>
<span style="color: #339933;">					txtApelido.text = '';</span>
<span style="color: #339933;">				}</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">			/**</span>
<span style="color: #339933;">			 * @private</span>
<span style="color: #339933;">			 * Remove um contato do DataGrid e da lista de contatos do SharedObejct</span>
<span style="color: #339933;">			 */</span>
<span style="color: #339933;">			public function removeContato():void {</span>
<span style="color: #339933;">				if (dgContatos.selectedIndex &gt; -1) {</span>
<span style="color: #339933;">					dpContatos.removeItemAt(dgContatos.selectedIndex);</span>
<span style="color: #339933;">				}</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">		]]&gt;</span>
<span style="color: #339933;">	&lt;/mx:Script&gt;</span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:StringValidator</span> id=<span style="color: #ff0000;">&quot;valNome&quot;</span> source=<span style="color: #ff0000;">&quot;{txtNome}&quot;</span> property=<span style="color: #ff0000;">&quot;text&quot;</span> </span>
<span style="color: #000000;">		required=<span style="color: #ff0000;">&quot;true&quot;</span> requiredFieldError=<span style="color: #ff0000;">&quot;Campo Obrigatório&quot;</span></span>
<span style="color: #000000;">		triggerEvent=<span style="color: #ff0000;">&quot;''&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Panel</span> title=<span style="color: #ff0000;">&quot;Contatos&quot;</span> layout=<span style="color: #ff0000;">&quot;vertical&quot;</span> horizontalAlign=<span style="color: #ff0000;">&quot;center&quot;</span> width=<span style="color: #ff0000;">&quot;400&quot;</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Form</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:FormItem</span> label=<span style="color: #ff0000;">&quot;Nome&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextInput</span> id=<span style="color: #ff0000;">&quot;txtNome&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:FormItem</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:FormItem</span> label=<span style="color: #ff0000;">&quot;Apelido&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextInput</span> id=<span style="color: #ff0000;">&quot;txtApelido&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:FormItem</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> id=<span style="color: #ff0000;">&quot;b2&quot;</span> label=<span style="color: #ff0000;">&quot;Salvar&quot;</span> click=<span style="color: #ff0000;">&quot;addContato()&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Form</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGrid</span> id=<span style="color: #ff0000;">&quot;dgContatos&quot;</span> dataProvider=<span style="color: #ff0000;">&quot;{dpContatos}&quot;</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:columns</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGridColumn</span> headerText=<span style="color: #ff0000;">&quot;Nome&quot;</span> dataField=<span style="color: #ff0000;">&quot;nome&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGridColumn</span> headerText=<span style="color: #ff0000;">&quot;Apelido&quot;</span> dataField=<span style="color: #ff0000;">&quot;apelido&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:DataGridColumn</span> headerText=<span style="color: #ff0000;">&quot;Opções&quot;</span> width=<span style="color: #ff0000;">&quot;80&quot;</span> textAlign=<span style="color: #ff0000;">&quot;center&quot;</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:itemRenderer</span><span style="color: #7400FF;">&gt;</span></span>
						<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Component</span><span style="color: #7400FF;">&gt;</span></span>
							<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Excluir&quot;</span> width=<span style="color: #ff0000;">&quot;8&quot;</span> click=<span style="color: #ff0000;">&quot;outerDocument.removeContato()&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
						<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Component</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:itemRenderer</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:DataGridColumn</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:columns</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:DataGrid</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Panel</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 811px; width: 1px; height: 1px;">﻿</div>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=258&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/04/25/usando-shared-objects-no-flex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe AIR com SQLite</title>
		<link>http://luismessias.com/blog/2010/04/24/adobe-air-com-sqlite/</link>
		<comments>http://luismessias.com/blog/2010/04/24/adobe-air-com-sqlite/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 16:47:30 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[Air]]></category>
		<category><![CDATA[Exemplos]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[sqlite]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=228</guid>
		<description><![CDATA[
			
				
			
		
Adobe acrescentou a possibilidade de utilizar bancos de dados locais, quando eles criaram AIR. Este é um dos muitos recursos que ajudam a tornar o Adobe AIR uma ótima solução para aplicações desktop multi-plataforma. Neste rápido tutorial vou mostrar como criar um banco de dados de arquivo e abrir uma conexão com ele. O código [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F24%2Fadobe-air-com-sqlite%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F24%2Fadobe-air-com-sqlite%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><strong>Adobe</strong> acrescentou a possibilidade de utilizar bancos de dados locais, quando eles criaram <strong>AIR</strong>. Este é um dos muitos recursos que ajudam a tornar o <strong>Adobe AIR</strong> uma ótima solução para aplicações desktop multi-plataforma. Neste rápido tutorial vou mostrar como criar um banco de dados de arquivo e abrir uma conexão com ele. O código é muito simples, então vamos pular direto para ele.  A primeira coisa é criar um arquivo para o banco de dados. Em <strong>SQLite</strong>, que é o mecanismo de banco de dados utilizado no Adobe AIR, o banco de dados completo é armazenado em apenas um único arquivo. É realmente um sistema muito bom compacto e portátil. Eu usei a função applicationStorageDirectory sobre a classe File para criar um arquivo que aponta para o armazenamento de aplicação local e com o nome dbTest.db. No meu caso (no Seven), o caminho real no disco é C:\Users\usuário\AppData\Roaming\SQLiteExample\Local Store. O arquivo não é criado, até iniciar a aplicação.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">data</span>.<span style="color: #006600;">SQLStatement</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">errors</span>.<span style="color: #006600;">SQLError</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">Event</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">SQLErrorEvent</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">SQLEvent</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">TimerEvent</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">filesystem</span>.<span style="color: #006600;">File</span>;
<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Timer</span>;
&nbsp;
<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">collections</span>.<span style="color: #006600;">ArrayCollection</span>;
<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #006600;">Alert</span>;
<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">utils</span>.<span style="color: #006600;">ObjectUtil</span>;
&nbsp;
<span style="color: #0066CC;">import</span> org.<span style="color: #006600;">osmf</span>.<span style="color: #006600;">events</span>.<span style="color: #006600;">TimeEvent</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// sqlconn é uma variável que precisamos para definir uma</span>
<span style="color: #808080; font-style: italic;">// coneção com a nosso banco de dados</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> sqlconn:SQLConnection = <span style="color: #000000; font-weight: bold;">new</span> SQLConnection<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// sqlstate é um SQLStatement que precisamos para executar</span>
<span style="color: #808080; font-style: italic;">// o executar os comandos sql</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> sqlstate:SQLStatement = <span style="color: #000000; font-weight: bold;">new</span> SQLStatement<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #808080; font-style: italic;">// ArrayCollection é usado como dataprovider para a nossa datagrid.</span>
<span style="color: #808080; font-style: italic;">// Tem de ser bindable para que os dados em nosso datagrid</span>
<span style="color: #808080; font-style: italic;">// mudem automaticamente, quando mudamos o nosso ArrayCollection</span>
<span style="color: #66cc66;">&#91;</span>Bindable<span style="color: #66cc66;">&#93;</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> dp:ArrayCollection = <span style="color: #000000; font-weight: bold;">new</span> ArrayCollection<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// função que chamamos no inicio da aplicação</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// primeiro precisamos de &quot;setar&quot; o arquivo para o banco de dados</span>
	<span style="color: #808080; font-style: italic;">// Se o banco de dados não existe, ele irá criar</span>
	<span style="color: #808080; font-style: italic;">// um banco de dados quando inicia</span>
	<span style="color: #000000; font-weight: bold;">var</span> db:File = File.<span style="color: #006600;">applicationStorageDirectory</span>.<span style="color: #006600;">resolvePath</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;dbTest.db&quot;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// depois de &quot;setar&quot; o arquivo para o banco de dados,</span>
	<span style="color: #808080; font-style: italic;">// precisamos de abri-lo.</span>
	sqlconn.<span style="color: #006600;">openAsync</span><span style="color: #66cc66;">&#40;</span>db<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// precisamos de &quot;setar&quot; os event listners de para que possamos</span>
	<span style="color: #808080; font-style: italic;">// saber se temos algum erro, quando o banco de dados é</span>
	<span style="color: #808080; font-style: italic;">// totalmente aberto e também para saber quando recebemos um</span>
	<span style="color: #808080; font-style: italic;">// resultado de uma query sql, o ultimo é para ler</span>
	<span style="color: #808080; font-style: italic;">// os dados do banco de dados.</span>
&nbsp;
	sqlconn.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>SQLEvent.<span style="color: #006600;">OPEN</span>, db_opened<span style="color: #66cc66;">&#41;</span>;
	sqlconn.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>SQLErrorEvent.<span style="color: #0066CC;">ERROR</span>, <span style="color: #0066CC;">error</span><span style="color: #66cc66;">&#41;</span>;
	sqlstate.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>SQLErrorEvent.<span style="color: #0066CC;">ERROR</span>, <span style="color: #0066CC;">error</span><span style="color: #66cc66;">&#41;</span>;
	sqlstate.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>SQLEvent.<span style="color: #006600;">RESULT</span>, resault<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> db_opened<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:SQLEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// quando um banco de dados é aberto precisamos do link do SQLStatment</span>
	<span style="color: #808080; font-style: italic;">// para a nossa conexão, se não &quot;setar&quot; esta conexão vamos ter um</span>
	<span style="color: #808080; font-style: italic;">// erro quando executar o SQLStatment.</span>
	sqlstate.<span style="color: #006600;">sqlConnection</span> = sqlconn;
	<span style="color: #808080; font-style: italic;">// escrevemos o SQLStatment.</span>
	<span style="color: #808080; font-style: italic;">// no SQLStatment criamos uma tabela no banco de dados com o nome &quot;aluno&quot;,</span>
	<span style="color: #808080; font-style: italic;">// com 3 colunas (id, nome, apelido)</span>
	sqlstate.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;CREATE TABLE IF NOT EXISTS aluno &quot;</span> +
		<span style="color: #ff0000;">&quot;( id INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT, apelido TEXT);&quot;</span>;
	<span style="color: #808080; font-style: italic;">// depois de conectar o SQLStatment  a nossa SQLConnection e escrever o</span>
	<span style="color: #808080; font-style: italic;">// comando sql, precisamos de executar o SQLStatment</span>
	<span style="color: #808080; font-style: italic;">// nada vai mudar até executar o SQLStatment.</span>
	sqlstate.<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// depois de carregar o banco de dados e criar a tabela</span>
	<span style="color: #808080; font-style: italic;">// se já não existir, chamamos de método refresh() para popular o datagrid</span>
	refresh<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// função para adicionar um item no banco de dados</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addItem<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// este comando SQL é para adicionar um item na tabela</span>
	sqlstate.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;INSERT INTO aluno (nome, apelido) &quot;</span> +
		<span style="color: #ff0000;">&quot;VALUES('&quot;</span>+nome.<span style="color: #0066CC;">text</span>+<span style="color: #ff0000;">&quot;','&quot;</span>+apelido.<span style="color: #0066CC;">text</span>+<span style="color: #ff0000;">&quot;');&quot;</span>;
	sqlstate.<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	refresh<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// função para chamar quando queremos fazer o refresh de dados no datagrid</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> refresh<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:TimerEvent = <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// objeto timer que precisamos se o SQLStatment está ainda em execução,</span>
	<span style="color: #808080; font-style: italic;">// caso contrário tentamos novamente depois de 10 milliseconds.</span>
	<span style="color: #000000; font-weight: bold;">var</span> timer:Timer = <span style="color: #000000; font-weight: bold;">new</span> Timer<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span>,<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
	timer.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>TimerEvent.<span style="color: #006600;">TIMER</span>, refresh<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">!</span>sqlstate.<span style="color: #006600;">executing</span> <span style="color: #66cc66;">&#41;</span>
		<span style="color: #808080; font-style: italic;">// precisamos checar se o SQLStatment está ainda executando</span>
		<span style="color: #808080; font-style: italic;">// o ultimo comando sql.</span>
		<span style="color: #808080; font-style: italic;">// se sim, usamos o timer para voltar a executar em 10 milliseconds.</span>
		<span style="color: #808080; font-style: italic;">// senão checar, podemos ter erro pq o SQLStatment</span>
		<span style="color: #808080; font-style: italic;">// não pode executar 2 comandos aomesmo tempo.</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">// SQLStatment que retorna todos os dados da tabela &quot;aluno&quot;.</span>
		sqlstate.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;SELECT * FROM aluno&quot;</span>
		sqlstate.<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">else</span>
	<span style="color: #66cc66;">&#123;</span>
		timer.<span style="color: #0066CC;">start</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// função que é chamada se receber algum resultado do comando sql.</span>
<span style="color: #808080; font-style: italic;">// também pode ser chamado, quando for inserir algum dado</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> resault<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:SQLEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// com o sqlstate.getResult().data pegamos o array de objetos</span>
	<span style="color: #808080; font-style: italic;">// para cada linha do banco de dados</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">data</span>:<span style="color: #0066CC;">Array</span> = sqlstate.<span style="color: #006600;">getResult</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">data</span>;
	<span style="color: #808080; font-style: italic;">// passamos o array de objetos para o</span>
	<span style="color: #808080; font-style: italic;">// dataprovider para popular o datagrid</span>
	dp = <span style="color: #000000; font-weight: bold;">new</span> ArrayCollection<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// função que remove um item do banco de dados</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> remove<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// SQLStatment para excluir da tabela o id que tem o</span>
	<span style="color: #808080; font-style: italic;">// mesmo número que selecionamos no datagrid para excluir</span>
	sqlstate.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;DELETE FROM aluno WHERE id=&quot;</span>+dp<span style="color: #66cc66;">&#91;</span>dg.<span style="color: #006600;">selectedIndex</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">id</span>;
	sqlstate.<span style="color: #006600;">execute</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	refresh<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">// função que é chamada quando recebemos um erro do comando sql</span>
<span style="color: #808080; font-style: italic;">// ou conexão sql e mostra esse erro em um alert.</span>
<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">error</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>:SQLErrorEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	Alert.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Aplicação básica para entender e aprender como você pode armazenar dados em banco de dados SQLite. O exemplo é muito básico, mas você deve pegar uma idéia de como fazê-lo.</p>
<p>Aplicativo AIR <a href="http://luismessias.com/blog/exemplos/air/sqlite/SQLiteExample.air" target="_blank">aqui</a> (view source habilitado).</p>
<p style="text-align: center;"> <iframe frameborder="0" src="http://luismessias.com/blog/exemplos/air/sqlite/index.html" width="100%" height="200"></iframe> </p>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=228&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/04/24/adobe-air-com-sqlite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como iniciar Programação em ASP.NET</title>
		<link>http://luismessias.com/blog/2010/04/23/como-iniciar-programacao-em-asp-net/</link>
		<comments>http://luismessias.com/blog/2010/04/23/como-iniciar-programacao-em-asp-net/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 05:02:11 +0000</pubDate>
		<dc:creator>luismessias</dc:creator>
				<category><![CDATA[ASP .NET]]></category>

		<guid isPermaLink="false">http://luismessias.com/blog/?p=217</guid>
		<description><![CDATA[
			
				
			
		




O que é?
Feliz  cada vez mais nos estamos a virar mais para o “mundo” da WEB e para a CLOUD.
A prever isso a Microsoft lançou já há alguns anos o ASP.NET (Active Server Pages), que ao contrário do que se diz não é uma linguagem de programação mas sim uma Framework para desenvolvimento WEB.
Como é [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F23%2Fcomo-iniciar-programacao-em-asp-net%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fluismessias.com%2Fblog%2F2010%2F04%2F23%2Fcomo-iniciar-programacao-em-asp-net%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><!-- ARTIGO 2009/09/14 19-00-06 --></p>
<p style="text-align: justify;">
<p style="text-align: center;"><a href="http://luismessias.com/blog/wp-content/uploads/2010/04/asp_net.jpg"><img class="size-full wp-image-216 aligncenter" title="asp_net" src="http://luismessias.com/blog/wp-content/uploads/2010/04/asp_net.jpg" alt="" width="376" height="72" /></a></p>
<p style="text-align: center;">
<p style="text-align: justify;"><strong>O que é?</strong><br />
Feliz  cada vez mais nos estamos a virar mais para o “mundo” da WEB e para a CLOUD.<br />
A prever isso a Microsoft lançou já há alguns anos o ASP.NET (Active Server Pages), que ao contrário do que se diz não é uma linguagem de programação mas sim uma Framework para desenvolvimento WEB.<br />
Como é uma Framework assente na Framework .NET podemos usar para programar as linguagens C# e VB.NET. Em ASP.NET criamos páginas (WEB Forms) dinâmicas em que o código é corrido no servidor como é o caso de outras tecnologias (PHP, JSP).</p>
<p style="text-align: justify;"><strong>Pressupostos:</strong><br />
Não que seja imperativo mas para sermos bons programadores de WEB, antes de sequer abrir o Visual Studio, temos de entender o mundo que vai por trás do browser.<br />
Temos de entender o protocolo HTTP, Request / Response, ciclos de vida de uma página, diferença entre cliente e servidor, State Management, PostBack, JavaScript, CSS e claro HTML.<br />
Não irei falar sobre tudo isto, apenas do que está relacionado com o ASP.NET, mas é bom sabermos o que está por detrás de cada ação que fazemos no browser</p>
<p style="text-align: justify;"><strong>Cliente VS Servidor:</strong><br />
Como já referi uma Web Form ASP.NET é executada do lado do servidor, o que significa que cada vez que pedimos (Request) essa página ela é executada no servidor e posteriormente devolvida (Response) para o browser em HTML, esta operação ocupa largura de banda e tempo, logo se o podermos evitar ou então não enviar a página toda melhor (Partial PostBack (AJAX)), podemos concretizar isso usando JavaScript, que é uma linguagem que corre directamente no Browser (Cliente) ou AJAX (Javascript assíncrono e XML).<br />
Não significa que no cliente é melhor ou que no servidor é mais seguro, o grande desafio das WebForms é a fusão entre código do lado do cliente e servidor, tornando assim a página rápida e menos pesada.</p>
<p style="text-align: justify;"><strong>PostBack:</strong><br />
O PostBack é o nome que se dá à operação de Request e Response, ou seja, quando uma página inteira e o seu conteúdo são enviados para o servidor, processados e devolvidos para o browser.<br />
Sabem quando fazem refresh a uma página ou carregam num botão e o browser fica branco e depois aparecem os conteúdos? É isso um PostBack.<br />
Mais tarde falaremos da propriedade Page.IsPostBack do ASP.NET.<br />
Felizmente existem formas de contornar isso graças ao AJAX que permite que sejam só enviados pedaços da página e de modo assíncrono o que permite continuar a trabalhar sem o browser bloquear.</p>
<p style="text-align: justify;"><strong>Ciclos de vida de uma página:</strong><br />
Falaremos aqui do mais importante e utilizado o Load.<br />
É a melhor altura para fazer acções devido ao facto de que os controlos já estão todos carregados, o viewstate disponível e ainda não é tarde para fazer alterações pois não chegou ao Render que é quando o HTML da página já está todo desenhado.</p>
<p style="text-align: justify;"><strong>State Management:</strong><br />
Entende-se por State Management a capacidade do ASP.NET poder guardar informação entre PostBacks da mesma ou de outras (várias) páginas.<br />
Existem várias opções relacionadas com desempenho e capacidade, cliente ou servidor:</p>
<p style="text-align: justify;"><strong>Do lado do cliente:</strong></p>
<p style="text-align: justify;"><strong>View State:</strong> o view state “vive” nas páginas, o viewstate é criado a partir de cada controlo que adicionamos á nossa página para, entre postbacks, poder manter o seu valor.</p>
<p style="text-align: justify;">Ex: Temos uma caixa de texto na página e ao carregar num botão a página faz postback mas o valor permanece na caixa de texto.<br />
Vantagens: Simples, não requer implementação<br />
Desvantagens: Não é recomendado para guardar muita informação pois a página ficará lenta.</p>
<p style="text-align: justify;"><strong>Hidden Fields:</strong> Uma espécie de variável global na própria página<br />
Vantagens: Fácil implementação<br />
Desvantagens: Pouco seguro (ao ver o source da página está lá o valor) e claro pesa na página</p>
<p style="text-align: justify;"><strong>Cookies:</strong> Todos já ouvimos este termo, são pequenos ficheiros guardados no lado do cliente para poupar viagens desnecessárias ao servidor.<br />
Vantagens: Pode ser configurado o tempo de expiração e simples implementação<br />
Desvantagens: Pouca capacidade de armazenamento, cliente tem de aceitar cookies, pouco seguro pois o cliente pode alterar as informações.</p>
<p style="text-align: justify;"><strong>Do lado do Servidor:</strong></p>
<p style="text-align: justify;"><strong>Application State: </strong>Informação guardada no servidor disponível em todas as páginas e utilizadores até que o processo da aplicação termine.<br />
Vantagens: Variáveis globais, fácil implementação.<br />
Desvantagens: Ocupa memória no servidor.</p>
<p style="text-align: justify;"><strong>Session State:</strong> Informação guardada no servidor disponível em todas as páginas enquanto a sessão do utilizador estiver disponível (mesmo Browser), tem limite de tempo de inactividade.<br />
Vantagens: Variáveis globais, fácil implementação.<br />
Desvantagens: Ocupa memória no servidor.</p>
<p style="text-align: justify;"><strong>Ferramentas úteis para ajudar no desenvolvimento e debug:</strong><br />
Firebug: http://getfirebug.com/<br />
Fiddler: http://www.fiddler2.com/fiddler2/</p>
<p style="text-align: justify;">Cumpz</p>
<img src="http://luismessias.com/blog/?ak_action=api_record_view&id=217&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://luismessias.com/blog/2010/04/23/como-iniciar-programacao-em-asp-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
