<?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"
	>

<channel>
	<title>Xucros</title>
	<atom:link href="http://xucros.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://xucros.com</link>
	<description></description>
	<pubDate>Mon, 04 Aug 2008 13:01:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Ruby 1.8.6 p230 Segmentation Fault</title>
		<link>http://xucros.com/2008/07/29/ruby-186-p230-segmentation-fault/</link>
		<comments>http://xucros.com/2008/07/29/ruby-186-p230-segmentation-fault/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 17:09:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=33</guid>
		<description><![CDATA[Open a terminal, type &#8220;ruby -v&#8221; and see if your output is something like this:
$ ruby -v
ruby 1.8.6 (2008-06-20 patchlevel 230)

If it is, pay attention to this post:
I was a happy programmer until I faced the first Segmentation fault of my life. Doing a simple request of my rails app&#8217;s home. Since I installed tons [...]]]></description>
			<content:encoded><![CDATA[<p>Open a terminal, type &#8220;ruby -v&#8221; and see if your output is something like this:</p>
<pre>$ ruby -v
ruby 1.8.6 (2008-06-20 patchlevel 230)
</pre>
<p>If it is, <strong>pay attention to this post</strong>:</p>
<p>I was a happy programmer until I faced the first Segmentation fault of my life. Doing a simple request of my rails app&#8217;s home. Since I installed tons of plugins, Ruby, Rails and gems versions, and haven&#8217;t turned my machine off in weeks, I thought it was my machine so I rebooted it. Same problem.</p>
<p>After a little bit of despair, I searched on google for Segfaults on Rails 2.1 with Ruby 1.8.6 and Mongrel 1.1.5. I was lead to these pages:</p>
<p><a href="http://rails.lighthouseapp.com/projects/8994/tickets/513-segmentation-fault-ruby-1-8-6-i686-linux-patchlevel-230" target="_blank">http://rails.lighthouseapp.com/projects/8994/tickets/513-segmentation-fault-ruby-1-8-6-i686-linux-patchlevel-230</a></p>
<p><a href="http://redmine.ruby-lang.org/issues/show/211" target="_blank">http://redmine.ruby-lang.org/issues/show/211</a></p>
<p>To solve this issue:</p>
<pre class="detail">svn co <a href="http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_6">http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_6</a>
</pre>
<p>Compile and install it. Problem solved.</p>
<p>P.S.: I think this is serious to alarm because I upgraded my Ruby version to 1.8.6 p230 to solve the &#8220;famous&#8221; recent vulnerability found in Ruby. In fact, until the time of writting this post, p230 is the 1.8.6 version the site <a href="http://www.ruby-lang.org/">http://www.ruby-lang.org/</a> asks you to download, compile and install.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/07/29/ruby-186-p230-segmentation-fault/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dica ao usar Background-fu</title>
		<link>http://xucros.com/2008/07/25/dica-ao-usar-background-fu/</link>
		<comments>http://xucros.com/2008/07/25/dica-ao-usar-background-fu/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 21:10:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=32</guid>
		<description><![CDATA[No meu projeto atual eu preciso de alguma coisa que me permita rodar processos em background, liberando a aplicação para o usuário. Entre as soluções atuais, a mais atraente é um plugin chamado Background-fu.
Ok, plugin instalado, exemplos rodados e tudo perfeito. Mas na hora de codificar o meu processo, ele não funcionava. Mexi em tudo, [...]]]></description>
			<content:encoded><![CDATA[<p>No meu projeto atual eu preciso de alguma coisa que me permita rodar processos em background, liberando a aplicação para o usuário. Entre as soluções atuais, a mais atraente é um plugin chamado Background-fu.</p>
<p>Ok, plugin instalado, exemplos rodados e tudo perfeito. Mas na hora de codificar o meu processo, ele não funcionava. Mexi em tudo, testei para não ver se era erro do código mesmo, mas nada.</p>
<p>Primeiro erro: Silenciei a exception gerada. Depois de consertar isso, o log me mostrou a exception linda, do jeito que eu queria.</p>
<p>Segundo erro: Passei um model como parâmetro, direto do controller pro agendador dos jobs. Mesmo sendo tudo código ruby, ele serializa e deserializa depois, o que fez o objeto ficar estranho e parar de responder aos métodos.</p>
<p>Solução: Salve o model na base, passe só o id para o agendador do Background-fu e, uma vez dentro do job, dê um find do model e chame os métodos que você quiser.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/07/25/dica-ao-usar-background-fu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Twitter pelo celular</title>
		<link>http://xucros.com/2008/07/21/twitter-pelo-celular/</link>
		<comments>http://xucros.com/2008/07/21/twitter-pelo-celular/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 18:12:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=31</guid>
		<description><![CDATA[Post rápido:
Quando estava na Railsconf, acabei comprando um BlackBerry Pearl pré-pago, e o Kenji me disse: Legal, agora vc pode usar aquele número que os americanos usam para postar no Twitter.
A questão é que eu posto esporadicamente via sms desde quando criei minha conta no Twitter! Se você for cliente da TIM, basta cadastrar o [...]]]></description>
			<content:encoded><![CDATA[<p>Post rápido:</p>
<p>Quando estava na Railsconf, acabei comprando um BlackBerry Pearl pré-pago, e o Kenji me disse: Legal, agora vc pode usar aquele número que os americanos usam para postar no Twitter.</p>
<p>A questão é que eu posto esporadicamente via sms desde quando criei minha conta no Twitter! Se você for cliente da TIM, basta cadastrar o seu número de celular na sua conta do Twitter, e mandar um sms para  +447624801423 com o tweet, e pronto!</p>
<p>P.S.: Já vi clientes da Vivo e da Claro tentando usar, mas sem sucesso. Se alguém nessas condições conseguir, sinta-se à vontade para comentar.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/07/21/twitter-pelo-celular/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Como não fazer um site</title>
		<link>http://xucros.com/2008/07/06/como-nao-fazer-um-site/</link>
		<comments>http://xucros.com/2008/07/06/como-nao-fazer-um-site/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 23:19:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Descaso]]></category>

		<category><![CDATA[Incompetência]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=24</guid>
		<description><![CDATA[Quem me conhece sabe que eu gosto da comida do Habib&#8217;s. Quem o freqüenta, sabe que nada além da comida presta. Eu sabia, mas ao fazer um pedido pelo site deles hoje, achei um novo parâmetro para lixo.
Em primeiro lugar, eu sou de um tempo onde as coisas eram entregues à domicílio. Esse negócio de [...]]]></description>
			<content:encoded><![CDATA[<p>Quem me conhece sabe que eu gosto da comida do <a title="Habib's" href="http://www.habibs.com.br/" target="_blank">Habib&#8217;s</a>. Quem o freqüenta, sabe que nada além da comida presta. Eu sabia, mas ao fazer um pedido pelo <a title="Habib's Delivery" href="http://www.habibsdelivery.com.br/" target="_blank">site deles</a> hoje, achei um novo parâmetro para <strong>lixo</strong>.</p>
<p>Em primeiro lugar, eu sou de um tempo onde as coisas eram entregues à domicílio. Esse negócio de globalização só tá servindo pro pessoal aprender o inglês antes do português. E ainda por cima mal.</p>
<p>Entrei no site e até aí tudo bem. Design feio, mas até aí tudo bem. Como não faço a menor idéia da senha, resolvi clicar em &#8220;esqueci a minha senha&#8221;.</p>
<p><a href="http://xucros.com/wp-content/uploads/2008/07/senha.png"><img class="alignnone size-medium wp-image-25" title="senha" src="http://xucros.com/wp-content/uploads/2008/07/senha-300x185.png" alt="" width="300" height="185" /></a></p>
<p>Cabeças cortadas? Serviço do Jason? Não, serviço dos designers altamente qualificados da Voxline Contact Center!</p>
<p>O e-mail foi enviado, eu entro na minha conta, e vejo: No lugar de resetar a senha, eles me mandaram a minha senha antiga. <strong>A SENHA ANTIGA</strong>. Sabem o que isso significa? Que se alguém invadir o sistema deles (o que deve ser ridiculamente fácil) eles podem pegar a senha de todo mundo! Só pra constar: Sites que não usam criptografia de mão-única pra guardar dados sensíveis não são confiáveis.</p>
<p>Ok, senha digitada, sou obrigado a passar por duas telas e escolher um item radio button. Nos dois casos, eu só tinha um item disponível, e ainda tinha que escolhê-lo.</p>
<p>Ok, quando entro no site para fazer o pedido, ele me mostra imagens não carregadas, e buracos no design, como o que aparece em baixo do menu de itens azuis, mesmo o browser indicando &#8220;Done&#8221; no status de carregamento da página.</p>
<p><a href="http://xucros.com/wp-content/uploads/2008/07/design.png"><img class="alignnone size-medium wp-image-26" title="design" src="http://xucros.com/wp-content/uploads/2008/07/design-300x113.png" alt="" width="300" height="113" /></a></p>
<p>Na tela de pedidos, você tem uma tabela html, da mais simples e porca, mostrando o nome dos produtos, o preço e um link para adicionar ao carrinho. E fotos dos produtos, nada! Eu tenho que adivinhar como é o pastel, a fogazza, e tudo mais, tenho que já ter comido para saber como são! A não ser que eu me contente com as esfihas, ou o kibe, que é o que aparece na única imagem na tela.</p>
<p><a href="http://xucros.com/wp-content/uploads/2008/07/shopping-cart.png"><img class="alignnone size-medium wp-image-27" title="shopping-cart" src="http://xucros.com/wp-content/uploads/2008/07/shopping-cart-300x214.png" alt="" width="300" height="214" /></a></p>
<p>Vou montando o meu pedido, e me perco no meio do caminho, não lembrando se tinha colocado as esfihas de queijo, ou frango. Vou ver no carrinho, pra poder colocar as outas, mas não posso, porque o carrinho só mostra o valor total!</p>
<p><a href="http://xucros.com/wp-content/uploads/2008/07/shopping-cart-2.png"><img class="alignnone size-medium wp-image-28" title="shopping-cart-2" src="http://xucros.com/wp-content/uploads/2008/07/shopping-cart-2-300x53.png" alt="" width="300" height="53" /></a></p>
<p>Preciso clicar, ver o que tem, e voltar pra tela original! E além do mais ele adicionou 3 Kibe frito! Colocar um if pluralizando as coisas é tão difícil assim? E isso é bug! Não é feature nova, pra ser cobrada pelos olhos da cara!</p>
<p>Vou fazer o checkout, e me deparo com outro caso de descaso:</p>
<p><a href="http://xucros.com/wp-content/uploads/2008/07/checkout.png"><img class="alignnone size-medium wp-image-29" title="checkout" src="http://xucros.com/wp-content/uploads/2008/07/checkout-300x167.png" alt="" width="300" height="167" /></a></p>
<p>Além do botões estarem desalinhados, eu digito o valor &#8220;16,76&#8243; e ele computa 16 reais. Mas porquê você digitou vírgula, e não ponto, como o site pede? Simples, porque eu sou brasileiro, e no Brasil o separador da parte inteira da decimal em valores monetários é a vírgula. Incapacidade pura e total, tratar isso no javascript é coisa de criança.</p>
<p>E, na última tela, onde mostra o número do pedido, recebo mais uma aberração de layout na cara! Funciona no IE 6 para Windows XP, né? Pronto! Isso representa 90% dos usuários não é mesmo?</p>
<p>Ok, o pedido está feito, mas da próxima vez vou pedir pelo telefone. Ter que usar um sistema <strong>tosco, mal-feito e lixo </strong>desse é revoltante.</p>
<p>Pronto, falei.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/07/06/como-nao-fazer-um-site/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Listen to the Masters - Ouçam os Mestres</title>
		<link>http://xucros.com/2008/07/03/listen-to-the-masters-oucam-os-mestres/</link>
		<comments>http://xucros.com/2008/07/03/listen-to-the-masters-oucam-os-mestres/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 00:15:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[poor-analogies]]></category>

		<category><![CDATA[quotes]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=23</guid>
		<description><![CDATA[“Watching nonprogrammers trying to run software companies is like watching someone who doesn’t know how to surf trying to surf. Even if he has great advisers standing on the shore telling him what to do, he still falls off the board again and again.”
-Joel Spolsky (link)
Em português:
&#8220;Ver não-programadores tentar comandar empresas de software é como [...]]]></description>
			<content:encoded><![CDATA[<p>“Watching nonprogrammers trying to run software companies is like watching someone who doesn’t know how to surf trying to surf. Even if he has great advisers standing on the shore telling him what to do, he still falls off the board again and again.”<br />
-Joel Spolsky (<a href="http://www.inc.com/magazine/20080701/how-hard-could-it-be-glory-days_Printer_Friendly.html">link</a>)</p>
<p>Em português:</p>
<p>&#8220;Ver não-programadores tentar comandar empresas de software é como ver alguém que não sabe surfar tentando. Mesmo que ele tenha grandes conselheiros de pé na praia dizendo a ele o que fazer, ele ainda assim vai cair da prancha de novo e de novo.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/07/03/listen-to-the-masters-oucam-os-mestres/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Off-Topic: Sobre o hino e a bandeira do Brasil</title>
		<link>http://xucros.com/2008/06/22/off-topic-sobre-o-hino-e-a-bandeira-do-brasil/</link>
		<comments>http://xucros.com/2008/06/22/off-topic-sobre-o-hino-e-a-bandeira-do-brasil/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 15:55:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Off-Topic]]></category>

		<category><![CDATA[brazil]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=21</guid>
		<description><![CDATA[Interrompemos a nossa programação para a publicação de um aviso de utilidade pública:
Quarta-feira fiz algo que não fazia há anos: Assisti a um jogo do Brasil. E o que me surpreende até hoje, mesmo sabendo que sempre acontece (e que provavelmente sempre acontecerá) é o fato da galera no estádio aplaudir o hino nacional. Já [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-22" title="bandeira_do_brasil" src="http://xucros.com/wp-content/uploads/2008/06/image002.jpg" alt="Bandeira do Brasil" width="386" height="246" />Interrompemos a nossa programação para a publicação de um aviso de utilidade pública:</p>
<p>Quarta-feira fiz algo que não fazia há anos: Assisti a um jogo do Brasil. E o que me surpreende até hoje, mesmo sabendo que sempre acontece (e que provavelmente sempre acontecerá) é o fato da galera no estádio aplaudir o hino nacional. Já discuti bastante com &#8220;os mais velhos&#8221;, dizendo que não se deve aplaudir o hino, o que até me rendeu fama de não-patriota!</p>
<p>Então vamos lá, <a href="http://www.planalto.gov.br/ccivil_03/Leis/L5700.htm" target="_blank">o link para o site do planalto é esse</a>, mas o resumo está aqui:</p>
<blockquote><p><span style="font-family: Arial; color: #000000; font-size: x-small;">Art . 24. A execução do Hino Nacional   obedecerá às seguintes prescrições: </span></p>
<p><span style="font-family: Arial; color: #000000; font-size: x-small;">§ 4º Nas cerimônias em que se tenha de   executar um Hino Nacional Estrangeiro, este deve, por cortesia, <strong>preceder</strong> o Hino Nacional   Brasileiro. </span></p></blockquote>
<blockquote><p><span style="font-family: Arial; color: #000000; font-size: x-small;">Art . 30. Nas cerimônias de hasteamento ou   arriamento, nas ocasiões em que a Bandeira se apresentar em marcha ou cortejo, assim como   durante a execução do Hino Nacional, todos devem tomar atitude de respeito, <strong>de pé </strong>e em   silêncio, o <strong>civis do sexo masculino com a cabeça descoberta</strong> e os militares em   continência, segundo os regulamentos das respectivas corporações.</span></p></blockquote>
<blockquote><p><span style="font-family: Arial; color: #000000; font-size: x-small;">Parágrafo único. <strong>É vedada qualquer outra   forma de saudação</strong>. </span></p></blockquote>
<p>A página fala ainda mais um monte de coisa que eu acho que podem ser violadas, pelo fato de ser um jogo, todo mundo estar animado e tudo mais. Mas o que eu quero frisar está aí, em negrito. Não custa nada se levantar, tirar o boné|chapéu|toca, e não aplaudir. E não é feio nem &#8220;pagação de pau&#8221; executar o hino do outro país antes. Feio é perder o jogo.</p>
<p>Obrigado à todos pela atenção, e agora voltamos com a nossa programação normal.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/06/22/off-topic-sobre-o-hino-e-a-bandeira-do-brasil/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Permalinks no Wordpress e mod_rewrite</title>
		<link>http://xucros.com/2008/06/22/permalinks-no-wordpress-e-mod_rewrite/</link>
		<comments>http://xucros.com/2008/06/22/permalinks-no-wordpress-e-mod_rewrite/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 15:00:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[VPS]]></category>

		<category><![CDATA[WordPress]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=20</guid>
		<description><![CDATA[Ontem à noite (na verdade quase hoje de manhã) eu terminei de subir os posts e comentários do blog. Daí quando eu tentei ativar os permalinks do WordPress eu tive uma surpresa: Comecei a tomar 404s na cara toda vez que clicava em qualquer permalink.
Eu não podia ficar sem eles, já que eram utilizados desde [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem à noite (na verdade quase hoje de manhã) eu terminei de subir os posts e comentários do blog. Daí quando eu tentei ativar os permalinks do WordPress eu tive uma surpresa: Comecei a tomar 404s na cara toda vez que clicava em qualquer permalink.</p>
<p>Eu não podia ficar sem eles, já que eram utilizados desde a encarnação Mephisto. Assim as URLs ficam parecidas e menos links por aí quebrariam. Daí, depois de pesquisar um pouquinho no google vi que o .htaccess precisava de algumas regras e o WordPress não conseguia escrever nele. Ok, <code>touch</code> mais <code>chmod</code> no .htaccess no diretório raiz do blog e&#8230; nada!</p>
<p>Com mais buscas, vi que todo mundo fala que o mod_rewrite deve estar habilitado, mas que ninguém fala como! Olhando no site do apache, vi que ele vem instalado por <em>default</em>.</p>
<p>Mais um pouco de fuçadas e, do nada, lembrei que assim como os sites os mods também se dividem entre <em>available</em> e <em>enabled</em>. Um simples <code>ls</code> em /etc/apache2/mods-enabled/ mostrou que o rewrite.load não estava lá. <code>a2enmod rewrite</code>, <code>sudo /etc/init.d/apache2 reload</code> e <em>voilá</em>!</p>
<p>Moral da história: VPS é legal, você tem uma máquina pra usar do jeito que bem entender, mas qualquer coisa que fuja do padrão é por tua conta.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/06/22/permalinks-no-wordpress-e-mod_rewrite/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rise from your grave!</title>
		<link>http://xucros.com/2008/06/22/rise-from-your-grave/</link>
		<comments>http://xucros.com/2008/06/22/rise-from-your-grave/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 02:52:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Crashes]]></category>

		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=3</guid>
		<description><![CDATA[Na terça eu tentei entrar no blog, mas ele saiu do ar. Tentei de tudo, mas voltei pro trabalho na quarta, e o tempo ficou curto pra mim. Após tentar de tudo um pouco, fiz backup da base que o Mephisto usava e formatei o meu vps. Acabei de configurar o Apache e instalei o [...]]]></description>
			<content:encoded><![CDATA[<p>Na terça eu tentei entrar no blog, mas ele saiu do ar. Tentei de tudo, mas voltei pro trabalho na quarta, e o tempo ficou curto pra mim. Após tentar de tudo um pouco, fiz backup da base que o <a title="Mephisto Blog" href="http://mephistoblog.com/" target="_blank">Mephisto</a> usava e formatei o meu vps. Acabei de configurar o Apache e instalei o Wordpress.</p>
<p>Ainda vou subir os posts antigos, e daí ver algum tema bonito pro blog.</p>
<p>Desculpem o inconveniente, se tiver alguém lendo isso aqui fora o Wilerson.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/06/22/rise-from-your-grave/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Brainfuck Quest</title>
		<link>http://xucros.com/2008/06/06/the-brainfuck-quest/</link>
		<comments>http://xucros.com/2008/06/06/the-brainfuck-quest/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 21:58:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[brainfuck]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[spoj]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=19</guid>
		<description><![CDATA[One of my study resources for learning new languages is SPOJ. Actually, I&#8217;ve used it only to learn Ruby so far, but I&#8217;ll use it for any one to come (Python?, LISP?).
Although SPOJ international has a much bigger user base and challenge level, I&#8217;m giving more attention to SPOJ Brazil, and BRAIN, one of its [...]]]></description>
			<content:encoded><![CDATA[<p>One of my study resources for learning new languages is SPOJ. Actually, I&#8217;ve used it only to learn Ruby so far, but I&#8217;ll use it for any one to come (Python?, LISP?).</p>
<p>Although <a href="http://www.spoj.pl" target="_blank">SPOJ international</a> has a much bigger user base and challenge level, I&#8217;m giving more attention to <a href="http://br.spoj.pl" target="_blank">SPOJ Brazil</a>, and <a href="http://br.spoj.pl/problems/BRAIN" target="_blank">BRAIN</a>, one of its problems, is giving me much more headache then it should do.</p>
<p>I decided to give it another try, but the code was big enough for me to try to fix it. But this time I will make it different by adding unit tests.</p>
<p><strong>The old testing process</strong></p>
<p>The testing process consisted of running the tests given in the problem site. But my code pass them and still fails in the tests given when the code is submitted.</p>
<p><strong>The new testing process</strong></p>
<p>I put some unit tests (thanks for embedding unit tests, Matz) to test individual commands of my interpreter, and I found the first problem with it. The # command was printing the first ten bytes of the input, instead of the first ten bytes of the vector. The tests given in the problem site didn&#8217;t cover this case.</p>
<p>Then I added tests for the four basic math operations. The divide test is quite good, since the loop nesting stack is something that goes seven levels up in the stack!</p>
<p>My code just blowed up when I tried to run it. After some search, I found nothing. After a lot of more searching, I found a little bug: When the interpreter read the ] command, it wasn&#8217;t appending the following code in the right order. The other tests didn&#8217;t find this error because the loops were quite simple, with just one nested loop.</p>
<p>Then again I tried to upload it, but it failed once more. Now, I let it there for a couple of days, and then, I found another problems with the whole nesting system. Now I have to say that what saved my life was a piece of paper and a pen. I drawn the whole nesting process, making arrows for variables names and arrays, and it all became clear to me. After a little brainstorming (and more drawing), I re-wrote it all and all my tests passed!</p>
<p>I was already screaming bad words when I realized it had to pass SPOJs tests too, and then it all came to ruins when I got a TLE in my face. The problem has a 1 second time limit. The problem became performance.</p>
<p><strong>Profiling</strong></p>
<p>I really, really thought about re-writing everything in C and upload it just to prove my algorithm works. I decided to give Ruby&#8217;s profiler a try, by running the code with the -r profile option.</p>
<p><strong> The results</strong></p>
<p>At the beginning I thought the Range#each method was the cause of my problems, but it isn&#8217;t because all relevant code runs inside one of them. I thought about whining about the language too, but for sure, the problem is with my algorithm.</p>
<p>Now I have a apparently functional brainfuck interpreter who does not run fast enough for SPOJs tests. The source is here. I don&#8217;t want to give up on it. My plans were to post it when it passes, but I just can&#8217;t see any solution in the near future, and I don&#8217;t want to abandon the blog either.</p>
<p>I&#8217;ll make more posts anytime this issue evolves. Or not.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/06/06/the-brainfuck-quest/feed/</wfw:commentRss>
		</item>
		<item>
		<title>@Railsconf \&#8217;08: Phusion Passenger</title>
		<link>http://xucros.com/2008/06/01/railsconf-08-phusion-passenger/</link>
		<comments>http://xucros.com/2008/06/01/railsconf-08-phusion-passenger/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 16:53:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[django]]></category>

		<category><![CDATA[mod_rails]]></category>

		<category><![CDATA[passenger]]></category>

		<category><![CDATA[phusion]]></category>

		<category><![CDATA[railsconf]]></category>

		<guid isPermaLink="false">http://xucros.com/?p=18</guid>
		<description><![CDATA[Between other things, the Phusion folks just announced Passenger now has rack and Django support. And Ruby Enterprise Edition is just announced too.
By the way, some of the licensees (me included) were asked to go up on the stage and received applauses. Awesome.
As soon as Kenji stops making fun of me and hand me the [...]]]></description>
			<content:encoded><![CDATA[<p>Between other things, the Phusion folks just announced Passenger now has rack and Django support. And Ruby Enterprise Edition is just announced too.</p>
<p>By the way, some of the licensees (me included) were asked to go up on the stage and received applauses. Awesome.</p>
<p>As soon as Kenji stops making fun of me and hand me the picture, I&#8217;ll upload it here.</p>
]]></content:encoded>
			<wfw:commentRss>http://xucros.com/2008/06/01/railsconf-08-phusion-passenger/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
