<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://cleber.net.br">
<channel>
 <title>Blog do Cleber</title>
 <link>http://cleber.net.br</link>
 <description />
 <language>pt-br</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BlogDoCleber" /><feedburner:info uri="blogdocleber" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/BlogDoCleber" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2FBlogDoCleber" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
 <title>IDs dos status do Twitter irão mudar</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/_cBVIE-gCIo/ids-dos-status-do-twitter-irao-mudar</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="150" height="92" alt="Twitter" src="http://cleber.net.br/sites/default/files/images/posts/teaser/twitter_0.jpg?1285000584" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Conforme anunciado por &lt;a href="http://twitter.com/themattharris" title="Twitter de Matt Harris"&gt;Matt Harris&lt;/a&gt;&amp;nbsp;(evangelista de desenvolvedores no Twitter)&amp;nbsp;no &lt;a href="http://groups.google.com/group/twitter-development-talk/browse_thread/thread/7982e3b037eeef95?pli=1" title="Status IDs are changing on 21st September"&gt;grupo de desenvolvedores do Twitter&lt;/a&gt;, a partir das 14 horas (horário de Brasília) do dia 23 (terça-feira), as IDs dos status dos&amp;nbsp;&lt;em&gt;tweets&lt;/em&gt; &lt;strong&gt;não serão mais sequenciais&lt;/strong&gt;. Irá entrar em ação um novo serviço de geração de IDs chamado Snowflake.&lt;/p&gt;
&lt;p&gt;Para a maioria dos desenvolvedores essas mudanças não serão percebidas e não serão necessárias mudanças nos aplicativos que fazem uso da&amp;nbsp;&lt;a href="http://dev.twitter.com/doc" title="Documentação da API do Twitter"&gt;API do Twitter&lt;/a&gt;. Parâmetros com&amp;nbsp;&lt;span class="codigo-fonte"&gt;max_id&lt;/span&gt;&amp;nbsp;e&amp;nbsp;&lt;span class="codigo-fonte"&gt;since_id&lt;/span&gt;&amp;nbsp;continuarão funcionando como esperado. No entanto, não será mais possível contar o número de&amp;nbsp;&lt;em&gt;tweets&lt;/em&gt;&amp;nbsp;subtraindo um ID do outro.
  &lt;!--break--&gt;
&lt;/p&gt;
&lt;p&gt;Alguns&amp;nbsp;pontos-chaves sobre a mudança:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Os IDs dos status serão únicos;&lt;/li&gt;
  &lt;li&gt;Os IDs dos status serão sempre incrementados.&amp;nbsp;&lt;em&gt;Tweets&lt;/em&gt;&amp;nbsp;criados a tarde terão ID maior do que aqueles criados de manhã;&lt;/li&gt;
  &lt;li&gt;A ordem dos IDs será mantida, permitindo a ordenação por IDs. A precisão da ordenação será de cerca de 1 segundo, o que significa que&amp;nbsp;&lt;em&gt;tweets&lt;/em&gt;&amp;nbsp;criados no mesmo segundo não terão nenhuma ordem;&lt;/li&gt;
  &lt;li&gt;Todos os métodos existentes na API continuarão funcionando do mesmo jeito de antes;&lt;/li&gt;
  &lt;li&gt;Os IDs dos status anteriores permanecerão inalterados;&lt;/li&gt;
  &lt;li&gt;Haverá um salto notável no valor numérico dos IDs dos status quando as mudanças ocorrerem.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Snowflake&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/floco-de-neve.jpg" alt="Floco de neve" title="Floco de neve" width="137" height="150" style="float: right;"&gt;O serviço Snowflake usa números inteiros de 64 bits sem sinal, que serão gerados com base no tempo. Eles são compostos de um carimbo de tempo, um número de trabalho e um número de sequencia.&lt;/p&gt;
&lt;p&gt;Um dos motivos da criação do Snowflake foi que, conforme o Twitter se afasta do banco de dados MySQL em direção ao banco de dados &lt;a href="http://cassandra.apache.org/" title="Apache Cassandra"&gt;Cassandra&lt;/a&gt;, é preciso uma nova maneira para gerar IDs. Isso por que o Cassandra não gera IDs sequencias, e nem deveria.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Alguns dos requisitos do Snowflake são:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Geração mínima de 10.000 IDs por segundo por processo;&lt;/li&gt;
  &lt;li&gt;Taxa de resposta de 2 ms (mais latência da rede);&lt;/li&gt;
  &lt;li&gt;Por se tratar de um serviço de alta disponibilidade, as máquinas que geram os IDs não devem ser coordenadas umas com as outras;&lt;/li&gt;
  &lt;li&gt;Os IDs devem ter um tamanho de 64 bits.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A solução para atender esses requisitos foi:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Servidor &lt;a href="http://incubator.apache.org/thrift/" title="Apache Thrift"&gt;Thrift&lt;/a&gt; (&lt;em&gt;framework&lt;/em&gt;&amp;nbsp;para o desenvolvimento de serviços escaláveis em várias linguagens) escrito na linguagem&amp;nbsp;&lt;a href="http://pt.wikipedia.org/wiki/Scala_(linguagem_de_programa%C3%A7%C3%A3o)" title="Artigo na Wikipédia sobre a linguagem de programação Scala"&gt;Scala&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;IDs compostos de:
    &lt;ul&gt;
      &lt;li&gt;tempo: 41 bits&lt;/li&gt;
      &lt;li&gt;ID configurado da máquina: 10 bits (permite o uso de 1024 máquinas)&lt;/li&gt;
      &lt;li&gt;número de sequencia: 12 bits (muda a cada 4096 por máquina)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deve-se usar o protocolo &lt;a href="http://pt.wikipedia.org/wiki/Network_Time_Protocol" title="Artigo da Wikipédia sobre o protoloco NTP"&gt;NTP&lt;/a&gt; (Network Time Protocol) para manter os relógios das máquinas precisos. Se o relógio da máquina atrasar, por exemplo, o Snowflake irá se recusar a gerar novos IDs enquanto o horário da máquina não for maior que o horário da última vez que um ID foi gerado.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;O Snowflake é um software livre sob a &lt;a href="http://pt.wikipedia.org/wiki/Licen%C3%A7a_Apache" title="Artigo da Wikipédia sobre a licença Apache"&gt;Licença Apache&lt;/a&gt;, por isso qualquer desenvolvedor pode usá-lo. O código-fonte&amp;nbsp;&lt;a href="http://github.com/twitter/snowflake" title="Código-fonte do Snowflake"&gt;está disponível no GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Twitpocalypse&lt;/h3&gt;
&lt;p&gt;Há algum tempo atrás o Twitter mudou o tamanho dos IDs dos status de inteiros de 32 bits (sem sinal) para inteiros de 64 bits (sem sinal). Isso por que estava próximo o temido&amp;nbsp;&lt;a href="http://www.twitpocalypse.com/" title="Contador do Twitpocalypse"&gt;Twitpocalypse&lt;/a&gt;, que aconteceria quando os IDs dos status atingissem o limite máximo de um &lt;a href="http://pt.wikipedia.org/wiki/Inteiro_(tipo_de_dado)" title="Artigo da Wikipédia sobre o tipo de dado inteiro"&gt;número inteiro&lt;/a&gt; de 32 bits:&amp;nbsp;4.294.967.295.&lt;/p&gt;
&lt;p&gt;Mas, por enquanto, o Twitpocalypse está longe de acontecer. Isso por que um inteiro de 64 bits (sem sinal) tem um valor máximo de&amp;nbsp;&lt;strong&gt;18.446.744.073.709.551.615&lt;/strong&gt;. Grande não?&lt;/p&gt;&lt;div class="field field-type-link field-field-links-relacionados"&gt;
      &lt;div class="field-label"&gt;Links relacionados:&amp;nbsp;&lt;/div&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;a href="http://engineering.twitter.com/2010/06/announcing-snowflake.html"&gt;Post do Twitter sobre o Snowflake&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=_cBVIE-gCIo:acyteLH00Yc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=_cBVIE-gCIo:acyteLH00Yc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=_cBVIE-gCIo:acyteLH00Yc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=_cBVIE-gCIo:acyteLH00Yc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=_cBVIE-gCIo:acyteLH00Yc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=_cBVIE-gCIo:acyteLH00Yc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=_cBVIE-gCIo:acyteLH00Yc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=_cBVIE-gCIo:acyteLH00Yc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/_cBVIE-gCIo" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/ids-dos-status-do-twitter-irao-mudar#comments</comments>
 <category domain="http://cleber.net.br/tags/api">API</category>
 <category domain="http://cleber.net.br/tags/dica">dica</category>
 <category domain="http://cleber.net.br/tags/ferramenta">ferramenta</category>
 <category domain="http://cleber.net.br/tags/programa%C3%A7%C3%A3o">programação</category>
 <category domain="http://cleber.net.br/tags/twitter">Twitter</category>
 <pubDate>Mon, 20 Sep 2010 13:38:44 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">36 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/ids-dos-status-do-twitter-irao-mudar</feedburner:origLink></item>
<item>
 <title>Site do IBGE possui falha de segurança</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/oV0RD7_MCsE/site-do-ibge-possui-falha-de-seguranca</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="81" height="100" alt="Logo do Censo 2010" src="http://cleber.net.br/sites/default/files/images/posts/teaser/censo2010.jpg?1283822024" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;O &lt;abbr title="Instituto Brasileiro de Geografia e Estatística"&gt;IBGE&lt;/abbr&gt; colocou no ar uma página onde podem ser acompanhados os &lt;a href="http://www.censo2010.ibge.gov.br/resultados.php" title="Resultados do Censo 2010"&gt;resultados do Censo 2010&lt;/a&gt;. Os resultados podem ser vistos por estado e por cidade.&lt;/p&gt;&lt;p&gt;Veja por exemplo os &lt;a href="http://www.censo2010.ibge.gov.br/resultados.php?&amp;amp;ue=41" title="Resultados do Censo 2010 do estado do Paraná"&gt;resultados do estado do Paraná&lt;/a&gt;. Agora clique no nome de um município. Abrirá uma &lt;em&gt;pop-up&amp;nbsp;&lt;/em&gt;com os detalhes referentes ao município. Veja os &lt;a href="http://www.censo2010.ibge.gov.br/resultados_graficos.php?Nome=Medianeira&amp;amp;CODMUN=4115804&amp;amp;ESTPOP=39857&amp;amp;ESTDOM=12078&amp;amp;NomeUE=41" title="Resultados do Censo 2010 de Medianeira, no Paraná"&gt;resultados da cidade de Medianeira (PR)&lt;/a&gt;, por exemplo. Muito louvável a iniciativa, é claro.&amp;nbsp;Mas, nem tudo são flores. Existe um perigo oculto.&lt;!--break--&gt;&lt;/p&gt;&lt;p&gt;A página que exibe os resultados de um município aceita 5 parâmetros pela URL (como pode ser &lt;a href="http://www.censo2010.ibge.gov.br/resultados_graficos.php?Nome=Medianeira&amp;amp;CODMUN=4115804&amp;amp;ESTPOP=39857&amp;amp;ESTDOM=12078&amp;amp;NomeUE=41" title="Resultados do Censo 2010 de Medianeira, no Paraná"&gt;visto aqui&lt;/a&gt;): &lt;span class="codigo-fonte"&gt;Nome&lt;/span&gt;, &lt;span class="codigo-fonte"&gt;CODMUN&lt;/span&gt;, &lt;span class="codigo-fonte"&gt;ESTPOP&lt;/span&gt;, &lt;span class="codigo-fonte"&gt;ESTDOM&lt;/span&gt; e &lt;span class="codigo-fonte"&gt;NomeUE&lt;/span&gt;. O problema está justamente no primeiro parâmetro:&amp;nbsp;&lt;span class="codigo-fonte"&gt;Nome&lt;/span&gt;. Nele é passado o nome do município que estamos visualizando. Mas o estagiário que criou essa página usando a linguagem de programação PHP esqueceu de um detalhe: deve-se &lt;strong&gt;sempre tratar os parâmetros passados&lt;/strong&gt; para um &lt;em&gt;script&lt;/em&gt; antes de usá-los. Mas nessa página do IBGE isso não é feito, o estagiário simplesmente colocou esse código na página:&lt;/p&gt;
