<?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; Google</title>
	<atom:link href="http://blog.klaus.pro.br/tags/google/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>O progresso dos novos navegadores</title>
		<link>http://blog.klaus.pro.br/2009/ler/o-progresso-dos-novos-navegadores/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/o-progresso-dos-novos-navegadores/index.html#comments</comments>
		<pubDate>Mon, 02 Mar 2009 22:54:58 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desempenho]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Vídeos]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=219</guid>
		<description><![CDATA[Este texto é baseado (uma nota mental pública e estruturada, digamos) na apresentação &#8220;Performance Improvements in Browsers&#8221; feita por &#8220;John Resig&#8220;, que é ninguém menos que o pai da famosa biblioteca jQuery. Abaixo está o vídeo com a apresentação feita (aproximadamente 1h) e na sequência algumas notas e comentários sobre os temas apresentados. Abas separadas [...]]]></description>
			<content:encoded><![CDATA[<p>Este texto é baseado (uma nota mental pública e estruturada, digamos) na apresentação &#8220;<a href="http://ejohn.org/blog/talk-performance-improvements-in-browsers/"><em>Performance Improvements in Browsers</em></a>&#8221; feita por &#8220;<a href="http://ejohn.org/">John Resig</a>&#8220;, que é ninguém menos que o pai da famosa biblioteca <a href="http://jquery.com/">jQuery</a>.</p>
<p>Abaixo está o <a href="http://www.youtube.com/watch?v=13-3VMzfU3Y">vídeo com a apresentação</a> feita (aproximadamente 1h) e na sequência algumas <strong>notas e comentários sobre os temas apresentados</strong>.</p>
<div class="videos"><object width="425" height="344" data="http://www.youtube.com/v/13-3VMzfU3Y&amp;hl=pt-br&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/13-3VMzfU3Y&amp;hl=pt-br&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></div>
<h3 class="subtitles">Abas separadas por processos</h3>
<p>Este é um fato que certamente você deve conhecer. Você está lá navegando tranquilamente com uma <strong>dezena (ou mais =) de abas abertas</strong>&#8230; Daí que você resolve acessar um site com um Javascript mal escrito, com uma animação em que o <a href="http://www.adobe.com/products/flashplayer/">Flash Player</a> se revolta e lá foi, o navegador inteiro congela e não resta outra opção senão matar o processo. Claro que a maioria dos navegadores traz opções para <strong>restaurar a seção anterior</strong> mas não deixa de ser bastante incômodo.</p>
<p>A separação das abas por processos permitiria <strong>matar (encerrar) apenas a aba problemática</strong>, mantendo as outras abas isoladas. Isso por si só já seria uma grande vantagem da separação por abas mas ainda há uma segunda vantagem também bastante interessante! =)</p>
<p>Com a separação em diversos processos o sistema operacional pode <strong>gerenciar melhor o processamento</strong>, alocando mais recursos para as partes onde é realmente necessário, sem congelar as outras partes do navegador.</p>
<p>Vale notar que essa divisão em processos distintos causa um aumento do consumo do memória sim mas, como a quantidade de memória disponível nos PCs atuais (mesmo para os &#8220;PCs de prateleira&#8221;) está deixando de ser um gargalo para o desempenho dos computadores, é de se esperar que os programas passem a fazer alocações maiores de memória. Mais ou menos como o princípio da <strong>lei da oferta e da demanda</strong>.</p>
<h3 class="subtitles">Linearização das instruções de funções</h3>
<p>O termo em inglês acho que permite um entendimento melhor: &#8220;<strong>&#8216;<a href="http://en.wikipedia.org/wiki/Inline_function">function inlining</a></strong>&#8220;. Essa é uma característica que, por exemplo, C++ possui. Usando essa propriedade o compilador pode trocar a chamada de uma função pelo corpo da função, fazendo com que a execução das instruções ocorra <strong>sem o <em>overhead</em> de chamar uma função</strong>.</p>
<p>Além disso, pelo código exibido nos <em>slides</em> parece que, diferentemente do C++, você não precisa dar uma dica para o compilador na hora de escrever a função indicando que a função é candidata ao &#8220;<em>inlining</em>&#8220;.</p>
<h3 class="subtitles">Rede</h3>
<p>Aqui vale destacar o <strong>aumento do número de <em>downloads</em> simultâneos para um mesmo domínio</strong>. Com o IE 7 ainda temos o limite de dois downloads mas, felizmente o IE 8 (beta) já tratá um <strong>limite três vezes maior</strong>, de <a href="http://www.microsoft.com/windows/internet-explorer/beta/readiness/developers-new.aspx#ajax">seis <em>downloads</em> simultâneos para o mesmo domínio</a>. A última versão dos demais navegadores já possui um valor de seis ou sete <em>downloads</em>.</p>
<p>Outro recurso bem legal, e este é uma boa ideia da Microsoft, é o <strong>atributo &#8220;defer&#8221; para a <em>tag</em> &lt;script&gt;</strong>. Esse atributo indica para o navegador que ele pode continuar a <strong>renderizar a página sem esperar o arquivo Javascript</strong> referenciado carregar. O atributo já funcionava no IE e vai funcionar nas novas versões do Firefox e Opera.</p>
<h3 class="subtitles">window.postMessage</h3>
<p>O método <strong>window.postMessage</strong> me chamou a atenção. Com ele será possível a <strong>comunicação entre páginas de domínios distintos</strong> de forma bem simples. O princípio é o seguinte: a página remetente da mensagem irá tentar enviar a mensagem para, por exemplo, um <em>iframe</em> destinatário. Este <em>iframe</em> irá verificar se o remetente é alguém que ele conhece para então aceitar a mensagem e executar alguma ação.</p>
<p>A página que receberá as mensagens pode &#8220;ouvir&#8221; os <strong>eventos de mensagens</strong> usando o tradicional método <a href="https://developer.mozilla.org/En/DOM/Element.addEventListener">addEventListener</a>. Verificando a propriedade <em>origin</em>, a página receptora pode <strong>descobrir pelo domínio se a mensagem está vindo de um destinatário conhecido ou não</strong>.</p>
<h3 class="subtitles">Ajax entre domínios diferentes</h3>
<p>Aquele sonho de fazer requisições Ajax entre os N domínios da sua aplicação está prestes a se realizar. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Adicionando um cabeçalho (<em>header</em>) na resposta da requisição Ajax é possível especificar uma origem (além do próprio domínio) de onde aquela requisição pode ser atendida com segurança. O nome deste cabeçalho é &#8220;<strong>Access-Control-Allow-Origin</strong>&#8221; e está <a href="https://developer.mozilla.org/En/HTTP_Access_Control">melhor descrito nesta página</a>.</p>
<h3 class="subtitles">document.querySelectorAll</h3>
<p>Se você já usou a jQuery sabe como <strong>é prático encontrar os elementos da página usando a sintaxe de CSS</strong>. Melhor ainda se encontrar esses elementos usando a sintaxe de CSS seja possível de ser <strong>feito usando um método nativo do navegador</strong>. É isso que o método <a href="https://developer.mozilla.org/En/DOM/Document.querySelectorAll">document.querySelectorAll</a> permitirá. O melhor de tudo é que as próximas versões do IE, Firefox, Opera e Safari já trarão este método disponível.</p>
<h3 class="subtitles">Visual e CSS</h3>
<p>Adoradas por 10 em cada 10 <em>webdesigners</em>, as <strong>bordas redondas vieram pra ficar</strong>. =) Apesar de os navegadores trazerem implementações com nomes diferentes, todas as implementações funcionam bem. Ou seja, juntando essas propriedades: -moz-border-radius, -webkit-border-radius, -khtml-border-radius e <a href="http://www.w3.org/TR/css3-background/#the-border-radius">border-radius</a> as bordas redondas saem com facilidade.</p>
<p><strong>Sombras também estarão disponíveis</strong>. Nesta página há vários <a href="http://maettig.com/code/css/text-shadow.html">exemplos de uso da propriedade text-shadow</a>.</p>
<p>Outro recurso que certamente vai ser muito usado (e provavelmente muito mal usado também <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) é a possibilidade de se usar <strong><a href="http://ejohn.org/apps/fontface/blok.html">fontes personalizadas na página</a></strong>. Por fontes personalizadas entenda fontes que não estão instaladas na sua máquina. Coisa que já era possível de se fazer no Flash, agora também com CSS.</p>
<p>Além disso, há uma série de <a href="http://www.the-art-of-web.com/css/css-animation/">animações</a> que estarão disponíveis, por enquanto, para Firefox e Safari.</p>
<h3 class="subtitles">Desenho</h3>
<p>O objeto Canvas permite a renderização de elementos numa superfície 2D usando retas, curvas, arcos e/ou círculos. No <a href="https://developer.mozilla.org/">MDC</a> tem um <a href="https://developer.mozilla.org/En/Canvas_tutorial">tutorial bem bacana sobre Canvas</a>. Até me arrisquei a fazer uma &#8220;arte&#8221;: =)</p>
<pre class="javascript"><code><span class="co1">// &lt;canvas id="draw-area" width="150" height="150"&gt;&lt;/canvas&gt; no HTML</span>
<span class="kw2">var</span> canvas = document.<span class="me1">getElementById</span><span class="br0">(</span> <span class="st0">"draw-area"</span> <span class="br0">)</span>;
<span class="kw1">if</span><span class="br0">(</span> !canvas.<span class="me1">getContext</span> <span class="br0">)</span>
<span class="br0">{</span>
  <span class="kw1">return</span>;
<span class="br0">}</span>
<span class="kw2">var</span> context = canvas.<span class="me1">getContext</span><span class="br0">(</span> <span class="st0">"2d"</span> <span class="br0">)</span>;

context.<span class="me1">beginPath</span><span class="br0">(</span><span class="br0">)</span>;
<span class="kw2">var</span> side = <span class="nu0">150</span>;
<span class="kw2">var</span> offset = <span class="nu0">-4</span>;
<span class="kw2">var</span> i = <span class="nu0">0</span>;
<span class="kw1">while</span><span class="br0">(</span> <span class="kw2">true</span> <span class="br0">)</span>
<span class="br0">{</span>
  <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">0</span> <span class="br0">)</span>
  <span class="br0">{</span>
    <span class="kw2">var</span> x = offset + <span class="nu0">4</span>;
    context.<span class="me1">lineTo</span><span class="br0">(</span> x, offset <span class="br0">)</span>;
    offset = x;
    <span class="kw1">if</span><span class="br0">(</span> offset + <span class="nu0">4</span> &gt; <span class="nu0">78</span> <span class="br0">)</span> <span class="co1">// hard-coded mesmo ;P</span>
    <span class="br0">{</span>
      <span class="kw1">break</span>;
    <span class="br0">}</span>
  <span class="br0">}</span>
  <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">1</span> <span class="br0">)</span>
  <span class="br0">{</span>
    context.<span class="me1">lineTo</span><span class="br0">(</span> offset, side - offset <span class="br0">)</span>;
  <span class="br0">}</span>
  <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">2</span> <span class="br0">)</span>
  <span class="br0">{</span>
    context.<span class="me1">lineTo</span><span class="br0">(</span> side - offset, side - offset <span class="br0">)</span>;
  <span class="br0">}</span>
  <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">(</span> i % <span class="nu0">4</span> == <span class="nu0">3</span> <span class="br0">)</span>
  <span class="br0">{</span>
    context.<span class="me1">lineTo</span><span class="br0">(</span> side - offset, offset <span class="br0">)</span>;
  <span class="br0">}</span>
  i++;
<span class="br0">}</span>
<span class="co1">//context.closePath();</span>
context.<span class="me1">stroke</span><span class="br0">(</span><span class="br0">)</span>;</code></pre>
<p>Outro detalhe importante é que o Canvas permitirá também a <strong>inserção de vídeos dentro dele</strong>.</p>
<h3 class="subtitles">JSON nativo</h3>
<p>Atualmente, ao receber uma <em>string</em> em <a href="https://developer.mozilla.org/En/JSON">JSON</a> você precisa usar um <a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval#section_6">eval</a> para recuperar o objeto original. <strong>O eval é conhecidamente lento</strong>, até pelo fato de ser um método genérico, mas era a melhor saída para se ter acesso às informações contidas na <em>string</em> JSON mas, isso vai mudar!</p>
<p>Agora teremos métodos nativos para codificação e decodificação no formato JSON. A única dúvida que me restou é sobre o nome dos métodos. Nos slides os métodos se chamam <strong>encode e decode</strong>, já na <a href="https://developer.mozilla.org/En/Using_JSON_in_Firefox">página do MDC</a> e no <a href="http://wiki.ecmascript.org/doku.php?id=es3.1:json_support">wiki do ECMAScript</a> os métodos se chamam <strong>parse e stringify</strong>, respectivamente.</p>
<h3 class="subtitles">E por fim&#8230;</h3>
<p>&#8230; fico na torcida pra que as novas versões desses navegadores tenham uma rápida adoção por parte dos usuários. <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/2009/ler/o-progresso-dos-novos-navegadores/index.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Feedback positivo sim senhor</title>
		<link>http://blog.klaus.pro.br/2009/ler/feedback-positivo-sim-senhor/index.html</link>
		<comments>http://blog.klaus.pro.br/2009/ler/feedback-positivo-sim-senhor/index.html#comments</comments>
		<pubDate>Mon, 05 Jan 2009 20:00:51 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Livros]]></category>
		<category><![CDATA[Teoria]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=179</guid>
		<description><![CDATA[Hoje eu lia o livro &#8220;The Ruby Way&#8221; quando me deparei com a seguinte frase: &#8220;Perfection is achieved, not when there is nothing left to add, but when there is nothing left to take away&#8220;, frase atribuída a Antoine de St. Exupery. Refletindo um pouco sobre ela lembrei-me de um artigo que eu havia lido [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje eu lia o livro &#8220;<a href="http://www.amazon.com/Ruby-Way-Second-Addison-Wesley-Professional/dp/0672328844/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1231184372&amp;sr=8-1">The Ruby Way</a>&#8221; quando me deparei com a seguinte frase: &#8220;<em>Perfection is achieved, not when there is nothing left to add, but when there is nothing left to take away</em>&#8220;, frase atribuída a Antoine de St. Exupery.</p>
<p>Refletindo um pouco sobre ela lembrei-me de um artigo que eu havia lido há alguns meses atrás, um artigo que falava sobre a <a href="http://jonoscript.wordpress.com/2008/11/18/its-a-secret-to-everybody/">importância do <em>feedback</em> positivo</a>, numa associação entre jogos e programas de computador (ou <em>sites</em>).</p>
<p>Percebi que o artigo e a frase estavam, de alguma forma, conectados. Em termos de aplicações <em>web</em>, todos queremos uma aplicação Google-like: simples, clara e eficaz. E se você reparar bem, vai ver que as aplicações do Google (ou aquelas Google-like) possuem características que se encontram na frase ou no artigo acima.</p>
<p>Focando na <strong>importância do <em>feedback</em> positivo</strong>, veja esta parte: &#8220;<em>Hearing the discovery fanfare <strong>makes you feel smart</strong>(&#8230;)</em>&#8220;. É essa sensação que um usuário espera sentir ao usar um <em>site</em>, uma aplicação <em>web</em>. Ele deseja se sentir no comando, ter poderes, sentir que a aplicação entende o que ele está fazendo.</p>
<p>A falta de <em>feedback</em> conduz ao desapontamento. Um clique para enviar um formulário e vai processar uma imagem? Informe que a imagem está sendo processada! Um clique para gerar o PDF do artigo (que ainda não está em cache)? Informe que o artigo está sendo preparado! Conseguiu preencher o cadastro completo? Uma enorme mensagem de sucesso!</p>
<p>Ao invés de simplesmente qualificar seu usuário como <em>(l)user</em> <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , avalie se não é a falta de <em>feedback</em> positivo que faz o usuário esquecer de seu <em>site</em>. <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/2009/ler/feedback-positivo-sim-senhor/index.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tooltips no Google Maps</title>
		<link>http://blog.klaus.pro.br/2008/ler/tooltips-no-google-maps/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/tooltips-no-google-maps/index.html#comments</comments>
		<pubDate>Mon, 15 Dec 2008 16:44:36 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Code]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=173</guid>
		<description><![CDATA[Dizem por aí que a necessidade é a mãe da invenção e da criação e&#8230; eu, de fato, concordo com isso. Há duas semanas atrás eu fazia uma aplicação que exibia vários marcadores sobre um mapa e percebi que seria útil exibir uma espécie de tooltip sobre esses marcadores. A opção de usar o atributo [...]]]></description>
			<content:encoded><![CDATA[<p>Dizem por aí que <em>a necessidade é a mãe da invenção e da criação</em> e&#8230; eu, de fato, concordo com isso. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Há duas semanas atrás eu fazia uma aplicação que exibia vários marcadores sobre um <a href="http://maps.google.com/">mapa</a> e percebi que seria útil exibir uma espécie de <em>tooltip</em> sobre esses marcadores. A opção de usar o atributo <strong><em title="Isso, esse mesmo">title</em></strong> estava disponível sim, mas eu queria mais, queria poder personalizar essas <em>tooltips</em>!</p>
<p>Aproveitando-me do fato que a <a href="http://code.google.com/apis/maps/">API de Mapas do Google</a> já possui uma série de métodos para tratar eventos do <em>mouse</em>, resolvi criar algo que permitisse exibir <em>tooltips</em> personalizadas sobre os marcadores no mapa. O resultado? <a href="http://code.google.com/p/maptips/">MapTips</a>.</p>
<p>O resultado ficou bem legal e simples. Até criei uma <a href="http://www.klaus.pro.br/projects/maptips/index.html">página que explica o funcionamento e tem exemplos de utilização</a>.</p>
<p>Como talvez você já tenha notado, disponibilizei o código fonte no <a href="http://code.google.com/p/maptips/">Google Code</a>. Agora preciso criar mais algumas páginas de <em>wiki</em> e <em>bug tracking</em>. <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/2008/ler/tooltips-no-google-maps/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo! Hack Day: Eu fui!</title>
		<link>http://blog.klaus.pro.br/2008/ler/yahoo-hack-day-eu-fui/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/yahoo-hack-day-eu-fui/index.html#comments</comments>
		<pubDate>Mon, 10 Nov 2008 22:42:36 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=144</guid>
		<description><![CDATA[Conforme eu tinha dito no texto anterior, neste final de semana que passou aconteceu a versão brasileira do Yahoo! Hack Day. Foram 36 horas de desenvolvimento usando as ferramentas e APIs do Yahoo. Minha opinião sobre o evento? Sensacional, com todas as letras. Tudo bem organizado e dimensionado. Banda larga sem fio de ótima qualidade. [...]]]></description>
			<content:encoded><![CDATA[<p>Conforme <a href="http://blog.klaus.pro.br/2008/ler/yahoo-hack-day-eu-vou/index.html">eu tinha dito no texto anterior</a>, neste final de semana que passou aconteceu a versão brasileira do <a href="http://www.hackday.org/">Yahoo! Hack Day</a>. Foram 36 horas de desenvolvimento usando as <a href="http://developer.yahoo.com/">ferramentas e APIs do Yahoo</a>.</p>
<p>Minha opinião sobre o evento? <strong>Sensacional</strong>, com todas as letras. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Tudo bem organizado e dimensionado. Banda larga sem fio de ótima qualidade. Muita comida boa. Wii, <em>pinball, puffs</em> roxos gigantes e futebol de botão para se divertir entre um <em>hack</em> e outro.</p>
<p>Contrariando as idéias que eu havia mencionado anteriormente, fizemos um sistema bem interessante para cadastro de eventos diversos usando a API do <a href="http://maps.yahoo.com/">Yahoo! Maps</a> para facilitar a navegação e localização. Claro, ainda há várias idéias a serem implementadas e espero logo poder lançá-lo. =)</p>
<p>No projeto usamos <a href="http://rubyonrails.com/">Ruby on Rails</a>, Javascript e Ajax (<a href="http://jquery.com/">jQuery</a> na cabeça), além dos já esperados XHTML e CSS. Tentamos ainda fazer uma integração com a API para Flash mas não deu muito certo.</p>
<p>Uma pena que o tempo para apresentar o seu projeto foi realmente curto, apenas 1:30. Isso mesmo, um minuto e meio! Deu pra explicar a idéia mas não foi possível demonstrar nem 20% do que implementamos.</p>
<p>Como recordação deixo uma foto da apresentação:</p>
<dl class="images">
<dt><a class="thickbox" title="Klaus Paiva na apresentação do Yahoo! Hack Day" href="http://blog.klaus.pro.br/wp-content/uploads/2008/11/klaus-yahoo-hack-day-apresentacao.jpg"><img src="http://blog.klaus.pro.br/wp-content/uploads/2008/11/klaus-yahoo-hack-day-apresentacao-thumb.jpg" alt="Klaus Paiva na apresentação do Yahoo! Hack Day" /></a></dt>
<dd>Eu apresentando o projeto no Yahoo! Hack Day</dd>
</dl>
<p>Não sei se estou sendo injusto por fazer uma comparação entre o Yahoo! Hack Day e <a href="http://code.google.com/events/developerday/">Google Developer Day</a> mas, dessa vez o Yahoo! botou o Google no chinelo. <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Extra</strong>! E falando sobre os <em>puffs</em> roxos gigantes, <a href="http://vimeo.com/2199324">role de rir com esse vídeo</a>. <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/2008/ler/yahoo-hack-day-eu-fui/index.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Estatísticas Taperás &#8211; Agosto de 2008</title>
		<link>http://blog.klaus.pro.br/2008/ler/estatisticas-taperas-agosto-de-2008/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/estatisticas-taperas-agosto-de-2008/index.html#comments</comments>
		<pubDate>Mon, 01 Sep 2008 20:47:05 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Estatísticas]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Taperás]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=113</guid>
		<description><![CDATA[Como alguns de vocês aqui já sabem, o Taperás é um &#8220;filho meu&#8221; (mas não só meu) na web. E diferente deste blog, as estatísticas de visitação do Taperás dão uma idéia legal sobre os usuários de Internet em termos de navegadores, resolução de tela, etc&#8230; Pensando nisso eu resolvi fazer uma breve compilação dessas [...]]]></description>
			<content:encoded><![CDATA[<p>Como alguns de vocês aqui já sabem, o <a href="http://www.taperas.com/">Taperás</a> é um &#8220;filho meu&#8221; (mas não <strong>só</strong> meu) na <em>web</em>. E diferente deste blog, as estatísticas de visitação do Taperás dão uma idéia legal sobre os usuários de Internet em termos de navegadores, resolução de tela, etc&#8230;</p>
<p>Pensando nisso eu resolvi fazer uma breve compilação dessas informações disponíveis no <a href="http://www.google.com/analytics/">Google Analytics</a> e publicar aqui. Minha idéia com isso é acompanhar essas informações e deixar aqui disponível para quem mais possa se interessar.</p>
<p>Bom, chega de blábláblá e vamos ao que interessa. Primeiro a estatísticas sobre <strong>navegadores</strong>: (você pode clicar nas imagens para visualizá-las em tamanho real)</p>
<dl class="images">
<dt><a class="thickbox" title="Estatísticas de navegadores - Taperás - Agosto de 2008" href="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers.jpg"><img src="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers-thumb.jpg" alt="" /></a></dt>
<dd>Estatísticas de navegadores &#8211; Taperás &#8211; Agosto de 2008</dd>
</dl>
<p>Como já era de se esperar, o Internet Explorer (IE) domina mais de 80% dos acessos, seguido pelo <a href="http://www.getfirefox.com/">Firefox</a> com quase 20%. E se tratando do IE é bom saber as versões usadas nos acessos.</p>
<dl class="images">
<dt><a class="thickbox" title="Estatísticas de navegadores, versões do IE - Taperás - Agosto de 2008" href="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers-ie.jpg"><img src="http://blog.i.klaus.pro.br/taperas-stats/200808/browsers-ie-thumb.jpg" alt="" /></a></dt>
<dd>Estatísticas de navegadores, versões do IE &#8211; Taperás &#8211; Agosto de 2008</dd>
</dl>
<p>Infelizmente, o IE 7 responde apenas por metade dos acessos e o, horrível, IE 6 é responsável pela outra metade.</p>
<p>Outro parâmetro interessante é a <strong>resolução de tela</strong>:</p>
<dl class="images">
<dt><a class="thickbox" title="Estatísticas de resolução de tela - Taperás - Agosto de 2008" href="http://blog.i.klaus.pro.br/taperas-stats/200808/screen-resolutions.jpg"><img src="http://blog.i.klaus.pro.br/taperas-stats/200808/screen-resolutions-thumb.jpg" alt="" /></a></dt>
<dd>Estatísticas de resolução de tela &#8211; Taperás &#8211; Agosto de 2008</dd>
</dl>
<p>Mesmo o Taperás sendo um site acessado por um público <em>non-geek</em>, a resolução 1024&#215;768 é responsável por quase 60% dos acessos. E enquanto eu escrevia este texto fiquei pensando, qual será a resolução que o iPhone reporta? =)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/estatisticas-taperas-agosto-de-2008/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Search Masters 2008</title>
		<link>http://blog.klaus.pro.br/2008/ler/google-search-masters-2008/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/google-search-masters-2008/index.html#comments</comments>
		<pubDate>Fri, 22 Aug 2008 11:57:51 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[UOL]]></category>
		<category><![CDATA[Webmasters]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=104</guid>
		<description><![CDATA[Depois do Google Developer Day, agora é a hora do Google Search Masters 2008. No evento haverá palestras técnicas sobre a plataforma de busca do Google e também sobre as ferramentas disponíveis para webmasters. O evento é gratuito e você pode se inscrever ou obter mais informações na página do evento. Recebi a dica do [...]]]></description>
			<content:encoded><![CDATA[<p>Depois do <a href="http://code.google.com/intl/pt-BR/events/developerday/2008/home.html">Google Developer Day</a>, agora é a hora do <a href="http://www.googlesearchmasters08.com.br/">Google Search Masters</a> 2008. No evento haverá palestras técnicas sobre a plataforma de busca do Google e também sobre as ferramentas disponíveis para <em>webmasters</em>.</p>
<p>O evento é gratuito e você pode se inscrever ou obter mais informações na <a href="http://www.googlesearchmasters08.com.br/">página do evento</a>.</p>
<p>Recebi a dica do <a href="http://rufspace.com/">Fellipe Cicconi</a>, colega de trabalho aqui no UOL.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/google-search-masters-2008/index.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Livro &#8220;Make Easy Money With Google&#8221; &#8211; Eric Giguère &#8211; Resenha</title>
		<link>http://blog.klaus.pro.br/2008/ler/livro-make-easy-money-with-google-resenha/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/livro-make-easy-money-with-google-resenha/index.html#comments</comments>
		<pubDate>Tue, 27 May 2008 19:57:51 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[AdSense]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Livros]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://blog.klaus.pro.br/?p=73</guid>
		<description><![CDATA[Esta semana eu terminei de ler o livro &#8220;Make Easy Money With Google&#8221; (&#8220;fazendo dinheiro fácil com o Google&#8221;, numa tradução livre), uma leitura interessante e agradável devo dizer. O autor, Eric Giguère, escreve muito bem, trabalhando o livro como uma narrativa bem organizada. É um livro para iniciantes no mundo do AdSense ou para [...]]]></description>
			<content:encoded><![CDATA[<p><a class="bbli" style="float: left; margin: 0px 10px 10px 0px;" href="http://boo-box.com/link/aff:submarinoid/uid:248827/tags:easy+money+google"><img class="images-right" src="http://blog.klaus.pro.br/wp-content/uploads/2008/05/make-easy-money-with-google-book.jpg" alt="Capa do livro Make Easy Money With Google" /></a><script src="http://stable.boo-box.com/" type="text/javascript"></script>Esta semana eu terminei de ler o livro &#8220;<a class="bbli" href="http://boo-box.com/link/aff:submarinoid/uid:248827/tags:easy+money+google">Make Easy Money With Google<img class="bbic" src="http://boo-box.com/bbli" alt="[bb]" /></a><script src="http://stable.boo-box.com/" type="text/javascript"></script>&#8221; (&#8220;fazendo dinheiro fácil com o Google&#8221;, numa tradução livre), uma leitura interessante e agradável devo dizer.</p>
<p>O autor, Eric Giguère, escreve muito bem, trabalhando o livro como uma narrativa bem organizada. É um livro para iniciantes no mundo do AdSense ou para quem quer utilizar a internet para tentar ganhar algum dinheiro.  Recomendo também para aquela leitura agradável de final de semana, mesmo para desenvolvedores/blogueiros experientes.</p>
<p>O livro é dividido em 5 seções. Na primeira seção ele faz uma breve introdução sobre como o livro vai se organizar. A segunda seção já começa a tratar de um assunto bem apropriado: <strong>conteúdo</strong>. Enfatizando a geração de conteúdo único e bem elaborado.</p>
<p>A seção três, <em><strong>design</strong></em>, dá algumas dicas sobre como você poderia desenhar e montar seu site. A seção quatro explica em detalhes como o AdSense funciona, como os anúncios são exibidos em seu site e outras coisas mais. E o capítulo final, cinco, detalha algumas dicas  para, talvez, o mais difícil dos objetivos, gerar tráfego para seu site.</p>
<p>O autor até chega a dar umas dicas sobre <acronym title="Search Engine Optimization">SEO</acronym> (otimização para sites de buscas), mas isso certamente daria um outro livro. =) Recomendado!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2008/ler/livro-make-easy-money-with-google-resenha/index.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mãe-Google dando uma força para o Photoshop no Linux</title>
		<link>http://blog.klaus.pro.br/2008/ler/mae-google-dando-uma-forca-para-o-photoshop-no-linux/index.html</link>
		<comments>http://blog.klaus.pro.br/2008/ler/mae-google-dando-uma-forca-para-o-photoshop-no-linux/index.html#comments</comments>
		<pubDate>Fri, 22 Feb 2008 19:51:21 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Wine]]></category>

		<guid isPermaLink="false">http://wp.blog.klaus.pro.br/2008/ler/mae-google-dando-uma-forca-para-o-photoshop-no-linux/index.html</guid>
		<description><![CDATA[Se você usa Linux e faz sites certamente já pensou: &#8220;Bem que Photoshop® poderia rodar legal no Linux&#8230;&#8221;. Felizmente temos o Wine, a implementação da API do Windows®, numa descrição do próprio projeto. O Wine roda uma série de programas do Windows dentro do Linux porém, o Photoshop sempre funcionou (quando funciona&#8230;) com algumas limitações [...]]]></description>
			<content:encoded><![CDATA[<p>Se você usa Linux e faz sites certamente já pensou: &#8220;Bem que Photoshop® poderia rodar legal no Linux&#8230;&#8221;.</p>
<p>Felizmente temos o <a href="http://www.winehq.org/">Wine</a>, a implementação da API do Windows®, numa descrição do próprio projeto. O Wine roda uma série de programas do Windows dentro do Linux porém, o Photoshop sempre funcionou (quando funciona&#8230;) com algumas limitações ou problemas esporádicos.</p>
<p>A boa notícia é que a <a href="http://idgnow.uol.com.br/computacao_pessoal/2008/02/22/usuarios-do-sistema-operacional-linux-poderao-usar-o-photoshop/">mãe Google vai patrocinar o aprimoramento do desempenho do Photoshop no Linux</a>! Isso é fantástico! =)</p>
<p>Claro, vale lembrar que o projeto Wine até o presente momento já tem um bom progresso nesse sentido, inclusive é possível rodar o <a href="http://appdb.winehq.org/objectManager.php?sClass=version&amp;iId=2631">Photoshop CS2 no Wine</a>. Tenho ele rodando aqui e depois de algumas tentativas e acertos, garanto que funciona relativamente bem. <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/2008/ler/mae-google-dando-uma-forca-para-o-photoshop-no-linux/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apresentações online no Google Docs</title>
		<link>http://blog.klaus.pro.br/2007/ler/apresentacoes-ppt-online-no-google-docs/index.html</link>
		<comments>http://blog.klaus.pro.br/2007/ler/apresentacoes-ppt-online-no-google-docs/index.html#comments</comments>
		<pubDate>Tue, 18 Sep 2007 19:42:31 +0000</pubDate>
		<dc:creator>Klaus Paiva</dc:creator>
				<category><![CDATA[Textos]]></category>
		<category><![CDATA[Apresentações]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Slides]]></category>

		<guid isPermaLink="false">http://wp.blog.klaus.pro.br/2007/ler/apresentacoes-ppt-online-no-google-docs/index.html</guid>
		<description><![CDATA[O Google Docs agora permite a criação de apresentações de slides online! Para quem já gostava de criar documentos de texto ou planilhas, é uma grande adição. Vi a notícia do lançamento no BR-Linux.org. E para testar o produto nada melhor do que criar uma apresentação para apresentá-lo! (sic) Veja a apresentação como ficou. A [...]]]></description>
			<content:encoded><![CDATA[<p>O Google Docs agora permite a criação de apresentações de <em>slides online</em>! Para quem já gostava de criar documentos de texto ou planilhas, é uma grande adição.</p>
<p>Vi a <a href="http://br-linux.org/linux/google-docs-agora-com-apresentacoes">notícia do lançamento</a> no <a href="http://br-linux.org/">BR-Linux.org</a>. E para testar o produto nada melhor do que criar uma apresentação para apresentá-lo! (sic)</p>
<p><a href="http://docs.google.com/Present?docid=dhm5kq4d_13cbv3mv&amp;fs=true">Veja a apresentação como ficou</a>.</p>
<p>A interface ficou bem simples e tradicional, além de consistente com o visual do Google Docs. Você pode selecionar um tema para sua apresentação (existem várias opções prontas).</p>
<p>Ao criar um novo <em>slide</em> você pode selecionar um <em>layout</em> para ele. Os <em>layouts</em> são simples e vão atender apresentações mais simples. Não achei opções para inserir tabelas ou gráficos.</p>
<p>Você pode inserir imagens diretamente do seu computador para a apresentação. Ou seja, mesmo sem suporte a gráficos e tabelas, você pode inserí-los se eles forem uma imagem, ao menos.</p>
<p>Depois que terminar sua apresentação, você pode torná-la pública. Assim sendo, você poderá visualizar a apresentação de qualquer computador, diretamente pelo seu navegador. <a href="http://docs.google.com/Present?docid=dhm5kq4d_13cbv3mv&amp;fs=true">[exemplo]</a></p>
<p>Por fim, os atalhos de teclado e a integração com o botão direito do <em>mouse</em> dão o toque final. Se você tem uma apresentação para fazer, que tal usar o <a href="http://docs.google.com/">Google Docs</a> da próxima vez? <img src='http://blog.klaus.pro.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Ah, por falar em Google, estou concorrendo ao livro <a href="http://www.blogadao.com/ganhe-o-livro-google-adwords-a-arte-da-guerra/">Google Adwords &#8211; A Arte da Guerra</a> sorteado no <a href="http://www.blogadao.com/">Blogadão</a>. Participe você também!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.klaus.pro.br/2007/ler/apresentacoes-ppt-online-no-google-docs/index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
