<?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>boa-ventura.net</title>
	<atom:link href="http://boa-ventura.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://boa-ventura.net</link>
	<description></description>
	<lastBuildDate>Wed, 21 Mar 2012 16:40:23 +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>Habilitar JPA2 no weblogic com eclipse</title>
		<link>http://boa-ventura.net/2012/03/16/habilitar-jpa2-no-weblogic-com-eclipse/</link>
		<comments>http://boa-ventura.net/2012/03/16/habilitar-jpa2-no-weblogic-com-eclipse/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 16:12:27 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jpa2]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=313</guid>
		<description><![CDATA[Estou usando o WebLogic e precisei habilitar suporte a JPA2. A partir do weblogic 10.3.4 o eclipse facilita esta configuração. Para ativar o suporte a JPA2 na sua instalação do WebLogic siga as instruções: 1.   No eclipse vá até &#8230; <a href="http://boa-ventura.net/2012/03/16/habilitar-jpa2-no-weblogic-com-eclipse/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estou usando o WebLogic e precisei habilitar suporte a JPA2. A partir do weblogic 10.3.4 o eclipse facilita esta configuração. Para ativar o suporte a JPA2 na sua instalação do WebLogic siga as instruções:</p>
<p>1.   No eclipse vá até Window &gt; Preferences e em Java &gt; Runtime Enviroments.</p>
<p>2.   Selecione sua instalação do WebLogic e clique em Edit.</p>
<p>3.   Note o link Java Persistence 2.0 Install. Clique em install.</p>
<p><a href="http://boa-ventura.net/wp-content/uploads/2012/03/1-install.png"><img class="alignnone size-full wp-image-314" title="1-install" src="http://boa-ventura.net/wp-content/uploads/2012/03/1-install.png" alt="" width="921" height="240" /></a></p>
<p>Se tudo ocorreu certo o link mudará para Uninstall. Se você receber alguma mensagem de erro dizendo que o arquivo weblogic.jar está sendo usado continue seguindo as instruções.</p>
<p>4.   Procure nos serviços que estão rodando no seu computador (Windows) um serviço chamado Oracle WebLogic NodeManager e pare este serviço.</p>
<p><a href="http://boa-ventura.net/wp-content/uploads/2012/03/2-servico.png"><img class="alignnone size-full wp-image-315" title="2-servico" src="http://boa-ventura.net/wp-content/uploads/2012/03/2-servico.png" alt="" width="548" height="120" /></a></p>
<p>5.   Volte ao eclipse e acesse Window &gt; Preferences e em General &gt; Startup and Shutdown desmarque todos os plugins que o nome comece com Oracle.</p>
<p><a href="http://boa-ventura.net/wp-content/uploads/2012/03/3-startup.png"><img class="alignnone size-full wp-image-316" title="3-startup" src="http://boa-ventura.net/wp-content/uploads/2012/03/3-startup.png" alt="" width="869" height="166" /></a></p>
<p>6. Feche o eclipse, abra-o novamente e repita os passos 1, 2 e 3. Depois ative novamente o serviço e os plugins desativados nos passos 4 e 5.</p>
<p>&nbsp;</p>
<p>Configuração: Eclipse Indigo, WebLogic 10.3.5, Windows 7.</p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/03/16/habilitar-jpa2-no-weblogic-com-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criar datasource no weblogic</title>
		<link>http://boa-ventura.net/2012/03/12/criar-datasource-no-weblogic/</link>
		<comments>http://boa-ventura.net/2012/03/12/criar-datasource-no-weblogic/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 15:54:07 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[datasource]]></category>
		<category><![CDATA[jdbc]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=301</guid>
		<description><![CDATA[Só a dica de onde se cria um datasource no WebLogic 10.3.x 1.   Clique em Services &#62; JDBC &#160; 2.   Selecione Data Sources 3.  Ative o Lock &#38; Edit e o botão New irá habilitar para criar o datasource. &#8230; <a href="http://boa-ventura.net/2012/03/12/criar-datasource-no-weblogic/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Só a dica de onde se cria um datasource no WebLogic 10.3.x</p>
<p>1.   Clique em Services &gt; JDBC</p>
<p><a href="http://boa-ventura.net/wp-content/uploads/2012/03/wl-jdbc-config1.png"><img class="alignnone size-full wp-image-309" title="wl-jdbc-config1" src="http://boa-ventura.net/wp-content/uploads/2012/03/wl-jdbc-config1.png" alt="" width="273" height="267" /></a></p>
<p>&nbsp;</p>
<p>2.   Selecione Data Sources</p>
<p><a href="http://boa-ventura.net/wp-content/uploads/2012/03/wl-jdbc-config2.png"><img class="alignnone size-full wp-image-305" title="wl-jdbc-config2" src="http://boa-ventura.net/wp-content/uploads/2012/03/wl-jdbc-config2.png" alt="" width="709" height="436" /></a></p>
<p>3.  Ative o Lock &amp; Edit e o botão New irá habilitar para criar o datasource.</p>
<p><a href="http://boa-ventura.net/wp-content/uploads/2012/03/wl-jdbc-config3.png"><img class="alignnone size-full wp-image-310" title="wl-jdbc-config3" src="http://boa-ventura.net/wp-content/uploads/2012/03/wl-jdbc-config3.png" alt="" width="843" height="445" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/03/12/criar-datasource-no-weblogic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debug weblogic com eclipse</title>
		<link>http://boa-ventura.net/2012/03/09/debug-weblogic-com-eclipse/</link>
		<comments>http://boa-ventura.net/2012/03/09/debug-weblogic-com-eclipse/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 15:44:14 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[weblogic]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=296</guid>
		<description><![CDATA[1.   Encontre o arquivo startWebLogic.cmd que está no caminho: **caminho_do_weblogic**\user_projects\domains\**seu_dominio**\bin\startWebLogic.cmd 2.   Dentro do arquivo, crie uma variável com o nome DEBUG_OPTS com o seguinte valor: set DEBUG_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=**porta**,server=y,suspend=n 3.   Localize a linha onde o WebLogic está sendo &#8230; <a href="http://boa-ventura.net/2012/03/09/debug-weblogic-com-eclipse/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>1.   Encontre o arquivo startWebLogic.cmd que está no caminho:</p>
<pre>**caminho_do_weblogic**\user_projects\domains\**seu_dominio**\bin\startWebLogic.cmd</pre>
<p>2.   Dentro do arquivo, crie uma variável com o nome DEBUG_OPTS com o seguinte valor:</p>
<pre>set DEBUG_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=**porta**,server=y,suspend=n</pre>
<p>3.   Localize a linha onde o WebLogic está sendo iniciado, esta linha inicia com %JAVA_HOME%\bin\java e adicione a variável criada anteriormente, ficando mais ou menos assim:</p>
<pre>%JAVA_HOME%\bin\java %DEBUG_OPTS% %JAVA_VM% %MEM_ARGS% -Dweblogic.Name=%SERVER_NAME% -Djava.security.policy=%WL_HOME%\server\lib\weblogic.policy %JAVA_OPTIONS% %PROXY_SETTINGS% %SERVER_CLASS%</pre>
<p>4.   No eclipse, vá ao menu Run &gt; Debug Configurations&#8230; e crie um Remote Java Application. E preencha com o host e a porta que foi configurada no startWebLogic.cmd.</p>
<p><a href="http://boa-ventura.net/wp-content/uploads/2012/03/remote.png"><img class="alignnone size-full wp-image-297" title="remote" src="http://boa-ventura.net/wp-content/uploads/2012/03/remote.png" alt="" width="318" height="325" /></a></p>
<p>6.   Agora é só iniciar o WebLogic e logo após rodar o debug do remote java application que foi criado.</p>
<p>&nbsp;</p>
<p>Configuração: WebLogic 10.3.5, Eclipse Indigo, Windows 7.</p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/03/09/debug-weblogic-com-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Weblogic diretório de bibliotecas compartilhadas (classpath)</title>
		<link>http://boa-ventura.net/2012/02/22/weblogic-domain-lib-directory/</link>
		<comments>http://boa-ventura.net/2012/02/22/weblogic-domain-lib-directory/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 17:13:59 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=279</guid>
		<description><![CDATA[Muitas vezes os erros de classes não encontradas ou não carregadas podem te perseguir ao fazer deploy de uma aplicação no Weblogic, por mais que esteja tudo configurado corretamente. Isso porque o classloader do weblogic pode não estar fazendo seu &#8230; <a href="http://boa-ventura.net/2012/02/22/weblogic-domain-lib-directory/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes os erros de classes não encontradas ou não carregadas podem te perseguir ao fazer deploy de uma aplicação no Weblogic, por mais que esteja tudo configurado corretamente. Isso porque o classloader do weblogic pode não estar fazendo seu trabalho direito. Então será necessário usar o diretório de bibliotecas compartilhadas do domínio. O local é:</p>
<pre class="gutter: false">Unidade:\Local do Weblogic\user_projects\domains\Seu dominio\lib</pre>
<p>É só jogar seus jars aí e eles serão carregadas quando o WebLogic estiver carregando.</p>
<p>&nbsp;</p>
<p>Referências:</p>
<p><a href="http://objectmix.com/weblogic/514400-classloader-issues-classcastexceptions-noclassdeffounderror.html" target="_blank">http://objectmix.com/weblogic/<wbr>514400-classloader-issues-</wbr><wbr>classcastexceptions-</wbr><wbr>noclassdeffounderror.html</wbr></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/02/22/weblogic-domain-lib-directory/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Testes unitários, métodos private e protected</title>
		<link>http://boa-ventura.net/2012/02/06/testes-unitarios-metodos-private-e-protected/</link>
		<comments>http://boa-ventura.net/2012/02/06/testes-unitarios-metodos-private-e-protected/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 12:36:32 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Teste Unitário]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=260</guid>
		<description><![CDATA[Recentemente me deparei com uma questão e resolvi pesquisar um pouco sobre o assunto. A questão era, eu devo testar meus métodos private/protected em meus testes unitários? O resultado da minha pesquisa me ensinou o seguinte: Não, eu não devo &#8230; <a href="http://boa-ventura.net/2012/02/06/testes-unitarios-metodos-private-e-protected/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recentemente me deparei com uma questão e resolvi pesquisar um pouco sobre o assunto. A questão era, eu devo testar meus métodos private/protected em meus testes unitários?</p>
<p>O resultado da minha pesquisa me ensinou o seguinte: Não, eu não devo testar esses métodos, pois o que realmente deve ser testado é o comportamento de uma classe. O comportamento de uma classe são os métodos que podem ser acessados pelos usuários, ou seja, os métodos públicos, aqueles que foram assinados na interface. Os métodos private dizem respeito unica e exclusivamente ao funcionamento da própria classe. Podemos até dizer que eles são auxiliares para o comportamento da classe.</p>
<p>O mundo ideal seria chegar ao ponto de sempre criar uma interface antes de implementar  qualquer classe. Ao criar primeiro a interface antes das classes estamos forçando que as classes implementem um comportamento. Não importa a implementação, o que importa é o comportamento esperado. Existem vários artigos bons sobre isso, um deles é este aqui no <a title="Interfaces GUJ" href="http://www.guj.com.br/articles/123" target="_blank">GUJ sobre Interfaces</a>, bem simples e prático.</p>
<p>Após criar a interface já é possível escrever os testes. O teste será escrito com base nos métodos da interface, ignorando qualquer método private que venha a ser criado na classe  implementadora. Os métodos privates certamente serão testados automaticamente ao testar os métodos public. Os testes serão escritos tendo em vista o comportamento esperado das classes que implementarão a interface. Exemplo:</p>
<pre class="brush: java; gutter: true">public interface Veiculo {
      acelerar();
      desacelerar();
      int getVelocidade();
      setVelocidade(int velocidade);
}
public class VeiculoTest {
      Veiculo veiculo;
      public void testeAceleracao() {
           int velocidadeTeste = 5;
           veiculo.setVelocidade(velocidadeTeste);
           veiculo.acelerar();
           Assert.assertTrue(velocidadeTeste &lt; veiculo.getVelocidade());
      }

}</pre>
<p>É um exemplo simples, mas repare que após acelerar o veiculo esperamos que a velocidade tenha aumentado. Sendo assim, qualquer tipo de veiculo que implementar a classe Veiculo não passará no teste se após acelerar a velocidade não aumentar. Este é o comportamento da aceleração. Estamos testando um comportamento.</p>
<p>Após escrever o teste é só implementar a interface. É interessante quanto código é possível produzir sem ao menos ter uma classe concreta.</p>
<p><strong>Dica! </strong>Se você alterar a visibilidade de um método para poder testa-lo, é bem provável que você está fazendo besteira. ;)</p>
<p>Quanto aos métodos protected, eles devem ser testados. Para isso sua classe testadora terá que extends a classe onde estão os métodos protected. Pois podemos dizer que os métodos protected fazem parte do comportamento da classe.</p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/02/06/testes-unitarios-metodos-private-e-protected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Regex I</title>
		<link>http://boa-ventura.net/2012/02/03/java-regex-i/</link>
		<comments>http://boa-ventura.net/2012/02/03/java-regex-i/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 13:09:22 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[regex java split]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=245</guid>
		<description><![CDATA[Aqui vai uma dica simples de como usar regex no Java. Vou explicar seu uso com um exemplo simples. Eu tinha uma string de aproximadamente 5000 caracteres. Precisava quebra-la em X strings de até 999 caracteres. Para isso utilizei a &#8230; <a href="http://boa-ventura.net/2012/02/03/java-regex-i/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aqui vai uma dica simples de como usar regex no Java. Vou explicar seu uso com um exemplo simples. Eu tinha uma string de aproximadamente 5000 caracteres. Precisava quebra-la em X strings de até 999 caracteres. Para isso utilizei a expressão:</p>
<pre class="brush: text; gutter: true">.{1, 999}</pre>
<p>Simples assim!</p>
<p>Agora como fazer o Java usar esta expressão para quebrar uma string? É simples também, são dois passos.</p>
<ol>
<li>Criar um Pattern com a sua expressão.</li>
<li>Criar um Matcher para aplicar o Pattern a uma string.</li>
</ol>
<div>
<pre class="brush: java; gutter: true">String minhaString = &quot;kwlwefkljfklsdjf...&quot;;
Pattern pattern = Pattern.compile(&quot;.{1, 999}&quot;);
Matcher matcher = pattern.matcher(minhaString);
while(matcher.find()) {
	matcher.group(); // Aqui vem o resultado
}</pre>
</div>
<p>Vale apena dar uma conferida no método java.lang.String.split. Este método espera um delimitador onde ele vai quebrar e retornar um array de Strings. Um exemplo simples.</p>
<pre class="brush: java; gutter: true">String todosAnimais = &quot;gato:cachorro:macaco:vaca&quot;;
String[] animais = animais.split(&quot;:&quot;); //aqui temos nosso array</pre>
<p><strong>Mais Dicas!</strong></p>
<p>Aqui vai um ótimo site de referências sobre regex: <a href="http://www.regular-expressions.info/reference.html">http://www.regular-expressions.info/reference.html</a></p>
<p>Este outro site é para testar suas expreões: <a title="Regex tester" href="http://regexpal.com/">http://regexpal.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/02/03/java-regex-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apanhando para os bits</title>
		<link>http://boa-ventura.net/2012/01/18/apanhando-para-os-bits/</link>
		<comments>http://boa-ventura.net/2012/01/18/apanhando-para-os-bits/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 15:11:22 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[bits]]></category>
		<category><![CDATA[byte]]></category>
		<category><![CDATA[converter]]></category>
		<category><![CDATA[hexa]]></category>
		<category><![CDATA[hexadecimal]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=221</guid>
		<description><![CDATA[Por dois dias eu apanhei para conseguir escrever uma string hexadecimal em um socket. A string se parecia com isso: String string = &#34;08A235A410&#34;; Repare que esta string representa um hexadecimal, sendo que cada par de caracteres representa um byte hexadecimal. &#8230; <a href="http://boa-ventura.net/2012/01/18/apanhando-para-os-bits/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Por dois dias eu apanhei para conseguir escrever uma string hexadecimal em um socket. A string se parecia com isso:</p>
<pre class="brush: java; gutter: true">String string = &quot;08A235A410&quot;;</pre>
<p>Repare que esta string representa um hexadecimal, sendo que cada par de caracteres representa um byte hexadecimal. Por exemplo, os dois primeiros caracteres da string formam o hexadecimal 0&#215;08, os próximos 0xA2 e assim por diante.</p>
<p>Para que eu pudesse escrever isso no socket eu precisava converter a string para um array de byte e cada byte seria um hexadecimal. Como fazer essa conversão?</p>
<pre class="brush: java; gutter: true">public byte[] hexString2ByteArray(String str) {
	    int len = str.length();
	    byte[] bytes = new byte[len / 2];
	    for(int i = 0; i &lt; len; i += 2) {
	        bytes[i / 2] = (byte) ((Character.digit(str.charAt(i), 16) &lt;&lt; 4) + Character.digit(str.charAt(i+1), 16));
	    }
	    return bytes;
	}</pre>
<p>Este método é bem simples. Ele lê de dois em dois caracteres, converte cada caractere de base 16 para decimal, faz um deslocamento de 4 bits para a esquerda do primeiro caractere, depois soma o resultado do primeiro e do segundo caractere e por fim faz um cast para byte.</p>
<p>Desse modo eu consegui converter uma string em um array de bytes e foi só escrever no socket.</p>
<p><strong>Nota!</strong> Um hexadecimal usa 8 bits para representar seu valor, que em decimal seria de 0 a 255. Um byte também precisa de 8 bits para representar seu valor, mas em Java um byte é representado de -128 a 127. A diferença entre eles é que um é signed e o outro é unsigned. Ou seja, um usa sinal (positivo/negativo) e o outro não. Tipos que são signed usam o primeiro dos 8 bits para representar o sinal, já os unsigned usam todos os bits para representar o seu valor. O que torna possível fazer a conversão é que tanto o byte quanto o hexadecimal usam 8 bits e por isso tem um mesmo range. De -128 a 127 ou de 0 a 255 da no mesmo, ambos tem a mesma capacidade.</p>
<p>&nbsp;</p>
<p>Fontes:</p>
<p><a href="http://stackoverflow.com/questions/140131/convert-a-string-representation-of-a-hex-dump-to-a-byte-array-using-java">http://stackoverflow.com/questions/140131/convert-a-string-representation-of-a-hex-dump-to-a-byte-array-using-java</a></p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/01/18/apanhando-para-os-bits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cálculo de base 16 (conversão hexadecimal decimal)</title>
		<link>http://boa-ventura.net/2012/01/17/calculo-de-base-16-conversao-hexadecimal-decimal/</link>
		<comments>http://boa-ventura.net/2012/01/17/calculo-de-base-16-conversao-hexadecimal-decimal/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 14:32:22 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[base 16]]></category>
		<category><![CDATA[base16]]></category>
		<category><![CDATA[deslocamento de bits]]></category>
		<category><![CDATA[hexadecimal]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=236</guid>
		<description><![CDATA[&#160; No artigo anterior expliquei somente como converter de decimal para hexadecimal, agora quero explicar a conversão inversa, de hexadecimal para decimal. Só para relembrar a tabela, ai vai ela novamente. Decimal Hexa 0 0 1 1 2 2 3 &#8230; <a href="http://boa-ventura.net/2012/01/17/calculo-de-base-16-conversao-hexadecimal-decimal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>No artigo anterior expliquei somente como converter de decimal para hexadecimal, agora quero explicar a conversão inversa, de hexadecimal para decimal.</p>
<p>Só para relembrar a tabela, ai vai ela novamente.</p>
<table style="width: 240px;">
<thead>
<tr>
<td>Decimal</td>
<td>Hexa</td>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>6</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>7</td>
</tr>
<tr>
<td>8</td>
<td>8</td>
</tr>
<tr>
<td>9</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>A</td>
</tr>
<tr>
<td>11</td>
<td>B</td>
</tr>
<tr>
<td>12</td>
<td>C</td>
</tr>
<tr>
<td>13</td>
<td>D</td>
</tr>
<tr>
<td>14</td>
<td>E</td>
</tr>
<tr>
<td>15</td>
<td>F</td>
</tr>
</tbody>
</table>
<p>Para realizar este cálculo fazemos os seguintes passos.</p>
<ol>
<li>Converte cada dígito para decimal usando a tabela.</li>
<li>Multiplique cada dígito por 16 ^ n, sendo n a ordem do dígito. O mais a direita é zero.</li>
<li>Some os resultados.</li>
</ol>
<p>Vamos converter A2 para decimal.</p>
<pre>A = 10 (olhe a tabela)
2 = 2
(10 * (16 ^ 1)) + (2 * (16 ^ 0))
(10 * 16) + (2 * 1)
160 + 2
A2 = 162</pre>
<p>Mais um exemplo, agora com um hexadecimal um pouco maior. Vamos converter 4B1.</p>
<pre>4 = 4
B = 11
1 = 1
(4 * (16 ^ 2)) + (11 * (16 ^ 1)) + (1 * (16 ^ 0))
(4 * 256) + (11 * 16) + (1 * 1)
1024 + 176 + 1
4B1 = 1201</pre>
<p>Acho que a conversão ficou entendida. Só vou acrescentar uma questão interessante aqui. A questão é que podemos utilizar deslocamento de bits para fazer os cálculos de potência. Usando por base o ultimo exemplo, podemos fazer o seguite.</p>
<pre>4 = 4
B = 11
1 = 1
(4 &lt;&lt; 8) + (11 &lt;&lt; 4) + (1)
1024 + 176 + 1
4B1 = 1201</pre>
<p>Caso não tenha entendido o exemplo anterior use multiplicação e potência, caso faça questão de entender o exemplo anterior pesquise deslocamento de bits e números binários. Se eu escrever algo sobre isso vou colocar aqui o link.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/01/17/calculo-de-base-16-conversao-hexadecimal-decimal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calculo de base 16 (conversão decimal hexadecimal)</title>
		<link>http://boa-ventura.net/2012/01/16/calculo-de-base-16-conversao-decimal-hexadecimal/</link>
		<comments>http://boa-ventura.net/2012/01/16/calculo-de-base-16-conversao-decimal-hexadecimal/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 13:58:08 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[base 16]]></category>
		<category><![CDATA[base16]]></category>
		<category><![CDATA[hexa]]></category>
		<category><![CDATA[hexadecimal]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[radix]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=227</guid>
		<description><![CDATA[Para fazer a conversão de um decimal para hexadecimal é preciso relembrar a tabela de valores dos hexadecimais. Decimal Hexa 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 &#8230; <a href="http://boa-ventura.net/2012/01/16/calculo-de-base-16-conversao-decimal-hexadecimal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Para fazer a conversão de um decimal para hexadecimal é preciso relembrar a tabela de valores dos hexadecimais.</p>
<table style="width: 240px;">
<thead>
<tr>
<td>Decimal</td>
<td>Hexa</td>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>6</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>7</td>
</tr>
<tr>
<td>8</td>
<td>8</td>
</tr>
<tr>
<td>9</td>
<td>9</td>
</tr>
<tr>
<td>10</td>
<td>A</td>
</tr>
<tr>
<td>11</td>
<td>B</td>
</tr>
<tr>
<td>12</td>
<td>C</td>
</tr>
<tr>
<td>13</td>
<td>D</td>
</tr>
<tr>
<td>14</td>
<td>E</td>
</tr>
<tr>
<td>15</td>
<td>F</td>
</tr>
</tbody>
</table>
<p>Depois de lembrar isso vamos pegar um decimal qualquer e tentar converte-lo para hexadecimal. Para isso temos que calcular a base 16 do decimal. Vamos então descobrir o hexadcimal do decimal 30.</p>
<pre>30 / 16 = 1
agora pega o resto e olha na tabela qual a representação em hexa  (14 = E)
30 = 1E</pre>
<p>Simples! Divide o seu numero por 16 e o resto é só converter na tabela hexa. Mais um exemplo pra ficar mais claro.</p>
<pre>100 / 16 = 6
resta 4 que convertendo (4 = 4)
100 = 64</pre>
<p>Alguns métodos no java fazem essa conversão. Sempre que o método pedir um parâmetro chamado radix, ele fará este cálculo. Por exemplo, Integer.toString, Byte.parseByte, Integer.valueOf e vários outros.</p>
<p>Aqui vai uma implementação simples de um método para fazer esse cálculo, só para deixar mais claro caso não tenha ficado.</p>
<pre class="brush: actionscript3; gutter: true">	private String decimalToBase16(int decimal) {
		String baseDigits = &quot;0123456789ABCDEF&quot;;
        String tempVal = decimal == 0 ? &quot;0&quot; : &quot;&quot;;
        int mod = 0;

        while(decimal != 0) {
            mod = decimal % 16;
            tempVal = baseDigits.substring(mod, mod + 1) + tempVal;
            decimal = decimal / 16;
        }  

        return tempVal;
    }</pre>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2012/01/16/calculo-de-base-16-conversao-decimal-hexadecimal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listar tabelas do banco de dados</title>
		<link>http://boa-ventura.net/2011/02/04/listar-tabelas-do-banco-de-dados/</link>
		<comments>http://boa-ventura.net/2011/02/04/listar-tabelas-do-banco-de-dados/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 17:00:19 +0000</pubDate>
		<dc:creator>bryan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[metadata]]></category>

		<guid isPermaLink="false">http://boa-ventura.net/?p=213</guid>
		<description><![CDATA[Lista de Tabelas (Banco de dados) No sybase tem um comando chamado sp_help que retorna as tabelas de um schema entre outras informações. Estava tentando rodar este comando com Java mas tive uma feliz lembrança de que existe uma API &#8230; <a href="http://boa-ventura.net/2011/02/04/listar-tabelas-do-banco-de-dados/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h1>Lista de Tabelas (Banco de dados)</h1>
<p>No sybase tem um comando chamado sp_help que retorna as tabelas de um schema entre outras informações. Estava tentando rodar este comando com Java mas tive uma feliz lembrança de que existe uma API do Java com informações do banco (MetaData). A primeira vez que tive contato com essa API foi na faculdade, por isso disse “feliz lembrança”, pois fiquei feliz ao saber que a faculdade serviu para alguma coisa.<br />
Então ai vai o código para retornar essa lista de tabelas. Vale apena estudar a API.</p>
<pre class="brush: java; gutter: true">import java.sql.*;
public class ListaTabelas {
 public static void main(String [] args) {
 Connection con = null;
 try {
 Class.forName(&quot;sun.jdbc.odbc.JdbcOdbcDriver&quot;); //O banco que vai usar
 con = DriverManager.getConnection(&quot;jdbc:odbc:HY_FLAT&quot;);
DatabaseMetaData meta = con.getMetaData();
 ResultSet res = meta.getTables(null, null, null, new String[] {&quot;TABLE&quot;});
 System.out.println(&quot;List of tables: &quot;);
 while (res.next()) {
 System.out.println(
 &quot; &quot;+res.getString(&quot;TABLE_CAT&quot;)
 + &quot;, &quot;+res.getString(&quot;TABLE_SCHEM&quot;)
 + &quot;, &quot;+res.getString(&quot;TABLE_NAME&quot;)
 + &quot;, &quot;+res.getString(&quot;TABLE_TYPE&quot;)
 + &quot;, &quot;+res.getString(&quot;REMARKS&quot;));
 }
 res.close();
 con.close();
 } catch (Exception e) {
 System.err.println(&quot;Exception: &quot;+e.getMessage());
 }
 }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://boa-ventura.net/2011/02/04/listar-tabelas-do-banco-de-dados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

