<?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>goncin@wordpress.com:~$ _</title>
	<atom:link href="http://goncin.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://goncin.wordpress.com</link>
	<description>Linux, programação e toda sorte de nerdices</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:03:47 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='goncin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>goncin@wordpress.com:~$ _</title>
		<link>http://goncin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://goncin.wordpress.com/osd.xml" title="goncin@wordpress.com:~$ _" />
	<atom:link rel='hub' href='http://goncin.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Java: a hora e a vez do OpenJDK</title>
		<link>http://goncin.wordpress.com/2011/10/06/java-a-hora-e-a-vez-do-openjdk/</link>
		<comments>http://goncin.wordpress.com/2011/10/06/java-a-hora-e-a-vez-do-openjdk/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 16:53:19 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[opinião]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[openjdk]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=763</guid>
		<description><![CDATA[Antes de mais nada, corrijam-me se eu estiver errado. Não sou desenvolvedor Java, sou antes um usuário da plataforma. Com a aquisição da Sun Microsystems pela Oracle, em janeiro de 2010, o rumo do desenvolvimento da plataforma Java, e de outros projetos open source antes patrocinados pela empresa adquirida, foi radicalmente alterado. Em linhas gerais, pode-se [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=763&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Antes de mais nada, corrijam-me se eu estiver errado. Não sou desenvolvedor Java, sou antes um usuário da plataforma.</p>
<p>Com a aquisição da Sun Microsystems pela <a href="http://oracle.com">Oracle</a>, em janeiro de 2010, o rumo do desenvolvimento da plataforma Java, e de outros projetos <em>open source</em> antes patrocinados pela empresa adquirida, foi radicalmente alterado. Em linhas gerais, pode-se dizer que a Oracle subiu o tom com as comunidades e ecossistemas formados em torno daqueles projetos, levando-os a redefinir sua forma de colaboração. O fato mais notável decorrente dessa nova conjuntura, sem dúvidas, foi o surgimento da <a href="http://www.documentfoundation.org/">The Document Foundation</a>, criada especificamente para gerir o <a href="http://www.libreoffice.org/">LibreOffice</a>, um <em>fork</em> do <a href="http://www.openoffice.org/">OpenOffice.org</a>. A comunidade da suíte de escritório concluiu que não poderia continuar nos termos que a Oracle passou a impor, e preferiu iniciar um novo projeto, baseado no primeiro, mas sem esperar nada de Larry Ellison &#8211; nem patrocínio, muito menos ordens.</p>
<p>Em relação ao Java, a postura da Oracle foi ainda mais pedante. Acreditando que números de alta cifra (<a href="http://java.com/pt_BR/about/">milhões de desenvolvedores e bilhões de dispositivos</a>, segundo ela mesma) lhe conferem autoridade para tanto, a empresa arrogou para si &#8211; e somente para si &#8211; o direito de distribuir sua versão &#8220;proprietária&#8221; do Java, tanto o SDK (para desenvolvimento) o JRE (para executar as aplicações). Com isso, as inúmeras <a href="http://www.techtudo.com.br/platb/linux/2011/08/31/oracle-encerra-licenca-que-permitia-incluir-sua-java-vm-em-distribuicoes-linux/">distribuições Linux ficam proibidas de distribuir o Java da <del>Sun</del> Oracle</a>.</p>
<p>Num momento em que até a Microsoft, a partir do Windows 8, está adotando o conceito de <em>app store</em> no sistema operacional, é uma contratendência e tanto. A ideia, já adotada há anos pelas distros Linux e mais recentemente pelas plataformas móveis, é que o usuário não tenha que &#8220;correr atrás&#8221; das aplicações de que precisa, visitando inúmeros sites e fazendo <em>downloads</em> nem sempre confiáveis. Com as centrais de aplicativos, a instalação da solução está a um clique (ou dois, ou três&#8230;), dentro do próprio ambiente do SO. Nesse contexto, a Oracle obrigará quem precisar de sua versão do Java a visitar o respectivo <em>site</em> para baixá-lo. No mundo Linux, suspeito, só agirá assim quem <strong>realmente</strong> necessitar do Java &#8220;proprietário&#8221;.</p>
<p><a href="http://goncin.files.wordpress.com/2011/10/openjdk.jpg"><img class="aligncenter size-full wp-image-772" title="OpenJDK" src="http://goncin.files.wordpress.com/2011/10/openjdk.jpg?w=630" alt=""   /></a></p>
<p>A partir dessa (controversa) decisão, as distros passarão a entregar somente o <a href="http://openjdk.java.net">OpenJDK</a>/OpenJRE, a versão do Java 100% livre. O que muda com isso? Para o usuário médio, quase nada. O OpenJDK parece estar maduro o suficiente para a maioria dos usos. Desenvolvo em <a href="http://php.net">PHP</a> utilizando <a href="http://netbeans.org">Netbeans</a> como IDE, e posso afirmar que o ambiente integrado funciona tão bem com o OpenJRE quanto era com o JRE proprietário.</p>
<p>Vale lembrar que a versão 7 da plataforma Java também já está disponível em implementação <em>open source</em>, e será padrão na próxima versão do <a href="http://ubuntu.com">Ubuntu</a>, a Oneiric Ocelot (11.10), que será disponibilizada ainda este mês. Para aqueles que não quiserem ou não puderem esperar, é possível instalar o OpenJDK/OpenJRE no Natty utilizando um PPA, assim:</p>
<div style="color:#eee;background:#000;padding:5px;"><code>sudo add-apt-repository ppa:dlecan/openjdk<br />
sudo apt-get update<br />
sudo apt-get install openjdk-7-jdk</code></div>
<p>(No último comando, basta substituir <code>openjdk-7-jre</code> para instalar somente o JRE. Para instalar o código fonte, acrescente <code>openjdk-7-source</code>.)</p>
<p>Mas, por óbvio, nada é perfeito. Há aplicações (ou deveria eu escrever &#8220;<em>internet banking</em> de bancos brasileiros&#8221;?) que foram feitos com e somente para para o Java &#8220;proprietário&#8221;. Quem projeta e desenvolve essas soluções que ignoram o OpenJDK deve, agora, rever suas concepções. A alegação de suportar somente o Java da Oracle, no mais das vezes, é calcada nos termos &#8220;segurança&#8221; e &#8220;homologação&#8221;. Pode-se contra-argumentar que a Oracle, sentada sobre os impressionantes números que já citei, sente-se confortável o bastante para relegar as falhas de segurança da plataforma Java a segundo plano, não se empenhando em saná-las. Tanto é assim que <a href="http://www.hardware.com.br/noticias/2011-09/java-firefox-seguranca.html">a Fundação Mozilla está considerando seriamente desativar o <em>plugin</em> do Java nas próximas versões do Firefox</a>. Isso sem mencionar as <a href="http://en.wikipedia.org/wiki/Java_(software_platform)#Criticism">frequentes críticas</a> que são feitas à arquitetura da plataforma, às quais a empresa parece não querer oferecer uma resposta à altura.</p>
<p>Por tudo isso, creio que poderemos ver, num médio prazo, o futuro do Java sendo decidido exclusivamente pela comunidade Java, num cisma semelhante àquele que deu origem à The Document Foundation. A chave para que isso aconteça é a adoção maciça do OpenJDK, entregue pelas distribuições Linux e, quiçá, pelos próprios desenvolvedores Java, em conjunto (<em>bundled</em>) com suas aplicações. Só assim, vendo diminuída sua base de usuários, a Oracle venha a sair de sua zona de conforto e mude de atitude.</p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/java/'>java</a>, <a href='http://goncin.wordpress.com/tag/linux/'>linux</a>, <a href='http://goncin.wordpress.com/tag/openjdk/'>openjdk</a>, <a href='http://goncin.wordpress.com/tag/opiniao/'>opinião</a>, <a href='http://goncin.wordpress.com/tag/ubuntu/'>ubuntu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/763/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/763/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/763/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/763/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/763/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/763/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/763/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/763/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=763&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2011/10/06/java-a-hora-e-a-vez-do-openjdk/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/10/openjdk.jpg" medium="image">
			<media:title type="html">OpenJDK</media:title>
		</media:content>
	</item>
		<item>
		<title>Ubuntu Mono: uma nova e ótima fonte para programar</title>
		<link>http://goncin.wordpress.com/2011/10/04/ubuntu-mono-uma-nova-e-otima-fonte-para-programar/</link>
		<comments>http://goncin.wordpress.com/2011/10/04/ubuntu-mono-uma-nova-e-otima-fonte-para-programar/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 18:59:26 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[fontes]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=753</guid>
		<description><![CDATA[Na última semana, os designers do Ubuntu atualizaram a família de fontes homônima, atualizando a variante monoespaçada. Essa variante, que já existia nas versões anteriores do pacote, foi bastante aperfeiçoada, tendo sido feito o trabalho de hinting, essencial para que a fonte seja legível em tamanhos menores e que ela não pareça &#8220;embaçada&#8221; na tela. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=753&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na última semana, os <em>designers</em> do Ubuntu atualizaram a <a href="http://font.ubuntu.com/">família de fontes homônima</a>, atualizando a variante monoespaçada. Essa variante, que já existia nas versões anteriores do pacote, foi bastante aperfeiçoada, tendo sido feito o trabalho de <em>hinting</em>, essencial para que a fonte seja legível em tamanhos menores e que ela não pareça &#8220;embaçada&#8221; na tela. Eis como ficou:</p>
<div id="attachment_754" class="wp-caption aligncenter" style="width: 561px"><a href="http://goncin.files.wordpress.com/2011/10/ubuntu-mono.png"><img class="size-full wp-image-754" title="Ubuntu Mono, 24pt" src="http://goncin.files.wordpress.com/2011/10/ubuntu-mono.png?w=630" alt="Ubuntu Mono, 24pt"   /></a><p class="wp-caption-text">Ubuntu Mono, 24pt</p></div>
<p>Ela tem caracterísiticas interessantes para os programadores, como o zero ponteado (para ser distinto do &#8220;O&#8221; maiúsculo), e é bastante compacta, de modo que a tela exibe mais linhas de código, comparada com outras fontes.</p>
<div id="attachment_755" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/10/netbeans.png"><img class="size-full wp-image-755" title="Ubuntu Mono no Netbeans" src="http://goncin.files.wordpress.com/2011/10/netbeans.png?w=630&#038;h=390" alt="Ubuntu Mono no Netbeans" width="630" height="390" /></a><p class="wp-caption-text">Ubuntu Mono no Netbeans</p></div>
<div id="attachment_756" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/10/gedit.png"><img class="size-full wp-image-756" title="Ubuntu Mono no GEdit" src="http://goncin.files.wordpress.com/2011/10/gedit.png?w=630&#038;h=390" alt="Ubuntu Mono no GEdit" width="630" height="390" /></a><p class="wp-caption-text">Ubuntu Mono no GEdit</p></div>
<p>Certamente, a variante monoespaçada virá como padrão na próxima versão do Ubuntu, a Oneiric Ocelot (11.10), que sairá do forno ainda esse mês. Para quem não aguenta esperar e usa Ubuntu ou distros derivadas pode instalar a nova versão da Ubuntu Mono mediante um PPA:</p>
<div style="color:#eee;background:#000;padding:5px;"><code>sudo add-apt-repository ppa:webupd8team/ubuntu-font-family<br />
sudo apt-get update<br />
sudo apt-get install ttf-ubuntu-font-family</code></div>
<p>Já aqueles que usam outra distribuição (ou Windows <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  , ou Mac <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) pode baixar as fontes num pacote ZIP <a href="http://font.ubuntu.com">aqui</a>.</p>
<p>Aproveitem! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/fontes/'>fontes</a>, <a href='http://goncin.wordpress.com/tag/linux/'>linux</a>, <a href='http://goncin.wordpress.com/tag/programacao/'>programação</a>, <a href='http://goncin.wordpress.com/tag/ubuntu/'>ubuntu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/753/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/753/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/753/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=753&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2011/10/04/ubuntu-mono-uma-nova-e-otima-fonte-para-programar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/10/ubuntu-mono.png" medium="image">
			<media:title type="html">Ubuntu Mono, 24pt</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/10/netbeans.png" medium="image">
			<media:title type="html">Ubuntu Mono no Netbeans</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/10/gedit.png" medium="image">
			<media:title type="html">Ubuntu Mono no GEdit</media:title>
		</media:content>
	</item>
		<item>
		<title>Google Chrome vs. Chromium: onde estão as diferenças</title>
		<link>http://goncin.wordpress.com/2011/10/03/google-chrome-vs-chromium-onde-estao-as-diferencas/</link>
		<comments>http://goncin.wordpress.com/2011/10/03/google-chrome-vs-chromium-onde-estao-as-diferencas/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 12:49:31 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[google chrome]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=742</guid>
		<description><![CDATA[Creio que muitos de nós, usuários do Linux, já tivemos a dúvida entre optar pelo Google Chrome ou pelo Chromium. Em termos práticos, não há realmente muita diferença entre eles, mas, se existem dois &#8220;sabores&#8221;, é porque há distinções. Movido por minha curiosidade, fui pesquisar essa questão e acabei me deparando com um quadro comparativo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=742&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Creio que muitos de nós, usuários do Linux, já tivemos a dúvida entre optar pelo <a class="zem_slink" title="Google Chrome" href="http://www.google.com/chrome" rel="homepage">Google Chrome</a> ou pelo <a class="zem_slink" title="Google Chrome" href="http://www.chromium.org/Home" rel="homepage">Chromium</a>. Em termos práticos, não há realmente muita diferença entre eles, mas, se existem dois &#8220;sabores&#8221;, é porque há distinções. Movido por minha curiosidade, fui pesquisar essa questão e acabei me deparando com um <a href="http://code.google.com/p/chromium/wiki/ChromiumBrowserVsGoogleChrome">quadro comparativo</a> no <em>wiki</em> do projeto Chromium, o qual tomei a liberdade de traduzir e comentar logo abaixo.</p>
<table width="100%">
<tbody>
<tr>
<th></th>
<th>Google Chrome</th>
<th>Chromium</th>
<th>Observações</th>
</tr>
<tr>
<td>Logotipo</td>
<td>Colorido</td>
<td>Tons de azul</td>
<td></td>
</tr>
<tr>
<td>Relatório de falhas</td>
<td>Sim, se habilitado</td>
<td>Nenhum</td>
<td>Por favor, inclua rastreamento de erros com símbolos em ao relatar <em>bugs</em>, caso não tenha um relatório de falha</td>
</tr>
<tr>
<td>Métricas de uso</td>
<td>Sim, se habilitado</td>
<td>Não</td>
<td></td>
</tr>
<tr>
<td><em>Tags</em> de vídeo e áudio</td>
<td>AAC, MP3, Vorbis e Theora</td>
<td>Vorbis e Theora por padrão</td>
<td>Varia de acordo com as distribuições: no <a href="http://ubuntu.com">Ubuntu</a>, o Chromium vem com os dois formatos; no <a href="http://fedoraproject.org/pt_BR/">Fedora</a>, o suporte é completamente removido</td>
</tr>
<tr>
<td>Adobe Flash</td>
<td><em>Plugin</em> personalizado (não-livre) incluído no pacote</td>
<td>Suporta <em>plugins </em>NPAPI, inclusive o fornecido pela Adobe</td>
<td></td>
</tr>
<tr>
<td>Suporte a PDF</td>
<td><em>Plugin</em> personalizado (não-livre) incluído no pacote</td>
<td>Baixa e exibe documentos usando o visualizador PDF do sistema</td>
<td>O <em>plugin</em> de PDF do Chrome usa código não-livre de terceiros; não existe nenhum <em>plugin</em> de PDF em <em>software</em> livre que suporte todos os recursos que gostaríamos (como o preenchimento de formulários). <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </td>
</tr>
<tr>
<td>Código</td>
<td>Testado pelos desenvolvedores</td>
<td>Modificado pelas distribuições</td>
<td>Modificações adicionais pelas distribuições têm sido uma contínua fonte de problemas para os usuários; ao relatar <em>bugs</em>, por favor inclua infomações sobre a distribuição</td>
</tr>
<tr>
<td>Isolamento de processos (<em><a href="http://en.wikipedia.org/wiki/Sandbox_(computer_security)">sandbox</a></em>)</td>
<td>Sempre habilitado</td>
<td>Pode estar desabilitado, dependendo do distribuidor</td>
<td>Ubuntu e <a href="http://www.gentoo.org/">Gentoo</a>: sempre habilitado; alguns pacotes não oficiais do <a href="http://www.slackware.com/">Slackware</a> o removem!</td>
</tr>
<tr>
<td>Empacotamento</td>
<td>Um único deb/rpm</td>
<td>Depende da distribuição, às vezes dividido em diversas partes (dados de <a href="http://pt.wikipedia.org/wiki/Locale"><em>locale</em></a>, inspetor, v8)</td>
<td>O Ubuntu disponibiliza <a href="http://pt.wikipedia.org/wiki/Internacionalização_(software)">l10n</a> e o inspetor (opcional) e 2 conjuntos de <em>codecs</em> (1 obrigatório), seja para as <a href="https://launchpad.net/~chromium-daily/+archive/ppa">compilações noturnas</a>, para o <a href="https://launchpad.net/~chromium-daily/+archive/dev">canal de desenvolvimento</a> ou para o <a href="https://launchpad.net/~chromium-daily/+archive/beta">canal beta</a>, mas com os mesmos nomes de pacotes em cada canal</td>
</tr>
<tr>
<td>Perfil</td>
<td>Armazenado em <tt>~/.config/google-chrome</tt></td>
<td>Armazenado em <tt>~/.config/chromium</tt></td>
<td></td>
</tr>
<tr>
<td>Cache</td>
<td>Armazenado em <tt>~/.cache/google-chrome</tt></td>
<td>Armazenado <tt>~/.cache/chromium</tt></td>
<td></td>
</tr>
<tr>
<td>Garantia de qualidade</td>
<td>Novas versões são testadas antes de serem distribuídas aos usuários</td>
<td>Às vezes, compilações noturnas não testadas</td>
<td>Depende da distribuição: por exemplo, o Chromium do Ubuntu mantém os mesmos números de versão do Google Chrome, mas outras distribuições às vezes disponibilizam compilações &#8220;noturnas&#8221; instáveis</td>
</tr>
</tbody>
</table>
<p>É notório que o quadro acima, apesar de pertencer à documentação do Chromium, foi escrito por alguém ligado ao Google. Além de destacar as vantagens do Chrome sobre seu irmão 100% livre, a comparação não deixa de fazer certo terrorismo quanto ao código &#8220;não testado&#8221; e &#8220;modificado pelas distribuições&#8221; do Chromium. Isso sem falar no ícone &#8220;azul sem graça&#8221; do Chromium <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  .</p>
<p>Ideologias e mercadologias à parte, o Chrome é a escolha óbvia de quem prefere uma experiência de navegação na Internet <em>out of the box</em>, sem se preocupar com <em>codecs</em>, <em>plugins</em> e outros detalhes. Por outro lado, o Chromium é mais adequado àqueles que gostam de ter um controle maior sobre o que instalam, e aos ciosos de terem somente <em>software </em>livre em suas máquinas.</p>
<p>Concluindo, a escolha é sua <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .</p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/chrome/'>chrome</a>, <a href='http://goncin.wordpress.com/tag/chromium/'>chromium</a>, <a href='http://goncin.wordpress.com/tag/google-chrome/'>google chrome</a>, <a href='http://goncin.wordpress.com/tag/linux/'>linux</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/742/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/742/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/742/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=742&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2011/10/03/google-chrome-vs-chromium-onde-estao-as-diferencas/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>
	</item>
		<item>
		<title>Integrando WordPress e Yii Framework: uma nova abordagem</title>
		<link>http://goncin.wordpress.com/2011/07/01/integrando-wordpress-e-yii-framework-uma-nova-abordagem/</link>
		<comments>http://goncin.wordpress.com/2011/07/01/integrando-wordpress-e-yii-framework-uma-nova-abordagem/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 17:58:45 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[integração]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[yii framework]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=705</guid>
		<description><![CDATA[Artigo publicado originalmente em inglês no wiki do Yii Framework, em 1º de julho de 2011. Parece que muitas pessoas andam tentando fazer com que o WordPress e o Yii Framework trabalhem em conjunto. Eu me deparei com o mesmo problema, mas agora creio que o resolvi, após muito quebrar a cuca e gastar inúmeras horas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=705&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="background:aliceblue;text-align:center;padding:5px;">Artigo publicado <a href="http://www.yiiframework.com/wiki/213/integrating-wordpress-and-yii-yet-another-approach/">originalmente em inglês no <em>wiki</em> do Yii<br />
Framework</a>, em 1º de julho de 2011.</div>
<p>Parece que muitas pessoas andam tentando fazer com que o WordPress e o Yii Framework trabalhem em conjunto. Eu me deparei com o mesmo problema, mas agora creio que o resolvi, após muito quebrar a cuca e gastar inúmeras horas de trabalho.</p>
<p>Meu ponto de partida foi a leitura dos artigos (em inglês) do <a href="http://www.yiiframework.com/wiki/144/run-an-yii-application-inside-an-wordpress-page/">imasia</a> e do <a href="http://www.yiiframework.com/wiki/202/integrating-yii-with-wordpress/">isekream</a>. O princípio de ambas as pesquisas é chamar a aplicação Yii de dentro do WordPress. A solução que proponho coloca-se na mão contrária: utilizar o WordPress como modelo de página para a aplicação Yii, de modo que o usuário final nem perceberá que saiu do primeiro e foi parar na segunda.</p>
<p>Vamos em frente.</p>
<h2>No WordPress</h2>
<p>Minha instalação do WordPress usa um tema-filho do Twentyten (o padrão do WordPress 3.x). Para os efeitos deste tutorial, assumamos que nossa instalação do WordPress está em <strong>http://seuservidor.com.br/wp</strong>. Ao aplicá-lo, altere o caminho de acordo com sua situação.</p>
<p>O primeiro passo é criar um arquivo na pasta do seu tema do WP, e chamá-lo yii-template.php.</p>
<p><em>Arquivo:</em> <strong>[raiz-wp]/wp-content/themes/[seutema]/yii-template.php</strong></p>
<p><pre class="brush: php; html-script: true;">
&lt;?php
/**
 * Template Name: Yii Template
 *
 * Template for Yii-powered pages
 *
 * The &quot;Template Name:&quot; bit above allows this to be selectable
 * from a dropdown menu on the edit page screen.
 *
 * @package WordPress
 * @subpackage Twenty_Ten
 * @since Twenty Ten 1.0
 */
get_header();
?&gt;
 
&lt;div id=&quot;container&quot;&gt;
  &lt;div id=&quot;content&quot; role=&quot;main&quot;&gt;
 
    &lt;?php
    /*
     * O marcador de lugar abaixo será substituído mais tarde pelo conteúdo gerado pelo Yii.
     */
    ?&gt;
    &lt;!-- ###yii-content-placeholder### --&gt;
 
  &lt;/div&gt;&lt;!-- #content --&gt;
&lt;/div&gt;&lt;!-- #container --&gt;
 
&lt;?php get_sidebar(); ?&gt;
&lt;?php get_footer(); ?&gt;
</pre></p>
<p>Acabamos de criar um novo modelo para páginas do WordPress.</p>
<p>O passo seguinte é criar uma página no WordPress que use o modelo recém-criado. Acesse o painel administrativo do seu WP, crie uma página e selecione &#8220;Yii Template&#8221; (deve estar listado) como modelo da página. Informe <strong>yiipage</strong> no título e deixe o conteúdo da página em branco. Após salvar, você deverá ser capaz de ver a página usando o endereço h<strong>ttp://seuservidor.com.br/wp/yiipage</strong>.</p>
<p>Isso é tudo o que tínhamos que fazer no WordPress.</p>
<h2>No Yii</h2>
<p>Crie uma aplicação Yii (usando <em>yiic</em>) sob a raiz da sua instalação do WP, numa pasta chamada <strong>yii</strong>. Você deverá ver a conhecida página inicial do Yii ao acessar <strong>http://seuservidor.com.br/wp/yii</strong>.</p>
<p>We&#8217;ll need a custom ClientScript class. Let&#8217;s create it under [yii-root]/protected/components.</p>
<p>Teremos que criar nossa própria classe ClientScript. Vamos fazê-lo sob  [raiz-yii]/protected/components.</p>
<p><em>Arquivo:</em> <strong>[raiz-yii]/protected/components/ClientScript.php</strong></p>
<p><pre class="brush: php; html-script: true;">
&lt;?php
 
class ClientScript extends CClientScript {
 
  public function renderHead(&amp;$output) {
    $html = '';
    foreach ($this-&gt;metaTags as $meta) $html.=CHtml::metaTag($meta['content'], null, null, $meta) . &quot;\n&quot;;
    foreach ($this-&gt;linkTags as $link) $html.=CHtml::linkTag(null, null, null, null, $link) . &quot;\n&quot;;    
    foreach ($this-&gt;cssFiles as $url =&gt; $media) $html.=CHtml::cssFile($url, $media) . &quot;\n&quot;;
    foreach ($this-&gt;css as $css) $html.=CHtml::css($css[0], $css[1]) . &quot;\n&quot;;
    if ($this-&gt;enableJavaScript) {
      if (isset($this-&gt;scriptFiles[self::POS_HEAD])) {
        foreach ($this-&gt;scriptFiles[self::POS_HEAD] as $scriptFile) $html.=CHtml::scriptFile($scriptFile) . &quot;\n&quot;;
      }

      if (isset($this-&gt;scripts[self::POS_HEAD])) $html.=CHtml::script(implode(&quot;\n&quot;, $this-&gt;scripts[self::POS_HEAD])) . &quot;\n&quot;;
    }

    if ($html !== '') {
      $count = 0;
      /*
       * A linha abaixo garante que tudo o que for registrado pelo Yii no POS_HEAD irá imediatamente
       * antes do final do cabeçalho (). Dessa forma, os estilos e scripts do Yii serão
       * renderizados *ABAIXO* e *DEPOIS* daqueles do WordPress.
       *
       * A linha original na classe ancestral era assim:
       * $output = preg_replace('/(]*&gt;|)/is', '$1', $output, 1, $count);
       *
       */
      $output = preg_replace('/()/is', '$1', $output, 1, $count);
      if ($count) $output = str_replace('', $html, $output);
      else $output=$html . $output;
    }
  }
 }
?&gt;
</pre></p>
<p>Será necessário também sobrepor o método <code>CController.beforeRender()</code>. Isso pode ser feito no arquivo Controller.php, que já existe em [raiz-yii]/protected/components.</p>
<p><em>Arquivo:</em> <strong>[raiz-yii]/protected/components/Controller.php</strong></p>
<p><pre class="brush: php; html-script: true;">
&lt;?php
/**
 * Controller is the customized base controller class.
 * All controller classes for this application should extend from this base class.
 */
class Controller extends CController
{
    /**
     * @var string the default layout for the controller view. Defaults to '//layouts/column1',
     * meaning using a single column layout. See 'protected/views/layouts/column1.php'.
     */
    public $layout='//layouts/column1';
    /**
     * @var array context menu items. This property will be assigned to {@link CMenu::items}.
     */
    public $menu=array();
    /**
     * @var array the breadcrumbs of the current page. The value of this property will
     * be assigned to {@link CBreadcrumbs::links}. Please refer to {@link CBreadcrumbs::links}
     * for more details on how to specify this property.
     */
    public $breadcrumbs=array();
 
  protected function beforeRender($view) {
 
    /* 
     * Let's prevent Yii from registering jQuery library. We'll stick with
     * the jQuery registered by Wordpress.
    */
    Yii::app()-&gt;clientScript-&gt;scriptMap=array(
      'jquery.js'=&gt;false,
      'jquery.min.js'=&gt;false,
    );
    /*
     * O Wordpress trabalha com a jQuery no modo &quot;sem-conflito&quot;, i. e., ele não define o apelido $
     * para o objeto jQuery. No entanto, muitos scripts e plugin do Yii supõem que $ aponta para a
     * jQuery, de modo que precisamos fazer essa associação nós mesmos.
     */
    if(! Yii::app()-&gt;clientScript-&gt;isScriptRegistered('jquery-alias', CClientScript::POS_HEAD)) {
      Yii::app()-&gt;clientScript-&gt;registerScript('jquery-alias', 'var $ = jQuery', CClientScript::POS_HEAD);
    }

    /*
     * Para manter a coerência visual entre as páginas comuns do Wordpress e aquelas turbinadas
     * pelo Yii, devemos utilizar o CSS fornecido pelo tema do Wordpress. Contudo, o Yii usa
     * algumas classes CSS específicas para formulários, então é uma boa ideia registrar o
     * arquivo que as contém.
     */
    Yii::app()-&gt;clientScript-&gt;registerCssFile(Yii::app()-&gt;request-&gt;baseUrl . '/css/form.css');

    return parent::beforeRender($view);
  }

}
?&gt;
</pre></p>
<p>Agora, a pedra fundamental da ideia toda. Vamos alterar o arquivo principal do <em>layout</em> do Yii, para buscar a página do WordPress que preparamos previamente, e substituir o marcador de lugar pelo conteúdo gerado pelo <em>framework</em>.</p>
<p><em>Arquivo:</em> <strong>[raiz-yii]/protected/views/layouts/main.php</strong></p>
<p><pre class="brush: php; html-script: true;">
&lt;?php
  /*
   * Aqui reside o cerne da mágica. Ao invés de usar o HTML do arquivo principal de
   * layout fornecido pelo Yii, buscamos a página especial do Wordpress (como uma string)
   * e substituímos o marcador de lugar pelo conteúdo real.
   */

  echo str_replace('&lt;!-- ###yii-content-placeholder### --&gt;',
    $content, file_get_contents('http://seuservidor.com.br/wp/yiipage'));

  /* NÃO SE ESQUÇA DE APAGAR O CONTEÚDO DA PÁGINA ORIGINAL ;) */

?&gt;
</pre></p>
<p>Por fim, vamos dizer ao Yii para usar nossa classe ClientScript personalizada.</p>
<p><em>Arquivo:</em> <strong>[raiz-yii]/protected/config/main.php</strong></p>
<p><pre class="brush: php;">
&lt;?php   
    (...)   'components'=--&gt;array(
    /*
     * Vamos usar nosso próprio ClientScript (application.components.ClientScript).
     */
    'clientScript' =&gt; array(
      'class' =&gt; 'ClientScript'
    ),
  (...)
?&gt;
</pre></p>
<p>E isso é tudo. Você deverá conseguir ver sua aplicação Yii com tema WordPress acessando <strong>http://seuservidor.com.br/wp/yii</strong>, e até mesmo fazer <em>login</em> mediante <strong>http://<strong>seuservidor.com.br</strong>/wp/yii/index.php?r=site/login</strong>. Adicionalmente, você pode ajustar sua configuração do Yii para usar URLs de caminho e ocultar o nome do <em>script</em> (assim, seus URLs se parecerão com <strong>http://<strong>seuservidor.com.br</strong>/wp/yii/controller/action</strong>). <strong>E sim, o AJAX funciona! *__*</strong></p>
<p>De volta ao WordPress, a tarefa final é criar itens de menu (como <em>links</em>) apontando para as páginas turbinadas pelo Yii.</p>
<p>Espero que isto seja tão útil para você quanto foi para mim. Saudações!</p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/integracao/'>integração</a>, <a href='http://goncin.wordpress.com/tag/jquery/'>jquery</a>, <a href='http://goncin.wordpress.com/tag/php/'>php</a>, <a href='http://goncin.wordpress.com/tag/programacao/'>programação</a>, <a href='http://goncin.wordpress.com/tag/wordpress/'>wordpress</a>, <a href='http://goncin.wordpress.com/tag/yii/'>yii</a>, <a href='http://goncin.wordpress.com/tag/yii-framework/'>yii framework</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/705/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/705/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/705/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=705&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2011/07/01/integrando-wordpress-e-yii-framework-uma-nova-abordagem/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>
	</item>
		<item>
		<title>Ubuntu 11.04 (Natty Narwhal): ajustes para melhorar a usabilidade do Unity</title>
		<link>http://goncin.wordpress.com/2011/05/03/ubuntu-11-04-natty-narwhal-ajustes-para-melhorar-a-usabilidade-do-unity/</link>
		<comments>http://goncin.wordpress.com/2011/05/03/ubuntu-11-04-natty-narwhal-ajustes-para-melhorar-a-usabilidade-do-unity/#comments</comments>
		<pubDate>Tue, 03 May 2011 12:32:11 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[opinião]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[interface gráfica]]></category>
		<category><![CDATA[natty]]></category>
		<category><![CDATA[unity]]></category>
		<category><![CDATA[usabilidade]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=671</guid>
		<description><![CDATA[Salve, pessoas! O Ubuntu 11.04 (também conhecido pelo simpático e críptico codinome Natty Narwhal) já está aí, e, com ele, veio junto a nada unânime interface Unity. Ainda não tenho uma opinião fechada sobre ela, mas, tão logo a instalei (ou melhor: consegui fazê-la funcionar ), notei que ela levou a ideia de melhor aproveitamento [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=671&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Salve, pessoas!</p>
<p>O Ubuntu 11.04 (também conhecido pelo simpático e críptico codinome Natty Narwhal) já está aí, e, com ele, veio junto a nada unânime interface Unity. <a href="https://twitter.com/#!/g0nc1n/status/64468637351813120">Ainda não tenho uma opinião fechada sobre ela</a>, mas, tão logo a instalei (ou melhor: consegui fazê-la funcionar <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ), notei que ela levou a ideia de melhor aproveitamento do espaço da tela &#8211; <a href="http://goncin.wordpress.com/2010/06/15/ganhando-espaco-na-interface-grafica-do-ubuntu/">algo que venho advogando, e não é de hoje</a> &#8211; às últimas consequências. No meu ponto de vista, porém, o ganho de espaço útil trouxe consigo uma certa queda nos níveis de usabilidade.</p>
<p>Em face disso, fui em busca de ajustes na configuração para que ela satisfizesse minhas necessidades de usuário. E isso é o que eu gostaria de compartilhar com vocês neste <em>post</em>.</p>
<h1>Instalando o pré-requisito</h1>
<p>Para poder configurar o Unity, é necessário o aplicativo de Configurações Avançadas do Compiz. Parece que ele não faz parte de uma instalação padrão e limpa do Natty. Para instalá-lo, basta procurar por &#8220;Configurações avançadas de efeitos da área de trabalho (ccsm)&#8221; na Central de Programas do Ubuntu, ou, para os fãs de um velho e bom terminal, <code>sudo apt-get install compizconfig-settings-manager</code>.</p>
<h1>Encontrando o aplicativo de configurações</h1>
<p>Para encontrar as Configurações Avançadas do Compiz (CCSM, para encurtar), após a instalação, basta clicar sobre o botão do Ubuntu (canto superior esquerdo da tela), digitar &#8220;compiz&#8221; para efetuar uma busca e clicar sobre o ícone correspondente.</p>
<div id="attachment_676" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/05/compiz1.png"><img class="size-full wp-image-676" title="Encontrando as Configurações Avançadas do Compiz" src="http://goncin.files.wordpress.com/2011/05/compiz1.png?w=630&#038;h=198" alt="Encontrando as Configurações Avançadas do Compiz" width="630" height="198" /></a><p class="wp-caption-text">Encontrando as Configurações Avançadas do Compiz</p></div>
<h1>Encontrando as configurações do Unity</h1>
<p>O Unity é, na verdade, um <em>plugin</em> do <a href="http://pt.wikipedia.org/wiki/Compiz">Compiz</a>. Para encontrar as configurações específicas dele no CCSM, digite &#8220;unity&#8221; na caixa de buscas e, uma vez mais, clique sobre o respectivo ícone.</p>
<div id="attachment_677" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/05/ccsm1.png"><img class="size-full wp-image-677" title="Encontrando as configurações do Unity no CCSM" src="http://goncin.files.wordpress.com/2011/05/ccsm1.png?w=630&#038;h=279" alt="Encontrando as configurações do Unity no CCSM" width="630" height="279" /></a><p class="wp-caption-text">Encontrando as configurações do Unity no CCSM</p></div>
<h1>Os ajustes</h1>
<h2>Tornando o painel lateral permanentemente visível</h2>
<p>O painel lateral do Unity, por padrão, esconde-se quando julga não ser útil ao usuário num dado momento. Se você, como eu, tem um monitor <em>widescreen</em> e fica &#8220;perdido&#8221; sem algo que lhe mostre quais janelas estão abertas, talvez queira que o painel lateral fique visível permanentemente. Para isso, escolha a opção &#8220;Never&#8221; na configuração &#8220;Hide launcher&#8221;.</p>
<div id="attachment_678" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/05/ccsm2.png"><img class="size-full wp-image-678" title="Ajustando o painel lateral do Unity para visibilidade permanente" src="http://goncin.files.wordpress.com/2011/05/ccsm2.png?w=630&#038;h=349" alt="Ajustando o painel lateral do Unity para visibilidade permanente" width="630" height="349" /></a><p class="wp-caption-text">Ajustando o painel lateral do Unity para visibilidade permanente</p></div>
<h2>Distinguindo melhor os aplicativos abertos</h2>
<p>Ficou confuso saber quais aplicativos estão abertos, observando o painel lateral? Podemos melhorar isso. Na aba &#8220;Experimental&#8221;, ajustemos &#8220;Backlight Mode&#8221; para &#8220;Backlight Toggles&#8221;. Dessa forma, aquela &#8220;luzinha colorida&#8221; que aparece por detrás dos ícones do painel só estará ativa para os aplicativos que estão sendo executados no momento.</p>
<div id="attachment_679" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/05/ccsm3.png"><img class="size-full wp-image-679" title="Deixando a luz de fundo acesa só para os aplicativos abertos" src="http://goncin.files.wordpress.com/2011/05/ccsm3.png?w=630&#038;h=378" alt="Deixando a luz de fundo acesa só para os aplicativos abertos" width="630" height="378" /></a><p class="wp-caption-text">Deixando a luz de fundo acesa só para os aplicativos abertos</p></div>
<h2>Diminuindo o tamanho dos ícones</h2>
<p>O tamanho padrão dos ícones do painel lateral é 48 <em>pixels</em>, dimensão pensada, certamente, para uso do Unity em dispositivos <em>touchscreen</em>, como <em>tablets</em>. Contudo, se o que você tem é um computador <em>desktop</em> ou mesmo um <em>notebook</em>, esse tamanho poderá parecerá exagerado &#8211; em especial se você optar por deixar o painel sempre visível. Também na aba &#8220;Experimental&#8221;, há o ajuste &#8220;Launcher icon size&#8221;, no qual eu coloquei o mínimo possível: 32 <em>pixels</em>. Sinceramente, eu acho que o tamanho mínimo poderia ser ainda menor, mas&#8230;</p>
<div id="attachment_681" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/05/ccsm4.png"><img class="size-full wp-image-681" title="Querida, encolhi os ícones!" src="http://goncin.files.wordpress.com/2011/05/ccsm4.png?w=630&#038;h=378" alt="Querida, encolhi os ícones!" width="630" height="378" /></a><p class="wp-caption-text">Querida, encolhi os ícones!</p></div>
<h2>Um pouco de cosmética: deixando o painel superior (semi)transparente</h2>
<p>É perfumaria, eu sei, mas eu acho bonitinho <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  . Por padrão, o painel superior é 100% opaco, mas podemos alterar isso, ajustando o valor de &#8220;Panel Opacity&#8221; (na aba &#8220;Experimental&#8221;) para um valor menor que 1. Pessoalmente, gosto do efeito que 0,85 proporciona.</p>
<div id="attachment_683" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/05/ccsm5.png"><img class="size-full wp-image-683" title="Transparência é sexy, não concorda?" src="http://goncin.files.wordpress.com/2011/05/ccsm5.png?w=630&#038;h=378" alt="Transparência é sexy, não concorda?" width="630" height="378" /></a><p class="wp-caption-text">Transparência é sexy, não concorda?</p></div>
<h2>Reabilitando a área de notificação para todas as aplicações</h2>
<p>Você deve ter notado (ou não <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) que a área de notificação (vulgo <em>systray</em>) do Natty está bem mais enxuta, e que muitas aplicações que davam as caras por lá não aparecem mais. Se isso é um problema para você, é possível voltar a permitir que qualquer aplicação volte a colocar seu ícone por lá. Dessa vez, deixaremos o CCSM de lado e vamos direto à linha de comando:</p>
<div style="color:#fff;background:#000;padding:4px;"><code>gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"</code></div>
<p>Será necessário encerrar a sessão e fazer login novamente para que a nova configuração tenha efeito. Esta última dica foi devidamente &#8220;chupinhada&#8221; do site <a href="http://www.webupd8.org/2011/04/how-to-re-enable-notification-area.html">WEB UPD8</a>, aliás ótima referência sobre Ubuntu (e Linux, em geral), para quem arranha pelo menos um pouco de inglês.</p>
<div id="attachment_684" class="wp-caption aligncenter" style="width: 476px"><a href="http://goncin.files.wordpress.com/2011/05/systray.png"><img class="size-full wp-image-684" title="Os ícones de volta à área de notificação. Entre eles, Pidgin e Dropbox." src="http://goncin.files.wordpress.com/2011/05/systray.png?w=630" alt="Os ícones de volta à área de notificação. Entre eles, Pidgin e Dropbox."   /></a><p class="wp-caption-text">Os ícones de volta à área de notificação. Entre eles, Pidgin e Dropbox.</p></div>
<h1>Conclusão</h1>
<p>O Unity é ótimo em sua intenção de proporcionar a maior área útil possível de tela. Se ele conseguirá fazer isso bem e conquistar a grande massa de usuários, só o tempo dirá. Se me permitem opinar, acho que a interface está num estado ainda beta, e não são poucos aqueles que relatam dificuldades em fazê-la funcionar &#8211; foi assim também comigo, o Unity não rodou <em>out of the box</em>, como prometido, apesar de minha placa nVIDIA GeForce 9800 GT. Mas vale, porque estamos experimentando um mundo novo, e o foco do Unity, inequivocadamente, é fazer a transição do <em>mouse</em> para o <em>touchscreen</em> o mais suave possível.</p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/interface-grafica/'>interface gráfica</a>, <a href='http://goncin.wordpress.com/tag/linux/'>linux</a>, <a href='http://goncin.wordpress.com/tag/natty/'>natty</a>, <a href='http://goncin.wordpress.com/tag/opiniao/'>opinião</a>, <a href='http://goncin.wordpress.com/tag/ubuntu/'>ubuntu</a>, <a href='http://goncin.wordpress.com/tag/unity/'>unity</a>, <a href='http://goncin.wordpress.com/tag/usabilidade/'>usabilidade</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/671/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/671/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/671/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=671&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2011/05/03/ubuntu-11-04-natty-narwhal-ajustes-para-melhorar-a-usabilidade-do-unity/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/05/compiz1.png" medium="image">
			<media:title type="html">Encontrando as Configurações Avançadas do Compiz</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/05/ccsm1.png" medium="image">
			<media:title type="html">Encontrando as configurações do Unity no CCSM</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/05/ccsm2.png" medium="image">
			<media:title type="html">Ajustando o painel lateral do Unity para visibilidade permanente</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/05/ccsm3.png" medium="image">
			<media:title type="html">Deixando a luz de fundo acesa só para os aplicativos abertos</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/05/ccsm4.png" medium="image">
			<media:title type="html">Querida, encolhi os ícones!</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/05/ccsm5.png" medium="image">
			<media:title type="html">Transparência é sexy, não concorda?</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/05/systray.png" medium="image">
			<media:title type="html">Os ícones de volta à área de notificação. Entre eles, Pidgin e Dropbox.</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalação do SQL Server 2008: erro bizarro, solução idem</title>
		<link>http://goncin.wordpress.com/2011/02/17/instalacao-do-sql-server-2008-erro-bizarro-solucao-idem/</link>
		<comments>http://goncin.wordpress.com/2011/02/17/instalacao-do-sql-server-2008-erro-bizarro-solucao-idem/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 10:16:59 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[gambiarras]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[sql server 2008]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=655</guid>
		<description><![CDATA[Salve 2011! (E o ano ainda não tinha começado para esse pobre blog&#8230;) Não se assuste com o título desse post. Sim, sou eu falando (mal) da Microsoft. Ontem, por dever de ofício, fui instalar o SQL Server 2008 em algumas máquinas de laboratório, para alunos de Sistemas de Informação. Em muitos equipamentos, logo após [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=655&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Salve 2011! (E o ano ainda não tinha começado para esse pobre blog&#8230;)</p>
<p>Não se assuste com o título desse <em>post</em>. Sim, sou eu falando (mal) da <a href="http://microsoft.com">Microsoft</a>.</p>
<p>Ontem, por dever de ofício, fui instalar o SQL Server 2008 em algumas máquinas de laboratório, para alunos de Sistemas de Informação. Em muitos equipamentos, logo após iniciar o <code>setup.exe</code>, deparei-me com esse pequeno poema:</p>
<div id="attachment_656" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2011/02/invoke-or-begininvoke.jpg"><img class="size-full wp-image-656" title="&quot;Invoke or BeginInvoke cannot be called on a control until the window handle has been created..&quot; Microsoft e suas esclarecedoras mensagens de erro." src="http://goncin.files.wordpress.com/2011/02/invoke-or-begininvoke.jpg?w=630&#038;h=137" alt="&quot;Invoke or BeginInvoke cannot be called on a control until the window handle has been created..&quot; Microsoft e suas esclarecedoras mensagens de erro." width="630" height="137" /></a><p class="wp-caption-text">&quot;Invoke or BeginInvoke cannot be called on a control until the window handle has been created..&quot; Microsoft e suas esclarecedoras mensagens de erro.</p></div>
<p>Tomei o caminho de Delfos e fui perguntar ao <a href="http://google.com">Grande Oráculo</a> o que fazer. Dentre as várias respostas (enigmáticas) que recebi, uma delas recomendava baixar dois <em>hotfixes</em>, coisa de míseros 200 MB &#8211; que, não bastasse o tempo perdido aguardando o <em>download</em> terminar, não resolveram o problema.</p>
<p>Mas eu <a href="http://twitter.com/#search?q=%23SouDev">#SouDev</a> e não desisto nunca. Continuei garimpando os resultados da busca, até que topei com <a href="http://weblogs.asp.net/jeffwids/archive/2010/05/30/sql-server-2008-service-pack-1-and-the-invoke-or-begininvoke-cannot-be-called-error-message.aspx">esse <em>post</em> aqui</a>, que propunha uma solução ridiculamente simples (para não dizer risível). Ei-la: ao iniciar a instalação do SQL Server 2008, surge uma pequena janela, semelhante a essa:</p>
<div id="attachment_659" class="wp-caption aligncenter" style="width: 438px"><a href="http://goncin.files.wordpress.com/2011/02/please-wait.png"><img class="size-full wp-image-659" title="Podem xingá-la. A culpa da coisa toda é dessa janelinha." src="http://goncin.files.wordpress.com/2011/02/please-wait.png?w=630" alt="Podem xingá-la. A culpa da coisa toda é dessa janelinha."   /></a><p class="wp-caption-text">Podem xingá-la. A culpa da coisa toda é dela.</p></div>
<p>O erro que relatei acima é causado &#8211; pasmem! &#8211; pela falta de foco na janelinha acima. Ela se acha o centro do mundo, quer as atenções só para ela, de tal forma que, tão logo ela surja na tela, <strong>é necessário clicar sobre ela para focá-la</strong>. Fim. Ou quase isso: essa janela aparece umas três ou quatro vezes durante o processo de instalação, e em todas o procedimento do clique precisa ser repetido. Aliás, depois de algumas tentativas malsucedidas, passei até a mover um pouco a janelinha egoísta pela tela, para garantir que ela havia mesmo recebido o foco.</p>
<p>Ah, sim, depois disso ainda tive que responder uma pá de perguntas e preencher uma dezena de parâmetros, e esperar uma 4 horas para que a instalação se completasse&#8230; <img src='http://s1.wp.com/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> </p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/microsoft/'>microsoft</a>, <a href='http://goncin.wordpress.com/tag/sql-server-2008/'>sql server 2008</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/655/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/655/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/655/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=655&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2011/02/17/instalacao-do-sql-server-2008-erro-bizarro-solucao-idem/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/02/invoke-or-begininvoke.jpg" medium="image">
			<media:title type="html">&#34;Invoke or BeginInvoke cannot be called on a control until the window handle has been created..&#34; Microsoft e suas esclarecedoras mensagens de erro.</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2011/02/please-wait.png" medium="image">
			<media:title type="html">Podem xingá-la. A culpa da coisa toda é dessa janelinha.</media:title>
		</media:content>
	</item>
		<item>
		<title>Meu ambiente de trabalho em 7 itens</title>
		<link>http://goncin.wordpress.com/2010/12/27/meu-ambiente-de-trabalho-em-7-itens/</link>
		<comments>http://goncin.wordpress.com/2010/12/27/meu-ambiente-de-trabalho-em-7-itens/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 12:25:37 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gimp]]></category>
		<category><![CDATA[gnome-rdp]]></category>
		<category><![CDATA[guake]]></category>
		<category><![CDATA[meu ambiente de trabalho em 7 itens]]></category>
		<category><![CDATA[playonlinux]]></category>
		<category><![CDATA[remmina]]></category>
		<category><![CDATA[vmware player]]></category>
		<category><![CDATA[wine]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=615</guid>
		<description><![CDATA[Não sei direito onde a coisa começou. Recebi do Alexandre Gaigalas (@alganet) e, num segundo momento, também do Bruno Roberto Gomes (@brgomes) a incumbência de compartilhar 7 itens do meu ambiente de trabalho. Tanto um quanto o outro já escreveu sobre o mesmo tema, tendo recebido a tarefa de outras pessoas. Pesquisei um pouco a respeito, e descobri [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=615&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Não sei direito onde a coisa começou. Recebi do <strong>Alexandre Gaigalas</strong> (<a href="http://twitter.com/alganet">@alganet</a>) e, num segundo momento, também do <strong>Bruno Roberto Gomes</strong> (<a href="http://twitter.com/brgomes">@brgomes</a>) a incumbência de compartilhar 7 itens do meu ambiente de trabalho. Tanto <a href="http://php5.net.br/ambiente-de-trabalho">um</a> quanto <a href="http://www.brgomes.com/blog/meu-ambiente-de-trabalho-em-7-itens/">o outro</a> já escreveu sobre o mesmo tema, tendo recebido a tarefa de outras pessoas. Pesquisei um pouco a respeito, e descobri no <a href="http://duodra.co/post/seu-ambiente-de-trabalho-em-7-itens/">blog do Duodraco</a> que a ideia é fazer disso um meme. Então vamos lá. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="attachment_620" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/ambiente-trabalho.png"><img class="size-full wp-image-620  " title="Meu ambiente de trabalho. Não reparem a bagunça :P" src="http://goncin.files.wordpress.com/2010/12/ambiente-trabalho.png?w=630&#038;h=393" alt="Meu ambiente de trabalho. Não reparem a bagunça :P" width="630" height="393" /></a><p class="wp-caption-text">Meu ambiente de trabalho. Não reparem a bagunça <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p></div>
<h1>1) Um <a href="http://ubuntu.com">Ubuntu</a> altamente personalizado</h1>
<p>Há cerca de um ano, encarei o desafio de abandonar o Windows como plataforma de desenvolvimento e usar Linux para esse propósito. Escolhi a distribuição Ubuntu, que já usava nos meus computadores pessoais e com a qual já estava familiarizado.</p>
<p>Como gosto de deixar as coisas bem do meu jeito, meu Ubuntu, ao menos visualmente, em nada se parece com uma instalação recém-feita desse sistema operacional. Entre as personalizações que costumo fazer na interface, estão:</p>
<ul>
<li>a troca do tema padrão (atualmente, uso o tema <a href="http://skiesofazel.deviantart.com/art/Orta-184118297">Orta</a> com os ícones <a href="http://tiheum.deviantart.com/art/Faenza-Icons-173323228">Faenza</a>);</li>
<li>a redução para apenas um painel, o inferior, e o utilização do <a href="http://do.davebsd.com/wiki/Docky">Docky</a> na parte superior da tela para lançamento de aplicativos;</li>
<li>o <em>applet</em> <a href="https://launchpad.net/cardapio">Cardápio</a> no lugar do tradicional menu do GNOME; e</li>
<li>o <em>applet</em> <a href="https://launchpad.net/dockbar">Dockbarx</a> em substituição à lista de janelas/tarefas.</li>
</ul>
<p>Minha instalação corrente começou na versão Karmic Koala (9.10), foi atualizada para a Lucid Lynx (10.04 LTS) e, no momento, corresponde à versão mais atual do SO, Maverick Meerkat (10.10). Tudo isso sem precisar formatar, comprovando a estabilidade do ambiente. Um ano, três versões e tudo rodando redondo. Exceto, é claro, quando eu tento fazer alguma atualização <em>bleeding edge</em> e ferro alguma coisa &#8211; a maior vítima é o <em>driver</em> da placa de vídeo. Mas <a href="http://twitter.com/#!/search?q=%23SouDev">#SouDev</a> e não desisto nunca, daqui a pouco ponho o sistema de volta pra funcionar.</p>
<h1>2) <a href="http://netbeans.org">Netbeans</a> para desenvolvimento PHP</h1>
<p>Sempre estive em busca do IDE perfeito e <em>open source</em> (ou, pelo menos, <em>freeware</em>) para desenvolver em PHP (havia até um <em>post </em>meu sobre isso <a href="http://devfranca.ning.com/">numa rede do <strong>Ning</strong></a>, mas todo mundo sabe o que aconteceu&#8230;). A meu ver, o estado da arte em termos de ambiente integrada para essa linguagem ainda não foi atingido. Contudo, o Netbeans evoluiu rapidamente e é, nos dias atuais, o que mais se aproxima do Olimpo. Tem, como vantagens, o fato de ser <em>open source, </em>multiplataforma (ainda que &#8220;multiplataforma&#8221;, aqui, seja sinônimo de Java) e relativamente leve, consideradas as circunstâncias. Por outro lado, ser baseado em Java, após a aquisição da Sun pela Oracle, é algo no mínimo temerário. Não por acaso, aguardo ansiosamente que o <a href="http://www.kdevelop.org/">KDevelop</a> com suporte a PHP amadureça e se torne logo utilizável. Pelo que já vi deste último, vem coisa boa por aí.</p>
<div id="attachment_628" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/netbeans.png"><img class="size-full wp-image-628" title="Netbeans IDE 7.0 Beta" src="http://goncin.files.wordpress.com/2010/12/netbeans.png?w=630&#038;h=307" alt="Netbeans IDE 7.0 Beta" width="630" height="307" /></a><p class="wp-caption-text">Netbeans IDE 7.0 Beta</p></div>
<p>Quem estiver interessado no meu esquema (escuro) de cores para o Netbeans, pode baixá-lo <a href="http://dl.dropbox.com/u/1299872/goncins-netbeans-color-scheme.zip">aqui</a> e importá-lo em <code>Ferramentas &gt; Opções &gt; Importar</code> (no canto inferior esquerdo do diálogo).</p>
<h1>3) <a href="http://www.winehq.org/">Wine</a>, <a href="http://www.playonlinux.com/en/">PlayOnLinux</a> e <a href="http://wiki.winehq.org/winetricks">Winetricks</a></h1>
<p>Esta tríade de utilitários permite executar no Linux muitos programas da plataforma Windows. Se o Wine é uma camada de tradução das bibliotecas de <em>runtime</em> do Windows, o PlayOnLinux é um <em>front-end</em> que, por intermédio de <em>scripts</em>, automatiza a instalação de vários aplicativos comuns (algumas versões do Microsoft Office e do Photoshop, por exemplo), embora seu foco seja a instalação de jogos. Por seu turno, o Winetricks é um <em>script</em> que localiza, baixa e instala muitas das dependências mais recorrentes de programas Windows, como as fontes <em>TrueType</em> da Microsoft, os <a href="http://en.wikipedia.org/wiki/Microsoft_Data_Access_Components">MDAC</a>, os <em>runtimes</em> do Visual Basic e do Visual C++, etc.</p>
<div id="attachment_629" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/pspad.png"><img class="size-full wp-image-629" title="PSPad editor rodando via Wine" src="http://goncin.files.wordpress.com/2010/12/pspad.png?w=630&#038;h=421" alt="PSPad editor rodando via Wine" width="630" height="421" /></a><p class="wp-caption-text">PSPad editor rodando via Wine</p></div>
<p>Dessa forma, consigo trabalhar, no Ubuntu, com alguns bons programas feitos para a plataforma do Tio Bill, tais como o <a href="http://pspad.com">PSPad</a>, o <a href="http://www.sqlmanager.net/products/studio/mysql">EMS SQL Manager 2010 for MySQL</a> e o <a href="http://www.sqlmanager.net/products/mssql/manager">EMS SQL Manager 2008 for SQL Server</a>.</p>
<h1>4) <a href="http://getfirefox.com">Firefox</a> com <a href="https://addons.mozilla.org/pt-br/firefox/addon/60/">WebDeveloper Toolbar</a> e outras extensões</h1>
<p>Como desenvolvedor <em>web</em>, tenho um bom número de navegadores instalados (o In<strong>f</strong>ernet Explorer roda na VM, veja mais abaixo). Meu navegador principal continua sendo o Firefox, porque muitas de suas extensões ainda não encontram paralelos para o Google Chrome &#8211; apesar de todos os predicados deste. Dentre as extensões que mais utilizo, estão a WebDeveloper Toolbar e a <a href="https://addons.mozilla.org/pt-br/firefox/addon/201/">DownThemAll!</a>. Um recurso nativo particularmente interessante do navegador, para mim, é o Console de Erros Javascript &#8211; pego muitos erros por ele, sem sequer precisar acionar o <a href="https://addons.mozilla.org/pt-br/firefox/addon/1843/">Firebug</a>.</p>
<div id="attachment_630" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/firefox-webdeveloper-toolbar.png"><img class="size-full wp-image-630" title="Firefox com WebDeveloper Toolbar em ação" src="http://goncin.files.wordpress.com/2010/12/firefox-webdeveloper-toolbar.png?w=630&#038;h=484" alt="Firefox com WebDeveloper Toolbar em ação" width="630" height="484" /></a><p class="wp-caption-text">Firefox com WebDeveloper Toolbar em ação</p></div>
<h1>5) <a class="zem_slink" title="VMware Player" rel="homepage" href="http://www.vmware.com/products/player/">VMWare Player</a></h1>
<p>OK, esse não é <em>open source</em>, é só <em>freeware</em>. Trabalho uma Instituição de Ensino Superior com foco em Ciências Sociais Aplicadas, ou, traduzindo, o povo daqui adora uma planilha. E, para manter a compatibilidade, eu, o único linuxista dessas bandas, não posso viver só de <a href="http://openoffice.org">OpenOffice.org</a>. Necessito utilizar o Microsoft Office, versão 2010, adquirida pela Instituição e que (ainda) não consegui instalar via Wine. Há outras <em>cositas</em> também que me forçam a ter um ambiente Windows à disposição, como Photoshop, Delphi (para alguns sistemas legados) e Crystal Reports.</p>
<p>Durante muito tempo, deixei o <a href="http://virtualbox.org">VirtualBox</a> , da <del>Sun</del> Oracle, encarregado das minhas máquinas virtuais. Sem embargo, dois fatores fizeram com que eu passasse a utilizar o VMWare Player: (1) este divide o disco virtual em vários arquivos, facilitando o processo de <em>backup</em> e (2) com ele, os efeitos visuais funcionam, ao contrário do que ocorria com o VirtualBox. Pode parecer frescura, mas, para mim, os efeitos visuais são fundamentais, principalmente quanto a testá-los em outras distros Linux e versões futuras do Ubuntu, coisa que faço com frequência. Além do mais, suspender e recuperar uma VM mostrou-se sensivelmente mais rápido no VMWare Player, relativamente ao VirtualBox.</p>
<div id="attachment_631" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/vmware-player.png"><img class="size-full wp-image-631" title="VMWare Player rodando Windows 7" src="http://goncin.files.wordpress.com/2010/12/vmware-player.png?w=630&#038;h=406" alt="VMWare Player rodando Windows 7" width="630" height="406" /></a><p class="wp-caption-text">VMWare Player rodando Windows 7</p></div>
<h1>6) <del><a href="http://sourceforge.net/projects/gnome-rdp/">Gnome-RDP</a></del> <a href="http://remmina.sourceforge.net/">Remmina</a></h1>
<blockquote><p><strong>UPDATE</strong>: seguindo o <a href="http://goncin.wordpress.com/2010/12/27/meu-ambiente-de-trabalho-em-7-itens/#comment-311">conselho do visitante BlueHood, expresso em seu comentário mais abaixo</a>, acabei por trocar o Gnome-RDP pelo Remmina, até então desconhecido para mim. Vale a pena conhecê-lo! =D</p></blockquote>
<p>Há muitos servidores rodando Windows Server aqui. E a rede toda é baseada no Active Directory. Felizmente, o Ubuntu conta com ferramentas para acesso remoto a máquinas Windows utilizando o protocolo RDP (mais conhecido por &#8220;Terminal Services&#8221;). O <del>Gnome-RDP</del> Remmina é simples, objetivo, e cumpre muito bem o seu papel, e ademais suporta também os protocolos VNC, SFTP e SSH. Para quem utiliza <a href="http://kde.org">KDE</a>, o utilitário equivalente é o <a href="http://www.kde.org/applications/internet/krdc/">KRDC</a>.</p>
<div id="attachment_646" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/remmina.png"><img class="size-full wp-image-646 " title="O Remmina acessando um servidor Windows via Terminal Services" src="http://goncin.files.wordpress.com/2010/12/remmina.png?w=630&#038;h=499" alt="O Remmina acessando um servidor Windows via Terminal Services" width="630" height="499" /></a><p class="wp-caption-text">O Remmina acessando um servidor Windows via Terminal Services</p></div>
<h1>7) <a class="zem_slink" title="GIMP" rel="homepage" href="http://www.gimp.org/">The Gimp</a></h1>
<p>OK, OK, passo longe de ser um <em>designer</em>. Mas nem por isso estou livre de usar <em>softwares</em> de edição gráfica. Tenho o Photoshop instalado na VM, e <code>&lt;vergonha-propria mode="on"&gt;</code> desse programa sei utilizar menos de 1% do seu potencial <code>&lt;/vergonha-propria&gt;</code>.</p>
<p>Quando a tarefa com imagens não é complexa o bastante para justificar a subida da VM à memória, faço uso do Gimp, sempre em <em>Single-Window mode</em>. Com ele, consigo fazer as coisas mais triviais, como redimensionamento e conversão de formatos, recortes e <em>strokes</em>. Enfim, no quesito &#8220;<em>software</em> gráfico&#8221; sou um mero principiante, em início de aprendizado, esperando absorver novas habilidades à medida que as necessidades surjam.</p>
<div id="attachment_633" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/the-gimp.png"><img class="size-full wp-image-633" title="The Gimp e o meu papel de parede atual" src="http://goncin.files.wordpress.com/2010/12/the-gimp.png?w=630&#038;h=423" alt="The Gimp e o meu papel de parede atual" width="630" height="423" /></a><p class="wp-caption-text">The Gimp e o meu papel de parede atual</p></div>
<h2><em>Bonus track</em>: Terminal + <a href="http://guake.org/">Guake</a></h2>
<p>Nenhum desenvolvedor que se preze deve temer a linha de comando. Algumas tarefas (como, por exemplo, atualizar o Ubuntu) são muito mais simples via terminal. E o Guake, uma quase-unanimidade, torna a praticidade do terminal ainda mais prática, se é que me entendem. Após instalado e carregado, basta um F12 para que uma janela de terminal se descortine com elegância à frente de seus olhos.</p>
<div id="attachment_635" class="wp-caption aligncenter" style="width: 640px"><a href="http://goncin.files.wordpress.com/2010/12/guake.png"><img class="size-full wp-image-635" title="O Guake trabalhando" src="http://goncin.files.wordpress.com/2010/12/guake.png?w=630&#038;h=393" alt="O Guake trabalhando" width="630" height="393" /></a><p class="wp-caption-text">O Guake trabalhando</p></div>
<h2>Passando a bola adiante</h2>
<p>Para manter o espírito do meme, passo a bola para o <strong><a href="http://franciscoprado.com.br/2010/12/27/meu-ambiente-de-trabalho-em-7-itens/">Francisco Prado</a></strong> (<a href="http://twitter.com/fr_prado">@fr_prado</a>), o <strong>Henrique Lobo Weissmann</strong> (<a href="http://twitter.com/loboweissmann">@loboweissmann</a>), o <strong><a href="http://brunobemfica.net/?p=504">Bruno Bemfica</a></strong> (<a href="http://twitter.com/CodeAddicted">@CodeAddicted</a>) e o <strong>Fábio Vedovelli</strong> (<a href="http://twitter.com/vedovelli">@vedovelli</a>). Compartilhem sua forma de trabalho, pessoal! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/firefox/'>firefox</a>, <a href='http://goncin.wordpress.com/tag/gimp/'>gimp</a>, <a href='http://goncin.wordpress.com/tag/gnome-rdp/'>gnome-rdp</a>, <a href='http://goncin.wordpress.com/tag/guake/'>guake</a>, <a href='http://goncin.wordpress.com/tag/meu-ambiente-de-trabalho-em-7-itens/'>meu ambiente de trabalho em 7 itens</a>, <a href='http://goncin.wordpress.com/tag/netbeans/'>netbeans</a>, <a href='http://goncin.wordpress.com/tag/playonlinux/'>playonlinux</a>, <a href='http://goncin.wordpress.com/tag/remmina/'>remmina</a>, <a href='http://goncin.wordpress.com/tag/ubuntu/'>ubuntu</a>, <a href='http://goncin.wordpress.com/tag/vmware-player/'>vmware player</a>, <a href='http://goncin.wordpress.com/tag/wine/'>wine</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/615/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/615/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/615/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=615&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2010/12/27/meu-ambiente-de-trabalho-em-7-itens/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/ambiente-trabalho.png" medium="image">
			<media:title type="html">Meu ambiente de trabalho. Não reparem a bagunça :P</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/netbeans.png" medium="image">
			<media:title type="html">Netbeans IDE 7.0 Beta</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/pspad.png" medium="image">
			<media:title type="html">PSPad editor rodando via Wine</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/firefox-webdeveloper-toolbar.png" medium="image">
			<media:title type="html">Firefox com WebDeveloper Toolbar em ação</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/vmware-player.png" medium="image">
			<media:title type="html">VMWare Player rodando Windows 7</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/remmina.png" medium="image">
			<media:title type="html">O Remmina acessando um servidor Windows via Terminal Services</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/the-gimp.png" medium="image">
			<media:title type="html">The Gimp e o meu papel de parede atual</media:title>
		</media:content>

		<media:content url="http://goncin.files.wordpress.com/2010/12/guake.png" medium="image">
			<media:title type="html">O Guake trabalhando</media:title>
		</media:content>
	</item>
		<item>
		<title>Aprendendo a pensar com expressões regulares</title>
		<link>http://goncin.wordpress.com/2010/12/20/aprendendo-a-pensar-com-expressoes-regulares/</link>
		<comments>http://goncin.wordpress.com/2010/12/20/aprendendo-a-pensar-com-expressoes-regulares/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 11:40:41 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[expressões regulares]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=605</guid>
		<description><![CDATA[Vivendo e aprendendo. Parece não haver máxima mais certeira quando se trata da vida de um #SouDev . No meu último post, no qual tratei sobre normalização de nomes próprios, eu havia utilizado uma expressão regular para testar se determinada parte de um nome corresponde a um numeral romano. Antes de encontrar a expressão regular [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=605&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vivendo e aprendendo. Parece não haver máxima mais certeira quando se trata da vida de um <a href="http://twitter.com/#search?q=%23SouDev">#SouDev</a> <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .</p>
<p>No <a href="http://goncin.wordpress.com/2010/12/16/normalizando-nomes-proprios-com-php/">meu último <em>post</em></a>, no qual tratei sobre normalização de nomes próprios, eu havia utilizado uma expressão regular para testar se determinada parte de um nome corresponde a um numeral romano. Antes de encontrar a expressão regular para fazer o teste, eu já estava quebrando a cabeça para escrever uma rotina para fazer a mesmíssima tarefa. Eis o que eu pensava em fazer:</p>
<ul>
<li>Testar se a <em>substring</em> continha apenas caracteres válidos para números romanos &#8211; no caso, &#8216;I&#8217;, &#8216;V&#8217;, &#8216;X&#8217;, &#8216;C&#8217;, &#8216;D&#8217; e &#8216;M&#8217;. Essa era a <strong>parte fácil</strong>.</li>
<li>Determinar se os ditos caracteres estavam na ordem e na quantidade corretas para representar um número romano válido &#8211; e <strong>era aí que a porca torcia o rabo</strong>.</li>
</ul>
<p>Pelo meu método de raciocínio costumeiro, essa rotina teria alguns <em>loops</em> e outros tantos <em>ifs</em>, e, com certeza, não teria menos que dez linhas de código PHP. Ao pesquisar sobre a estrutura dos números romanos, deparei-me com a expressão regular que você pode observar na linha 18 da listagem daquele <em>post</em> (e que foi utilizada na linha 100). Com ela, resolvi meu problema em uma única linha.</p>
<p>Se eu havia sido esperto nessa parte do código, cometi uma <a href="http://desciclo.pedia.ws/wiki/Sobrinho_%28Profissional%29">sobrinhagem</a> na parte em que eu precisava substituir todas os espaços duplos por espaços simples. Desde sempre, utilizei um laço para substituir todas as ocorrências de dois espaços por um único espaço, até que não houvesse mais nenhum daqueles. Desta forma:</p>
<p><pre class="brush: php;">
&lt;?php
while(mb_strpos($nome, self::NN_ESPACO_DUPLO) != false)
      $nome = mb_ereg_replace(self::NN_ESPACO_DUPLO, self::NN_ESPACO, $nome);
</pre></p>
<p>Isso funciona assim: se houver quatro espaços contíguos, na primeira passagem esses quatro tornar-se-ão dois. Somente na segunda passagem é que esses dois espaços serão reduzidos a apenas um, que é o resultado desejado. Quanto mais espaços contíguos, mais repetições serão necessárias.</p>
<p>E tudo isso se resolve, de forma muito mais elegante e eficiente, também com uma expressão regular, e em uma única instrução. E o melhor: independentemente da quantidade de espaços contíguos.</p>
<p><pre class="brush: php;">
&lt;?php
$nome = mb_ereg_replace('\s+', ' ', $nome);
</pre></p>
<p>A mágica reside na expressão regular <code>\s+</code>. O que ela significa? <code>\s</code> encontra espaços em branco, e o modificador <code>+</code> indica <em>uma ou mais ocorrências</em>. Era tudo o que eu precisava. <strong>E já corrigi o código do <em>post</em> anterior</strong>.</p>
<p>As expressões regulares, ao mesmo tempo que encantam com seu poder, também costumam assustar pela sua relativa complexidade. Antes de continuar, vale um definição do que são expressões regulares, provida pela <a href="http://pt.wikipedia.org/wiki/Express%C3%A3o_regular">Wikipédia</a>:</p>
<blockquote><p>Em ciência da computação, uma <strong>expressão regular</strong> (ou o estrangeirismo <em>regex</em>, abreviação do inglês <em>regular expression</em>) provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres. Expressões regulares são escritas numa linguagem formal que pode ser interpretada por um processador de expressão regular, um programa que ou serve um gerador de analisador sintático ou examina o texto e identifica partes que casam com a especificação dada.</p></blockquote>
<p>Creio que isso esclarece (quase) tudo, mas vou colocar as coisas em termos mais práticos. A palavra <strong>regular</strong> provém do latim <em>regula, -ae</em>, que significa, ao mesmo tempo, <strong>regra</strong> e <strong>régua</strong>. Isso permite afirmar que as expressões regulares têm aplicação quando precisamos encontrar ou extrair ocorrências de caracteres de um texto, no qual ditos caracteres obedecem a determinados padrões (<strong>regra</strong>) e/ou se encontram em posições previsíveis (<strong>régua</strong>). E texto, nesse sentido, significa tanto um <a href="http://goncin.wordpress.com/2010/08/30/validando-numeros-de-telefone-com-expressoes-regulares/">campo de número de telefone</a> quanto uma cadeia com alguns milhares de caracteres.</p>
<p>Portanto, da próxima vez em que você precisar encontrar ou extrair determinadas <em>substrings</em> de um texto, e seu código começar a ficar mais complexo do que deveria, considere utilizar expressões regulares. <strong>Todas as linguagens importantes, hoje em dia, têm algum tipo de suporte a elas</strong>. É o tipo de conhecimento que vale o tempo em que se investe nele &#8211; uma hora gasta para aprendê-las pode poupar algumas de trabalho brabo <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  .</p>
<p><strong>Para aprender</strong>:</p>
<ul>
<li><a href="http://guia-er.sourceforge.net/">Expressões regulares &#8211; guia de consulta rápida</a></li>
<li><a href="http://aurelio.net/er/">Portal brasileiro de expressões regulares</a></li>
<li><a href="http://www.regular-expressions.info/">Regular-Expressions.info</a> (<em>em inglês</em>)</li>
<li><a href="http://regexpal.com/">regexpal</a> &#8211; um testador de expressões regulares <em>online </em>(<em>em inglês</em>)</li>
<li>LIVRO: <a href="http://oreilly.com/catalog/9780596528126?green=14433646872&amp;cmp=af-mybuy-9780596528126.IP">&#8220;Mastering Regular Expressions&#8221;</a>, da Editora O&#8217;Reilly (<em>em inglês</em>), sugestão do <a href="http://twitter.com/loboweissmann">@loboweissmann</a>. É possível comprar só o <em>ebook</em> <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/expressoes-regulares/'>expressões regulares</a>, <a href='http://goncin.wordpress.com/tag/programacao/'>programação</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/605/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/605/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/605/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=605&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2010/12/20/aprendendo-a-pensar-com-expressoes-regulares/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>
	</item>
		<item>
		<title>Normalizando nomes próprios com PHP</title>
		<link>http://goncin.wordpress.com/2010/12/16/normalizando-nomes-proprios-com-php/</link>
		<comments>http://goncin.wordpress.com/2010/12/16/normalizando-nomes-proprios-com-php/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 12:39:50 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[algoritmos]]></category>
		<category><![CDATA[normalização]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=589</guid>
		<description><![CDATA[Salve, pessoal! Para compensar minha relativa inatividade nos últimos tempos, volto hoje com um post mais denso, que acredito e espero que seja útil a toda a comunidade #SouDev. Vou tratar sobre normalização de nomes próprios. Norma&#8230; o quê? O problema Algo que sempre achei horroroso em bancos de dados é a falta de padrão [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=589&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Salve, pessoal! Para compensar minha relativa inatividade nos últimos tempos, volto hoje com um <em>post</em> mais denso, que acredito e espero que seja útil a toda a comunidade <a href="http://twitter.com/#search?q=%23SouDev">#SouDev</a>.</p>
<p>Vou tratar sobre normalização de nomes próprios. Norma&#8230; o quê? <img src='http://s1.wp.com/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> </p>
<h2>O problema</h2>
<p>Algo que sempre achei horroroso em bancos de dados é a falta de padrão na capitalização (uso de letras maiúsculas e minúsculas) em nomes próprios &#8211; sejam de pessoas, logradouros ou localidades. Sobrinhos, geralmente, gravam no BD esses dados como foram coletados ou digitados, e programadores preguiçosos, no mais das vezes, limitam-se a aplicar um <a href="http://www.php.net/manual/pt_BR/function.strtoupper.php"><code>strtoupper()</code></a> ou equivalente e entopem o cadastro com LETRAS MAIÚSCULAS. Na sinceridade, não sei qual das duas situações deixa o banco mais feio. O uso indiscriminado de letras maiúsculas, vale lembrar, cansa os olhos e dificulta a leitura após um certo tempo.</p>
<p>Já vi um caso em que a &#8220;saída&#8221; foi o uso de <a href="http://www.php.net/manual/pt_BR/function.ucfirst.php"><code>ucfirst()</code></a> puro e simples. Menos mau, mas tão indolente quanto.</p>
<p>Fazer uma normalização, transformando &#8220;JOSÉ DA SILVA PEREIRA E SOUZA&#8221; em &#8220;José da Silva Pereira e Souza&#8221; não é uma tarefa difícil, desde que o desenvolvedor esteja atento a alguns detalhes.</p>
<h2>A solução</h2>
<p>Criei uma classe com um método estático em PHP (para não fugir ao paradigma da orientação a objetos) para propor minha solução. Expliquei, tanto quanto pude, todas as etapas nos comentários do código. Trata-se, em última instância, da implementação de um algoritmo relativamente simples, que não deve oferecer dificuldades para ser portado para outras linguagens. Se você utiliza PHP, de agora em diante aplique <code>GUtils::normalizarNome($nome)</code> e tenha um cadastro mais bonitinho e legível! <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Se não, implemente a ideia em sua linguagem favorita. <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><pre class="brush: php;">
&lt;?php
/**
 * Classe contêiner para métodos estáticos de utilidades variadas
 *
 * @author goncin (goncin ARROBA gmail PONTO com)
 */
class GUtils {

  /**
   * Constantes definidas para melhor legibilidade do código. O prefixo NN_ indica que
   * seu uso está relacionado ao método público e estático normalizarNome().
   */
  const NN_PONTO = '\.';
  const NN_PONTO_ESPACO = '. ';
  const NN_ESPACO = ' ';
  const NN_REGEX_MULTIPLOS_ESPACOS = '\s+';
  const NN_REGEX_NUMERO_ROMANO =
    '^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$';

   /**
   * Normaliza o nome próprio dado, aplicando a capitalização correta de acordo
   * com as regras e exceções definidas no código.
   * POR UMA DECISÃO DE PROJETO, FORAM UTILIZADAS FUNÇÕES MULTIBYTE (MB_) SEMPRE
   * QUE POSSÍVEL, PARA GARANTIR SUA USABILIDADE EM STRINGS UNICODE.
   * @param string $nome O nome a ser normalizado
   * @return string O nome devidamente normalizado
   */
  public static function normalizarNome($nome) {

    /*
     * A primeira tarefa da normalização é lidar com partes do nome que
     * porventura estejam abreviadas,considerando-se para tanto a existência de
     * pontos finais (p. ex. JOÃO A. DA SILVA, onde &quot;A.&quot; é uma parte abreviada).
     * Dado que mais à frente dividiremos o nome em partes tomando em
     * consideração o caracter de espaço (&quot; &quot;), precisamos garantir que haja um
     * espaço após o ponto. Fazemos isso substituindo todas as ocorrências do
     * ponto por uma sequência de ponto e espaço.
     */
    $nome = mb_ereg_replace(self::NN_PONTO, self::NN_PONTO_ESPACO, $nome);

    /*
     * O procedimento anterior, ou mesmo a digitação errônea, podem ter
     * introduzido espaços múltiplos entre as partes do nome, o que é totalmente
     * indesejado. Para corrigir essa questão, utilizamos uma substituição
     * baseada em expressão regular, a qual trocará todas as ocorrências de
     * espaços múltiplos por espaços simples.
     */
    $nome = mb_ereg_replace(self::NN_REGEX_MULTIPLOS_ESPACOS, self::NN_ESPACO,
      $nome);

    /*
     * Isso feito, podemos fazer a capitalização &quot;bruta&quot;, deixando cada parte do
     * nome com a primeira letra maiúscula e as demais minúsculas. Assim,
     * JOÃO DA SILVA =&gt; João Da Silva.
     */
    $nome = mb_convert_case($nome, MB_CASE_TITLE, mb_detect_encoding($nome));

    /*
     * Nesse ponto, dividimos o nome em partes, para trabalhar com cada uma
     * delas separadamente.
     */
    $partesNome = mb_split(self::NN_ESPACO, $nome);

    /*
     * A seguir, são definidas as exceções à regra de capitalização. Como
     * sabemos, alguns conectivos e preposições da língua portuguesa e de outras
     * línguas jamais são utilizadas com a primeira letra maiúscula.
     * Essa lista de exceções baseia-se na minha experiência pessoal, e pode ser
     * adaptada, expandida ou mesmo reduzida conforme as necessidades de cada
     * caso.
     */
    $excecoes = array(
      'de', 'di', 'do', 'da', 'dos', 'das', 'dello', 'della',
      'dalla', 'dal', 'del', 'e', 'em', 'na', 'no', 'nas', 'nos', 'van', 'von',
      'y'
    );

    for($i = 0; $i &lt; count($partesNome); ++$i) {

      /*
       * Verificamos cada parte do nome contra a lista de exceções. Caso haja
       * correspondência, a parte do nome em questão é convertida para letras
       * minúsculas.
       */
      foreach($excecoes as $excecao)
        if(mb_strtolower($partesNome[$i]) == mb_strtolower($excecao))
          $partesNome[$i] = $excecao;

      /*
       * Uma situação rara em nomes de pessoas, mas bastante comum em nomes de
       * logradouros, é a presença de numerais romanos, os quais, como é sabido,
       * são utilizados em letras MAIÚSCULAS.
       * No site
       * http://htmlcoderhelper.com/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression/,
       * encontrei uma expressão regular para a identificação dos ditos
       * numerais. Com isso, basta testar se há uma correspondência e, em caso
       * positivo, passar a parte do nome para MAIÚSCULAS. Assim, o que antes
       * era &quot;Av. Papa João Xxiii&quot; passa para &quot;Av. Papa João XXIII&quot;.
       */
      if(mb_ereg_match(self::NN_REGEX_NUMERO_ROMANO,
        mb_strtoupper($partesNome[$i])))
        $partesNome[$i] = mb_strtoupper($partesNome[$i]);
    }

    /*
     * Finalmente, basta juntar novamente todas as partes do nome, colocando um
     * espaço entre elas.
     */
    return implode(self::NN_ESPACO, $partesNome);

  }

}
</pre></p>
<div id="_mcePaste" class="mcePaste" style="position:absolute;left:-10000px;top:357px;width:1px;height:1px;overflow:hidden;">const NN_PONTO = &#8216;\.&#8217;;<br />
const NN_PONTO_ESPACO = &#8216;. &#8216;;<br />
const NN_ESPACO = &#8216; &#8216;;<br />
const NN_REGEX_MULTIPLOS_ESPACOS = &#8216;\s+&#8217;;<br />
const NN_REGEX_NUMERO_ROMANO =<br />
&#8216;^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$&#8217;;</div>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/algoritmos/'>algoritmos</a>, <a href='http://goncin.wordpress.com/tag/normalizacao/'>normalização</a>, <a href='http://goncin.wordpress.com/tag/php/'>php</a>, <a href='http://goncin.wordpress.com/tag/programacao/'>programação</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/589/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/589/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/589/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=589&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2010/12/16/normalizando-nomes-proprios-com-php/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>
	</item>
		<item>
		<title>Aproveitando &#8220;layouts&#8221; implementados em ASP em aplicações PHP</title>
		<link>http://goncin.wordpress.com/2010/11/05/aproveitando-layouts-implementados-em-asp-em-aplicacoes-php/</link>
		<comments>http://goncin.wordpress.com/2010/11/05/aproveitando-layouts-implementados-em-asp-em-aplicacoes-php/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 12:35:11 +0000</pubDate>
		<dc:creator>goncin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[asp clássico]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://goncin.wordpress.com/?p=570</guid>
		<description><![CDATA[Hoje, quase sem querer, descobri uma solução inusitada que me poupou muito tempo e esforço. Senta que lá vem história&#8230; O caso Estava eu trabalhando num hotsite para um congresso internacional. Uma outra pessoa fez todo o layout e as páginas informativas, tendo ficado por minha conta desenvolver o processo de inscrição dos participantes. O [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=570&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hoje, quase sem querer, descobri uma solução inusitada que me poupou muito tempo e esforço. Senta que lá vem história&#8230;</p>
<h2>O caso</h2>
<p>Estava eu trabalhando num <em>hotsite</em> para um congresso internacional. Uma outra pessoa fez todo o <em>layout</em> e as páginas informativas, tendo ficado por minha conta desenvolver o processo de inscrição dos participantes.</p>
<h2>O problema</h2>
<p>O <em>layout</em> e as páginas informativas foram feitas em ASP (clássico), e eu vou desenvolver o procedimento de inscrição em PHP. As páginas da inscrição devem seguir o <em>look and feel</em> das demais páginas, aproveitando cabeçalho, rodapé e menus.</p>
<h2>A solução</h2>
<p>No código-fonte ASP, havia três <em>includes</em>:</p>
<p><pre class="brush: xml;">
&lt;!--#include file=&quot;cabecalho.asp&quot;--&gt;
(...)
&lt;!--#include file=&quot;menu.asp&quot;--&gt;
(...)
&lt;!--#include file=&quot;rodape.asp&quot;--&gt;
</pre></p>
<p>Para não ter de refazer em PHP esses três arquivos, que, aliás, estavam alocados em outro servidor, achei por bem pegar o conteúdo deles, já devidamente processados, e injetá-los no <em>layout</em> para ser usado com PHP. Assim, esses três <em>includes</em> transformaram-se em:</p>
<p><pre class="brush: php;">
&lt;?php echo file_get_contents('http://servidor/caminho/cabecalho.asp'); ?&gt;
(...)
&lt;?php echo file_get_contents('http://servidor/caminho/menu.asp'); ?&gt;
(...)
&lt;?php echo file_get_contents('http://servidor/caminho/rodape.asp'); ?&gt;
</pre></p>
<p>Funcionou, foi uma boa sacada, mas isso resolvia apenas<strong> parte</strong> do problema. Como os arquivos incluídos estavam em outro servidor em relação ao meu <em>script</em> PHP, os <em>hiperlinks</em> e os caminhos para as imagens ficaram quebrados. Foi necessário incluir o caminho para o servidor nas <em>tags</em> <code>a</code> e <code>image</code>. Nada que um <code>str_replace</code> não dê jeito.</p>
<p><pre class="brush: php;">
&lt;?php
  $include = file_get_contents('http://servidor/caminho/cabecalho.asp');
  $include = str_replace(array('src=&quot;', 'href=&quot;'),
    array('src=&quot;http://servidor/caminho/', 'href=&quot;http://servidor/caminho/') , $include);
  echo $include;
?&gt;
(...)
&lt;?php
  $include = file_get_contents('http://servidor/caminho/menu.asp');
  $include = str_replace(array('src=&quot;', 'href=&quot;'),
    array('src=&quot;http://servidor/caminho/', 'href=&quot;http://servidor/caminho/') , $include);
  echo $include;
?&gt;
(...)
&lt;?php
  $include = file_get_contents('http://servidor/caminho/rodape.asp');
  $include = str_replace(array('src=&quot;', 'href=&quot;'),
    array('src=&quot;http://servidor/caminho/', 'href=&quot;http://servidor/caminho/') , $include);
  echo $include;
?&gt;
</pre></p>
<p>E <em>voilà</em>! Tudo funcionando, sem precisar reimplementar do zero o <em>layout</em> em PHP. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Agora posso me concentrar apenas em gerar o conteúdo.</p>
<br /> Tagged: <a href='http://goncin.wordpress.com/tag/asp-classico/'>asp clássico</a>, <a href='http://goncin.wordpress.com/tag/layout/'>layout</a>, <a href='http://goncin.wordpress.com/tag/php/'>php</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/goncin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/goncin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/goncin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/goncin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/goncin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/goncin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/goncin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/goncin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/goncin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/goncin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/goncin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/goncin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/goncin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/goncin.wordpress.com/570/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=goncin.wordpress.com&amp;blog=12659057&amp;post=570&amp;subd=goncin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://goncin.wordpress.com/2010/11/05/aproveitando-layouts-implementados-em-asp-em-aplicacoes-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7b835369b5111c104a98125639a5d945?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">goncin</media:title>
		</media:content>
	</item>
	</channel>
</rss>
