<?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>Distópico &#187; java</title>
	<atom:link href="http://blog.distopico.org/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.distopico.org</link>
	<description>Na teoria a prática é outra</description>
	<lastBuildDate>Mon, 22 Feb 2010 21:10:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>10˚ Encontro Locaweb &#8211; Problema 2</title>
		<link>http://blog.distopico.org/2008/05/08/10%cb%9a-encontro-locaweb-problema-2/</link>
		<comments>http://blog.distopico.org/2008/05/08/10%cb%9a-encontro-locaweb-problema-2/#comments</comments>
		<pubDate>Thu, 08 May 2008 04:10:49 +0000</pubDate>
		<dc:creator>edgard</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[elpi]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[problema]]></category>

		<guid isPermaLink="false">http://distopico.wordpress.com/?p=7</guid>
		<description><![CDATA[Ae, esse eu resolvi e ganhei os ingressos , está lá em Problema 2. O problema era: Onde fica isso? 67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 [...]]]></description>
			<content:encoded><![CDATA[<p>Ae, esse eu resolvi e ganhei os ingressos <img src='http://blog.distopico.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' title="10˚ Encontro Locaweb   Problema 2" /> , está lá em <a href="http://www.tableless.com.br/elpi-problema-2">Problema 2</a>.</p>
<p>O problema era: Onde fica isso?</p>
<p><code>67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00</code></p>
<p>Primeiro chute de qualquer um, isso são bytes em hexadecimal. Mas não podia ser apenas uma string, dava pra perceber pelos 3 últimos bytes 0. Mas como não conhecia nenhum arquivo que o magic number começava com 67, era a primeira opção. E como estava com o <a href="http://www.eclipse.org">Eclipse</a> com as ferramentas de <a href="http://www.java.com">Java</a> aberto, fui logo para o código (mas devia ter considerado usar uma linguagem de script, <a href="http://groovy.codehaus.org/">Groovy</a> por exemplo seria mais adequado).</p>
<h3>Primeira tentativa:</h3>
<pre class="brush: java">
class Problem2 {
    public static void main(String[] args) {
        String[] input=&quot;67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00&quot;.split(&quot; &quot;);
        byte[] output=new byte[input.length];

        for (int i = 0; i &lt; input.length; i++) {
            output[i] = (byte)Integer.parseInt(input[i], 16);
            System.out.print((char)output[i]);
        }
    }
}
</pre>
<p>E como resultado: </p>
<p><code>gzip:??H?e … e alguns caracteres não representáveis.</code></p>
<p>Mas o gzip era a dica que eu precisava, então vamos para …</p>
<h3>Segunda tentativa:</h3>
<pre class="brush: java">
import java.io.ByteArrayInputStream;
import java.util.zip.GZIPInputStream;

class Problem2 {
	public static void main(String[] args) throws Exception {
		String[] input = &quot;67 7A 69 70 3A 1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00&quot;
				.split(&quot; &quot;);
		byte[] byteRepresentation = new byte[input.length];
		byte[] output = new byte[input.length];
		for (int i = 0; i &lt; input.length; i++) {
			byteRepresentation[i] = (byte) Integer.parseInt(input[i], 16);
		}

		GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(byteRepresentation));
		gis.read(output);

		for (int i = 0; i &lt; output.length; i++) {
			System.out.print((char)output[i]);
		}
		gis.close();
	}
}
</pre>
<p>E o resultado foi:</p>
<pre>
Exception in thread "main" java.io.IOException: Not in GZIP format
	at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:137)
	at java.util.zip.GZIPInputStream.(GZIPInputStream.java:58)
	at java.util.zip.GZIPInputStream.(GZIPInputStream.java:68)
	at Problem2.main(a.java:14)
</pre>
<p>Droga, não funcionou o gzip, pesquisando um pouco vi que o gzip do começo não era nem header nem magic number do formato, então resolvi tirar esse pedaço e fui para a …</p>
<h3>Terceira tentativa:</h3>
<pre class="brush: java">
import java.io.ByteArrayInputStream;
import java.util.zip.GZIPInputStream;

class Problem2 {
	public static void main(String[] args) throws Exception {
		// Tirei os 5 primeiros bytes
		String[] input = &quot;1F 8B 08 08 D0 11 1B 48 02 FF 65 00 CB 28 29 29 B0 D2 D7 CF 4D 2C 28 D6 4B CF CF 4F CF 49 D5 4B CE CF D5 4B 2A 02 0B D9 E7 E4 D8 EA 1A 19 E9 59 1A 1A 99 9B 98 EA E8 9A 18 EB 19 19 98 19 1B 02 00 29 22 3E 34 36 00 00 00&quot;
				.split(&quot; &quot;);
		byte[] byteRepresentation = new byte[input.length];
		byte[] output = new byte[input.length];
		for (int i = 0; i &lt; input.length; i++) {
			byteRepresentation[i] = (byte) Integer.parseInt(input[i], 16);
		}

		GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(byteRepresentation));
		gis.read(output);

		for (int i = 0; i &lt; output.length; i++) {
			System.out.print((char)output[i]);
		}
		gis.close();
	}
}
</pre>
<p>E agora, finalmente.</p>
<p><code><a href="http://maps.google.com.br/maps?ll=-22.912745,-43.20631">http://maps.google.com.br/maps?ll=-22.912745,-43.20631</a></code></p>
<p>Onde era isso? Meu primeiro impulso foi responder, estação do metrô Estácio, mas em tempo lembrei que tinha um centro de convenções lá perto. E assim ganhei os ingressos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.distopico.org/2008/05/08/10%cb%9a-encontro-locaweb-problema-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached (user agent is rejected)
Database Caching 8/15 queries in 0.003 seconds using memcached

Served from: blog.distopico.org @ 2010-09-08 03:00:35 -->