&lt;span class="geshifilter"&gt;&lt;code class="php geshifilter-php"&gt;&lt;span style="color: #b1b100;"&gt;echo&lt;/span&gt; &lt;span style="color: #000088;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;Nome&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;
&lt;p&gt;Ou seja, qualquer valor que for passado para o parâmetro&amp;nbsp;&lt;span class="codigo-fonte"&gt;Nome&lt;/span&gt;&amp;nbsp;será incorporado a página. Esse tipo de vulnerabilidade é conhecido como&amp;nbsp;&lt;strong&gt;&lt;a href="http://pt.wikipedia.org/wiki/Cross-site_scripting" title="Artigo na Wikipédia sobre Cross-site scripting"&gt;&lt;em&gt;cross-site scripting&lt;/em&gt;&lt;/a&gt;&lt;/strong&gt; (XSS), que segundo a Wikipédia:&lt;/p&gt;&lt;blockquote&gt;É um tipo de vulnerabilidade do sistema de segurança de um computador, encontrado normalmente em aplicações web que ativam ataques maliciosos ao injetarem &lt;em&gt;client-side script&lt;/em&gt; dentro das páginas web vistas por outros usuários. Um &lt;em&gt;script&lt;/em&gt; de exploração de vulnerabilidade &lt;em&gt;cross-site&lt;/em&gt; pode ser usado pelos atacantes para escapar aos controles de acesso que usam a mesma política de origem.&lt;/blockquote&gt;&lt;p&gt;O c&lt;em&gt;ross-site scripting&lt;/em&gt;&amp;nbsp;afeta muitos sites, como aconteceu &lt;a href="http://g1.globo.com/tecnologia/noticia/2010/09/noticia-de-artista-acidentado-com-link-contamindo-e-espelhada-pelo-twitter.html" title="Falsa notícia sobre a banda Restart espalha vírus pelo Twitter"&gt;recentemente com o Twitter&lt;/a&gt; (veja &lt;a href="http://www.xssed.com/news/116/Twitter_developer_platform_search_field_vulnerable_to_XSS_/" title="Twitter developer platform search field vulnerable to XSS"&gt;mais detalhes&lt;/a&gt;). Veja o que é possível fazer na página do IBGE afetada pela falha:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.censo2010.ibge.gov.br/resultados_graficos.php?Nome=%3Cscript%20type=text/javascript%3Ealert(new%20Date());%3C/script%3E" title="Código JavaScript injetado"&gt;Injetar códigos JavaScript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.censo2010.ibge.gov.br/resultados_graficos.php?Nome=&amp;lt;style type=text/css&amp;gt;body{background-image: url(http://www.lisisoft.com/imglisi/5/Screensavers/36574landscape.jpg);}&amp;lt;/style&amp;gt;" title="Código CSS injetado"&gt;Injetar códigos CSS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.censo2010.ibge.gov.br/resultados_graficos.php?Nome=Visite%20o%20meu%20blog%20%3Ca%20href=http://cleber.net.br%3Ecleber.net.br%3C/a%3E" title="Código HTML injetado"&gt;Injetar qualquer código HTML&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/site_censo2010.png" alt="Site do Censo 2010 após injeção de HTML" title="Site do Censo 2010 após injeção de HTML"&gt;&lt;br&gt;&lt;em&gt;Site do Censo 2010 após injeção de HTML&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Tentei usar também o temido&amp;nbsp;&lt;span class="codigo-fonte"&gt;iframe&lt;/span&gt;&amp;nbsp;mas felizmente não foi possível.&amp;nbsp;Bom, e como resolver esse furo de segurança? Simplesmente substituir o código PHP mostrado anteriormente por esse aqui:&lt;/p&gt;
&lt;span class="geshifilter"&gt;&lt;code class="php geshifilter-php"&gt;&lt;span style="color: #b1b100;"&gt;echo&lt;/span&gt; &lt;span style="color: #990000;"&gt;filter_var&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$_GET&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;quot;Nome&amp;quot;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; FILTER_SANITIZE_STRING&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;
&lt;p&gt;A função &lt;span class="codigo-fonte"&gt;&lt;a href="http://php.net/manual/pt_BR/function.filter-var.php" title="Documentação da função filter_var"&gt;filter_var&lt;/a&gt;&lt;/span&gt; irá filtrar o parâmetro usando o filtro &lt;span class="codigo-fonte"&gt;&lt;a href="http://php.net/manual/en/filter.filters.sanitize.php" title="Documentação dos filtros"&gt;FILTER_SANITIZE_STRING&lt;/a&gt;&lt;/span&gt;, que irá remover &lt;em&gt;tags&lt;/em&gt; que estiverem presentes no parâmetros. Existem também outras maneiras de se tratar um parâmetro (veja nos &lt;em&gt;Links relacionados&lt;/em&gt;). Enviei um &lt;a href="mailto:webmaster@ibge.gov.br" title="E-mail do webmaster do IBGE"&gt;e-mail&lt;/a&gt; para o IBGE alertando da falha.&lt;/p&gt;&lt;p&gt;Não é incomum sites do governo possuírem brechas de segurança. Já aconteceu com o site da &lt;a href="http://infocampo.wordpress.com/2009/10/01/receita-federal-xss/" title="Site da Receita Federal é vulnerável a XSS"&gt;Receita Federal&lt;/a&gt; e do &lt;a href="http://infocampo.wordpress.com/2009/10/01/site-ministerio-da-defesa-ainda-tem-falhas/" title="Site do Ministério da Defesa ainda tem falhas"&gt;Ministério da Defesa&lt;/a&gt;&amp;nbsp;e muitos outros.&amp;nbsp;A pergunta que fica no ar é: &lt;strong&gt;como um projeto com &lt;/strong&gt;&lt;a href="http://economia.estadao.com.br/noticias/economia,megaoperacao-do-censo-tera-inicio-em-agosto-com-orcamento-de-r-17-bilhao,28969,0.htm" title="Megaoperação do Censo terá início em agosto, com orçamento de R$ 1,7 bilhão"&gt;&lt;strong&gt;orçamento de R$ 1,7 bilhão&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; (sendo &lt;/strong&gt;&lt;a href="http://www.tiinside.com.br/News.aspx?ID=146555&amp;amp;C=265" title="Censo 2010 terá orçamento de quase R$ 200 milhões para tecnologia"&gt;&lt;strong&gt;R$ 200 milhões em tecnologia&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;) pode ter esse tipo de falha?&lt;/strong&gt;&lt;/p&gt;&lt;div class="field field-type-link field-field-links-relacionados"&gt;
      &lt;div class="field-label"&gt;Links relacionados:&amp;nbsp;&lt;/div&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;a href="http://imasters.uol.com.br/artigo/12318/php/principais_falhas_de_seguranca_no_php/"&gt;Principais falhas de segurança no PHP&lt;/a&gt;        &lt;/div&gt;
              &lt;div class="field-item even"&gt;
                    &lt;a href="http://www.vivaolinux.com.br/artigo/Tratamento-de-dados-fornecidos-pelo-usuario-projetando-sistemas-com-mais-seguranca/?pagina=6"&gt;Escapando strings&lt;/a&gt;        &lt;/div&gt;
              &lt;div class="field-item odd"&gt;
                    &lt;a href="http://www.codeassembly.com/How-to-sanitize-your-php-input/"&gt;How to sanitize your php input&lt;/a&gt;        &lt;/div&gt;
              &lt;div class="field-item even"&gt;
                    &lt;a href="http://net.tutsplus.com/tutorials/php/sanitize-and-validate-data-with-php-filters/"&gt;Sanitize and Validate Data with PHP Filters&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=oV0RD7_MCsE:-ukfndlsnlQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=oV0RD7_MCsE:-ukfndlsnlQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=oV0RD7_MCsE:-ukfndlsnlQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=oV0RD7_MCsE:-ukfndlsnlQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=oV0RD7_MCsE:-ukfndlsnlQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=oV0RD7_MCsE:-ukfndlsnlQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=oV0RD7_MCsE:-ukfndlsnlQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=oV0RD7_MCsE:-ukfndlsnlQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/oV0RD7_MCsE" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/site-do-ibge-possui-falha-de-seguranca#comments</comments>
 <category domain="http://cleber.net.br/tags/censo">censo</category>
 <category domain="http://cleber.net.br/tags/cross-site-scripting">cross-site scripting</category>
 <category domain="http://cleber.net.br/tags/ibge">ibge</category>
 <category domain="http://cleber.net.br/tags/php">PHP</category>
 <category domain="http://cleber.net.br/tags/seguranca">segurança</category>
 <category domain="http://cleber.net.br/tags/xss">xss</category>
 <pubDate>Mon, 06 Sep 2010 23:08:46 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">34 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/site-do-ibge-possui-falha-de-seguranca</feedburner:origLink></item>
<item>
 <title>Mudanças visuais no orkut</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/sDBd2R-X8Os/mudancas-visuais-no-orkut</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="100" height="100" alt="orkut" src="http://cleber.net.br/sites/default/files/images/posts/teaser/logo-orkut.png?1278010431" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Embora alguns &lt;a href="http://www.orkut.com.br/Main#Community?cmm=38440683" title="Comunidade Quero o orkut antigo de volta"&gt;conservadores&lt;/a&gt; ainda tenham resistência a nova &lt;em&gt;interface&lt;/em&gt; do orkut, novidades deverão ser em breve disponibilizadas para todos os usuários. Quem tem acesso ao &lt;em&gt;&lt;a href="http://sandbox.orkut.com/" title="Sandbox do orkut"&gt;sandbox&lt;/a&gt;&lt;/em&gt; do &lt;a href="http://orkut.com" title="orkut"&gt;orkut&lt;/a&gt; (versão para desenvolvedores) já pode perceber algumas diferenças em relação ao orkut normal.&lt;/p&gt;&lt;p&gt;&lt;!--break--&gt;A primeira diferença visível é uma tela de carregamento &lt;em&gt;a la&lt;/em&gt; Gmail, como pode ser visto na imagem abaixo.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/tela-carregamento-orkut.png" alt="Tela de carregamento do orkut" title="Tela de carregamento do orkut" class="importante"&gt;&lt;br&gt;&lt;em&gt;Tela de carregamento do sandbox do orkut&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Outra diferença significativa é quanto ao botão para excluir as atividades. Ele sumiu e deu lugar a um menu, que além da opção para excluir a atividade, provavelmente possuirá outras opções.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/comparacao-atividades-orkut.png" alt="Comparação do botão para excluir uma atividade" title="Comparação do botão para excluir uma atividade" class="importante"&gt;&lt;br&gt;&lt;em&gt;Botão de excluir atividade na versão normal (em cima) e no sandbox&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Os links exibidos no topo também possuem uma ligeira diferença: sumiu o link para o próprio orkut e foi adicionado um link para a &lt;a href="http://blogsearch.google.com/" title="Pesquisa de blogs do Google"&gt;pesquisa de blogs&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/comparacao-links-orkut.png" alt="Comparação dos links no topo do orkut" title="Comparação dos links no topo do orkut" width="388" height="113" class="importante"&gt;&lt;br&gt;&lt;em&gt;Links do topo na versão normal (em cima) e no sandbox&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Pode-se observar também uma ligeira diferença na tipografia das fontes de algumas caixas de texto. Na versão normal a fonte é &lt;a href="http://pt.wikipedia.org/wiki/Verdana" title="Artigo da Wikipédia sobre a fonte Verdana"&gt;Verdana&lt;/a&gt; e no &lt;em&gt;sandbox&lt;/em&gt; é &lt;a href="http://pt.wikipedia.org/wiki/Arial" title="Artigo da Wikipédia sobre a fonte Arial"&gt;Arial&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Pelo visto o&amp;nbsp;&lt;em&gt;sandbox&lt;/em&gt;&amp;nbsp;do orkut não é usado apenas para os desenvolvedores testarem seus aplicativos, mas para a própria equipe de desenvolvimento do orkut fazer os seus testes.&lt;/p&gt;&lt;p&gt;Se você notou também alguma diferença, deixe um comentário ou entre em &lt;a href="http://cleber.net.br/contato" title="Formulário de contato"&gt;contato&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=sDBd2R-X8Os:NgSOdbwEmE4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=sDBd2R-X8Os:NgSOdbwEmE4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=sDBd2R-X8Os:NgSOdbwEmE4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=sDBd2R-X8Os:NgSOdbwEmE4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=sDBd2R-X8Os:NgSOdbwEmE4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=sDBd2R-X8Os:NgSOdbwEmE4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=sDBd2R-X8Os:NgSOdbwEmE4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=sDBd2R-X8Os:NgSOdbwEmE4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/sDBd2R-X8Os" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/mudancas-visuais-no-orkut#comments</comments>
 <category domain="http://cleber.net.br/tags/orkut">orkut</category>
 <pubDate>Wed, 30 Jun 2010 00:31:10 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">33 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/mudancas-visuais-no-orkut</feedburner:origLink></item>
