<?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>Klaus Paiva &#187; Dicas</title>
	<atom:link href="http://blog.klaus.pro.br/tags/dicas/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.klaus.pro.br</link>
	<description>Idéias e desventuras de Klaus Paiva</description>
	<lastBuildDate>Mon, 12 Jul 2010 20:26:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>rel=&#8221;canonical&#8221; ou redirect 301?</title>
		<link>http://blog.klaus.pro.br/2009/ler/rel-canonical-ou-redirect-301/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/rel-canonical-ou-redirect-301/index.html#comments</comments>
		<pubDate>Tue, 29 Sep 2009 23:06:00 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[canonical]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=356</guid>
		<description><![CDATA[Pra quem não entendeu o motivo da questão no título deste texto, uma breve explicação: as duas opções são formas válidas para se definir qual é a versão &#8220;original&#8221; em casos de conteúdo duplicado. Mas se são duas formas diferentes de se chegar ao mesmo resultado, qual delas escolher? Há vantagens e desvantagens? Há casos [...]]]></description>
			<content:encoded><![CDATA[<p>Pra quem não entendeu o motivo da questão no título deste texto, uma breve explicação: as duas opções são formas válidas para se <strong>definir qual é a versão &#8220;original&#8221; em casos de conteúdo duplicado</strong>.</p>
<p>Mas se são duas formas diferentes de se chegar ao mesmo resultado, qual delas escolher? Há vantagens e desvantagens? Há casos em que só uma delas se aplica? São essas perguntas que eu tentarei responder aqui neste texto. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h3 class="subtitles">Entendendo o problema do conteúdo duplicado</h3>
<p>Para entender onde e como aplicar corretamente as soluções acima, é importante entender qual é o real problema com conteúdo duplicado. Para entender isso, vamos precisar de um exemplo: a página inicial desse <em>blog</em> encontra-se em <a href="../">http://blog.klaus.pro.br/</a> &#8211; mas nada impede que alguém faça um <em>link</em> para ela assim: <a href="../?home">http://blog.klaus.pro.br/?home</a>. Note que ambos os endereços funcionam perfeitamente.</p>
<p>No caso acima, os dois endereços exibem a (mesma) página inicial deste <em>blog</em>. Agora pense como um robô indexador, será que os dois endereços mostram o mesmo conteúdo porque alguém quer me enganar, dando a impressão de que há mais conteúdo do que realmente há no  <em>site</em>, <strong>ou</strong> simplesmente os dois endereços são considerados a mesma página pelo sistema do <em>site</em> em questão. E se os dois endereços realmente apontam para uma mesma página, qual deles eu devo considerar como &#8220;principal&#8221; ou &#8220;original&#8221;?</p>
<p>Para resolver essa ambiguidade e, de quebra, definir qual é a página &#8220;original&#8221;, as duas soluções acima podem ser empregadas.</p>
<h3 class="subtitles">Onde as duas soluções se aplicam</h3>
<p>Quando você está resolvendo a questão de conteúdo duplicado apenas dentro do domínio de seu <em>site</em>, as duas soluções são aplicáveis. Ou seja, usar a <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html"><em>meta tag canonical</em></a> ou um redirecionamento 301 resolve perfeitamente a questão, levando-se em conta a restrição de domínio acima.</p>
<p>Desta forma, para resolver o problema citado no começo deste texto usando a <em>meta tag canonical</em> bastaria eu colocar isso na página incial do meu <em>blog</em>:</p>
<pre class="html4strict"><code><span class="sc2"><span class="kw2">&lt;link</span> <span class="kw3">rel</span>=<span class="st0">"canonical"</span> <span class="kw3">href</span>=<span class="st0">"http://blog.klaus.pro.br/"</span> /<span class="kw2">&gt;</span></span></code></pre>
<h3 class="subtitles">Onde apenas a meta tag canonical se aplica</h3>
<p><strong>Nota</strong>: Este exemplo foi retirado <a href="http://videos.webpronews.com/2009/09/17/canonical-tag-vs-301-redirect/">deste vídeo</a>.</p>
<p>Se no seu <em>site</em> você possui uma versão &#8220;normal&#8221; da página e uma versão para impressão, muito provavelmente as páginas serão muito parecidas, a ponto de parecerem conteúdo duplicado para um indexador de conteúdo.</p>
<p>Se você colocar um redirecionamento 301 na página de impressão, nenhum usuário vai conseguir ver a página, o que definitivamente não é uma solução para o problema <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Já com a <em>meta canonical</em> você pode informar sem problemas que a página &#8220;normal&#8221; é a versão &#8220;original&#8221; daquele conteúdo.</p>
<h3 class="subtitles">Onde apenas um redirecionamento 301 (ou 302) se aplica</h3>
<p>A <em>meta canonical</em> não é válida (ou seja, ela é ignorada) quando a página referenciada encontra-se em outro domínio. Nesses casos, para indicar que o conteúdo original encontra-se em outro lugar, sua única opção é fazer um redirecionamento permanente ou temporário (301 ou 302, respectivamente) para o conteúdo &#8220;original&#8221;.</p>
<h3 class="subtitles">Conclusão</h3>
<p>Se você precisa resolver o problema de conteúdo duplicado em páginas de domínios diferentes, suas opções são os redirecionamentos 301 ou 302. Se ambas as páginas precisam ser acessíveis pois seu conteúdo é muito parecido mas não é igual, use a <em>meta tag canonical</em>.</p>
<p>É isso! <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2009/ler/rel-canonical-ou-redirect-301/index.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[rails] Renderizando uma view sem uma action específica</title>
		<link>http://blog.klaus.pro.br/2009/ler/rails-renderizando-uma-view-sem-uma-action/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/rails-renderizando-uma-view-sem-uma-action/index.html#comments</comments>
		<pubDate>Wed, 07 Jan 2009 16:57:54 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=182</guid>
		<description><![CDATA[Simples assim: def method_missing( method_name ) begin render :template =&#62; 'my_controller/' + method_name rescue ActionView::MissingTemplate =&#62; e render :text =&#62; "Ops, essa view não existe! (#{method_name})", :status =&#62; 404 end end Viva o method_missing! &#8220;Plus a mais&#8221;: Uma forma alternativa está no comentário abaixo.]]></description>
			<content:encoded><![CDATA[<p>Simples assim:</p>
<pre class="rails"><code>  <span class="kw1">def</span> method_missing<span class="br0">(</span> method_name <span class="br0">)</span>
    <span class="kw1">begin</span>
      <span class="kw5">render</span> <span class="re3">:template</span> =&gt; <span class="st0">'my_controller/'</span> + method_name
    <span class="kw1">rescue</span> <span class="re2">ActionView::MissingTemplate</span> =&gt; e
      <span class="kw5">render</span> <span class="re3">:text</span> =&gt; <span class="st0">"Ops, essa view não existe! (#{method_name})"</span>, <span class="re3">:status</span> =&gt; <span class="nu0">404</span>
    <span class="kw1">end</span>
  <span class="kw1">end</span></code></pre>
<p>Viva o <a href="http://weblog.jamisbuck.org/2006/12/1/under-the-hood-activerecord-base-find-part-3">method_missing</a>! <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><em><strong>&#8220;Plus a mais&#8221;</strong></em>: Uma forma alternativa está no comentário abaixo.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2009/ler/rails-renderizando-uma-view-sem-uma-action/index.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Personalizando a div.fieldWithErrors do Rails</title>
		<link>http://blog.klaus.pro.br/2008/ler/personalizando-a-div-fieldwitherrors-do-rails/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/personalizando-a-div-fieldwitherrors-do-rails/index.html#comments</comments>
		<pubDate>Fri, 08 Aug 2008 17:01:25 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=98</guid>
		<description><![CDATA[Dica rápida para o Rails. Sabe aquela div.fieldWithErrors que aparece em volta dos campos com erros de validação? Você pode alterá-la com facilidade e até sumir com ela de vez. =) O Nando Vieira publicou um texto ensinando como fazer div.fieldWithErrors desaparecer. Porém, no meu caso eu queria algum elemento indicando o erro, mas gostaria [...]]]></description>
			<content:encoded><![CDATA[<p>Dica rápida para o <a href="http://rubyonrails.com/">Rails</a>. Sabe aquela div.fieldWithErrors que aparece em volta dos campos com erros de validação? Você pode alterá-la com facilidade e até sumir com ela de vez. =)</p>
<p>O <a href="http://simplesideias.com.br/removendo-a-div-fieldwitherrors-no-rails/">Nando Vieira</a> publicou um texto ensinando <a href="http://simplesideias.com.br/removendo-a-div-fieldwitherrors-no-rails/">como fazer div.fieldWithErrors desaparecer</a>. Porém, no meu caso eu queria algum elemento indicando o erro, mas gostaria que ele fosse uma <em>tag</em> span, por exemplo.</p>
<p>A solução é essa:</p>
<pre class="rails"><code><span class="re2">ActionView::Base</span>.<span class="me1">field_error_proc</span> = <span class="kw4">Proc</span>.<span class="kw5">new</span> <span class="kw1">do</span> |html_tag, instance|
  <span class="st0">"&lt;span class=<span class="es0">\"</span>fieldWithErrors<span class="es0">\"</span>&gt;#{html_tag}&lt;/span&gt;"</span>
<span class="kw1">end</span></code></pre>
<p>Basta adicionar esse trecho de código no seu <em>config/environment.rb</em>. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/personalizando-a-div-fieldwitherrors-do-rails/index.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3 dicas de produtividade para desenvolvedores web</title>
		<link>http://blog.klaus.pro.br/2007/ler/3-dicas-de-produtividade-para-desenvolvedores-web/index.html</link>
		<comments>http://blog.klaus.pro.br/2007/ler/3-dicas-de-produtividade-para-desenvolvedores-web/index.html#comments</comments>
		<pubDate>Wed, 04 Jul 2007 19:18:40 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Organização]]></category>
		<category><![CDATA[Produtividade]]></category>

		<guid isPermaLink="false">http://wp.blog.klaus.pro.br/2007/ler/3-dicas-de-produtividade-para-desenvolvedores-web/index.html</guid>
		<description><![CDATA[Este post participa da promoção de aniversário do blog Efetividade.net. Neste breve post discuto algumas experiências e dicas simples que me ajudam a ter um dia-a-dia mais produtivo como desenvolvedor web. 1- Organize suas pastas e arquivos. Eu sei que parece ridículo dizer isso mas, já presenciei diversos casos como criar uma pasta temporária só [...]]]></description>
			<content:encoded><![CDATA[<p>Este post participa da <a href="http://www.efetividade.net/2007/06/29/promocao-aniversario/">promoção de aniversário</a> do blog <a href="http://www.efetividade.net/">Efetividade.net</a>. Neste breve post discuto algumas experiências e dicas simples que me ajudam a ter um dia-a-dia mais produtivo como desenvolvedor web.</p>
<p>1- <strong>Organize suas pastas e arquivos</strong>. Eu sei que parece ridículo dizer isso mas, já presenciei diversos casos como criar uma pasta temporária só pra fazer um trabalhinho rápido e depois, cadê a pasta?</p>
<p>Crie uma pasta projetos (ou algo do tipo) na sua pasta de usuário (&#8220;Meus Documentos&#8221; ou sua &#8220;<em>home</em>&#8220;) e dentro dela vá criando subpastas de acordo com os projetos que você está trabalhando.</p>
<p>2- <strong>Encontre um editor de códigos que faça mais por você</strong>. No meu dia-a-dia eu faço muito <a href="http://www.w3.org/MarkUp/">XHTML</a>, <a href="http://www.w3.org/Style/CSS/">CSS</a> e <a href="http://developer.mozilla.org/en/docs/JavaScript">Javascript</a> e é muito comum encontrar editores que apenas colorem códigos. Editores que autocompletam sua digitação economizam tempo e previnem distrações.</p>
<p>Existem uma série de editores com este perfil. Particularmente, embora eu não goste de <a href="http://java.sun.com/">Java</a>, eu uso o <a href="http://jedit.sf.net/">jEdit</a>. Quando estou fazendo códigos em <a href="http://www.python.org/">Python</a> ou <a href="http://www.ruby-lang.org/">Ruby</a> (on <a href="http://www.rubyonrails.com/">Rails</a>) costumo usar o <a href="http://www.gnome.org/projects/gedit/">gedit</a>.</p>
<p>3- <strong>Use algum aplicativo de calendário para agendar seus compromissos e tarefas</strong>. Esquecer de compromissos e tarefas é uma das coisas que mais me acontecessem. Mesmo quando eu recebo um aviso 15 minutos antes. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>O <a href="http://www.getthunderbird.com/">Mozilla Thunderbird</a> com a extensão <a href="https://addons.mozilla.org/en-US/thunderbird/addon/2313">Lightning</a> e o <a href="http://calendar.google.com/">Google Calendar</a> são duas excelentes opções (uma <em>desktop</em> e outra <em>online</em>, respectivamente) para gerenciar (e honrar) seus compromissos.</p>
<p><strong>Resumindo</strong>: Repare que todas as três dicas se baseiam num princípio essencial: <strong>organização</strong>. Isso é uma coisa que aprendi e aplico sempre que possível, quanto mais organizadas e definidas estiverem suas tarefas, compromissos e ambiente de trabalho, mais prazerosos estes serão! <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2007/ler/3-dicas-de-produtividade-para-desenvolvedores-web/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
