<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boaglio.com &#187; Java</title>
	<atom:link href="http://www.boaglio.com/index.php/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.boaglio.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 Nov 2011 00:48:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>A corrida Oracle:procedure,Java stored proc,JDBC Thin e OCI,quem ganha?</title>
		<link>http://www.boaglio.com/index.php/2011/11/14/a-corrida-oracleprocedurejava-stored-procjdbc-thin-e-ociquem-ganha/</link>
		<comments>http://www.boaglio.com/index.php/2011/11/14/a-corrida-oracleprocedurejava-stored-procjdbc-thin-e-ociquem-ganha/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 00:47:13 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=700</guid>
		<description><![CDATA[Nesse artigo vou fazer um comparativo das opções de implementação com Oracle e Java, usando uma rotina que vai ler umas tabelas para buscar o CEP e depois fazer a carga em outra. As opções que temos: - Antes de existir Java: a velha e boa stored procedure em PL/SQL &#8230; é um código pré-compilado [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse artigo vou fazer um comparativo das opções de implementação com Oracle e Java, usando uma rotina que vai ler umas tabelas para buscar o <a href="http://www.boaglio.com/go.php?http://www.coisasuteis.com.br/2009/06/banco-de-cep-em-formatos-mysql-e-access/" title="(54 hits)">CEP</a> e depois fazer a carga em outra.</p>
<p><img src="http://www.boaglio.com/wp-content/uploads/2011/11/GreyhoundRace.jpg" alt="" title="corrida" width="609" height="340" class="aligncenter size-full wp-image-705" /><br />
<script type="text/javascript">google_ad_client = "pub-3816383189082763";google_ad_slot = "0931072200";google_ad_width = 468;google_ad_height = 60;</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> </p>
<p>As opções que temos:</p>
<p>- Antes de existir Java: a velha e boa stored procedure em PL/SQL &#8230; é um código pré-compilado em p-code que fica armazenado dentro do banco de dados&#8230; acesso local e nativo aos dados.</p>
<p>- Java client com <a href="http://www.boaglio.com/go.php?http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html" title="(60 hits)">driver JDBC Thin</a> &#8211; acesso remoto aos dados.</p>
<p>- Java client com <a href="http://www.boaglio.com/go.php?http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html" title="(60 hits)">driver OCI Thin</a> &#8211; acesso remoto e nativo aos dados.</p>
<p>- Java em stored procedure &#8211; desde o Oracle 8i temos uma engine em Java dentro do banco, o que nos possibilita executar rotinas em Java dentro do banco, com acesso local e nativo aos dados.</p>
<p>É impressionante a quantidade de profissionais Java que trabalha há anos com Oracle não conhece metade das opções existentes. </p>
<p>A implementação mais usada é a <strong>JDBC Thin</strong>, pois é a mais fácil de configurar, mas de acordo com a Oracle é a mais lenta de todas.</p>
<p>O <strong>Oracle OCI</strong> (<a href="http://www.boaglio.com/go.php?http://www.orafaq.com/wiki/Oracle_Call_Interfaces" title="(26 hits)">Oracle Call Interface</a>) é a maneira nativa que os clients utilizam para se conectar ao banco de dados, essa maneira nativa pode ser feita em várias linguagens (C, Cobol , <a href="http://www.boaglio.com/go.php?http://www.orafaq.com/wiki/JDBC#OCI_driver" title="(32 hits)">Java</a>) utilizando as bibliotecas do Oracle Client para acessar o banco de dados. Isso significa que para usar OCI, a instalação do Oracle client é obrigatória.</p>
<p>Ferramentas como Oracle SQL*Plus, <a href="http://www.boaglio.com/go.php?http://www.allroundautomations.com/plsqldev.html" target="_blank" title="(28 hits)">PL/SQL Developer</a> são rápidas porque usam OCI para acessar o banco de dados.</p>
<p>A configuração adequada do OCI pode ser complicada a primeira vez, e somente nesse fórum russo eu encontrei <a href="http://www.boaglio.com/go.php?http://www.sql.ru/forum/actualthread.aspx?tid=849644" title="(214 hits)">um simples resumo que explica como configurar o seu ambiente para usar OCI</a> (depois de instalado o Oracle Client):</p>
<p>Em plataforma Windows:</p>
<p><em><br />
- Adicione  [ORACLE_HOME] \ jdbc \ lib \ ojdbc5.jar ao CLASSPATH para JDK 1.5 ou<br />
            [ORACLE_HOME] \ jdbc \ lib \ ojdbc6.jar para JDK 1.6.<br />
- Adicione  [ORACLE_HOME] \ jlib \ orai18n.jar ao CLASSPATH.<br />
- Adicione  [ORACLE_HOME] \ bin ao PATH (que fica nas variáveis de ambiente, nas configurações avançadas do Sistema)<br />
</em></p>
<p>Em plataforma Unix:</p>
<p><em>- Adicione  [ORACLE_HOME] / jdbc / lib / ojdbc5.jar ao CLASSPATH para JDK 1.5 ou<br />
            [ORACLE_HOME] / jdbc / lib / ojdbc6.jar para JDK 1.6.<br />
- Adicione  [ORACLE_HOME] / jlib / orai18n.jar ao CLASSPATH.<br />
- Adicione  [ORACLE_HOME] / jdbc / lib ao LD_LIBRARY_PATH<br />
</em></p>
<p>Para trabalhar com <strong>Oracle Stored Procedures</strong>, você precisa primeiro ter uma ferramenta como <a href="http://www.boaglio.com/go.php?http://www.eclipse.org" target="_blank" title="(1246 hits)">Eclipse</a> para desenvolver suas rotinas, e depois gerar suas classes com compatibilidade para JDK 1.5 (se for Oracle 11i) e JDK 1.4 (se for Oracle 10g). </p>
<p>Além disso, a opção de Java deve estar ativa no banco de dados, verifique com o SQL:</p>
<pre class="brush: sql; title: ; notranslate">
SQL&gt; select value from V$option where parameter='Java';

VALUE
-------------------------------------------------------
TRUE
</pre>
<p>Essa opção Java não está disponível no Oracle Express Edition, é preciso instalar uma versão Personal Oracle, Standard ou Enterprise Edition. </p>
<p>Para <a href="http://www.boaglio.com/go.php?http://download.oracle.com/docs/cd/B12037_01/java.101/b12021/storproc.htm" target="_blank" title="(45 hits)">carregar as classes em Java no banco</a> é utilizado o loadjava, como por exemplo para carregar a nossa classe para o teste da corrida:</p>
<pre class="brush: sql; title: ; notranslate">
C:\workspace\corridaOracle\bin\&gt;loadjava -user=boaglio1/boaglio1@boaglio1 -verbose TesteDeInternalProcedure.class

arguments: '-user' 'boaglio1/***@boaglio1' '-verbose' 'TesteDeInternalProcedure.
class'
creating : class com/boaglio/corridaOracle/TesteDeInternalProcedure
loading  : class com/boaglio/corridaOracle/TesteDeInternalProcedure
Classes Loaded: 1
Resources Loaded: 0
Sources Loaded: 0
Published Interfaces: 0
Classes generated: 0
Classes skipped: 0
Synonyms Created: 0
Errors: 0
</pre>
<p>E depois amarramos essa classe com uma procedure, dessa maneira:</p>
<pre class="brush: sql; title: ; notranslate">
create or replace procedure teste_java
 as
 language java
 name 'com/boaglio/corridaOracle/TesteDeInternalProcedure.main(java.lang.String[])';
</pre>
<p>Bom, vamos falar agora do processo de carga&#8230; temos o primeiro exemplo que é executado inteiramente em PL/SQL:</p>
<pre class="brush: sql; title: ; notranslate">
 create or replace procedure teste_proc
is
 cursor todos_ceps is select * from cep;
 id_corrida integer;
begin

select corrida.nextval into id_corrida from dual;

for linha in todos_ceps loop
 if loweR(linha.cidade) like '%paulo%' then
  INSERT INTO TESTE_PROCEDURE (ID,UF,CIDADE,BAIRRO,ENDERECO_CEP,LOGRADOURO,ID_CORRIDA)
  VALUES (seq1.nextval,linha.uf,linha.cidade,linha.bairro,linha.endereco_cep,linha.logradouro,id_corrida);
 end if;
end loop;

end teste_proc;
</pre>
<p>Depois temos o outro exemplo que será chamado por todas as outras classes Java: </p>
<pre class="brush: java; title: ; notranslate">
package com.boaglio.corridaOracle;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CargaDeDadosDoCEP {

	static final String todos_ceps = &quot;select * from cep&quot;;

	static final int DRIVER_JDBC_THIN=1;
	static final int DRIVER_JDBC_OCI=2;
	public  static final int INTERNAL_JAVA_PROC=3;

	public static void runLoad(Connection conexao,int tipoDeDriver) {

		Statement stmt = null;
		ResultSet rset = null;
		try {
			int idCorrida = buscaIdCorrida(conexao);
			stmt = conexao.createStatement();
			rset = stmt.executeQuery(todos_ceps);
			while (rset.next())
				validaDados(rset,conexao,tipoDeDriver,idCorrida);
		} catch (Exception ignore) {
		} finally {
			try {
				rset.close();
				stmt.close();
				if (tipoDeDriver!=CargaDeDadosDoCEP.INTERNAL_JAVA_PROC)
				   conexao.close();
			} catch (Exception ignore) {
			}
		}
	}

	private static int buscaIdCorrida(Connection conexao) {

		Statement stmt = null;
		ResultSet rset = null;
		int idCorrida =0;
		try {
			stmt = conexao.createStatement();
			rset = stmt.executeQuery(&quot;select corrida.nextval from dual&quot;);
			while (rset.next())
				idCorrida = rset.getInt(1);
		} catch (Exception ignore) {
		} finally {
			try {
				rset.close();
				stmt.close();
			} catch (Exception ignore) {
			}
		}
		return idCorrida;
	}

	private static void validaDados(ResultSet rset,Connection conexao,int tipoDeDriver,int idCorrida) throws SQLException {

		String cidade = rset.getString(&quot;cidade&quot;);
		String busca = &quot;paulo&quot;;

		String SQL_CARGA=&quot;&quot;;
		if (tipoDeDriver==DRIVER_JDBC_THIN) {
			SQL_CARGA=&quot;INSERT INTO TESTE_DRIVER_THIN             (ID,UF,CIDADE,BAIRRO,ENDERECO_CEP,LOGRADOURO,ID_CORRIDA) &quot;+
            &quot;VALUES (seq2.nextval,?,?,?,?,?,?)&quot;;
		} else if (tipoDeDriver==DRIVER_JDBC_OCI) {
			SQL_CARGA=&quot;INSERT INTO TESTE_DRIVER_OCI (ID,UF,CIDADE,BAIRRO,ENDERECO_CEP,LOGRADOURO,ID_CORRIDA) &quot;+
			&quot;VALUES (seq3.nextval,?,?,?,?,?,?)&quot;;
		} else	if (tipoDeDriver==INTERNAL_JAVA_PROC) {
			SQL_CARGA=&quot;INSERT INTO TESTE_JAVA_PROC (ID,UF,CIDADE,BAIRRO,ENDERECO_CEP,LOGRADOURO,ID_CORRIDA) &quot;+
	        &quot;VALUES (seq4.nextval,?,?,?,?,?,?)&quot;;
		}
		if (cidade==null) return;
		if (cidade.toLowerCase().indexOf(busca)&gt;=0) {
			PreparedStatement pstmt = null;
			try {
			        pstmt = conexao.prepareStatement(SQL_CARGA);
				pstmt.setString(1,rset.getString(&quot;uf&quot;));
				pstmt.setString(2,cidade);
				pstmt.setString(3,rset.getString(&quot;bairro&quot;));
				pstmt.setString(4,rset.getString(&quot;endereco_cep&quot;));
				pstmt.setString(5,rset.getString(&quot;logradouro&quot;));
				   pstmt.setInt(6,idCorrida);
				pstmt.executeUpdate();

			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
				pstmt.close();
				} catch (Exception ignore) {
				}
			}
		}
	}
}
</pre>
<p>Em ambos os casos temos o mesmo processo: buscar em uma View de todos os endereços do Brasil os que contém &#8220;paulo&#8221; no nome da cidade e armazenar em uma tabela separada. </p>
<p>Temos 57789 de 699307 registros (8,25%) em cada execução da rotina.</p>
<p>O cálculo foi feito da diferença do primeiro e o último insert (o tempo de 57789 inserções na base).</p>
<p>O teste foi feito sem envolver rede, no próprio servidor para tirar essa dúvida da nossa corrida.  </p>
<p>Em todos os quatro casos as rotinas foram executadas dez vezes, com a seguinte performance:</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/11/now-what-wecansolveit-gorejpg.jpeg" title="(275 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/11/now-what-wecansolveit-gorejpg.jpeg" alt="" title="now-what-wecansolveit-gorejpg" width="289" height="229" class="aligncenter size-full wp-image-711" /></a></p>
<ol>
<li>Em primeiro lugar não é nenhuma surpresa que foi o PL/SQL, com tempo mínimo de 10 segundos, máximo de 12 e médio de 11.3</li>
<li>Em segundo lugar, pertinho vieram as stored procedures em Java, com tempo mínimo de 23 segundos, máximo de 25 e médio de 23,9</li>
<li>Em terceiro lugar, bem atrás vieram os drivers JDBC Thin, com tempo mínimo de 59 segundos, máximo de 79 e médio de 67</li>
<li>Em último lugar vieram os drivers JDBC OCI, com tempo mínimo de 64 segundos, máximo de 95 e médio de 71,9</li>
</ol>
<p>Vamos fazer algumas comparações com os tempos médios&#8230; <strong>a mesma rotina em PL/SQL roda 2 vezes mais rápido que uma stored procedure Java e 6 vezes mais rápido uma rotina de OCI, isso mesmo 6 vezes</strong>!</p>
<p>O interessante é que a Oracle recomenda usar o driver Thin para maior portabilidade e o driver OCI para melhor performance, mas nessa minha corrida e <a href="http://www.boaglio.com/go.php?http://oreilly.com/catalog/jorajdbc/chapter/ch19.html" target="_blank" title="(28 hits)">em outras literaturas dizem exatamente o oposto</a>.</p>
<p>Quer testar você mesmo? Acesse o <a href="http://www.boaglio.com/go.php?https://github.com/boaglio/corridaOracle/downloads" target="_blank" title="(27 hits)">fonte do projeto</a> e tire suas próprias conclusões!</p>
<p><map name='google_ad_map_700_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/700?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_700_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=700&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2011%2F11%2F14%2Fa-corrida-oracleprocedurejava-stored-procjdbc-thin-e-ociquem-ganha%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2011/11/14/a-corrida-oracleprocedurejava-stored-procjdbc-thin-e-ociquem-ganha/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2011/11/14/a-corrida-oracleprocedurejava-stored-procjdbc-thin-e-ociquem-ganha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O que a Oracle não consegue comprar</title>
		<link>http://www.boaglio.com/index.php/2011/03/13/o-que-a-oracle-nao-consegue-comprar/</link>
		<comments>http://www.boaglio.com/index.php/2011/03/13/o-que-a-oracle-nao-consegue-comprar/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 06:43:19 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=636</guid>
		<description><![CDATA[No começo dos anos 90, a Digital cria um banco de dados chamado RDB que começa a ganhar uma boa fatia do mercado. Provavelmente você nunca ouviu falar dele , pois em 1994 a Oracle comprou a empresa inteira e deu um jeito de oficialmente descontinuar o produto e garantir mais uma fatia do mercado. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/03/oracle_evil_empire-300x300.png" title="(1216 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/03/oracle_evil_empire-300x300.png" alt="" title="oracle_evil_empire" width="300" height="300" class="aligncenter size-full wp-image-640" /></a></p>
<p>No começo dos anos 90, a Digital cria um banco de dados chamado <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Oracle_Rdb" title="(92 hits)">RDB</a> que começa a ganhar uma boa fatia do mercado. Provavelmente você nunca ouviu falar dele , pois em 1994 a Oracle comprou a empresa inteira e deu um jeito de oficialmente descontinuar o produto e garantir mais uma fatia do mercado. </p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/03/bea.jpg" title="(982 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/03/bea.jpg" alt="" title="bea" width="136" height="82" class="aligncenter size-full wp-image-641" /></a></p>
<p>No começo dos anos 2000, uma empresa começa a ganhar nome no mercado com seu excelente servidor de aplicação chamado Weblogic. Em 2008 a Oracle compra mais essa e em alguns anos o nome da BEA cairá no esquecimento. Se eu ficar escrevendo sobre <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Oracle_Corporation#Corporate_acquisitions" title="(302 hits)">todas as aquisições da Oracle</a>, você vai parar de ler esse artigo nesse parágrafo mesmo.</p>
<p>A linguagem Java sempre foi open source, mas a engine que roda as aplicações não ( a JVM ), e a Sun Microsystems chegou a anunciar que tinha planos para abrir o código, mas logo em seguida a empresa foi comprada pela Oracle e aparentemente os planos não mudaram e agora <a href="http://www.boaglio.com/go.php?http://www.oracle.com/us/corporate/press/176988" title="(106 hits)">todo mundo quer ajudar</a> pra quando chegar a hora levar crédito também.</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2011/03/SunRIPsmall.jpg" title="(900 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2011/03/SunRIPsmall-300x234.jpg" alt="" title="Sun RIP " width="300" height="234" class="aligncenter size-medium wp-image-642" /></a><br />
<script type="text/javascript">google_ad_client = "pub-3816383189082763";google_ad_slot = "0931072200";google_ad_width = 468;google_ad_height = 60;</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></p>
<p>Quando se compra uma empresa e talvez até um jabá por fora para garantir que a coisa ande,  normalmente os envolvidos são poucos. Quando se fala de uma comunidade, e ainda com trabalho voluntário, o dinheiro não ajuda muito. Por esse motivo que nenhuma empresa grande é dona ou tem controle sobre o <strong>movimento open source</strong>.</p>
<p>Foi criado o projeto <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/LibreOffice#History" title="(90 hits)">LibreOffice</a> como resposta da ameaça ao projeto <em>OpenOffice</em> ser descontinuado, apesar das <a href="http://www.boaglio.com/go.php?http://arstechnica.com/open-source/news/2010/10/oracle-wants-libreoffice-members-to-leave-ooo-council.ars" title="(102 hits)">tentativas da Oracle de atrapalhar o processo</a>.</p>
<p>Também foi criado o projeto <a href="http://www.boaglio.com/go.php?http://mariadb.org/" title="(126 hits)">MariaDB</a> como resposta da compra do MySQL e da mudança de sua licença. </p>
<p>Além , disso a comunidade open source não investe o seu precioso tempo voluntário em projetos proprietários que foram abertos mas não valem a pena. As vezes essas empresas grandes podem pensar: &#8220;<a href="http://www.boaglio.com/go.php?http://news.cnet.com/IBM-to-open-source-DB2/2100-7344_3-6241694.html" title="(209 hits)">vamos abrir o fonte daquela coisa velha que a molecada open source atualiza e melhora o código pra gente</a>&#8221; . Pois é, felizmente não é assim que a coisa funciona. </p>
<p>Recentemente o framework <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Qt_%28framework%29" title="(25 hits)">Qt</a> passou por uma onda de boatos que iria acabar justamente por um <a href="http://www.boaglio.com/go.php?http://www.bbc.co.uk/news/business-12427680" title="(165 hits)">acordo que a Nokia fez com a Microsoft</a>. Se você já usou Skype, Virtual Box ou Google Earth, então já usou o <strong>Qt</strong>, pois ele é o responsável pela parte visual. Com ele também é feito o ambiente gráfico <strong>KDE</strong>, que também muita gente desinformada achou que estaria ameaçado&#8230; em primeiro lugar o <strong>KDE</strong> e o <strong>Qt</strong> existiam antes da aquisição da Nokia e o seu responsável sempre foi a comunidade open source. Em segundo lugar, devido à importância do projeto do <strong>KDE</strong>, foi criada uma <a href="http://www.boaglio.com/go.php?http://ev.kde.org/" title="(60 hits)">entidade sem fins lucrativos que visa manter a parte legal e financeira do projeto KDE</a>. Pois é, a comunidade open source não é só um bando de moleques trabalhando de graça, é algo maior que isso que está se organizando aos poucos, por esse motivo eu acho que o mínimo que ela merece é o nosso respeito. </p>
<p><strong>Fernando Boaglio, para a comunidade</strong></p>
<p><map name='google_ad_map_636_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/636?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_636_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=636&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2011%2F03%2F13%2Fo-que-a-oracle-nao-consegue-comprar%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2011/03/13/o-que-a-oracle-nao-consegue-comprar/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2011/03/13/o-que-a-oracle-nao-consegue-comprar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Melhore a qualidade do seu software com os Testes de Pareto</title>
		<link>http://www.boaglio.com/index.php/2010/12/05/melhore-a-qualidade-do-seu-software-com-os-testes-de-pareto/</link>
		<comments>http://www.boaglio.com/index.php/2010/12/05/melhore-a-qualidade-do-seu-software-com-os-testes-de-pareto/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 02:39:22 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCRUM]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=620</guid>
		<description><![CDATA[Lá para o ano de 1900 e pouco vivia na Itália um engenheiro chamado Vilfredo Pareto, que além de contribuir para sociologia e matemática, reparou algo interessante em seu país: 80% das terras italianas pertenciam à 20% das pessoas. Claro que na nossa realidade brasileira esse número é muito pior, mas Pareto foi o primeiro [...]]]></description>
			<content:encoded><![CDATA[<p>Lá para o ano de 1900 e pouco vivia na Itália um engenheiro chamado <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Vilfredo_Pareto" title="(84 hits)">Vilfredo Pareto</a>, que além de contribuir para sociologia e matemática, reparou algo interessante em seu país: <em>80% das terras italianas pertenciam à 20% das pessoas</em>.</p>
<p>  Claro que <a href="http://www.boaglio.com/go.php?http://www.socialismo.org.br/portal/economia-e-infra-estrutura/103-livro/1664-livro-mostra-que-meios-de-producao-do-pais-pertencem-a-6-da-populacao" title="(118 hits)">na nossa realidade brasileira esse número é muito pior</a>, mas Pareto foi o primeiro a colocar sua descoberta no papel.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/commons/9/99/Vilfredo_Pareto.jpg" alt="Pareto" /><br />
<!--adsense#bannertextomeio--></p>
<p>Essa descoberta ficou conhecida como a <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Pareto_principle" title="(105 hits)">princípio de Pareto</a>, ou a regra do 80/20. Essa regra se aplica em diversos cenários, como por exemplo que 80% das vendas vem de 20% dos clientes. </p>
<p>Até a <a href="http://www.boaglio.com/go.php?http://www.crn.com/news/security/18821726/microsofts-ceo-80-20-rule-applies-to-bugs-not-just-features.htm" title="(319 hits)">Microsoft usou esse princípio</a> aplicando que corrigindo 20% de seus mais reportados bugs, ela eliminaria 80% dos erros e problemas.</p>
<p> <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/12/computer_down.jpg" title="(1284 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/12/computer_down.jpg" alt="" title="computer_down" width="267" height="300" class="aligncenter size-full wp-image-621" /></a></p>
<p>Você que desenvolve  software e sabe que a garantia da qualidade da entrega são os testes, também sabe que nem sempre é possível ter uma cobertura total de sua aplicação, ainda mais que seu chefe não entende por que você precisa testar algo que fez há seis meses ou um ano, que teoricamente está pronto&#8230; pois é, bem-vindo ao mundo do reuso de componentes!  </p>
<p>Por esse motivo sempre que possível nas entregas que faço <strong>eu procuro aplicar o que eu chamo de &#8220;testes de Pareto&#8221;</strong>, que nada mais são do que<em> testes em 20% das telas do sistema que são responsáveis por 80% dos problemas reportados</em>. </p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/12/please_test.jpg" title="(956 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/12/please_test.jpg" alt="" title="please_test" width="300" height="199" class="aligncenter size-full wp-image-626" /></a></p>
<p>Do que adianta então você gastar uma hora testando uma tela complexa se quase ninguém usa? Não daria melhor resultado se você testasse aquela tela que todo mundo usa todo dia? </p>
<p>Aplicar os testes de Pareto nas suas entregas não é uma invenção fabulosa, <em>é apenas o uso do bom senso</em>. </p>
<p>Tenha esse hábito e terá melhores resultados.</p>
<p><em>Fernando Boaglio, para a comunidade.</em></p>
<p><map name='google_ad_map_620_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/620?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_620_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=620&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2010%2F12%2F05%2Fmelhore-a-qualidade-do-seu-software-com-os-testes-de-pareto%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2010/12/05/melhore-a-qualidade-do-seu-software-com-os-testes-de-pareto/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2010/12/05/melhore-a-qualidade-do-seu-software-com-os-testes-de-pareto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 passos para iniciar em Java</title>
		<link>http://www.boaglio.com/index.php/2010/11/06/10-passos-para-iniciar-em-java/</link>
		<comments>http://www.boaglio.com/index.php/2010/11/06/10-passos-para-iniciar-em-java/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 02:21:01 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Clube dos 10]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=609</guid>
		<description><![CDATA[Recentemente foi o dia do professor, e frequentemente alguém me pergunta como devo começar a estudar Java, então para facilitar a minha vida resolvi escrever esse post ao invés de responder em email toda hora. Na época que lecionava Java para a Sun Microsystems, eu sempre orientava os meus alunos a adotar algumas das dicas [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente foi o dia do professor, e frequentemente alguém me pergunta como devo começar a estudar Java, então para facilitar a minha vida resolvi escrever esse post ao invés de responder em email toda hora. </p>
<p>Na época que lecionava Java para a Sun Microsystems, eu sempre orientava os meus alunos a adotar algumas das dicas abaixo e não se limitar ao conteúdo da apostila. </p>
<p>Lembre-se que o melhor dos cursos apenas é uma ferramenta, de nada adianta se você não estiver comprometido com o aprendizado. </p>
<p>Saiba que Java não é algo tão intuitivo como PHP, mas também não é algo do outro mundo, que alguém não possa aprender. Quando você conhecer o potencial do Java, vai entender porque empresas enormes como IBM , Oracle sempre apoiaram a utilização dessa plataforma.</p>
<p><img src="http://upload.wikimedia.org/wikipedia/en/thumb/3/39/Java_logo.svg/100px-Java_logo.svg.png" alt="Java" /><br />
<!--adsense#bannertextomeio--></p>
<p>	 1. <strong>Entenda as origens do Java e por que ele foi criado</strong> &#8211; entender o <a href="http://www.boaglio.com/go.php?http://web.archive.org/web/20050420081440/http://java.sun.com/features/1998/05/birthday.html" title="(192 hits)">porquê da linguagem ser criada pelas necessidades da época</a> ajuda muito na compreensão de suas bibliotecas e de seu funcionamento. Procure estudar a diferença da <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Java_%28programming_language%29" title="(79 hits)">linguagem Java</a> e da <a href="http://www.boaglio.com/go.php?http://en.wikipedia.org/wiki/Java_%28software_platform%29" title="(71 hits)">plataforma Java</a>.  </p>
<p>	 2. <strong>Não comece usando Eclipse / NetBeans</strong> &#8211; as IDEs mascaram muita coisa essencial para o aprendizado, por isso apenas mude para essas ferramentas depois de alguns meses de prática. No momento você precisa apenas de um <a href="http://www.boaglio.com/go.php?http://notepad-plus-plus.org/" title="(110 hits)">bom</a> <a href="http://www.boaglio.com/go.php?http://projects.gnome.org/gedit/" title="(114 hits)">editor</a> de <a href="http://www.boaglio.com/go.php?http://www.jedit.org/" title="(120 hits)">textos</a> para ajudar na sintaxe. </p>
<p>	 3. <strong>Procure apostilas conceituadas </strong>- antigamente existiam apostilas básicas na Internet, resumos incoerentes e algumas dissertações de mestrado sobre o assunto. Hoje existe muito mais coisa, mas a melhor referência que existe é<a href="http://www.boaglio.com/go.php?http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/" title="(295 hits)"> a apostila do curso de Java da Caelum</a>, uma excelente fonte de informação escrita por experientes profissionais da área. </p>
<p>	 4. <strong>Monte um plano de estudo com intervalos curtos</strong> &#8211; planejar um roteiro de estudos precisamos de compromisso e ser bem realista na programação. Procure dedicar um tempo todo dia para o estudo, alguns dias você terá horas, outros apenas meia hora. Não deixe de ficar um dia sem dar uma olhada, nem que seja por 10 minutos. </p>
<p>	 5. <strong>Inscreva-se em fóruns de Java e leia periódicos</strong> &#8211; existem <a href="http://www.boaglio.com/go.php?http://www.guj.com.br" title="(872 hits)">muitos</a> <a href="http://www.boaglio.com/go.php?http://www.javaranch.com/" title="(111 hits)">fóruns</a> por aí e <a href="http://www.boaglio.com/go.php?http://www.mundoj.com.br/" title="(123 hits)">alguns</a> <a href="http://www.boaglio.com/go.php?http://www.devmedia.com.br/javamagazine/" title="(105 hits)">periódicos</a> nas bancas. Participe dos fóruns tirando suas dúvidas no começo e ajudando os iniciantes mais tarde. </p>
<p>	 6. <strong>Compre um bom livro de Java ou faça um curso conceituado </strong>- se você prefere livro, compre o <a href="http://www.boaglio.com/go.php?http://oreilly.com/catalog/9780596009205" title="(141 hits)">Head First Java</a>, se prefere curso, faça <a href="http://www.boaglio.com/go.php?http://education.oracle.com" title="(106 hits)">numa</a> <a href="http://www.boaglio.com/go.php?http://www.caelum.com.br" title="(82 hits)">escola</a> <a href="http://www.boaglio.com/go.php?http://www.globalcode.com.br/" title="(123 hits)">conceituada</a>. </p>
<p>	 7. <strong>Estude as APIs do Java direto no código fonte</strong>- muita coisa está documentada no código fonte com exemplos, é um ótimo lugar para aprender a usar alguns padrões. </p>
<p>	 8. <strong>Não comece a desenvolver para web ainda</strong> &#8211; o erro de muitos iniciantes é partirem para o desenvolvimento web antes de conhecerem o básico. Quem aprende o básico primeiro, tem um rendimento muito melhor no futuro. </p>
<p>	 9. <strong>Aprenda o que são e como usar bibliotecas e frameworks</strong> &#8211; quando precisa de algum recurso no Java, como por exemplo gerar um arquivo PDF, fazer um acesso SSH, etc; antes de sair reinventando a roda, saiba que existe uma chance de quase 100% de alguém já ter feito isso. Por esse motivo, crie o hábito de procurar por bibliotecas e frameworks antes de sair programando. </p>
<p>	 10.<strong>Faça um programa exemplo</strong> &#8211; a melhor maneira de testar os seus conhecimentos de uma linguagem é fazer um programa que junte todas as peças que aprendeu. Pode ser uma pequena agenda, uma lista de ramais de uma empresa, não importa. Comece criando uma aplicação dessas primeiro armazenando os valores na memória dentro de Arrays e depois avance para armazenar em um banco de dados. Mais tarde use esse mesmo esquema para criar uma aplicação web ou uma aplicação em um celular. </p>
<p><img src="http://www.sorbor.com/blog/wp-content/gallery/notes/pen_paper.gif" alt="Anote!" width="100"/></p>
<p>Além de cursos ou livros, tem gente que prefere <a href="http://www.boaglio.com/go.php?http://javabymarcao.wordpress.com/ " title="(184 hits)">criar um blog para incentivar o aprendizado</a>, escrever resumos,  aí cada um é de um jeito. </p>
<p>Não é tarde para ingressar no mercado de Java, mesmo com outras linguagens emergindo, os trabalhos em Java ainda são abundantes e mesmo que isso mude, o legado hoje é enorme e manterá o mercado aquecido por um bom tempo. </p>
<p>Dica extra: aprenda SQL ! Se você conseguir ser um profissional que realmente conhece SQL, será um profissional diferenciado entre os profissionais Java.</p>
<p>Boa sorte!</p>
<p><strong>Fernando Boaglio, para a comunidade.</strong></p>
<p><map name='google_ad_map_609_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/609?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_609_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=609&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2010%2F11%2F06%2F10-passos-para-iniciar-em-java%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2010/11/06/10-passos-para-iniciar-em-java/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2010/11/06/10-passos-para-iniciar-em-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>troque seu passado pelo Google</title>
		<link>http://www.boaglio.com/index.php/2010/09/07/troque-seu-passado-pelo-google/</link>
		<comments>http://www.boaglio.com/index.php/2010/09/07/troque-seu-passado-pelo-google/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 22:02:04 +0000</pubDate>
		<dc:creator>Fernando Boaglio</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.boaglio.com/?p=595</guid>
		<description><![CDATA[Seguindo uma prática já citada aqui para gerenciar os seus emails, também é possível aplicá-la na organização de suas coisas. É impressionante a quantidade de revistas, livros,anotações que a gente guarda com a ilusão que algum dia vamos consultar. Na prática a gente usa o Google, essa é a verdade, mas continuamos a guardar as [...]]]></description>
			<content:encoded><![CDATA[<p>Seguindo uma prática <a href="http://www.boaglio.com/go.php?http://www.boaglio.com/index.php/2010/01/06/tenha-sua-caixa-postal-zerada/" title="(130 hits)">já citada aqui para gerenciar os seus emails</a>, também é possível aplicá-la na organização de suas coisas.</p>
<p>É impressionante a quantidade de revistas, livros,anotações que a gente guarda com a ilusão que algum dia vamos consultar.  Na prática a gente usa o <em>Google</em>, essa é a verdade, mas continuamos a guardar as coisas por talvez algum apelo emocional pelo esforço de ter estudado ou anotado várias coisas. </p>
<p>As vezes alguma anotação é preciosa e merece ser guardada, mas será que ela não está ultrapassada? Faça uma nova anotação se necessário, faça um resumo do que interessa e livre-se do resto.</p>
<p><img src="http://www.themovingblog.com/wp-content/uploads/2009/12/cleaning-services.jpg" alt="limpeza" /></p>
<p><strong>Vamos ser práticos ? </strong></p>
<p><strong>Então doem seus livros e revistas velhas e livrem-se de suas anotações antigas e ultrapassadas, elas não servem mais!</strong></p>
<p>Fazendo uma limpeza nas minhas coisas guardadas da época da faculdade, encontrei nove ilustrações usadas num curso de orientação a objetos com C++, é impressionante como eles são interessantes e ao mesmo tempo atuais.</p>
<p>Bom proveito e boa limpeza!</p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons1.png" title="(563 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons1-806x1024.png" alt="" title="oo-cartoons1" width="236" height="300" class="aligncenter size-medium wp-image-596" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons2.png" title="(563 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons2-1024x896.png" alt="" title="oo-cartoons2" width="236" height="300" class="aligncenter size-medium wp-image-604" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons3.png" title="(498 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons3-1024x821.png" alt="" title="oo-cartoons3" width="236" height="300" class="aligncenter size-medium wp-image-603" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons4.png" title="(437 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons4-1024x826.png" alt="" title="oo-cartoons4" width="236" height="300" class="aligncenter size-medium wp-image-602" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons5.png" title="(437 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons5-1024x877.png" alt="" title="oo-cartoons5" width="236" height="300" class="aligncenter size-medium wp-image-601" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons6.png" title="(409 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons6-1024x820.png" alt="" title="oo-cartoons6" width="236" height="300" class="aligncenter size-medium wp-image-600" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons7.png" title="(403 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons7-1024x835.png" alt="" title="oo-cartoons7" width="236" height="300" class="aligncenter size-medium wp-image-599" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons8.png" title="(417 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons8-1024x878.png" alt="" title="oo-cartoons8" width="236" height="300" class="aligncenter size-medium wp-image-598" /></a></p>
<p><a href="http://www.boaglio.com/go.php?http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons9.png" title="(391 hits)"><img src="http://www.boaglio.com/wp-content/uploads/2010/09/oo-cartoons9-1024x852.png" alt="" title="oo-cartoons9" width="236" height="300" class="aligncenter size-medium wp-image-597" /></a></p>
<p>Fernando Boaglio, para a comunidade.</p>
<p><map name='google_ad_map_595_74531d4cc4df7f28'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/595?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_595_74531d4cc4df7f28' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=595&amp;url= http%3A%2F%2Fwww.boaglio.com%2Findex.php%2F2010%2F09%2F07%2Ftroque-seu-passado-pelo-google%2F' /></p><div class="al2fb_like_button"><div id="fb-root"></div><script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=357307720952117";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<fb:like href="http://www.boaglio.com/index.php/2010/09/07/troque-seu-passado-pelo-google/" layout="standard" show_faces="true" width="450" action="like" font="arial" colorscheme="light" ref="AL2FB"></fb:like></div>]]></content:encoded>
			<wfw:commentRss>http://www.boaglio.com/index.php/2010/09/07/troque-seu-passado-pelo-google/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

