<?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; amfphp</title>
	<atom:link href="http://blog.msdevstudio.net/tag/amfphp/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>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>ZendAMF &#8211; Novidade, analise (vs amfPHP) e tutorial</title>
		<link>http://blog.msdevstudio.net/2009/01/31/zendamf-novidade-analise-vs-amfphp-e-tutorial/</link>
		<comments>http://blog.msdevstudio.net/2009/01/31/zendamf-novidade-analise-vs-amfphp-e-tutorial/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 15:10:36 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Certificaçao Flex]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AMF0]]></category>
		<category><![CDATA[AMF3]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[vs]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/?p=822</guid>
		<description><![CDATA[Este é o mais recente logo de uma das frameworks de php mais conceituadas da actualidade. Não vou falar da framework apesar desta ter muito que falar, mas vou falar sim de um componente AMF desta nova framework intitulado ZendAMF, que como o amfPHP serve para comunicação de dados do PHP com a plataforma Flash. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://framework.zend.com/"><br />
<img class="aligncenter" title="Zend Framework" src="http://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" border="0" alt="" width="127" height="25" /></a></p>
<p style="text-align: left;">Este é o mais recente logo de uma das frameworks de php mais conceituadas da actualidade. Não vou falar da framework apesar desta ter muito que falar, mas vou falar sim de um componente AMF desta nova framework intitulado ZendAMF, que como o amfPHP serve para comunicação de dados do PHP com a plataforma Flash.<br />
Tudo isto deve-se à politica de globalização da plataforma flash por parte da Adobe, que <a href="http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf" target="_blank">abriu o formato AMF para a comunidade</a>. Nas bastando isso, a adobe ainda se aliou à Zend e junto com um dos autores do <a href="http://www.amfphp.org/about.html" target="_blank">amfPHP</a> &#8211; (Wade Arnold) &#8211; desenvolveram uma aliaça conjunta que resultou no Zend AMF que depois de ter <a href="http://framework.zend.com/wiki/display/ZFPROP/Zend_Amf+-+Wade+Arnold" target="_blank">passado do papel</a> veio a publico com o seu<a href="http://framework.zend.com/download/amf" target="_blank"> download</a> disponibilizado oficialmente na pagina da zend.</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;">Apesar de a minha primeira impressão ter sido absurdamente rude (não gostei do impacto de tanta pasta no ficheiro de download) depois de apenas uns minutos de volta do sistema reparei que o seu uso ainda é mais simples que o amfPHP, e pelas experiencias que fiz parece ser mais rápido que o amfPHP, nao esquecendo também a necessidade absoluta do PHP5.</p>
<p style="text-align: left;"> </p>
<p style="text-align: left;">Apenas vasculhei os ficheiros o suficiente para vos demonstrar o simples uso no flex deste novo ZendAMF.</p>
<p style="text-align: left;">Vamos então a um pequeno tutorial&#8230; </p>
<p style="text-align: left;"><span id="more-822"></span></p>
<p style="text-align: left;">- O primeiro passo é fazer o <a href="http://framework.zend.com/download/amf" target="_blank">download do zendAMF</a>.</p>
<p style="text-align: left;">- De seguida, ter um servidor *AMP:  Apache + MySQL + PHP (5)</p>
<p style="text-align: left;">- Finalmente seguir os passos seguintes atentamente:</p>
<p style="text-align: left;">Antes de configurar as minhas pastas, vou explicar o meu sistema: Tenho o WAMP Server instalado na pasta <strong>C:\wamp</strong>, com o domain &#8220;<strong>localhost</strong>&#8221; e a raiz do servidor em <strong>c:\wamp\www </strong></p>
<p style="text-align: left;">Vou então à minha pasta do www e crio uma pasta <strong>flex</strong> e dentro dela um <strong>testTend </strong>ficando com os caminhos<strong>: c:\wamp\www\flex\testZend</strong></p>
<p style="text-align: left;">Abram o arquivo que fizeram download : <strong>ZendAMF-1.7.3.zip </strong>percorram a pasta <strong>library/</strong> e extraiam apenas a pasta <strong>Zend</strong> para <strong>c:\wamp\www\flex\testZend.</strong> Esta é a pasta necessaria ao funcionamento do zendAMF<strong>, </strong>como se fosse a pasta &#8220;amfphp&#8221; do amfPHP. Vou agora explicar o funcionamento deste zendAMF, que ao contrario do amfPHP não possui uma estrutura obrigatória de pastas, mas para que ele funcione devidamente teremos que providenciar alguns detalhes como um gateway e uma classe.</p>
<p style="text-align: left;"><em><strong>O conhecido amfPHP usa um ficheiro gateway.php para definir as classes e estruturas de dados e que regra geral nao temos que mexer nele, o zendAMF não usa e nem sequer traz este gateway.php, mas teremos de criar um ficheiro que funciona +- da mesma maneira. Para isso criem um ficheiro index.php (será o nosso gateway) e dentro dele coloquem o código seguinte:</strong></em></p>
<p style="text-align: left;"> </p>
<p><coolcode lang="php" linenum="off"><br />
<?php<br />
        //debug, nao necessário<br />
	error_reporting(E_ALL | E_STRICT);<br />
	ini_set("display_errors", "on");</p>
<p>        //importa o server, servidor ZendAMF e de seguida importa a nossa class (serviço no amfPHP) TutorialZend<br />
	require_once "Zend/Amf/Server.php";<br />
	require_once "TutorialZend.php";</p>
<p>        //inicia o servidor e de seguida indica que a nossa class TutorialZend deve fazer parte do zendAMF para serializar<br />
	$server = new Zend_Amf_Server();<br />
	$server->setClass(&#8220;TutorialZend&#8221;);</p>
<p>        //necessário para que o flex/flash identifique o endPoint.<br />
	echo($server->handle());<br />
?><br />
</coolcode></p>
<p>Este é o nosso gateway, onde importo a minha primeira class: <strong>require_once &#8220;TutorialZend.php&#8221;;</strong> e onde digo ao &#8220;Servidor AMF&#8221; que deve usa-la: <strong>$server-&gt;setClass(&#8220;TutorialZend&#8221;);</strong></p>
<p>Para mais que uma class basta usarem repetidamente os comandos, require_once &#8220;minha_classe_2.php&#8221;; e $server-&gt;setClass(&#8220;minha_class_2&#8243;); ficando também estas acessiveis no zendAMF para remoting.</p>
<p>Guardem o ficheiro como <strong>index.php</strong> na pasta: <strong>c:\wamp\www\flex\testZend\</strong> e vamos agora criar a nossa primeira classe, que aqui sim funciona como no amfPHP, neste caso criar a class necessária ao gateway, a classe TutorialZend (.php) criando entao o ficheiro <strong>TutoriaZend.php</strong> onde vamos escrever uma função para ir buscar dados a uma tabela users, escrevendo o seguinte:</p>
<p><coolcode lang="php" linenum="off"><br />
 <?php</p>
<p>define("DATABASE_SERVER", "localhost");</p>
<p>//definam a vossa password e nome de utilizador<br />
define("DATABASE_USERNAME", "username");<br />
define("DATABASE_PASSWORD", "password");</p>
<p>define("DATABASE_NAME", "zend");</p>
<p>	class TutorialZend {<br />
                //esta é uma das diferenças entre amfPHP e o zendAMF, aqui é usado o __construct() em vez do nome da class, TutorialZend().<br />
		public function __construct() {<br />
			$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);<br />
			mysql_select_db(DATABASE_NAME);<br />
		}</p>
<p>                //função para buscar os dados à bd mysql.<br />
		public function getUsers() {</p>
<p>			$query = "SELECT id, nome, email FROM users";<br />
		$result = mysql_query($query);</p>
<p>		$res = array();</p>
<p>		while ($row = mysql_fetch_assoc($result)) {<br />
				array_push($res, $row);<br />
			}</p>
<p>		mysql_free_result($result);<br />
		return $res;</p>
<p>		}<br />
	}<br />
?><br />
</coolcode><br />
 </p>
<p>E temos a nossa class feita. Só fica mesmo a faltar a nossa base de dados zend e a nossa tabela users, para isso criem a base de dados <strong>zend</strong> e executem a seguinte instrução:</p>
<p><coolcode lang="sql" linenum="off"><br />
CREATE TABLE IF NOT EXISTS `users` (  `id` int(11) NOT NULL auto_increment,  `nome` varchar(255) NOT NULL,  `email` varchar(255) default NULL,  PRIMARY KEY  (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;</p>
<p>INSERT INTO `users` (`id`, `nome`, `email`) VALUES (1, &#8216;Mario&#8217;, &#8216;admin@msdevstudio.com&#8217;), (2, &#8216;Ze carlos&#8217;, &#8216;zecarlos@sic.pt&#8217;), (3, &#8216;Antonio&#8217;, &#8216;antoni@rail-uk.com&#8217;), (4, &#8216;Sousa&#8217;, &#8216;sfranco@spo.pt&#8217;);<br />
</coolcode></p>
<p>E pronto, temos a tabela users já com dados&#8230; só falta mesmo ligar o flex ao nosso zend.</p>
<p> </p>
<p>No flex basta criarem um novo projecto,</p>
<p>File-&gt;New-&gt;Flex Project colocando o nome <strong>testZend </strong>escolhendo como server type :<strong> PHP</strong>, clicando em seguinte basta introduzir as cordenadas que usei em cima:</p>
<p><strong>Web Root:</strong> C:\wamp\www\flex\testZend e <strong>Web Root URL:</strong> http://localhost/flex/testZend cliquem em Validate Configuration e depois em Finish.</p>
<p>O projecto está criado, e para que o flex se ligue ao zend AMF é necessário também um ficheiro <strong>services-config.xml</strong> o qual podem encontrar em baixo e onde definimos o nosso gateway, neste caso o index.php podendo ou nao enumera-lo:</p>
<p> <br />
<coolcode lang="xml" linenum="off"><br />
<?xml version="1.0" encoding="UTF-8"?><br />
<services-config><br />
    <services><br />
        <service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage"><br />
            <destination id="zend"><br />
                <channels><br />
                    <channel ref="my-zend"/><br />
                </channels></p>
<properties>
                    <source>*</source>
                </properties>
            </destination><br />
        </service><br />
    </services><br />
    <channels><br />
        <channel-definition id="my-zend" class="mx.messaging.channels.AMFChannel"><br />
            <endpoint uri="http://localhost/flex/testZend/" class="flex.messaging.endpoints.AMFEndpoint"/><br />
        </channel-definition><br />
    </channels><br />
</services-config><br />
</coolcode></p>
<p> </p>
<p>Salvem o arquivo services-config.xml na pasta <strong>src</strong> ao lado do <strong>zendTest.mxml</strong></p>
<p>Finalmente, coloquem-no como argumento na compilação, indo ao menu Project-&gt;Properties-&gt;Flex Compiler-&gt;Aditional compiler arguments, colocando  <strong>-locale en_US -services &#8220;services-config.xml&#8221;</strong> cliquem em Apply e o nosso projecto esta pronto a trabalhar com o zendAMF, basta usarem o código normal no amfPHP como remoteObject, mas definindo o destination como <strong>zend.</strong> Vejam o segunte código<strong> testZend.mxml</strong>:</p>
<p> <br />
<coolcode lang="actionscript" linenum="off"></p>
<p><?xml version="1.0" encoding="utf-8"?><br />
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html"><br />
	<mx:Script><br />
		<![CDATA[<br />
			import mx.rpc.events.FaultEvent;<br />
			import mx.rpc.events.ResultEvent;<br />
			import mx.controls.Alert;</p>
<p>			private function testZendIt():void {<br />
				myZendService.getUsers();<br />
			}</p>
<p>			private function onResultado(res:ResultEvent):void {</p>
<p>				var objRes:Object = res.result as Object;<br />
				myZendGrid.dataProvider=objRes;<br />
			}</p>
<p>			private function onErro(erro:FaultEvent):void {<br />
				 Alert.show(erro.toString());<br />
			}</p>
<p>		]]&gt;<br />
	</mx:Script><br />
	<mx:RemoteObject id="myZendService" destination="zend" source="TutorialZend" ><br />
		<mx:method name="getUsers" result="onResultado(event)" fault="onErro(event)" /><br />
	</mx:RemoteObject><br />
	<mx:Canvas width="344" height="254" borderColor="#FFFFFF" backgroundColor="#FFFFFF" horizontalCenter="0" verticalCenter="0"><br />
		<mx:Button x="20" y="19" label="Call Zend" click="testZendIt();" width="302"/><br />
		<mx:DataGrid x="20" y="49" id="myZendGrid"><br />
			<mx:columns><br />
				<mx:DataGridColumn headerText="Id" dataField="id"/><br />
				<mx:DataGridColumn headerText="Nome" dataField="nome"/><br />
				<mx:DataGridColumn headerText="Email" dataField="email"/><br />
			</mx:columns><br />
		</mx:DataGrid><br />
		<mx:Image x="20" y="208" source="PoweredBy_ZF_4LightBG.png"/><br />
		<mx:Label x="217" y="199" text="ZEND AMF Tutorial"/><br />
		<mx:Label x="194" y="215" text="www.msdevstudio.com"/><br />
	</mx:Canvas><br />
</mx:Application></p>
<p></coolcode></p>
<div><strong>Basta correm-no e clicar no botão &#8220;Call Zend&#8221; para a vossa tabela ser preenchida com os dados do mysql vindos directinhos no php via ZendAMF como mostra a imagem em baixo <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></div>
<div style="text-align: center;"></div>
<div style="text-align: center;"><strong><img class="aligncenter size-full wp-image-823" title="testZend; ZendAMF Tutorial" src="http://msdevstudio.com/blog/wp-content/uploads/2009/01/testzend.jpg" alt="testZend; ZendAMF Tutorial" width="326" height="241" /><br />
</strong></div>
<div></div>
<div><strong>Simples hein?</strong></div>
<div></div>
<p style="text-align: left;">
<div>Uma das grandes vantagens do uso do zendAMF é a possibilidade de mapear VO&#8217;s directamente na class Servidor, usando apenas:<strong> $server-&gt;setClassMap(&#8220;VOUser&#8221;, &#8220;VOUser&#8221;); </strong>($server-&gt;setClassMap(&#8220;AS3Classe&#8221; , &#8220;PHPClasse&#8221;);) mas isso fica para a próxima.</div>
<div></div>
<p style="text-align: left;">
<div>Podem ver o projecto final online <a href="http://www.msdevstudio.com/blog/flexSource/testZend/testZend.html" target="_blank">aqui</a>, fazer o download do projecto <a href="http://www.msdevstudio.com/blog/flexSource/testZend/testZend.zip">aqui,</a> o download do gateway: <a href="http://www.msdevstudio.com/blog/flexSource/testZend/index.rar">index.php</a> e da classe <a href="http://www.msdevstudio.com/blog/flexSource/testZend/TutorialZend.rar" target="_blank">TutorialZend.php.</a></div>
<div></div>
<p style="text-align: left;">
<div>Espero que seja util, e já agora contem as vossas experiencias&#8230; será que é um substituto à altura do amfPHP ?</div>
<p> 
<div></div>
<p style="text-align: left;">
<p>Na minha opinião pessoal acho o zendAMF menos pesado, mais rapido e até mais simples de usar visto que podemos definir a estrutura de dados e classes&#8230; mas bom, ainda só estudei um pouco&#8230; brevemente darei mais noticias&#8230;.</p>
<p>Abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2009/01/31/zendamf-novidade-analise-vs-amfphp-e-tutorial/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
		</item>
		<item>
		<title>Tutorial: Adobe Flex a partir do zero &#8211; Parte V</title>
		<link>http://blog.msdevstudio.net/2008/06/04/tutorial-adobe-flex-a-partir-do-zero-parte-v/</link>
		<comments>http://blog.msdevstudio.net/2008/06/04/tutorial-adobe-flex-a-partir-do-zero-parte-v/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 08:37:37 +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[Uncategorized]]></category>
		<category><![CDATA[Action Script]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[inicinates]]></category>
		<category><![CDATA[iv]]></category>
		<category><![CDATA[MXML]]></category>
		<category><![CDATA[part 5]]></category>
		<category><![CDATA[php + flex]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/06/04/tutorial-adobe-flex-a-partir-do-zero-parte-v/</guid>
		<description><![CDATA[Finalmente!! Dizem voc&#234;s&#8230; Mas esta parte deu trabalho! Digo eu! Bom, aos seguidores do meu tutorial j&#225; pouco mais posso dizer, esta parte trata-se do seguimento do meu tutorial Adobe Flex a Partir do zero disponivel aqui e que parece estar a ser um sucesso (est&#225;? digam-me voc&#234;s!) entre os iniciantes e n&#227;o s&#243;. Esta [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente!! Dizem voc&#234;s&#8230;</p>
<p>Mas esta parte deu trabalho! Digo eu!</p>
<p>Bom, aos seguidores do meu tutorial j&#225; pouco mais posso dizer, esta parte trata-se do seguimento do meu tutorial Adobe Flex a Partir do zero disponivel <a href="http://msdevstudio.com/blog/2008/01/05/adobe-flex-a-partir-do-zero/" target="_blank">aqui</a> e que parece estar a ser um sucesso (est&#225;? digam-me voc&#234;s!) entre os iniciantes e n&#227;o s&#243;.</p>
<p>Esta parte V engloba o ponto mais complexo a n&#237;vel de compreens&#227;o visto que engloba um sistema CRUD em Flex+amfPHP (php+mysql), onde explico tudo, desde a cria&#231;&#227;o das fun&#231;&#245;es no php, instru&#231;&#245;es SQL, tabelas e bem como toda a parte no flex que inclui uma parte de administra&#231;&#227;o protegida por um login.</p>
<p>Passo a citar os pontos discutidos nesta parte do tutorial:</p>
<p><em></em></p>
<p><span style="color: #ff8000">9. Criando o primeiro sistema CRUD em Flex     <br />9.1. Cria&#231;ao das tabelas/servi&#231;os no mysql/amfphp      <br />9.1.1. Criando a tabela users      <br />9.1.2. Inserido o utilizador de teste      <br />9.1.3. Criando o servi&#231;o login no amfPHP      <br />9.2. Cria&#231;&#227;o dos RemoteObjects e Fun&#231;oes.      <br />9.3. Utiliza&#231;&#227;o dos dados do Remote Object numa datagrid      <br />9.3.1. Criando tabelas e inserindo dados no mysql      <br />9.3.2. Cria&#231;&#227;o dos servi&#231;os Crud no amfphp      <br />9.4. Opera&#231;&#245;es de Leitura, Escrita, Actualiza&#231;&#227;o e Elimina&#231;&#227;o      <br />9.4.1. Opera&#231;&#227;o de Leitura      <br />9.4.2. Cria&#231;&#227;o de um state de administra&#231;&#227;o para opera&#231;&#245;es de Escrita, Elimina&#231;&#227;o e Actualiza&#231;&#227;o      <br />9.4.2.1. Cria&#231;&#227;o de um viewstack      <br />9.4.2.2. Cria&#231;&#227;o dos layouts para as opera&#231;&#245;es CRUD dentro do viewstack      <br />9.4.3. Opera&#231;&#227;o de inser&#231;&#227;o      <br />9.4.4. Opera&#231;&#227;o de Actualiza&#231;&#227;o      <br />9.4.5. Opera&#231;&#227;o de elimina&#231;&#227;o      <br />9.5. Protegendo &#225;rea administrativa</span></p>
<p>Esta parte conta com 27 p&#225;ginas, pelo que pode-se tornar um pouco extenso, mas brevemente colocarei o resultado final deste crud, bem como o servi&#231;o do amfphp para download. Colocarei tamb&#233;m o update ao Flex Book brevemente.</p>
<p>Se detectarem algum erro informem para o email que se encontra no final do pdf.</p>
<p>E pronto, o t&#227;o esperado download pode ser feito <a href="http://msdevstudio.com/blog/download-manager.php?id=19">aqui</a></p>
<p>Sintam-se &#224; vontade para criticar, sugerir ou opinar at&#233; porque eu gostava de saber o vosso feedback especialmente desta parte.</p>
<p>Um abra&#231;o.</p>
<p>&#160;</p>
<p><em><strong>Edit:</strong> C&#243;digos fonte publicados (bin-release+source, ola.mundo php service, services-config.xml) dispon&#237;vel em:</em></p>
<p><a title="" href="http://msdevstudio.com/blog/2008/06/12/adobe-flex-a-partir-do-zero-5-sourcesfontes/"><em>http://msdevstudio.com/blog/2008/06/12/adobe-flex-a-partir-do-zero-5-sourcesfontes/</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/06/04/tutorial-adobe-flex-a-partir-do-zero-parte-v/feed/</wfw:commentRss>
		<slash:comments>81</slash:comments>
		</item>
		<item>
		<title>Adobe Flex &#8211; Sistema de estatisticas de visitantes</title>
		<link>http://blog.msdevstudio.net/2008/04/01/adobe-flex-sistema-de-estatisticas-de-visitantes/</link>
		<comments>http://blog.msdevstudio.net/2008/04/01/adobe-flex-sistema-de-estatisticas-de-visitantes/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 09:10:40 +0000</pubDate>
		<dc:creator>Mário Santos</dc:creator>
				<category><![CDATA[Action Script & MXML]]></category>
		<category><![CDATA[Duvidas]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML, XHTML, CSS, Java Script]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RIA's Geral]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[código fonte]]></category>
		<category><![CDATA[estatisticas]]></category>
		<category><![CDATA[info]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[visitantes]]></category>

		<guid isPermaLink="false">http://msdevstudio.com/blog/2008/04/01/adobe-flex-sistema-de-estatisticas-de-visitantes/</guid>
		<description><![CDATA[Sempre achei muito interessante podermos saber o máximo de informações sobre os visitantes do nosso site/aplicativo, além disso com esses dados podemos na realidade perceber de onde vem o visitante, que sistema operativo, resolução de ecrã, versão do flash, país etc&#8230;.já que com estas informações podemos optimizar o nosso site/aplicação. Uma possibilidade é usar o [...]]]></description>
			<content:encoded><![CDATA[<p>Sempre achei muito interessante podermos saber o máximo de informações sobre os visitantes do nosso site/aplicativo, além disso com esses dados podemos na realidade perceber de onde vem o visitante, que sistema operativo, resolução de ecrã, versão do flash, país etc&#8230;.já que com estas informações podemos optimizar o nosso site/aplicação.</p>
<p>Uma possibilidade é usar o google analytics, mas acabáramos por andar um pouco perdidos com a API,  interpretação da mesma e além disse em sites com um número elevado de visitas o google analytics será pago&#8230; o que decidi fazer, pode ser feito com qualquer outro sistema de estatísticas openSource. No meu sistema de imobiliária ( <a href="http://msdevstudio.com/blog/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis/" title="http://msdevstudio.com/blog/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis" target="_blank">http://msdevstudio.com/blog/2008/02/27/backend-sistema-imobilirio-gesto-de-imveis/</a>) inicialmente estou a utilizar esse sistema, embora terei que o alterar se a versão for para comercializar devido à licença GPL debaixo da qual foi disponibilizado o sistema que voou falar.</p>
<p>O sistema em si é o Stats Indexer 1.3 disponivel a correr em: <a href="http://members.lycos.nl/promajo/statsindexer.php">http://members.lycos.nl/promajo/statsindexer.php</a></p>
<p>Tudo o que tem que fazer é o seu download em: <a href="http://members.lycos.nl/promajo/dl/StatsIndexerJDL.rar">http://members.lycos.nl/promajo/dl/StatsIndexerJDL.rar</a> e instalar o sistema normalmente na mesma directoria onde estará a pagina a ser monitorizada (primeiro configurar e criar as tabelas), depois apenas inserir numa pagina comum (Geralmente na que corre o swf, index.html ?, para obterem o máximo partido do script, o vosso ficheiro (.swf) deve ser inserido numa pagina .php e o servidor deve ter suporte a php ) o primeiro código disponível no index-readme.txt.</p>
<p>Depois basta acederem ao vosso index.php 3 ou 4 vezes para &#8220;encher&#8221; dados na base de dados e ver as estatísticas correndo o ficheiro statsindexer.php</p>
<p>O sistema em si está a funcionar, mas como queria esses dados no Flex, teria obrigatoriamente que o passar por xml ou usando o amfphp. Foi esta segunda opção que usei. Deu algum trabalho mas lá acabei por criar um serviço para o amfphp o qual disponibilizo para download, este serviço está pronto a usar, bastando coloca-lo na pasta services do amfphp e usa-lo para obter os dados armazenados pelo stats Indexer. (Devem alterar no final do stats.php as informações de login da base de dados bem como o nome da mesma).</p>
<p>Basta darem uma vista de olhos nas funções deste meu serviço ou usarem o browser dos services do amfphp e testarem o servico stats para ver como os dados são devolvidos, depois basta criarem o serviço no flex para lidar com esses mesmo dados.</p>
<p>Lá para o final de semana se tiver um pouco de tempo faço um exemplo de como recuperar esses dados e os colocar num gráfico em flex.</p>
<p>Download Stats Indexer: <a href="http://members.lycos.nl/promajo/dl/StatsIndexerJDL.rar">http://members.lycos.nl/promajo/dl/StatsIndexerJDL.rar</a></p>
<p>Download Service: <a href="http://www.msdevstudio.com/mywork/stats.rar" title="stats.rar" target="_blank">stats.rar</a></p>
<p>Download amfPHP: <a href="http://sourceforge.net/project/showfiles.php?group_id=72483#files" title="http://sourceforge.net/project/showfiles.php?group_id=72483#files" target="_blank">http://sourceforge.net/project/showfiles.php?group_id=72483#files</a></p>
<p>Espero que ajude &#8220;muita&#8221; gente <img src='http://blog.msdevstudio.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Qualquer duvida, critica ou sugestão basta comentarem.</p>
<p>Abraços.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.msdevstudio.net/2008/04/01/adobe-flex-sistema-de-estatisticas-de-visitantes/feed/</wfw:commentRss>
		<slash:comments>2</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>
	</channel>
</rss>

