<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blog do Tiago</title>
	
	<link>http://blog.tiagomadeira.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 29 Aug 2010 14:10:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tiagomadeira" /><feedburner:info uri="tiagomadeira" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license><image><link>http://blog.tiagomadeira.com</link><url>http://feeds2.feedburner.com/~fc/tiagomadeira?bg=99CCCC&amp;fg=222222&amp;anim=0</url><title>Tiago Madeira</title></image><feedburner:browserFriendly>Isto é um feed XML. Mostra meus últimos posts no blog e é feito para ser visto por um leitor de news.</feedburner:browserFriendly><item>
		<title>fluxbox-ddate no Gentoo</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/SilmtL6EWDo/</link>
		<comments>http://blog.tiagomadeira.com/fluxbox-ddate-no-gentoo/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 14:05:07 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[ddate]]></category>
		<category><![CDATA[fluxbox]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[portage]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=699</guid>
		<description><![CDATA[Criei um ebuild para o Fluxbox com uma USE flag “ddate” baseado no fluxbox-1.1.1-r2 (que é o último ebuild no Portage neste exato momento). Usando ele, é possível ter o calendário santo-discordiano no Fluxbox do Gentoo. Siga os passos abaixo para ter Fluxbox com suporte a ddate no seu Gentoo. Baixando o ebuild e colocando [...]]]></description>
			<content:encoded><![CDATA[<p>Criei um ebuild para o Fluxbox com uma USE flag “ddate” baseado no fluxbox-1.1.1-r2 (que é o último ebuild no Portage neste exato momento). Usando ele, é possível ter <a href="http://blog.tiagomadeira.com/calendario-santo-discordiano-no-fluxbox/">o calendário santo-discordiano no Fluxbox do Gentoo</a>.</p>
<p>Siga os passos abaixo para ter Fluxbox com suporte a ddate no seu Gentoo.</p>
<h3>Baixando o ebuild e colocando ele num overlay</h3>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span> <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>blog.tiagomadeira.com<span style="color: #000000; font-weight: bold;">/</span>portage-fluxbox-1.1.1-0.tar.bz2
<span style="color: #000000; font-weight: bold;">%</span> <span style="color: #c20cb9; font-weight: bold;">su</span>
<span style="color: #000000; font-weight: bold;">%</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>portage<span style="color: #000000; font-weight: bold;">/</span>x11-wm
<span style="color: #000000; font-weight: bold;">%</span> <span style="color: #c20cb9; font-weight: bold;">tar</span> xjvf portage-fluxbox-1.1.1-0.tar.bz2 <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>portage<span style="color: #000000; font-weight: bold;">/</span>x11-wm</pre></div></div>

<h3>Modificando o /etc/make.conf pra adicionar suporte ao overlay</h3>
<p>Abra com seu editor preferido (e obviamente como root) o /etc/make.conf e adicione ao final dele:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PORTDIR_OVERLAY</span>=<span style="color: #ff0000;">&quot;/usr/local/portage&quot;</span></pre></div></div>

<p>Depois disso é necessário rodar um <tt>emerge --sync</tt> (ou <tt>eix-sync</tt> se você usa o eix :))</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span> emerge <span style="color: #660033;">--sync</span></pre></div></div>

<h3>ACCEPT_KEYWORDS e USE flag</h3>
<p>Marquei o pacote como instável. Para usar, se seu /etc/make.conf não tem <em>ACCEPT_KEYWORDS=&#8221;~amd64&#8243;</em> (ou <em>~suaarquitetura</em> se você não usa amd64), edite (criando, caso não exista) o arquivo <tt>/etc/portage/package.keywords</tt> adicionando:</p>
<pre>=x11-wm/fluxbox-1.1.1-r10 ~amd64</pre>
<p>(substitua <em>~amd64</em> por <em>~suaarquitetura</em>)</p>
<p>Se você também não tem uma USE flag “ddate” no /etc/make.conf, é necessário editar o arquivo <tt>/etc/portage/package.use</tt> (também crie se não existir), adicionando:</p>
<pre>x11-wm/fluxbox ddate</pre>
<h3>E agora?</h3>
<p>Basta instalar o Fluxbox usando o emerge, como você faria com qualquer pacote normal:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span> emerge <span style="color: #660033;">-av</span> fluxbox
These are the packages that would be merged, <span style="color: #000000; font-weight: bold;">in</span> order:
&nbsp;
Calculating dependencies... <span style="color: #000000; font-weight: bold;">done</span><span style="color: #000000; font-weight: bold;">!</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>ebuild   U   <span style="color: #7a0874; font-weight: bold;">&#93;</span> x11-wm<span style="color: #000000; font-weight: bold;">/</span>fluxbox-1.1.1-r10  <span style="color: #007800;">USE</span>=<span style="color: #ff0000;">&quot;ddate imlib nls slit toolbar truetype vim-syntax -gnome -newmousefocus -xinerama&quot;</span> <span style="color: #000000;">0</span> kB <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>(note que a versão é 1.1.1-r10 e tem a USE flag <strong>ddate</strong>)</p>
<p>Ele não baixa o pacote inteiro do ddate, mas apenas aplica, além dos patches do Gentoo, um pequeno patch (de umas 40 linhas) que altera o ClockTool.cc.</p>
<p><a href="http://blog.tiagomadeira.com/wp-content/uploads/2010/08/a2.png"><img src="http://blog.tiagomadeira.com/wp-content/uploads/2010/08/a2.png" alt="Screenshot do emerge" width="483" height="338" class="alignnone size-full wp-image-700" /></a></p>
<p>Divirta-se!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=SilmtL6EWDo:cRbHvzGptl4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=SilmtL6EWDo:cRbHvzGptl4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=SilmtL6EWDo:cRbHvzGptl4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=SilmtL6EWDo:cRbHvzGptl4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=SilmtL6EWDo:cRbHvzGptl4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=SilmtL6EWDo:cRbHvzGptl4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=SilmtL6EWDo:cRbHvzGptl4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=SilmtL6EWDo:cRbHvzGptl4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/SilmtL6EWDo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/fluxbox-ddate-no-gentoo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/fluxbox-ddate-no-gentoo/</feedburner:origLink></item>
		<item>
		<title>Calendário santo-discordiano no Fluxbox</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/kfx9Ovq8Xv0/</link>
		<comments>http://blog.tiagomadeira.com/calendario-santo-discordiano-no-fluxbox/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 03:00:55 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[ddate]]></category>
		<category><![CDATA[discordianismo]]></category>
		<category><![CDATA[fluxbox]]></category>
		<category><![CDATA[fnord]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[x]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=680</guid>
		<description><![CDATA[Acabei de implementar o calendário santo-discordiano no Fluxbox 1.1.1 (última versão). Link para download do código: fluxbox-ddate-1.1.1-0.tar.bz2 Se você usa Arch Linux, não precisa baixar e compilar manualmente. Basta usar o pkgbuild que o Rev. Beraldo fez para o AUR: aur.archlinux.org/packages.php?ID=40364. Se você usa Gentoo, não precisa baixar e compilar manualmente. Basta colocar o ebuild [...]]]></description>
			<content:encoded><![CDATA[<p>Acabei de implementar o <a href="http://www.cabaladada.org/discordiapedia/Calend%C3%A1rio_Santo-Discordiano">calendário santo-discordiano</a> no Fluxbox 1.1.1 (última versão).</p>
<p><strong>Link para download do código:</strong> <a href="http://blog.tiagomadeira.com/fluxbox-ddate-1.1.1-0.tar.bz2">fluxbox-ddate-1.1.1-0.tar.bz2</a></p>
<p>Se você usa <strong>Arch Linux</strong>, não precisa baixar e compilar manualmente. Basta usar o pkgbuild que o <a href="http://www.cabaladada.org/">Rev. Beraldo</a> fez para o AUR: <a href="http://aur.archlinux.org/packages.php?ID=40364">aur.archlinux.org/packages.php?ID=40364</a>.</p>
<p>Se você usa <strong>Gentoo</strong>, não precisa baixar e compilar manualmente. Basta colocar o ebuild que eu fiz num overlay: <a href="http://blog.tiagomadeira.com/fluxbox-ddate-no-gentoo/">fluxbox-ddate no Gentoo</a>.</p>
<p><small>Versões compiladas .deb, .rpm, .tgz etc. e <del>ebuilds</del>, <del>pkgbuilds</del> etc. são bem vindos! Me passem que eu coloco um link aqui!</small></p>
<h3>Como baixar e descompactar</h3>
<p>Como você faria com qualquer outro pacote .tar.bz2&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>blog.tiagomadeira.com<span style="color: #000000; font-weight: bold;">/</span>fluxbox-ddate-1.1.1-0.tar.bz2
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xjvf fluxbox-ddate-1.1.1-0.tar.bz2
$ <span style="color: #7a0874; font-weight: bold;">cd</span> fluxbox-ddate-1.1.1-<span style="color: #000000;">0</span></pre></div></div>

<h3>Como compilar</h3>
<p>Versão simples:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ .<span style="color: #000000; font-weight: bold;">/</span>configure
$ <span style="color: #c20cb9; font-weight: bold;">make</span>
$ <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>Versão complicada:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CFLAGS</span>=-O2 <span style="color: #660033;">-march</span>=native -msse4.1
$ <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CXXFLAGS</span>=<span style="color: #007800;">$CFLAGS</span>
$ .<span style="color: #000000; font-weight: bold;">/</span>configure <span style="color: #660033;">--prefix</span>=<span style="color: #000000; font-weight: bold;">/</span>usr <span style="color: #660033;">--build</span>=x86_64-pc-linux-gnu <span style="color: #660033;">--host</span>=x86_64-pc-linux-gnu <span style="color: #660033;">--enable-nls</span> <span style="color: #660033;">--disable-xinerama</span> <span style="color: #660033;">--enable-xft</span> <span style="color: #660033;">--disable-gnome</span> <span style="color: #660033;">--enable-imlib2</span> <span style="color: #660033;">--enable-slit</span> <span style="color: #660033;">--enable-toolbar</span> <span style="color: #660033;">--sysconfdir</span>=<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>X11<span style="color: #000000; font-weight: bold;">/</span>fluxbox
$ <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #660033;">-j3</span>
$ <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>Encontre seu meio termo (ou use a simples) e divirta-se!</p>
<h3>Como iniciar um Fluxbox</h3>
<p>Inicie o X e peça pra ele abrir a versão que você compilou do Fluxbox da seguinte maneira:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ startx <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>fluxbox <span style="color: #660033;">--</span> :<span style="color: #000000;">1</span></pre></div></div>

<p>(Lembre-se de mudar /usr/local para o <tt>--prefix</tt> que usou no ./configure)</p>
<p>Esta linha funciona dentro de uma sessão do X (abre outra), por causa do <tt>-- :1</tt>.</p>
<h3>Como usar a data discordiana</h3>
<p>Clique com a tecla direita no relógio do seu Fluxbox e <strong>Edit clock format</strong>. Se você usar um formato de data convencional, do falso calendário (como deve estar usando no momento), nada de especial acontecerá. O segredo está no <strong>|fnord|</strong>.</p>
<p>Quando você coloca um <strong>|fnord|</strong> no formato, o Fluxbox interpretará tudo que veio antes como formato de data discordiano.</p>
<p><small>(Para escolher o formato de data ideal, você pode digitar <strong>man ddate</strong> num terminal.)</small></p>
<p><em>Exemplos de uso:</em></p>
<ul>
<li>Formato: <strong>%c</strong> → Saída: <strong>Sat 28 Aug 2010 11:50:26 PM BRT</strong></li>
<li>Formato: <strong>%e of %B of %Y|fnord|</strong> → Saída: <strong>21st of Bureaucracy of 3176</strong></li>
<li>Formato: <strong>%d %b %Y|fnord|, %H:%M:%S</strong> → Saída: <strong>21 Bcy 3176, 23:50:26</strong></li>
<li>Formato: <strong>%.|fnord|</strong> → Saída: <strong>All Hail Discordia!</strong></li>
</ul>
<h3>Dúvidas, sugestões?</h3>
<p>Contate a glândula pineal.</p>
<h3>Como funciona o código?</h3>
<p>O Fluxbox usa a função <tt>strftime</tt> para formatar a data do relógio. Isso acontece na linha 274 do arquivo src/ClockTool.cc. Modifiquei este trecho do código adicionando cerca de 23 linhas que separam a string do formato de data no <strong>|fnord|</strong> e passam o que vem antes dele como parâmetro para uma chamada de sistema pro <tt>ddate</tt> (sim, de fato pra próxima versão é melhor copiar o código do ddate ou reimplementar pra não ter este overhead) e o que vem depois continua indo pro <tt>strftime</tt>.</p>
<p>Ficou assim:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">255</span><span style="color: #008000;">&#93;</span>, u<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">255</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>s, m_timeformat<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c_str<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>t <span style="color: #000080;">=</span> <span style="color: #0000dd;">strstr</span><span style="color: #008000;">&#40;</span>s, <span style="color: #FF0000;">&quot;|fnord|&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
time_string_len <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>t <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #000040;">*</span>t <span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span>u, <span style="color: #FF0000;">&quot;ddate +'%s'&quot;</span>, s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">FILE</span> <span style="color: #000040;">*</span>ddate <span style="color: #000080;">=</span> popen<span style="color: #008000;">&#40;</span>u, <span style="color: #FF0000;">&quot;r&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">fgets</span><span style="color: #008000;">&#40;</span>time_string, <span style="color: #0000dd;">255</span>, ddate<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
		time_string_len <span style="color: #000080;">=</span> <span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>time_string<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		time_string<span style="color: #008000;">&#91;</span><span style="color: #000040;">--</span>time_string_len<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
		<span style="color: #0000dd;">fclose</span><span style="color: #008000;">&#40;</span>ddate<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	t<span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">7</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span>
	t <span style="color: #000080;">=</span> s<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
time_string_len<span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">strftime</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">&amp;</span>time_string<span style="color: #008000;">&#91;</span>time_string_len<span style="color: #008000;">&#93;</span>, <span style="color: #0000dd;">255</span> <span style="color: #000040;">-</span> time_string_len, t, time_type<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div>

<h3>Known bugs</h3>
<ol>
<li>Colocar &#8216; (aspas simples) no lado esquerdo do |fnord| faz com que a data discordiana não apareça.</li>
<li>Requer <a href="http://www.kernel.org/pub/linux/utils/util-linux-ng/">util-linux-ng</a> e faz uma chamada de sistema ao <em>ddate</em> uma vez por segundo.</li>
<li>Não trabalha ainda com <a href="http://www.cabaladada.org/discordiapedia/Horas_M%C3%A9tricas">horas métricas</a>.</li>
<li><em>&#8230; me informe se achar mais algum!</em></li>
</ol>
<h3>Screenshots</h3>
<style type="text/css"> img.screenshot { border:solid 5px #ccc; } </style>
<p><img src="http://blog.tiagomadeira.com/wp-content/uploads/2010/08/a1.png" alt="Screenshot 0" width="258" height="92" class="screenshot alignnone size-full wp-image-692" /></p>
<p><a href="http://blog.tiagomadeira.com/wp-content/uploads/2010/08/b.png"><img src="http://blog.tiagomadeira.com/wp-content/uploads/2010/08/b.png" alt="Screenshot 1" width="247" height="83" class="screenshot alignnone size-full wp-image-693" /></a></p>
<p><a href="http://blog.tiagomadeira.com/wp-content/uploads/2010/08/c.png"><img src="http://blog.tiagomadeira.com/wp-content/uploads/2010/08/c.png" alt="Screenshot 2" width="237" height="67" class="screenshot alignnone size-full wp-image-694" /></a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=kfx9Ovq8Xv0:DrWRJ7uGcRU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=kfx9Ovq8Xv0:DrWRJ7uGcRU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=kfx9Ovq8Xv0:DrWRJ7uGcRU:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=kfx9Ovq8Xv0:DrWRJ7uGcRU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=kfx9Ovq8Xv0:DrWRJ7uGcRU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=kfx9Ovq8Xv0:DrWRJ7uGcRU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=kfx9Ovq8Xv0:DrWRJ7uGcRU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=kfx9Ovq8Xv0:DrWRJ7uGcRU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/kfx9Ovq8Xv0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/calendario-santo-discordiano-no-fluxbox/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/calendario-santo-discordiano-no-fluxbox/</feedburner:origLink></item>
		<item>
		<title>Despoema nauseabundo</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/zgTPQpFdx2k/</link>
		<comments>http://blog.tiagomadeira.com/despoema-nauseabundo/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 15:55:44 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Futilidades]]></category>
		<category><![CDATA[náusea]]></category>
		<category><![CDATA[recursão]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=666</guid>
		<description><![CDATA[Inspirado por esse tuíte. A ignorância me dá náuseas. A ignorância de pessoas que se dão ao luxo de chamar outros de ignorantes me dá náuseas. A ignorância de pessoas que se dão ao luxo de chamar de ignorantes as pessoas que se dão ao luxo de chamar outros de ignorantes me dá náuseas. A [...]]]></description>
			<content:encoded><![CDATA[<p><small>Inspirado por <a href="http://twitter.com/_julinha/status/19967097088">esse tuíte</a>.</small></p>
<p>A ignorância me dá náuseas.</p>
<p>A ignorância de pessoas que se dão ao luxo de chamar outros de ignorantes me dá náuseas.</p>
<p>A ignorância de pessoas que se dão ao luxo de chamar de ignorantes as pessoas que se dão ao luxo de chamar outros de ignorantes me dá náuseas.</p>
<p>A ignorância de pessoas que se dão ao luxo de chamar de ignorantes as pessoas que se dão ao luxo de chamar de ignorantes as pessoas que se dão ao luxo de chamar outros de ignorantes me dá náuseas.</p>
<p>A ignorância de pessoas que se dão ao luxo de chamar de ignorantes as pessoas que se dão ao luxo de chamar de ignorantes as pessoas que se dão ao luxo de chamar de ignorantes as pessoas que se dão ao luxo de chamar outros de ignorantes me dá náuseas.</p>
<p><em>Ad infinitum.</em></p>
<p><small><strong>PS:</strong> Esse post (como a ignorância do autor desse blog) também me dá náuseas.</small></p>
<p><small><strong>PPS:</strong> Consultei o Houaiss duas vezes pra escrever o título desse post: a primeira pra confirmar que “despoema” <strong>não</strong> existe, a segunda pra confirmar que “nauseabundo” existe.</small></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=zgTPQpFdx2k:sBuoBdRBb_E:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=zgTPQpFdx2k:sBuoBdRBb_E:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=zgTPQpFdx2k:sBuoBdRBb_E:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=zgTPQpFdx2k:sBuoBdRBb_E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=zgTPQpFdx2k:sBuoBdRBb_E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=zgTPQpFdx2k:sBuoBdRBb_E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=zgTPQpFdx2k:sBuoBdRBb_E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=zgTPQpFdx2k:sBuoBdRBb_E:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/zgTPQpFdx2k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/despoema-nauseabundo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/despoema-nauseabundo/</feedburner:origLink></item>
		<item>
		<title>Como resolver o problema do transporte público lotado em São Paulo</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/KO5HS15Rk0g/</link>
		<comments>http://blog.tiagomadeira.com/como-resolver-o-problema-do-transporte-publico-lotado-em-sao-paulo/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 22:21:03 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Cotidiano]]></category>
		<category><![CDATA[ônibus]]></category>
		<category><![CDATA[São Paulo]]></category>
		<category><![CDATA[transporte]]></category>
		<category><![CDATA[transporte público]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=655</guid>
		<description><![CDATA[Por Anônimo bêbado falando sozinho num 917H lotado, sexta-feira às 18:30 Precisa de um Bin Laden. É o único jeito. Tem que explodir tudo. Explode essa gente que acaba o problema. Não&#8230; não precisa. Tem só que devolver. Devolve todo mundo. Quem é de Minas, quem é do Nordeste. Só fica aqui quem nasceu aqui. [...]]]></description>
			<content:encoded><![CDATA[<p><small>Por <em>Anônimo bêbado falando sozinho num 917H lotado</em>, sexta-feira às 18:30</small></p>
<p>Precisa de um Bin Laden. É o único jeito. Tem que explodir tudo. Explode essa gente que acaba o problema.</p>
<p>Não&#8230; não precisa. Tem só que devolver. Devolve todo mundo. Quem é de Minas, quem é do Nordeste. Só fica aqui quem nasceu aqui. Não ia sobrar nem um milhão.</p>
<p>Devolve tudo! Faz exame de DNA pra confirmar quem nasceu aqui mesmo. Não vai sobrar nem um milhão.</p>
<p>Se eu fosse vereador, ou prefeito, ou alguém que pode mandar em alguma coisa, devolvia todo mundo!</p>
<h3>Epílogo</h3>
<p><em>“Ah, aleluia! Tinha um homem falando besteira aqui. Pior que ônibus lotado é essa gente gritando.”</em> (mulher mal-humorada ao telefone, após o autor do texto descer)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=KO5HS15Rk0g:9ufuMNaS3gk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=KO5HS15Rk0g:9ufuMNaS3gk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=KO5HS15Rk0g:9ufuMNaS3gk:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=KO5HS15Rk0g:9ufuMNaS3gk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=KO5HS15Rk0g:9ufuMNaS3gk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=KO5HS15Rk0g:9ufuMNaS3gk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=KO5HS15Rk0g:9ufuMNaS3gk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=KO5HS15Rk0g:9ufuMNaS3gk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/KO5HS15Rk0g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/como-resolver-o-problema-do-transporte-publico-lotado-em-sao-paulo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/como-resolver-o-problema-do-transporte-publico-lotado-em-sao-paulo/</feedburner:origLink></item>
		<item>
		<title>Spivak sobre definições e teoremas</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/_dLGwDaTmpI/</link>
		<comments>http://blog.tiagomadeira.com/spivak-sobre-definicoes-e-teoremas/#comments</comments>
		<pubDate>Mon, 24 May 2010 23:47:14 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Matemática]]></category>
		<category><![CDATA[calculus on manifolds]]></category>
		<category><![CDATA[definition]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[spivak]]></category>
		<category><![CDATA[stokes]]></category>
		<category><![CDATA[theorem]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=646</guid>
		<description><![CDATA[“The reader probably suspects that the modern Stokes&#8217; Theorem is at least as difficult as the classical theorems derived from it. On the contrary, it is a very simple consequence of yet another version of Stokes&#8217; Theorem; this very abstract version is the final and main result of Chapter 4. It is entirely reasonable to [...]]]></description>
			<content:encoded><![CDATA[<p>“The reader probably suspects that the modern Stokes&#8217; Theorem is at least as difficult as the classical theorems derived from it. On the contrary, it is a very simple consequence of yet another version of Stokes&#8217; Theorem; this very abstract version is the final and main result of Chapter 4. It is entirely reasonable to suppose that the difficulties so far avoided must be hidden here. Yet the proof of this theorem is, in the mathematician&#8217;s sense, an utter triviality &#8212; a straight-forward computation. On the other hand, even the statement of this triviality cannot be understood without a horde of difficult definitions from Chapter 4. <strong>There are good reasons why the theorems should all be easy and the definitions hard.</strong> As the evolution of Stokes&#8217; Theorem revealed, a single simple principle can masquerade as several difficult results; the proofs of many theorems involve merely stripping away the disguise. The definitions, on the other hand, serve a twofold purpose: they are rigorous replacements for vague notions, and machinery for elegant proofs.”</p>
<p><small><strong>Michael Spivak</strong>, prefácio de “Calculus on Manifolds”.</small></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=_dLGwDaTmpI:IP1Fo454DS4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=_dLGwDaTmpI:IP1Fo454DS4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=_dLGwDaTmpI:IP1Fo454DS4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=_dLGwDaTmpI:IP1Fo454DS4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=_dLGwDaTmpI:IP1Fo454DS4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=_dLGwDaTmpI:IP1Fo454DS4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=_dLGwDaTmpI:IP1Fo454DS4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=_dLGwDaTmpI:IP1Fo454DS4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/_dLGwDaTmpI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/spivak-sobre-definicoes-e-teoremas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/spivak-sobre-definicoes-e-teoremas/</feedburner:origLink></item>
		<item>
		<title>Parceria USP-Microsoft?</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/FCPI7PChQLU/</link>
		<comments>http://blog.tiagomadeira.com/parceria-usp-microsoft/#comments</comments>
		<pubDate>Sat, 01 May 2010 16:55:32 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[ballmer]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[São Paulo]]></category>
		<category><![CDATA[telecentro]]></category>
		<category><![CDATA[universidade]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=638</guid>
		<description><![CDATA[A notícia da visita de Steve Ballmer à USP me preocupou, em especial seu último parágrafo: Para Massambani, a Microsoft pode acelerar os processos e alavancar os projetos já existentes no desenvolvimento de processos de criatividade na área digital, laboratório de criatividade e inovação. “A Microsoft pode ajudar a USP em projetos relacionados com infraestrutura, [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www4.usp.br/index.php/tecnologia/18862-presidente-da-microsoft-visita-usp-e-ministra-palestra-a-comunidade-universitaria">notícia da visita de Steve Ballmer à USP</a> me preocupou, em especial seu último parágrafo:</p>
<blockquote><p>Para Massambani, a Microsoft pode acelerar os processos e alavancar os projetos já existentes no desenvolvimento de processos de criatividade na área digital, laboratório de criatividade e inovação. “A Microsoft pode ajudar a USP em projetos relacionados com infraestrutura, suporte, educação, sociocultural, servindo como popularização da ciência, inclusão social e digital. As duas podem cooperar para o desenvolvimento de pesquisas, capital intelectual e responsabilidade social”, considera.</p></blockquote>
<p>A Microsoft tem esse costume (que o Sérgio Amadeu chama de “prática de traficante”) de oferecer a governos, universidades e mesmo a professores individualmente dinheiro, laboratórios, computadores e licenças do seu sistema operacional com esse discurso de inclusão digital e educação; criar dependentes.</p>
<p>Inclusão digital e social com um software que custa mais que o salário mínimo não é inclusão. Educação sem acesso ao código não é educação; é como ensinar a fórmula da soma de progressão aritmética sem permitir que o estudante saiba de onde ela vem ou criar cozinheiros ensinando a colocar lasanha da Sadia no micro-ondas. Popularização da ciência? Que ciência? A única popularização que vejo é da marca de uma empresa internacionalmente conhecida por sua política imperialista e por monopólio.</p>
<p>Desenvolvimento de pesquisa <ins>pra terceiros</ins> é capital intelectual <ins>desperdiçado</ins>. Por isso, essa parceria é o que eu chamo de <ins>ir</ins>responsabilidade social. É um erro uma universidade pública abrir as portas pra esse tipo de negócio que deseduca, desvirtua e vicia a sociedade.</p>
<p>Se a Microsoft quer tanto assim um mundo melhor e leva a sério seu próprio discurso de querer ver a população de São Paulo incluída digitalmente, sugiro que doe dinheiro aos telecentros paulistas sem esperar nada em troca.</p>
<p><small>Já tinha escrito <a href="http://adolfont.posterous.com/interessante-sequencia-de-tuites-de-tmadeira">um resumo disso</a> no <a href="http://twitter.com/tmadeira">Twitter</a>, mas achei conveniente repetir aqui.</small></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=FCPI7PChQLU:3F4pn3cVhK0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=FCPI7PChQLU:3F4pn3cVhK0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=FCPI7PChQLU:3F4pn3cVhK0:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=FCPI7PChQLU:3F4pn3cVhK0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=FCPI7PChQLU:3F4pn3cVhK0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=FCPI7PChQLU:3F4pn3cVhK0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=FCPI7PChQLU:3F4pn3cVhK0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=FCPI7PChQLU:3F4pn3cVhK0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/FCPI7PChQLU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/parceria-usp-microsoft/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/parceria-usp-microsoft/</feedburner:origLink></item>
		<item>
		<title>Boa nova</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/vAHVkIyxh8Y/</link>
		<comments>http://blog.tiagomadeira.com/boa-nova/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 05:48:27 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Pensamentos aleatórios]]></category>
		<category><![CDATA[bcc]]></category>
		<category><![CDATA[burocracia]]></category>
		<category><![CDATA[Ciência da Computação]]></category>
		<category><![CDATA[congregação]]></category>
		<category><![CDATA[fuvest]]></category>
		<category><![CDATA[ime]]></category>
		<category><![CDATA[usp]]></category>
		<category><![CDATA[vestibular]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=611</guid>
		<description><![CDATA[Resolvi fazer Ciência da Computação há muito tempo. Faz tanto tempo que eu não lembro quando foi, mas acho que eu tinha uns oito anos. Minha única certeza é que eu não fazia ideia do que era o curso (mas isso não importa &#8212; hoje acho que escolhi estudar uma das coisas mais legais que [...]]]></description>
			<content:encoded><![CDATA[<p>Resolvi fazer Ciência da Computação há muito tempo. Faz tanto tempo que eu não lembro quando foi, mas acho que eu tinha uns oito anos. Minha única certeza é que eu não fazia ideia do que era o curso (mas isso não importa &#8212; hoje acho que escolhi estudar uma das coisas mais legais que existem).</p>
<p>O tempo passou e cogitei fazer outras faculdades, mas nunca seriamente. Começou o 3º ano do Ensino Médio e comparei os currículos de <acronym title="Universidade Federal de Santa Catarina">UFSC</acronym>, <acronym title="Universidade Estadual de Campinas">UNICAMP</acronym>, <acronym title="Instituto de Ciências Matemáticas e Computação da Universidade de São Paulo">ICMC-USP</acronym> e <acronym title="Instituto de Matemática e Estatística da Universidade de São Paulo">IME-USP</acronym> pra decidir que curso escolher. Ordenei-os (por motivos teóricos) da seguinte forma:</p>
<ol>
<li>IME-USP</li>
<li>ICMC-USP</li>
<li>IC-UNICAMP (engenharia)</li>
<li>UFSC</li>
</ol>
<p>Desde lá minha meta foi entrar no lugar onde hoje, felizmente, estou. Mas não foi fácil.</p>
<p>Passei o último ano do Ensino Médio <del>namorando</del> <ins>estudando</ins>, li os <del>resumos dos</del> livros exigidos e quando chegou novembro&#8230; não passei na primeira fase do vestibular da <acronym title="Fundação Universitária para o Vestibular">Fuvest</acronym>.</p>
<p><span style="color:#999;">(Felizmente passei na UFSC e vivi um ano sensacional. Morava do lado da Universidade, fiz grandes amigos, conheci professores do mais alto nível, me classifiquei pra final mundial da Maratona de Programação e aprendi mais Matemática do que em toda a vida. Mas nem todos têm a mesma sorte.)</span></p>
<p>O vestibular da USP usa um <del>terrível</del> sistema baseado em carreiras.</p>
<p><strong>Def.</strong> Carreiras são conjuntos disjuntos não-vazios de cursos universitários que em geral tem algo em comum (e.g., uma carreira pode ter <em>Engenharia de Produção</em> e <em>Ciência da Computação</em> porque ambos são cursos pra seres humanos &#8212; não sei se poderia haver alguma outra razão mais específica, sem ser através da <a href="http://principiadiscordia.com/book/23.php">Lei dos Cinco</a>, mas creio que não).</p>
<p>No sistema da USP o candidato escolhe uma carreira, cursos que gostaria de fazer nessa carreira e sua ordem de preferência.</p>
<p>Passam pra segunda fase do vestibular três vezes o número de vagas disponíveis na carreira. Depois da segunda fase, os candidatos são ordenados de acordo com a nota da segunda fase e roda-se um algoritmo assim:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> pos <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> tem_vagas_sobrando<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> pos <span style="color: #000080;">&lt;</span> n<span style="color: #008080;">;</span> pos<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> opcao <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> opcao <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">4</span><span style="color: #008080;">;</span> opcao<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>tem_vagas_no_curso<span style="color: #008000;">&#40;</span>pessoa<span style="color: #008000;">&#91;</span>pos<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">opcao</span><span style="color: #008000;">&#91;</span>opcao<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
            da_vaga<span style="color: #008000;">&#40;</span>pessoa<span style="color: #008000;">&#91;</span>pos<span style="color: #008000;">&#93;</span>, pessoa<span style="color: #008000;">&#91;</span>pos<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">opcao</span><span style="color: #008000;">&#91;</span>opcao<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
            <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
        <span style="color: #008000;">&#125;</span>  
    <span style="color: #008000;">&#125;</span>  
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><small>Estava com sono e dificuldade de pensar quando postei. Outra hora tento passar pra uma língua menos nerd.</small></p>
<p>São os institutos que decidem em que carreira seus cursos vão entrar e o negócio fica uma bagunça. A maioria das carreiras têm cursos iguais com diferença apenas de período (diurno e noturno), mas há carreiras de institutos inteiros (a FEA, por exemplo, tem apenas uma carreira onde coloca Economia [diurno e noturno], Administração [diurno e noturno], Ciências contábeis [diurno e noturno] e Bacharelado em Ciências Atuariais), de cursos iguais em diferentes campi (na carreira de Direito, por exemplo, o candidato pode escolher entre o Largo São Francisco e Ribeirão Preto) e, por fim, carreiras como a minha: <strong>Engenharia na Escola Politécnica e Computação</strong>, que oferece (versão Fuvest 2010):</p>
<ul>
<li>Engenharia Civil e Engenharia Ambiental (poli)</li>
<li>Engenharia Elétrica (ênfases: Automação e controle, energia e automação elétricas, sistemas eletrônicos, telecomunicações) (poli)</li>
<li>Engenharia Mecânica e Engenharia Naval (poli)</li>
<li>Engenharia Química, Engenharia Metalúrgica, Engenharia de Materiais, Engenharia de Minas e Engenharia de Petróleo (poli)</li>
<li>Engenharia de Computação e Engenharia Elétrica (ênfase Computação) (poli)</li>
<li>Engenharia Mecânica &#8211; Automação e Sistemas (Mecatrônica) (poli)</li>
<li>Engenharia de Produção (poli)</li>
<li><strong>Bacharelado em Ciência da Computação (IME!)</strong></li>
</ul>
<p>Reza a lenda que essa era uma carreira que tinha todos os cursos que classificam como Exatas (uma classificação ridícula, na minha opinião) e todos eles foram saindo, até que no meu ano sobraram só as engenharias da Poli e o BCC.</p>
<p>(E eu prefiro acreditar nisso porque me doeria acreditar o contrário &#8212; aceitar que em certo momento da História algum <del>idiota</del> <ins>professor</ins> decidiu que Ciência da Computação tem mais a ver com Engenharia Ambiental do que com Matemática.)</p>
<p>Agora veja o problema: Em um ano aqui, aprendi que trabalhar em bancos está na moda em São Paulo. Como se formar em engenharia na Escola Politécnica é garantia desse nobre emprego, fazem um monte de cursinhos (e turmas especiais neles) voltados a <a href="http://www.youtube.com/watch?v=M_bvT-DGcWw"><del>destruir o cérebro das</del> <ins>ensinar</ins> crianças</a> <small>(o link é bom; clique!)</small> pra <del>jihad</del> <ins>passar na Fuvest</ins>. O resultado é que um catarinense que quer entrar no Bacharelado em Ciência da Computação não consegue nem passar da primeira fase do concurso. Se passa pra segunda fase, ainda assim precisa competir com estudantes que colocaram o BCC na quarta opção para não decepcionar os pais e seu ego caso não passem nas três engenharias que desejam.</p>
<p>E não para por aí.</p>
<p>O BCC abre 50 vagas por ano e neste ano matricularam-se 31 calouros. Os alunos da turma (para a qual dou monitoria da disciplina <em>Introdução à Computação</em>) me contaram que tem 26 pessoas indo assistir as aulas. Enquanto há jovens no Brasil inteiro querendo entrar neste curso, que considero um dos melhores (se não o melhor) do país, a sala da turma de 2010 está com <strong>metade de sua capacidade</strong> porque gente que queria fazer engenharia marcou a opção do BCC e não fez a matrícula.</p>
<p>A solução imediata é óbvia: tirar o Bacharelado em Ciência da Computação da carreira da Escola Politécnica.</p>
<p>Felizmente, não sou o único que penso isso. Então, após todo esse preâmbulo, informo em primeira mão: a Congregação do Instituto de Matemática e Estatística, em sessão ordinária realizada hoje (29/04) da qual tive o enorme prazer de participar, aprovou por unanimidade essa decisão, que já havia sido aprovada (também por unanimidade) dentro do Departamento de Computação.</p>
<p>Será criada nesse ano na Fuvest uma carreira chamada <em>“Bacharelado em Ciência da Computação”</em>, que a princípio terá 50 vagas, mas para a qual será convidado o Bacharelado em Ciência da Computação do ICMC-USP (São Carlos).</p>
<p>A decisão é fantástica e será fundamental pra vida de diversos futuros estudantes desta faculdade. Já estou ansioso pelo ano que vem&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=vAHVkIyxh8Y:yTkY2g_DVzo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=vAHVkIyxh8Y:yTkY2g_DVzo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=vAHVkIyxh8Y:yTkY2g_DVzo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=vAHVkIyxh8Y:yTkY2g_DVzo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=vAHVkIyxh8Y:yTkY2g_DVzo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=vAHVkIyxh8Y:yTkY2g_DVzo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=vAHVkIyxh8Y:yTkY2g_DVzo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=vAHVkIyxh8Y:yTkY2g_DVzo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/vAHVkIyxh8Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/boa-nova/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/boa-nova/</feedburner:origLink></item>
		<item>
		<title>Quer auxiliar seu filho?</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/a8JfE8xV6Fc/</link>
		<comments>http://blog.tiagomadeira.com/quer-auxiliar-seu-filho/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 15:26:40 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Futilidades]]></category>
		<category><![CDATA[algoritmos]]></category>
		<category><![CDATA[educação]]></category>
		<category><![CDATA[escola]]></category>
		<category><![CDATA[filhos]]></category>
		<category><![CDATA[pais]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=605</guid>
		<description><![CDATA[O blog onde eu escrevia sobre algoritmos há uns quatro anos tem uma visitação razoável (pra um blog abandonado sobre um assunto técnico, claro) e comentários quase-que-diariamente. Há bons comentários, mas a maioria deles infelizmente é desprezível (pessoas pedindo trabalhos ou falando palavrões), o que me leva a quase nunca lê-los na correria do dia-a-dia. [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://algoritmos.tiagomadeira.net">blog onde eu escrevia sobre algoritmos há uns quatro anos</a> tem uma visitação razoável (pra um blog abandonado sobre um assunto técnico, claro) e comentários quase-que-diariamente. Há bons comentários, mas a maioria deles infelizmente é desprezível (pessoas pedindo trabalhos ou falando palavrões), o que me leva a quase nunca lê-los na correria do dia-a-dia. Hoje acabei lendo um, quase sem querer. Eis o texto, escrito pelo Joquim Floriano de Souza no <a href="http://algoritmos.tiagomadeira.net/crivo-de-eratostenes#comment-1261">post sobre o Crivo de Eratóstenes</a>:</p>
<blockquote><p>To tentando entender isso tudo pra poder auxiliar meu filho que faz ads, mas tá muito dificil,,,qual seria o melhor livro para comprar.</p></blockquote>
<p>Durante quinze minutos tentei encontrar a melhor resposta (cinco toneladas de linho, sugerir o Principia Discordia, simplesmente repassar o Cormen que além de estar citado em grande parte dos posts está citado na página inicial, sugerir um livro de pedagogia, Paulo Coelho etc.), mas por fim achei que a melhor resposta seria a anerística: <em>Senhor, se quer mesmo auxiliar seu filho deixe-o em paz.</em> Espero ter ajudado.</p>
<p><strong>[update]</strong> Várias pessoas acharam que eu fui prepotente e desnecessariamente rude, aparentemente porque entenderam que o pai estava só procurando indicação de livros pro filho (se você pensou isso, por favor releia o comentário). Por isso, sinto necessidade de me justificar: Eu acho absurdo um pai acordar cedo num domingo pra estudar um conteúdo como algoritmos pra mastigar pro seu filho que está num curso superior onde deveria aprender (ao menos em teoria) a pensar e pesquisar por conta própria. É uma dedicação muito bonita, mas é uma superproteção que eu acho muito prejudicial. De qualquer forma, quem ainda discorda da minha resposta pode sempre comentar. E o melhor livro pra comprar é o CLRS, sempre :)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=a8JfE8xV6Fc:zJWPFnCtvxY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=a8JfE8xV6Fc:zJWPFnCtvxY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=a8JfE8xV6Fc:zJWPFnCtvxY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=a8JfE8xV6Fc:zJWPFnCtvxY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=a8JfE8xV6Fc:zJWPFnCtvxY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=a8JfE8xV6Fc:zJWPFnCtvxY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=a8JfE8xV6Fc:zJWPFnCtvxY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=a8JfE8xV6Fc:zJWPFnCtvxY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/a8JfE8xV6Fc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/quer-auxiliar-seu-filho/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/quer-auxiliar-seu-filho/</feedburner:origLink></item>
		<item>
		<title>Coordenadas homogêneas</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/2zKSlrb8qCI/</link>
		<comments>http://blog.tiagomadeira.com/coordenadas-homogeneas/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 03:49:43 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Ciência da Computação]]></category>
		<category><![CDATA[acm icpc]]></category>
		<category><![CDATA[computação]]></category>
		<category><![CDATA[coordenadas homogêneas]]></category>
		<category><![CDATA[geometria]]></category>
		<category><![CDATA[maratona]]></category>
		<category><![CDATA[Matemática]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=584</guid>
		<description><![CDATA[Conheci as coordenadas homogêneas por acaso. Era 2004, ganhei a modalidade iniciação da Olimpíada Brasileira de Informática e passei o inverno estudando C, acho que por dois motivos: interesse pelos problemas da modalidade programação e desejo de aproveitar bem o curso que os medalhistas fazem na UNICAMP; ou talvez fosse apenas falta do que fazer [...]]]></description>
			<content:encoded><![CDATA[<p>Conheci as coordenadas homogêneas por acaso. Era 2004, ganhei a modalidade iniciação da Olimpíada Brasileira de Informática e passei o inverno estudando C, acho que por dois motivos: interesse pelos problemas da modalidade programação e desejo de aproveitar bem o curso que os medalhistas fazem na UNICAMP; ou talvez fosse apenas falta do que fazer ou curiosidade mesmo. Não importa.</p>
<p>Confundo os cursos de 2004, 2005 e 2006, mas lembro que no primeiro aprendi com um monitor sobre recursão, representação de grafos e busca em profundidade. Lembro também que foi em 2004 que conheci o <acronym title="Cormen, Leiserson, Rivest, Stein - Introduction to Algorithms">CLRS</acronym> (livro que comprei alguns meses depois e tenho na cabeceira até hoje). Esse post, porém, é sobre um acontecimento mais aleatório relacionado a esse curso e, ouso afirmar, digno de figurar n&#8217;<strong>O Andar do Bêbado</strong> do Mlodinow.</p>
<p>O pessoal da modalidade programação ia tirar cópias de um livro do Stolfi e do Rezende, chamado “Fundamentos de Geometria Computacional” (<a href="http://www.ic.unicamp.br/~stolfi/EXPORT/bibliography/stolfi.html">dá pra baixar aqui</a>). Nem sabia do que estavam tirando xerox, mas vi que era barato e que todos os mais velhos estavam querendo, então também pedi.</p>
<p>Folheei o livro, não entendi nada, deixei num canto e voltei a abrir alguns anos depois, não lembro exatamente quando. E foi aí que fez-se a luz. A primeira parte é sobre coordenadas homogêneas.</p>
<p><strong>Coordenadas homogêneas?</strong> A ideia parece simples (até demais) pra ser poderosa. Basicamente você representa uma coordenada em <img src='http://s.wordpress.com/latex.php?latex=%28X%2C%20Y%29%20%5Cin%20%5Cmathbb%7BR%7D%5E2&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='(X, Y) \in \mathbb{R}^2' title='(X, Y) \in \mathbb{R}^2' class='latex' /> com uma tripla ordenada <img src='http://s.wordpress.com/latex.php?latex=%5Bw%2C%20x%2C%20y%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='[w, x, y]' title='[w, x, y]' class='latex' /> tal que <img src='http://s.wordpress.com/latex.php?latex=x%20%3D%20%5Cfrac%7BX%7D%7Bw%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='x = \frac{X}{w}' title='x = \frac{X}{w}' class='latex' /> e <img src='http://s.wordpress.com/latex.php?latex=y%20%3D%20%5Cfrac%7BY%7D%7Bw%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='y = \frac{Y}{w}' title='y = \frac{Y}{w}' class='latex' />. A reta tem a mesma representação.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">struct</span> ponto <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> w, x, y<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">typedef</span> ponto reta<span style="color: #008080;">;</span></pre></td></tr></table></div>

<p><strong>E o que isso tem demais?</strong> Você deixa de precisar de pontos flutuantes pra maioria das operações geométricas; ganha pontos no infinito (eles são a interseção entre retas paralelas!) que permitem fazer fórmulas sem preocupação com casos especiais, usar a mesma fórmula pra determinar uma reta gerada por dois pontos ou por um ponto e um vetor etc.; tem representações iguais (e dualidade) entre pontos e retas (e.g. interseção entre retas p e q = reta determinada por pontos p e q); e mais um monte de outras coisas.</p>
<p><strong>Uau! Como eu não ouvi falar disso antes?</strong> Eu não sei a razão, mas, embora tenham várias vantagens, as coordenadas homogêneas não são muito populares na universidade, nem entre os maratonistas. No entanto, são usadas em projetos grandes que usam muita geometria (e.g. OpenGL).</p>
<p><strong>Quero código!</strong> Vou mostrar como resolvi o problema <em>Symmetry</em> (<a href="http://www.topcoder.com/stat?c=problem_statement&#038;pm=924">2002 TopCoder Inv Round 4 &#8211; Division I, Level Three</a>).</p>
<p><em>O enunciado é simples:</em> Dados n (2 <img src='http://s.wordpress.com/latex.php?latex=%5Cleq&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\leq' title='\leq' class='latex' /> n <img src='http://s.wordpress.com/latex.php?latex=%5Cleq&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\leq' title='\leq' class='latex' /> 200) pontos inteiros (com coordenadas de -10000 a 10000) determinar quantas linhas de simetria existem entre eles.</p>
<p>Dá pra fazer em <img src='http://s.wordpress.com/latex.php?latex=O%28n%5E3%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='O(n^3)' title='O(n^3)' class='latex' /> com a seguinte ideia:</p>
<ol>
<li>Crie uma árvore binária balanceada indexada por retas. (em C++, <em>map &lt;reta,int&gt;</em>)</li>
<li>Para cada par de pontos, determine a reta de simetria entre eles e adicione 2 a essa reta na árvore binária. (<img src='http://s.wordpress.com/latex.php?latex=O%28n%5E2%20%5Clog%20n%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='O(n^2 \log n)' title='O(n^2 \log n)' class='latex' />)</li>
<li>Para cada reta na árvore binária, adicione 1 para cada ponto que pertence a essa reta. (<img src='http://s.wordpress.com/latex.php?latex=O%28n%5E3%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='O(n^3)' title='O(n^3)' class='latex' />)</li>
<li>É fácil ver que a reta é uma reta de simetria do conjunto de pontos se e somente se seu valor na árvore binária for <img src='http://s.wordpress.com/latex.php?latex=n&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='n' title='n' class='latex' />.</li>
</ol>
<p>O problema geométrico está no segundo passo: determinar a reta de simetria entre dois pontos. Sejam esses pontos <em>p</em> e <em>q</em>. É preciso:</p>
<ol>
<li>Determinar o ponto médio entre <em>p</em> e <em>q</em>.</li>
<li>Determinar a reta que passa por <em>p</em> e <em>q</em> (o enunciado garante que <em>p != q</em>).</li>
<li>Determinar uma reta (ou um vetor) perpendicular à reta do passo acima.</li>
<li>Determinar a reta que passa pelo ponto médio e tem a direção do vetor perpendicular do passo 3.</li>
</ol>
<p>Determinar o ponto médio sem usar ponto flutuante seria trivial de qualquer forma (basta multiplicar todas as coordenadas por dois), mas com coordenadas homogêneas isso é desnecessário. É fácil ver que o ponto médio <img src='http://s.wordpress.com/latex.php?latex=m&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='m' title='m' class='latex' /> entre <img src='http://s.wordpress.com/latex.php?latex=p%20%3D%20%5Bw_0%2C%20x_0%2C%20y_0%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='p = [w_0, x_0, y_0]' title='p = [w_0, x_0, y_0]' class='latex' /> e <img src='http://s.wordpress.com/latex.php?latex=q%20%3D%20%5Bw_1%2C%20x_1%2C%20y_1%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='q = [w_1, x_1, y_1]' title='q = [w_1, x_1, y_1]' class='latex' /> é:</p>
<p style="text-align:center;"><img src='http://s.wordpress.com/latex.php?latex=m%20%3D%20%5B%202%20w_0%20w_1%20%2C%20w_1%20x_0%20%2B%20w_0%20x_1%20%2C%20w_1%20y_0%20%2B%20w_0%20q_1%20%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='m = [ 2 w_0 w_1 , w_1 x_0 + w_0 x_1 , w_1 y_0 + w_0 q_1 ]' title='m = [ 2 w_0 w_1 , w_1 x_0 + w_0 x_1 , w_1 y_0 + w_0 q_1 ]' class='latex' /></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">ponto ponto_medio<span style="color: #008000;">&#40;</span>ponto p, ponto q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>ponto<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>q.<span style="color: #007788;">w</span>, q.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">x</span><span style="color: #000040;">+</span>q.<span style="color: #007788;">x</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">w</span>, q.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">y</span><span style="color: #000040;">+</span>q.<span style="color: #007788;">y</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">w</span> <span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Três pontos <img src='http://s.wordpress.com/latex.php?latex=%5Bw_0%2C%20x_0%2C%20y_0%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='[w_0, x_0, y_0]' title='[w_0, x_0, y_0]' class='latex' />, <img src='http://s.wordpress.com/latex.php?latex=%5Bw_1%2C%20x_1%2C%20y_1%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='[w_1, x_1, y_1]' title='[w_1, x_1, y_1]' class='latex' />, <img src='http://s.wordpress.com/latex.php?latex=%5Bw_2%2C%20x_2%2C%20y_2%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='[w_2, x_2, y_2]' title='[w_2, x_2, y_2]' class='latex' /> são colineares se</p>
<p style="text-align:center;"><img src='http://s.wordpress.com/latex.php?latex=%20%5Cleft%7C%20%5Cbegin%7Barray%7D%7Bccc%7D%20w_0%20%26%20x_0%20%26%20y_0%20%5C%5C%20w_1%20%26%20x_1%20%26%20y_1%20%5C%5C%20w_2%20%26%20x_2%20%26%20y_2%20%5Cend%7Barray%7D%20%5Cright%7C%20%3D%200%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt=' \left| \begin{array}{ccc} w_0 &amp; x_0 &amp; y_0 \\ w_1 &amp; x_1 &amp; y_1 \\ w_2 &amp; x_2 &amp; y_2 \end{array} \right| = 0 ' title=' \left| \begin{array}{ccc} w_0 &amp; x_0 &amp; y_0 \\ w_1 &amp; x_1 &amp; y_1 \\ w_2 &amp; x_2 &amp; y_2 \end{array} \right| = 0 ' class='latex' />,</p>
<p>o que nos permite concluir que a reta <img src='http://s.wordpress.com/latex.php?latex=r%20%3D%20%5Clangle%20W%2C%20X%2C%20Y%20%5Crangle&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='r = \langle W, X, Y \rangle' title='r = \langle W, X, Y \rangle' class='latex' /> que passa por <img src='http://s.wordpress.com/latex.php?latex=p%20%3D%20%5B%20w_0%2C%20x_0%2C%20y_0%20%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='p = [ w_0, x_0, y_0 ]' title='p = [ w_0, x_0, y_0 ]' class='latex' /> e <img src='http://s.wordpress.com/latex.php?latex=q%20%3D%20%5B%20w_1%2C%20x_1%2C%20y_1%20%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='q = [ w_1, x_1, y_1 ]' title='q = [ w_1, x_1, y_1 ]' class='latex' /> é:</p>
<p style="text-align:center;"><img src='http://s.wordpress.com/latex.php?latex=r%20%3D%20%5Clangle%20%2Bx_0%20y_1%20-%20y_0%20x_1%2C%20-w_0%20y_1%20%2B%20w_1%20y_0%2C%20w_0%20x_1%20-%20w_1%20x_0%5Crangle&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='r = \langle +x_0 y_1 - y_0 x_1, -w_0 y_1 + w_1 y_0, w_0 x_1 - w_1 x_0\rangle' title='r = \langle +x_0 y_1 - y_0 x_1, -w_0 y_1 + w_1 y_0, w_0 x_1 - w_1 x_0\rangle' class='latex' />.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">ponto reta_determinada_por<span style="color: #008000;">&#40;</span>ponto p, ponto q<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>reta<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #000040;">+</span>p.<span style="color: #007788;">x</span><span style="color: #000040;">*</span>q.<span style="color: #007788;">y</span><span style="color: #000040;">-</span>q.<span style="color: #007788;">x</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">y</span>, <span style="color: #000040;">-</span>p.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>q.<span style="color: #007788;">y</span><span style="color: #000040;">+</span>q.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">y</span>, <span style="color: #000040;">+</span>p.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>q.<span style="color: #007788;">x</span><span style="color: #000040;">-</span>q.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>p.<span style="color: #007788;">x</span> <span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>(um ponto <img src='http://s.wordpress.com/latex.php?latex=%5Bw%2C%20x%2C%20y%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='[w, x, y]' title='[w, x, y]' class='latex' /> pertence a <img src='http://s.wordpress.com/latex.php?latex=r&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='r' title='r' class='latex' /> se <img src='http://s.wordpress.com/latex.php?latex=Ww%20%2B%20Xx%20%2B%20Yy%20%3D%200&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='Ww + Xx + Yy = 0' title='Ww + Xx + Yy = 0' class='latex' />)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> ponto_na_reta<span style="color: #008000;">&#40;</span>ponto p, reta r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> p.<span style="color: #007788;">w</span><span style="color: #000040;">*</span>r.<span style="color: #007788;">w</span> <span style="color: #000040;">+</span> p.<span style="color: #007788;">x</span><span style="color: #000040;">*</span>r.<span style="color: #007788;">x</span> <span style="color: #000040;">+</span> p.<span style="color: #007788;">y</span><span style="color: #000040;">*</span>r.<span style="color: #007788;">y</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Agora a parte mais legal: a fórmula para determinar uma reta que passa por dois pontos funciona com pontos no infinito (pensemos em pontos no infinito como vetores, porque eles tem direção mas tem <img src='http://s.wordpress.com/latex.php?latex=w%20%3D%200&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='w = 0' title='w = 0' class='latex' />): o resultado é a reta determinada por um ponto e uma direção. O vetor perpendicular à reta <img src='http://s.wordpress.com/latex.php?latex=%5Clangle%20W%2C%20X%2C%20Y%20%5Crangle&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\langle W, X, Y \rangle' title='\langle W, X, Y \rangle' class='latex' /> é <img src='http://s.wordpress.com/latex.php?latex=%5B%200%2C%20X%2C%20Y%20%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='[ 0, X, Y ]' title='[ 0, X, Y ]' class='latex' />.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">ponto ponto_infinito_na_reta_perpendicular<span style="color: #008000;">&#40;</span>reta r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>reta<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000dd;">0</span>, r.<span style="color: #007788;">x</span>, r.<span style="color: #007788;">y</span> <span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>E isso é tudo. Agora basta criar uma representação única da reta pra guardar na árvore binária.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;">reta reformata_reta<span style="color: #008000;">&#40;</span>reta r<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r.<span style="color: #007788;">w</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
		r.<span style="color: #007788;">w</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span>r.<span style="color: #007788;">w</span><span style="color: #008080;">;</span>
		r.<span style="color: #007788;">x</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span>r.<span style="color: #007788;">x</span><span style="color: #008080;">;</span>
		r.<span style="color: #007788;">y</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span>r.<span style="color: #007788;">y</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r.<span style="color: #007788;">w</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r.<span style="color: #007788;">x</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
			r.<span style="color: #007788;">x</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span>r.<span style="color: #007788;">x</span><span style="color: #008080;">;</span>
			r.<span style="color: #007788;">y</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span>r.<span style="color: #007788;">y</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span> <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r.<span style="color: #007788;">x</span> <span style="color: #000080;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> r.<span style="color: #007788;">y</span> <span style="color: #000080;">&lt;</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
			r.<span style="color: #007788;">y</span> <span style="color: #000080;">=</span> <span style="color: #000040;">-</span>r.<span style="color: #007788;">y</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">int</span> d <span style="color: #000080;">=</span> gcd<span style="color: #008000;">&#40;</span>r.<span style="color: #007788;">w</span>, gcd<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">abs</span><span style="color: #008000;">&#40;</span>r.<span style="color: #007788;">x</span><span style="color: #008000;">&#41;</span>, <span style="color: #0000dd;">abs</span><span style="color: #008000;">&#40;</span>r.<span style="color: #007788;">y</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>reta<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> r.<span style="color: #007788;">w</span><span style="color: #000040;">/</span>d, r.<span style="color: #007788;">x</span><span style="color: #000040;">/</span>d, r.<span style="color: #007788;">y</span><span style="color: #000040;">/</span>d <span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>Usando essas funções, primeiro e segundo passos da solução são:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">map <span style="color: #000080;">&lt;</span>reta,<span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span> M<span style="color: #008080;">;</span>
<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i <span style="color: #000080;">&lt;</span> n<span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;</span> n<span style="color: #008080;">;</span> j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
		reta s <span style="color: #000080;">=</span> reformata_reta<span style="color: #008000;">&#40;</span>reta_determinada_por<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>, P<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		ponto pm <span style="color: #000080;">=</span> ponto_medio<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>, P<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		ponto dir <span style="color: #000080;">=</span> ponto_infinito_na_reta_perpendicular<span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		reta r <span style="color: #000080;">=</span> reformata_reta<span style="color: #008000;">&#40;</span>reta_determinada_por<span style="color: #008000;">&#40;</span>pm, dir<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>M.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> M.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			M<span style="color: #008000;">&#91;</span>s<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>M.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> M.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			M<span style="color: #008000;">&#91;</span>r<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		M<span style="color: #008000;">&#91;</span>r<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Terceiro e o quarto são:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">int</span> output <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>map <span style="color: #000080;">&lt;</span>reta,<span style="color: #0000ff;">int</span><span style="color: #000080;">&gt;</span><span style="color: #008080;">::</span><span style="color: #007788;">iterator</span> i <span style="color: #000080;">=</span> M.<span style="color: #007788;">begin</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> i <span style="color: #000040;">!</span><span style="color: #000080;">=</span> M.<span style="color: #007788;">end</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> j <span style="color: #000080;">&lt;</span> n<span style="color: #008080;">;</span> j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>ponto_na_reta<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>, i<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>first<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			i<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>second<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>second <span style="color: #000080;">==</span> n<span style="color: #008000;">&#41;</span>
		output<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p>O código completo ficou com umas 90 linhas com comentários e linhas em branco e foi aceito na primeira submissão (ok, na verdade na segunda, mas não foi devido à geometria muito menos à precisão): <a href="http://blog.tiagomadeira.com/wp-content/uploads/2010/04/symmetry.cpp">symmetry.cpp</a>. Não é lindo?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=2zKSlrb8qCI:dptToDjc07Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=2zKSlrb8qCI:dptToDjc07Y:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=2zKSlrb8qCI:dptToDjc07Y:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=2zKSlrb8qCI:dptToDjc07Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=2zKSlrb8qCI:dptToDjc07Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=2zKSlrb8qCI:dptToDjc07Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=2zKSlrb8qCI:dptToDjc07Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=2zKSlrb8qCI:dptToDjc07Y:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/2zKSlrb8qCI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/coordenadas-homogeneas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/coordenadas-homogeneas/</feedburner:origLink></item>
		<item>
		<title>Sobre piratas e consciência de classe</title>
		<link>http://feedproxy.google.com/~r/tiagomadeira/~3/iOrZ3Ls8lO4/</link>
		<comments>http://blog.tiagomadeira.com/sobre-piratas-e-consciencia-de-classe/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 22:38:23 +0000</pubDate>
		<dc:creator>Tiago Madeira</dc:creator>
				<category><![CDATA[Pensamentos aleatórios]]></category>
		<category><![CDATA[hakim bey]]></category>
		<category><![CDATA[inglaterra]]></category>
		<category><![CDATA[peter lamborn wilson]]></category>
		<category><![CDATA[pirata]]></category>
		<category><![CDATA[renegados]]></category>
		<category><![CDATA[século xx]]></category>
		<category><![CDATA[utopias piratas]]></category>

		<guid isPermaLink="false">http://blog.tiagomadeira.com/?p=580</guid>
		<description><![CDATA[“Certa vez, disseram a Eston que Jaime I da Inglaterra havia lhe oferecido o perdão. ‘Por que eu deveria obedecer às ordens de um rei’, perguntou ele, ‘quando eu mesmo sou uma espécie de rei?’ Este gracejo nos lembra vários discursos registrados na General History of the Pyrates, de Defoe, que insinua a existência de [...]]]></description>
			<content:encoded><![CDATA[<p>“Certa vez, disseram a Eston que Jaime I da Inglaterra havia lhe oferecido o perdão. ‘Por que eu deveria obedecer às ordens de um rei’, perguntou ele, ‘quando eu mesmo sou uma espécie de rei?’ Este gracejo nos lembra vários discursos registrados na <em>General History of the Pyrates</em>, de Defoe, que insinua a existência de uma ‘ideologia pirata’ (se este não é um termo pretensioso demais), uma atitude meio proto-individualista-anarquista, embora não-filosófica, que parece ter inspirado os bucaneiros e corsários mais inteligentes e com mais consciência de classe. Defoe relata que um pirata conhecido como capitão Bellamy fez este discurso para o capitão de um navio mercante que ele tinha capturado. O capitão do navio mercante havia acabado de recusar um convite para se juntar aos piratas:</p>
<blockquote><p>Lamento que eles não te deixem ter tua chalupa de volta, porque eu não faço mal a quem qeur que seja quando não é para meu próprio proveito. A chalupa que se dane, temos que afundá-la, e ela poderia ser útil a ti. Tu és um banana dissimulado, como o são todos que se submetem a serem governados por leis que os ricos fizeram para a própria segurança deles, e os malcriados covardes não têm a coragem, por outro lado, de defender o que conseguem por meio de logro. Mas que se danem: dane-se o bando de velhacos astutos, e vós, que estais a serviço deles, ó bando de mariquinhas estúpidos. Eles nos difamam, aqueles salafrários, quando só temos esta diferença: a de que eles roubam dos pobres sob a proteção da lei, sem dúvida, e nós espoliamos os ricos sob a proteção de nossa própria valentia. Não seria melhor então tu seres um de nós do que ires bajular aqueles patifes para conseguir emprego?</p></blockquote>
<p>Quando o capitão respondeu que sua consciência não permitiria que ele infringisse as leis de Deus e dos homens, o pirata Bellamy continuou:</p>
<blockquote><p>Tu tens uma consciência diabólica, ó velhaco. Eu sou um príncipe livre, e tenho tanta autoridade para travar guerra contra o mundo todo quanto quem tem cem navios no mar e um exército de cem mil homens nos campos. E isto minha consciência me diz: não adianta argumentar com covardes lamurientos que permitem que seus superiores os saiam chutando pelo convés à vontade.</p></blockquote>
<p><small><strong>Peter Lamborn Wilson</strong>, “Utopias piratas: mouros, hereges e renegados”, página 52 na tradução da Editora Conrad (2001)</small></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=iOrZ3Ls8lO4:oEclOmgRKgc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=iOrZ3Ls8lO4:oEclOmgRKgc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=iOrZ3Ls8lO4:oEclOmgRKgc:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=iOrZ3Ls8lO4:oEclOmgRKgc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=iOrZ3Ls8lO4:oEclOmgRKgc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?i=iOrZ3Ls8lO4:oEclOmgRKgc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=iOrZ3Ls8lO4:oEclOmgRKgc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/tiagomadeira?a=iOrZ3Ls8lO4:oEclOmgRKgc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/tiagomadeira?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/tiagomadeira/~4/iOrZ3Ls8lO4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.tiagomadeira.com/sobre-piratas-e-consciencia-de-classe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.tiagomadeira.com/sobre-piratas-e-consciencia-de-classe/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.916 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-03 14:28:55 -->
