<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Comunidade Portuguesa de Rich Internet Applications &#187; PHP</title>
	<atom:link href="http://www.riapt.org/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.riapt.org</link>
	<description></description>
	<lastBuildDate>Thu, 12 Aug 2010 20:39:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RiaPT meeting no Porto!</title>
		<link>http://www.riapt.org/2010/02/08/riapt-meeting-no-porto/</link>
		<comments>http://www.riapt.org/2010/02/08/riapt-meeting-no-porto/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 10:33:23 +0000</pubDate>
		<dc:creator>rduartes</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Introduções]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Uncategorized]]></category>

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

		<guid isPermaLink="false">http://www.riapt.org/?p=396</guid>
		<description><![CDATA[Fizemos na Webfuel um projecto há uns meses para um dos principais criadores de joias nacionais. Um dos requisitos do cliente era que na secção de showroom, cada joia pudesse ser apresentada dentro de uma ferramenta de zoom que permitisse ver a joia em detalhe &#8211; implicando que as fotos das joias tivessem resoluções superiores [...]]]></description>
			<content:encoded><![CDATA[<p>Fizemos na Webfuel um projecto há uns meses para um dos principais criadores de joias nacionais. Um dos requisitos do cliente era que na secção de showroom, cada joia pudesse ser apresentada dentro de uma ferramenta de zoom que permitisse ver a joia em detalhe &#8211; implicando que as fotos das joias tivessem resoluções superiores a 700&#215;700 pixeis. Outro dos requisitos, era que as imagens das joias não tivessem <em>fundo </em>para que pudessem encaixar correctamente no layout do site &#8211; implicando que teria que ser escolhido um formato que suportasse transparência, neste caso PNG. Para terminar, era imperativo que o cliente, sem quaiquer conhecimentos de informática, pudesse adicionar e actualizar as fotos das joias através do backoffice &#8211; implicando que cada foto fosse um PNG colocado no servidor pelo cliente através das funcionalidades do backoffice.</p>
<p>Estas pré-condições implicaram o recurso ao formato PNG &#8211; o único que permitiria resolver o problema, visto a norma JPEG2000 não ser suportada pelo Flash Player. Porém, adoptar o formato PNG para as fotos das joias com as dimensões acima referidas resultou em ficheiros de cerca de 500KB. Isto, num site com cerca de 200 a 300 jóias, com várias fotos cada.</p>
<p>Depois do <em>deployment </em>do site constatou-se o esperado: em ligações rápidas, os 500KB de cada foto não representavam grandes problems, mas em ligações lentas podia ser desesperante esperar de 10 a 20 segundos para a foto carregar. E com o disseminar recente das ligações 3,5G (kangurus, vodafone e tmn connect box, etc), tornou-se problemático pelo que tivemos que procurar por uma solução.</p>
<p>Encontrámos uma extensão chamada <a href="http://www.swftools.org/png2swf.html">PNG2SWF</a> pertencente ao pacote SWFTools que permitia converter um PNG para um SWF. Como é sabido, um PNG embebido em SWF pode levar compressão sendo mantida a transparência, pelo que decidimos fazer algumas experiências. Após alguns testes, tivemos resultados impressionantes: imagens de 500 Kb passaram para 60 Kb sem serem perdidos os canais alpha. Exactamente o que precisávamos!</p>
<p>O problema que surgiu de seguida consistia em saber como integrar o PNG2SWF com o site / backoffice sem afectar a experiência do utilizador. Era importante que o cliente continuasse a utilizar o backoffice como sempre, sem trabalho adicional.</p>
<p>Fizemos então um script simples, que vos ofereço adiante, e que consiste num género de proxy para carregar PNGs, só que devolve o PNG convertido para SWF, e escalado para dimensões arbitrárias escolhidas pelo programador.</p>
<p>O download do script pode ser feito aqui: <a href="http://www.riapt.org/wp-content/uploads/2008/12/pngoptimize.zip">pngoptimize</a> . O source code pode ser visto abaixo:</p>
<pre>&lt;?php

    // 31-10-2008
    // pngOptimize.php by João Saleiro - Webfuel ( joao.saleiro@webfuel.pt)
    // Todo:
    // - receive quality from $_GET vars
    // - set default values for quality, w and h

    $image = $_GET['url'];
    $w = $_GET['w'];
    $h = $_GET['h'];

    $date = filemtime($image);

    // Generate SWF filename
    $swf = $image . $w . $h .'_'. $date .'.swf';

    // Generate SWF if it doesn't exist
    if (!file_exists($swf))
    {
        // Calculate dimensions
        list($width, $height) = getimagesize($image);

        $proportion = 1;
        if ($width &gt; $height)
            $proportion = $w/$width;
        else
            $proportion = $h/$height;

        // Load image and preserver transparency
        $im = @imageCreateFromPNG ($image);
        imagealphablending($im, false);
        imageinterlace ( $im, 0);
        imagesavealpha($im, true);

        // Create new Image
        $im_dest = imagecreatetruecolor ($width*$proportion,  $height*$proportion);

        // Set transparency
        $background = imagecolortransparent($im);
        imagecolortransparent($im_dest, $background);
        imagealphablending($im_dest, false);
        imagesavealpha($im_dest, true);

        // Resize old image to new image
        imagecopyresampled($im_dest, $im, 0, 0, 0, 0, $width*$proportion, $height*$proportion, $width, $height);

        // Save new image
        $tempName=$image.'temp.png';
        imagepng($im_dest, $tempName);

        // Clean memory
        imagedestroy($im);
        imagedestroy($im_dest);    

        // Convert new image to SWF
        shell_exec("./png2swf -j 85 -o $swf $tempName");

        // Remove temp file
        unlink($tempName);
    }

    // If we get here, and there's no file, we don't return nothing
    if (!file_exists($swf))
        exit(0);

    // Return generated SWF
    header("Content-type: application/x-shockwave-flash");
    $fp = fopen($swf,"rb");
    fpassthru($fp);
    fclose($fp);
?&gt;</pre>
<p>O algoritmo é relativamente simples:</p>
<ol>
<li>O script recebe por GET os parâmetros: url, w e h, que correspondem ao endereço relativo do PNG, e as dimensões que queremos para o nosso SWF resultante;</li>
<li>O script vai então gerar um nome de ficheiro único para aquele url, com aquelas dimensões, e para a data do PNG (i.e. se o PNG for actualizado pelo cliente o script detecta que há um PNG novo, o que implica gerar um novo SWF com novo nome);</li>
<li>É verificado se já existe algum SWF com aquele nome único (i.e. uma versão em cache daquele PNG já convertido para SWF com aquelas dimensões). Se existir, o SWF é aberto e lido, e feito um fpassthru do ficheiro (i.e. é devolvido o conteúdo do ficheiro SWF), depois de definido o header application/x-shockwave-flash para que o Flash possa interpretar o resultado do ficheiro PHP como sendo um SWF;</li>
<li>Se não existir nenhum SWF, o script vai abrir o PNG referido no URL, e criar um novo PNG temporário com as dimensões referidas, mantendo a transparência;</li>
<li>É então feita a conversão desse PNG temporário para SWF através de um shell_exec que executa o png2swf com os parâmetros necessários para a conversão, sendo gerado um SWF com o nome de ficheiro referido acima, e devolvido com o fpassthru.</li>
</ol>
<pre></pre>
<p>Para utilizar este script é necessário:</p>
<ul>
<li>Colocar no servidor, na mesma directoria do pngConvert.php, o png2swf (linux) ou png2swf.exe (windows);</li>
<li>Permissões de execução do png2swf nessa directoria;</li>
<li>Permissões do php para a chamada de comandos externos (shell_exec);</li>
<li>Permissões de escrita nas directorias onde estão os ficheiros PNG para serem lá colocados os ficheiros SWF;</li>
</ul>
<p>Do lado do cliente, o código necessário para carregar um PNG convertido para SWF através do pngConvert é:</p>
<ul>
<li> MXML:</li>
</ul>
<pre>
&lt;mx:Image source="pngConvert.php?url=imagem.png&amp;w=100&amp;h=100"/&gt;</pre>
<ul>
<li>Actionscript 3 (i.e. Flash)</li>
</ul>
<pre>var l:Loader=new Loader();</pre>
<pre>l.load(new URLRequest('pngConvert.php?url=imagem.png&amp;w=100&amp;h=100'));</pre>
<pre>addChild(l);</pre>
<p>O script ainda pode levar algumas melhorias, nomeadamente:</p>
<ul>
<li>a qualidade da imagem também ser passada por GET;</li>
<li>se os parâmetros w e h não estiverem definidos, o SWF gerado é da mesma dimensão que o PNG original.</li>
</ul>
<p>Não implementei essas melhorias porque não precisei na altura, mas se alguém quiser melhorar, é bem vindo &#8211; publicarei depois aqui a versão melhorada, com devidos créditos.</p>
<p>Espero que esta informação e script vos sejam úteis. O script pode ser utilizado livremente e só pedimos que seja colocado um comentário neste post com o endereço do site onde o estão a usar, para alegrarem o nosso dia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/12/04/aumentar-a-velocidade-no-carregamento-de-pngs-convertendo-os-para-swf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebORB PHP 3.5 Out</title>
		<link>http://www.riapt.org/2008/09/15/weborb-php-35/</link>
		<comments>http://www.riapt.org/2008/09/15/weborb-php-35/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 20:47:56 +0000</pubDate>
		<dc:creator>danielgomes</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[Weborg]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[client side]]></category>
		<category><![CDATA[remoting]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[server side]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[weborb]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=329</guid>
		<description><![CDATA[Foi lançada hoje a nova versão do WebORB para PHP (v. 3.5). Versão essa que contempla bastantes novidades, e em especial, uma novidade que irá agradar os utilizadores de Silverlight. O anúncio foi feito no blog do WebORB que podem ver aqui.
Além dos imensos bugs que esta versão corrige, ela passa agora a suportar o [...]]]></description>
			<content:encoded><![CDATA[<p>Foi lançada hoje a nova versão do <a title="WebORB para PHP" href="http://www.themidnightcoders.com/weborb/php/" target="_blank">WebORB para PHP</a> (v. 3.5). Versão essa que contempla bastantes novidades, e em especial, uma novidade que irá agradar os utilizadores de <a title="Silverlight" href="http://silverlight.net/" target="_blank">Silverlight</a>. O anúncio foi feito no blog do WebORB que podem ver <a title="aqui" href="http://www.themidnightcoders.com/blog/2008/09/weborb-for-php-35-data-management-for.html" target="_blank">aqui</a>.</p>
<p>Além dos imensos bugs que esta versão corrige, ela passa agora a suportar o Data Management para flex (WDMF), o que vai simplificar e tornar o processo de desenvolvimento bem mais rápido visto que o aproveitamento do código gerado ( client-side (AS3) e server-side (PHP) ) ronda os 90% (segundo os projectos implementados pela equipa de profissionais do WebORB). Podem ver um screencast desta funcionalidade <a title="aqui" href="http://www.themidnightcoders.com/weborb/php/videos/wdmf/overview" target="_blank">aqui</a>.</p>
<p>Os utilizadores de Silverlight podem agora usufruir do WebORB PHP visto que esta nova versão tráz um componente que permite conectar e invocar classes PHP sem a tipíca complexidade Silverlight remoting. Podem ver como funciona neste <a title="aqui" href="http://www.themidnightcoders.com/weborb/php/silverlight_and_php.shtm" target="_blank">tutorial</a>.</p>
<p>Podem fazer download da Versão 3.5 do WebORB PHP <a title="aqui" href="http://www.themidnightcoders.net/downloadcenter/" target="_blank">aqui</a> e ver o release history <a title="aqui" href="http://www.themidnightcoders.com/weborb/php/releasehistory.shtm" target="_blank">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/09/15/weborb-php-35/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Weborb PHP 3.5 Beta</title>
		<link>http://www.riapt.org/2008/09/05/weborb-php-35-beta/</link>
		<comments>http://www.riapt.org/2008/09/05/weborb-php-35-beta/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 16:24:29 +0000</pubDate>
		<dc:creator>danielgomes</dc:creator>
				<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[arp]]></category>
		<category><![CDATA[beta tester]]></category>
		<category><![CDATA[client side]]></category>
		<category><![CDATA[puremvc]]></category>
		<category><![CDATA[server side]]></category>
		<category><![CDATA[weborb]]></category>

		<guid isPermaLink="false">http://www.riapt.org/?p=301</guid>
		<description><![CDATA[O Mark Piller, administrador da Weborb, lançou ontem um pedido de beta testers para a próxima versão do Weborb PHP (3.5) e ainda um vídeo a demonstrar como funcionará uma das mais importantes funcionalidades que esta versão vai ter ( Data Management ). Esta versão gerará código client-side e server-side. Aconselho a visualização do vídeo. [...]]]></description>
			<content:encoded><![CDATA[<p>O Mark Piller, administrador da <a title="Weborb" href="http://www.themidnightcoders.com/weborb/" target="_blank">Weborb</a>, lançou ontem um pedido de <em><a title="Beta Testers" href="http://www.themidnightcoders.com/forum/default.aspx?g=posts&amp;m=1875#1875" target="_blank">beta testers</a></em> para a próxima versão do Weborb PHP (3.5) e ainda um vídeo a demonstrar como funcionará uma das mais importantes funcionalidades que esta versão vai ter ( Data Management ). Esta versão gerará código <em>client-side</em> e <em>server-side</em>. Aconselho a visualização do <a href="http://www.themidnightcoders.com/forum/default.aspx?g=posts&amp;m=1875#1875">vídeo</a>. Vale a pena ver esta funcionalidade a trabalhar e de forma tão simples.</p>
<p><a href="http://www.themidnightcoders.com/forum/default.aspx?g=posts&amp;m=1875#1875" target="_blank"></a> Além desta funcionalidade a actual <a title="versão (3.0)" href="http://www.themidnightcoders.com/weborb/php/" target="_blank">versão (3.0)</a>, já gera código para as variadas Frameworks como <a title="Cairngorm" href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm" target="_blank">Cairngorm</a>, <a title="PureMVC" href="http://puremvc.org/" target="_blank">PureMVC</a>, <a title="ARP" href="http://osflash.org/projects/arp" target="_blank">ARP</a>.</p>
<p>A nível de velocidade ainda não tive oportunidade de testar as diferenças entre o <a title="Weborb" href="http://www.themidnightcoders.com/weborb/" target="_blank">Weborb</a> e o <a title="amfphp" href="http://amfphp.org/" target="_blank">amfphp</a>, mas assim que tiver tempo irei fazer alguns testes a ambos e publicarei os resultados com os respectivos <em>screenshots</em>.</p>
<p>Quem quiser fazer parte da equipa de <em>beta testers</em> pode começar por ler o <a title="tópico" href="http://www.themidnightcoders.com/forum/default.aspx?g=posts&amp;m=1875#1875" target="_blank">tópico</a> criado pelo Mark Piller no <a title="forúm" href="http://www.themidnightcoders.com/forum/default.aspx?g=forum" target="_blank">fórum</a> e falar directamente com ele via PM.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/09/05/weborb-php-35-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Componente LINQ do C# em PHP &#8211; PHPLinq</title>
		<link>http://www.riapt.org/2008/03/28/componente-linq-do-c-em-php-phplinq/</link>
		<comments>http://www.riapt.org/2008/03/28/componente-linq-do-c-em-php-phplinq/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 18:12:21 +0000</pubDate>
		<dc:creator>Grettir</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.riapt.org/2008/03/28/componente-linq-do-c-em-php-phplinq/</guid>
		<description><![CDATA[O C# 3.5 contem um componente que permite efectuar pesquisas dentro de várias estruturas de dados, o LINQ.
Um PHP/.NET Developer decidiu criar um package para PHP de modo a reproduzir a simplicidade que com o LINQ se efectuam queries &#8211; PHPLinq.
No site do Maarten Balliauw encontram alguns exemplos,
// Create data source
$names = array(”John”, “Peter”, “Joe”, [...]]]></description>
			<content:encoded><![CDATA[<p>O C# 3.5 contem um componente que permite efectuar pesquisas dentro de várias estruturas de dados, o LINQ.</p>
<p>Um PHP/.NET Developer decidiu criar um package para PHP de modo a reproduzir a simplicidade que com o LINQ se efectuam queries &#8211; PHPLinq.</p>
<p>No site do <a href="http://blog.maartenballiauw.be/">Maarten Balliauw</a> encontram alguns exemplos,</p>
<p><em><strong>// Create data source<br />
$names = array(”John”, “Peter”, “Joe”, “Patrick”, “Donald”, “Eric”);<br />
// Query<br />
$result = from(’$name’)-&gt;in($names)<br />
-&gt;where(’$name =&gt; strlen($name) &lt; 5′)<br />
-&gt;select(’$name’);</strong></em></p>
<p><em> (source: Maarten Balliauw)</em><br />
e <a href="http://www.codeplex.com/PHPLinq">aqui </a>poderão descarregar o package e começar já a evitar os ciclos nos algoritmos de queries.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/03/28/componente-linq-do-c-em-php-phplinq/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Material das apresentações do Portugal Flex Camp</title>
		<link>http://www.riapt.org/2008/02/21/material-das-apresentacoes-do-portugal-flex-camp/</link>
		<comments>http://www.riapt.org/2008/02/21/material-das-apresentacoes-do-portugal-flex-camp/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 20:29:48 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Exemplos]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Formação]]></category>
		<category><![CDATA[OsFlash]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RIAPT]]></category>

		<guid isPermaLink="false">http://www.riapt.org/2008/02/21/material-das-apresentacoes-do-portugal-flex-camp/</guid>
		<description><![CDATA[Está finalmente reunido o material usado nas apresentações do Portugal Flex Camp. Deixo-vos abaixo os links:

Serge Jespers &#38; Enrique Duvos &#8211; Intro to the Adobe RIA Platform / FB3 features and AIR 1.0 features /Adobe Open-source strategy
Carlos Rovira &#8211; Using Flash and Flex Together
João Fernandes &#8211; BlazeDS e LCDS
João Saleiro &#8211; Integração de aplicações Flex [...]]]></description>
			<content:encoded><![CDATA[<p>Está finalmente reunido o material usado nas apresentações do Portugal Flex Camp. Deixo-vos abaixo os links:</p>
<ul>
<li>Serge Jespers &amp; Enrique Duvos &#8211; <a href="http://flex.org/tour/slides_europe.pdf">Intro to the Adobe RIA Platform / FB3 features and AIR 1.0 features /Adobe Open-source strategy</a></li>
<li>Carlos Rovira &#8211; <a href="http://www.madeinflex.com/2007/10/21/using-flash-and-flex-together/">Using Flash and Flex Together</a></li>
<li>João Fernandes &#8211; <a href="http://www.webfuel.pt/jsaleiro/blazeDSeLCDS.pdf">BlazeDS e LCDS</a></li>
<li>João Saleiro &#8211; <a href="http://www.riapt.org/wp-content/uploads/2008/02/integracao-do-flex-a-um-backend-lamp-atraves2.pdf">Integração de aplicações Flex com PHP através de AMFPHP (Flash Remoting for PHP)</a> e o <a href="http://www.webfuel.pt/jsaleiro/riapt.zip">código fonte</a></li>
</ul>
<p>Vou ver ainda se consigo que me entreguem os vídeos das apresentações, embora não saiba se será possível.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/02/21/material-das-apresentacoes-do-portugal-flex-camp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portugal Flex Camp &#8211; Slides da apresentação de integração de Flex com PHP usando AMFPHP</title>
		<link>http://www.riapt.org/2008/02/20/slides-da-apresentacao-de-integracao-de-flex-com-php-usando-amfphp/</link>
		<comments>http://www.riapt.org/2008/02/20/slides-da-apresentacao-de-integracao-de-flex-com-php-usando-amfphp/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 01:53:15 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Exemplos]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Formação]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.riapt.org/2008/02/20/slides-da-apresentacao-de-integracao-de-flex-com-php-usando-amfphp/</guid>
		<description><![CDATA[E assim se passou o primeiro Portugal Flex Camp! &#8211; Sim, a esta hora devia estar a dormir, mas é impossível deitar-me sem fazer um post..
Na minha opinião, e considerando que foi a primeira vez que se fez este evento em Portugal, foi um sucesso tanto pela qualidade da generalidade das apresentações, como pelo facto [...]]]></description>
			<content:encoded><![CDATA[<p>E assim se passou o primeiro Portugal Flex Camp! &#8211; Sim, a esta hora devia estar a dormir, mas é impossível deitar-me sem fazer um post..</p>
<p>Na minha opinião, e considerando que foi a primeira vez que se fez este evento em Portugal, foi um sucesso tanto pela qualidade da generalidade das apresentações, como pelo facto de termos tido a sala completamente cheia. Gostei especialmente da apresentação do <a href="http://www.webkitchen.be/">Serge Jespers</a>, embora a do Enrique Duvos não tenha ficado atrás.</p>
<p>Vou tentar reunir as apresentações aqui no riapt, e ver se consigo que o ISCTE nos disponibilize os vídeos em formato digital.</p>
<p>Entretanto deixo-vos aqui a <a href="http://www.riapt.org/wp-content/uploads/2008/02/integracao-do-flex-a-um-backend-lamp-atraves2.pdf">minha apresentação em PDF</a>, e o <a href="http://www.webfuel.pt/jsaleiro/riapt.zip">source code</a> respectivo. Falo da apresentação sobre integração de Flex com PHP através de AMFPHP.</p>
<p>Aproveito para agradecer:</p>
<ul>
<li>A todos os presentes;</li>
<li>Ao ISCTE, cuja organização foi impecável;</li>
<li>À Adobe Portugal e internacional, em especial à Sumi Lim, Enrique Duvos e Serge Jesper</li>
<li>Ao Kim Hansen pelo apoio (dude, on the next event you have to make a presentation!)</li>
</ul>
<p>Para aqueles que me pediram um cartão e não o receberam (desde Dezembro que esgotei os cartões, e ainda não tive tempo para mandar fazer novos..), deixo aqui os meus contactos:</p>
<p>mail:  joao [dot] saleiro [at] webfuel [dot] pt<br />
skype: joao.saleiro</p>
<p>E para quem me quiser &#8220;seguir&#8221; no twitter, o meu twitter é joaosaleiro (<a href="http://twitter.com/joaosaleiro">http://twitter.com/joaosaleiro</a>).</p>
<p>Gostaria ainda de saber a opinião dos presentes relativamente tanto ao evento em geral, como à minha apresentação em específico. Podem fazê-lo enviando mail para a <a href="http://www.riapt.org/mailing-list/">mailing list</a>, ou deixando um comentário neste post. Não tenham medo de fazer críticas &#8211; o objectivo é aprender com o que foi feito de bem, e corrigir num próximo evento aquilo que não correu tão bem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2008/02/20/slides-da-apresentacao-de-integracao-de-flex-com-php-usando-amfphp/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Encontro de comemoração do aniversário do RiaPT: parte 2</title>
		<link>http://www.riapt.org/2007/12/09/encontro-de-comemoracao-do-aniversario-do-riapt-parte-2/</link>
		<comments>http://www.riapt.org/2007/12/09/encontro-de-comemoracao-do-aniversario-do-riapt-parte-2/#comments</comments>
		<pubDate>Sun, 09 Dec 2007 12:47:02 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Cairngorm]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Formação]]></category>
		<category><![CDATA[Introduções]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RIAPT]]></category>
		<category><![CDATA[Rich UI]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.riapt.org/2007/12/09/encontro-de-comemoracao-do-aniversario-do-riapt-parte-2/</guid>
		<description><![CDATA[Tal como já foi anunciado, no dia 15 de Dezembro &#8211; Sábado &#8211; haverá um encontro de comemoração do primeiro aniversário do RiaPT a partir das 16h, na Flag &#8211; Atrium Saldanha. O endereço do local pode ser visto aqui. O estacionamento no Atrium ao Sábado é gratuíto, pelo que poderão deslocar-se de automóvel ou [...]]]></description>
			<content:encoded><![CDATA[<p>Tal como já foi <a href="http://www.riapt.org/2007/11/29/encontro-de-comemoracao-do-aniversario-do-riapt/">anunciado</a>, no dia 15 de Dezembro &#8211; Sábado &#8211; haverá um encontro de comemoração do primeiro aniversário do RiaPT a partir das 16h, na <a href="http://www.flag.pt">Flag</a> &#8211; Atrium Saldanha. O endereço do local pode ser visto <a href="http://www.flag.pt/pages/contactos.asp">aqui</a>. O estacionamento no Atrium ao Sábado é gratuíto, pelo que poderão deslocar-se de automóvel ou metro com relativa facilidade.</p>
<p>As inscrições devem ser efectuadas deixando um comentário no <a href="http://www.riapt.org/2007/11/29/encontro-de-comemoracao-do-aniversario-do-riapt/">post anterior</a>, estando actualmente <strong>31 pessoas </strong>inscritas. Aconselho também a leitura do <a href="http://www.riapt.org/2007/11/29/encontro-de-comemoracao-do-aniversario-do-riapt/">post anterior</a> que possui mais informação para complementar este.</p>
<p>Infelizmente já sei que não poderemos contar com o Kim Hansen n<strike>em com o José Luís Gouveia</strike> que não estarão em Portugal na altura. Lá teremos que fazer outro evento lá para finais de Fevereiro &#8230;.  ; )</p>
<p>O encontro  será marcado por curtas apresentações de 10 a 20 minutos, e poderemos contar também com a presença de uma equipa da <a href="http://www.4inweb.com/">4inWeb</a> que irá apresentar o <a href="http://silverlight.net/">Microsoft Silverlight</a>.</p>
<p>Assim sendo, aqui fica o índice de apresentações que me chegaram às mãos até ao momento, sem nenhuma ordem em específico. Irei actualizando este post à medida que mais pessoas se forem oferecendo para fazer apresentações.</p>
<h2>Índice de apresentações</h2>
<ol>
<li><strong>Boas Vindas</strong></li>
<li><strong>Apresentação do Microsoft Silverlight</strong> &#8211; <em>4InWeb</em></li>
<li><strong>Display List em AS3 </strong>- <em>João Gonçalves</em></li>
<li><strong>Integração de Flash Cs3 com Flex 2</strong> &#8211; <em>João Saleiro</em></li>
<li><strong>Showcase: Asko</strong> / <strong>&#8220;A minha primeira aplicação em Flex&#8221;</strong> -<em> Luís Costa</em></li>
<li><strong>Introdução ao Cairngorm</strong> &#8211; <em>João Fernandes</em></li>
<li><strong>Showcase: FlexFuel</strong> &#8211; <em>João Saleiro</em></li>
<li><strong>And Now for Something Completely Different &#8230;</strong> &#8211; <em>Paulo Moreira</em></li>
<li><strong>Showcase: Configurador de Regras</strong><strong> </strong>- <em>Alexandre Xavier</em></li>
</ol>
<p>Se houverem interessados, posso ainda apresentar &#8220;Interligação entre Flex e PHP utilizando AMFPHP&#8221;. Não incluí na lista para não terem que me aturar demasiadas vezes, mas se houver muitos interessados posso por exemplo substituir uma das minhas sessões por esta.</p>
<p>Antes das &#8220;palestras&#8221; teremos um fase de apresentações para que as pessoas se conheçam. No final, voltamos todos a sentar-nos e falamos livremente.</p>
<p>Temos tudo montado para um grande primeiro aniversário! Ok, falta o bolo&#8230; alguém se oferece para fazer um bolo? <img src='http://www.riapt.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2007/12/09/encontro-de-comemoracao-do-aniversario-do-riapt-parte-2/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cursos de programação de RIAs e Aplicações Web</title>
		<link>http://www.riapt.org/2007/09/08/cursos-de-programacao-de-rias-e-aplicacoes-web/</link>
		<comments>http://www.riapt.org/2007/09/08/cursos-de-programacao-de-rias-e-aplicacoes-web/#comments</comments>
		<pubDate>Sat, 08 Sep 2007 17:38:02 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Formação]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.riapt.org/2007/09/08/cursos-de-programacao-de-rias-e-aplicacoes-web/</guid>
		<description><![CDATA[Muitos dos alunos a quem dou formação, quando sabem que a minha área de negócio é em redor de Rich Internet Applications, perguntam-me se conheço algum curso nesta área. Infelizmente, que eu conheça, ainda não existe em Portugal um curso de desenvolvimento de RIAs.
Isso levou-me a pensar que seria boa ideia fazer duas coisas&#8230;
A primeira [...]]]></description>
			<content:encoded><![CDATA[<p>Muitos dos alunos a quem dou formação, quando sabem que a minha área de negócio é em redor de Rich Internet Applications, perguntam-me se conheço algum curso nesta área. Infelizmente, que eu conheça, ainda não existe em Portugal um curso de desenvolvimento de RIAs.<br />
Isso levou-me a pensar que seria boa ideia fazer duas coisas&#8230;</p>
<p>A primeira é, obviamente, criar um curso de desenvolvimento de RIAs. Como tal, dentro de um mês deverei começar a trabalhar nisso para tentar colocar o curso em prática em 2008.</p>
<p>A segunda, é criar um espaço no riapt para anunciar cursos de programação web com qualidade, o mais próximos possível do desenvolvimento de RIAs. Assim, convido todos os que conhecem bons cursos em escolas de formação técnicas ou profissionais, a enviar um mail para a <a href="http://www.riapt.org/mailing-list/">mailing list</a> com o nome da escola, o nome do curso, e o currículo do mesmo. Poderão ser as próprias escolas a fazê-lo, obviamente desde que o curso tenha qualidade.</p>
<p>Para começar, posso aconselhar o curso de Programação de Aplicações Web na etic_. Este curso sofreu uma restruturação na qual estive envolvido, aproximando-o muito do mercado de trabalho. Um dos seus pontos fortes é o projecto que em principio tratar-se-á de uma solução de e-commerce com algum CRM, baseado em Actionscript e PHP. Sou um dos principais formadores do curso, por isso posso garantir a qualidade do mesmo.</p>
<p><strong>Curso</strong><br />
Programação de Aplicações Web</p>
<p><strong>Escola</strong><br />
etic_</p>
<p><strong>Objectivo</strong><br />
Preparar futuros Web-Developers no desenvolvimento de aplicações distribuídas e websites alimentados por bases de dados, segundo as boas práticas correntes do modelo de três camadas e arquitecturas orientadas ao serviço.</p>
<p><strong>Currículo</strong><br />
1. Open Your Mind<br />
2. Introdução ao desenvolvimento Web<br />
3. Procotolos Web<br />
4. Design em Interfaces Gráficos para a Web<br />
5. Interfaces gráficos em HTML e CSS<br />
6. Fase 1 do Projecto &#8211; Planeamento<br />
7. Interfaces Gráficos em XHTML/XML<br />
8. Introdução à Programação<br />
9. Interfaces Interactivos em DHTML<br />
10. Fase 2 do Projecto &#8211; Front-end do Backoffice<br />
11. Bases de Dados Relacionais<br />
12. Linguagens Server-Side: PHP<br />
13. Aplicações de Bases de Dados<br />
14. Segurança em Aplicações Web<br />
15. Fase 3 do projecto &#8211; Back-end do Backoffice.<br />
16. Interfaces Animados em Flash<br />
17. Interfaces Interactivos em Actionscript<br />
18. Optimização de Projectos em Actionscript<br />
19. Fase 4 do Projecto &#8211; Front-end da solução de e-commerce<br />
20. Arquitecturas de Comunicação em Actionscript<br />
21. Fase 5 do Projecto &#8211; Back-end da solução de e-commerce</p>
<p><strong>Contactos</strong><br />
21 394 25 50<br />
Rua D. Luís I, nº6 &#8211; Lisboa<br />
<a href="mailto:info@etic.pt" class="wiki">info@etic.pt</a></p>
<p>Julgo que as inscrições terminam este mês.</p>
<p>Sei que a etic_ anda a negociar a compra do Flash CS3, por isso é bastante possível que a linguagem leccionada a partir do módulo 16 seja Actionscript 3. No módulo 20, é leccionado Flash Remoting com AMFPHP. No ano passado, foi integrado no curso um workshop de 12h de Flex 2. Não sei se isso acontecerá este ano, mas vou começar já a fazer pressão.</p>
<p>Agradeço que enviem outros cursos com currículos interessantes para a <a href="http://www.riapt.org/mailing-list/">mailing list</a>, para que os possa publicitar no riapt, criando uma secção específica para tal.</p>
<p><strong>(UPDATE)</strong><br />
Se preferirem, em vez da mailing list podem colocar a descrição dos cursos aqui nos comentários deste post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2007/09/08/cursos-de-programacao-de-rias-e-aplicacoes-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exemplo em Flex 2: Utilização de Value Objects com Flash Remoting</title>
		<link>http://www.riapt.org/2007/07/16/exemplo-em-flex-2-utilizacao-de-value-objects-com-flash-remoting/</link>
		<comments>http://www.riapt.org/2007/07/16/exemplo-em-flex-2-utilizacao-de-value-objects-com-flash-remoting/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 10:59:13 +0000</pubDate>
		<dc:creator>João Saleiro</dc:creator>
				<category><![CDATA[Amfphp]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Exemplos]]></category>
		<category><![CDATA[Flash remoting]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutoriais]]></category>

		<guid isPermaLink="false">http://www.riapt.org/2007/07/16/exemplo-em-flex-2-utilizacao-de-value-objects-com-flash-remoting/</guid>
		<description><![CDATA[Este é o último exemplo desta série, e consiste na utilização de Value Objects em Flash Remoting. É no fundo igual ao exemplo anterior, excepto que neste caso fazemos recurso a Value Objects para trocar informação.
A explicação do que são Value Objects, e quais as suas vantagens e desvantagens pode ser vista nesta pequena apresentação [...]]]></description>
			<content:encoded><![CDATA[<p>Este é o último exemplo desta série, e consiste na utilização de <a href="http://en.wikipedia.org/wiki/Value_Objects" class="wiki">Value Objects</a> em Flash Remoting. É no fundo igual ao exemplo anterior, excepto que neste caso fazemos recurso a Value Objects para trocar informação.</p>
<p>A explicação do que são Value Objects, e quais as suas vantagens e desvantagens pode ser vista <a href="http://www.riapt.org/wp-content/uploads/2007/10/ValueObjects.pdf" class="wiki">nesta</a> pequena apresentação que preparei.</p>
<p>Em resumo, os Value Objects são uma best practice recomendada para projectos grandes e complexos, ajudando-nos a simplificar o desenvolvimento e a manter a nossa sanidade mental.<br />
Em projectos pequenos desaconselho a utilização de Value Objects pois, como se pode ver no código do exemplo que apresento neste post embora do lado do cliente a nossa vida tenha ficado ligeiramente mais simples (código mais intuitivo graças a um typed object), do lado do servidor tivemos que aumentar a quantidade de código necessário (ver o ficheiro GestorDeUtilizadoresService.php) para converter as matrizes (hashmaps) para objectos. Claro que é possível criar algumas funções que automatizam este processo e evitam este código como fazemos na Webfuel, mas isto é uma lição para mais tarde.</p>
<p>O código fonte deste exemplo pode ser descarregado <a href="http://www.riapt.org/wp-content/uploads/2007/10/flashremotingVOs/flashremotingVOs.zip" class="wiki">daqui</a>. Para colocá-lo a funcionar, é preciso seguir exactamente os mesmos passos descritos no <a href="http://www.riapt.org/2007/07/16/exemplo-em-flex-2-operacoes-crud-usando-flash-remoting-via-amfphp-19b2/" class="wiki">exemplo anterior</a> (excepto a configuração da base de dados, que será a mesma).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.riapt.org/2007/07/16/exemplo-em-flex-2-utilizacao-de-value-objects-com-flash-remoting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
