<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>pura:destruição</title>
	<atom:link href="http://pvrehaavok.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pvrehaavok.wordpress.com</link>
	<description>Relicário das minhas atrocidades mentais</description>
	<lastBuildDate>Wed, 04 Jan 2012 21:13:28 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='pvrehaavok.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>pura:destruição</title>
		<link>http://pvrehaavok.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://pvrehaavok.wordpress.com/osd.xml" title="pura:destruição" />
	<atom:link rel='hub' href='http://pvrehaavok.wordpress.com/?pushpress=hub'/>
		<item>
		<title>A língua a serviço da sociedade</title>
		<link>http://pvrehaavok.wordpress.com/2011/12/13/a-lingua-a-servico-do-povo/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/12/13/a-lingua-a-servico-do-povo/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 15:22:14 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Divagações]]></category>
		<category><![CDATA[língua portuguesa]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=315</guid>
		<description><![CDATA[Nesse artigo da Revista Globo, os seguintes dizeres: Assim como a sociedade, a língua é uma entidade viva e está em constante modificação &#8211; não se encontra estática em um livro de gramática. A língua tem que estar a serviço da sociedade, e não o contrário. A norma dos cultos, que, hoje, é considerada a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=315&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nesse <a title="A língua a serviço da sociedade" href="http://oglobo.globo.com/ece_incoming/a-lingua-servico-da-sociedade-2900623" target="_blank">artigo</a> da Revista Globo, os seguintes dizeres:</p>
<blockquote><p>Assim como a sociedade, a língua é uma entidade viva e está em constante modificação &#8211; não se encontra estática em um livro de gramática. <em>A língua tem que estar a serviço da sociedade, e não o contrário</em>. A norma dos cultos, que, hoje, é considerada a padrão, amanhã, pode não o ser mais.</p></blockquote>
<p>Quer dizer, sendo uma entidade viva, parece que por ela falhar em impor suas regras formais &#8211; ou em ter suas regras impostas por pais, professores e sociedade &#8211; de tempos em tempos tem seu rigor aliviado e deve se adequar às regras informais, coloquiais, incentivada pela infinidade de momentos em que a expressão se torna mais importante do que suas restrições.</p>
<p>Pensando pelo lado &#8220;maldita inclusão digital que nem sabe escrever e já sai escrevendo no Face&#8221;, isso é péssimo, mas, pensando no dia-a-dia, quando lemos dezenas de artigos e escrevemos outras dezenas, seja na internet, na redação, ou mesmo mentalmente, vemos que tudo está a favor de uma linguagem flexível e compreensível, tanto para o cidadão de pensamento simples como para um doutor. Isso se repete sempre e dada sua ciclicidade não tão óbvia &#8211; a não ser que você tenha lido dezenas de edições de livros de gramática da língua portuguesa &#8211; <del>talvez</del> muito do que consumimos e produzimos já fora considerado gramaticalmente errado.</p>
<p>Portanto, pode parecer estranho, mas em um futuro bem próximo &#8211; observada a forma como os brasileiros estão escrevendo &#8211; as seguintes mudanças na língua portuguesa poderão ser mais aceitas, senão oficializadas:</p>
<p>Desobrigação do R ao final do verbo através da transformação da palavra em oxítona</p>
<blockquote><p>Vamos lá <strong>toma</strong> umas cervejas e <strong>conversa</strong> um pouco</p></blockquote>
<p>Aceitação do pronome oblíquo &#8220;mim&#8221; antes de um verbo</p>
<blockquote><p>Antes eu não conjugava os verbos de forma correta. Agora <strong>mim pode conjugar</strong></p></blockquote>
<p>Flexibilização da concordância nominal</p>
<blockquote><p>Eu fui comprar <strong>uns jogo</strong> no Centro</p></blockquote>
<p>Advérbio de intensidade <strong>mais</strong> como conjunção adversativa <strong>mas</strong></p>
<blockquote><p>Escrevo assim <strong>mais</strong> nem ligo</p></blockquote>
<p>Nesse momento eu penso em&#8230; &#8220;cruzes!&#8221;, mas não importa. Eu estou longe de escrever bem, portanto, longe de ter razão em criticar quem não escreve seguindo todas as normas.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/315/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/315/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/315/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=315&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/12/13/a-lingua-a-servico-do-povo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Apresentando: HaavokIPC</title>
		<link>http://pvrehaavok.wordpress.com/2011/11/24/apresentando-php-ghetto-ipc/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/11/24/apresentando-php-ghetto-ipc/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 17:37:18 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[ghetto ipc]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rpc]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=321</guid>
		<description><![CDATA[Então você pega um projeto de sistema feito em PHP 4 (um dos ~7% de sites que ainda usam essa versão) e precisa usar algum componente que só funciona no PHP 5. Você pensou em um web service local em uma segunda instância do Apache rodando PHP 5, mas dadas as características do ambiente onde [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=321&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Então você pega um projeto de sistema feito em PHP 4 (um dos ~7% de sites que ainda usam essa versão) e precisa usar algum componente que só funciona no PHP 5. Você pensou em um web service local em uma segunda instância do Apache rodando PHP 5, mas dadas as características do ambiente onde a aplicação roda e da dificuldade de fazer o deploy do segundo servidor, você foi proibido pelo chefe de fazer isso. Você pode também executar código entre diferentes versões de PHP ou mesmo na mesma versão, mantendo uma parte da sua aplicação em uma sandbox.</p>
<p>Para isso há várias soluções, dependendo dos requisitos. O HaavokIPC dá conta destes: chamadas síncronas a funções ou métodos de objetos/classes; uso dos dados retornados através de callbacks; uso em parte da aplicação que não exige alta performance. Ele não usa servidores ou conexões, ele executa o binário do PHP e se comunica com ele através de um arquivo serializado ou persistência. Os objetos responsáveis pela persistência e serialização são plugáveis e novos objetos podem ser desenvolvidos sem perda de tempo, apenas respeitando a interface. Por enquanto estão disponíveis os seguintes objetos de persistência, chamados de Drivers: File, Memcache e Shm, que usam, respectivamente, um arquivo, um servidor do memcache ou shared memory de ambientes *nix. Para a serialização, estão disponívels os Serializers Default, que usa as funções serialize e unserialize nativas do PHP e Msgpack, que usa a extensão <a title="Msgpack for PHP" href="http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+PHP" target="_blank">msgpack</a>.</p>
<p>Ele foi desenvolvido para ser compatível com boa parte das versões de PHP entre 4 e 5.</p>
<p>A documentação ainda não está madura e há muito a se fazer no código em termos de performance e arquitetura, como todo bom projeto experimental.</p>
<p>O código está disponível no GitHub -&gt; <a title="PHP HaavokIPC @ Github" href="https://github.com/HaavokIPC/PHP" target="_blank">HaavokIPC/PHP</a></p>
<p><strong>Update 25/11/2011</strong><br />
Estou portando o HaavokIPC para Ruby e isso me obrigou a fazer mudanças na arquitetura, a fim de tornar a configuração e a conversa entre front end e back end mais fácil, seja de PHP para PHP, PHP para Ruby ou de Ruby para PHP. Criei um novo repositório para este port, disponível em <a title="Ruby HaavokIPC @ GitHub" href="https://github.com/HaavokIPC/Ruby" target="_blank">HaavokIPC/Ruby</a>. Mais pra frente espero portá-lo para outras linguagens.</p>
<p><strong>Update 30/11/2011<br />
</strong>O desenvolvimento do HaavokIPC em Ruby está congelado enquanto trabalho no refactoring da versão em PHP, com alterações mais profundas do que simplesmente tornar sua configuração mais flexível.<strong><br />
</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/321/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/321/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/321/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=321&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/11/24/apresentando-php-ghetto-ipc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Provocações + Gabações</title>
		<link>http://pvrehaavok.wordpress.com/2011/11/22/provocacoes-gabacoes/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/11/22/provocacoes-gabacoes/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 18:38:31 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Divagações]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=302</guid>
		<description><![CDATA[Vou parar de me gabar por ter um smartphone, um bom computador, um bom trabalho com um nobre título. Espero que todos que possuem um bom tênis, um bom carro, o melhor smartphone ou o melhor sonho material façam o mesmo. Vou começar a me gabar por ter um teto, água potável, esgoto encanado, comida [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=302&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vou parar de me gabar por ter um smartphone, um bom computador, um bom trabalho com um nobre título. Espero que todos que possuem um bom tênis, um bom carro, o melhor smartphone ou o melhor sonho material façam o mesmo. Vou começar a me gabar por ter um teto, água potável, esgoto encanado, comida na mesa e a oportunidade de sair de casa sem medo de levar um tiro de lugar nenhum. Porque, afinal, o sentido da &#8220;gabação&#8221; é se sentir superior ao indivíduo ao lado por ele não ter o que você não tem. Mas ora, vejo todos os dias pessoas no metrô com seus bons tênis e smartphones doentemente se comparando aos que já tem, sendo esse ato correspondido pelo indivíduo ao lado. Portanto, não há mais sentido em tal tipo de gabação. Todos já chegaram ao topo com seus bons computadores e bons trabalhos de nobre título. Agora chegou a hora de fazer a gabação valer a pena. Vamos nos gabar para os que vivem abaixo da linha da pobreza, para os que comem palma todos os dias e consideram um raro calango uma iguaria chique para seus padrões. Vamos nos gabar para quem tem que fazer suas necessidades fisiológicas em um buraco no meio da terra &#8211; junto a outras 100, 200 pessoas. Vamos nos gabar para aquele garoto obrigado pela mãe a pedir uns trocados no farol e pra sua irmãzinha que está se prostituindo a duas quadras.</p>
<p>Mais importa exibir nosso mundinho cada vez mais fechado em uma vitrine mentirosa.</p>
<p>Doentes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/302/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/302/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/302/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=302&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/11/22/provocacoes-gabacoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Critério</title>
		<link>http://pvrehaavok.wordpress.com/2011/11/22/criterio/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/11/22/criterio/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 18:33:05 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Divagações]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=312</guid>
		<description><![CDATA[Outro dia eu ouvi de um colega que eu deveria ter mais critério na hora de reparar em uma mulher. O lucro de empresas que oferecem conteúdo de auto-ajuda do tipo &#8220;conquiste uma parceira&#8221; ou &#8220;envie seu nome e o nome da sua paixão via SMS para BLABLABLA está alto por causa disso: muitos limites, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=312&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Outro dia eu ouvi de um colega que eu deveria ter mais critério na hora de reparar em uma mulher.</p>
<p>O lucro de empresas que oferecem conteúdo de auto-ajuda do tipo &#8220;conquiste uma parceira&#8221; ou &#8220;envie seu nome e o nome da sua paixão via SMS para BLABLABLA está alto por causa disso: muitos limites, pouca verdade na hora de gostar de uma pessoa.</p>
<p>O cara encontra alguém dentro do critério que faz parte do &#8220;senso comum da sociedade&#8221;, digamos &#8220;alta, magra, loira, olhos azuis&#8221; e por medo de perdê-la, acaba colocando uma máscara e a partir daí, só se relaciona com ela usando essa máscara.</p>
<p>Eu sou muito mais viver com quem eu gosto, tendo a certeza que o máximo que me fez escolhê-la foram preferências (que não são opções, escolhas e muito menos obrigações) e não limitações. É isso que faz um relacionamento respirar e ser confortável enquanto durar.</p>
<p>É isso que me faz ser feliz pra caralho com uma morena gordinha de estatura média e olhos castanhos. Se eu não &#8220;tive critério&#8221; para ficar com ela, que dirá na hora de reparar em outras mulheres.</p>
<p>Critério reduzindo uma gama de possibilidades de ser feliz? Ah, vá.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/312/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=312&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/11/22/criterio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Cada um merece o ópio que tem</title>
		<link>http://pvrehaavok.wordpress.com/2011/11/07/cada-um-merece-o-opio-que-tem/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/11/07/cada-um-merece-o-opio-que-tem/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 21:12:43 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Divagações]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=290</guid>
		<description><![CDATA[Café, rotina, computadores, televisão, esmaltes, redes sociais, grifes, gadgets, futebol, big mac, piriguetes, música, dinheiro, conforto, chicotes, teatro, informação, fotografia, cigarro, amor, rock&#8217;n'roll, mainstream, underground, cerveja, espelhos, solidão, efusão, café da manhã na cama, tazos, anéis de latas de alumínio, memes, gatos, pornografia, rua augusta, igreja universal, micareta, festival, instant messenger, sms, 21 centavos fale-o-quanto-quiser, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=290&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Café, rotina, computadores, televisão, esmaltes, redes sociais, grifes, gadgets, futebol, big mac, piriguetes, música, dinheiro, conforto, chicotes, teatro, informação, fotografia, cigarro, amor, rock&#8217;n'roll, mainstream, underground, cerveja, espelhos, solidão, efusão, café da manhã na cama, tazos, anéis de latas de alumínio, memes, gatos, pornografia, rua augusta, igreja universal, micareta, festival, instant messenger, sms, 21 centavos fale-o-quanto-quiser, onanismo, sexo verbal, sexo a dois, sexo com mais de dois, trollar, kibar, repercutir, sorrir com 100 RTs, livros, bolachões, 2 marcas de refrigerante de cola, i-qualquer-coisa, sofativismo, croutons, encaminhar e-mails pedindo doações, apresentações de slides que atingem o âmago da alma, apresentações de slides que sequer tocam a superfície, esnobar, abraçar forte sem conhecer direito, deixar pra conhecer direito depois, mmorpg, vomitar sozinho, vomitar com os amigos, vomitar longe de quem acabou de conhecer, som alto, nem ligar, rir, registrar, criticar, opinar, reclamar, lembrar, regozijar, muitas calorias, deixa pra segunda, gozar uma, gozar duas, gozar onde não pode, gozar com quem não pode, errar, se arrepender, demonstrar, afeto, disposição, chocolate, bom dia, durma bem, adorar a sexta-feira, adorar a segunda-feira, por que não?, ídolos, anti-heróis, conspirações, métricas, prazos, deadlines, traço fino, traço forte, amém, vai se foder, vintage, politicagem, confusão, prazer, dor, manhãs, madrugadas, cinema em casa, zippos, graves, ruivas, bebês, lingeries, funk alto no ônibus, funk no fone de ouvido alheio e só, céu azul, céu cinza, céu rosa, apartamento grande, distância pequena, euforia, estados mentais alterados, metrô vazio, ceia cheia, nostalgia, imagens bizarras, imagens alegres, a mãe, o pai, os avós, os irmãos, os primos, o primeiro beijo da vizinha, o primeiro beijo da colega de escola na 2ª série, a primeira mão boba, o primeiro negativo de muitos resultados de exames de sangue, o primeiro negativo revelado, a última pedra e o primeiro perdão.</p>
<p>Cada um merece o ópio que tem, o vício que agradavelmente o consome, que o faz ser único e que dá o direito de ser distante de quaisquer tendências, inclusive as deste texto.</p>
<p>Eu acho que consegui juntar um pouco do que eu reparei que as pessoas que eu conheço gostam e de certa forma pode ser uma homenagem a quem está na minha vida, que já passou ou que um dia irá embora da minha vida. Um passo no leito do rio, certo ou errado, tropeço ou sorte, tem poder de mudar o curso dele para sempre.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=290&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/11/07/cada-um-merece-o-opio-que-tem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Facebook Deorkutizator</title>
		<link>http://pvrehaavok.wordpress.com/2011/11/07/facebook-deorkutizator/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/11/07/facebook-deorkutizator/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 20:48:54 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[deorkutizator]]></category>
		<category><![CDATA[esconder pages]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[orkutizado]]></category>
		<category><![CDATA[pages]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=288</guid>
		<description><![CDATA[Admito, pra mim, o Facebook da forma como está hoje é incômodo. Em tom de brincadeira, &#8220;Orkutizado&#8221; com tantas imagens compartilhadas que antes só apareciam no Orkut e em e-mails dos anos 90. Não que eu não goste, mas acho que lá não é o lugar pra isso. O pior é que o Facebook oferece [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=288&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Admito, pra mim, o Facebook da forma como está hoje é incômodo. Em tom de brincadeira, &#8220;Orkutizado&#8221; com tantas imagens compartilhadas que antes só apareciam no Orkut e em e-mails dos anos 90. Não que eu não goste, mas acho que lá não é o lugar pra isso. O pior é que o Facebook oferece um botão &#8220;bloquear&#8221; pra quase tudo nele, exceto as Pages. Quer dizer, se não quer ver o conteúdo de uma Page na sua timeline, ou bloqueia quem fica compartilhando ou oculta manualmente.</p>
<p>Pensando nisso, tive a idéia de criar um userscript &#8211; mais um userscript em uns 3 ou 4 anos brincando com JavaScript no Greasemonkey &#8211; que esconde as Pages que não me agradam da minha lista de atualizações do Facebook, sem ter que bloquear ninguém ou ficar ocultando uma por uma. O resultado é o <strong>Deorkutizador de Facebook</strong> e pode ser baixado do meu repositório através daqui:</p>
<blockquote><p><a title="Deorkutizador de Facebook - userscript" href="https://github.com/MendelGusmao/Userscripts/blob/master/deorkutizador_de_faceboo/deorkutizador_de_faceboo.user.js" target="_blank">https://github.com/MendelGusmao/Userscripts/blob/master/deorkutizador_de_faceboo/deorkutizador_de_faceboo.user.js</a></p></blockquote>
<p>As instruções de instalação estão no arquivo. Já adianto que é necessário que a extensão Greasemonkey esteja instalada no Firefox. Também coloquei as instruções para a instalação no Chrome, mas ainda não testei nele.</p>
<p><del>Copiei o código</del> Me baseei neste artigo chamado <a title="How to play nicely with jQuery and Greasemonkey" href="http://joanpiedra.com/jquery/greasemonkey/" target="_blank">How to play nicely with jQuery and Greasemonkey</a> que ensina a como usar o jQuery dentro do Greasemonkey. Considero essencial porque o modo como o jQuery faz para acessar os elementos em uma página tornou a tarefa de encontrar aqueles que contém as atualizações incômodas e removê-los muito fácil. O &#8220;Deorkutizador de Facebook&#8221; possui uma lista de páginas bloqueadas que é atualizada automaticamente conforme eu encontro as páginas. Essa lista está disponível na minha conta do Dropbox e é carregada sempre que o Facebook for aberto e o script estiver ativado.</p>
<blockquote><p><a title="Páginas bloqueadas pelo Deorkutizador de Facebook" href="http://dl.dropbox.com/s/pn104hbhmqs77fu/paginasBloqueadas.js?dl=1" target="_blank">http://dl.dropbox.com/s/pn104hbhmqs77fu/paginasBloqueadas.js?dl=1</a></p></blockquote>
<p>Para garantir transparência, a mesma lista está sincronizada com o GitHub</p>
<blockquote><p><a title="Páginas bloqueadas pelo Deorkutizador de Facebook @ Github" href="https://github.com/MendelGusmao/Deorkutizador-de-Facebook/blob/master/paginasBloqueadas.js" target="_blank">https://github.com/MendelGusmao/Deorkutizador-de-Facebook/blob/master/paginasBloqueadas.js</a></p></blockquote>
<p>Quem for usuário do GitHub poderá fazer pull requests na lista, sugerindo novas páginas a serem bloqueadas e também &#8220;forkar&#8221; o script e sugerir modificações.</p>
<p>Essa primeira versão só esconde os históricos, então toda vez que o Facebook for aberto, as publicações estarão lá e em instantes serão ocultas. Estou trabalhando em um jeito de fazer o script &#8220;clicar&#8221; no botão &#8220;Ocultar histórico&#8221; automaticamente, assim, na próxima vez o histórico incômodo não estará mais lá de verdade. Ainda há alguns bugs, em especial um que eu apelidei de &#8220;só pega no tranco&#8221;, porque ele carrega os scripts mas não executa a limpeza, então a página tem que ser recarregada para ele funcionar.</p>
<p>O script é seguro, não incomoda ninguém, não acessa seus dados (muito menos sua senha), não interfere com a sua timeline nem com a de seus amigos e também não faz propaganda no seu mural.</p>
<p>Tchau</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/288/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/288/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/288/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=288&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/11/07/facebook-deorkutizator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Por uma web mais rápida: compressão radical de JavaScript – parte 2</title>
		<link>http://pvrehaavok.wordpress.com/2011/09/12/por-uma-web-mais-rapida-compressao-radical-de-javascript-%e2%80%93-parte-2/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/09/12/por-uma-web-mais-rapida-compressao-radical-de-javascript-%e2%80%93-parte-2/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 18:00:15 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[compressão]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[servidor]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=274</guid>
		<description><![CDATA[No post anterior, descrevi o cenário em que um código em JS deveria ser entregue com um nível de compressão excepcional, visto que ele seria bastante requisitado. Expliquei um pouco do funcionamento do Packer para JavaScript e dei algumas dicas para otimizar o uso dele de forma que não pese no lado do cliente. Neste [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=274&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No <a title="Por uma web mais rápida: compressão radical de JavaScript – parte 1" href="http://pvrehaavok.wordpress.com/2011/09/12/por-uma-web-mais-rapida-compressao-radical-de-javascript-parte-1/">post anterior</a>, descrevi o cenário em que um código em JS deveria ser entregue com um nível de compressão excepcional, visto que ele seria bastante requisitado. Expliquei um pouco do funcionamento do Packer para JavaScript e dei algumas dicas para otimizar o uso dele de forma que não pese no lado do cliente.</p>
<p>Neste ponto, um código de 36 KB (XRegExp + parte da aplicação) já está razoávelmente comprimido, mas não o suficiente para um ambiente com muitas requests: advertising.</p>
<p>A solução encontrada foi compressão pelo servidor com GZip. Otimização, aliás, recomendada no post do Sérgio Lopes e não só por ele!</p>
<p>É uma solução muito eficaz para entrega de conteúdo estático. Se utilizada com cache, então, fica lindo. Mas essa opção não se adequava ao caso, já que o JS era &#8220;eventualmente estático&#8221; e qualquer alteração das regras impactava no conteúdo do JS, seja modificando o tamanho para mais ou menos, mas, sempre modificando o arquivo. Daí a necessidade de não cachear esses arquivos e garantir que toda alteração feita pelo usuário da plataforma seria imediatamente refletida no script.</p>
<p>Então foi decidido: compressão máxima pelo servidor onde os arquivos JS (um para cada site, cada cliente com vários sites) seriam hospedados. Packer  + Gzip nível 9 &#8211; compressão de 36 para menos de 4 KB. Incrível! (~4 KB * clientes * sites * milhões) já parece ser um número bem melhor!</p>
<p>Nesse ponto, fiquei incomodado &#8211; mesmo sem ter feito qualquer benchmark &#8211; sobre como o servidor responderia tendo que efetuar tantas compressões on-the-fly, sem caching e acabei chegando a uma solução muito, mas muito simples e eficaz:</p>
<blockquote><p>Para conteúdos estáticos e muito requisitados, não deixe o servidor comprimir durante a requisição. Entregue comprimido.</p></blockquote>
<p>Sim, isso! Armazenar o arquivo já comprimido! O backend já era responsável por obter as regras, concatenar a XRegExp, as regras e o código que faz tudo funcionar; agora também é responsável por comprimir o JS com GZip. Gastar algum tempo de processamento comprimindo 36 KB (ou mais) em 4 KB? Nunca na requisição, só no momento em que uma regra for modificada ou em algum cron job na madrugada executado por garantia.</p>
<p>E o servidor?</p>
<p>A não ser que ele seja instruído a não fazer isso, e manter a compressão habilitada para tudo, ele vai comprimir o que já foi comprimido. Então, aqui está o maior truque disso tudo:  configurar o servidor para caso uma request peça por um arquivo armazenado em determinado diretório, deixe a compressão e envie uma header <strong>Content-Encoding: gzip</strong>.</p>
<p>E aquele browser que não tem suporte a gzip?</p>
<p>Não pode entregar como gzip. Excepcionalmente, o backend também trata de gerar os scripts somente com a compressão do Packer. Nesse caso, usar cache é importante, porque uma parcela de usuários receberá um arquivo um pouco maior que os outros e é importante não deixar a performance do servidor ser impactada por isso.</p>
<p>Usamos  o Lighttpd e foi muito fácil configurá-lo para agir assim. Para caching, o escolhido foi o Varnish, mas como não fui responsável pela configuração, não posso dar detalhes.</p>
<p>O conceito mais importante dessa parte do post não se aplica ao JS ou ao comportamento da aplicação, mas do servidor. A idéia de entregar conteúdo já comprimido ao invés de utizar compressão on-the-fly se aplica a qualquer tipo de conteúdo que não seja interessante, do ponto de vista da performance, de ser entregue através de métodos específicos de caching. E a conclusão é de que isso não é mais do que um método alternativo de caching.</p>
<p>Considerei a abordagem de usar caching mais forte, separando a XRegExp, com um tempo de cache maior, enquanto as regras e o código ficariam com um tempo menor de cache. Mas aí não seria tão &#8220;emocionante&#8221; e se por algum motivo a XRegExp não fosse carregada, a aplicação não funcionaria.</p>
<p>Concluído o projeto, me desliguei da empresa com uma proposta mais interessante, deixando uma documentação bastante forte sobre essas idéias. Preciso dar uma olhada nos sites dos clientes para ver se eles já estão utilizando tal aplicação!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/274/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/274/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/274/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=274&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/09/12/por-uma-web-mais-rapida-compressao-radical-de-javascript-%e2%80%93-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Por uma web mais rápida: compressão radical de JavaScript &#8211; parte 1</title>
		<link>http://pvrehaavok.wordpress.com/2011/09/12/por-uma-web-mais-rapida-compressao-radical-de-javascript-parte-1/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/09/12/por-uma-web-mais-rapida-compressao-radical-de-javascript-parte-1/#comments</comments>
		<pubDate>Mon, 12 Sep 2011 16:22:54 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[compressão]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[otimização]]></category>
		<category><![CDATA[packer]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=264</guid>
		<description><![CDATA[Post inspirado pela palestra do Sérgio Lopes sobre otimização de sites, que foi apresentada na #QConSP. Gostaria de ter demonstrado esse caso no momento, como sugestão para todos da área, mas eu sou tímido. Em uma empresa onde trabalhei no ano passado, tive que desenvolver um código JS que usa uma biblioteca adicional, XRegExp, para [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=264&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Post inspirado pela <a title="Por uma Web mais rápida: 26 técnicas de otimização de Sites" href="http://blog.caelum.com.br/por-uma-web-mais-rapida-26-tecnicas-de-otimizacao-de-sites/" target="_blank">palestra</a> do <a title="Sérgio Lopes @ Caelum" href="http://blog.caelum.com.br/author/slopes/" target="_blank">Sérgio Lopes</a> sobre otimização de sites, que foi apresentada na <a title="#QConSP" href="http://qconsp.com/" target="_blank">#QConSP</a>. Gostaria de ter demonstrado esse caso no momento, como sugestão para todos da área, mas eu sou tímido. <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Em uma empresa onde trabalhei no ano passado, tive que desenvolver um código JS que usa uma biblioteca adicional, XRegExp, para named capture em expressões regulares. Juntando essa biblioteca e meu código, o tamanho total ficava em cerca de 36 KB &#8211; no mínimo, já que o código era modificado por variáveis que o cliente da plataforma poderia configurar. A projeção de hits no servidor solicitando um JS era da ordem de milhões por mês, dado que é uma plataforma de advertising. Considerando que cada site deve incluir esse JS e um cliente tem vários sites: (+36 KB * clientes * sites * milhões): não resulta em um número muito bom.</p>
<p>* Detalhe importante: o JS não é totalmente estático. Caso o cliente da plataforma modificasse uma regra, ela teria que ser imediatamente aplicada ao JS, logo, não poderia ficar muito tempo em cache do usuário. O jeito encontrado foi servir sem cache e com o máximo possível de compressão.</p>
<p>Há 3 anos eu conheci o <a title="JavaScript Packer" href="http://dean.edwards.name/packer/" target="_blank">Packer</a>, um compactador de JavaScript que é bastante utilizado por frameworks JS e módulos de pipelining em frameworks web &#8211; detalhe que na época eu o conheci através de um código malicioso e como eu queria saber o que o código estava fazendo, então tive que estudar a forma como ele era compactado e o que significava aquela function(p,a,c,k,e,r) no começo do arquivo. Ele tem muito valor e utilidade em ambientes onde você precisa fazer entrega de conteúdo com eficiência.</p>
<p>Ele não é tão simples como outros códigos que eliminam comentários, espaços, tabs, pontos-e-vírgulas duplicados, quebras de linha, deixando a estrutura básica da linguagem para que o código seja funcional. Ele faz bem mais que isso. Explico agora:</p>
<p>- O Packer parseia seu código JS, fazendo tudo o que eu descrevi ali em cima e também separa cada palavra-chave ou valor, montando um array* de strings.<br />
- Cada palavra armazenada no array possui um índice numérico e esse índice é usado como referência no código que o Packer gera.<br />
- O Packer cria um wrapper, que é a função anônima (p,a,c,k,e,r), responsável por descompactar o código gerado, buscar as referências no array e remontar o código, substituindo as referências pelos valores respectivos, terminando com um eval() para interpretar o código remontado.<br />
- Como as referências são únicas e as strings usadas para descrevê-las são pequenas, muitas vezes usando números de base 62 &#8211; dependendo da configuração, o código gerado é bastante econômico e sucinto.</p>
<p>* Este array de strings é na verdade uma string só, com seus valores delimitados por pipes</p>
<p>Vou dar um exemplo bem simples de como o packer vai montar um o código compactado:</p>
<blockquote><p>function stack_messages(strings) {<br />
var i = 0;<br />
for (i = 0; i &lt; strings.length(); i++) {<br />
var message = &#8220;Annoying message #&#8221; + i + &#8220;: &#8221; + strings[i]&#8220;;<br />
alert(message);<br />
}<br />
}</p></blockquote>
<p>Esse é o &#8220;array&#8221; de palavras úteis que o Packer gerou após fazer o parsing:</p>
<blockquote><p>&#8216;|i|var|function|stack_messages|for|length|Annoying|message|alert||&#8217;</p></blockquote>
<p>E gerar o seguinte código:</p>
<blockquote><p>&#8217;3 4(a){2 1=0;5(1=0;1&lt;a.6();1++){2 b=&#8221;7 8 #&#8221;+1+&#8221;: &#8220;+a[1]&#8220;;9(b)}}&#8217;</p></blockquote>
<p>Não parece, mas esta é a função stack_messages. Ignorando chaves, pontos-e-vírgulas, parênteses e outros símbolos que obviamente não podem ser reduzidos, é possível entender que que: a referência 3 corresponde ao índice 3 no &#8220;array&#8221;, que quer dizer &#8220;function&#8221;. A referência de número 4 é &#8220;stack_messages&#8221;. Isso é só pra começar.</p>
<p>Note algo interessante: palavras que foram utilizadas várias vezes no código, como var, message e i só aparecem uma vez no array. Elas possuem as referências 2, 8 e 1, respectivamente.</p>
<blockquote><p>&#8217;3 4(a){<span style="text-decoration:underline;"><span style="color:#ff0000;"><strong>2</strong></span></span> <strong><span style="text-decoration:underline;"><span style="color:#ff0000;text-decoration:underline;">1</span></span></strong>=0;5(<strong><span style="text-decoration:underline;"><span style="color:#ff0000;text-decoration:underline;">1</span></span></strong>=0;<strong><span style="text-decoration:underline;"><span style="color:#ff0000;text-decoration:underline;">1</span></span></strong>&lt;a.6();<strong><span style="text-decoration:underline;"><span style="color:#ff0000;text-decoration:underline;">1</span></span></strong>++){<span style="text-decoration:underline;color:#ff0000;"><strong>2</strong></span> <strong><span style="text-decoration:underline;"><span style="color:#339966;text-decoration:underline;">b</span></span></strong>=&#8221;7 <span style="text-decoration:underline;"><strong><span style="color:#ff0000;text-decoration:underline;">8</span></strong></span> #&#8221;+<strong><span style="text-decoration:underline;"><span style="color:#ff0000;text-decoration:underline;">1</span></span></strong>+&#8221;: &#8220;+a[<span style="text-decoration:underline;color:#ff0000;"><strong>1</strong></span>]&#8220;;9(<strong><span style="text-decoration:underline;"><span style="color:#339966;text-decoration:underline;">b</span></span></strong>)}}&#8217;</p></blockquote>
<p>Trocando de 1 a 7 caracteres por 1 só. Inteligente demais, não?</p>
<p>* Não entendi o porque da palavra message ter duas referências, 8 e b, mas assim que descobrir, atualizo o post.</p>
<p>Não vou me aprofundar nos detalhes do algoritmo de descompressão do Packer, mas por cima é possível notar que:</p>
<p>- È um algoritmo iterativo: o único código que roda imediatamente é <strong>ele</strong> e o código desenvolvido por você não vai rodar até que ele tenha iterado o array de palavras úteis e transformado o código traduzido em código válido para ser interpretado com eval(). A velocidade com a qual ele roda depende bastante da velocidade da máquina e do browser de seu cliente.<br />
- Não é bom para códigos pequenos. O overhead causado pela função de descompressão não compensa o trabalho da compressão.<br />
- Concatene todos os arquivos JS que sua página necessita através de um pipeliner antes de comprimir com o Packer. Isso faz com que o tamanho do array de palavras úteis seja menor e centralizado. No caso de frameworks e bibliotecas de terceiros, escolha as versões non-minified e non-packed. O ideal é não <del>judiar do</del> forçar o browser do seu cliente a executar o descompactador do Packer mais de uma vez, seja em cada arquivo, seja em &#8220;compressão em cima de compressão&#8221;, como um código packed passando novamente pelo Packer.</p>
<p>Nesse ponto, meu código (XRegExp + minha aplicação) já está &#8220;minified&#8221; com o Packer, mas ainda está pesado para o cenário de milhões de requests. Vou explicar na parte 2 como o servidor foi otimizado para servir arquivos com compressão.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=264&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/09/12/por-uma-web-mais-rapida-compressao-radical-de-javascript-parte-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalando Eclipse Helios/3.6 no Ubuntu 11.04</title>
		<link>http://pvrehaavok.wordpress.com/2011/06/28/instalando-eclipse-helios3-6-no-ubuntu-11-04/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/06/28/instalando-eclipse-helios3-6-no-ubuntu-11-04/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 19:42:15 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Gambiarras]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[ppa]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=257</guid>
		<description><![CDATA[Não sou fã do Eclipse. Já trabalhei bastante com ele, faz uns 2 anos, mas prefiro programas mais simples, como o Notepad++ no Windows e no máximo NetBeans quando faço alguma coisa com o Rails. Faz parte da tentativa de deixar de ser um programador point&#8217;n'click e aprender a usar emacs/vi + svn/git na linha [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=257&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Não sou fã do Eclipse. Já trabalhei bastante com ele, faz uns 2 anos, mas prefiro programas mais simples, como o Notepad++ no Windows e no máximo NetBeans quando faço alguma coisa com o Rails. Faz parte da tentativa de deixar de ser um programador point&#8217;n'click e aprender a usar emacs/vi + svn/git na linha de comando. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Mas agora quero brincar um pouco com Android e achei que seguir esse <a title="Curso grátis de Android @ The Code Bakers" href="http://www.thecodebakers.org/p/curso-android-o-comeco-programacao.html" target="_blank">pequeno curso do The Code Bakers</a> seria um bom começo. E um dos requisitos, porém, é o uso do Eclipse. Justificável, dada a facilidade do emulador e a minha preguiça de procurar métodos alternativos enquanto estou brincando.</p>
<p>Parece que a última versão do Eclipse disponível no repositório oficial do Ubuntu é a Galileo/3.5. Talvez porque a 3.6 não seja estável nas versões mais recentes do sistema operacional. Fato é que eu não gosto de usar software desatualizado, salvo sobre meu Windows &#8211; XP &#8211; e um driver da Nvidia cuja última versão fazia o sistema dar memory dumps nas tarefas mais simples.</p>
<p>Alguns sites aconselham a alterar os endereços de repositórios do Eclipse mas não funcionou comigo. A solução foi usar o PPA da Eclipse Team que felizmente voltou a ser atualizado. Mão na massa:</p>
<blockquote><p>sudo apt-key adv &#8211;recv-keys &#8211;keyserver keyserver.ubuntu.com 5126890CDCC7AFE0<br />
sudo add-apt-repository ppa:eclipse-team/debian-package<br />
sudo apt-get install libswt-gtk-3.6-java eclipse</p></blockquote>
<p>Adicionei libswt-gtk-3.6-java à instalação porque o Eclipse não abriu sem essa dependência e o arquivo ~/workspace/.metadata/.log exibia um erro mencionando-a.</p>
<p>Enjoy your new Eclipse!</p>
<p>* Observação: descobri que o Android Development Tools é incompatível com o Eclipse 3.6. Se sua pretensão é usar o ADT, continue com o Eclipse 3.5.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/257/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=257&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/06/28/instalando-eclipse-helios3-6-no-ubuntu-11-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
		<item>
		<title>Primeiras impressões sobre a Linha Amarela do Metrô</title>
		<link>http://pvrehaavok.wordpress.com/2011/05/25/primeiras-impressoes-da-linha-amarela-do-metro/</link>
		<comments>http://pvrehaavok.wordpress.com/2011/05/25/primeiras-impressoes-da-linha-amarela-do-metro/#comments</comments>
		<pubDate>Wed, 25 May 2011 17:00:00 +0000</pubDate>
		<dc:creator>Mendel Gusmão</dc:creator>
				<category><![CDATA[Divagações]]></category>
		<category><![CDATA[linha amarela]]></category>
		<category><![CDATA[metrô]]></category>
		<category><![CDATA[pinheiros]]></category>
		<category><![CDATA[são paulo]]></category>

		<guid isPermaLink="false">http://pvrehaavok.wordpress.com/?p=229</guid>
		<description><![CDATA[Nas últimas duas semanas tive 3 oportunidades de usar a mais nova linha do metrô paulistano: a Amarela, de número 4. É uma linha com instalações pomposas, trens modernos, com passagens entre os vagões e operando sem condutor &#8211; na composição, já que tudo é feito remotamente. Fico feliz por ter mais uma opção na [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=229&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Nas últimas duas semanas tive 3 oportunidades de usar a mais nova linha do metrô paulistano: a Amarela, de número 4. É uma linha com instalações pomposas, trens modernos, com passagens entre os vagões e operando sem condutor &#8211; na composição, já que tudo é feito remotamente.</p>
<p>Fico feliz por ter mais uma opção <del>na minha viagem cruzando São Paulo</del> no meu transporte de Guarulhos até a Berrini, onde trabalho, além da ponte ORCA da Vila Madalena/Cidade Universitária e dos trens da Barra Funda/Altino. Da primeira vez foi uma decisão de última hora: na segunda-feira da inauguração da estação Pinheiros, indo da Paraíso para a Vila Madalena, decidi descer na Consolação e logo vi não foi uma boa idéia: era dia de inauguração e na saída principal estavam manifestantes, jornalistas, empresários e políticos  reunidos na porta. Uma muvuca só.</p>
<p>Detalhe importante: as estações são bem fundas. Na Consolação, por exemplo, existem duas esteiras e duas escadas rolantes até a plataforma de embarque. Em Pinheiros são 4 lances de escadas rolantes até a saída principal. Para usar a integração com a estação Pinheiros da CPTM, há mais uma escada rolante até a passarela. Prato cheio para quem curte andar de metrô e no metrô.</p>
<p>A integração entre Pinheiros da CPTM e Pinheiros do Metrô só começa no mês que vem, já que a passarela que liga elas não está pronta, assim, é necessário andar cerca de 400 metros entre as estações, passando pelo entorno do canteiro de obras do que será um terminal de ônibus em 2012 e pagar novamente 2,90 ao passar pela catraca.</p>
<p>É nesse ponto que eu vejo problemas de planejamento. Ainda que a necessidade de pagar nova tarifa seja temporária, eu acho que é ilegal. O governo bem que poderia implantar um esquema similar ao utilizado na ponte ORCA, em que você adquire gratuitamente um cupom que garante que ao chegar na outra estação &#8211; em uma van ou microônibus ORCA &#8211; você não terá que pagar novamente a tarifa. Oras, era só colocar as máquinas que emitem os cupons entre as estações. A diferença é que não é preciso pegar uma van. Custo irrisório para o governo e um consórcio que entregaram uma obra importante com 10 anos de atraso e claro, garantia do bem estar do cidadão.</p>
<p>Outro ponto que me incomoda é que os novos trens e as plataformas de embarque das estações da linha amarela são minúsculos. Menor do que estas plataformas, só a plataforma da estação Paraíso sentido Vila Prudente. Não sou um especialista, mas acredito que aquilo não tenha sido bem planejado, com números e projeções reais do volume de pessoas que vão utilizar a linha. A falta de espaço faz parecer que a linha só será usada pela &#8220;elite&#8221; que reside em Pinheiros, Morumbi e Jardins. Soa inapropriado, já que é fato que São Paulo necessita urgentemente de mais linhas de metrô e as novas estações já são inauguradas com uma quantidade considerável de usuários. Lotadas.</p>
<p>Bônus: mapa do metrô de São Paulo para ser visualizado no Google Earth. Linhas atuais do metrô e da CPTM, linhas em projeto e até algumas linhas imaginárias que nossos filhos e netos poderão usar muito bem, se o Governo do Estado de São Paulo trabalhar com um pouco mais de boa vontade: <a title="Mapa Metrô São Paulo - Google Earth" href="http://migre.me/4Dp34" target="_blank">http://migre.me/4Dp34</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pvrehaavok.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pvrehaavok.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pvrehaavok.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pvrehaavok.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pvrehaavok.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pvrehaavok.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pvrehaavok.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pvrehaavok.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pvrehaavok.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pvrehaavok.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pvrehaavok.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pvrehaavok.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pvrehaavok.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pvrehaavok.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pvrehaavok.wordpress.com&amp;blog=8787203&amp;post=229&amp;subd=pvrehaavok&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pvrehaavok.wordpress.com/2011/05/25/primeiras-impressoes-da-linha-amarela-do-metro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/540420d4ae645ea7f308a8bbd3e95820?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fivetricks</media:title>
		</media:content>
	</item>
	</channel>
</rss>
