<?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>Lenon Marcel</title>
	<atom:link href="http://lenonmarcel.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://lenonmarcel.com.br</link>
	<description>Desenvolvimento orientado a café</description>
	<lastBuildDate>Thu, 22 Jul 2010 16:53:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Iniciando com Java #2 – Criando uma janela com Swing</title>
		<link>http://lenonmarcel.com.br/342/iniciando-com-java-2-%e2%80%93-criando-uma-janela-com-swing/</link>
		<comments>http://lenonmarcel.com.br/342/iniciando-com-java-2-%e2%80%93-criando-uma-janela-com-swing/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 05:12:43 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[iniciante]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=342</guid>
		<description><![CDATA[Swing &#8211; tá aí uma coisa que eu sempre ouvi falar e sempre tive curiosidade de saber como funciona. E agora que resolvi estudar Java, tive a oportunidade de conhecê-lo e vou compartilhar minhas experiências e estudos aqui. Ô! Tô falando do Java Swing, não daquele swing seu pervertido. O Swing é um framework Java [...]]]></description>
			<content:encoded><![CDATA[<p>Swing &#8211; tá aí uma coisa que eu sempre ouvi falar e sempre tive curiosidade de saber como funciona. E agora que resolvi estudar Java, tive a oportunidade de conhecê-lo e vou compartilhar minhas experiências e estudos aqui.</p>
<p><em>Ô! Tô falando do Java Swing, não <a href="http://migre.me/Z5du" target="_blank">daquele swing</a> seu pervertido. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </em></p>
<p>O Swing é um framework Java usado para criar interfaces gráficas (GUIs). Com ele você pode criar janelas, botões, caixas de texto e uma série de outros widgets. Além disso, usando ele, você ganha uma interface consistente entre as múltiplas plataformas suportadas pelo Java.</p>
<p>Nos primeiros contatos com Swing, tive a impressão de que vou gostar de usá-lo para criar minhas interfaces. Achei ele muito simples e de fácil aprendizado.</p>
<h2>Da Windou</h2>
<p>Pois bem. Pra começar, vamos dar uma olhada no código necessário para criar a nossa janela:</p>
<div class="codecolorer-container java vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:350px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.swing.JFrame</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">class</span> MinhaJanela <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">JFrame</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> MinhaJanela<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">super</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Hey, ho&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; setSize<span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">400</span>, <span style="color: #cc66cc;">400</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setLocationRelativeTo<span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; setDefaultCloseOperation<span style="color: #009900;">&#40;</span> <span style="color: #003399;">JFrame</span>.<span style="color: #006633;">EXIT_ON_CLOSE</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">class</span> MeuPrograma<br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span> <span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; MinhaJanela janela <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MinhaJanela<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; janela.<span style="color: #006633;">setVisible</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">true</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Agora as coisas ficaram bem diferentes, né? <code class="codecolorer text default"><span class="text">super</span></code>, <code class="codecolorer text default"><span class="text">import</span></code>, <code class="codecolorer text default"><span class="text">extends</span></code>&#8230; que diabos é isso?</p>
<h2>Dissecando o código</h2>
<p>Pra entender, vamos dar uma olhada linha por linha:</p>
<ul>
<li><strong>Linha 1</strong> &#8211; <code class="codecolorer java default"><span class="java"><span style="color: #000000; font-weight: bold;">import</span> javax.<span style="color: #006633;">swing</span>.<span style="color: #003399;">JFrame</span></span></code><br />
Diz ao compilador que seu programa precisa dos pacotes do swing. (Vou tentar explicar isso melhor em outro artigo)
</li>
<li><strong>Linha 3</strong> &#8211; <code class="codecolorer java default"><span class="java"><span style="color: #000000; font-weight: bold;">class</span> MinhaJanela <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">JFrame</span></span></code><br />
Quem está acostumado com PHP OO, sabe o que isso significa. Aqui, diz que a classe MinhaJanela estende a classe JFrame. Assim, a classe MinhaClasse pode acessar todos os métodos e variáveis da classe JFrame e, inclusive, sobrepor métodos.
</li>
<li>
<strong>Linha 5</strong> &#8211; <code class="codecolorer java default"><span class="java"><span style="color: #000000; font-weight: bold;">public</span> MinhaJanela<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code><br />
Esse é o construtor da nossa classe. Assim como no PHP 4, construtores Java possuem o mesmo nome da classe.
</li>
<li>
<strong>Linha 7</strong> &#8211; <code class="codecolorer java default"><span class="java"><span style="color: #000000; font-weight: bold;">super</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Hey, ho&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></span></code><br />
<code class="codecolorer text default"><span class="text">super</span></code> pode ser usado para acessar métodos da super classe (a classe que foi estendida). No nosso caso, como fizemos um override do construtor, usamos <code class="codecolorer text default"><span class="text">super</span></code> para chamar o construtor da super classe.
</li>
<li><strong>Linha 9</strong> &#8211; <code class="codecolorer java default"><span class="java">setSize<span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">400</span>, <span style="color: #cc66cc;">400</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></span></code><br />
<strong>Linha 10</strong> &#8211; <code class="codecolorer java default"><span class="java">setLocationRelativeTo<span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></span></code><br />
<strong>Linha 11</strong> &#8211; <code class="codecolorer java default"><span class="java">setDefaultCloseOperation<span style="color: #009900;">&#40;</span> <span style="color: #003399;">JFrame</span>.<span style="color: #006633;">EXIT_ON_CLOSE</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></span></code><br />
Essas são chamadas de métodos da classe JFrame. Observe que você não precisa usar <code class="codecolorer text default"><span class="text">this</span></code> ou algo do tipo. Por exemplo, na linha 9 você poderia escrever isso&#8230;</p>
<div class="codecolorer-container java vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">setSize</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">400</span>, <span style="color: #cc66cc;">400</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>&#8230; e o resultado seria o mesmo.
</li>
<li><strong>Linha 19</strong> &#8211; <code class="codecolorer java default"><span class="java">MinhaJanela janela <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MinhaJanela<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></span></code><br />
Aqui declaramos a variável <code class="codecolorer text default"><span class="text">janela</span></code>, que é do tipo <code class="codecolorer text default"><span class="text">MinhaJanela</span></code>. Em Java, todas as variáveis precisam ter um tipo definido.</li>
<li><strong>Linha 21</strong> &#8211; <code class="codecolorer java default"><span class="java">janela.<span style="color: #006633;">setVisible</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">true</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></span></code><br />
Exibe nossa janela para o mundo. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
</li>
</ul>
<p>Se ainda não o fez, compile o código e rode o programa. Uma janela deve aparecer no centro da tela, com o título &#8220;Hey, ho&#8221;.</p>
<p>Java + Swing = amor. Só digo isso.</p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/342/iniciando-com-java-2-%e2%80%93-criando-uma-janela-com-swing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iniciando com Java #1 – Olá, manolo</title>
		<link>http://lenonmarcel.com.br/315/iniciando-com-java-1-ola-manolo/</link>
		<comments>http://lenonmarcel.com.br/315/iniciando-com-java-1-ola-manolo/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 05:29:17 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[olá mundo]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=315</guid>
		<description><![CDATA[Sim, resolvi aprender Java. Pra quem me conhece, isso deve ser uma surpresa, já que eu nunca fui com a cara da linguagem. Ela sempre me pareceu burocrática demais, cheia de &#8220;nhê nhê nhê&#8221;. E como não dá pra criticar sem ao menos conhecer, resolvi estudá-la mais a fundo. Preciso dizer que, por enquanto, tenho [...]]]></description>
			<content:encoded><![CDATA[<p><!--:pt-->Sim, resolvi aprender Java. Pra quem me conhece, isso deve ser uma surpresa, já que eu nunca fui com a cara da linguagem. Ela sempre me pareceu burocrática demais, cheia de &#8220;nhê nhê nhê&#8221;. E como não dá pra criticar sem ao menos conhecer, resolvi estudá-la mais a fundo.</p>
<p>Preciso dizer que, por enquanto, tenho gostado dela. A relação <em>complexidade</em> x <em>velocidade</em> tem me agradado. Por isso, farei uma série de artigos contando minhas experiências com Java. Uma vez me disseram que &#8220;a melhor maneira de entender uma coisa é tentando explicar essa coisa à outra pessoa&#8221;, e é isso que pretendo aqui.</p>
<p>Não vou abordar a instalação do JDK (Java Development Kit), assumo que você já o tenha instalado e configurado. Assumo, também, que você tenha domínio do console do seu sistema (prompt de comando, terminal, chame como quiser).</p>
<p><strong>Uma última nota:</strong> este artigo se destina à quem já tem algum conhecimento com programação. Ou seja, não é para novatos.</p>
<p>E no primeiro artigo, vou demonstrar como criar o meu tradicional &#8220;Olá, manolo&#8221; &#8211; porque &#8220;Hello, World&#8221; é para os fracos. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h2>Let&#8217;s go babe</h2>
<p>O código da aplicação é bem simples, veja:</p>
<div class="codecolorer-container java vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">class</span> MeuPrograma<br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span> <span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Olá, manolo!&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Salve o arquivo como <code class="codecolorer text default"><span class="text">MeuPrograma.java</span></code>.</p>
<p>Observe que o arquivo deve possuir o mesmo nome da classe principal (case sensitive). E essa classe principal deve, obrigatoriamente, possuir uma função <code class="codecolorer text default"><span class="text">main()</span></code>. Há, também, uma convenção que diz que &#8220;todo nome de classe deve começar com letra maiúscula&#8221;, porém isso não é obrigatório.</p>
<p>A declaração de funções (ou métodos), no Java, é um pouco mais complicada que em outras linguagens (como PHP, Ruby, etc). Vamos pegar a função <code class="codecolorer text default"><span class="text">main()</span></code>, por exemplo:</p>
<div class="codecolorer-container java vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span> <span style="color: #003399;">String</span> args<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span></div></td></tr></tbody></table></div>
<p>Podemos ver que existem várias palavras-chave e cada uma possui um significado diferente:</p>
<ul>
<li><strong>public</strong> &#8211; diz que o método é público, ou seja, pode ser acessado de fora da classe.</li>
<li><strong>static</strong> &#8211; o método é estático, não precisa ser instanciado.</li>
<li><strong>void</strong> &#8211; indica o tipo de objeto que o método retorna, no nosso caso nada (void).</li>
<li><strong>main</strong> &#8211; nome da função, d&#8217;oh.</li>
<li>Em seguida, temos os parâmetros, os argumentos do método. No nosso caso, uma array do tipo String.</li>
</ul>
<p>Como eu também desenvolvo com PHP, peguei a &#8220;manha&#8221; rápido, já que a declaração de métodos e classes é bem parecida nessa linguagem.</p>
<p>Concluindo, o método <code class="codecolorer text default"><span class="text">System.out.println( &quot;Olá, manolo!&quot; );</span></code> exibe uma mensagem na tela. Note que uma string deve estar entre aspas duplas.</p>
<h3>Dica:</h3>
<p>No Java, você <strong>não pode</strong> declarar métodos fora de uma classe. Ou seja, isso&#8230;</p>
<div class="codecolorer-container java vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000066; font-weight: bold;">void</span> metodo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; # Faz algo<br />
<span style="color: #009900;">&#125;</span><br />
<br />
metodo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>&#8230; está errado e irá gerar um erro no compilador.</p>
<h2>Compilando o código</h2>
<p>Agora que temos o código pronto, precisamos compilar. Execute o seguinte comando no console:</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">javac MeuPrograma.java</div></td></tr></tbody></table></div>
<p><code class="codecolorer text default"><span class="text">javac</span></code> é o compilador Java. É ele quem gera o famoso bytecode que a JVM (Java Virtual Machine) vai ler e executar.</p>
<p>Se você observar o diretório do seu programa, verá um arquivo chamado <code class="codecolorer text default"><span class="text">MeuPrograma.class</span></code>. Este é o seu programa compilado.</p>
<h2>Executando o programa</h2>
<p>Código escrito, compilado, agora vamos executá-lo:</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">java MeuPrograma</div></td></tr></tbody></table></div>
<p>Se tudo deu certo, vamos ver a mensagem <code class="codecolorer text default"><span class="text">Olá, manolo!</span></code> no console. Observe que você não deve digitar MeuPrograma.class, somente MeuPrograma.</p>
<p>Se algum erro ocorreu, <del datetime="2010-07-21T00:13:38+00:00">tem que ver isso aí</del> você fez alguma coisa errada seu noob. Comece novamente. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><strong>Falei alguma besteira?</strong> Não hesite em me corrigir nos comentários. Grato.<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/315/iniciando-com-java-1-ola-manolo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando a API de Streaming do Twitter com Ruby</title>
		<link>http://lenonmarcel.com.br/302/usando-a-api-de-streaming-do-twitter-com-ruby/</link>
		<comments>http://lenonmarcel.com.br/302/usando-a-api-de-streaming-do-twitter-com-ruby/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 07:12:16 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Gem]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[request]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=302</guid>
		<description><![CDATA[A API de Streaming do Twitter dá a possibilidade de obter em tempo real (ou quase) status públicos do Twitter. Por exemplo, você pode obter todos os tweets que contenham algum link, ou ainda que falem sobre determinada marca, produto ou palavra-chave. E fazer essa busca por palavras-chave é super fácil com Ruby, pois já [...]]]></description>
			<content:encoded><![CDATA[<p><!--:pt-->A <a href="http://dev.twitter.com/pages/streaming_api" target="_blank">API de Streaming do Twitter</a> dá a possibilidade de obter em tempo real (ou quase) status públicos do Twitter. Por exemplo, você pode obter todos os tweets que contenham algum link, ou ainda que falem sobre determinada marca, produto ou palavra-chave.</p>
<p>E fazer essa busca por palavras-chave é super fácil com Ruby, pois já existem várias bibliotecas e gemas pra isso.</p>
<p>No meu exemplo, vou usar a gem <a href="http://github.com/voloko/twitter-stream" target="_blank">twitter-stream</a>:</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> twitter-stream</div></td></tr></tbody></table></div>
<p>Para capturar os tweets, o código é bem simples:</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:350px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'twitter/json_stream'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'json'</span><br />
<br />
<span style="color:#008000; font-style:italic;"># Dados de acesso do seu twitter</span><br />
user = <span style="color:#996600;">'usuario'</span><br />
password &nbsp;= <span style="color:#996600;">'senha'</span><br />
<br />
<span style="color:#008000; font-style:italic;"># Busca</span><br />
track = <span style="color:#996600;">'movie'</span><br />
<br />
counter = <span style="color:#006666;">1</span><br />
<br />
EventMachine::run <span style="color:#006600; font-weight:bold;">&#123;</span><br />
<br />
&nbsp; &nbsp; stream = <span style="color:#6666ff; font-weight:bold;">Twitter::JSONStream</span>.<span style="color:#9900CC;">connect</span><span style="color:#006600; font-weight:bold;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:path</span> &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'/1/statuses/filter.json'</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:auth</span> &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;#{user}:#{password}&quot;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:method</span> &nbsp;<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'POST'</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#ff3333; font-weight:bold;">:content</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;track=#{track}&quot;</span><br />
&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span><br />
<br />
&nbsp; &nbsp; stream.<span style="color:#9900CC;">each_item</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>status<span style="color:#006600; font-weight:bold;">|</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; status = JSON.<span style="color:#9900CC;">parse</span> status<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{counter} - @#{status['user']['screen_name']}: #{status['text']}<span style="color:#000099;">\n</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; counter = counter <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006666;">1</span><br />
<br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; &nbsp; stream.<span style="color:#9900CC;">on_error</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>message<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span>---------<span style="color:#000099;">\n</span>Erro: #{message}<span style="color:#000099;">\n</span>---------<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span>&quot;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; &nbsp; stream.<span style="color:#9900CC;">on_reconnect</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>timeout, retries<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span> - Reconectando em #{timeout} segundos<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span>&quot;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
<span style="color:#006600; font-weight:bold;">&#125;</span></div></td></tr></tbody></table></div>
<p>Bonito, né? Dá pra criar coisas bem legais com poucas linhas de código, basta usar a imaginação. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><em>Ah, outra gem bem bacana é a <a href="http://github.com/intridea/tweetstream" target="_blank">TweetStream</a>. Você pode ver como ela funciona <a href="http://intridea.com/2009/9/22/tweetstream-ruby-access-to-the-twitter-streaming-api?blog=development" target="_blank">aqui</a>.</em><!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/302/usando-a-api-de-streaming-do-twitter-com-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protegendo diretórios .git e .svn usando o arquivo .htaccess do Apache</title>
		<link>http://lenonmarcel.com.br/288/protegendo-diretorios-git-e-svn-usando-o-arquivo-htaccess-do-apache/</link>
		<comments>http://lenonmarcel.com.br/288/protegendo-diretorios-git-e-svn-usando-o-arquivo-htaccess-do-apache/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 19:36:14 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=288</guid>
		<description><![CDATA[Sempre que posso, uso Git ou Svn para gerenciar meu código. É muito mais simples, organizado e me dá menos dores de cabeça. O problema é quando os repositórios precisam ficar em algum lugar público, ou seja, algum lugar que pode ser acessado via browser. Não é legal ter alguém lendo o conteúdo dos repositórios, [...]]]></description>
			<content:encoded><![CDATA[<p>Sempre que posso, uso Git ou Svn para gerenciar meu código. É muito mais simples, organizado e me dá menos dores de cabeça. O problema é quando os repositórios precisam ficar em algum lugar público, ou seja, algum lugar que pode ser acessado via browser.</p>
<p>Não é legal ter alguém lendo o conteúdo dos repositórios, né? Então, pra esconder todos os diretórios .git ou .svn do acesso público, basta adicionar a regra no seu arquivo .htaccess:</p>
<div class="codecolorer-container apache vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="apache codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00007f;">RedirectMatch</span> <span style="color: #ff0000;">404</span> ^(.*/)?\.(svn|git|gitignore)/</div></td></tr></tbody></table></div>
<p>Assim, quando alguém tentar acessar um diretório (ou um arquivo do diretório) um erro 404 será retornado. Arquivos .gitignore &#8220;soltos&#8221; também não serão encontrados. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/288/protegendo-diretorios-git-e-svn-usando-o-arquivo-htaccess-do-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desativar o Analytics no modo preview do WordPress</title>
		<link>http://lenonmarcel.com.br/218/desativar-o-analytics-no-modo-preview-do-wordpress/</link>
		<comments>http://lenonmarcel.com.br/218/desativar-o-analytics-no-modo-preview-do-wordpress/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 21:17:58 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[filtros]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=218</guid>
		<description><![CDATA[Quando você está escrevendo um post num blog WordPress, é muito comum usar o modo preview (aquele botão &#8220;Visualizar&#8221; do painel). E quem usa o Google Analytics deve reparar que há um elevado número de visitas vindas justamente desse preview, ou seja, há um &#8220;falso tráfego&#8221; nas estatísticas. A resolução deste problema é simples, basta [...]]]></description>
			<content:encoded><![CDATA[<p>Quando você está escrevendo um post num blog WordPress, é muito comum usar o modo preview (aquele botão &#8220;Visualizar&#8221; do painel). E quem usa o Google Analytics deve reparar que há um elevado número de visitas vindas justamente desse preview, ou seja, há um &#8220;falso tráfego&#8221; nas estatísticas.</p>
<p>A resolução deste problema é simples, basta usar os <a href="http://www.google.com/support/analytics/bin/answer.py?hlrm=en_US&#038;answer=55593&#038;utm_id=ad" target="_blank">filtros do Analytics</a> e excluir este tráfego.</p>
<ul>
<li>Vá até o <a href="https://www.google.com/analytics/settings/filter_list" target="_blank">Filter Manager</a> do Analytics e clique em <a href="https://www.google.com/analytics/settings/add_filter" target="_blank">Add Filter</a>.</li>
<li>No campo <em>Filter Name</em> digite o nome do filtro, pode ser &#8220;Excluir tráfego do modo preview&#8221;.</li>
<li>Em <em>Filter Type</em>, marque <em>Custom Filter</em> e, logo abaixo, marque <em>Exlude</em>.</li>
<li>Em <em>Filter Field</em>, selecione <em>Request URI</em>.</li>
<li>No campo <em>Filter Pattern</em>, digite &#8220;preview=true&#8221; (sem aspas).</li>
<li>Em <em>Case Sensitive</em>, marque <em>No</em>.
<li>Lá no final da página, selecione em quais perfis deseja aplicar o filtro.</li>
<li>Clique em <em>Save Changes</em>.</li>
</ul>
<p>O filtro deve ficar assim:<br />
<img src="http://lenonmarcel.com.br/wp-content/uploads/2010/07/google-analytics-exlude-preview-traffic-e1278882605599.png" alt="" title="google-analytics-exlude-preview-traffic" width="798" height="471" class="aligncenter size-full wp-image-228" /></p>
<p>A partir de agora, todo o tráfego das páginas de preview serão excluídos das estatísticas. E fica a dica: os filtros aceitam <a href="https://www.google.com/support/googleanalytics/bin/answer.py?answer=55582&#038;hl=en_US&#038;utm_id=ad" target="_blank">expressões regulares</a> também. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/218/desativar-o-analytics-no-modo-preview-do-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formulário de contato no WordPress sem usar plugins</title>
		<link>http://lenonmarcel.com.br/192/formulario-de-contato-no-wordpress-sem-usar-plugins/</link>
		<comments>http://lenonmarcel.com.br/192/formulario-de-contato-no-wordpress-sem-usar-plugins/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 02:22:04 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[contact]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=192</guid>
		<description><![CDATA[Não costumo usar muitos plugins no WordPress, só quando preciso de funcionalidades hardcore. Faço tudo diretamente no tema, já que ele pode acessar todos os hooks da API do WordPress. Assim eu fiz na minha página de contato, que é embutida no tema do blog. Ela funciona muito bem e depende somente de funções internas do [...]]]></description>
			<content:encoded><![CDATA[<p>Não costumo usar muitos plugins no WordPress, só quando preciso de funcionalidades <em>hardcore</em>. Faço tudo diretamente no tema, já que ele pode acessar todos os <em>hooks</em> da API do WordPress. Assim eu fiz na minha página de contato, que é embutida no tema do blog. Ela funciona muito bem e depende somente de funções internas do WP.</p>
<h1>O template da página de contato</h1>
<p>Vamos lançar mão do suporte a <a href="http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates" target="_blank">templates de página</a> que o WordPress possui. Para isso, crie um arquivo chamado <code class="codecolorer text default"><span class="text">template-contact.php</span></code> no diretório do seu tema.</p>
<p>Logo nas primeiras linhas do tema, adicione o seguinte:</p>
<div class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:350px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #666666; font-style: italic;">/*<br />
&nbsp;* Template Name: Página de contato<br />
&nbsp;*/</span><br />
<br />
get_header<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&lt;div id=&quot;container&quot;&gt;<br />
&nbsp; &nbsp; &lt;div id=&quot;content&quot; role=&quot;main&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;form method=&quot;post&quot; accept-charset=&quot;utf-8&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact_form_error</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;error&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$contact_form_error</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact_form_success</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;success&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$contact_form_success</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;field&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;label for=&quot;contact-name&quot;&gt;Seu nome:&lt;/label&gt;&lt;br/&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; name=&quot;contact[name]&quot; id=&quot;contact-name&quot; value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #339933;">@</span>esc_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;/&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;field&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;label for=&quot;contact-email&quot;&gt;Email:&lt;/label&gt;&lt;br/&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;text&quot; name=&quot;contact[email]&quot; id=&quot;contact-email&quot; value=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #339933;">@</span>esc_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;/&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;field&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;label for=&quot;contact-message&quot;&gt;Mensagem:&lt;/label&gt;&lt;br/&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;textarea name=&quot;contact[message]&quot; id=&quot;contact-message&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #339933;">@</span>esc_html<span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'message'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/textarea&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class=&quot;buttons&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;button type=&quot;submit&quot;&gt;Enviar mensagem&lt;/button&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;button type=&quot;reset&quot;&gt;Limpar&lt;/button&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/div&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;/form&gt;<br />
&nbsp; &nbsp; &lt;/div&gt;&lt;!-- #content --&gt;<br />
&lt;/div&gt;&lt;!-- #container --&gt;<br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> get_footer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<p>Vá até o painel de administração do WordPress e crie uma nova página. Coloque o título que desejar e selecione no box &#8220;Modelo&#8221; a opção &#8220;Página de contato&#8221; e publique. Agora abra a página recém criada.</p>
<h1>Tratando o post do formulário</h1>
<p>Precisamos tratar o POST do formulário, inserindo validações e mensagens de erro. Para isso, abra o arquivo <code class="codecolorer text default"><span class="text">functions.php</span></code> do seu tema. Insira o seguinte código no final do arquivo:</p>
<div class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:350px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> post_contact_form<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Globais usadas no template</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$contact</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000088;">$contact_form_error</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #000088;">$contact_form_success</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Se os dados do formulário não foram passados, retorna</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'contact'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'contact'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000088;">$contact</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'contact'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Verifica se todos os parâmetros foram passados</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'message'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Nome vazio?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Por favor, digite seu nome'</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Email vazio?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Por favor, digite seu endereço de email'</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'message'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Sem mensagem?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Por favor, digite uma mensagem'</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">filter_var</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">filter_var</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> FILTER_SANITIZE_EMAIL<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> FILTER_VALIDATE_EMAIL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Email inválido?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Por favor, digite um email válido'</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Passou na validação, agora formata o email...</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$time</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'H:i:s d/m/Y (e)'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$email</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'email'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$contact</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'message'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$content</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&lt;&lt;&lt;</span>__MENSAGEM<br />
Alguém enviou uma mensagem através <span style="color: #b1b100;">do</span> formulário de contato<span style="color: #339933;">.</span><br />
<br />
Nome<span style="color: #339933;">:</span> <span style="color: #000088;">$name</span><br />
Email<span style="color: #339933;">:</span> <span style="color: #000088;">$email</span><br />
Data<span style="color: #339933;">:</span> <span style="color: #000088;">$time</span><br />
IP<span style="color: #339933;">:</span> $<span style="color: #009900;">&#123;</span>_SERVER<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><br />
UA<span style="color: #339933;">:</span> $<span style="color: #009900;">&#123;</span>_SERVER<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_USER_AGENT'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><br />
<br />
Mensagem<span style="color: #339933;">:</span><br />
<span style="color: #339933;">----------------------------------</span><br />
<span style="color: #000088;">$message</span><br />
<span style="color: #339933;">----------------------------------</span><br />
<br />
__MENSAGEM<span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$admin_email</span> <span style="color: #339933;">=</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin_email'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ... e envia</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$sent</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span>wp_mail<span style="color: #009900;">&#40;</span><span style="color: #000088;">$admin_email</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;[Via formulário de contato] <span style="color: #006699; font-weight: bold;">$name</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;Reply-To: <span style="color: #006699; font-weight: bold;">$email</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$sent</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Foi enviado?</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$contact_form_success</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Sua mensagem foi enviada com sucesso'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$contact</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Ops, algum erro no momento do envio</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Ops, ocorreu um erro ao enviar sua mensagem'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$contact_form_error</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$error</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'init'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'post_contact_form'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>O básico está aí. Agora, você pode fazer validação com JavaScript, usar Ajax&#8230; deixe sua criatividade agir. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/192/formulario-de-contato-no-wordpress-sem-usar-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XDebug no XAMPP</title>
		<link>http://lenonmarcel.com.br/130/xdebug-no-xampp/</link>
		<comments>http://lenonmarcel.com.br/130/xdebug-no-xampp/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 16:33:10 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xampp]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=130</guid>
		<description><![CDATA[Instalar o XDebug no XAMPP é muito simples, já que ele é distribuido junto o pacote de instalação do projeto. Basta descomentar a seguinte linha do arquivo php.ini: 1zend_extension = &#34;C:\xampp\php\ext\php_xdebug.dll&#34; Agora é só reiniciar o servidor Apache e pronto, XDebug funcionando.]]></description>
			<content:encoded><![CDATA[<p>Instalar o XDebug no XAMPP é muito simples, já que ele é distribuido junto o pacote de instalação do projeto. Basta descomentar a seguinte linha do arquivo <code class="codecolorer text default"><span class="text">php.ini</span></code>:</p>
<div class="codecolorer-container ini vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="ini codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000099;">zend_extension</span> <span style="color: #000066; font-weight:bold;">=</span> <span style="color: #933;">&quot;C:\xampp\php\ext\php_xdebug.dll&quot;</span></div></td></tr></tbody></table></div>
<p>Agora é só reiniciar o servidor Apache e pronto, XDebug funcionando.</p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/130/xdebug-no-xampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qual a diferença entre aspas simples e duplas no PHP?</title>
		<link>http://lenonmarcel.com.br/115/qual-a-diferenca-entre-aspas-simples-e-duplas-no-php/</link>
		<comments>http://lenonmarcel.com.br/115/qual-a-diferenca-entre-aspas-simples-e-duplas-no-php/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 05:08:34 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[aspas]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[variável]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=115</guid>
		<description><![CDATA[Uma dúvida frequente entre iniciantes do PHP é quanto ao uso das aspas simples (&#8216;) e duplas (&#8220;) no PHP. Elas fazem basicamente a mesma coisa: definir strings. Porém, o PHP interpreta cada uma de maneira diferente. Experimente executar o código abaixo: 1234$myvar = 'teste'; echo &#34;Isto é um $myvar\n\n&#34;; //Observe as aspas duplas echo [...]]]></description>
			<content:encoded><![CDATA[<p>Uma dúvida frequente entre iniciantes do PHP é quanto ao uso das aspas simples (&#8216;) e duplas (&#8220;) no PHP. Elas fazem basicamente a mesma coisa: definir strings. Porém, o PHP interpreta cada uma de maneira diferente.</p>
<p>Experimente executar o código abaixo:</p>
<div class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$myvar</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'teste'</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Isto é um <span style="color: #006699; font-weight: bold;">$myvar</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Observe as aspas duplas</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Isto é um $myvar\n\n'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//Agora aspas simples</span></div></td></tr></tbody></table></div>
<p>Conseguiu perceber a diferença? Usando <strong>aspas duplas</strong> o PHP <strong>interpreta as variáveis</strong> contidas <strong>dentro da string</strong>. Quando <strong>aspas simples</strong> são utilizadas, o PHP <strong>não interpreta nenhuma variável</strong>.</p>
<p>Podemos concluir que o uso de aspas simples torna mais rápida a execução do script. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/115/qual-a-diferenca-entre-aspas-simples-e-duplas-no-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby On Rails sem banco de dados</title>
		<link>http://lenonmarcel.com.br/111/ruby-on-rails-sem-banco-de-dados/</link>
		<comments>http://lenonmarcel.com.br/111/ruby-on-rails-sem-banco-de-dados/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 05:01:12 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[environment.rb]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=111</guid>
		<description><![CDATA[Se você quer desenvolver uma aplicação em Rails que não precisa de banco de dados, aí vai a dica: Edite o arquivo config/environment.rb e insira a linha abaixo (caso ainda não exista): 1config.frameworks -= &#91; :active_record &#93; Isso vai fazer com que o Rails não carregue o ActiveRecord e você poderá desenvolver sua aplicação normalmente.]]></description>
			<content:encoded><![CDATA[<p>Se você quer desenvolver uma aplicação em Rails que não precisa de banco de dados, aí vai a dica:</p>
<p>Edite o arquivo config/environment.rb e insira a linha abaixo (caso ainda não exista):</p>
<div class="codecolorer-container ruby vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">config.<span style="color:#9900CC;">frameworks</span> <span style="color:#006600; font-weight:bold;">-</span>= <span style="color:#006600; font-weight:bold;">&#91;</span> <span style="color:#ff3333; font-weight:bold;">:active_record</span> <span style="color:#006600; font-weight:bold;">&#93;</span></div></td></tr></tbody></table></div>
<p>Isso vai fazer com que o Rails não carregue o ActiveRecord e você poderá desenvolver sua aplicação normalmente. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/111/ruby-on-rails-sem-banco-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brincando com o Canvas do HTML5</title>
		<link>http://lenonmarcel.com.br/53/brincando-com-o-canvas-do-html5/</link>
		<comments>http://lenonmarcel.com.br/53/brincando-com-o-canvas-do-html5/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 17:22:37 +0000</pubDate>
		<dc:creator>lenon</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[getContext]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://lenonmarcel.com.br/?p=53</guid>
		<description><![CDATA[Canvas, pra quem não sabe, é um novo elemento do HTML5. Ele atua como uma tela, onde você pode desenhar, exibir fotos, criar animações, tudo através de JavaScript. Digamos que ele chegou para dar um chute na bunda do Flash. Estou há meses querendo estudar um pouco sobre o elemento, mas só hoje a preguiça [...]]]></description>
			<content:encoded><![CDATA[<p><em>Canvas</em>, pra quem não sabe, é um novo elemento do HTML5. Ele atua como uma tela, onde você pode desenhar, exibir fotos, criar animações, tudo através de JavaScript. Digamos que ele chegou para dar um chute na bunda do Flash.</p>
<p>Estou há meses querendo estudar um pouco sobre o elemento, mas só hoje <del datetime="2010-06-11T06:09:03+00:00">a preguiça deixou</del> tive tempo. Então, vou compartilhar as experiências aqui, com vocês.<span id="more-53"></span></p>
<h2>1. Suporte</h2>
<p>O Canvas é suportado pelo Safari, Google Chrome, Opera e Firefox. Como sempre, o IE fica de fora da festa. <del datetime="2010-06-11T06:09:03+00:00">PORRA IE</del></p>
<h2>2. Marcação HTML</h2>
<p>Nenhuma novidade aqui, basta fazer a marcação como um elemento comum:</p>
<div class="codecolorer-container html4strict vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;canvas <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;elemento&quot;</span>&gt;</span>Texto exibido para browsers sem suporte<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span>canvas&gt;</span></div></td></tr></tbody></table></div>
<p>Você também pode especificar uma altura e/ou largura usando CSS ou através dos atributos <em>width</em> e <em>height</em>. Se nenhuma altura/largura for definida, o padrão é 300 por 150 pixels.</p>
<h2>3. Verificando o suporte</h2>
<p>Agora começa a parte do JavaScript. Para verificar se o browser do usuário suporta Canvas, você pode fazer isso:</p>
<div class="codecolorer-container javascript vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'elemento'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>canvas.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
<span style="color: #006600; font-style: italic;">// Suporta canvas</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span><br />
<span style="color: #006600; font-style: italic;">// Não suporta canvas</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>A partir daí, você pode criar uma função de fallback para browsers sem suporte.</p>
<h2>4. Desenhando um retângulo</h2>
<p>Já que essa bagaça serve pra desenhar, vamos desenhar! <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  E pra começar, vamos desenhar um retângulo:</p>
<div class="codecolorer-container javascript vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> context <span style="color: #339933;">=</span> canvas.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Pega o contexto 2d do elemento</span><br />
context.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;purple&quot;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Qualquer cor, inclusive RGBA</span><br />
context.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">45</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">55</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// X, Y, W, H</span><br />
<span style="color: #006600; font-style: italic;">// Isso me lembrou Delphi ~apagar</span></div></td></tr></tbody></table></div>
<p>E o resultado (no Firefox):</p>
<p><img class="aligncenter size-full wp-image-65" title="HTML5 Canvas - Exemplo 1" src="http://lenonmarcel.com.br/wp-content/uploads/2010/06/html5-canvas-exemplo-1.png" alt="" width="302" height="152" />Fácil, não? Explicando&#8230;</p>
<ul>
<li><strong><em>getContext</em></strong> pega o contexto, que atualmente suporta somente 2d;</li>
<li><em><strong>fillStyle</strong></em> define a cor ou estilo de preenchimento da forma;</li>
<li><em><strong>fillRect</strong></em> desenha um retângulo, usando as coordenadas X, Y, largura e altura.</li>
</ul>
<h2>5. Texto</h2>
<p>Desenhar texto também é bem simples:</p>
<div class="codecolorer-container javascript vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">context.<span style="color: #660066;">font</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;2em Arial&quot;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Fonte</span><br />
context.<span style="color: #660066;">textBaseline</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;top&quot;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Alinhamento vertical</span><br />
context.<span style="color: #660066;">fillText</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;LOL :P&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Text, X, Y e max-width opicional</span></div></td></tr></tbody></table></div>
<p>Resultado:</p>
<h2><img class="aligncenter size-full wp-image-71" title="HTML5 Canvas - Exemplo 2" src="http://lenonmarcel.com.br/wp-content/uploads/2010/06/html5-canvas-exemplo-2.png" alt="" width="302" height="152" />6. Círculo</h2>
<p>Agora, pra complicar um pouco, vamos desenhar um círculo:</p>
<div class="codecolorer-container javascript vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">context.<span style="color: #660066;">strokeStyle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;red&quot;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Cor do contorno</span><br />
context.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;rgba(0,0,0,0.5)&quot;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Preenchimento</span><br />
context.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Dá um reset nos caminhos do contexto</span><br />
context.<span style="color: #660066;">arc</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">150</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">50</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> Math.<span style="color: #660066;">PI</span><span style="color: #339933;">*</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Desenha um arco</span><br />
context.<span style="color: #660066;">stroke</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Adiciona o contorno</span><br />
context.<span style="color: #660066;">fill</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Adiciona o preenchimento</span><br />
context.<span style="color: #660066;">closePath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// Fecha o caminho</span></div></td></tr></tbody></table></div>
<p>O resultado:</p>
<p><img class="aligncenter size-full wp-image-74" title="HTML5 Canvas - Exemplo 3" src="http://lenonmarcel.com.br/wp-content/uploads/2010/06/html5-canvas-exemplo-3.png" alt="" width="302" height="152" /></p>
<p>O método <em><strong>arc</strong></em> desenha um caminho no formato de arco com os parâmetros <em>x</em>, <em>y</em>, <em>raio</em>, <em>ângulo inicial</em>, <em>ângulo final</em>, <em>anti-horário</em>.</p>
<h2>7. Imagem</h2>
<p>Para finalizar esse primeiro contato com o canvas, vamos exibir uma imagem:</p>
<div class="codecolorer-container javascript vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> img <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Image<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
img.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
context.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span>img<span style="color: #339933;">,</span> <span style="color: #CC0000;">120</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">70</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
img.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;http://lenonmarcel.com.br/examples/pikachu.png&quot;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Resultado:</p>
<p><img class="aligncenter size-full wp-image-81" title="HTML5 Canvas - Exemplo 4" src="http://lenonmarcel.com.br/wp-content/uploads/2010/06/html5-canvas-exemplo-4.png" alt="" width="302" height="152" /></p>
<p>O método <em><strong>drawImage</strong></em> desenha uma imagem com os parâmetros <em>imagem</em> (elemento html image), <em>x</em>, <em>y</em>.</p>
<h2>Referência</h2>
<ul>
<li><a href="https://developer.mozilla.org/en/HTML/Canvas" target="_blank">Canvas</a>, no MDC (Mozilla Developer Center)</li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html" target="_blank">The Canvas Element</a>, documentação no WHATWG</li>
</ul>
<h2>Links e tutoriais</h2>
<ul>
<li><a href="http://carsonified.com/blog/dev/html-5-dev/how-to-draw-with-html-5-canvas/" target="_blank">How to Draw with HTML 5 Canvas</a></li>
<li><a href="http://juliogreff.net/desenhando-com-canvas/" target="_blank">Desenhando com Canvas</a></li>
<li><a href="http://www.leonardomoreira.com.br/html5-canvas-parte1/" target="_blank">HTML 5 na prática, Canvas &#8211; Parte 1</a></li>
<li><a href="http://www.leonardomoreira.com.br/html5-canvas-parte2/" target="_blank">HTML 5 na prática, Canvas &#8211; Parte 2</a></li>
</ul>
<p>Fiz uma abordagem bem superficial do elemento Canvas, só para ter uma idéia das suas possibilidades. Vou tentar me aprofundar mais no assunto, da próxima vez. <img src='http://lenonmarcel.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lenonmarcel.com.br/53/brincando-com-o-canvas-do-html5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