<item>
 <title>Recortar uma imagem no formato 16:9 no Photoshop</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/a5afSYeZcQ8/recortar-uma-imagem-no-formato-169-no-photoshop</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="180" height="120" alt="Fotógrafo" src="http://cleber.net.br/sites/default/files/images/posts/teaser/fotografo.jpg?1273379857" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Até o século passado, o formato mais comum das fotografias era na proporção &lt;a href="http://www.cameraversuscamera.com.br/dic/asp_ratio.htm" title="Artigo sobre os formatos de tela"&gt;3:2&lt;/a&gt; (1,5), que eram geralmente reveladas em papel no tamanho 10 x 15 cm. Mas eis que surgem as câmeras digitais, popularizando o formato &lt;strong&gt;4:3&lt;/strong&gt; (1,3), o mesmo formato da maioria das televisões e dos monitores de computador. E mais recentemente surgiram os monitores &lt;acronym title="Liquid Crystal Display (Display de Cristal Líquido)"&gt;LCD&lt;/acronym&gt;, trazendo o formato &lt;strong&gt;16:9&lt;/strong&gt; (1,77).&lt;/p&gt;&lt;p&gt;O formato 16:9, também conhecido como &lt;em&gt;widescreen&lt;/em&gt; (tela larga), é o formato do momento e deve permanecer assim por muito tempo. Mas isso trouxe um problema: temos milhares de fotos digitais no formato 4:3, e a sensação de assistir uma apresentação de fotos&amp;nbsp;4:3&amp;nbsp;em uma tela 16:9 é a mesma sensação de assistir um filme &lt;em&gt;widescreen&lt;/em&gt; em uma TV comum. A diferença é que na tela 16:9 vão aparecer duas faixas pretas de cada lado enquanto na TV vão aparecer aquelas faixas pretas em cima e em baixo.&lt;/p&gt;&lt;p&gt;As câmeras digitais mais modernas já possuem opção para registrar as imagens na proporção 16:9, mas o que fazer com as câmeras que não possuem essa opção? E pior ainda, o que fazer com as milhares de fotos no formato 4:3? A solução é simples: recortar as imagens.&lt;/p&gt;&lt;p&gt;&lt;!--break--&gt;&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/photoshop/proporcoes-de-tela.png" alt="Proporções de tela" title="Proporções de tela" width="400" height="225" class="importante"&gt;&lt;/p&gt;&lt;h3&gt;Photoshop neles&lt;/h3&gt;&lt;p&gt;A imagem abaixo no formato 4:3 será usada como exemplo.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/photoshop/original-4-3.jpg" alt="Imagem original no formato 4:3" title="Imagem original no formato 4:3" width="600" height="450" class="importante"&gt;&lt;/p&gt;&lt;p&gt;Para transformar uma imagem em qualquer proporção para o formato 16:9 (&lt;em&gt;widescreen&lt;/em&gt;), abra a imagem no Photoshop, e selecione a ferramenta &lt;strong&gt;Letreiro Retangular&lt;/strong&gt; (ou aperte a tecla &lt;strong&gt;M&lt;/strong&gt;).&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/photoshop/ferramenta-selecao.jpg" alt="Ferramenta seleção" title="Ferramenta seleção" width="25" height="19" class="importante"&gt;&lt;/p&gt;&lt;p&gt;Em seguida, na barra de configuração da ferramenta, escolha o estilo &lt;strong&gt;Proporção Fixa&lt;/strong&gt; e no campo &lt;em&gt;Largura&lt;/em&gt; coloque &lt;strong&gt;16&lt;/strong&gt; e em &lt;em&gt;Altura&lt;/em&gt; coloque &lt;strong&gt;9&lt;/strong&gt;.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/photoshop/estilo-proporcao-fixa.jpg" alt="Estilo Proporção Fixa" title="Estilo Proporção Fixa" width="392" height="32" class="importante"&gt;&lt;/p&gt;&lt;p&gt;Agora é só selecionar a área com a ferramenta e ir no menu &lt;strong&gt;Imagem&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Cortar&lt;/strong&gt;.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/photoshop/area-16-9-selecionada.jpg" alt="Área da imagem selecionada" title="Área da imagem selecionada" width="510" height="455" class="importante"&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Voilá&lt;/em&gt;! Agora é só salvar a imagem e desfrutá-la no modo tela cheia no seu monitor. Confira a imagem final abaixo.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/photoshop/final-16-9.jpg" alt="Imagem final no formato 16:9" title="Imagem final no formato 16:9" width="600" height="338" class="importante"&gt;&lt;/p&gt;&lt;h3&gt;Atenção!&lt;/h3&gt;&lt;p&gt;Nem todas as fotos poderão ser recortadas nessa proporção, pois partes importantes da imagem poderão ficar de fora. Nesse caso não há o que fazer.&lt;/p&gt;&lt;p&gt;Para quem não tem o formato 16:9 em um câmera, o jeito é tirar a foto prevendo que uma parte de cima e outra de baixo da imagem será apagada. Ou vale até mesmo desenhar no próprio visor da máquina uma linha simulando a proporção 16:9.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/photoshop/camera-digital.jpg" alt="Câmera digital" title="Câmera digital" width="350" height="236" class="importante"&gt;&lt;/p&gt;&lt;p&gt;Não importa a técnica que for usada, o importante é saber que uma imagem 16:9 é muito mais agradável de ser visualizada em tela cheia do que as antigas 4:3.&amp;nbsp;&lt;/p&gt;&lt;div class="field field-type-link field-field-links-relacionados"&gt;
      &lt;div class="field-label"&gt;Links relacionados:&amp;nbsp;&lt;/div&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;a href="http://pt.wikipedia.org/wiki/Propor%C3%A7%C3%A3o_de_tela"&gt;Artigo da Wikipédia sobre proporção de tela&lt;/a&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=a5afSYeZcQ8:5nqtv6ND2hM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=a5afSYeZcQ8:5nqtv6ND2hM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=a5afSYeZcQ8:5nqtv6ND2hM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=a5afSYeZcQ8:5nqtv6ND2hM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=a5afSYeZcQ8:5nqtv6ND2hM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=a5afSYeZcQ8:5nqtv6ND2hM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=a5afSYeZcQ8:5nqtv6ND2hM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=a5afSYeZcQ8:5nqtv6ND2hM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/a5afSYeZcQ8" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/recortar-uma-imagem-no-formato-169-no-photoshop#comments</comments>
 <category domain="http://cleber.net.br/tags/dica">dica</category>
 <category domain="http://cleber.net.br/tags/photoshop">Photoshop</category>
 <pubDate>Sun, 09 May 2010 01:02:02 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">30 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/recortar-uma-imagem-no-formato-169-no-photoshop</feedburner:origLink></item>
<item>
 <title>Formatar um documento do Google Docs nas normas</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/HMJ1KrQLggk/formate-um-documento-do-google-docs-nas-normas</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="75" height="71" alt="Google Docs" src="http://cleber.net.br/sites/default/files/images/posts/teaser/google-docs-logo.png?1272131579" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Muitas pessoas ainda torcem o nariz para o &lt;a href="http://docs.google.com/?hl=pt-BR" title="Google Docs"&gt;Google Docs&lt;/a&gt; e preferem continuar usando o &lt;a href="http://office.microsoft.com/pt-br/word/default.aspx" title="Microsoft Office"&gt;Microsoft Word&lt;/a&gt;. É claro que o Word tem centenas de funções que o Google Docs não tem. Mas quem usa todas elas?&lt;/p&gt;
&lt;p&gt;Estou usando o Google Docs para criar o meu &lt;abbr title="Trabalho de Conclusão de Curso"&gt;TCC&lt;/abbr&gt; sobre o &lt;a href="http://cleber.net.br/opensocial" title="OpenSocial"&gt;OpenSocial&lt;/a&gt;. Entre os motivos que me levaram a usar estão:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Posso acessar o meu TCC de qualquer lugar, precisando apenas de uma conexão com a internet. Está sem internet? Com o Google Docs &lt;em&gt;&lt;a href="http://docs.google.com/support/bin/answer.py?hl=br&amp;amp;answer=92247" title="Como funciona o Google Docs offline"&gt;offline&lt;/a&gt;&lt;/em&gt; posso continuar editando o documento, e quando a conexão com a internet voltar, ele sincroniza automaticamente com a versão &lt;em&gt;online&lt;/em&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://docs.google.com/support/bin/topic.py?hl=br&amp;amp;topic=15129" title="Compartilhamento no Google Docs"&gt;Compartilhei&lt;/a&gt; o meu TCC com o meu orientador, assim ele pode ver o andamento do trabalho e até mesmo editá-lo.&lt;/li&gt;
  &lt;li&gt;O Google Docs armazena &lt;a href="http://docs.google.com/support/bin/answer.py?answer=92199&amp;amp;query=revis%C3%B5es&amp;amp;type=" title="Revisões no Google Docs"&gt;revisões&lt;/a&gt; dos documentos, ou seja, a cada modificação uma revisão é criada. Com isso posso ver, por exemplo, como estava o meu TCC a duas semanas atrás, quais alterações foram feitas e por quem.&lt;/li&gt;
  &lt;li&gt;Sei que o meu TCC estará protegido na &lt;a href="http://www.wired.com/images_blogs/epicenter/2010/01/google_cloud.jpg" title="Nuvem do Google"&gt;nuvem do Google&lt;/a&gt;. Mas é claro, sempre é bom fazer um &lt;em&gt;backup&lt;/em&gt; frequente do documento para o seu PC ou outro local.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;O Google Docs apresenta algumas complicações a mais para os mais leigos:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;As páginas não têm largura fixa, diferente de um documento do Word, por exemplo. Para resolver isso é fácil: vá no menu "Visualizar" e clique em "Página com largura fixa". Com isso você terá uma visão semelhante a um documento do Word. E essa configuração será lembrada toda vez que você abrir o documento.&lt;/li&gt;
  &lt;li&gt;Não existem separações de páginas, tudo é apresentado em um texto único. No entanto, você pode &lt;a href="http://docs.google.com/support/bin/answer.py?answer=92199&amp;amp;query=revis%C3%B5es&amp;amp;type=" title="Inserindo quebras de páginas no Google Docs"&gt;inserir quebras de páginas&lt;/a&gt;, que serão usadas na impressão ou quando você exportar o documento. Para isso, posicione o cursor do mouse no lugar onde deseja inserir a quebra de página,&amp;nbsp;clique no menu "Inserir" e clique em "Quebra de página (para impressão)".&lt;/li&gt;
  &lt;li&gt;Só é possível &lt;a href="http://docs.google.com/support/bin/answer.py?hl=pt_BR&amp;amp;answer=83321" title="Como inserir numeração de páginas no Google Docs"&gt;inserir numeração de páginas&lt;/a&gt; na versão de impressão do documento.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Formatação&lt;/h3&gt;
&lt;p&gt;O que aumenta a resistência das pessoas ao Google Docs é a questão da formatação do documento, pois um trabalho acadêmico deve seguir as normas da instituição de ensino, que geralmente são baseadas nas normas da &lt;abbr title="Associação Brasileira de Normas Técnicas" lang="pt"&gt;&lt;a href="http://www.abnt.org.br/m3.asp?cod_pagina=931" title="Associação Brasileira de Normas Técnicas"&gt;ABNT&lt;/a&gt;&lt;/abbr&gt;. No Word é fácil formatar&amp;nbsp;margens, parágrafos, fontes, espaçamentos etc. Para fazer isso no Google Docs, é necessário um conhecimento um pouco mais avançado.&lt;/p&gt;
&lt;div class="messages status"&gt;Atenção! Conforme escrito &lt;a href="http://docs.google.com/support/bin/answer.py?answer=176442" title="Como obter informações do Google Docs: A nova versão do Google Documentos"&gt;nesta página&lt;/a&gt; de ajuda do Google Docs, o recurso de edição de CSS &lt;strong&gt;não&lt;/strong&gt; estará mais disponível na &lt;a href="http://docs.google.com/support/bin/answer.py?hl=pt_BR&amp;amp;answer=176442" title="Nova versão do Google Docs"&gt;nova versão do Google Docs&lt;/a&gt;. Por isso, você deve usar a &lt;a href="https://docs.google.com/?action=newdoc" title="Cria um documento usando o editor antigo do Google Docs"&gt;versão antiga&lt;/a&gt; para fazer o que vai ser mostrado. De acordo com Jeff Harris, gerente de produtos do Google Docs, futuramente será implementado algo similar ao editor de CSS na nova versão. Para saber mais, acompanhe &lt;a href="http://www.google.com/support/forum/p/Google+Docs/thread?tid=6be9caf98a910411&amp;amp;hl=en&amp;amp;fid=6be9caf98a9104110004890ab697af5a" title="Tópico do fórum de ajuda do Google Docs sobre o recurso de edição de CSS e HTML"&gt;este tópico&lt;/a&gt;&amp;nbsp;(em inglês) do fórum de ajuda do Google Docs.&lt;/div&gt;
&lt;p&gt;Para formatar um documento do Google Docs de acordo com as &lt;a href="http://docs.google.com/viewer?url=http://www.utfpr.edu.br/documentos/normas_trabalhos_utfpr.pdf" title="Normas da UTFPR"&gt;normas da &lt;/a&gt;&lt;a href="http://docs.google.com/viewer?url=http://www.utfpr.edu.br/documentos/normas_trabalhos_utfpr.pdf" title="Normas da UTFPR"&gt;&lt;abbr title="Universidade Tecnológica Federal do Paraná"&gt;UTFPR&lt;/abbr&gt;&lt;/a&gt;, criei algumas declarações &lt;abbr title="Cascading Style Sheets" lang="en"&gt;&lt;a href="http://pt.wikipedia.org/wiki/Cascading_Style_Sheets" title="Artigo na Wikipédia sobre CSS"&gt;CSS&lt;/a&gt;&lt;/abbr&gt; para serem aplicadas a um documento. Para isso, vá no menu "Editar" e clique em "Editar CSS". Então copie e cole lá o trecho abaixo:&lt;/p&gt;
&lt;div class="geshifilter"&gt;&lt;table class="css geshifilter-css" style="font-family:monospace;"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td style="width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
&lt;/pre&gt;&lt;/td&gt;&lt;td style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;span style="color: #00AA00;"&gt;*,&lt;/span&gt; html&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; body &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;margin&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;padding&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
html &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;color&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #cc00cc;"&gt;#000&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;padding&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;3cm&lt;/span&gt; &lt;span style="color: #933;"&gt;2cm&lt;/span&gt; &lt;span style="color: #933;"&gt;2cm&lt;/span&gt; &lt;span style="color: #933;"&gt;3cm&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
body &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; Arial&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-size&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;12pt&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
h1&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h2&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h3&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h4&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h5&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h6 &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; Arial&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-style&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;normal&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;margin&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;3pt&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt; &lt;span style="color: #933;"&gt;3pt&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
h1 &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-size&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;14pt&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
h2&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h3&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h4&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h5&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; h6 &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-size&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;12pt&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-weight&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;normal&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
p &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;margin&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;text-indent&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;1.5cm&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
ul &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;margin-left&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;1.5cm&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
p&lt;span style="color: #00AA00;"&gt;,&lt;/span&gt; ul &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; Arial&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-size&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;12pt&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;line-height&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;150%&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;text-align&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;justify&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
blockquote &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;border&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;none&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-size&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;10pt&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;line-height&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;100%&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;margin-left&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;4cm&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;text-align&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;justify&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #cc00cc;"&gt;#WritelyTableOfContents&lt;/span&gt; &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt; &lt;span style="color: #808080; font-style: italic;"&gt;/* Formata o sumario gerado pelo Google Docs - Menu Inserir -&amp;gt; Sumario */&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;background&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;none&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;border&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;none&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; Arial&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;font-size&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;12pt&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #cc00cc;"&gt;#WritelyTableOfContents&lt;/span&gt; a &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;color&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #cc00cc;"&gt;#000&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;line-height&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;100%&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;text-decoration&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #993333;"&gt;none&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #cc00cc;"&gt;#WritelyTableOfContents&lt;/span&gt; ol &lt;span style="color: #00AA00;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;margin-left&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #933;"&gt;25px&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;padding-left&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;:&lt;/span&gt; &lt;span style="color: #cc66cc;"&gt;0&lt;/span&gt;&lt;span style="color: #00AA00;"&gt;;&lt;/span&gt;
&lt;span style="color: #00AA00;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;As seguintes declarações CSS formatam o documento da seguinte maneira:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Margens esquerda e superior com &lt;strong&gt;3 cm&lt;/strong&gt; e margens direita e inferior com &lt;strong&gt;2 cm&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Fonte &lt;strong&gt;Arial &lt;/strong&gt;com tamanho &lt;strong&gt;12&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Títulos primários com tamanho &lt;strong&gt;14&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Cor do texto em &lt;strong&gt;preto&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Parágrafos com alinhamento &lt;strong&gt;justificado&lt;/strong&gt;, recuo de primeira linha de &lt;strong&gt;1,5 cm&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Citações com fonte tamanho &lt;strong&gt;10&lt;/strong&gt;, espaçamento simples e margem esquerda de &lt;strong&gt;4 cm&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Atenção:&lt;/strong&gt; em nenhum momento você irá apenas exportar o documento no formato Word, &lt;abbr title="OpenDocument Text" lang="en"&gt;&lt;a href="http://pt.wikipedia.org/wiki/OpenDocument" title="Artigo na Wikipédia sobre o ODF"&gt;ODT&lt;/a&gt;&lt;/abbr&gt; ou &lt;abbr title="Portable Document Format" lang="en"&gt;PDF&lt;/abbr&gt; e ele estará pronto. Você irá utilizar o Google Docs apenas para a elaboração do texto. Os estilos passados acima ajudam a manter algumas formatações na hora que você exportar o documento, facilitanto o seu trabalho.&lt;/p&gt;
&lt;p&gt;Após exportar o documento final, algumas formatações deverão ser feitas:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Crie a capa e a folha de rosto.&lt;/li&gt;
  &lt;li&gt;Ajuste as margens se necessário.&lt;/li&gt;
  &lt;li&gt;Insira a numeração das páginas de acordo com as normas.&lt;/li&gt;
  &lt;li&gt;Insira a numeração nos títulos e subtítulos.&lt;/li&gt;
  &lt;li&gt;Gere o sumário automático.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/microsoft-word.jpg" alt="Logo do Microsoft Word" title="Logo do Microsoft Word" width="39" height="39" style="float: right;" class="mceItem"&gt;A Microsoft já conta também com o &lt;a href="http://workspace.officelive.com/pt-BR/" title="Microsoft Office Live Workspace"&gt;Microsoft Office Live Workspace&lt;/a&gt;, um serviço semelhante ao Google Docs.&lt;/p&gt;
