<?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>TSW - That Should Work Blog &#187; PHP</title>
	<atom:link href="http://blog.msdevstudio.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.msdevstudio.net</link>
	<description>Flash, Flex, Web e Aplicações Ricas para Internet!</description>
	<lastBuildDate>Tue, 07 Feb 2012 18:30:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Flash/Flex+PHP; Encriptação AES 256</title>
		<link>http://blog.msdevstudio.net/2011/05/24/flashflexphp-encriptacao-aes-256/</link>
		<comments>http://blog.msdevstudio.net/2011/05/24/flashflexphp-encriptacao-aes-256/#comments</comments>
		<pubDate>Tue, 24 May 2011 19:33:18 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[AES 256]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[cifrados]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[protecção]]></category>

		<guid isPermaLink="false">http://blog.msdevstudio.net/?p=2085</guid>
		<description><![CDATA[Olá fieis leitores!! Deve ter reparado que tenho andado meio ausente, deve-se ao facto de andar com bastante trabalho e da minha pequena Luana estar cada vez mais crescida e não fica quieta Mas bom, não se pode ter tudo não é verdade??! Ela é Linda!! Bom, venho aqui escrever este artigo devido a uma [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Olá fieis leitores!!</p>
<div id="attachment_2086" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-2086" title="Protection" src="http://blog.msdevstudio.net/wp-content/uploads/2011/05/Fotolia_17230394_Subscription_XXL-150x150.jpg" alt="" width="150" height="150" /><p class="wp-caption-text">Imagem: pt.fotolia.com</p></div>
<p style="text-align: justify;">Deve ter reparado que tenho andado meio ausente, deve-se ao facto de andar com bastante trabalho e da minha pequena Luana estar cada vez mais crescida e não fica quieta <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mas bom, não se pode ter tudo não é verdade??! Ela é Linda!!</p>
<p style="text-align: justify;">Bom, venho aqui escrever este artigo devido a uma dúvida que me foi colocada no fórum (http://forum.msdevstudio.com) onde me era perguntado como implementar uma encriptação 512 bits usando a conhecida libraria as3crypto. (<a href="http://code.google.com/p/as3crypto/">http://code.google.com/p/as3crypto/</a>)</p>
<p style="text-align: justify;">Apesar de achar esta libraria bem completa, também a acho demasiado complicada.. foi por isso que quando pensei em implementar uma solução destas no passado andei à procura de uma outra solução que não fizesse apenas a encriptação em Flex/As3, mas também que a mesma string pudesse ser desencriptada no PHP. Encontrei depois de algumas pesquisas uma implementação super interessante no blog (<a href="http://www.lostinactionscript.com/">http://www.lostinactionscript.com</a>) que faz precisamente isto. Ecriptação AES duas vias (Flex&lt;-&gt;PHP) e posso afirmar que até hoje não encontrei qualquer problema usando este mesmo método, apesar de ter que usar uma biblioteca diferente no php.</p>
<p style="text-align: justify;">No fórum, perguntavam-me como implementar encriptação 512 bits (não enumerava qual o algoritmo, no entanto sugeri o AES 256). Na minha humilde opinião, uma encriptação AES usando  256 bits é mais que suficiente visto que, caso não saibam, o AES é dos algoritmos mais seguros do mundo e que se bem implementado com as devidas preocupações com chaves, é teoricamente impossível de desencriptar. Este algoritmo é largamente conhecido e até usado para encriptar dados de documentos do Governo dos Estados Unidos.</p>
<p style="text-align: justify;">Esta implementação no flex e no php é bem simples, basta fazerem o download do arquivo usado no site lostinactionscript.com (<a title="AES" href="http://lostinactionscript.googlecode.com/files/AES.zip">download aqui</a>) e no nele (.zip) encontram a class/caminho:  AES/com/lia/crypto/AES.as. Esta class será a que vamos usar no Flex, para isso criem a mesma estrutura de pastas no vosso projeto flex e copiem esta class para lá. (com/lia/crypto/Aes.as).</p>
<p style="text-align: justify;">No php, as classes para download podem ser encontradas aqui: <a href="http://www.movable-type.co.uk/scripts/aes-php.html">http://www.movable-type.co.uk/scripts/aes-php.html</a> (Devem criar dois ficheiros .php com o conteúdo apresentado nesse artigo. AesCtr.php e Aes.php)</p>
<p style="text-align: justify;">Depois disto, basta no flex usar:</p>
<blockquote><p>protected function encripta() :void {</p>
<p>var stringEncriptada:String = AES.encrypt(&#8220;Texto a encriptar&#8221;, &#8220;chave&#8221;, 256); //Usamos 256bits</p>
<p>}</p></blockquote>
<p style="text-align: justify;">E no php para desencriptar:</p>
<blockquote><p>function desencripta() {</p>
<p>$stringDesencriptada = AesCtr::decrypt($stringEncriptada,&#8221;chave&#8221;, 256);</p>
<p>}</p></blockquote>
<p style="text-align: justify;">Para o processo inverso (encriptar no php e desencriptar no flex), temos no PHP:</p>
<blockquote><p>function encripta() {</p>
<p>$stringEncriptada = AesCtr::encrypt(&#8220;Texto a encriptar&#8221;,&#8221;chave&#8221;,256);</p>
<p>}</p></blockquote>
<p style="text-align: justify;">e no Flex:</p>
<blockquote><p>protected function desencripta():void {</p>
<p>var stringDesencriptada:String = AES.decrypt(stringEncriptada, &#8220;chave&#8221;, 256);</p>
<p>}</p></blockquote>
<p style="text-align: justify;">E pronto, temos o nosso sistema para encriptação / desencriptação em ambos os sentidos. Torna-se muito util quando têm que passar dados mais sensí­veis via AMF (zend, amfphp. weborb) já que ao enviar os dados cifrados tornasse muito mais seguro. Fica o aviso, este algoritmo é seguro o suficiente para grande partes das necessidades, mas não esqueça de usar uma chave segura visto que a segurança depende sempre da implementação. Não é o algoritmo que têm falhas, nós que que as causamos! <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Bom, espero que tenha seja util nos vossos projetos.</p>
<p style="text-align: justify;">Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2011/05/24/flashflexphp-encriptacao-aes-256/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>off-folio &#8211; WordPress Project</title>
		<link>http://blog.msdevstudio.net/2010/02/15/off-folio-wordpress-project/</link>
		<comments>http://blog.msdevstudio.net/2010/02/15/off-folio-wordpress-project/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 11:01:14 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[portfolio]]></category>
		<category><![CDATA[customização]]></category>
		<category><![CDATA[personalização]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=1290</guid>
		<description><![CDATA[Bom, vamos a um off-folio, una nova categoria de artigos que vai falar um pouco dos meus projetos pessoais&#8230; enfim, algo +- como um simples portfolio.. O projeto trata-se do remake do antigo site do shobaukai.lu, um grupo de pessoas dedicados ao ensino e pratica do Kendo. Considerada por muitos uma arte marcial e por [...]]]></description>
			<content:encoded><![CDATA[<p>Bom, vamos a um off-folio, una nova categoria de artigos que vai falar um pouco dos meus projetos pessoais&#8230; enfim, algo +- como um simples portfolio..</p>
<p>O projeto trata-se do remake do antigo site do shobaukai.lu, um grupo de pessoas dedicados ao ensino e pratica do Kendo. Considerada por muitos uma arte marcial e por outros apenas mais um desporto.</p>
<p>O site foi desenvolvido sobre a plataforma WordPress com muitas modificações do tema original cedido pelo mesmo cliente. O principal objectivo do projeto era incorporar todos os seguintes pontos:</p>
<ul>
<li>Uma galeria de images simples e rapida de atualizar.</li>
<li>A possibilidade de inserir videos e audio personalizado.</li>
<li>Apresentar os agendamentos dos treinos e encontros.</li>
<li>Um apresentação visual simples, e de facil navegação.</li>
<li>Personalização do tema. Inserção de conteudo e logotipo.</li>
<li>Personalização de niveis de administração / plugins</li>
</ul>
<p>Apesar de ser um projeto que aparentemente seria de facil execução, o elevado numero de plugins e algumas delas incompativeis com as ultima versão do WordPress, foi necessário proceder a algumas personalizações como na Galeria, que se trata de uma plugin que lista as entradas de determinados albuns do picasa, mas também na agenda e em alguns outros códigos fonte de plugins. O resultafo final é um blog rapido, simples e principalmente com foco na apresentação e informação visual do que o leitor pretende. Seguem algumas imagens.</p>
<p><a href="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-09-47-13.png"><img class="alignnone size-thumbnail wp-image-1291" style="margin: 4px; border: solid 1px #cacaca; padding: 3px;" title="Home" src="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-09-47-13-150x150.png" alt="Home" width="150" height="150" /></a><a href="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-09-47-35.png"><img class="alignnone size-thumbnail wp-image-1292" style="margin: 4px; border: solid 1px #cacaca; padding: 3px;" title="Pages" src="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-09-47-35-150x150.png" alt="Pages" width="150" height="150" /></a><a href="http://blog.msdevstudio.net/wp-content/uploads/2010/02/15-02-2010-09-48-35.png"><img class="alignnone size-thumbnail wp-image-1294" style="margin: 4px; border: solid 1px #cacaca; padding: 3px;" title="Contact" src="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-09-48-35-150x150.png" alt="Contact" width="150" height="150" /></a><a href="http://blog.msdevstudio.net/wp-content/uploads/2010/02/15-02-2010-09-48-57.png"><img class="alignnone size-thumbnail wp-image-1295" style="margin: 4px; border: solid 1px #cacaca; padding: 3px;" title="Agenda" src="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-09-48-57-150x150.png" alt="Agenda" width="150" height="150" /></a><a href="http://blog.msdevstudio.net/wp-content/uploads/2010/02/15-02-2010-09-49-17.png"><img class="alignnone size-thumbnail wp-image-1296" style="margin: 4px; border: solid 1px #cacaca; padding: 3px;" title="Galeria" src="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-09-49-17-150x150.png" alt="Galeria" width="150" height="150" /></a><a href="http://blog.msdevstudio.net/wp-content/uploads/2010/02/15-02-2010-10-10-01.png"><img class="alignnone size-thumbnail wp-image-1297" style="margin: 4px; border: solid 1px #cacaca; padding: 3px;" title="Post" src="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-10-10-01-150x150.png" alt="Post" width="150" height="150" /></a><a href="http://blog.msdevstudio.net/wp-content/uploads/2010/02/15-02-2010-10-11-14.png"><img class="alignnone size-thumbnail wp-image-1298" style="margin: 4px; border: solid 1px #cacaca; padding: 3px;" title="Single" src="http://msdevstudio.com/blog/wp-content/uploads/2010/02/15-02-2010-10-11-14-150x150.png" alt="Single" width="150" height="150" /></a></p>
<p>Site: <a href="http://www.shobukai.lu">http://www.shobukai.lu</a></p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2010/02/15/off-folio-wordpress-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flash Builder 4; Uma análise mais a sério!</title>
		<link>http://blog.msdevstudio.net/2009/06/26/flash-builder-4-uma-analise-mais-a-serio/</link>
		<comments>http://blog.msdevstudio.net/2009/06/26/flash-builder-4-uma-analise-mais-a-serio/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 11:35:36 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Análises]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Builder 4]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Analise]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Gumbo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[spark]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[zendFramework]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=1056</guid>
		<description><![CDATA[Bem, e as novidade não são poucas&#8230;.muita coisa melhorou e muitas outras coisas foram acrescentadas nesta nova versão. Depois da publicação de um artigo meu em inglês no thetechlabs foi acordada também a publicação aqui no blog da sua versão em Português e aqui vai. Neste artigo vamos discutir alguns pontos desta nova versão do [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, e as novidade não são poucas&#8230;.muita coisa melhorou e muitas outras coisas foram acrescentadas nesta nova versão. Depois da publicação de um artigo meu em inglês no <a href="http://thetechlabs.com">thetechlabs</a> foi acordada também a publicação aqui no blog da sua versão em Português e aqui vai.</p>
<p style="text-align: justify; ">Neste artigo vamos discutir alguns pontos desta nova versão do antigo Flex Builder agora chamado Flash Builder, heis os pontos aqui discutidos:</p>
<ul>
<li><strong>Criando um novo Projecto.</strong></li>
<li><strong>Namespaces</strong></li>
<li><strong>Temas e Skins</strong></li>
<li><strong>Novidades a nivel do Action Script &amp; MXML</strong></li>
<li><strong>Wizard de código e Serviços</strong></li>
<li><strong>Ligações de dados; Exemplo PHP (+ ZendFramework)</strong></li>
<li><strong>Interacção com dados</strong></li>
<li><strong>Documentação AS3</strong></li>
<li><strong>Unit Tests</strong></li>
<li><strong>Interacção com o Flash Catalyst</strong></li>
<li><strong>Notas finais</strong></li>
</ul>
<p style="text-align: justify; ">Mas antes de começar a alongar-me na introdução vamos dar uma vista de olhos na IDE que à primeira vista parecer quase igual, mas na realidade só é tão igual ao Flex Builder 3 até criar-mos um primeiro projecto. À primeira vista apenas se sobressai um novo painel ao fundo, onde podem ver 2 tabs Data/Services e Network Monitor que são nova nesta versão, e acreditem que se tornam muito uteis. Vejam então a tão falata IDE: (cliquem para ver maior).</p>
<p style="text-align: center;"><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/1.jpg"><img class="size-medium wp-image-1057   aligncenter" title="Flash Catalyst IDE" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/1-300x182.jpg" alt="1" width="300" height="182" /> </a></p>
<p style="text-align: justify; ">No ecrã principal podem também encontrar alguns links que são muito uteis, principalmente para quem está a iniciar no Flash Buider, têm também um link para o Tour de Flex que até foi actualizado com alguns elementos do Flex 4, vale a pena ver. De resto, tudo igual apenas com a excepção do logotipo do eclipse ao lado direito, que parece dar relevo à excelente e versatil plataforma eclipse&#8230;.<span id="more-1056"></span></p>
<p style="text-align: justify; ">
<p style="text-align: justify; "><strong>Criando um novo Projecto.</strong></p>
<p style="text-align: justify; ">O processo é o mesmo, mas ao clicarem no menu File encontram já novidades, como o Import Flex Project (FXP) e o Export Flex Project (FXP) de onde podem importar projectos exportados pelo Flash Builder, mas também layouts feitos no Flash Catalyst. Mas vamos então criar um novo projecto menu File-&gt;New-&gt;e voilá! mais novidades, onde encontram o Test Case Class e Test Suite Class, que se apresentam como dialogo para criação de Classes para Unit Tests, algo de novo nesta nova versão.</p>
<p style="text-align: justify; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/browser.JPG"><img class="alignleft size-medium wp-image-1060" title="browser" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/browser-208x300.jpg" alt="browser" width="208" height="300" /></a>Selecionem então Flex Project, onde de entre as opções podem encontrar a nova versão do Flex SDK, a 4.0 (Podem ainda usar uma versão anterior para  desenvolver o vosso projecto, mas muitas das novoas opções não estarão disponiveis.) Dêm um nome ao vosso projecto, por exemplo, FlashBuilderTest, e cliquem em OK! Mais novidades&#8230; desta feita a no explorador do projecto vemos agora a nossa aplicação dentro de um package default, onde já podemos imaginar uma nova estrutura de pastas, junto com esta novidade, vemos ainda uma &#8220;pasta&#8221; Flex 4 onde encontramos agora todas as partes das frameworks como RSL&#8217;s (Runtime Shared Libraries), onde ainda podemos explorar os seus packages e ver todos as classes e implementações das mesmas.</p>
<p style="text-align: justify; ">Esta nova estrutura ajuda-nos a compreeender melhor as relações entre componentes e a sua disposição de organização. Podem encontrar todos os elementos que compõem a framework do Flex 4, como a nova textLayout framework/component, as skins do spark (sparkskins.swc), a libraria datavisualization, que inclui os graficos disponibilizados no flex, a libraria RPC e a libraria base do Flex 4.</p>
<p style="text-align: justify; ">Ao fundo, ao lado do painel que falei anteriormente, Data/Services, podemos encontrar um novo tab, ASDoc que nos permite criar a documentação para as nossas classes que será disponibilizada junto com a class. Muito util para projectos em equipa onde temos que partilhar informações sobre a nossa class.</p>
<p style="text-align: justify; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/tabedPanel.JPG"><img class="alignleft size-full wp-image-1065" title="tabedPanel" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/tabedPanel.JPG" alt="tabedPanel" width="385" height="28" /></a></p>
<p style="text-align: justify; ">
<p style="text-align: justify; ">
<p style="text-align: justify; "><strong>Namespaces</strong></p>
<p style="text-align: justify; ">A nivel do código, podemos encontrar já os novos namespaces do Flex 4 em uso:</p>
<p style="text-align: justify; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/spark.JPG"><img class="alignleft size-full wp-image-1061" title="spark" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/spark.JPG" alt="spark" width="324" height="16" /></a></p>
<p style="text-align: justify; ">
<p style="text-align: justify; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/spark2.JPG"><img class="alignleft size-full wp-image-1063" title="spark2" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/spark2.JPG" alt="spark2" width="348" height="18" /></a></p>
<p style="text-align: justify; ">
<p style="text-align: justify; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/mx1.JPG"><img class="alignleft size-full wp-image-1064" title="mx" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/mx1.JPG" alt="mx" width="347" height="16" /></a></p>
<p style="text-align: justify; ">
<p style="text-align: justify; ">e aqui começam verdadeiramente as novidades do Flex 4 e do Flash Builder,  os novos namespaces:</p>
<ul style="text-align: justify; ">
<li><strong>fx</strong> &#8211; O novo namespace do Flex Builder 4, o que veio substituir o mx como primeiro e unico namespace carregado por defeito nas aplicações Flex 3</li>
<li><strong>s</strong> &#8211; Spark, Uma das grande novidades, traz sobretudo muitos componentes visuais direcionados exclusivamente para a versão 10 do flash player, uma nova arquitectura de componentes que nos permite extender e personalizar ainda mais (quase até ao limite) os componentes nativos e novos componentes derivados.</li>
<li><strong>mx</strong> &#8211; O nosso antigo namespace, deste pouco há a falar&#8230; componentes habituais do flex 3.</li>
</ul>
<p style="text-align: justify; ">Estes novos namespaces trazem muitos componentes novos que vão precisar de algum tempo para nos habituar-mos a eles.</p>
<p style="text-align: justify; ">Se mudarem para a parte visual, no explorador de componentes mais algumas novidades, de entre novos componentes também mudou a organização destes, agora apresentados mais organizadamente em varias &#8220;pastas&#8221;. Arrastem um Button para o stage, verão que ele é carregado directamente do namespace spark, se voltarem ao código verão isso mesmo:</p>
<p style="text-align: justify; ">&lt;s:Button ..&gt; se copiarem este código e mudarem o prefixo para mx: em vez de s: o botão fica exactamente igual, mas nas suas propriedades as coisas mudam bastante, o noso Button Spark possui muito mais possibilidades de personalização, principalmente a nivel dos Styles.</p>
<p style="text-align: justify; "><strong>Temas e Skins</strong></p>
<p style="text-align: justify; ">Esta nova versão traz pode defeito o novo tema Spark, e agora na nova versão do flash builder é mais facil do que nunca trocar de skin, em apenas alguns instantes temos a nossa aplicação completamente personalizada sem escrever uma linha de código css tudo isto graças ao theme switcher que vem incorporado da aplicação. Na area visual, cliquem no stage e na tab <strong>Appearence </strong>vão encontrar desta novidade, onde indica current theme: spark e se clicarem em cima dele, vai-se abrir a janela para escolher um novo tema se assim desejarmos. E ainda conta com o botão <strong>find more themes</strong> que vai aumentar ainda mais a lista de temas quando estes começarem a ser criados pela comunidade. Vejam a janela de que falo (cliquem para ver maior)</p>
<p style="text-align: center;"><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/themes.JPG"><img class="aligncenter size-full wp-image-1083" title="themes" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/themes.JPG" alt="themes" width="500" height="345" /></a></p>
<p style="text-align: justify; ">
<p style="text-align: justify; "><strong>Novidades a nivel do Action Script &amp; MXML</strong></p>
<p style="text-align: justify; ">Muitas! Não no Action Script, mas da maneira como o Flash  Builder lida com o código, quer MXML quer Action Script, principalmente no action script. Mas vamos começar pelo MXML. Ao escreverem um simples &#8220;&lt;&#8221; verão a maior das funcionalidades&#8230; as documentação da class fica disponivel imediatamente no editor, sendo mesmo possivel clickar no &#8220;Tab&#8221; para ganhar o focus e poder percorrer livremente os varios componentes e agora também namespaces.</p>
<p style="text-align: justify; ">Qualquer elemento visual, por exemplo um button possui também a sua documentação visivel, quer na class principal (Button) mas se colocarem o rato também nas suas propriedades, verão que também possui documentação, sendo que agora será muito mais facil obter informação sobre as propriedades de determinado elemento, sem sequer ter que sair da applicação.</p>
<p style="text-align: center; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/info.jpg"><img class="size-full wp-image-1066   aligncenter" title="info" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/info.jpg" alt="info" width="610" height="220" /></a></p>
<p style="text-align: justify; ">A nivel de Action Script, as alterações começam ainda no MXML, assim que pretendemos escrever um pedaço de código em action script iriamos iniciar a area de action script no mxml com o &lt;mx:script&#8230; mas isto era no flex 3, agora foi susbtituido pelo &lt;fx:script..&gt;, tendo já por defeito o novo namespace e tendo obrigatóriamente que ser escrito assim, o mesmo se passa com o style e basicamente com todos os anteriores componentes do mx.</p>
<p><img class="alignright size-full wp-image-1067" title="import" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/import.jpg" alt="import" width="121" height="179" /></p>
<p style="text-align: justify; ">Mas vamos a um exemplo em Action Script, escrevam apenas import, e como podem ver já vão encontrar algumas diferenças no packages disponiveis, de entre eles as novidades <strong>authoring, fl, flashx e spark</strong> onde encontraremos centenas de novidades.</p>
<p style="text-align: justify; ">
<p style="text-align: justify; ">Escrevam apenas: <strong>import mx.controls.Alert; </strong></p>
<p style="text-align: justify; ">Assim que iniciam a escrita do Alert, é-vos apresentado imediatamente a documentção da class, o que acaba por simplificar em muito a procura de determinado componente, bem como saber a sua utilização.</p>
<p style="text-align: justify; ">Se passarem o rato por cima do Alert verão a mesma documentação sempre sem sair da IDE, se clicarem no F2 podem ver o resto da documentação da Class e de classes relacionadas. Esta informação está disponivel em quase todos os componentes, o que se torna numa das melhores ajudas para o programador, principalmente com tantas novidades esta é sem duvida a melhor aposta deste novo Flash Builder. Toda esta informação da class pode também ser vista no painel ASDoc, bastando colocar o rato sobre a class que querem ver a documentação.</p>
<p style="text-align: justify; ">Nesta documentação podem encontrar além das classes relacionadas, também a versão do flex e a versão do flash player / Air necessária para que este controlo seja visualizado.</p>
<p style="text-align: justify; "><strong>Wizard de código e Serviços</strong></p>
<p style="text-align: justify; ">Via MXML ao lidar com eventos, também é possivel gerar automaticamente o código para lidar com esse evento, chamado de <strong>Generate Event Listener</strong> onde apenas um click gera a respectiva função de handling.</p>
<p style="text-align: justify; ">A nivel visual, também existem muitas novidades, principalmente que aceleram o processo de programação e desenvolvimento de uma aplicação, vejam o exemplo de um button, ao clickarem sobre ele no stage com o botão direito do rato, podem ver algumas novas opções de entre as quais se destacam o <strong>Generate Service Call, e Generate Click Handler.</strong></p>
<p style="text-align: justify; "><strong>O generate Click Handler </strong>permite de uma forma muito rapida gerar a função para lidar com um click do rato e coloca-la logo associada ao click do mesmo, sendo o desenvolvedor automaticamente transferido para o código respectivo.</p>
<p style="text-align: justify; "><strong>O generate Service Call </strong>permite gerar o código necessario para fazer uma chamada remota via HTTP service, Web service ou Remoting, no caso de não existir nenhuma fonte de dados, o proprio flex builder se encarrega de perguntar ao utilizador se deseja criar um novo serviço de dados. Aqui podem encontrar um recurso muito melhorado do antigo Flex Builder, a criação de serviço de dados, e para quem usa LCDS ou PHP têm as coisas muito facilitadas, em cerca de 5 minutos e alguns clicks têm um serviço Remoting a funcionar, nas minha aplicação vou usar o php, sigam o exemplo, cliquem no Generate Service Call e respondam sim à criação de um novo serviço de dados. Abre-se então o wizard de serviço de dados:</p>
<p style="text-align: center; ">
<p style="text-align: center; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/webServices.JPG"><img class="size-full wp-image-1068 aligncenter" title="webServices" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/webServices.JPG" alt="webServices" width="556" height="146" /></a></p>
<p style="text-align: justify; "><strong>Ligações de dados; Exemplo PHP</strong></p>
<p style="text-align: justify; ">Neste wizard como, como podem ver, permite criar ligações a serviços de dados em alguns passo, para verem como é simples escolham PHP, é-vos então pedido que configurem um servidor de php, algo muito simples, cliquem em <strong>Yes</strong> e insiram os caminhos relativos para o vosso servidor, no meu caso escolhi servidor PHP, no <strong>Web Root</strong> coloquem o caminho do sistema local para a pasta htdocs/www,  por exemplo numa insatlação padrão do wamp: c:\wamp\www\meuProjecto e no <strong>Root URL</strong> coloquem o vosso caminho do browser para essa pasta, normalmente: http://localhost/meuProjecto e cliquem em Validade Configuration. O output folder será gerado automaticamente, se não o for indiquem algo como c:\wamp\www\meuProjecto\bin-debug. Coloquem então <strong>OK,</strong> o wizard volta de novo à criação de dados e pede algumas informações, como por exemplo o nome do service, coloquem por exemplo <strong>PHPTEST </strong>e indiquem a class onde têm as funções do php (pode ser uma class amfphp ou zendAMF) ou por exemplo uma class padrão, recomendada pela adobe que obtêm clicando em <strong>Generate Sample PHP Class</strong>, e cliquem em <strong>Finish</strong> e eis que vos apresenta a mais recente novidade da adobe, a auto-instalação do ZendAMF para servidor AMF de dados do php:</p>
<p style="text-align: center;"><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/amf.JPG"><img class="aligncenter size-full wp-image-1069" title="amf" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/amf.JPG" alt="amf" width="526" height="197" /></a></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Cliquem em <strong>OK</strong> e aguardem um pouco, em poucos instantes será instalado a framework Zend (embora não seja completamente necessaria toda a framework, as vantagens são muitos quando usamos toda a framework porque se trata de uma das melhores frameworks php existentes no mercado.). É-vos informado que a framework será instalada na mesma pasta da aplicação e que esta localização deve ser alterada quando distribuimos uma aplicação final por razões de segurança, esssa alteração deve ser informada no arquivo .ini de configuração.</p>
<p style="text-align: justify; ">Depois do zendAMF instalado, cliquem de novo <strong>OK</strong>. Muito provavelmente vão encontrar um erro a informar que não foi possivel abrir o Loader do Zend, isto porque a Adobe se enganou na instalação da framework Zend e caminhos relativos, para solucionar este problema devem abrir a vossa pasta c:\wamp\www\meuProjecto e editar o ficheiro <strong>amf_config.ini</strong> e na terceira linha alterem o:</p>
<p style="text-align: justify; ">;zend_path = c:\Frameworks\ZendFramework\library</p>
<p style="text-align: justify; ">para o caminho da vossa instalação do zend, normalmente assim (não se esquecam de remover o &#8220;;&#8221; ):</p>
<p style="text-align: justify; ">zend_path = c:\wamp\www\meuProjecto\ZendFramework\library</p>
<p style="text-align: justify; ">Salvem o ficheiro e voltem ao Flash Builder, cliquem ok na janela de erro e cliquem de novo en Finish, desta forma deixará de existir o erro certo? se em alguns casos ocorrer um erro de acesso, verifiquem as permissões do vosso servidor web. Abre-se então a class recem criada com um simples CURD e mais operações para teste, escrevam na segunda função (getAllItems) apenas <strong>return &#8220;Ola Mundo&#8221;;</strong> e guardem o vosso ficheiro.</p>
<p style="text-align: justify; ">Se voltarem ao Flash Builder, é-vos perguntado se desejam adicionar um tipo de retorno ou associar a função a um componente viosual, cliquem apenas ok. Agora no painel Data/Services vêm as vossas operações.</p>
<p style="text-align: center;"><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/dataService.JPG"><img class="size-full wp-image-1070  aligncenter" title="dataService" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/dataService.JPG" alt="dataService" width="465" height="170" /></a></p>
<p style="text-align: justify; ">Antes de usar quando uma destas funções, devem indicar que tipo de retorna elas devolvem, cliquem na nossas função <strong>getAllItems</strong> e cliquem no botão da direita do rato e cliquem <strong>Configure Return Type, </strong>indiquem o tipo de dados que a vossa função devolve, para deteção automatica, coloquem custom, escrevam um nome e indiquem alguns possiveis parametros da função para auto deteção e depois cliquem seguinte. No nosso caso usamos use custom action script data type <strong>String.</strong></p>
<p style="text-align: justify; ">Como podem ver pal imagem anterior, o <strong>getAllItems</strong> encontra-se com o icon a verde o que indica que o nosso serviço está pronto a ser usado, isto só acontece depois de indicar-mos o tipo de dados que a função devolve.</p>
<p style="text-align: justify; "><strong>Interacção com dados</strong></p>
<p style="text-align: justify; ">Depois de todo este processo para trabalhar com o php, a questão de trabalhar com dados é facil, uma das grandes novidades é a possibilidade de não só (como indiquei antes) de associar uma chamada de um serviço a um botão pelo clique com o botão direito do rato, mas também por drag &amp; drop, arrastem a função getAllItems para o vosso botão e será automaticamente criada a chamada do serviço e o respectivo responder/handler.</p>
<p style="text-align: justify; ">Geralmente não é gerado o handler para resultado para os dados recebidos do backend a não ser numa dataGrid, que mais uma vez apresenta uma janel muito util para acelerar todo o processo, é o wizard para atribuir dados a uma lista, <strong>&#8220;Bind to Data&#8221;:</strong></p>
<p style="text-align: center;"><strong><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/bind.JPG"><img class="size-full wp-image-1071  aligncenter" title="bind" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/bind.JPG" alt="bind" width="409" height="330" /></a><br />
</strong></p>
<p style="text-align: justify; ">Neste wizard podem escolher o serviço e a operação, no nosso caso como definimos o return como String este não poderá ser atribuido a uma dataGrid que recebe como dataProvider um Ilist / ArrayCollection, para isso e por uma questão de testes coloquem na vossa função php:</p>
<p style="text-align: justify; ">
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$dados[0]-&gt;nome=&#8221;Ola&#8221;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>$dados[0]-&gt;idade=&#8221;26&#8243;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>$dados[0]-&gt;pais=&#8221;France&#8221;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>$dados[1]-&gt;nome=&#8221;Mundo&#8221;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>$dados[1]-&gt;idade=&#8221;55&#8243;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>$dados[1]-&gt;pais=&#8221;Italy&#8221;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span></div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2992px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>return $dados;</div>
<p>$dados[0]-&gt;name=&#8221;Ola&#8221;;</p>
<p>$dados[0]-&gt;age=&#8221;26&#8243;;</p>
<p>$dados[0]-&gt;country=&#8221;France&#8221;;</p>
<p>$dados[1]-&gt;name=&#8221;Mundo&#8221;;</p>
<p>$dados[1]-&gt;age=&#8221;55&#8243;;</p>
<p>$dados[1]-&gt;country=&#8221;Italy&#8221;;</p>
<p>return $dados;</p>
<p>Salvem o php e no dialogo do flash builder cliquem <strong>change return type</strong>: e escrevam em c<strong>ustom data type</strong>: <strong>Client, </strong>cliquem next e no proximo e cliquem em next de novo, e voilá os dados devolvidos do php.</p>
<p style="text-align: center;"><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/returnType2.JPG"><img class="size-full wp-image-1074  aligncenter" title="returnType2" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/returnType2.JPG" alt="returnType2" width="492" height="275" /></a></p>
<p>Como podem ver este wizard identifica previamente os dados recebidos do php, e permite mesmo adicionar possiveis dados em falta do mesmo. Cliquem em <strong>Finish</strong> e aguardem, que o icon da função getAllItems na janela Data/Services mude para varios icons.. depois cliquem no wizard em <strong>OK. </strong>E finalmente temos os dados na dataGrid, bem como os dados mapeados directamente por um vO onde são gerados os getters e setters para o mesmo. (Client.as, derivado do _SUPER_CLIENT.as) que pode ser alterado a nosso gosto, deixando de fora a class mapeadora principal (_SUPER_CLIENT.as). como podem ver na janela do explorador no package services.phptest.</p>
<p>Ao fazer esta acção, a datagrid é automaticamente alterada para lidar e apresentar os nossos dados sem uma unica linha de código, basta correrem a aplicação.</p>
<p style="text-align: center;"><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/dataBind.JPG"><img class="size-full wp-image-1075    aligncenter" title="dataBind" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/dataBind.JPG" alt="dataBind" width="473" height="251" /></a></p>
<p>As restantes operações do CRUD podem ser falcilmente feitas com recurso a estes wizards, sendo que mesmo depois podemos atribuir como argumento o nosso VO, muito util na hora da criação ou alteração de um elemento numa base de dados.</p>
<p>Este é sem duvida um dos pontos mais fortes do novo flex builder, que praticamente nos faz de forma automatizada todo o trabalho de interacção com dados. Nesta nova versão do Flex 4 e MXML para comunicação remota foi quase que abolida a necessidade de usar um RemoteObject com variados metodos já que com estes wizards todo o código é gerado e trasnformado em componentes Action Script. No nosso caso toda a chamada e atribuição de dados é feita em apenas estas linhas:</p>
<p>&lt;fx:Declarations&gt;</p>
<p><span style="white-space: pre;"> </span>&lt;s:CallResponder id=&#8221;getAllItemsResult&#8221;/&gt;</p>
<p><span style="white-space: pre;"> </span>&lt;phptest:PHPTEST id=&#8221;pHPTEST&#8221; destination=&#8221;PHPTEST&#8221; endpoint=&#8221;http://localhost/testPHP/testPHP-debug/gateway.php&#8221; fault=&#8221;Alert.show(event.fault.faultString)&#8221; showBusyCursor=&#8221;true&#8221; source=&#8221;PHPTEST&#8221;/&gt;</p>
<p><span style="white-space: pre;"> </span>&lt;/fx:Declarations&gt;</p>
<p>Algo muito mais simples e reutilizavel que na versão anterior do flex. Apesar de ser tudo muito facil, merece que passemos algumas horas de volta do código gerado que apesar de ser muito util, também pode alongar o tamanho da nossa aplicaçâo desnecessariamente, por isso verifiquem sempre as classes e objectos gerados, analisem a vossa situação e retirem o que não for necessário.</p>
<p><strong>Documentação AS3</strong></p>
<p>Como foi antes falado é possivel agora ver a documentaçâo de uma class sem ter que aceder à mesma, basta seguirem este exemplo, criem uma nova Action Script Class baseada num sprite, no package com.msdevstudio, e depois se quiserem documentar a class, basta faze-lo dentro do package, antes do construtor dentro do bloco /** **/, como o seguinte exemplo mostra:</p>
<pre>package com.msdevstudio
{
	/**
	 * Welcome to my TestClass by Mário Santos
	 *
	 * To use just write: import com.msdevstudio.testClass and then
	 * var temp:TestClass = new TestClass()
	 *
	 *
	 * @see flash.display.Sprite
 	 *
 	 *  @langversion 3.0
 	 *  @playerversion Flash 9
 	 *  @playerversion AIR 1.1
 	 *  @productversion Flex 3
	 *
	 * */
	import flash.display.Sprite;
	public class TestClass extends Sprite
	{
		/**
		 * Create a new instance of the class!
		 */
		public function TestClass()
		{
			//TODO: implement function
			super();
		}
	}
}</pre>
<p>Guardem a vossa class, importem-na na aplicação e passem o rato por cima:</p>
<p>import com.msdevstudio.TestClass;</p>
<p>Obtêm então o dialogo de ajuda como a imagem seguinte mostra.</p>
<p style="text-align: center; "><a href="http://msdevstudio.com/blog/wp-content/uploads/2009/06/customClass.jpg"><img class="size-full wp-image-1082  aligncenter" title="customClass" src="http://msdevstudio.com/blog/wp-content/uploads/2009/06/customClass.jpg" alt="customClass" width="521" height="221" /></a></p>
<p style="text-align: left; ">Como podem ver é mais facil do que nunca criar, distribuir e documentar as vossas classes.</p>
<p style="text-align: left; "><strong>Unit Tests</strong></p>
<p style="text-align: left; ">Nesta nova versão também já é possivel criar classes para efectuar unitTests ou testes lógicos e de performace, não tendo que recorrer a frameworks externas. Esta é mais uma das otimas novidades para quem pretende tirar o maximo de partido da sua applicação e evitar o maximo de erros possiveis.</p>
<p style="text-align: left; "><strong>Interacção com o Flash Catalyst</strong></p>
<p style="text-align: left; ">Esta ligação é feita quase instantaneamente, bast importarem um qualquer projecto do Flash Catalyst tendo sempre em conta que assim que abrirem o vosso projecto do Flash Catalyst no Flash Builder este deixará de ser editavel no Flash Catalyst. Este talvez seja um dos pontos menos positivos desta interação.</p>
<p style="text-align: left; ">De resto, embora com alguns promenores a serem melhorados, a importação do layout do Flash Catalyst para o Flash Builder ocorrem sem qualquer problema. Brevemente teremos aqui um tutorial de como importar, transformar e programar um layout do illustrador para o Flash Player passando  pelo Flash Catalyst e Flash Builder.</p>
<p style="text-align: left; "><strong>Notas Finais</strong></p>
<p style="text-align: left; ">O novo Flash builder torna muitas coisas muito mais simples e sem duvida que vai acelerar em muito o desenvolvimento de aplicações ricas para a internet, principalmente na hora de trabalhar com dados. Os seus novos wizards guiam-nos pelo dificil processo de comunicação com um backend e em alguns simples passos as coisas passam de dificeis a faceis. A criação da documentação inline de cada class vai sem duvida ajudar os mais novatos, e com ainda maior certeza fazer com que os desenvolvedores mais experientes conheçam um pouco melhor as classes e tirem o maior partido delas.</p>
<p style="text-align: left; ">Os novos namespaces ainda coexistem com o antigo mx, pelo que os desenvolvedores ainda terão algum tempo para absorverem tudo o que há de novo na versão 4 desta framework, principalmente a quase completa orientação a states a nivel de componentes que se por um lado pode ajudar pelo outro pode complicar mais ainda o código.</p>
<p style="text-align: left; ">Finalmente, as novidades maiores como disse são mesmo no novissimo Flex 4, que deve ser estudado com alguma atenção já que traz muitas novidades.</p>
<p style="text-align: left; ">E vocês? alguma coisa a dizer sobre os vossos primeiros testes?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/06/26/flash-builder-4-uma-analise-mais-a-serio/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>ZendAMF &#8211; Conclusão e opinião!</title>
		<link>http://blog.msdevstudio.net/2009/04/01/zendamf-conclusao-e-opiniao/</link>
		<comments>http://blog.msdevstudio.net/2009/04/01/zendamf-conclusao-e-opiniao/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 11:59:31 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Análises]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Action Script]]></category>
		<category><![CDATA[AMF0]]></category>
		<category><![CDATA[AMF3]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zendAMF]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=899</guid>
		<description><![CDATA[      Depois do meu post ZendAMF &#8211; Novidade, analise (vs amfPHP) e tutorial e depois de mer finalmente terminado a migração completa de um CRM/ERP de php+javascript/ajax+myslq para o flex usando o zendAMF venho aqui dar uma opinião pessoal depois de ter trabalhado bastante com o zendAMF e com o amfPHP. Se o que eu [...]]]></description>
			<content:encoded><![CDATA[<p> <br />
<center><br />
<a href="http://framework.zend.com/download/amf"><img title="ZendAMF" src="http://framework.zend.com/images/logo_small.gif" alt="ZendAMF" width="123" height="23" /></a></center></p>
<p> </p>
<p> </p>
<p>Depois do meu post <a title="Permalink para ZendAMF - Novidade, analise (vs amfPHP) e tutorial" rel="bookmark" href="http://msdevstudio.com/blog/2009/01/31/zendamf-novidade-analise-vs-amfphp-e-tutorial/">ZendAMF &#8211; Novidade, analise (vs amfPHP) e tutorial</a> e depois de mer finalmente terminado a migração completa de um CRM/ERP de php+javascript/ajax+myslq para o flex usando o zendAMF venho aqui dar uma opinião pessoal depois de ter trabalhado bastante com o zendAMF e com o amfPHP.</p>
<p>Se o que eu queria dizer era: o zendAMF é muito melhor que o amfPHP, eu não o posso dizer, mas passo a explicar o porquê anotando algumas ideias que até já tinha trocado com o fabio vedovelli.</p>
<p>Bem, o zendAMF deu-me a ideia de ser muito mais rapido, simples e leve,  mas com um grande problema, como não têm explorer como o amfPHP pode  tornar-se muito mais complicado, principalmente na deteçao de erros que  foi realmente o que me deu mais trabalho. A ausencia  deste explorer e da não visialização dos erros do php, leva a que se  faça uma grande atenção à programação do php, levando assim a que  melhoremos a nossa &#8220;maneira&#8221; de programar php, embora compreenda que não só para iniciantes seja um GRANDE problema. Eu próprio para desvendar alguns dos erros do  php tive que recorrer aos logs do apache&#8230;.</p>
<p>Outro dos pontos que me pareceram menos bons, foi encontrar alguns  problemas com a passagem de um arrayCollection do as3 pro zendAMF que  por vezes chega ao zendAMF em objecto e outras vezes em array composto,  (sim, o mesmo arrayCollection) o que nos leva a ter que tratar o mesmo arrayCollection de maneiras  diferentes, quer como $dadosDoAs3-&gt;campo1 quer como  $dadosDoAs3['campo1'], o que nos leva a ter que criar mais umas linhas de código no php mas nada que uma simples comparação com os  is_object() ou is_array() do php não resolvesse, embora tenha que estar  a fazer esta verificação sempre que passo um arrayCollection ou um  Array/Objecto de multi-linhas/camadas o que me deu algum desconforto principalmente por perca de tempo, coisa que no amfPHP não aconteceria.</p>
<p>De resto, 5 estrelas, muito mais simples na hora de trabalhar com  funções da mesma classe, ou aceder a definições nas diferentes classes  no mesmo servidor, coisa que não era possivel no amfPHP, quanto ao  mapeamento de objectos, agora ficou brincadeirinha de criança.</p>
<p>o Sistema/estrutura de pastas é simples e muito mais flexivel, podendo ou não ter uma estrutura de pastas com as classes, o que torna muito simples a organização do nosso jeito. Notei ainda um ou outro ponto menos bom, mas nada que afectasse o sistema ou o funcionamento final da aplicação.</p>
<p>Notas finais, o zendAMF demonstrou ainda estar a caminhar para atingir a perfeição e assume muitos pontos iguais ao amfPHP, mas tende mais para a simplificação o que me agrada imenso e deve agradar aos seguidores do amfPHP. Por outro lado, ainda com os defeitos em cima será com certeza um obstaculo aos que se estão a iniciar. Bom, o amfPHP é melhor em muitos pontos &#8220;easy-to-use&#8221; , mas dificilmente voltarei ao usa-lo, zendAMF é a minha aposta agora. </p>
<p>Fica a minha opinião.</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/04/01/zendamf-conclusao-e-opiniao/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>TSW Style Switcher &#8211; Esperimenta!</title>
		<link>http://blog.msdevstudio.net/2008/06/11/tsw-style-switcher-esperimenta/</link>
		<comments>http://blog.msdevstudio.net/2008/06/11/tsw-style-switcher-esperimenta/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 13:44:44 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[HTML, XHTML, CSS, Java Script]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[styles]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[switcher]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/06/11/tsw-style-switcher-esperimenta/</guid>
		<description><![CDATA[Bem, podem nem ter reparado, mas no topo &#224; esquerda foi agora colocado um Theme Switcher, depois de ler um post na smashing magazine, decidi criar um theme switcher, que neste caso apenas altera as folhas de estilo do site. Totalmente feito &#224; m&#227;o, foi um bocado complicado perceber como iria fazer o blog mudar [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, podem nem ter reparado, mas no topo &#224; esquerda foi agora colocado um Theme Switcher, depois de ler um post na smashing magazine, decidi criar um theme switcher, que neste caso apenas altera as folhas de estilo do site. Totalmente feito &#224; m&#227;o, foi um bocado complicado perceber como iria fazer o blog mudar de tema, mas l&#225; decidi colocar sess&#245;es php.</p>
<p>&#160;</p>
<p>Est&#227;o dispon&#237;veis 3 modos (Vermelho, Verde e Azul): </p>
<p><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="red" src="http://msdevstudio.com/blog/wp-content/uploads/2008/06/red-thumb.png" width="15" height="15" /> <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="green" src="http://msdevstudio.com/blog/wp-content/uploads/2008/06/green-thumb.png" width="15" height="15" /> <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="blue" src="http://msdevstudio.com/blog/wp-content/uploads/2008/06/blue-thumb.png" width="15" height="15" /> </p>
<p>(Podem testar clicando no topo)</p>
<p>&#160;</p>
<p>Que em ingl&#234;s curiosamente significa o padr&#227;o de cores (web) Red Green Blue (RGB), para testarem cliquem ou na imagem no topo ou ent&#227;o nos links em cima.</p>
<p>&#160;</p>
<p>Venham essas opini&#245;es&#8230; que tal? qual gostaram mais?</p>
<p>Cores: <a href="http://kuler.adobe.com">http://kuler.adobe.com</a></p>
<p>&#160;</p>
<p>Abra&#231;o.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/06/11/tsw-style-switcher-esperimenta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe Flex a partir do zero &#8211; Parte V &#8211; Pre Rel.</title>
		<link>http://blog.msdevstudio.net/2008/05/20/adobe-flex-a-partir-do-zero-parte-v-pre-rel/</link>
		<comments>http://blog.msdevstudio.net/2008/05/20/adobe-flex-a-partir-do-zero-parte-v-pre-rel/#comments</comments>
		<pubDate>Tue, 20 May 2008 08:17:26 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Análises]]></category>
		<category><![CDATA[artigo]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[Duvidas]]></category>
		<category><![CDATA[flex+php+mysql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Sistema]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/05/20/adobe-flex-a-partir-do-zero-parte-v-pre-rel/</guid>
		<description><![CDATA[Pessoal, o meu tutorial Adobe Flex a partir do zero parte V está a demorar mais que o esperado porque esta parte, conforme devem ter visto no index do Flex Book actualizado, esta é a parte em que vou explicar como programar um sistema de login bem como um CRUD em flex+amfphp (php+mysql), e como [...]]]></description>
			<content:encoded><![CDATA[<p>Pessoal, o meu tutorial Adobe Flex a partir do zero parte V está a demorar mais que o esperado porque esta parte, conforme devem ter visto no index do Flex Book actualizado, esta é a parte em que vou explicar como programar um sistema de login bem como um CRUD em flex+amfphp (php+mysql), e como quero apresentar já o resultado final, está a exceder-se muito&#8230; neste momento está com 24 páginas novas, e penso que ainda se vai alargar por mais umas 7/8, perfazendo no seu total (estimando) umas 30 páginas, pelo que ainda vai demorar, até porque pode sofrer alguns erros e falhas na sua programação.</p>
<p><span style="color: #ff8000;"> <strong>Alguns pontos já discutidos no que já foi escrito nesse tutorial:</strong></span></p>
<p>- Criação de uma base de dados e uma tabela para um sistema de login, bem como os seus serviços em amfphp.</p>
<p>- Criação de um sistema de login em Flex+amfphp, suas funções e painéis.</p>
<p>- Criação de uma tabela para fornecer dados a uma dataGrid no Flex, bem como os seus serviços no amfphp</p>
<p>-Carregamento dos dados do mysql via amfphp para uma datagrid, bem como as suas funções.</p>
<p>- Criação de um state administrativo (viewStack + linkBar com views para as nossas funções CRUD da mesma dataGrid.)</p>
<p>-Funções listagem, insere e actualiza terminadas bem como os respectivos views para o viewstack.</p>
<p><strong><span style="color: #ff8000;">O que está a faltar:</span></strong></p>
<p>- Está a faltar apenas a função de eliminação (multi-linha).</p>
<p>- Sistema de controlo de sessão (Variavél Flex &amp; possivelmente php SESSION).</p>
<p>- Distribuição das funções conforme foi feito ou não o login.</p>
<blockquote><p>Com Login feito -&gt; State &#8220;admin&#8221; -&gt; Funções : Apaga, Insere, Lista e Actualiza</p>
<p>Sem Login feito -&gt; &#8220;Start state&#8221; -&gt; Funções : Login, Lista.</p></blockquote>
<p>O que venho aqui pedir é alguém (uma ou varias pessoas) que esteja(m) interessada(s) em receber no seu email um link para poder ver online esta parte V (ainda não terminada) e começar a testa-la, para que me possam informar se existe algum problema e ou dificuldade em seguir esta parte v do tutorial. Assim que forem sendo adicionadas mais páginas vai sendo enviadas para esse email.</p>
<p>Para poderem receber este link terão que concordar com o seguinte:</p>
<p>- Não podem disponibilizar para download em qualquer lado visto ainda não estar terminado.</p>
<p>- Não devem dar esse link a ninguém. (será controlado o acesso via email/ip).</p>
<p>São alguns termos que peço que cumpram, pelo menos para dar crédito ao meu trabalho&#8230; :=P. Quanto ao resto, coloquem em comentário a vossa disponibilidade para receber o link e não coloquem o vosso email na mensagem, mas sim e apenas no respectivo campo de email, a não ser que queiram o vosso email cheio de spam.</p>
<p>O link ficará disponível no próximo fim de semana, pelo que o mais tardar no domingo será enviada uma mensagem para os emails que se encontrarem aqui nos comentários.</p>
<p>Um abraço e obrigado pela ajuda!</p>
<p>edit:</p>
<p>Caros amigos, apenas disponilizarei o tutorial para mais 2 pessoas, perfazendo assim 15 pessoas, a partir da cópia em baixo em comentário (mesma mensagem) apenas mais 2 emails serão considerados válidos para ver o tutorial.</p>
<p>Os restantes, vão ter que aguardar a versão final que está quase pronta&#8230; <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Um abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/05/20/adobe-flex-a-partir-do-zero-parte-v-pre-rel/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Backend sistema imobili&#225;rio. Gest&#227;o de im&#243;veis.</title>
		<link>http://blog.msdevstudio.net/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis/</link>
		<comments>http://blog.msdevstudio.net/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 20:11:29 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[gestão]]></category>
		<category><![CDATA[imobiliaria]]></category>
		<category><![CDATA[movel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sistema]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis/</guid>
		<description><![CDATA[&#160; Bom, neste momento estou terminando de fazer um backend para uma imobiliária&#8230; ou seja, para administrar os imoveis, adicionar, remover, etc&#8230; Ainda não sei se vou poder divulgar o código fonte (será versão comercial se a aceitação for boa), provavelmente não o poderei fazer, mas se alguém estiver interessado em saber como se faz [...]]]></description>
			<content:encoded><![CDATA[<p align="center">&nbsp;</p>
<p><a href="http://blog.msdevstudio.net/wp-content/uploads/2008/02/immo.png"></a><a href="http://blog.msdevstudio.net/wp-content/uploads/2008/02/immo.png"></p>
<p style="text-align: center"><img border="0" width="513" src="http://blog.msdevstudio.net/wp-content/uploads/2008/02/immo-thumb1.png" alt="immo" height="354" style="border: 0px" /></p>
<p></a>Bom, neste momento estou terminando de fazer um backend para uma imobiliária&#8230; ou seja, para administrar os imoveis, adicionar, remover, etc&#8230;</p>
<p>Ainda não sei se vou poder divulgar o código fonte (será versão comercial se a aceitação for boa), provavelmente não o poderei fazer, mas se alguém estiver interessado em saber como se faz determinada coisa basta perguntar que eu vou revelando alguns detalhes do código.</p>
<p>Como ando doido com o flex, decidi recorrer ao flex+php+mysql (via amfphp) para fazer este backend, tendo-o preparado poder ser configurado com a língua que se desejar, bastando para isso a tradução de um ficheiro de línguas. A versão que disponibilizo ainda contem alguns pequenos erros, e detalhes a corrigir, mas como o seu núcleo já está terminado podem ir vendo e dando sugestões e/ou comentários.</p>
<p>Esta versão, como é a versão de testes, foram restritas algumas funções.</p>
<p>Impossível:</p>
<p>-Modificar ou apagar o imóvel com ID=12, fica para demonstrar.<br />
-Inserir mais de 10 Imóveis ao mesmo tempo&#8230;para inserir mais basta apagar alguns.<br />
-Usar o sistema de envio de fotos. (dará erro).</p>
<p>Caso façam logout da aplicação: user: admin e pass = demo</p>
<p>Existem alguns detalhes ainda a acertar e alguns mas poucos (espero) bugs  como a ausência do texto de ajuda em frances (está em EN) ou um pequeno problema nas estatísticas, na reformulação do gráfico e na colecta dos dados dos visitantes.</p>
<p>Como o sistema original é em francês, ainda não tive tempo para alterar o output todo o server (php) para PT e EN, por isso ao efectuarem algumas operações na base de dados com certeza terão avisos em Francês</p>
<p>Falta ainda implementar/melhorar:</p>
<p>-Gestão correcta e verificação dos dados a inserir.</p>
<p>-Handling correcto dos erros do RO.</p>
<p>-Uma correcção na chamada dos remote objects</p>
<p>-Pequeno bug no sistema de fotos.</p>
<p>-Modularização da listagem,  painel de insersão/modificação e configuração.</p>
<p>-Sistema de interpretação do output da configuração da mailing list bem como o melhoramento e alteração do layout.</p>
<p>-Alteração do layout do  módulo de configuração.</p>
<p>-Edição das imagens enviadas para criação de miniatura para apresentar no flex.</p>
<p>-E mais alguns que irão aparecer com a vossa ajuda. <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>-Tamanho do ecrã, neste momento mais ou menos com 1200*800, ver se consigo reduzir para 800*600</p>
<p>Dêem uma vista de olhos:</p>
<p><a target="_blank" href="http://www.msdevstudio.com/immo/backend/">www.msdevstudio.com/immo/backend/</a></p>
<p>Aguardo comentários, criticas e sugestões.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Flex &#8211; Corrector ortogr&#225;fico / Spell Checker &quot;beta 1&quot;</title>
		<link>http://blog.msdevstudio.net/2008/02/13/flex-corrector-ortogrfico-spell-checker-beta-1/</link>
		<comments>http://blog.msdevstudio.net/2008/02/13/flex-corrector-ortogrfico-spell-checker-beta-1/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 07:42:12 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[checker]]></category>
		<category><![CDATA[corrector]]></category>
		<category><![CDATA[corretor]]></category>
		<category><![CDATA[field]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[linguas]]></category>
		<category><![CDATA[MXML]]></category>
		<category><![CDATA[ortografia]]></category>
		<category><![CDATA[ortografico]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[spell]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[texto]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/02/13/flex-corrector-ortogrfico-spell-checker-beta-1/</guid>
		<description><![CDATA[Como falei anteriormente estava com bastantes problemas a tentar fazer o &#8220;handling&#8221; do output do Google, mas lá acabou por correr tudo bem&#8230; Tive bastante trabalho a implementar e conseguir criar uma maneira de colocar em relevo as palavras com erros, embora não da melhor maneira, mas ainda estou a trabalhar nele. Actualmente existem alguns [...]]]></description>
			<content:encoded><![CDATA[<p>Como falei anteriormente estava com bastantes problemas a tentar fazer o &#8220;handling&#8221; do output do Google, mas lá acabou por correr tudo bem&#8230;</p>
<p>Tive bastante trabalho a implementar e conseguir criar uma maneira de colocar em relevo as palavras com erros, embora não da melhor maneira, mas ainda estou a trabalhar nele.</p>
<p>Actualmente existem alguns Bugs:</p>
<p>-Alguma demora em verificar textos com mais de 1000 caracteres.</p>
<p>-O sistema de verificação de erros apenas disponível clicando no botão, e não em tempo real, o que deve ficar para uma nova versão.</p>
<p>-Tratamento do texto como uma string, que não é erro, mas aumenta o processamento na verificação das palavra, que terei que implantar em array.</p>
<p>-A janela de sugestão, ao clicar na palavra ainda não foi devidamente configurada para tamanho/altura.</p>
<p>-Erro ao processar/verificar texto com os caracteres (&#8220;&#8221; e &#8221;).</p>
<p>Bom, aqui fica para vocês irem comentando, sugerindo e/ou criticando.</p>
<p class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:96d0eff0-6db7-4e8f-8313-03071f062c6d" style="margin: 0px; padding: 0px; display: inline">&nbsp;</p>
<p><embed src="http://www.msdevstudio.com/blog/flexSource/testSpell/spell2.swf" bgcolor="#869ca7" name="spell2" play="true" loop="false" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" align="middle" height="416" width="605"></embed>Aguardo comentários <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/02/13/flex-corrector-ortogrfico-spell-checker-beta-1/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

