<?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>getOnCode();</title>
	<atom:link href="http://getoncode.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://getoncode.com.br</link>
	<description>Entre no código e divirta-se</description>
	<lastBuildDate>Sat, 23 Feb 2013 16:37:31 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Modern.ie &#8211; Testando sua aplicação em múltiplos browsers</title>
		<link>http://getoncode.com.br/2013/02/23/modern-ie-testando-sua-aplicacao-em-multiplos-browsers/</link>
		<comments>http://getoncode.com.br/2013/02/23/modern-ie-testando-sua-aplicacao-em-multiplos-browsers/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 16:15:34 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualizacao]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=214</guid>
		<description><![CDATA[Não é novidade para desenvolvedores que testar alguma aplicação no Internet Explorer não é tão trivial quando você não está usando o sistema operacional Windows. Muitas pessoas, eu por exemplo, tem uma licença de Windows 8 e Windows 7 e eu costumo os instalar em máquinas virtuais Virtualbox. É aí que entra o site modern.ie, [...]]]></description>
				<content:encoded><![CDATA[<p>Não é novidade para desenvolvedores que testar alguma aplicação no Internet Explorer não é tão trivial quando você não está usando o sistema operacional Windows.</p>
<p>Muitas pessoas, eu por exemplo, tem uma licença de Windows 8 e Windows 7 e eu costumo os instalar em máquinas virtuais <a href="https://www.virtualbox.org/">Virtualbox</a>.</p>
<div id="attachment_216" class="wp-caption aligncenter" style="width: 635px"><a href="http://getoncode.com.br/wp-content/uploads/2013/02/Screenshot-from-2013-02-23-114759.png"><img class="size-large wp-image-216  " alt="modern.ie" src="http://getoncode.com.br/wp-content/uploads/2013/02/Screenshot-from-2013-02-23-114759-1024x495.png" width="625" height="302" /></a><p class="wp-caption-text">modern.ie &#8211; Uma excelente alternativa para testes com Internet Explorer</p></div>
<p>É aí que entra o site <a href="modern.ie">modern.ie</a>, pois ele oferece algumas soluções interessantes para facilitar os testes com internet explorer.</p>
<p>A primeira solução é o <em>BrowserStack </em>que é uma solução paga e no momento não será abordado aqui e a disponibilização de máquinas virtuais para download gratuito, com algumas restrições mas como as VMs são para testes com IE especificamente, elas não atrapalham.</p>
<h2>Plataformas Suportadas</h2>
<p>Até o momento, são disponibilizados appliances para:</p>
<ul>
<li>Windows</li>
<li>Linux</li>
<li>OSX</li>
</ul>
<p>Dependendo do sistema operacional selecionado, são oferecidas plataformas de virtualização distintas:</p>
<h3>Windows</h3>
<ul>
<li>Hyper-V</li>
<li>Virtual PC</li>
<li>Virtualbox</li>
<li>VMWare Player</li>
</ul>
<h3>Linux</h3>
<ul>
<li>Virtualbox</li>
</ul>
<h3>OSX</h3>
<ul>
<li>Virtualbox</li>
<li>VMWare Player</li>
</ul>
<p>Desenvolvedores normalmente não utilizam uma plataforma de virtualização em seus desktops que seja diferente destas supracitadas, então a plataforma onde o sistema operacional Windows e o Internet Explorer irão ser executados não é um problema.</p>
<h3>Versões do Windows e Internet Explorer</h3>
<ul>
<li>Win XP &#8211; IE 6</li>
<li>Vista &#8211; IE 7</li>
<li>Win7 &#8211; IE 8, IE 9</li>
<li>Win8 &#8211; IE 10</li>
</ul>
<h3> Limitações das VMs</h3>
<p>As VMs que tem o IE 7, IE 8, IE 9 e IE 10, serão &#8216;utilizáveis&#8217; por 90 dias, contando a partir do início do uso, tendo que a cada 30 dias executar o <em>rearm </em>com o comando <strong><em>simgr -rearm</em></strong><em> </em>.</p>
<p>A VM com Win XP e IE 6 irá expirar 90 dias após o momento em que ela <strong><em>for disponibilizada</em></strong><em> </em>no site modern.ie. Não existe a possibilidade de <em>rearm</em> como na VM anterior, mas provavelmente a VM será atualizada no site após esse período.</p>
<p>Após o período de 90 dias, as VMs com IE 7, IE 8, IE 9 e IE 10 só poderão ser utilizadas por uma hora antes de ela ser desligada sozinha e a VM com Win XP e IE 6 irá mostrar uma solicitação de chave de ativação e sem ela não será possível usar.</p>
<p>Durante o período em que as VMs estiverem ativas, elas poderão receber atualizações do Windows Update normalmente, bem como permitirá a instalação de qualquer aplicação nela (antivirus, etc.).</p>
<h3>Considerações Finais</h3>
<p>Esta é uma solução interessante para testar aplicações web e sites no Internet Explorer sem ter que pagar por uma licença do Windows, aparentemente é uma tentativa da Microsoft de facilitar a vida daqueles que sofrem diariamente buscando implementar projetos web compatíveis com a plataforma dela.</p>
<p><strong>Referências:</strong></p>
<p>http://modern.ie</p>
<p>http://blog.reybango.com/2013/02/04/making-internet-explorer-testing-easier-with-new-ie-vms/</p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2013/02/23/modern-ie-testando-sua-aplicacao-em-multiplos-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resultado do sorteio da cortesia silver para o PHP Conference Brasil 2012</title>
		<link>http://getoncode.com.br/2012/11/06/resultado-do-sorteio-da-cortesia-silver-para-o-php-conference-brasil-2012/</link>
		<comments>http://getoncode.com.br/2012/11/06/resultado-do-sorteio-da-cortesia-silver-para-o-php-conference-brasil-2012/#comments</comments>
		<pubDate>Wed, 07 Nov 2012 00:40:28 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=206</guid>
		<description><![CDATA[O vencedor foi: Parabéns! Entrarei em contato para te informar como usar a cortesia. A todos que participaram: OBRIGADO! Nos vemos no PHP Conference Brasil 2012.]]></description>
				<content:encoded><![CDATA[<p>O vencedor foi:</p>
<p><a href="http://getoncode.com.br/wp-content/uploads/2012/11/Screen-Shot-2012-11-06-at-10.32.02-PM.png"><img class="aligncenter size-full wp-image-207" title="Screen Shot 2012-11-06 at 10.32.02 PM" src="http://getoncode.com.br/wp-content/uploads/2012/11/Screen-Shot-2012-11-06-at-10.32.02-PM.png" alt="" width="854" height="238" /></a></p>
<p>Parabéns! Entrarei em contato para te informar como usar a cortesia.</p>
<p>A todos que participaram: <strong>OBRIGADO</strong>!</p>
<p>Nos vemos no PHP Conference Brasil 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/11/06/resultado-do-sorteio-da-cortesia-silver-para-o-php-conference-brasil-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sorteio de Cortesia para o PHP Conference Brasil 2012</title>
		<link>http://getoncode.com.br/2012/11/06/sorteio-de-cortesia-para-o-php-conference-brasil-2012/</link>
		<comments>http://getoncode.com.br/2012/11/06/sorteio-de-cortesia-para-o-php-conference-brasil-2012/#comments</comments>
		<pubDate>Tue, 06 Nov 2012 18:30:06 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=196</guid>
		<description><![CDATA[Pessoal, depois de um bom tempo sem postar nada, muito menos publicar nenhum podcast novo, estamos voltando com chave de ouro. Para quem não sabe, faltam algumas semanas para a PHP Conference Brasil 2012 e eu tenho uma cortesia silver, que corresponde ao ingresso gratuito para os dois dias de palestras (30/11 e 01/12). Para [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.phpconference.com.br"><img title="PHP Conference Brasil 2012" src="http://www.phpconference.com.br/images/promo/banners/pt_BR/PHPConfBR_FullBanner.gif" alt="PHP Conference Brasil 2012" width="468" height="60" /></a></p>
<p>Pessoal, depois de um bom tempo sem postar nada, muito menos publicar nenhum podcast novo, estamos voltando com chave de ouro.</p>
<p>Para quem não sabe, faltam algumas semanas para a PHP Conference Brasil 2012 e eu tenho uma cortesia silver, que corresponde ao ingresso gratuito para os dois dias de palestras (30/11 e 01/12).</p>
<p>Para participar é fácil, basta escrever um tweet parecido com esse:</p>
<blockquote><p>Quero concorrer a uma cortesia silver para o PHP Conference Brasil 2012 que o getOnCode vai sortear. http://kingo.to/1d3g</p></blockquote>
<p>É de extrema importância que o link <strong>http://kingo.to/1d3g</strong> esteja em seu tweet, pois será por intermédio dele que o sorteio será feito. Tweets que não tiverem o link acima serão desconsiderados.</p>
<p>Para sortear, será usado o site sorteie.me.<br />
O<strong> sorteio será hoje (06/11/2012) as 22:30hs </strong>e o ganhador será avisado pelo próprio twitter e também aqui pelo site.</p>
<p>Um detalhe que não pode ser ignorado e a culpa é toda minha, é de que esta cortesia poderá ser usada somente até amanhã dia 07/11/2012, por isso que o sorteio será hoje a noite. Infelizmente eu acabei me atrapalhando com um monte de atividades que eu tive nos últimos dias e é por isso que sortearei em cima da hora.</p>
<p><em><strong>Importante</strong>: </em></p>
<ul>
<li>O getOnCode está sorteando apenas a cortesia que corresponde ao <strong>ingresso</strong> ao evento nos dias 30/11/2012 e 01/12/2012;</li>
<li>Qualquer despesa adicional como: Transporte, Alimentação, Hospedagem, etc., ou seja, qualquer coisa que não seja o ingresso ao evento fica por conta de quem for contemplado pelo sorteio;</li>
<li>As regras para uso da cortesia, definidas pela organização do evento encontram-se <a href="http://www.temporealeventos.com.br/?area=1-como-usar-o-codigo-promocional-para-uma-atividade-&amp;tipo=1&amp;id=4090">neste link</a>;</li>
</ul>
<p>Abraço e boa sorte.</p>
<p><a title="Site do Adler" href="http://adlermedrado.com.br">Adler Medrado</a></p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/11/06/sorteio-de-cortesia-para-o-php-conference-brasil-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dica: Argumentos em scripts CLI com node.js</title>
		<link>http://getoncode.com.br/2012/04/05/dica-argumentos-em-scripts-cli-com-node-js/</link>
		<comments>http://getoncode.com.br/2012/04/05/dica-argumentos-em-scripts-cli-com-node-js/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 01:10:54 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=190</guid>
		<description><![CDATA[Naturalmente, para obter os argumentos de linha de comando com node.js é necessário acessar a propriedade argv do objeto process: O resultado do script acima é: É possível observar que tratar estes parâmetros na mão é um pouco trabalhoso pois precisamos lidar com cada argumento acessando-os elemento-por-elemento do array e isso demanda certo esforço, para [...]]]></description>
				<content:encoded><![CDATA[<p>Naturalmente, para obter os argumentos de linha de comando com node.js é necessário acessar a propriedade argv do objeto process:</p>
<p><script src="https://gist.github.com/e6b9f49edf8fd826881c.js"></script><noscript><pre><code class="language-javascript javascript">// Mostra todos (incluindo o comando node e o nome do arquivo)
console.log(process.argv)

// Mostra o nome do par&Atilde;&cent;metro -t
console.log(process.argv[2])</code></pre></noscript><br />
O resultado do script acima é:</p>
<p><script src="https://gist.github.com/c407b7277f365b57e1ed.js"></script><noscript><pre><code class="language- ">[ 'node', '/Users/adler/dev/exemplos/argv.js', '-t' ]
-t</code></pre></noscript><br />
É possível observar que tratar estes parâmetros na mão é um pouco trabalhoso pois precisamos lidar com cada argumento acessando-os elemento-por-elemento do array e isso demanda certo esforço, para diminuir este trabalho pode-se utilizar a lib <a href="https://github.com/substack/node-optimist">node-optimist</a>.</p>
<p>Esta biblioteca é open-source e facilita muito o trabalho, veja o exemplo abaixo que é de uma pequena app que estou criando e cujo código disponibilizarei como open-source em breve:<br />
<script src="https://gist.github.com/bcb1480e6bc035aa388f.js"></script><noscript><pre><code class="language-javascript javascript">var argv = require('optimist')
    .usage('Usage: $0 -t template_name -n name -c content')
    .demand(['t','n','c'])
    .argv;
	
try {	
    processTemplate.do(argv.t, argv.n, argv.c);
    console.log(&quot;Done!&quot;);
} catch (err) {
    console.log(err);
}</code></pre></noscript><br />
Simples não?</p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/04/05/dica-argumentos-em-scripts-cli-com-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenvolvendo uma plataforma de blog com ZF2</title>
		<link>http://getoncode.com.br/2012/04/05/desenvolvendo-uma-plataforma-de-blog-com-zf2/</link>
		<comments>http://getoncode.com.br/2012/04/05/desenvolvendo-uma-plataforma-de-blog-com-zf2/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 11:47:09 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=184</guid>
		<description><![CDATA[Apesar de existirem diversas plataformas de blogging que oferecem recursos para publicação de conteúdo dinâmico como o WordPress por exemplo, tem sido comum atualmente encontrar quem defenda a criação de blogs usando mecanismos que gerem conteúdo estático para o mesmo fim. O Objetivo deste post não é, entretanto, defender uma ou outra maneira de se [...]]]></description>
				<content:encoded><![CDATA[<p>Apesar de existirem diversas plataformas de <em>blogging</em> que oferecem recursos para publicação de conteúdo dinâmico como o WordPress por exemplo, tem sido comum atualmente encontrar quem defenda a criação de blogs usando mecanismos que gerem conteúdo estático para o mesmo fim.</p>
<p>O Objetivo deste post não é, entretanto, defender uma ou outra maneira de se publicar conteúdo em blogs e sim compartilhar o link de um post no blog de Matthew Weier O&#8217;Phinney, onde ele descreve os motivos pelo qual o levaram a adotar esta prática e também demonstrar brevemente como ele implementou a sua própria plataforma de Blog com Zend Framework 2 e como ele publica o conteúdo utilizando Git.</p>
<p>Eu pessoalmente já pensei várias vezes em criar meu próprio mecanismo para servir páginas estáticas e essa idéia me pareceu bem interessante apesar de, caso eu de fato implemente algo nesse sentido, eu faria um pouco diferente.<br />
De qualquer maneira, a abordagem dele foi bem interessante e <a href="http://mwop.net/blog/2012-05-developing-a-zf2-blog.html">vale a pena a leitura</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/04/05/desenvolvendo-uma-plataforma-de-blog-com-zf2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Podcast &#8211; Episódio #6</title>
		<link>http://getoncode.com.br/2012/03/11/podcast-episodio-6/</link>
		<comments>http://getoncode.com.br/2012/03/11/podcast-episodio-6/#comments</comments>
		<pubDate>Sun, 11 Mar 2012 19:43:05 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[traits]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=178</guid>
		<description><![CDATA[Está no ar o sexto episódio do getOnCode podcast e nele eu falei sobre: PHP 5.4.0 http://php.net/ChangeLog-5.php Windows 8 Vagrant http://vagrantup.com/ Nide http://coreh.github.com/nide/ Ace http://ace.ajax.org/ Zend Framework 2 http://framework.zend.com/zf2/blog/entry/Zend-Framework-2-0-0beta3-Released Thanks to http://www.podcastthemes.com/ for the music theme.]]></description>
				<content:encoded><![CDATA[<p>Está no ar o sexto episódio do getOnCode podcast e nele eu falei sobre:</p>
<ul>
<li>PHP 5.4.0
<p>http://php.net/ChangeLog-5.php</li>
<li>Windows 8</li>
<li>Vagrant
<p>http://vagrantup.com/</li>
<li>Nide
<p>http://coreh.github.com/nide/</li>
<li>Ace
<p>http://ace.ajax.org/</li>
<li>Zend Framework 2
<p>http://framework.zend.com/zf2/blog/entry/Zend-Framework-2-0-0beta3-Released</li>
</ul>
<p>Thanks to http://www.podcastthemes.com/ for the music theme.</p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/03/11/podcast-episodio-6/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
<enclosure url="http://getoncode.com.br/wp-content/uploads/2012/03/episodio6.mp3" length="5366304" type="audio/mpeg" />
		</item>
		<item>
		<title>Principais novidades do PHP 5.4.0</title>
		<link>http://getoncode.com.br/2012/03/10/principais-novidades-do-php-5-4-0/</link>
		<comments>http://getoncode.com.br/2012/03/10/principais-novidades-do-php-5-4-0/#comments</comments>
		<pubDate>Sat, 10 Mar 2012 12:57:39 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=162</guid>
		<description><![CDATA[Recentemente foi disponibilizada a versão 5.4.0 do PHP e neste post eu pretendo mostrar rapidamente o que eu achei mais interessante. Servidor web embutido. Um recurso que eu sempre achei interessante para usar em testes quando eu desenvolvi com Ruby on Rails era o servidor web embutido, que me permitia testar rapidamente qualquer alteração realizada [...]]]></description>
				<content:encoded><![CDATA[<p>Recentemente foi disponibilizada a versão 5.4.0 do <a href="www.php.net">PHP</a> e neste post eu pretendo mostrar rapidamente o que eu achei mais interessante.<br />
<br />
<strong>Servidor web embutido.</strong><br />
<br />
Um recurso que eu sempre achei interessante para usar em testes quando eu desenvolvi com Ruby on Rails era o servidor web embutido, que me permitia testar rapidamente qualquer alteração realizada no projeto.<br />
Esta versão do PHP possui um servidor web que me pareceu bastante eficiente; Eu ainda não testei ele com um projeto desenvolvido com o Zend Framework, então eu não sei dizer como ele se comporta com re-escrita de URLs, por exemplo, mas em princípio me pareceu bem legal.<br />
<br />
Para usa-lo basta inicializa-lo dentro do diretório que você deseja que seja o Document Root, por exemplo, C:\testes ou ~/testes, e executar o comando: php -S 0.0.0.0:8080 e em seguida o servidor é inicializado permitindo o acesso ao endereço localhost:8080 pelo browser.<br />
A porta você pode escolher qual você quiser.<br />
Quando ele está rodando nós podemos acompanhar as requisições no terminal:</p>
<script src="https://gist.github.com/4fe227856e5a0e29c939.js"></script><noscript><pre><code class="language- ">adler:exemplo adlermedrado$ sudo php -S 0.0.0.0:80
PHP 5.4.0 Development Server started at Sat Mar 10 00:01:35 2012
Listening on 0.0.0.0:80
Document root is /Users/adlermedrado/exemplo
Press Ctrl-C to quit.
[Sat Mar 10 00:01:40 2012] 127.0.0.1:55094 [200]: /traits/traits.php
[Sat Mar 10 00:01:43 2012] 127.0.0.1:55097 [200]: /traits/traits.php
[Sat Mar 10 00:01:43 2012] 127.0.0.1:55100 [200]: /traits/traits.php
[Sat Mar 10 00:01:44 2012] 127.0.0.1:55103 [200]: /traits/traits.php</code></pre></noscript>
<p><strong>Short Array Syntax</strong></p>
<p>Nós podemos criar arrays em PHP usando o construtor array() da seguinte maneira:<br />
<script src="https://gist.github.com/7968d25db33a2eb41f11.js"></script><noscript><pre><code class="language-php php">$arrExemplo = array('ivo', 'viu', 'a', 'uva');</code></pre></noscript><br />
Ou também podemos criar definindo os índices:</p>
<p><script src="https://gist.github.com/bfd4d34f264f16101243.js"></script><noscript><pre><code class="language-php php">$arrExemplo = array(0 =&gt; 'ivo', 1 =&gt; 'viu', 2 =&gt; 'a', 3 =&gt; 'uva');</code></pre></noscript><br />
Agora com o PHP 5.4 nós podemos criar usando uma sintaxe mais simples para realizar os mesmos procedimentos:<br />
<br />
<script src="https://gist.github.com/da3edd3e5525a57b30c1.js"></script><noscript><pre><code class="language-php php">$arrExemplo = ['ivo', 'viu', 'a', 'uva'];</code></pre></noscript><br />
Ou então:</p>
<script src="https://gist.github.com/f83ae47009cae5437932.js"></script><noscript><pre><code class="language-php php">$arrExemplo = [0 =&gt; 'ivo', 1 =&gt; 'viu', 2 =&gt; 'a', 3 =&gt; 'uva'];</code></pre></noscript>
<p>Um array multi-dimensional escrito da maneira a qual estamos acostumados seria assim:<br />
<script src="https://gist.github.com/576ae1897442e5d6b1cf.js"></script><noscript><pre><code class="language-php php">$arrExemplo = array('pessoas' =&gt; array('Jo&Atilde;&pound;o', 'Jos&Atilde;&copy;', 'Man&Atilde;&copy;'));</code></pre></noscript></p>
<p>Com a nova sintaxe:<br />
<script src="https://gist.github.com/864e3b22cabac3d84643.js"></script><noscript><pre><code class="language-php php">$arrExemplo = ['pessoas' =&gt; ['Jo&Atilde;&pound;o', 'Jos&Atilde;&copy;', 'Man&Atilde;&copy;']]</code></pre></noscript></p>
<p><strong>Traits</strong></p>
<p>Traits adiciona uma flexibilidade maior quando estamos lidando com herança. <br />
O PHP não dá suporte a herança múltipla e os traits permitem que algumas limitações impostas pela herança simples sejam reduzidas.<br />
Pense nas traits como uma espécie de classe abstrata, porém, sem ser uma classe ou como um agrupador de métodos. <br />
Eu sei, é esquisito mas eu não achei nenhuma definição melhor no momento. <img src='http://getoncode.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bom, imagine que nós temos uma classe chamada Arquivo e esta classe deve ter uma funcionalidade de escrita e outra de leitura, porém, vamos imaginar umas situação em que nós gostaríamos que a funcionalidade de leitura estivesse em uma classe chamada LeituraArquivo e a de escrita estivesse em uma outra classe chamada EscritaArquivo e nós gostaríamos também que a nossa classe Arquivo herdasse destas outras duas. <br />
Em PHP isso é impossível pois PHP não suporta a herança múltipla, mas agora com traits nós podemos tentar separar estas duas funcionalidades fazendo uma espécie de herança horizontal ao invés da mais comum herança vertical.</p>
<p>Vamos ao código.<br />
<script src="https://gist.github.com/499ad931b377102d31a3.js"></script><noscript><pre><code class="language-php php">&lt;?php

include 'LerArquivo.php';
include 'EscreverArquivo.php';

class Arquivo {
	use LerArquivo;
	use EscreverArquivo;
}
?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/16036f134d2da879e9bd.js"></script><noscript><pre><code class="language-php php">&lt;?php
trait LerArquivo {
	public function ler($arquivo) {
		echo &quot;Lendo o arquivo {$arquivo}&quot;;
	}
}
?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/d5292c97619bf55528cf.js"></script><noscript><pre><code class="language-php php">&lt;?php
trait EscreverArquivo {
	public function escrever($arquivo, $conteudo)
	{
		echo &quot;Escrevendo {$conteudo} no arquivo {$arquivo}&quot;;
	}
}
?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/0800a71c41555ea0bb6f.js"></script><noscript><pre><code class="language-php php">&lt;?php
include 'Arquivo.php';

$arquivo = new Arquivo();
$arquivo-&gt;ler('arquivo.txt');
echo '&lt;br&gt;';
$arquivo-&gt;escrever('arquivo.txt', 'usando traits');

?&gt;</code></pre></noscript></p>
<p>O exemplo acima demonstra de forma simples como os traits funcionam no PHP, mas existem mais alguns detalhes que são interessantes.<br />
Um método que existe em uma classe sobre-escreve o método definido em uma trait, vamos supor que a nossa classe Arquivo já possua implementados os métodos ler e escrever, isso tornaria os métodos das traits inúteis.<br />
Mas se você possui uma superclasse e nela está definido um método, a trait o sobre-escreve.<br />
Vamos supor que a nossa classe Arquivo herde de uma superclasse chamada Base e ela possua os métodos ler e escrever definidos e ver esse comportamento em ação.<br />
<br />
<script src="https://gist.github.com/8ccf8e1c887b46788b4a.js"></script><noscript><pre><code class="language-php php">&lt;?php
class Base
{
	public function ler($arquivo) {
		echo 'M&Atilde;&copy;todo ler definido na classe Base';
	}
	
	public function escrever($arquivo, $conteudo) {
		echo 'M&Atilde;&copy;todo escrever definido na classe Base';
	}
	
}

?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/7a4b005ccdc9653d10a3.js"></script><noscript><pre><code class="language-php php">&lt;?php

include 'LerArquivo.php';
include 'EscreverArquivo.php';
include 'Base.php';

class Arquivo extends Base {
	use LerArquivo, EscreverArquivo;
}
?&gt;</code></pre></noscript></p>
<p>É possível também definir uma chamada a um método da classe pai em um método definido em uma trait. <br />
A trait LerArquivo foi modificada para demonstrar:<br />
<script src="https://gist.github.com/7b227e9cabaae391e5cf.js"></script><noscript><pre><code class="language-php php">&lt;?php
trait LerArquivo {
	public function ler($arquivo) {
		parent::ler($arquivo);
		echo &quot;Lendo o arquivo {$arquivo}&quot;;
	}
}
?&gt;</code></pre></noscript></p>
<p>Caso haja conflito de traits é disparado um fatal error, para ilustrar este problema será adicionado um método chamado salvar em cada trait e nós solucionaremos o conflito &#8216;configurando&#8217; qual trait irá ser usada para invocar o método em conflito.</p>
<p><script src="https://gist.github.com/a1bd6d26648430dd6a7c.js"></script><noscript><pre><code class="language-php php">&lt;?php

include 'LerArquivo.php';
include 'EscreverArquivo.php';
include 'Base.php';

class Arquivo extends Base {
	use LerArquivo, EscreverArquivo {
		LerArquivo::salvar insteadof EscreverArquivo;
	}
}
?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/28edcb36e6bd415f70ca.js"></script><noscript><pre><code class="language-php php">&lt;?php
include 'Arquivo.php';

$arquivo = new Arquivo();
$arquivo-&gt;ler('arquivo.txt');
echo '&lt;br&gt;';
$arquivo-&gt;escrever('arquivo.txt', 'usando traits');
$arquivo-&gt;salvar();
?&gt;</code></pre></noscript></p>
<p><strong>Alterando a visibilidade do método</strong><br />
Você pode definir um método em uma trait como private por exemplo, mas na classe onde a trait for utilizada, você pode mudar a visibilidade.<br />
<script src="https://gist.github.com/4418ed13203566dfcf52.js"></script><noscript><pre><code class="language-php php">&lt;?php
trait LerArquivo {
	public function ler($arquivo) {
		parent::ler($arquivo);
		echo &quot;Lendo o arquivo {$arquivo}&quot;;
	}
	
	public function salvar() {
		echo 'Salvando na trait LerArquivo';
	}
	
	private function abrir() {
		echo 'metodo abrir na classe LerArquivo';
	}
	
}
?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/4192d6fd427bb3848f6f.js"></script><noscript><pre><code class="language-php php">&lt;?php

include 'LerArquivo.php';
include 'EscreverArquivo.php';
include 'Base.php';

class Arquivo extends Base {
	use LerArquivo, EscreverArquivo {
		LerArquivo::abrir as public;
	}
}
?&gt;
</code></pre></noscript></p>
<p><strong>Traits compostas</strong><br />
Até aqui estava tranquilo, mas chega uma hora que as coisas sempre começam a ficar meio esquisitas, né?<br />
Bom, se você quiser fazer uma trait que usa outra (ou outras) isso é possível também; Abaixo estão os códigos da trait composta e da classe que a utiliza:<br />
<script src="https://gist.github.com/1ea5c7446fd022a23a74.js"></script><noscript><pre><code class="language-php php">&lt;?php
trait TraitArquivo {
	use LerArquivo, EscreverArquivo;
}
?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/471ab675baa35aeb45a7.js"></script><noscript><pre><code class="language-php php">&lt;?php

include 'LerArquivo.php';
include 'EscreverArquivo.php';
include 'TraitArquivo.php';
include 'Base.php';

class Arquivo extends Base {
	use TraitArquivo;
}
?&gt;
</code></pre></noscript></p>
<p><strong>Métodos abstratos e estáticos</strong><br />
É possível definir em uma trait se um método é estático ou abstrato. <br />
A trait LerArquivo será alterada e serão definindos um método abstrato e outro estático, posteriormente a classe Arquivo será modificada para contemplar estas mudanças:<br />
<script src="https://gist.github.com/cb8abf5803181b31af14.js"></script><noscript><pre><code class="language-php php">&lt;?php
trait LerArquivo {
	public function ler($arquivo) {
		parent::ler($arquivo);
		echo &quot;Lendo o arquivo {$arquivo}&quot;;
	}
	
	public static function checaAlgumaCoisa() {
		echo 'Metodo estatico definido na trait';
	}
	
	abstract public function salvar();
}
?&gt;</code></pre></noscript><br />
<script src="https://gist.github.com/5695b039b50b7a644bf3.js"></script><noscript><pre><code class="language-php php">&lt;?php

include 'LerArquivo.php';
include 'EscreverArquivo.php';
include 'Base.php';

class Arquivo extends Base {
	use LerArquivo, EscreverArquivo;
	public function salvar() {
		echo 'implementacao do metodo abstrato salvar';
	}
}
?&gt;
</code></pre></noscript><br />
<script src="https://gist.github.com/401661c9d372848acde7.js"></script><noscript><pre><code class="language-php php">&lt;?php
include 'Arquivo3.php';

$arquivo = new Arquivo();
$arquivo-&gt;ler('arquivo.txt');
echo '&lt;br&gt;';
$arquivo-&gt;escrever('arquivo.txt', 'usando traits');
echo '&lt;br&gt;';
$arquivo-&gt;salvar();
echo '&lt;br&gt;';
Arquivo::checaAlgumaCoisa();


?&gt;
</code></pre></noscript></p>
<p>As traits também permitem definir propriedades, mas, algo que deve ser levado em conta é que se a classe que usar a trait definir uma propriedade com o mesmo nome que a propriedade definida na trait, você poderá receber um aviso E_STRICT caso o nome da propriedade e o valor sejam os mesmos ou um FATAL_ERROR caso o nome seja o mesmo e o valor não. Use com cuidado.<br />
<script src="https://gist.github.com/e9a104672823ba19e903.js"></script><noscript><pre><code class="language-php php">&lt;?php
trait LerArquivo {
	
	private $nome = 'config.ini';
	
	public function ler($arquivo) {
		parent::ler($arquivo);
		echo &quot;Lendo o arquivo {$arquivo}&quot;;
	}
}
?&gt;</code></pre></noscript></p>
<p>O PHP 5.4.0 além destas novas funcionalidades trouxe dezenas de correções de bugs, melhorias na performance, remoçõa de funcionalidades legadas como a função register_globals, entre outras coisas que você pode ver no <a href="http://php.net/ChangeLog-5.php">changelog</a>.</p>
<p>Espero que o post tenha sido útil, até o próximo.</p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/03/10/principais-novidades-do-php-5-4-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Compilando o PHP 5.4 no Mac OS X Lion</title>
		<link>http://getoncode.com.br/2012/03/07/compilando-o-php-5-4-no-mac-os-x-lion/</link>
		<comments>http://getoncode.com.br/2012/03/07/compilando-o-php-5-4-no-mac-os-x-lion/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 02:06:55 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=150</guid>
		<description><![CDATA[Como todos sabem (se não sabe e é um desenvolvedor PHP, você deveria saber) recentemente foi lançada a versão 5.4 do PHP; Não são todas as releases do PHP que eu costumo compilar mas, dessa vez eu resolvi fazê-lo para poder testar melhor os novos recursos que foram adicionados à linguagem. Eu Continuarei usando o [...]]]></description>
				<content:encoded><![CDATA[<p>Como todos sabem (se não sabe e é um desenvolvedor PHP, você deveria saber) recentemente foi lançada a versão 5.4 do PHP; Não são todas as releases do PHP que eu costumo compilar mas, dessa vez eu resolvi fazê-lo para poder testar melhor os novos recursos que foram adicionados à linguagem.</p>
<p>Eu Continuarei usando o Apache que veio instalado no Mac e vou utilizar o Homebrew para instalar algumas dependências que serão necessárias.</p>
<p>Antes de começar, gostaria de esclarecer alguns pontos:</p>
<p>1- Eu tentei compilar com o XCode 4.2 e não obtive sucesso, então eu o removi e instalei apenas o command line tools for XCode (versão 4.3) pois eu estava com pressa e não queria esperar um tempão baixando o XCode completo. Você pode fazer o download dele na página de <a href="https://developer.apple.com/">developers da Apple</a>.</p>
<p>2- Estes procedimentos funcionaram muito bem no meu Mac, mas eu não garanto que o mesmo ocorrerá com o seu.</p>
<p><strong>Vamos lá</strong></p>
<p>Antes de começarmos, crie um arquivo chamado <em>teste.php</em> no diretório <em>/Library/WebServer/Documents</em> com o conteúdo abaixo, porque durante a instalação nós iremos fazer alguns testes.<br />
<script src="https://gist.github.com/1997955.js"></script><noscript><pre><code class="language-php php">&lt;?php
phpinfo();
?&gt;</code></pre></noscript></p>
<p><strong>Sources, libs and so on&#8230;</strong></p>
<p>Será necessário <a href="http://www.php.net/downloads.php">baixar os fontes do PHP no site oficial</a> e também instalar algumas libs, que eu instalei com o homebrew, mas que creio que você possa instalar usando o macports ou compilar na mão; Eu precisei da <em>libpng</em> e <em>pcre</em>.</p>
<p><strong>Próximos passos</strong></p>
<p>Crie o seguinte diretório caso não exista: sudo mkdir <em>/usr/local/src</em> e descompacte os fontes do PHP dentro dele: <em>sudo tar -xvf ~/Downloads/php-5.4.0.tar.bz2</em><br />
Sempre quando vamos compilar o PHP, nós precisamos informar alguns parâmetros de compilação, o que eu usei foi esse:<br />
<script src="https://gist.github.com/1997852.js"></script><noscript><pre><code class="language-shell shell">./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/private/etc --with-apxs2=/usr/sbin/apxs --enable-cli --with-config-file-path=/etc --with-libxml-dir=/usr --with-openssl=/usr 
--with-kerberos=/usr --with-zlib=/usr --enable-gd-native-ttf --with-icu-dir=/usr --with-iodbc=/usr 
--with-ldap=/usr --with-ldap-sasl=/usr --with-libedit=/usr --enable-mbstring --enable-mbregex --enable-bcmath 
--with-bz2=/usr --enable-calendar --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem 
--enable-sysvshm --with-tidy --enable-wddx --with-xmlrpc --with-iconv-dir=/usr --with-xsl=/usr 
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/mysql/mysql.sock 
--with-readline=/usr --enable-shmop --with-snmp=/usr --with-curl=/usr --enable-dba --enable-exif --enable-ftp 
--with-gd --with-freetype-dir=/usr/X11/ --with-jpeg-dir=/usr/X11/ --with-png-dir=/usr/X11/ --enable-zip 
--with-pcre-regex=/usr --with-pgsql=/usr --with-pdo-pgsql=/usr</code></pre></noscript></p>
<p>Após executar este comando, digite <em>make</em> e depois <em>sudo make install.</em><br />
Pronto, se tudo correu bem, o PHP foi compilado com sucesso.<br />
Reinicie seu Apache e teste acessando o arquivo teste.php no seu browser preferido: <em>sudo apachectl restart</em></p>
<p><strong>Vamos instalar mais algumas coisas?</strong></p>
<p>Eu gosto sempre de instalar a libmcrypt, mas ela eu instalei na mão mesmo por causa do phpize e tal, eu não sei se há alguma maneira de fazer isso usando o homebrew, então neste caso eu achei um <a href="http://michaelgracie.com/2011/07/21/plugging-mcrypt-into-php-on-mac-os-x-lion-10-7/">excelente blog post explicando como fazer</a>.</p>
<p>Alguns detalhes importantes: No blog post supracitado ele usa uma versão mais antiga do PHP, considere sempre a versão que estamos usando.<br />
Ele fala para colocar os fontes em um diretório chamado <em>/SourceCache</em>, eu coloquei em /usr/local/src.</p>
<p><strong>Se você chegou até aqui, é porque instalou o libmcrypt</strong> ou deixou isso pra lá, tudo bem, vamos continuar.</p>
<p>Outras duas extensões que eu costumo instalar são: XDebug e OAuth.<br />
O XDebug eu não consegui instalar via pecl pois ele só instalaria se fosse em alguma versão do PHP menor que a utilizada neste tutorial, então eu baixei os fontes do <a href="https://github.com/derickr/xdebug">repositório no github</a> clonando o projeto dentro de /usr/local/src.<br />
Segui as orientações do README do projeto e pronto. Seguem abaixo os comandos:<br />
<script src="https://gist.github.com/1997929.js"></script><noscript><pre><code class="language- ">#clonando o projeto para /usr/local/src
cd /usr/local/src
git clone https://github.com/derickr/xdebug

#acessa o diret&Atilde;&sup3;rio com os fontes
cd xdebug

#roda o phpize
phpize

# Execute os demais comandos para compila&Atilde;&sect;&Atilde;&pound;o
./configure --enable-xdebug
make

#copia o modulo compilado para o diret&Atilde;&sup3;rio onde encontram-se as extens&Atilde;&micro;es do PHP
cp modules/xdebug.so /usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so

#adicione ao php.ini que se encontra em /etc/php.ini
zend_extension=&quot;/usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so&quot;

#reinicie o apache
sudo apachectl restart</code></pre></noscript></p>
<p><strong>Instalando OAuth</strong></p>
<p>Vamos instalar usando o pecl: <em>pecl install oauth</em></p>
<p>Após a compilação, adicione ao php.ini:</p>
<p>[oauth]<br />
extension=&#8221;/usr/lib/php/extensions/no-debug-non-zts-20100525/oauth.so&#8221;</p>
<p>Reinicie o apache novamente: <em>sudo apachectl restart</em><br />
Se o conteúdo mostrado for parecido com os screenshots abaixo, tudo funcionou corretamente.</p>
<p><img src="http://getoncode.com.br/wp-content/uploads/2012/03/phpinfo_1.png" alt="Phpinfo 1" width="623" height="395" /><br />
<img src="http://getoncode.com.br/wp-content/uploads/2012/03/phpinfo_2.png" alt="Phpinfo 2" width="645" height="239" /><br />
<img src="http://getoncode.com.br/wp-content/uploads/2012/03/phpinfo_3.png" alt="Phpinfo 3" width="629" height="225" /><br />
<img src="http://getoncode.com.br/wp-content/uploads/2012/03/phpinfo_4.png" alt="Phpinfo 4" width="611" height="158" /></p>
<p>É isso pessoal. Na minha máquina pelo menos, assim funcionou legal.</p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/03/07/compilando-o-php-5-4-no-mac-os-x-lion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Resenha: Zend Framework na prática</title>
		<link>http://getoncode.com.br/2012/02/27/resenha-zend-framework-na-pratica/</link>
		<comments>http://getoncode.com.br/2012/02/27/resenha-zend-framework-na-pratica/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 00:12:29 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Resenha]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[livro]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[resenha]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=139</guid>
		<description><![CDATA[Se você deseja aprender a usar o Zend Framework ou quer ter um guia de referência que vai direto ao ponto ao invés de confundi-lo, como o próprio manual do Zend Framework faz em certos casos, você deve obrigatoriamente ler este livro. O e-book é disponibilizado nos formatos epub, mobi e pdf, ou seja, você [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://getoncode.com.br/wp-content/uploads/2012/02/capa1.jpg"><img class="alignleft size-medium wp-image-188" title="capa" src="http://getoncode.com.br/wp-content/uploads/2012/02/capa1-212x300.jpg" alt="" width="212" height="300" /></a>Se você deseja aprender a usar o <a title="Site do Zend Framework" href="http://framework.zend.com">Zend Framework</a> ou quer ter um guia de referência que vai direto ao ponto ao invés de confundi-lo, como o próprio manual do Zend Framework faz em certos casos, você deve obrigatoriamente ler este livro.</p>
<p>O e-book é disponibilizado nos formatos epub, mobi e pdf, ou seja, você pode ler em qualquer dispositivo, por exemplo, no meu mac eu li ele em PDF e no iPad eu li no formato ePub.</p>
<p>O <a title="Site do Elton Minetto" href="http://eltonminetto.net/">Elton Minetto</a> conseguiu demonstrar, usando uma linguagem simples e direta os principais componentes do Zend Framework por meio da implementação de um projeto de blog que abrange desde a definição do projeto, modelagem dos dados e criação de wireframe até a codificação total do projeto.</p>
<p>Os componentes abordados estão sem dúvida entre os mais utilizados no dia-a-dia de um desenvolvedor que utiliza o Zend Framework, dê uma olhada no conteúdo:</p>
<p>- Introdução<br />
- Instalando o Zend Framework<br />
- &#8211; Definindo o projeto<br />
- &#8211; Modelagem<br />
- &#8211; Estrutura do projeto<br />
- &#8211; Configurando o Apache<br />
- Bootstrap<br />
- Controladores<br />
- Modelos<br />
- &#8211; Trabalhando com modelos e queries<br />
- Layout e visões<br />
- Formulários<br />
- &#8211; Enviando arquivos<br />
- &#8211; Herança de formulários<br />
- &#8211; Subforms<br />
- Criando um CRUD<br />
- &#8211; Desafio<br />
- Organizando a aplicação<br />
- Roteamento<br />
- Autenticação<br />
- Controle de acesso<br />
- Navegação<br />
- Paginação<br />
- Cache<br />
- Traduções<br />
- Enviando e-mails<br />
- Diagnóstico da aplicação<br />
- &#8211; Zend_log<br />
- &#8211; Zend_Db_Profiler<br />
- Conclusão</p>
<p>Existem alguns componentes do ZF e algumas técnicas que por incrível que pareça, muitos desenvolvedores não tem o costume de usar e que o Elton abordou muito bem em seu livro, entre elas estão o Roteamento, Zend_Db_Profiler, Zend_Paginator e herança de formulários criados com o Zend_Form, então, agora não tem mais desculpa porque tais funcionalidades e técnicas estão muito bem explicadas.</p>
<p>Outro ponto que considero importante destacar é o uso constante do Zend Tool, ferramenta de linha de comando que facilita a criação de controllers, models, actions, etc., pois eu conheço diversos programadores que não tem o hábito de utiliza-la.</p>
<p>Os exemplos com Zend_Auth, Zend_Acl, Zend_Translate e Relacionamento entre tabelas usando Zend_Db_Table, são muito claros; Na verdade todos os exemplos do livro são claros e eu estou me atendo a comentar somente aqueles que eu costumo ver que as pessoas possuem mais dificuldades no entendimento.</p>
<p>Eu aprecio muito este tipo de abordagem direta e prática, eu sempre tento explicar as coisas dessa maneira por ser adepto da filosofia &#8220;<a title="Talk is cheap, show me the code" href="https://lkml.org/lkml/2000/8/25/132">Talk is cheap, show me the code</a>&#8220;.</p>
<p>Para finalizar, eu recomendo este livro a desenvolvedores experientes que querem um guia de refererência poderoso e simples e também a aqueles interessados em aprender a usar esta ferramenta e deixo meus parabéns ao Elton pelo ótimo trabalho.</p>
<p>Saiba mais sobre o livro visitando o <a title="Site do livro ZF na prática" href="http://www.zfnapratica.com.br/">site oficial.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2012/02/27/resenha-zend-framework-na-pratica/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Chegou o final do ano</title>
		<link>http://getoncode.com.br/2011/12/23/chegou-o-final-do-ano/</link>
		<comments>http://getoncode.com.br/2011/12/23/chegou-o-final-do-ano/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 13:17:23 +0000</pubDate>
		<dc:creator>Adler Medrado</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[ano novo]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[mensagem]]></category>
		<category><![CDATA[natal]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://getoncode.com.br/?p=136</guid>
		<description><![CDATA[A primeira etapa do getOnCode e mais uma das etapas de nossas vidas est&#225; se concluindo, mais um ano est&#225; passando e espero que voc&#234; tenha atingido seus objetivos. Eu desejo que voc&#234; que voc&#234; encontre paz, sucesso, felicidade e tudo aquilo que deseja; Que continue tendo for&#231;as para trilhar seus caminhos com f&#233; e [...]]]></description>
				<content:encoded><![CDATA[<p><span style="font-family: monospace; font-size: xx-small;"><span style="line-height: 21px;">
<p>A primeira etapa do getOnCode e mais uma das etapas de nossas vidas est&aacute; se concluindo, mais um ano est&aacute; passando e espero que voc&ecirc; tenha atingido seus objetivos.</p>
<p>Eu desejo que voc&ecirc; que voc&ecirc; encontre paz, sucesso, felicidade e tudo aquilo que deseja; Que continue tendo for&ccedil;as para trilhar seus caminhos com f&eacute; e perseveran&ccedil;a nos dias que vir&atilde;o.</p>
<p>Nesses tr&ecirc;s meses de vida foi feito o poss&iacute;vel para que o getOnCode trouxesse informa&ccedil;&atilde;o que pudesse ser &uacute;til a desenvolvedores e profissionais de TI em geral.&nbsp;</p>
<p>Apesar do curto tempo de exist&ecirc;ncia, conseguimos atingir os objetivos e estamos confiantes de que em 2012 (antes do mundo acabar, claro) o getOnCode continuar&aacute; seguindo seu caminho e quebrando outras barreiras.</p>
<p><strong>Voc&ecirc;, amigo do getOnCode &eacute; especial. Feliz Natal e um excelente ano novo.</strong></p>
<p>Abra&ccedil;os,</p>
<p>Adler Medrado</p>
<p></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://getoncode.com.br/2011/12/23/chegou-o-final-do-ano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