&lt;p&gt;Veja abaixo uma comparação entre o mesmo documento no Google Docs e no Microsoft Word:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/google-docs-vs-microsoft-word.png" alt="Google Docs x Microsoft Word" title="Google Docs x Microsoft Word" width="600" height="698" class="mceItem importante"&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=HMJ1KrQLggk:jMuN6JznChE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=HMJ1KrQLggk:jMuN6JznChE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=HMJ1KrQLggk:jMuN6JznChE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=HMJ1KrQLggk:jMuN6JznChE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=HMJ1KrQLggk:jMuN6JznChE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=HMJ1KrQLggk:jMuN6JznChE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=HMJ1KrQLggk:jMuN6JznChE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=HMJ1KrQLggk:jMuN6JznChE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/HMJ1KrQLggk" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/formate-um-documento-do-google-docs-nas-normas#comments</comments>
 <category domain="http://cleber.net.br/tags/abnt">ABNT</category>
 <category domain="http://cleber.net.br/tags/css">CSS</category>
 <category domain="http://cleber.net.br/tags/dica">dica</category>
 <category domain="http://cleber.net.br/tags/formata%C3%A7%C3%A3o">formatação</category>
 <category domain="http://cleber.net.br/tags/google">Google</category>
 <category domain="http://cleber.net.br/tags/google-docs">Google Docs</category>
 <category domain="http://cleber.net.br/tags/normas">normas</category>
 <category domain="http://cleber.net.br/tags/opensocial">opensocial</category>
 <category domain="http://cleber.net.br/tags/tcc">TCC</category>
 <category domain="http://cleber.net.br/tags/utfpr">UTFPR</category>
 <pubDate>Sun, 21 Feb 2010 21:05:32 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">24 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/formate-um-documento-do-google-docs-nas-normas</feedburner:origLink></item>
<item>
 <title>Dissecando o Gmail</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/N7xdWKY8m-I/dissecando-o-gmail</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="120" height="88" alt="Gmail Delivery" src="http://cleber.net.br/sites/default/files/images/posts/teaser/Gmail_Delivery.jpg?1272132484" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;O &lt;em&gt;webmail&lt;/em&gt; do Google, o &lt;a href="http://mail.google.com" title="Gmail"&gt;Gmail&lt;/a&gt; (&lt;a href="http://googlemail.com" title="Google Mail"&gt;Google Mail&lt;/a&gt; na Alemanha e Reino Unido), que faz aniversário no dia 1º de abril (sério), deixou te ter o status beta no dia 7 de julho do ano passado (2009). É reconhecido pelo seu pioneirismo no uso da técnica &lt;abbr title="Asynchronous Javascript And XML" lang="en"&gt;&lt;a href="http://pt.wikipedia.org/wiki/AJAX_(programa%C3%A7%C3%A3o)" title="Programação AJAX"&gt;Ajax&lt;/a&gt;&lt;/abbr&gt;, e é referência também quanto a usabilidade, performance e interação com o usuário. Por isso, nada melhor do que estudá-lo e usá-lo como inspiração.
  &lt;!--break--&gt;
