<?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>techlive.org</title>
	<atom:link href="http://techlive.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://techlive.org</link>
	<description>Desenvolvimento web</description>
	<lastBuildDate>Tue, 09 Feb 2010 11:56:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS Sprites &#8211; O que são, porque são importantes e como utilizar</title>
		<link>http://techlive.org/css/css-sprites-o-que-sao-porque-sao-importantes-e-como-utilizar/</link>
		<comments>http://techlive.org/css/css-sprites-o-que-sao-porque-sao-importantes-e-como-utilizar/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 11:47:38 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[avançado]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[background-position]]></category>
		<category><![CDATA[position]]></category>
		<category><![CDATA[sprites]]></category>
		<category><![CDATA[técnicas]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=707</guid>
		<description><![CDATA[Uma técnica muito difundida entre desenvolvedores web - e que deixa muita gente confusa - é o uso de CSS Sprites. Basicamente, um sprite CSS consiste em colocar todas as imagens que formam determinado layout (ou conjunto de elementos) dentro de uma única imagem, um único arquivo.]]></description>
			<content:encoded><![CDATA[<p>Uma técnica muito difundida entre desenvolvedores web - e que deixa muita gente confusa - é o uso de CSS Sprites. Basicamente, um sprite CSS consiste em colocar todas as imagens que formam determinado layout (ou conjunto de elementos) dentro de uma única imagem, um único arquivo. Como exemplo, observe a imagem que forma uma parte do layout aqui do techlive.org:</p>
<p><img class="aligncenter size-full wp-image-708" title="sprites" src="http://techlive.org/wp-content/uploads/2010/02/sprites.png" alt="" width="200" height="103" /></p>
<p>Um pouco confuso, não? Pois é, eu lembro que também achava isso estranho no início... "como diabos vou encaixar isso no layout?" eu pensava. Para começar a clarear as idéias, vamos ver <del datetime="2010-02-08T10:41:41+00:00">o motivo, razão ou circunstância</del> porque devemos utilizar esta técnica.</p>
<p>Pense na seguinte situação: você fez um layout com ícones. <em>Ohh, legal... ícones, adoro!</em> E como você não usa CSS Sprites, cada ícone fica num arquivo separado. São um total de 26 ícones, que deixam seu menu mais buniteenho... e também precisam de 26 HTTP Requests. Este é o principal problema em não usar CSS Sprites, a quantidade exagerada de requisições HTTP que o browser precisa fazer para baixar todas as imagens.</p>
<p>Cada HTTP Request significa uma nova conexão e um novo pedido ao servidor. E isto leva algum tempo, além de gastar uma quantidade maior de dados. Digamos que a cada requisição, sejam gastos 0.2 segundos. Multiplique isto pela quantidade de imagens e temos um bom tempo de carregamento desperdiçado. Por isso, juntar todas as imagens num único arquivo é a maneira mais eficaz de reduzir essas requisições e acelerar o carregamento das páginas.</p>
<p>Compreendido os motivos para usar essa técnica, vamos entender seu funcionamento.</p>
<p>Tomando novamente como exemplo a primeira imagem, vamos ver como exibir somente o ícone do Facebook num elemento e o do Twitter em outro:</p>
<p><em><strong> - CSS:</strong></em></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">/* Todas as divs com essa classe receberão a imagem do sprite como background */</span>
.sprite_img<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">sprites.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
.icone_facebook<span style="color: #00AA00;">&#123;</span>
    <span style="color: #808080; font-style: italic;">/* O grande segredo, a propriedade background-position */</span>
    <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-32px</span> <span style="color: #933;">-25px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">32px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">32px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
.icone_twitter<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">-25px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">32px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">32px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><em><strong>- HTML:</strong></em></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sprite_img icone_facebook&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;sprite_img icone_twitter&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>

<p>E o resultado...</p>
<p style="text-align: center;"><img class="size-full wp-image-720 aligncenter" title="css-sprite-example" src="http://techlive.org/wp-content/uploads/2010/02/css-sprite-example.png" alt="" width="64" height="94" /></p>
<p>O grande segredo desta técnica é a propriedade CSS <em>background-position</em>, que posiciona a imagem conforme as coordenadas. Para entender como funciona a propriedade <em>background-position</em>, veja a imagem abaixo:</p>
<p style="text-align: center;"><img class="size-full wp-image-722 aligncenter" title="css-sprite-graphic" src="http://techlive.org/wp-content/uploads/2010/02/css-sprite-graphic.png" alt="" width="196" height="112" /></p>
<p>As linhas na cor verde representam a borda da imagem (as coordenadas <em>0, 0</em>). As linhas na cor laranja representam a DIV do exemplo, que possui altura e largura de 32px.</p>
<p>O exemplo acima serve pra elementos com largura fixa. Qualquer alteração no tamanho pode *oder tudo e deixar o layout <em>bugado</em>. <img src='http://techlive.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Para elementos com largura ou altura variável, a coisa muda um pouco. Você precisa posicionar os elementos verticalmente ou horizontalmente, além de deixar uma pequena margem entre eles. Veja o próximo exemplo, com alguns ícones que serão posicionados em elementos com altura fixa, mas largura variável.</p>
<p>A imagem que utilizaremos:</p>
<p style="text-align: center;"><img class="size-full wp-image-735 aligncenter" title="css-sprite-example-2" src="http://techlive.org/wp-content/uploads/2010/02/css-sprite-example-2.png" alt="" width="32" height="160" /></p>
<p><strong><em>- CSS:</em></strong></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">.icones<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000; font-style: italic;">sprites.png</span><span style="color: #00AA00;">&#41;</span> <span style="color: #993333;">no-repeat</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">line-height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">32px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">padding-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">35px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> inline-<span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">margin-right</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
.icone_google<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">-32px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
.icone_flickr<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">-64px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
.icone_twitter<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">-96px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
.icone_rss<span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">background-position</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span> <span style="color: #933;">-128px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><strong><em>- HTML:</em></strong></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;icones icone_twitter&quot;</span>&gt;</span>Twitter<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;icones icone_flickr&quot;</span>&gt;</span>Flickr<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;icones icone_google&quot;</span>&gt;</span>Google<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;icones icone_rss&quot;</span>&gt;</span>Feed RSS<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span></pre></div></div>

<p>Resultado:</p>
<p style="text-align: center;"><img class="size-full wp-image-738 aligncenter" title="css-sprite-example-3" src="http://techlive.org/wp-content/uploads/2010/02/css-sprite-example-3.png" alt="" width="340" height="50" /></p>
<p>Para imagens com largura e altura variável, não tem jeito. Só usando imagens em arquivos separados mesmo. Nos outros casos, onde você pode usar CSS Sprites, a dica é: USE. <img src='http://techlive.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Ferramentas:</h2>
<p>Geradores online, que podem auxiliar na tarefa de gerar os sprites.</p>
<ul>
<li><a href="http://printf.ru/spritr/" target="_blank">Spritr</a></li>
<li><a href="http://www.floweringmind.com/sprite-creator/index.php" target="_blank">Sprite Creator 1.0</a></li>
<li><a href="http://csssprites.com/" target="_blank">CSS Sprites Generator</a></li>
<li><a href="http://spritegen.website-performance.org/" target="_blank">Project Fondue CSS Sprite Generator</a></li>
</ul>
<h2>Artigos sobre o assunto:</h2>
<p>Uma pequena compilação de artigos que falam sobre os CSS Sprites, como utilizar e dão mais alguns exemplos.</p>
<ul>
<li><a href="http://css-tricks.com/css-sprites/" target="_blank">CSS Sprites: What They Are, Why They’re Cool, and How To Use Them</a></li>
<li><a href="http://imasters.uol.com.br/artigo/6041/css/css_sprite/" target="_blank">CSS Sprite - Artigo no iMasters</a></li>
<li><a href="http://www.richardbarros.com.br/blog/design/usando-css-sprites-para-fazer-seu-site-carregar-mais-rapido" target="_blank">Usando CSS Sprites para fazer seu site carregar mais rápido</a></li>
<li><a href="http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/" target="_blank">The Mystery Of CSS Sprites: Techniques, Tools And Tutorials</a></li>
</ul>
<p>Até a próxima! <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/css/css-sprites-o-que-sao-porque-sao-importantes-e-como-utilizar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Novidades do jQuery 1.4 – #5: &#8220;Recortando&#8221; um elemento da DOM com detach()</title>
		<link>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-5-recortando-um-elemento-da-dom-com-detach/</link>
		<comments>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-5-recortando-um-elemento-da-dom-com-detach/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 09:52:11 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[attach]]></category>
		<category><![CDATA[detach]]></category>
		<category><![CDATA[elementos]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery 1.4]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[novidades]]></category>
		<category><![CDATA[remove]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=692</guid>
		<description><![CDATA[Em mais um artigo da série que fala sobre as novidades do jQuery 1.4, vamos ver sobre uma funcionalidade que eu acho muito boa e útil: a função detach().]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript">// <![CDATA[
 jQuery(document).ready(function($){$('.minha_div').click(function(){$(this).remove();}); var elemento;$('.detach_minha_div').click(function(){if(!elemento){elemento = $('.minha_div2').detach();}else{elemento.appendTo('.div_container');elemento = null;}});});
// ]]&gt;</script>Em mais um artigo da série que fala sobre as novidades do jQuery 1.4, vamos ver sobre uma funcionalidade que eu achei <del datetime="2010-02-08T09:10:08+00:00">super legal, divertida, demais, animal,</del> muito boa e útil: a função <em>detach()</em>.</p>
<p>Basicamente, ela remove o elemento da árvore DOM e armazena numa variável, possibilitando o uso posterior da mesma. Se você é um jQuery modafoca, me perguntará... e a função remove(), não faz o mesmo? Nop, a função remove funciona de maneira diferente.</p>
<p>A função <em>remove</em> simplesmente remove (<em>ohhh</em>) o elemento, e suas referências. Ele é apagado, sem dó nem piedade. <img src='http://techlive.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Já a nova função <em>detach</em> somente remove o elemento da árvore, sem remover a referência. É como recortar o elemento, e depois possibilitar que ele seja colado em outro lugar do código.</p>
<p>Veja um exemplo onde utilizamos a função <em>remove</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.minha_div'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</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>
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">remove</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<div class="minha_div" style="padding: 10px; height: 100px; background: green; color: white; line-height: 100px; vertical-align: middle;">Clique para remover</div>
<p>No exemplo acima, a div é apagada e removida da DOM. Agora, vejamos um exemplo com <em>detach</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> elemento<span style="color: #339933;">;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.detach_minha_div'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</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>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>elemento<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        elemento <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.minha_div2'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">detach</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
        elemento.<span style="color: #660066;">appendTo</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.div_container'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        elemento <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><button class="detach_minha_div">Attach/detach minha div</button></p>
<div class="div_container">
<div class="minha_div2" style="padding: 10px; height: 100px; background: blue; color: white; line-height: 100px; vertical-align: middle;">Hello!</div>
</div>
<p>Agora, recriar elementos é para os fracos. <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Até o próximo (e último) artigo da série.</p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-5-recortando-um-elemento-da-dom-com-detach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Otimização automática de banco de dados no WordPress 2.9</title>
		<link>http://techlive.org/wordpress/otimizacao-automatica-de-banco-de-dados-no-wordpress-2-9/</link>
		<comments>http://techlive.org/wordpress/otimizacao-automatica-de-banco-de-dados-no-wordpress-2-9/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 09:44:26 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[2.9]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=662</guid>
		<description><![CDATA[Um dos recursos que o WordPress 2.9 possui, é a otimização do banco de dados. Antes do WP 2.9, você provavelmente utilizava algum plugin, ou fazia a otimização manualmente - caso você seja um jedi em MySQL  . Agora nada disso é necessário, você precisa apenas adicionar uma linha de código PHP no seu [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos recursos que o WordPress 2.9 possui, é a otimização do banco de dados. Antes do WP 2.9, você provavelmente utilizava algum plugin, ou fazia a otimização manualmente - caso você seja um jedi em MySQL <img src='http://techlive.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Agora nada disso é necessário, você precisa apenas adicionar uma linha de código PHP no seu <em>wp-config.php</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WP_ALLOW_REPAIR'</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Depois de adicionar a linha, abra a seguinte página em seu navegador: http://URL_DO_SEU_BLOG/wp-admin/maint/repair.php</p>
<p>Faça a otimização e depois remova a linha, para evitar que usuários não desejados tenham acesso à página. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/wordpress/otimizacao-automatica-de-banco-de-dados-no-wordpress-2-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novidades do jQuery 1.4 – #4: Atrasos nas animações com a função delay()</title>
		<link>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-4-atrasos-nas-animacoes-com-a-funcao-delay/</link>
		<comments>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-4-atrasos-nas-animacoes-com-a-funcao-delay/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 09:08:46 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[delay]]></category>
		<category><![CDATA[elementos]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery 1.4]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[novidades]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=650</guid>
		<description><![CDATA[Continuando com a série de artigos que aborda as novidades do jQuery 1.4, neste artigo vamos ver uma nova função: delay().]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript">// <![CDATA[
  jQuery(document).ready(function($){$('.minha_div').click(function(){$(this).animate({paddingTop:50,paddingBottom:50,margin:50},500).delay(2000).animate({paddingTop:10,paddingBottom:10,margin:0},500);});});
// ]]&gt;</script>Continuando com a série de artigos que aborda as novidades do jQuery 1.4, neste artigo vou falar sobre uma função que eu gostei <del datetime="2010-01-31T08:34:54+00:00">pra carai</del> muito: a função <em>delay</em>.</p>
<p>A função <em>delay</em> serve para atrasar a <em>queue</em> (fila) de animações. Com essa função, você não precisa fazer uso de callbacks e chamadas <em>setTimeout</em>. As coisas ficam bem mais simples agora, veja o exemplo abaixo:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.minha_div'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</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>
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>
        .<span style="color: #660066;">animate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">// Animação que será executada logo após o clique</span>
            paddingTop<span style="color: #339933;">:</span><span style="color: #CC0000;">50</span><span style="color: #339933;">,</span>
            paddingBottom<span style="color: #339933;">:</span><span style="color: #CC0000;">50</span><span style="color: #339933;">,</span>
            margin<span style="color: #339933;">:</span><span style="color: #CC0000;">50</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span>
        .<span style="color: #660066;">delay</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2000</span><span style="color: #009900;">&#41;</span> <span style="color: #006600; font-style: italic;">// Delay (espera) de 2 segundos</span>
        .<span style="color: #660066;">animate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> <span style="color: #006600; font-style: italic;">// Animação que será executada ao término do delay</span>
            paddingTop<span style="color: #339933;">:</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
            paddingBottom<span style="color: #339933;">:</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
            margin<span style="color: #339933;">:</span><span style="color: #CC0000;">0</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<div class="minha_div" style="padding: 10px; height: 100px; background: red; color: white; line-height: 100px; vertical-align: middle;">Clique <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </div>
<p>Viu só como é fácil? Antes você precisava criar diversas funções de callback para uma simples animação... agora chega disso, viva a função delay! <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><strong><em>Leia mais sobre a função delay na <a href="http://api.jquery.com/delay/" target="_blank">documentação da API do jQuery</a>.</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-4-atrasos-nas-animacoes-com-a-funcao-delay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensão do Zapt.in para o Google Chrome</title>
		<link>http://techlive.org/internet/extensao-do-zapt-in-para-o-google-chrome/</link>
		<comments>http://techlive.org/internet/extensao-do-zapt-in-para-o-google-chrome/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 17:34:17 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[encurtador]]></category>
		<category><![CDATA[extensão]]></category>
		<category><![CDATA[in]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[short]]></category>
		<category><![CDATA[zapt]]></category>
		<category><![CDATA[zapt.in]]></category>
		<category><![CDATA[zaptin]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=628</guid>
		<description><![CDATA[No final do ano passado, Manoel Lemos lançou um encurtador de URLs, o Zapt.in. E alguns dias depois, lançou também uma API do serviço com a documentação no Github. Juntando isso, mais minha vontade de aprender a criar extensões para o Google Chrome, saiu meu primeiro plugin para o browser.]]></description>
			<content:encoded><![CDATA[<p>No final do ano passado, <a href="http://manoellemos.com/" target="_blank">Manoel Lemos</a> (também conhecido como "O criador do <a href="http://blogblogs.com.br/" target="_blank">Blogblogs</a>" <img src='http://techlive.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) lançou um encurtador de URLs, o <a href="http://zapt.in/" target="_blank">Zapt.in</a>. E alguns dias depois, lançou também uma API do serviço com a <a href="http://wiki.github.com/mlemos/zaptin-api/" target="_blank">documentação no Github</a>. Juntando isso, mais minha vontade de aprender a criar extensões para o Google Chrome, saiu meu <a href="https://chrome.google.com/extensions/detail/hgglldekaihiijhdijiopdcfnnliheff" target="_blank">primeiro plugin</a> para o browser.</p>
<p>O plugin (ou extensão, whatever) serve para encurtar URLs usando o Zapt.in - pausa para o <em>Ohhh</em>. E tem um botão "Copiar". É isso. <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><img class="aligncenter size-full wp-image-632" title="O plugin em &quot;ação&quot; \o/" src="http://techlive.org/wp-content/uploads/2010/01/screenshot-chrome-zapt-in.png" alt="" width="550" height="267" /></p>
<h2>Instalação</h2>
<ol>
<li>Primeiro, vá até o <a href="https://chrome.google.com/extensions/detail/hgglldekaihiijhdijiopdcfnnliheff" target="_blank">diretório de extensões do Google Chrome</a> e instale o plugin:<br />
<img class="aligncenter size-full wp-image-633" title="screenshot-chrome-zapt-in-2" src="http://techlive.org/wp-content/uploads/2010/01/screenshot-chrome-zapt-in-2.png" alt="" width="534" height="310" /></li>
<li>Agora o ícone do Zapt.in vai aparecer no canto superior direito do Chrome. Clique nele e depois em "Configurar":<br />
<img class="aligncenter size-full wp-image-635" title="screenshot-chrome-zapt-in-3" src="http://techlive.org/wp-content/uploads/2010/01/screenshot-chrome-zapt-in-3.png" alt="" width="464" height="260" /></li>
<li>Agora você precisa da sua chave da API do Zapt.in. <a href="http://zapt.in/account" target="_blank">Pegue a sua</a>, preencha os campos e clique em salvar:<br />
<img class="aligncenter size-full wp-image-637" title="screenshot-chrome-zapt-in-4" src="http://techlive.org/wp-content/uploads/2010/01/screenshot-chrome-zapt-in-4.png" alt="" width="560" height="277" /></li>
<li>Pronto! Agora todos os links encurtados com o plugin vão aparecer na sua conta do Zapt.in. <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
<img class="aligncenter size-full wp-image-638" title="screenshot-chrome-zapt-in-5" src="http://techlive.org/wp-content/uploads/2010/01/screenshot-chrome-zapt-in-5.png" alt="" width="400" height="354" /></li>
</ol>
<p>Todo o código fonte do plugin <del datetime="2010-01-28T16:17:08+00:00">(extensão, add-on... sei lá)</del> está disponível num <a href="http://github.com/lenon/zaptin" target="_blank">repositório do Github</a>. Então, se você é desenvolvedor e deseja contribuir com alguma funcionalidade extra (como um "enviar para o Twitter" #ficadica), basta criar um fork, fazer suas modificações e depois enviar um "Pull Request" pra mim.</p>
<p>Inicialmente o plugin era pra uso pessoal, não tinha intenção de compartilhar com as massas. Mas como o <a href="http://googlediscovery.com/2010/01/26/liberada-a-versao-final-do-google-chrome-4-0/" target="_blank">Chrome 4 final foi liberado</a> há dois dias (e com suporte oficial a plugins), pensei: porque não? <img src='http://techlive.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/internet/extensao-do-zapt-in-para-o-google-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novidades do jQuery 1.4 – #3: Eventos focusin e focusout</title>
		<link>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-3-eventos-focusin-e-focusout/</link>
		<comments>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-3-eventos-focusin-e-focusout/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 23:11:35 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[elementos]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[focusin]]></category>
		<category><![CDATA[focusout]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery 1.4]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[novidades]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=615</guid>
		<description><![CDATA[O jQuery 1.4 trouxe dois novos eventos bem interessantes: focusin e focusout. À primeira vista, eles parecem fazer o mesmo que os eventos focus e blur, mas na verdade eles tem uma peculiaridade interessante.]]></description>
			<content:encoded><![CDATA[<p>O jQuery 1.4 trouxe dois novos eventos bem interessantes: <em>focusin</em> e <em>focusout</em>. À primeira vista, eles parecem fazer o mesmo que os eventos <em>focus</em> e <em>blur</em>, mas na verdade eles tem uma peculiaridade interessante.</p>
<p>Diferentemente do <em>focus</em>, o evento <em>focusin</em> é disparado quando qualquer elemento dentro do elemento pai recebe foco. Para entender melhor:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.focusin'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">focusin</span><span style="color: #009900;">&#40;</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>
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'blue'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">focusout</span><span style="color: #009900;">&#40;</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>
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'red'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.focus'</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">focus</span><span style="color: #009900;">&#40;</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>
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'blue'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #000066;">blur</span><span style="color: #009900;">&#40;</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>
    $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">css</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'background'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'red'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<div class="focusin" style="background: red; color: white; padding: 10px; margin-bottom: 10px;">DIV com focusin/out<br />
<input type="text" value="Clique aqui" /></div>
<div class="focus" style="background: red; color: white; padding: 10px;">DIV com focus normal<br />
<input type="text" value="Clique aqui" /></div>
<p><script type="text/javascript">// <![CDATA[
    jQuery(document).ready(function($){ $('.focusin').focusin(function(){ $(this).css('background','blue');}).focusout(function(){ $(this).css('background','red'); }); $('.focus').focus(function(){ $(this).css('background','blue'); }).blur(function(){ $(this).css('background','red'); }); });
// ]]&gt;</script><br />
Legal, né? <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Eu, particularmente, sentia falta desses dois eventos. Principalmente pra mudar a cor de formulários, etc quando o usuário "focava" em inputs... antes era necessário fazer um loop e aplicar o evento a cada input dentro do formulário, agora ficou muito mais simples.</p>
<p><em><strong>Leia mais sobre o focusin e focusout na </strong></em><a href="http://api.jquery.com/focusin/" target="_blank"><em><strong>documentação da API do jQuery</strong></em></a><em><strong>.</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/jquery/novidades-do-jquery-1-4-%e2%80%93-3-eventos-focusin-e-focusout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO no WordPress &#8211; #1: Otimizando os títulos dos posts</title>
		<link>http://techlive.org/wordpress/seo-no-wordpress-1-otimizando-os-titulos-dos-posts/</link>
		<comments>http://techlive.org/wordpress/seo-no-wordpress-1-otimizando-os-titulos-dos-posts/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 14:51:08 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=599</guid>
		<description><![CDATA[Iniciando mais uma série de posts aqui no techlive.org, desta vez o tema é SEO no WordPress. Vamos ver algumas pequenas dicas, códigos e otimizações que podem melhorar o SEO do seu site.]]></description>
			<content:encoded><![CDATA[<p>Iniciando mais uma série de posts aqui no <a href="http://techlive.org/">techlive.org</a>, desta vez o tema é SEO no WordPress. Vamos ver algumas pequenas dicas, códigos e otimizações que podem melhorar o SEO do seu site.</p>
<p>E no primeiro artigo, uma dica simples porém muito eficaz pra melhorar seu SEO: títulos das postagens com H1 único. <em>Como assim?</em> Calma, vou explicar...</p>
<p>A maioria dos temas pra WordPress utiliza uma tag H1 no header, com o nome do blog e um link para a home. Veja na imagem um exemplo, com o tema padrão do WP:</p>
<p><img class="aligncenter size-full wp-image-601" title="wordpress-seo-optimization-image-1" src="http://techlive.org/wp-content/uploads/2010/01/wordpress-seo-optimization-image-1.png" alt="" width="500" height="252" /></p>
<p>Como podemos observar, em todas as páginas a tag H1 será "ocupada" com o título do blog. E o título dos posts acaba ficando com a tag H2.</p>
<p>No HTML, a tag H1 representa o título de mais alta importância na página. E é dessa forma que os buscadores (Google e afins) interpretam. Ou seja, se colocarmos a tag H1 no header com o título do blog, é ele quem "ganha" a importância.</p>
<p>Minha dica é mudar isso, colocar a tag H1 somente no título das postagens. Veja como a estrutura ficaria depois da otimização:</p>
<p><img class="aligncenter size-full wp-image-603" title="wordpress-seo-optimization-image-2" src="http://techlive.org/wp-content/uploads/2010/01/wordpress-seo-optimization-image-2.png" alt="" width="500" height="252" /></p>
<p>Tendo como base o tema padrão, a otimização pode ser feita da seguinte forma:</p>
<ol>
<li>Abra o arquivo header.php e procure pelas linhas de código referentes ao header do seu blog:

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;div id=&quot;header&quot; role=&quot;banner&quot;&gt;
    &lt;div id=&quot;headerimg&quot;&gt;
        &lt;h1&gt;&lt;a href=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>/&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/a&gt;&lt;/h1&gt;
        &lt;div class=&quot;description&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'description'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre></div></div>

</li>
<li>Substitua por:

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;div id=&quot;header&quot; role=&quot;banner&quot;&gt;
    &lt;div id=&quot;headerimg&quot;&gt;
        <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> is_single<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>? <span style="color: #0000ff;">'&lt;div id=&quot;blogtitle&quot;&gt;'</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'&lt;h1 id=&quot;blogtitle&quot;&gt;'</span> <span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
            &lt;a href=&quot;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'home'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>/&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/a&gt;
        <span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> is_single<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>? <span style="color: #0000ff;">'&lt;/div&gt;'</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'&lt;/h1&gt;'</span> <span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
        &lt;div class=&quot;description&quot;&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'description'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre></div></div>

</li>
<li>E no arquivo single.php, mude a tag H2 por H1. Procure por:

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;h2&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> the_title<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>&lt;/h2&gt;</pre></div></div>

</li>
<li>Substitua por:

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&lt;h1&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> the_title<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>&lt;/h1&gt;</pre></div></div>

</li>
</ol>
<p>Com essa pequena alteração todas as sua páginas "simples", ou seja, todos os seus posts terão tags H1 no título. E no restante das páginas, o H1 continuará no header com o nome do blog.</p>
<p><em><strong>Nota: É importante lembrar que a estrutura varia muito de tema pra tema. E lembre-se de consertar seu CSS depois das mudanças. <img src='http://techlive.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/wordpress/seo-no-wordpress-1-otimizando-os-titulos-dos-posts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Configurando o XDebug no PHP e usando o Netbeans para fazer o debugging</title>
		<link>http://techlive.org/php/configurando-o-xdebug-no-php-e-usando-o-netbeans-para-fazer-o-debugging/</link>
		<comments>http://techlive.org/php/configurando-o-xdebug-no-php-e-usando-o-netbeans-para-fazer-o-debugging/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 22:34:45 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=581</guid>
		<description><![CDATA[Aprenda como configurar o XDebug no PHP e como aproveitar o suporte que o Netbeans dá a essa ferramenta.]]></description>
			<content:encoded><![CDATA[<p>Conforme prometido no <a href="http://techlive.org/programacao/php-programacao/montando-um-ambiente-completo-de-desenvolvimento-php-no-windows/" target="_blank">artigo anterior</a>, vamos ver como configurar um sistema de debug de aplicações PHP. Para isso, vamos usar o Xdebug e aproveitar o suporte que o próprio Netbeans dá a essa ferramenta. Vamos lá:</p>
<h3>Instalando o Xdebug no PHP</h3>
<ol>
<li>Primeiro, faça <a href="http://www.xdebug.org/download.php" target="_blank">download</a> do arquivo <em>.dll</em> do Xdebug, de acordo com sua versão do PHP.</li>
<li>Coloque a DLL dentro do diretório <em>/ext</em>, que deve ficar dentro do diretório de instalação do PHP. Caso você use o <a href="http://www.easyphp.org/" target="_blank">EasyPHP</a>, o diretório é <em>C:\Program Files\EasyPHP[VERSÃO]\php\ext</em>.</li>
<li>Abra seu <em>php.ini</em> para edição. Agora insira as seguintes linhas no final do arquivo:

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>XDebug<span style="">&#93;</span></span>
<span style="color: #000099;">zend_extension</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;C:\Program Files\EasyPHP[VERSÃO]\php\ext\php_xdebug-VERSÃO_DO_XDEBUG.dll&quot;</span>
xdebug.remote_enable<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1</span>
xdebug.remote_host<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">127.0.0.1</span>
xdebug.remote_port<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">9000</span>
xdebug.remote_handler<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">dbgp</span>
xdebug.profiler_enable<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1</span>
xdebug.profiler_output_dir<span style="color: #000066; font-weight:bold;">=</span><span style="color: #933;">&quot;c:\WEB\xdebug&quot;</span></pre></div></div>

<p>Note que você precisa editar as linhas de acordo com a sua configuração.</li>
<li>Reinicie o Apache.</li>
<li>Agora rode um <em><a href="http://br.php.net/manual/pt_BR/function.phpinfo.php" target="_blank">phpinfo()</a></em>. No caso do EasyPHP, abra em seu navegador o endereço <em>http://localhost/home/phpinfo.php</em>.</li>
<li>Se tudo estiver certo, o phpinfo deve exibir uma categoria com as configurações do Xdebug.</li>
</ol>
<p><em><strong>Dica:</strong></em> Caso você não tenha sucesso na primeira tentativa, tente outra DLL.</p>
<p><strong><em>Outra dica:</em></strong> Antes de instalar, você pode rodar um <em>phpinfo()</em> e verificar com qual compilador seu PHP foi construido. O EasyPHP com PHP 5.3 usa o MSVC6, logo o Xdebug deve ser 5.3 VC6.</p>
<h3>Configurando o Netbeans para usar o Xdebug</h3>
<p>No Netbeans, vá em <em>Ferramentas &gt; Opções &gt; PHP &gt; Geral</em>. Agora, em <em>Linha de comando</em>, digite o caminho do interpretador PHP. Se você usa o EasyPHP, o caminho deve ser <em>C:\Program Files\EasyPHP5.3.0\php\php.exe</em>.</p>
<p>Certifique-se também que em <em>Depuração &gt; Porta do depurador</em> está configurado a mesma porta setada no php.ini. No nosso caso, a porta 9000.</p>
<p>Reinicie o servidor Apache e pronto, XDebug e Netbeans pronto para uso. Em breve farei alguns artigos demonstrando qual a utilidade do debugging, como fazer, e algumas técnicas interessantes para testes. <img src='http://techlive.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>E não deixe de ler o artigo </strong><a href="http://netbeans.org/kb/docs/php/debugging.html" target="_blank"><strong>Debugging PHP Source Code in the NetBeans IDE</strong></a><strong> (em inglês), que explica como funciona o debug <em>built-in</em> do Netbeans.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/php/configurando-o-xdebug-no-php-e-usando-o-netbeans-para-fazer-o-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Montando um ambiente completo de desenvolvimento PHP no Windows</title>
		<link>http://techlive.org/php/montando-um-ambiente-completo-de-desenvolvimento-php-no-windows/</link>
		<comments>http://techlive.org/php/montando-um-ambiente-completo-de-desenvolvimento-php-no-windows/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 22:27:32 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[ambiente]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[easyphp]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[notepad]]></category>
		<category><![CDATA[phpmyadmin]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=555</guid>
		<description><![CDATA[Ter um ambiente local para desenvolvimento e testes é essencial pra qualquer desenvolvedor, de qualquer linguagem. No PHP não é diferente. Então, se você ainda não tem um ambiente instalado - ou se você quer experimentar coisas novas -, vou demonstrar como reproduzir o ambiente que eu utilizo.
PHP, Apache, MySQL e PHPMyAdmin = EasyPHP
Nada de [...]]]></description>
			<content:encoded><![CDATA[<p>Ter um ambiente local para desenvolvimento e testes é essencial pra qualquer desenvolvedor, de qualquer linguagem. No PHP não é diferente. Então, se você ainda não tem um ambiente instalado - ou se você quer experimentar coisas novas -, vou demonstrar como reproduzir o ambiente que eu utilizo.</p>
<h2>PHP, Apache, MySQL e PHPMyAdmin = EasyPHP</h2>
<p>Nada de Wamp, Xampp, ou qualquer outro. Bom mesmo é o EasyPHP (na minha opinião, é claro). <a href="http://www.easyphp.org/" target="_blank">Baixe-o</a>, instale e vamos fazer alguns ajustes:</p>
<h3>Configure o EasyPHP para sempre executar como administrador</h3>
<p>Se você usa o Vista <del datetime="2010-01-23T18:07:18+00:00">(morra)</del> ou o Windows 7, você precisa executar o EasyPHP como administrador. Caso contrário ele não irá funcionar corretamente.</p>
<p>Para isso, clique com o botão direito no atalho do EasyPHP. Em <em>Propriedades</em>, vá até a aba <em>Compatibilidade</em> e clique em <em>Alterar as configurações de todos os usuários</em>, deve aparecer uma nova janela. Em <em>Nível de privilégio</em>, marque <em>Executar este programa como administrador</em>. Clique em <em>Ok </em>e <em>Ok</em> novamente.</p>
<h3>Ativar algumas extensões do PHP</h3>
<p>Edite o arquivo <em>php.ini</em>, que - numa instalação padrão - fica em <em>C:\Program Files\EasyPHP[VERSÃO]\conf_files</em> e descomente as seguintes linhas:</p>
<ul>
<li>extension=php_gettext.dll - Extensão do Gettext, útil para <strong>l10n </strong>(Internacionalização)</li>
<li>extension=php_pdo_mysql.dll - Driver do PDO que oferece suporte ao MySQL</li>
<li><strong>UPDATE: </strong>Descomente também a linha <em>extension=php_curl.dll</em>, que dá suporte ao cURL</li>
</ul>
<p>Procure também pela <em>short_open_tag </em>e a defina como <em>Off</em>. <a href="http://techlive.org/programacao/php-programacao/porque-voce-nao-deve-usar-as-short-tags-do-php/" target="_blank">Odeio short tags</a>. <img src='http://techlive.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h3>Ajustes no Apache</h3>
<p>Antes, crie um diretório em <em>C:/</em> (ou na sua unidade do sistema) chamado <em>WEB</em>. Este será seu <em>DocumentRoot</em>. Agora edite o <em>httpd.conf</em>, que fica no mesmo diretório do <em>php.ini:</em></p>
<ul>
<li><em><span style="font-style: normal;">Procure por <em>DocumentRoot</em> e mude o caminho para <em>C:/WEB</em></span></em></li>
<li>Procure também por <em>&lt;Directory "${path}/www"&gt;</em> e altere para <em>&lt;Directory "C:/WEB"&gt;</em></li>
<li>Descomente a linha <em>LoadModule rewrite_module modules/mod_rewrite.so </em>- este é o famoso mod_rewrite do Apache <img src='http://techlive.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p>Tente executar o EasyPHP e certifique-se que está tudo certo. Vamos ao próximo item...</p>
<h2>IDE</h2>
<p>Eu nunca fui fã de IDEs para desenvolvimento. Acredito que elas, se usadas de forma massiva, são ruins para a formação de um desenvolvedor. Sempre utilizei ferramentas simples, como Notepad++, E Text Editor, Gedit, etc. Já usei até o Geany por algum tempo. <img src='http://techlive.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Porém, o tempo vai passando e você acaba esquecendo de nomes de funções, métodos e classes - são tantas linguagens, procedimentos, funções, que não há memória que suporte tudo - e procurar na documentação é uma completa perda de tempo. Foi aí que resolvi procurar uma IDE simples, não intrusiva, que pudesse me auxiliar no dia-a-dia. E encontrei o maravilhoso Netbeans. Então <a href="http://netbeans.org/downloads/index.html" target="_blank">baixe o Netbeans</a> com o pacote PHP (ou completo, você decide) e instale-o.</p>
<p>Não fiz nenhuma mudança na configuração do Netbeans, somente nas cores e fontes. Mas isso fica a gosto de cada um. <img src='http://techlive.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Ferramenta de controle de versão: GIT</h2>
<p>Muitos desenvolvedores estão começando a usar GIT. Ele é simplesmente fantástico, e faz muito bem o trabalho de controle de versões. Na minha opinião, ele é muito superior ao SVN. Se você deseja colaborar com projetos Open Source, ou mesmo criar projetos próprios, recomendo - e muito - sua utilização.</p>
<p>Existe um port que funciona muito bem em todas as versões do Windows, e não precisa do Cygwin. Faça o download da última versão <a href="http://code.google.com/p/msysgit/downloads/list" target="_blank">aqui</a>. Pra aprender como o GIT funciona recomendo a leitura dos artigos do <a href="http://akitaonrails.com/" target="_blank">Akita</a>, principalmente o <em><a href="http://akitaonrails.com/2008/4/3/micro-tutorial-de-git" target="_blank">Micro tutorial de Git</a></em>.</p>
<h2>Editor de texto simples</h2>
<p>Complementando a IDE, sempre utilizo um editor simples pra edições rápidas. Quando você precisa fazer pequenas edições em arquivos, não há necessidade de abrir a IDE e aguardar ela carregar, certo? Pra isso eu uso o Notepad++, que pode ser baixado <a href="http://notepad-plus.sourceforge.net/br/site.htm" target="_blank">aqui</a>.</p>
<p>Bem, este é o meu ambiente PHP. Já passei por diversas configurações, ajustes, programas e IDEs... acredito que, no Windows, esta seja a melhor configuração (pelo menos pra mim é <img src='http://techlive.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ). Espero que seja pra você também. <img src='http://techlive.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em><strong>Nota:</strong></em> Falta um item, que é o debug de aplicações PHP. Mas vou deixar isto para um próximo artigo, já que este ficou um pouco extenso.</p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/php/montando-um-ambiente-completo-de-desenvolvimento-php-no-windows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Porque você NÃO deve usar as short tags do PHP</title>
		<link>http://techlive.org/php/porque-voce-nao-deve-usar-as-short-tags-do-php/</link>
		<comments>http://techlive.org/php/porque-voce-nao-deve-usar-as-short-tags-do-php/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 06:46:43 +0000</pubDate>
		<dc:creator>Lenon Marcel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[iniciantes]]></category>
		<category><![CDATA[long]]></category>
		<category><![CDATA[long tag]]></category>
		<category><![CDATA[short]]></category>
		<category><![CDATA[short tag]]></category>
		<category><![CDATA[tag curta]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://techlive.org/?p=520</guid>
		<description><![CDATA[Saiba porque as tags curtas de abertura do PHP devem ser evitadas.]]></description>
			<content:encoded><![CDATA[<p>Um iniciante em PHP, quando descobre as short tags (ou tags curtas, tags de atalho, etc), as usa sem se preocupar com o amanhã. E é aí que ele começa seu caminho para se tornar um programador ruim. E vagabundo também. #prontofalei</p>
<p>As short tags do PHP<em> <strong>NUNCA DEVEM SER USADAS</strong></em>. Porque não?</p>
<p>Porque o php.ini deve ter a opção <em>short_open_tag = On</em> definida. Ou seja, se o php.ini do seu cliente estiver com essa opção desativada, <del datetime="2010-01-23T05:53:33+00:00">sifu perdeu preybóy</del> seu código não irá funcionar. <img src='http://techlive.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Então, se você deseja escrever um código compatível e não ter nenhuma dor de cabeça futura, use a única tag de abertura que deveria existir no PHP: <em>&lt;?php echo 'Essa'; ?&gt;</em>.</p>
<p>Esqueça:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Sou noob'</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;?=</span> <span style="color: #0000ff;">'Sou mais noob ainda'</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;%</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Estou programando na linguagem errada'</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">%&gt;</span> // ASP Tags, ECA!</pre></div></div>

<p>E lembre-se somente disto:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Sou O cara, ABS'</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Mais um dado importante <em>for the win</em>: no PHP 6 as short tags serão desativadas por padrão - ou talvez até nem serão suportadas, está ocorrendo uma discussão a respeito -, então é bom acostumar-se.</p>
<p>Fica a dica e o puxão de orelha, principalmente pro pessoal que colabora com o mundo Open Source. <img src='http://techlive.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://techlive.org/php/porque-voce-nao-deve-usar-as-short-tags-do-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