&lt;/p&gt;
&lt;h3&gt;Especificações Técnicas&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;A interface do Gmail é construída sob a plataforma&amp;nbsp;&lt;a href="http://code.google.com/intl/pt-BR/webtoolkit/" title="Site do Google Web Toolkit"&gt;Google Web Toolkit&lt;/a&gt;&amp;nbsp;(GWT) e tudo isso roda no&amp;nbsp;&lt;a href="http://code.google.com/p/opengse/" title="OpenGSE TestSuite"&gt;Google Servlet Engine&lt;/a&gt;&amp;nbsp;(GSE) e Google GFE/2.0 (Google Front-End), que por sua vez &lt;a href="http://toolbar.netcraft.com/site_report?url=http://mail.google.com" title="Relatório do site mail.google.com"&gt;rodam em Linux&lt;/a&gt;. O Google Servlet Engine - nome oficial:&amp;nbsp;Open Google Servlet Engine (OpenGSE) - &lt;a href="http://google-opensource.blogspot.com/2009/01/opengse-released.html" title="Anúncio do lançamento do OpenGSE"&gt;foi desenvolvido&lt;/a&gt; por um time de engenheiros do Google e é usado em muitos produtos do Google - internamente e publicamente.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://en.wikipedia.org/wiki/Google_Web_Server" title="Artigo da Wikipédia sobre o Google Web Server"&gt;Google Web Server&lt;/a&gt; (GWS) é&amp;nbsp;o nome do servidor &lt;em&gt;web &lt;/em&gt;que o Google utiliza para a sua infraestrutura. Especula-se que se trata de uma compilação do &lt;a href="http://httpd.apache.org/" title="Site do servidor web Apache"&gt;Apache Web Server&lt;/a&gt; com mudanças nos cabeçalhos.&lt;/p&gt;
&lt;h3&gt;Carregando...&lt;/h3&gt;
&lt;p&gt;A cada vez que uma sessão do Gmail é iniciada, uma página contendo um documento vazio é carregada. &lt;a id="inicio_gmail"&gt;&lt;/a&gt;O único elemento visível é a mensagem com o status do carregamento da página&amp;nbsp;(&lt;span class="codigo-fonte"&gt;div id="loading"&lt;/span&gt;), além da mensagem que é exibida caso o carregamento estiver demorando muito. O tamanho aproximado desta página é de 7 KB.&lt;/p&gt;
&lt;p&gt;E se o usuário tenta carregar a página do Gmail de um navegador que não tenha suporte a JavaScript? Para isto existe a &lt;em&gt;tag &lt;/em&gt;do HTML chamada &lt;span class="codigo-fonte"&gt;&lt;a href="http://www.tibumweb.com.br/html/tags/noscript.php" title="Referência sobre a tag &amp;quot;noscript&amp;quot;"&gt;noscript&lt;/a&gt;&lt;/span&gt;. O que estiver escrito dentro desta &lt;em&gt;tag &lt;/em&gt;será exibido no navegador caso o JavaScript não estiver presente ou estiver desabilitado. No caso do Gmail, será exibida a mensagem:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt; O JavaScript tem que ser ativado para que você possa usar o Gmail no modo de exibição padrão. Porém, aparentemente, o JavaScript está desativado ou é incompatível com o seu navegador. Para usar o modo de exibição padrão, ative o JavaScript alterando as opções do navegador e &lt;a&gt;tente novamente&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Para usar o modo de exibição em HTML básico do Gmail, que não requer JavaScript, &lt;a href="?ui=html&amp;amp;zy=c"&gt;clique aqui&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Se quiser visualizar o Gmail em um celular ou dispositivo semelhante, &lt;a href="?ui=mobile&amp;amp;zyp=c"&gt;clique aqui&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Essa mensagem que se encontra dentro da &lt;em&gt;tag &lt;/em&gt;&lt;span class="codigo-fonte"&gt;noscript&lt;/span&gt; está inserida no cabeçalho (&lt;span class="codigo-fonte"&gt;head&lt;/span&gt;) da página do Gmail! Não deveria estar no corpo (&lt;span class="codigo-fonte"&gt;body&lt;/span&gt;)? Tentei acessar o Gmail em português usando o Firefox 3.6 e com o JavaScript desabilitado mas a mensagem não apareceu, apenas mostra a tela do "carregando".&lt;/p&gt;
&lt;p&gt;Esta página HTML inicial é responsável por carregar as toneladas de JavaScript que serão usadas na sessão. A partir daí, qualquer interação com o servidor é feita com o bom e velho Ajax.&lt;/p&gt;
&lt;h3&gt;Cabeçalho&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Na figura abaixo você vê uma imagem mostrando o cabeçalho (&lt;span class="codigo-fonte"&gt;head&lt;/span&gt;) da página do Gmail.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/gmail/cabecalho_gmail.png" alt="Cabeçalho do Gmail" title="Cabeçalho do Gmail" width="604" height="553" class="mceItem importante"&gt;&lt;/p&gt;
&lt;p&gt;A página usa o &lt;a href="http://www.w3.org/International/O-charset.pt-br.php" title="Informações sobre charset"&gt;charset&lt;/a&gt; (codificação de caracteres) &lt;a href="http://pt.wikipedia.org/wiki/UTF-8" title="Artigo da Wikipédia sobre o UTF-8"&gt;UTF-8&lt;/a&gt;. Isso permite que uma infinidade de caracteres possam &lt;a href="http://www.tableless.com.br/charsets-e-encodes-tabelas-de-caracteres" title="Artigo com informações sobre Charsets e Encodes – Tabelas de caracteres"&gt;ser representados&lt;/a&gt;, como os do alfabeto árabe, chinês, japonês etc. É muito comum vermos sites utilizando o&amp;nbsp;&lt;a href="http://pt.wikipedia.org/wiki/ISO_8859-1" title="Página da Wikipédia sobre oISO 8859-1"&gt;ISO-8859-1&lt;/a&gt; (Latin1). Com essa codificação é possível usar apenas caracteres do alfabeto latino. Funciona perfeitamente para nós latinos. Mas vivemos em um mundo globalizado, e não podemos limitar um site ou um sistema &lt;em&gt;web &lt;/em&gt;a uma região apenas. &lt;/p&gt;
&lt;p&gt;A única vantagem do ISO-8859-1 sobre o UTF-8 é a questão dos acentos, pois para o UTF-8 a palavra &lt;em&gt;acentuação&lt;/em&gt; é diferente de &lt;em&gt;acentuacao&lt;/em&gt;. Já para o ISO-8859-1 elas são equivalentes, e isso facilita em pesquisas e ordenações. Mas isso pode ser contornado. Por tanto, utilize UTF-8 nos seus sites e sistemas. O Google é esperto e usa.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/gmail/logo-gmail.png" alt="Logo do Gmail" title="Logo do Gmail" width="150" height="111" style="float: right;" class="mceItem importante"&gt;&lt;/p&gt;
&lt;p&gt;No cabeçalho do Gmail também notamos alguns códigos JavaScript &lt;a href="http://www.milfont.org/tech/2008/02/10/javascript-inline-e-external/" title="Artigo explicando o que é JavaScript inline e externo"&gt;&lt;em&gt;inline&lt;/em&gt;&lt;/a&gt;. Esse tipo de código torna o carregamento da página mais rápido, já que não é necessária uma requisição HTTP para o carregamento de um arquivo JavaScript externo. No entanto, o código fica mais feio e dificulta a manutenção. Esses JavaScripts &lt;em&gt;inline &lt;/em&gt;vistos acima fazem três operações:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Define o horário do carregamento da aplicação em uma variável global: &lt;span class="codigo-fonte"&gt;var startTime=(new Date).getTime();&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Define, na variável global &lt;span class="codigo-fonte"&gt;BrowserSupport_&lt;/span&gt;, se o navegador é suportado;&lt;/li&gt;
    &lt;li&gt;Faz verificação dos &lt;a href="http://pt.wikipedia.org/wiki/Cookie" title="Artigo da Wikipédia sobre cookies"&gt;cookies&lt;/a&gt;.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;É óbvio que todo o código JavaScript do Gmail não é apenas aquilo ali em cima. As milhares de linhas de JavaScript que dão vida ao Gmail encontram-se em outro lugar.&lt;/p&gt;
  &lt;p&gt;Finalmente no cabeçalho da página principal também encontramos códigos CSS &lt;em&gt;inline&lt;/em&gt;. Se analisarmos bem, veremos que algumas declarações CSS se repetem. Essas declarações CSS não têm muito valor, pois elas servem apenas para a página inicialmente carregada, que como foi dito no &lt;a href="#inicio_gmail"&gt;início&lt;/a&gt; deste post, possui poucos elementos. Na verdade tudo o que vemos quando carregamos o Gmail está em um... &lt;span class="codigo-fonte"&gt;&lt;a href="http://www.criarsites.com/iframe-o-que-e-como-usar/" title="Artigo sobre iframes"&gt;iframe&lt;/a&gt;&lt;/span&gt;, que é um recurso do HTML que permite inserir uma página HTML dentro de outra.&lt;/p&gt;
  &lt;h3&gt;Os Iframes do Gmail&lt;/h3&gt;
  &lt;p&gt;O coração do Gmail é composto por 4 &lt;span class="codigo-fonte"&gt;iframes&lt;/span&gt;:&lt;/p&gt;
 
      &lt;ul&gt;
        &lt;li&gt;&lt;span class="codigo-fonte"&gt;js_frame&lt;/span&gt;: contém a maioria do código JavaScript da aplicação.&lt;/li&gt;
        &lt;li&gt;&lt;span class="codigo-fonte"&gt;hist_frame&lt;/span&gt;: responsável por manter o histórico da navegação, isto é, permitir o uso dos botões Voltar e Avançar do navegador.&lt;/li&gt;
        &lt;li&gt;&lt;span class="codigo-fonte"&gt;sound_frame&lt;/span&gt;: possui um &lt;a href="http://mail.google.com/mail/im/chatsound.swf" title="Objeto flash do Gmail"&gt;objeto flash&lt;/a&gt; reponsável por emitir os sons do bate-papo.&lt;/li&gt;
        &lt;li&gt;&lt;span class="codigo-fonte"&gt;canvas_frame&lt;/span&gt;: é o único &lt;span class="codigo-fonte"&gt;iframe&lt;/span&gt;&amp;nbsp;que é visível pelo usuário. É nele que fica tudo o que se vê na tela.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;Na figura abaixo podem ser observados os 4 elementos &lt;span class="codigo-fonte"&gt;iframe&lt;/span&gt; do Gmail no corpo da página:&lt;/p&gt;
      &lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/gmail/iframes_gmail.png" alt="Iframes do Gmail" title="Iframes do Gmail" width="600" height="242" class="mceItem importante"&gt;&lt;/p&gt;
      &lt;p&gt;Para cada operação feita no Gmail (pesquisa, paginação etc), o atributo &lt;span class="codigo-fonte"&gt;src&lt;/span&gt; do &lt;span class="codigo-fonte"&gt;iframe&lt;/span&gt; é modificado. Esse atributo indica a página carregada no &lt;span class="codigo-fonte"&gt;iframe&lt;/span&gt;. A modificação desse valor faz com que um novo código seja carregado no &lt;span class="codigo-fonte"&gt;iframe&lt;/span&gt;. Esse novo código então é responsável por atualizar a interface do usuário. Todas as requisições HTTP que acontecem entre a ação do usuário e a atualização da tela são feitas de forma que a latência seja a menor possível.&lt;/p&gt;
      &lt;p&gt;Na figura acima também pode ser vista a &lt;span class="codigo-fonte"&gt;div "loading"&lt;/span&gt;, responsável pela primeira tela que é vista quando o Gmail está sendo carregado. O restante do código-fonte do Gmail é composto por intermináveis elementos com IDs e classes CSS de nomes muito estranhos (vY, nH, diLZtc, dJ, pi e coisas assim), muitas tabelas (já ouviu falar de &lt;em&gt;&lt;a href="http://www.tableless.com.br/" title="Desenvolvimento Web com XHTML e CSS"&gt;tableless&lt;/a&gt;&lt;/em&gt;?) e por aí vai. Claro que quem gera tudo isso automaticamente é o Google Web Toolkit. Dê uma olhada na beleza do código-fonte gerado:&lt;/p&gt;
      &lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/gmail/codigo-fonte-gmail.png" alt="Código-fonte do Gmail" title="Código-fonte do Gmail" width="600" height="369" class="mceItem importante"&gt;&lt;/p&gt;
      &lt;p&gt;Bonito não? Mas o que importa é a saúde, ou seja, se funciona bem, o que no caso do Gmail é verdadeiro.&lt;/p&gt;
      &lt;p&gt;O Gmail utiliza diversas outras técnicas para otimizar o desempenho, como fazer o "&lt;a href="http://www.ataraxia.com.br/posts/otimizacao-em-php-parte-1-minify" title="Artigo sobre otimização em PHP"&gt;minify&lt;/a&gt;" do JavaScript e do CSS, ou seja, remover espaços em branco, diminuir nomes de variáveis, juntar aquivos etc. E também utiliza-se das melhores práticas do &lt;a href="http://developer.yahoo.com/performance/rules.html" title="Best Practices for Speeding Up Your Web Site"&gt;Yahoo &lt;/a&gt;e do próprio &lt;a href="http://code.google.com/speed" title="Let's make the web faster"&gt;Google&lt;/a&gt; para deixar a aplicação mais rápida.&lt;/p&gt;
      &lt;p&gt;Para saber mais sobre o funcionamento do Gmail "por baixo dos panos", há um &lt;a href="http://stanford.wikia.com/wiki/Project_1:_Gmail" title="Artigo sobre o Gmail no wiki da Universidade de Stanford"&gt;excelente artigo&lt;/a&gt; sobre isso no wiki da Universidade de Stanford.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=N7xdWKY8m-I:3o-60SLOEoo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=N7xdWKY8m-I:3o-60SLOEoo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=N7xdWKY8m-I:3o-60SLOEoo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=N7xdWKY8m-I:3o-60SLOEoo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=N7xdWKY8m-I:3o-60SLOEoo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=N7xdWKY8m-I:3o-60SLOEoo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=N7xdWKY8m-I:3o-60SLOEoo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=N7xdWKY8m-I:3o-60SLOEoo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/N7xdWKY8m-I" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/dissecando-o-gmail#comments</comments>
 <category domain="http://cleber.net.br/tags/css">CSS</category>
 <category domain="http://cleber.net.br/tags/disseca%C3%A7%C3%A3o">dissecação</category>
 <category domain="http://cleber.net.br/tags/e-mail">e-mail</category>
 <category domain="http://cleber.net.br/tags/gmail">Gmail</category>
 <category domain="http://cleber.net.br/tags/google">Google</category>
 <category domain="http://cleber.net.br/tags/html">HTML</category>
 <category domain="http://cleber.net.br/tags/javascript">JavaScript</category>
 <category domain="http://cleber.net.br/tags/programa%C3%A7%C3%A3o">programação</category>
 <category domain="http://cleber.net.br/tags/sites">sites</category>
 <pubDate>Wed, 17 Feb 2010 05:23:10 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">21 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/dissecando-o-gmail</feedburner:origLink></item>
<item>
 <title>Bookmarklet para pegar um texto selecionado</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/k1QDagqVDqw/bookmarklet-para-pegar-um-texto-selecionado</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="100" height="100" alt="Bookmarklet" src="http://cleber.net.br/sites/default/files/images/posts/teaser/bookmarklet.jpg?1272771445" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;O &lt;a href="http://pt.wikipedia.org/wiki/Bookmarklet" title="Artigo na Wikipédia sobre bookmarklet"&gt;bookmarklet&lt;/a&gt; é um pequeno programa em JavaScript que é armazenado como uma &lt;abbr title="Uniform Resource Locator" lang="en"&gt;URL&lt;/abbr&gt; nos favoritos do navegador. Entre os usos de um &lt;em&gt;bookmarklet&lt;/em&gt; (também chamado de &lt;em&gt;favlet&lt;/em&gt; ou &lt;em&gt;favelet&lt;/em&gt;) estão:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;modificar a aparência de uma página;&lt;/li&gt;
  &lt;li&gt;extrair dados de uma página;&lt;/li&gt;
  &lt;li&gt;submeter um página para um serviço de validação ou tradução ou qualquer outro serviço;&lt;/li&gt;
  &lt;li&gt;submeter um texto selecionado em uma página para um serviço de busca ou para qualquer outro serviço.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;
&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;Para você criar um &lt;em&gt;bookmarklet &lt;/em&gt;você deve criar um favorito e colocar um trecho de código JavaScript no lugar do endereço (URL) do favorito. Ou, como é mais usado, arrastar um link que tenha o trecho do código para os favoritos do navegador. Estando o &lt;em&gt;bookmarklet &lt;/em&gt;criado, é só você clicar no favorito que foi criado para executar o código, assim como você clica em qualquer outro favorito.&lt;/p&gt;
&lt;h3&gt;Exemplos&lt;/h3&gt;
&lt;p&gt;O Google disponibiliza vários bookmarks em seus serviços (para usá-los arraste o link para os seus favoritos):&lt;/p&gt;

&lt;ul&gt; 
  &lt;li&gt;&lt;a href='javascript:(function(){var a=window,b=document;if(b.body){var c=a.screenLeft||a.screenX;if(c&gt;340)c-=349;else{var d=a.screen.availWidth,e=c+a.outerWidth;c=e&gt;d-331&amp;amp;&amp;amp;c&gt;d-e-9?0:e}a.open("","__SWBM__","location=1,resizable=1,menubar=0,scrollbars=1,status=0,toolbar=0,width=340,height="+((a.outerHeight||768)-58)+",top="+(a.screenTop||a.screenY)+",left="+Math.max(1,c));var f=b.createElement("script");f.src="http://www.google.com/sidewiki/bookmarklet.js?hl=pt-BR";b.body.appendChild(f)};})()' title="Bookmarklet do Sidewiki"&gt;Sidewiki&lt;/a&gt;: abre o Sidewiki da página atual. (&lt;a href="http://www.google.com/support/toolbar/bin/answer.py?hl=pt&amp;amp;answer=164493" title="Ajuda do Bookmarklet do Sidewiki"&gt;saiba mais&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;a href="javascript:(function(){var%20d=document,l=d.location,e=encodeURIComponent,u='http://promote.orkut.com/preview?src=bkmrklt&amp;amp;v=1&amp;amp;nt=orkut.com&amp;amp;du='+e(l.href)+'&amp;amp;tt='+e(d.title),s='&amp;amp;rdrinl=1';if(!window.open(u,'','height=575,width=700,directories=0,location=1,menubar=0,resizable=0,scrollbars=1,status=1,toolbar=0'))l.href=u+s;})();" title="Botão de 'compartilhar no orkut'"&gt;Orkut&lt;/a&gt;: compartilha conteúdo pelo orkut. (&lt;a href="http://www.google.com/support/orkut/bin/answer.py?hl=pt-br&amp;amp;answer=168105" title="Ajuda do botão de 'compartilhar no orkut'"&gt;saiba mais&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;a href='javascript:(function(){var a=window,b=document,c=encodeURIComponent,d=a.open("http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk="+c(b.location)+"&amp;amp;title="+c(b.title),"bkmk_popup","left="+((a.screenX||a.screenLeft)+10)+",top="+((a.screenY||a.screenTop)+10)+",height=420px,width=550px,resizable=1,alwaysRaised=1");a.setTimeout(function(){d.focus()},300)})();' title="Favoritos do Google"&gt;Favoritos do Google&lt;/a&gt;: adiciona a página atual no serviço de &lt;a href="http://www.google.com/bookmarks/?hl=pt_BR" title="Favoritos do Google"&gt;favoritos&lt;/a&gt; do Google. (&lt;a href="http://www.google.com/support/chrome/bin/answer.py?hl=pt_BR&amp;amp;answer=100215" title="Ajuda do bookmarklet dos Favoritos do Google"&gt;saiba mais&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;a href="javascript:popw='';Q='';x=document;y=window;if(x.selection) {Q=x.selection.createRange().text;} else if (y.getSelection) {Q=y.getSelection();} else if (x.getSelection) {Q=x.getSelection();}popw = y.open('http://www.blogger.com/blog_this.pyra?t=' + escape(Q) + '&amp;amp;u=' + escape(location.href) + '&amp;amp;n=' + escape(document.title),'bloggerForm','scrollbars=no,width=475,height=300,top=175,left=75,status=yes,resizable=yes');if (!document.all) T = setTimeout('popw.focus()',50);void(0);" title="Bookmarklet BlogThis!"&gt;BlogThis!&lt;/a&gt;: cria uma postagem no &lt;a href="http://www.blogger.com/" title="Blogger"&gt;Blogger&lt;/a&gt; com um link da página atual. (&lt;a href="http://www.google.com/support/blogger/bin/answer.py?hl=pt_BR&amp;amp;answer=41469" title="Ajuda do BlogThis!"&gt;saiba mais&lt;/a&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;a href="javascript:var t=((window.getSelection&amp;amp;&amp;amp;window.getSelection())||(document.getSelection&amp;amp;&amp;amp;document.getSelection())||(document.selection&amp;amp;&amp;amp;document.selection.createRange&amp;amp;&amp;amp;document.selection.createRange().text));var e=(document.charset||document.characterSet);if(t!=''){location.href='http://translate.google.com/?text='+t+'&amp;amp;hl=en&amp;amp;langpair=auto|pt&amp;amp;tbb=1&amp;amp;ie='+e;}else{location.href='http://translate.google.com/translate?u='+escape(location.href)+'&amp;amp;hl=en&amp;amp;langpair=auto|pt&amp;amp;tbb=1&amp;amp;ie='+e;};" title="Bookmarklet para traduzir para o português"&gt;Traduzir&lt;/a&gt;: traduz o texto selecionado ou uma página inteira para o português. (&lt;a href="http://translate.google.com/translate_buttons" title="Bookmarklets de tradução do Google"&gt;saiba mais&lt;/a&gt;)&lt;/li&gt; 
&lt;/ul&gt;

&lt;p&gt;Vou usar o exemplo do &lt;em&gt;bookmarklet&lt;/em&gt; de tradução do Google para criar um &lt;em&gt;bookmarklet&lt;/em&gt; que faça uma busca neste &lt;a href="http://cleber.net.br" title="Blog do Cleber"&gt;blog&lt;/a&gt; com o texto selecionado em uma página.&lt;/p&gt;
&lt;p&gt;O código JavaScript do &lt;em&gt;bookmarklet&lt;/em&gt; que faz a tradução usando o serviço do Google é o seguinte:&lt;/p&gt;
&lt;div class="geshifilter"&gt;&lt;table class="javascript geshifilter-javascript" style="font-family:monospace;"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td style="width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; t &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;window.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; window.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;document.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; document.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;document.&lt;span style="color: #660066;"&gt;selection&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; document.&lt;span style="color: #660066;"&gt;selection&lt;/span&gt;.&lt;span style="color: #660066;"&gt;createRange&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; document.&lt;span style="color: #660066;"&gt;selection&lt;/span&gt;.&lt;span style="color: #660066;"&gt;createRange&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #660066;"&gt;text&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; e &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;document.&lt;span style="color: #660066;"&gt;charset&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; document.&lt;span style="color: #660066;"&gt;characterSet&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000066; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;t &lt;span style="color: #339933;"&gt;!=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;''&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; location.&lt;span style="color: #660066;"&gt;href&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'http://translate.google.com.br/translate_t?text='&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; t &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'&amp;amp;hl=pt-BR&amp;amp;langpair=auto|pt&amp;amp;tbb=1&amp;amp;ie='&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; e&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; location.&lt;span style="color: #660066;"&gt;href&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'http://translate.google.com.br/translate?u='&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; escape&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;location.&lt;span style="color: #660066;"&gt;href&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'&amp;amp;hl=pt-BR&amp;amp;langpair=auto|pt&amp;amp;tbb=1&amp;amp;ie='&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; e&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Na linha 1, o programa tenta pegar o texto que está selecionado para armazená-lo na variável &lt;span class="codigo-fonte"&gt;t&lt;/span&gt;. Na linha 2 ele armazena o &lt;em&gt;&lt;a href="http://pt.wikipedia.org/wiki/Codifica%C3%A7%C3%A3o" title="Artigo na Wikipédia sobre codificação"&gt;encoding&lt;/a&gt;&lt;/em&gt; de caracteres da página na variável &lt;span class="codigo-fonte"&gt;e&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;E por último ele faz uma verificação: se algum texto foi selecionado, o valor das variáveis &lt;span class="codigo-fonte"&gt;t&lt;/span&gt; e &lt;span class="codigo-fonte"&gt;e&lt;/span&gt; são passados com parâmetros na URL de tradução que será carregada.&amp;amp;nbsp;Se nenhum texto foi selecionado, a URL da página atual (&lt;span class="codigo-fonte"&gt;location.href&lt;/span&gt;) será passada como parâmetro:&lt;/p&gt;
&lt;p&gt;As URLs do serviço de tradução do Google são:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span class="codigo-fonte"&gt;http://translate.google.com.br/translate_t&lt;/span&gt;: para traduzir textos&lt;/li&gt;
  &lt;li&gt;&lt;span class="codigo-fonte"&gt;http://translate.google.com.br/translate&lt;/span&gt;: para traduzir páginas inteiras&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;E os parâmetros que devem ser passados são:&lt;/div&gt;
&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;span class="codigo-fonte"&gt;text&lt;/span&gt;: o texto a ser traduzido;&lt;/li&gt;
    &lt;li&gt;&lt;span class="codigo-fonte"&gt;u&lt;/span&gt;: a URL a ser traduzida;&lt;/li&gt;
    &lt;li&gt;&lt;span class="codigo-fonte"&gt;hl&lt;/span&gt;: o idioma da interface (&lt;em&gt;host language&lt;/em&gt;);&lt;/li&gt;
    &lt;li&gt;&lt;span class="codigo-fonte"&gt;langpair&lt;/span&gt;: o par de linguagens que será usado para a tradução. No exemplo é usado &lt;span class="codigo-fonte"&gt;auto|pt&lt;/span&gt;, ou seja detecta o idioma de origem automaticamente e traduz para o português;&lt;/li&gt;
    &lt;li&gt;&lt;span class="codigo-fonte"&gt;ie&lt;/span&gt;: encoding da página.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Vamos criar agora o &lt;em&gt;bookmarklet &lt;/em&gt;que fará a busca em nosso blog por qualquer texto selecionado. Ele será idêntico ao exemplo mostrado acima, a única diferença é que a URL para o qual será passado o parâmetro (o texto selecionado) será:&lt;/p&gt;
&lt;p class="codigo-fonte"&gt;http://cleber.net.br/search/node/&lt;strong&gt;[parametro]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;E no caso de nenhum texto estar selecionado, será exibido uma caixa de diálogo pedindo algum texto:&lt;/p&gt;
&lt;div class="geshifilter"&gt;&lt;table class="javascript geshifilter-javascript" style="font-family:monospace;"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td style="width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;1
2
3
4
5
6
7
8
9
10
11
&lt;/pre&gt;&lt;/td&gt;&lt;td style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; t &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;window.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; window.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;document.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; document.&lt;span style="color: #660066;"&gt;getSelection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;document.&lt;span style="color: #660066;"&gt;selection&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; document.&lt;span style="color: #660066;"&gt;selection&lt;/span&gt;.&lt;span style="color: #660066;"&gt;createRange&lt;/span&gt; &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; document.&lt;span style="color: #660066;"&gt;selection&lt;/span&gt;.&lt;span style="color: #660066;"&gt;createRange&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #660066;"&gt;text&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #000066; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;t &lt;span style="color: #339933;"&gt;!=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;''&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; location.&lt;span style="color: #660066;"&gt;href&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'http://cleber.net.br/search/node/'&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; t&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000066;"&gt;prompt&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'Era para você selecionar um texto errr! Agora digite um abaixo:'&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;''&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000066; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;t &lt;span style="color: #339933;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; t &lt;span style="color: #339933;"&gt;!=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;''&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; location.&lt;span style="color: #660066;"&gt;href&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'http://cleber.net.br/search/node/'&lt;/span&gt; &lt;span style="color: #339933;"&gt;+&lt;/span&gt; t&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;else&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000066;"&gt;alert&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'Desisto!'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Para utilizar este &lt;em&gt;bookmarklet&lt;/em&gt;, arraste o botão abaixo para a sua barra de favoritos. Depois em qualquer página que você estiver é só clicar nele.&lt;/p&gt;
&lt;p&gt;&lt;a href="javascript:var t = ((window.getSelection &amp;&amp; window.getSelection()) || (document.getSelection &amp;&amp; document.getSelection()) || (document.selection &amp;&amp; document.selection.createRange &amp;&amp; document.selection.createRange().text)); if (t != '') { 	location.href = 'http://cleber.net.br/search/node/' + t; } else { 	t = prompt('Era para você selecionar um texto errr! Agora digite um abaixo:', ''); 	if (t &amp;&amp; t != '') { 		location.href = 'http://cleber.net.br/search/node/' + t; 	} else { 		alert('Desisto!'); 	} };" title="Bookmarklet para pesquisa em cleber.net.br" style="font-size: 14px; font-weight: bold; color: #3366cc; text-decoration: none; background-color: #e5ecf9; display: block; width: 190px; height: 17px; border: 1px solid #3366cc; padding: 3px; margin: auto;"&gt;Buscar em cleber.net.br&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abaixo alguns links com diretórios de &lt;em&gt;bookmarklets&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.marklets.com/bookmarklets/"&gt;http://www.marklets.com/bookmarklets/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.bookmarklets.com/tools/categor.html"&gt;http://www.bookmarklets.com/tools/categor.html&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://www.squarefree.com/bookmarklets/"&gt;https://www.squarefree.com/bookmarklets/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=k1QDagqVDqw:DS1-tF3oJfE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=k1QDagqVDqw:DS1-tF3oJfE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=k1QDagqVDqw:DS1-tF3oJfE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=k1QDagqVDqw:DS1-tF3oJfE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=k1QDagqVDqw:DS1-tF3oJfE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=k1QDagqVDqw:DS1-tF3oJfE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=k1QDagqVDqw:DS1-tF3oJfE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=k1QDagqVDqw:DS1-tF3oJfE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/k1QDagqVDqw" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/bookmarklet-para-pegar-um-texto-selecionado#comments</comments>
 <category domain="http://cleber.net.br/tags/bookmarklet">bookmarklet</category>
 <category domain="http://cleber.net.br/tags/c%C3%B3digo-fonte">código-fonte</category>
 <category domain="http://cleber.net.br/tags/dica">dica</category>
 <category domain="http://cleber.net.br/tags/javascript">JavaScript</category>
 <category domain="http://cleber.net.br/tags/programa%C3%A7%C3%A3o">programação</category>
 <pubDate>Fri, 25 Dec 2009 15:59:17 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">17 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/bookmarklet-para-pegar-um-texto-selecionado</feedburner:origLink></item>
<item>
 <title>Exibir o favicon de qualquer site</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/MS_tksNMHAM/exibir-o-favicon-de-qualquer-site</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="150" height="96" alt="Favicons" src="http://cleber.net.br/sites/default/files/images/posts/teaser/favicons.jpg?1272132567" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Qualquer site que se preze possui um &lt;em&gt;favicon&lt;/em&gt;, abreviação do inglês &lt;em&gt;favorites icon&lt;/em&gt;, ou ícone dos favoritos, que nada mais é do que uma imagem (ou ícone) associada a um site. &lt;a href="http://www.google.com.br/search?q=favicon+generator" title="Serviços para geração de favicon"&gt;Criar um &lt;/a&gt;&lt;em&gt;&lt;a href="http://www.google.com.br/search?q=favicon+generator" title="Serviços para geração de favicon"&gt;favicon&lt;/a&gt;&lt;/em&gt;&amp;nbsp;é fácil. Por isso é interessante colocar o &lt;em&gt;favicon&lt;/em&gt; de um site junto com o seu link. Muitos serviços já fazem isso, como o &lt;a href="http://www.google.com.br/profiles/clrech" title="Meu perfil no Google Profile"&gt;Google Profile&lt;/a&gt;, que exibe os &lt;em&gt;favicons&lt;/em&gt; dos links associados ao perfil.&lt;!--break--&gt;&lt;/p&gt;
&lt;h3&gt;&lt;a class="mceItem" id="metodos_favicon"&gt;&lt;/a&gt;Métodos para inserir um favicon&lt;/h3&gt;
&lt;p&gt;O significado original da definição de um &lt;em&gt;favicon &lt;/em&gt;surgiu com o &lt;a href="http://desciclo.pedia.ws/wiki/Microsoft_Internet_Explorer" title="Informações sobre o Internet Explorer"&gt;Internet Explorer 4&lt;/a&gt; e consistia em colocar um arquivo chamado &lt;span class="codigo-fonte"&gt;favicon.ico&lt;/span&gt; no diretório raíz do servidor web. Assim, automaticamente o navegador pegaria esse ícone e usaria na exibição dos favoritos. Os navegadores atuais suportam qualquer outro formato de imagem além do formato &lt;a href="http://en.wikipedia.org/wiki/ICO_(file_format)" title="Informações sobre o formato ICO"&gt;ICO&lt;/a&gt; do Windows.&lt;/p&gt;
&lt;p&gt;Como não existe um método padrão para incluir uma imagem em uma página como um &lt;em&gt;favicon&lt;/em&gt;, muitos programadores utilizam mais de um método ao mesmo tempo. São basicamente três maneiras:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Usar a &lt;em&gt;meta tag&lt;/em&gt; &lt;span class="codigo-fonte"&gt;&amp;lt;link rel="icon" type="image/png" href="http://exemplo.com.br/icone.png"&amp;gt;&lt;/span&gt; no cabeçalho da página. Esse é o &lt;a href="http://www.w3.org/2005/10/howto-favicon" title="Site da W3C com os métodos para adicionar um favicon"&gt;método&lt;/a&gt;&amp;nbsp;recomendado pela &lt;abbr title="World Wide Web Consortium" lang="en"&gt;W3C&lt;/abbr&gt;.&lt;/li&gt;
  &lt;li&gt;Usar a &lt;em&gt;meta tag&lt;/em&gt; &lt;span class="codigo-fonte"&gt;&amp;lt;link rel="shortcut icon" type="image/x-icon" href="http://cleber.net.br/favicon.ico" /&amp;gt;&lt;/span&gt; no cabeçalho da página. Esse é o método mais usado e é reconhecido pela maioria dos navegadores.&lt;/li&gt;
  &lt;li&gt;Colocar o &lt;em&gt;favicon&lt;/em&gt; como um arquivo chamado &lt;span class="codigo-fonte"&gt;favicon.ico&lt;/span&gt;&amp;nbsp;no diretório raíz da página. Todos os navegadores suportam esse método por razões de compatibilidade, mas é o menos flexível.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Jeito Google de ser&lt;/h3&gt;
&lt;p&gt;Por falta de um padrão, não existe uma forma fácil de se exibir o &lt;em&gt;favicon &lt;/em&gt;de qualquer site. O &lt;a href="http://googlediscovery.com/2009/02/25/google-shared-stuff-sera-descontinuado/" title="Notícia sobre a morte do Google Shared Stuff"&gt;falecido&lt;/a&gt; serviço &lt;a href="http://www.google.com/s2/sharing/stuff" title="Antigo link do Google Shared Stuff"&gt;Google Shared Stuff&lt;/a&gt; (S2) não existe mais, mas deixou uma herança: uma &lt;abbr title="Uniform Resource Locator" lang="en"&gt;URL&lt;/abbr&gt; que permite recuperar o &lt;em&gt;favicon &lt;/em&gt;dos sites. A URL retorna uma imagem no formato &lt;abbr title="Portable Network Graphics"&gt;PNG&lt;/abbr&gt; com tamanho 16x16 e que pode ser exibida via &lt;abbr title="HyperText Markup Language" lang="en"&gt;HTML&lt;/abbr&gt; usando a &lt;em&gt;tag&lt;/em&gt; &lt;span class="codigo-fonte"&gt;img&lt;/span&gt;, no seguinte formato:&lt;/p&gt;
&lt;p class="codigo-fonte"&gt;http://www.google.com/s2/favicons?domain=[url]&lt;/p&gt;
&lt;p&gt;Onde&amp;nbsp;&lt;span class="codigo-fonte"&gt;[url]&lt;/span&gt;&amp;nbsp;deve ser substituído pela URL do site do qual se deseja pegar o &lt;em&gt;favicon&lt;/em&gt;. Por exemplo, veja o seguinte código HTML:&lt;/p&gt;
&lt;div class="geshifilter"&gt;&lt;table class="html4strict geshifilter-html4strict" style="font-family:monospace;"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td style="width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;1
&lt;/pre&gt;&lt;/td&gt;&lt;td style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;pre style="font-family: monospace; font-weight: normal; font-style: normal"&gt;&lt;span style="color: #009900;"&gt;&amp;lt;&lt;span style="color: #000000; font-weight: bold;"&gt;img&lt;/span&gt; &lt;span style="color: #000066;"&gt;src&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;http://www.google.com/s2/favicons?domain=g1.com.br&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;title&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;Favicon do g1.com.br&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;height&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;16&amp;quot;&lt;/span&gt; &lt;span style="color: #000066;"&gt;width&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;16&amp;quot;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;O resultado visto no navegador será a seguinte imagem: &lt;img src="http://www.google.com/s2/favicons?domain=g1.com.br" alt="Favicon" title="Favicon do site g1.com.br" width="16" height="16" class="mceItem inline"&gt;&lt;/p&gt;
&lt;p&gt;Mas existe um problema&amp;nbsp;&lt;em&gt;(&lt;/em&gt;&lt;em&gt;Google fail&lt;/em&gt;)&amp;nbsp;nessa URL do Google: ela só funciona quando o nome do arquivo for &lt;span class="codigo-fonte"&gt;favicon.ico&lt;/span&gt;.&amp;nbsp;Mas muitos sites utilizam outros métodos para inserir o &lt;em&gt;favicon&lt;/em&gt;. Então, quando a URL do Google não acha o arquivo &lt;span class="codigo-fonte"&gt;favicon.ico&lt;/span&gt;, ela exibe uma imagem &lt;abbr title="Graphics Interchange Format" lang="en"&gt;GIF&lt;/abbr&gt; do &lt;a href="http://pt.wikipedia.org/wiki/Terra" title="Saiba mais sobre o nosso planeta"&gt;planeta Terra&lt;/a&gt;. Por exemplo, o site &lt;a href="http://www.md.utfpr.edu.br/" title="Universidade Tecnológica Federal do Paraná - Campus Medianeira"&gt;www.md.utfpr.edu.br&lt;/a&gt; não possui um arquivo chamado &lt;span class="codigo-fonte"&gt;favicon.ico&lt;/span&gt; na sua raíz, então a seguinte imagem será exibida:&amp;nbsp;&lt;img src="http://www.google.com/s2/favicons?domain=www.md.utfpr.edu.br" alt="Favicon" title="Favicon do site cleber.net.br" width="16" height="16" class="mceItem inline"&gt;. Passando o parâmetro &lt;span class="codigo-fonte"&gt;&amp;amp;alt=feed&lt;/span&gt; junto com a URL, será exibida a imagem padrão dos &lt;em&gt;feeds &lt;/em&gt;RSS caso não seja encontrado o &lt;em&gt;favicon&lt;/em&gt;. Por exemplo, a URL&amp;nbsp;&lt;a href="http://s2.googleusercontent.com/s2/favicons?domain=www.md.utfpr.edu.br&amp;amp;alt=feed" title="Favicon de www.md.utfpr.edu.br"&gt;http://s2.googleusercontent.com/s2/favicons?domain=www.md.utfpr.edu.br&amp;amp;alt=feed&lt;/a&gt;&amp;nbsp;retorna a seguinte imagem: &lt;img src="http://s2.googleusercontent.com/s2/favicons?domain=www.md.utfpr.edu.br&amp;amp;alt=feed" alt="Favicon" title="Favicon de www.md.utfpr.edu.br" width="16" height="16" class="inline mceItem"&gt;&lt;/p&gt;
&lt;p&gt;Apesar de não ser o melhor, &lt;a href="http://www.google.com/codesearch?q=%22s2/favicons%3Fdomain%22&amp;amp;hl=pt-BR&amp;amp;btnG=Pesquisar+c%C3%B3digo" title="Projetos utilizando a URL do Google"&gt;muitos projetos&lt;/a&gt; utilizam essa URL.&amp;nbsp;Você pode testar o serviço aqui, colocando a URL de um site (ex.: cleber.net.br)&lt;/p&gt;
&lt;form action="http://www.google.com/s2/favicons" enctype="text/plain" method="get"&gt;
  &lt;input name="domain" size="50" type="text"&gt;
  &amp;nbsp;
  &lt;input type="submit" value="Pegar o favicon"&gt;
&lt;/form&gt;
&lt;h3&gt;getfavicon.org&lt;/h3&gt;
&lt;p&gt;O site &lt;a href="http://www.getfavicon.org/" title="getfavicon.org"&gt;getfavicon.org&lt;/a&gt;&amp;nbsp;possui um serviço melhorado.&amp;nbsp;Ele&amp;nbsp;&lt;a href="http://www.getfavicon.org/results.php?url=cleber.net.br" title="Lista de métodos usado para inserir o favicon no site cleber.net.br"&gt;lista&lt;/a&gt; todos os métodos usados em um site para inserir um&amp;nbsp;&lt;em&gt;favicon&lt;/em&gt;&amp;nbsp;e permite várias configurações de exibição, usando a seguinte URL:&lt;/p&gt;
&lt;p class="codigo-fonte"&gt;http://www.getfavicon.org/?url=[url]/[nome].[extensao]&lt;/p&gt;
&lt;p&gt;Onde:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span class="codigo-fonte"&gt;[url]&lt;/span&gt;: a URL do site&amp;nbsp;do site do qual se deseja pegar o &lt;em&gt;favicon&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span class="codigo-fonte"&gt;[nome]&lt;/span&gt;: um nome qualquer para o arquivo&lt;/li&gt;
  &lt;li&gt;&lt;span class="codigo-fonte"&gt;[extensao]&lt;/span&gt;: formato da imagem que será gerada. Pode ser &lt;span class="codigo-fonte"&gt;png&lt;/span&gt;, &lt;span class="codigo-fonte"&gt;gif&lt;/span&gt;, &lt;span class="codigo-fonte"&gt;jpg&lt;/span&gt; ou &lt;span class="codigo-fonte"&gt;ico&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A imagem gerada possui resolução padrão de 16x16. É possível definir uma resolução para a imagem, usando a URL&amp;nbsp;&lt;span class="codigo-fonte"&gt;http://www.getfavicon.org/?url=[url]/[nome].[resolucao].[extensao]&lt;/span&gt;, onde &lt;span class="codigo-fonte"&gt;[resolução]&lt;/span&gt; deve ser substituído pelo valor (no máximo 128).&lt;/p&gt;
&lt;p&gt;Você pode testar o serviço aqui, colocando a URL de um site (ex.: cleber.net.br). &lt;/p&gt;
&lt;form action="http://www.getfavicon.org/submit.php" enctype="text/plain" method="get"&gt;
  &lt;input name="url" size="50" type="text"&gt;
  &amp;nbsp;
  &lt;input type="submit" value="Pegar o favicon"&gt;
&lt;/form&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Veja alguns exemplos:&lt;/p&gt;
&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;img src="http://www.getfavicon.org/?url=cleber.net.br/favicon.png" alt="Favicon" title="PNG 16x16" width="16" height="16" style="border: 0px none initial;" class="mceItem"&gt;&lt;/td&gt;
      &lt;td&gt;PNG:&amp;nbsp;&lt;a href="http://www.getfavicon.org/?url=cleber.net.br/favicon.png" style="color: #027ac6; text-decoration: none;"&gt;http://www.getfavicon.org/?url=cleber.net.br/favicon.png&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;img src="http://www.getfavicon.org/?url=cleber.net.br/favicon.jpg" alt="Favicon" title="JPG 16x16" width="16" height="16" style="border: 0px none initial;" class="mceItem"&gt;&lt;/td&gt;
      &lt;td&gt;JPG:&amp;nbsp;&lt;a href="http://www.getfavicon.org/?url=cleber.net.br/favicon.jpg" style="color: #027ac6; text-decoration: none;"&gt;http://www.getfavicon.org/?url=cleber.net.br/favicon.jpg&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;img src="http://www.getfavicon.org/?url=cleber.net.br/favicon.25.gif" alt="Favicon" title="GIF 25x25" width="25" height="25" style="border: 0px none initial;" class="mceItem"&gt;&lt;/td&gt;
      &lt;td&gt;GIF 25x25:&amp;nbsp;&lt;a href="http://www.getfavicon.org/?url=cleber.net.br/favicon.25.gif" style="color: #027ac6; text-decoration: none;"&gt;http://www.getfavicon.org/?url=cleber.net.br/favicon.25.gif&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;img src="http://www.getfavicon.org/?url=cleber.net.br/favicon.32.png" alt="Favicon" title="PNG 32x32" width="32" height="32" style="border: 0px none initial;" class="mceItem"&gt;&lt;/td&gt;
      &lt;td&gt;PNG 32x32:&amp;nbsp;&lt;a href="http://www.getfavicon.org/?url=cleber.net.br/favicon.32.png" style="color: #027ac6; text-decoration: none;"&gt;http://www.getfavicon.org/?url=cleber.net.br/favicon.32.png&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/favicons-cleber-net-br.png" alt="Lista de favicons" title="Lista de favicons para do site cleber.net.br" width="450" height="437" class="mceItem importante"&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;em&gt;Lista de favicons para do site cleber.net.br&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;getfavicon.appspot.com&lt;/h3&gt;
&lt;p&gt;Esse &lt;a href="http://getfavicon.appspot.com/" title="getfavicon.appspot.com"&gt;site&lt;/a&gt;, construído usando o &lt;a href="http://code.google.com/intl/pt-BR/appengine/" title="Site do Google App Engine"&gt;Google App Engine&lt;/a&gt;, é o mais inteligente. Ele recupera o &lt;em&gt;favicon &lt;/em&gt;fazendo uma busca também na &lt;em&gt;tag &lt;/em&gt;&lt;span class="codigo-fonte"&gt;link&lt;/span&gt; do cabeçalho. A URL deve ser usada no seguinte formato:&lt;/p&gt;
&lt;p class="codigo-fonte"&gt;http://getfavicon.appspot.com/[url]&lt;/p&gt;
&lt;p&gt;Onde &lt;span class="codigo-fonte"&gt;[url]&lt;/span&gt; é a URL completa do site, incluindo os protocolos &lt;abbr title="HyperText Transfer Protocol" lang="en"&gt;HTTP&lt;/abbr&gt; ou &lt;abbr title="HyperText Transfer Protocol Secure"&gt;HTTPS&lt;/abbr&gt;. Por exemplo, o &lt;em&gt;favicon&lt;/em&gt; do site&amp;nbsp;&lt;a href="http://www.md.utfpr.edu.br/" title="Universidade Tecnológica Federal do Paraná - Campus Medianeira"&gt;www.md.utfpr.edu.br&lt;/a&gt;, que nos serviços anteriores não era encontrado, pode ser exibido usando a URL&amp;nbsp;&lt;a href="http://getfavicon.appspot.com/http://www.md.utfpr.edu.br" title="Favicon de www.md.utfpr.edu.br"&gt;http://getfavicon.appspot.com/http://www.md.utfpr.edu.br&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Veja o favicon: &lt;img src="http://getfavicon.appspot.com/http://www.md.utfpr.edu.br" alt="Favicon" title="Favicon de www.md.utfpr.edu.br" width="48" height="48" class="inline mceItem"&gt;&lt;/p&gt;
&lt;p&gt;Você pode testar o serviço aqui, colocando a URL completa de um site (ex.: http://cleber.net.br).&lt;/p&gt;
&lt;form action="http://getfavicon.appspot.com/_do" method="get"&gt;
  &lt;input name="url" size="50" type="text"&gt;
  &amp;nbsp;
  &lt;input type="submit" value="Pegar o favicon"&gt;
&lt;/form&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=MS_tksNMHAM:gPTQN0-M3sU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=MS_tksNMHAM:gPTQN0-M3sU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=MS_tksNMHAM:gPTQN0-M3sU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=MS_tksNMHAM:gPTQN0-M3sU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=MS_tksNMHAM:gPTQN0-M3sU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=MS_tksNMHAM:gPTQN0-M3sU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=MS_tksNMHAM:gPTQN0-M3sU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=MS_tksNMHAM:gPTQN0-M3sU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/MS_tksNMHAM" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/exibir-o-favicon-de-qualquer-site#comments</comments>
 <category domain="http://cleber.net.br/tags/c%C3%B3digo-fonte">código-fonte</category>
 <category domain="http://cleber.net.br/tags/dica">dica</category>
 <category domain="http://cleber.net.br/tags/favicon">favicon</category>
 <category domain="http://cleber.net.br/tags/ferramenta">ferramenta</category>
 <category domain="http://cleber.net.br/tags/website">website</category>
 <pubDate>Wed, 25 Nov 2009 18:08:25 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">11 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/exibir-o-favicon-de-qualquer-site</feedburner:origLink></item>
<item>
 <title>CSS Sprite</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/-a8Xy0yHwz8/css-sprite</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="50" height="94" alt="Sprite" src="http://cleber.net.br/sites/default/files/images/posts/teaser/sprite.png?1272132605" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Uma técnica muito utilizada em  websites e sistemas web para diminuir o tráfego de banda e  otimizar o desempenho é o &lt;em&gt;CSS Sprite&lt;/em&gt;. A técnica consiste em juntar  várias imagens em uma imagem só e utilizar os recursos do &lt;abbr title="Cascading Style Sheets"&gt;CSS&lt;/abbr&gt; para  definir qual imagem será exibida. O tráfego de banda é menor por que ao  invés de várias requisições para o servidor o navegador faz uma  requisição apenas. Além disso, com menos requisições simultâneas, a  página carrega mais rápido.&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;As propriedades do CSS responsáveis pela mágica são  basicamente as seguintes:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;span class="codigo-fonte"&gt;background-image&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span class="codigo-fonte"&gt;background-position&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Com &lt;span class="codigo-fonte"&gt;background-image&lt;/span&gt; você define a imagem e com o &lt;span class="codigo-fonte"&gt;background-position&lt;/span&gt; você indica qual parte da imagem deve aparecer.&amp;nbsp;&lt;a href="http://www.google.com.br/search?hl=pt-BR&amp;amp;q=css+sprite&amp;amp;meta=lr%3Dlang_pt&amp;amp;aq=f&amp;amp;oq="&gt;Vários tutoriais&lt;/a&gt; explicam melhor como utilizar a técnica e existem até &lt;a href="http://www.google.com.br/search?hl=pt-BR&amp;amp;q=css+sprite+generator"&gt;geradores&lt;/a&gt; de imagem e classes CSS.&lt;/p&gt;
&lt;p&gt;No seu site de busca, o Google utiliza uma imagem  no formato PNG chamada de &lt;span class="codigo-fonte"&gt;nav_logo.png&lt;/span&gt; (navegação + logo). Na verdade  são várias versões da imagem. Cada nova versão da imagem é identificada  com um número no final e colocada no endereço &lt;span class="codigo-fonte"&gt;www.google.com.br/images&lt;/span&gt;. Confira todas as versões:&lt;/p&gt;
&lt;table style="width: 100%;"&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo2.png"&gt;nav_logo2.png&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo3.png"&gt;nav_logo3.png&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo4.png"&gt;nav_logo4.png&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo2.png"&gt;&lt;img src="http://www.google.com.br/images/nav_logo2.png" alt="nav_logo2.png" title="nav_logo2.png" width="150" height="123" class="mceItem"&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo.png"&gt;&lt;img src="http://www.google.com.br/images/nav_logo3.png" alt="nav_logo3.png" title="nav_logo3.png" width="150" height="105" class="mceItem"&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo4.png"&gt;&lt;img src="http://www.google.com.br/images/nav_logo4.png" alt="nav_logo4.png" title="nav_logo4.png" width="168" height="119" class="mceItem"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo5.png"&gt;nav_logo5.png&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo6.png"&gt;nav_logo6.png&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo7.png"&gt;nav_logo7.png&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo5.png"&gt;&lt;img src="http://www.google.com.br/images/nav_logo5.png" alt="nav_logo5.png" title="nav_logo5.png" width="142" height="106" class="mceItem"&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo6.png"&gt;&lt;img src="http://www.google.com.br/images/nav_logo6.png" alt="nav_logo6.png" title="nav_logo6.png" width="150" height="106" class="mceItem"&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href="http://www.google.com.br/images/nav_logo7.png"&gt;&lt;img src="http://www.google.com.br/images/nav_logo7.png" alt="nav_logo7.png" title="nav_logo7.png" width="164" height="106" class="mceItem"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Um detalhe é que todas as imagens trazem o botão do &lt;a href="http://checkout.google.com"&gt;Google Checkout&lt;/a&gt;,  o serviço de compras do Google. No entanto, esse serviço não está  disponível no Brasil. Levando em consideração que a imagem possui um  tamanho de&amp;nbsp;5,27 KB, aproximadamente &lt;a href="http://cleber.net.br/sites/default/files/images/posts/nav_logo7_google_checkout.png" title="Logo do Google Checkout que faz parte do arquivo nav_logo7.png"&gt;4,45 KB&lt;/a&gt; são utilizados pela imagem do  botão. O tempo de vida da imagem no cache do navegador (&lt;em&gt;max-age&lt;/em&gt;) é de  um ano (3153600 segundos). O Brasil tem &lt;a href="http://idgnow.uol.com.br/internet/2009/08/20/numero-de-internautas-no-brasil-cresce-10-em-um-mes-aponta-ibope/" title="Número de internautas no Brasil cresce 10% em um mês, aponta Ibope"&gt;33 milhões de internautas&lt;/a&gt;&lt;a href="http://idgnow.uol.com.br/internet/2009/08/20/numero-de-internautas-no-brasil-cresce-10-em-um-mes-aponta-ibope/"&gt;&lt;/a&gt; e a maioria usa o Google como ferramenta de busca. Conclusão: o Google desperdiça por ano &lt;a href="http://www.google.com.br/search?hl=pt-BR&amp;amp;rlz=1B3GGGL_pt-BRBR256BR256&amp;amp;q=%284%2C45+*+33000000+kilobytes%29+in+gigabytes&amp;amp;btnG=Pesquisar&amp;amp;meta=&amp;amp;aq=f&amp;amp;oq="&gt;&lt;strong&gt;140 GB&lt;/strong&gt;&lt;/a&gt; em  tráfego de banda por causa de apenas uma imagem! Para o Google, isso não é nada. Afinal, o YouTube &lt;a href="http://www.adnews.com.br/internet.php?id=86633" title="Google perde US$ 470 milhões por causa do YouTube"&gt;gasta US$ 399 milhões&lt;/a&gt; com tráfego de banda e os seus lucros não conseguem cobrir esse valor.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=-a8Xy0yHwz8:mXBNV5fGuII:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=-a8Xy0yHwz8:mXBNV5fGuII:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=-a8Xy0yHwz8:mXBNV5fGuII:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=-a8Xy0yHwz8:mXBNV5fGuII:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=-a8Xy0yHwz8:mXBNV5fGuII:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=-a8Xy0yHwz8:mXBNV5fGuII:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=-a8Xy0yHwz8:mXBNV5fGuII:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=-a8Xy0yHwz8:mXBNV5fGuII:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/-a8Xy0yHwz8" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/css-sprite#comments</comments>
 <category domain="http://cleber.net.br/tags/an%C3%A1lise">análise</category>
 <category domain="http://cleber.net.br/tags/css">CSS</category>
 <category domain="http://cleber.net.br/tags/google">Google</category>
 <category domain="http://cleber.net.br/tags/tecnologia">tecnologia</category>
 <pubDate>Sat, 31 Oct 2009 01:30:01 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">10 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/css-sprite</feedburner:origLink></item>
<item>
 <title>Site da Casa Branca utilizando o Drupal</title>
 <link>http://feedproxy.google.com/~r/BlogDoCleber/~3/mddNDy4SD70/site-da-casa-branca-utilizando-o-drupal</link>
 <description>&lt;div class="field field-type-filefield field-field-imagem-teaser"&gt;
    &lt;div class="field-items"&gt;
            &lt;div class="field-item odd"&gt;
                    &lt;img  class="imagefield imagefield-field_imagem_teaser" width="200" height="160" alt="Casa Branca" src="http://cleber.net.br/sites/default/files/images/posts/teaser/casa-branca.jpg?1272132644" /&gt;        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Durante o governo de George Bush, o &lt;a href="http://whitehouse.gov/"&gt;site oficial&lt;/a&gt; da Casa Branca era gerenciado por um software proprietário. Mas a nova administração de Barak Obama queria uma alternativa mais flexível, e por isso delegou a empresa &lt;a href="http://www.gdit.com/"&gt;GDIT (General Dynamics Information Technology)&lt;/a&gt; a nova tarefa. A GDIT era a mesma empresa contratada para cuidar do site no governo anterior. Após meses de planejamento, eis que ressurge o novo site utilizando o Drupal como CMS. Visualmente o site continua o mesmo, apenas a sua estrutura que mudou. Os fóruns, blogs, comentários e outros recursos agora são gerenciados pelo Drupal.&lt;!--break--&gt;&lt;/p&gt;
&lt;p&gt;A transição foi feita por quatro empresas, entre elas a &lt;a href="http://acquia.com/"&gt;Acquia&lt;/a&gt;, fundada por &lt;a href="http://buytaert.net/"&gt;Dries Buytaert&lt;/a&gt;, o criador do Drupal. O site está rodando no sistema operacional Red Hat Linux com o servidor Apache, banco de dados MySQL e como motor de busca o &lt;a href="http://lucene.apache.org/solr/"&gt;Apache Solr&lt;/a&gt;, que é baseado na biblioteca Java &lt;a href="http://lucene.apache.org/java/"&gt;Lucene&lt;/a&gt;.&lt;/p&gt;&lt;p style="text-align: center;"&gt;&lt;img src="http://cleber.net.br/sites/default/files/images/posts/site-casa-branca.jpg" alt="Site da Casa Branca" title="Site da Casa Branca" class="mceItem importante"&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=mddNDy4SD70:ByI1Z-wQdcw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=mddNDy4SD70:ByI1Z-wQdcw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=mddNDy4SD70:ByI1Z-wQdcw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=mddNDy4SD70:ByI1Z-wQdcw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=mddNDy4SD70:ByI1Z-wQdcw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=mddNDy4SD70:ByI1Z-wQdcw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogDoCleber?a=mddNDy4SD70:ByI1Z-wQdcw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogDoCleber?i=mddNDy4SD70:ByI1Z-wQdcw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogDoCleber/~4/mddNDy4SD70" height="1" width="1"/&gt;</description>
 <comments>http://cleber.net.br/site-da-casa-branca-utilizando-o-drupal#comments</comments>
 <category domain="http://cleber.net.br/tags/drupal">Drupal</category>
 <category domain="http://cleber.net.br/tags/website">website</category>
 <pubDate>Wed, 28 Oct 2009 18:10:30 +0000</pubDate>
 <dc:creator>cleber</dc:creator>
 <guid isPermaLink="false">9 at http://cleber.net.br</guid>
<feedburner:origLink>http://cleber.net.br/site-da-casa-branca-utilizando-o-drupal</feedburner:origLink></item>
</channel>
</rss>

