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

<channel>
	<title>Hespanha &#187; Uncategorized</title>
	<atom:link href="http://www.hespanha.com.br/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hespanha.com.br/blog</link>
	<description>Apenas um programador que ama o que faz e servo do Senhor Jesus</description>
	<lastBuildDate>Sat, 24 Jul 2010 18:59:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Participação no Y! Hack Day 2010</title>
		<link>http://www.hespanha.com.br/blog/2010/03/participacao-no-y-hack-day-2010/</link>
		<comments>http://www.hespanha.com.br/blog/2010/03/participacao-no-y-hack-day-2010/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 03:44:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=67</guid>
		<description><![CDATA[Esse fim de semana eu participei do Yahoo Hack Day Brasil. Foi definitivamente o melhor evento de computação que eu já fui, perfeito, e o melhor de tudo, foi de graça. O objetivo do evento foi construir uma aplicação qualquer usando as APIs que o Yahoo disponibiliza, excelentes APIs, diga-se de passagem. Eu formei um [...]]]></description>
			<content:encoded><![CDATA[<p>Esse fim de semana eu participei do Yahoo Hack Day Brasil. Foi definitivamente o melhor evento de computação que eu já fui, perfeito, e o melhor de tudo, foi de graça. O objetivo do evento foi construir uma aplicação qualquer usando as APIs que o Yahoo disponibiliza, excelentes APIs, diga-se de passagem.</p>
<p>Eu formei um time com dois amigos do UOL(<a href="http://www.twitter.com/rafael_manoel">Rafael</a> e <a href="http://www.twitter.com/wandi">Wandi</a>) e um amigo feito no Rails Summit(<a href="http://www.twiter.com/marcos_sousa">Marcos Sousa</a>).</p>
<p>Falando um pouco do nosso projeto, ele consistiu de um site no qual o usuário informava um endereço da cidade de São Paulo, e a partir disso o site retornava dados sobre a criminalidade na região daquele endereço. Pra chegar nisso, a gente fez o seguinte:</p>
<p>1) Recuperamos todos os endereços de delegacias da cidade de São Paulo e pra cada um obtivemos a latitude e a longitude usando a API do Yahoo Maps. Depois salvamos na nossa aplicação essas informações.</p>
<p>2) Dado o endereço do usuário nós usamos a API do Yahoo Maps para obter a latitude e longitude do endereço.</p>
<p>3) Calculamos qual a delegacia mais próxima do endereço informado usando os dados da latitude e longitude que tinhamos na mão.</p>
<p>4) Depois de encontrada a delegacia mais próxima nós vamos em um site de dados da secretaria de segurança da cidade de São Paulo, e usamos a fantástica API YQL para obter os dados daquela delegacia. Os dados no site da secretaria de segurança ficam expostos em uma tabela HTML, então o YQL ajuda muito para filtrar estes dados.</p>
<p>5) Com os dados na mão é só exibir para o usuário o indice de criminalidade naquela região.</p>
<p>Bom, quem quiser conferir o endereço do nosso projeto é:</p>
<p><a href="http://violenciasp.appspot.com">http://violenciasp.appspot.com</a></p>
<p>O layout tem algumas falhas, principalmente em browsers no Windows, mas não se esqueçam que é um projeto feito em 24hs. hehehe Quem sabe no futuro a gente de um tapa e melhore o site.</p>
<p>Infelizmente o nosso hack não nos rendeu nenhum prêmio, mas com certeza o aprendizado que o evento proporcionou valeu muito! E pra quem não conhece, eu recomendo muito dar uma olhada nas APIs do Yahoo, especialmente nesse tal de YQL que é show de bola!</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2010/03/participacao-no-y-hack-day-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simulador de algoritmos de geometria computacional escrito em Python</title>
		<link>http://www.hespanha.com.br/blog/2010/01/simulador-de-algoritmos-de-geometria-computacional-escrito-em-python/</link>
		<comments>http://www.hespanha.com.br/blog/2010/01/simulador-de-algoritmos-de-geometria-computacional-escrito-em-python/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 02:18:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=60</guid>
		<description><![CDATA[No semestre passado eu tive a oportunidade de fazer um projeto muito bacana no mestrado. Eu cursei uma matéria chamada Geometria computacional, que como o próprio nome diz, estuda algoritmos clássicos para resolver problemas geométricos. Como projeto final, tivemos que criar um “simulador visual” de um dos problemas geométricos que estudamos. A idéia era implementar [...]]]></description>
			<content:encoded><![CDATA[<p>No semestre passado eu tive a oportunidade de fazer um projeto muito bacana no mestrado. Eu cursei uma matéria chamada Geometria computacional, que como o próprio nome diz, estuda algoritmos clássicos para resolver problemas geométricos. Como projeto final, tivemos que criar um “simulador visual” de um dos problemas geométricos que estudamos. A idéia era implementar o algoritmo força-bruta que resolve o problema e um algoritmo assintoticamente mais rápido, tudo isso de uma forma que o usuário pudesse ver o que o algoritmo está fazendo a cada instante.</p>
<p>Eu e mais um colega de classe resolvemos implementar os algoritmos que resolvem o problema de localizar intersecção de segmentos no plano, ou seja, dado um conjunto de n retas no plano localizar quais delas se intersectam. O <a href="http://www.ime.usp.br/~alexis">Alexis</a>, um ex-aluno do ime-usp, desenvolveu no ano que ele fez essa matéria toda uma interface gráfica bem modular para esse tipo de projeto feita em Python. Como Python é uma linguagem muito massa e seria bem mais simples usar essa interface que ele desenvolveu do que criar uma nossa do zero, resolvemos usar ela para o nosso projeto.</p>
<p>Implementamos um algoritmo conhecido como <a href="http://softsurfer.com/Archive/algorithm_0108/algorithm_0108.htm">Shamos &#038; Hoey(SH)</a> que encontra a primeira interseção em um conjunto de n segmentos de reta. Esse algoritmo possui complexidade O(nlgn), e para atingir essa complexidade ele requer uma estrutura de dados que busca um elemento em um conjunto de n elementos em tempo O(lgn). Sendo assim, resolvemos implementar o algoritmo com três sabores: Com Árvore de Busca Binária Balanceada, Árvore de Busca Binária Sem Balanceamento e Skip List. A idéia resumida do algoritmo é analisar todas as retas, mas ao invés de testar a intersecção de cada uma com todas as outras, ele testa apenas a reta logo acima e a logo abaixo da que está sendo analisada, pois obviamente, se estas duas não intersectam a reta, nenhuma outra intersecta, dada uma linha de varredura sobre o eixo x.  Além disso, implementamos a versão Força-Bruta que consome tempo O(nˆ2), já que pra cada reta analisada, ele verifica a intersecção com todas as outras.</p>
<p>Segue abaixo alguns screenshots com o resultado final:</p>
<p><img src="http://www.hespanha.com.br/images/proj1.png" alt="Tela inicial" /></p>
<p><img src="http://www.hespanha.com.br/images/proj2.png" alt="Após execução do algoritmo" /></p>
<p> No exemplo mostrado, como a árvore de busca não crescia muito, o tempo entre a execução com árvore balanceada e não balanceada foram equivalentes, mas em casos onde a árvore cresce(existem exemplos deste no código) é bem bacana ver a diferença que dá usar uma árvore balanceada. A diferença entre o algoritmo de SH e o Força-Bruta então é gritante. Um programa como esse é legal para abrir os olhos daqueles que não dão valor para Analise de Algoritmos. Se você não acredita o quanto um algoritmo O(nlgn) é melhor que um O(nˆ2), agora você pode ver e comprovar. =)</p>
<p>Coloquei o código no GitHub para caso alguém se interesse por olhar e/ou rodar o programa. Está em <a href="http://github.com/luizhespanha/geometry-algorithms-simulation">http://github.com/luizhespanha/geometry-algorithms-simulation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2010/01/simulador-de-algoritmos-de-geometria-computacional-escrito-em-python/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Repositório de códigos de campeonatos de programação</title>
		<link>http://www.hespanha.com.br/blog/2009/12/repositorio-de-codigos-de-campeonatos-de-programacao/</link>
		<comments>http://www.hespanha.com.br/blog/2009/12/repositorio-de-codigos-de-campeonatos-de-programacao/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 19:54:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=56</guid>
		<description><![CDATA[Como muitos que me conhecem sabem, eu sou um grande fã de campeonatos de programação. Na época da graduação eu participei por 2 anos consecutivos da Maratona de Programação, e hoje em dia, mesmo não podendo mais participar, ainda me divirto resolvendo problemas em sites como: TopCoder, br.spoj.pl e uva. No próximo ano eu pretendo [...]]]></description>
			<content:encoded><![CDATA[<p>Como muitos que me conhecem sabem, eu sou um grande fã de campeonatos de programação. Na época da graduação eu participei por 2 anos consecutivos da <a href="http://maratona.ime.usp.br">Maratona de Programação</a>, e hoje em dia, mesmo não podendo mais participar, ainda me divirto resolvendo problemas em sites como: <a href="http://www.topcoder.com">TopCoder</a>, <a href="http://br.spoj.pl">br.spoj.pl</a> e <a href="http://uva.onlinejudge.org/">uva</a>.</p>
<p>No próximo ano eu pretendo participar do <a href="http://code.google.com/codejam/">Google Code Jam</a> pra valer, pra conseguir um resultado honroso. E pra isso, eu estipulei uma meta de resolver um problema por dia útil da semana, ou seja, aproximadamente 20 problemas por mês.</p>
<p>A partir dessa idéia surgiu uma outra de disponibilizar o códigos desses problemas que eu resolver em um repositório. Dessa idéia surgiu o: <a href="http://github.com/luizhespanha/maratona-programacao">http://github.com/luizhespanha/maratona-programacao</a>.</p>
<p>A idéia de disponibilizar os códigos não é muito bem vista pela comunidade que gosta destes campeonatos, pois isso acaba tirando a graça do desafio de outras pessoas, porém, o Google Code JAM disponibiliza o código de todos os concorrentes, e eu achei muito bacana, porque mesmo tendo resolvido um problema, eu tive a oportunidade de ver os códigos do ACRush, e ver como ele programa, algo que com certeza vale a pena. Logo, cabe a quem se interessar avaliar se é interessante ou não olhar um código do repositório sem tentar resolver primeiro.</p>
<p>Espero que consiga manter minha meta. Para problemas mais elaborados também pretendo criar um post com algumas explicações.</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2009/12/repositorio-de-codigos-de-campeonatos-de-programacao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Respeite seu cliente! Mantenha compatibilidade entre versões.</title>
		<link>http://www.hespanha.com.br/blog/2009/06/respeite-seu-cliente-mantenha-compatibilidade-entre-versoes/</link>
		<comments>http://www.hespanha.com.br/blog/2009/06/respeite-seu-cliente-mantenha-compatibilidade-entre-versoes/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 02:02:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=34</guid>
		<description><![CDATA[Hoje tive uma surpresa extremamente desagradável. Temos um framework de uma empresa ˜conceituada” que é o responsável pelo core de um sistema crítico que temos aqui na empresa. A empresa responsável lançou recentemente uma nova versão deste framework que possui diversas coisas importantes que estavamos querendo a tempos. Então lá fui eu feliz e contente [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Hoje tive uma surpresa extremamente desagradável. Temos um framework de uma empresa ˜conceituada” que é o responsável pelo core de um sistema crítico que temos aqui na empresa. A empresa responsável lançou recentemente uma nova versão deste framework que possui diversas coisas importantes que estavamos querendo a tempos. Então lá fui eu feliz e contente baixar a nova versão para colocar no projeto. Faço o download e vou ver o README.txt para ver como fazer a migração da versão antiga para a nova versão. Para a minha surpresa leio o seguinte:</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">“Esta versão é totalmente incompátivel com a versão antiga. Mudamos a API, mudamos as tabelas no banco de dados, ou seja, mudamos tudo. Ah, também não existe nenhuma ferramenta para ajudar na migração”</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Ou seja, basicamente um “Dane-se você, se vira se quiser migrar”</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Na minha opinião, isso é o cúmulo da falta de respeito com o seu cliente, que usa a sua ferramenta. Tá na hora das empresas entenderem que é uma obrigação manter a compatibilidade entre versões. Eu até entendo que existem mudanças que necessitam quebrar tudo, mas então, nesse caso, a empresa fornecedora deveria ter o dever de prover ferramentas e guias para orientar os clientes em migrações.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Estamos em uma situação delicadissima no projeto. Migrar versões em um projeto que é responsável pelo billing da empresa é sempre um drama. Nessa condições então, onde a empresa fornecedora lavou as mãos então.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Nesse aspecto, eu respeito bastante a Sun e a Oracle. Essas empresas sempre foram bem conservadoras em relação a compatibilidade, e com certeza, é por isso que elas são tão respeitadas e seus produtos atingiram sucesso. Um outro belo exemplo foi a migração de versões do WordPress, eu simplesmente apertei um botão e a ferramenta se atualizou sozinha.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Já essa empresa que faz esse framework que usamos no projeto sempre foi negligente em relação a mudanças de versões. Mesmo em mudanças de versões minors eles conseguem tornar suas ferramentas incompativeis entre versões! Mas enfim, paciência!</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Meu objetivo nesse post é conscientizar os programadores a sempre atentarem para esse ponto. Em um momento que a integração entre sistemas, SOA, ganham força a cada dia, é importantíssimo mantermos compatibilidade quando atualizarmos nossos sistemas. Isso inspira confiança para o cliente do seu sistema/framework/API/serviço. É sempre preciso fazer o possivel e o impossível para isso. E no caso que realmente for imprescindível quebrar a compatibilidade, fazer tudo para ajudar o seu cliente e nunca ˜lavar as mãos˜.</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px;"><span style="letter-spacing: 0.0px;"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica;"><span style="letter-spacing: 0.0px;">Fica aqui meu desabafo! </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2009/06/respeite-seu-cliente-mantenha-compatibilidade-entre-versoes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Brincando com AppleScript</title>
		<link>http://www.hespanha.com.br/blog/2009/01/brincando-com-applescript/</link>
		<comments>http://www.hespanha.com.br/blog/2009/01/brincando-com-applescript/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 04:33:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=20</guid>
		<description><![CDATA[De férias no trabalho, as vésperas de viajar, sem muito o que fazer, resolvi brincar um pouco com AppleScript. Meu conhecimento anterior de AppleScript era nulo, nunca não tinha nem visto como era um código feito em AppleScript, e por isso me surpreendi com a facilidade que é desenvolver um!! Eu fiz um scriptzinho de [...]]]></description>
			<content:encoded><![CDATA[<p>De férias no trabalho, as vésperas de viajar, sem muito o que fazer, resolvi brincar um pouco com AppleScript. Meu conhecimento anterior<br />
de AppleScript era nulo, nunca não tinha nem visto como era um código feito em AppleScript, e por isso me surpreendi com a facilidade que<br />
é desenvolver um!!</p>
<p>Eu fiz um scriptzinho de algo que eu já queria faz tempo. Eu queria que quando eu ligasse o meu Mac e entrasse no sistema operacional, ele<br />
falasse algumas palavras! Isso &#8220;ainda&#8221; gera um certo fascínio nas pessoas, principalmente nos usuários leigos, é algo diferente ver um<br />
computador falando! Como a tarefa foi muito fácil e terminei em 5 minutos, resolvi incrementar um pouquinho meu script e adicionar umas<br />
condicionais para o meu Mac falar frases diferentes dependendo do horário!</p>
<p>Pra começar, o Mac vêm com uma ferramenta chamada &#8220;Script Editor&#8221;. Ela é muito simples e intuitiva, e possui diversos templates de comandos, o que ajuda muito pra aprender a sintaxe. Sem muito esforço e com a ajuda dessa ferramenta eu desenvolvi o script abaixo:<br />
[sourcecode language='java']<br />
if time of (current date) < 43200 then<br />
    tell application "Console"<br />
        say "Good Morning, Mr Hespanha"<br />
        say "Do you want a coffee?"<br />
    end tell<br />
else<br />
    if time of (current date) < 64800 then<br />
        tell application "Console"<br />
            say "Good Afternoon, Mr Hespanha"<br />
            say "Time to program!"<br />
        end tell<br />
    else<br />
        tell application "Console"<br />
           say "Good night, Mr Hespanha"<br />
           say "Time to play!!"<br />
        end tell<br />
    end if<br />
end if<br />
[/sourcecode]<br />
A chamada a função time of(current date) retorna a quantidade de minutos decorridas no dia.</p>
<p>Os demais comandos são auto-explicativos!</p>
<p>Feito isso, foi só salvar o arquivo como "Application Bundle" e colocar ele pra rodar no login do meu usuário. Como diz o grande <a title="Aurélio" href="http://www.aurelio.net">Aurélio</a>: &#8220;Simple == Beautiful&#8221;.</p>
<p>Gostei muito da experiência de desenvolver(se é que se pode falar isso) com AppleScript. Quando voltar de férias pretendo me aventurar<br />
mais e tentar fazer umas coisinhas mais elaboradas!</p>
<p>O Aurelio mantém uma página com vários AppleScripts. Quem quiser conhecer, o endereço é: <a title="http://www.aurelio.net/soft/" href="http://www.aurelio.net/soft/">http://www.aurelio.net/soft/</a></p>
<p>Pra aprender mais sobre AppleScripts, é só dar uma googada que vão aparecer diversos tutoriais e dicas!!</p>
<p>É isso! Abraços e até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2009/01/brincando-com-applescript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Livro recomendado: &#8220;Algoritmos em linguagem C&#8221;</title>
		<link>http://www.hespanha.com.br/blog/2008/12/livro-recomendado-algoritmos-em-linguagem-c/</link>
		<comments>http://www.hespanha.com.br/blog/2008/12/livro-recomendado-algoritmos-em-linguagem-c/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 02:31:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[algoritmos]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[IME]]></category>
		<category><![CDATA[USP]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=19</guid>
		<description><![CDATA[Faz um tempo eu publiquei uma lista de 10 livros que eu achava fundamental para a formação de um bom programador. Na época, ainda não existia o livro &#8220;Algoritmos em linguagem C&#8221; do brilhante professor Paulo Feofiloff, então eu gostaria de adicionar mais este livro a minha seleta lista de livros recomendados. Recomendo este livro [...]]]></description>
			<content:encoded><![CDATA[<p>Faz um tempo eu publiquei uma lista de 10 livros que eu achava fundamental para a formação de um bom programador. Na época, ainda não existia o livro &#8220;Algoritmos em linguagem C&#8221; do brilhante professor <a href="http://www.ime.usp.br/~pf">Paulo Feofiloff</a>, então eu gostaria de adicionar mais este livro a minha seleta lista de livros recomendados.</p>
<p>Recomendo este livro tanto para os mais novatos quanto para programadores já experientes. É um livro de leitura agradável e objetiva. Mais do que simplesmente aprender sobre algoritmos, o professor PF dá muita enfase em como escrever bons códigos, bem documentados, e demonstra como provar que um algoritmo está correto por meio de invariantes. Independente de se estar interessado em aprender C ou não, o livro é recomendadissimo, já que é muito simples e trivial fazer um algoritmo em C virar código Java por exemplo.</p>
<p>Bom, tá aí a dica. E quem se interessa por algoritmos, não pode deixar de visitar a página do professor PF, onde há muito material bom sobre: estrutura de dados, teoria dos grafos, otimização combinatória, analise de algoritmos etc etc etc <img src='http://www.hespanha.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2008/12/livro-recomendado-algoritmos-em-linguagem-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Usar -Dmaven.test.skip=true é pecado!</title>
		<link>http://www.hespanha.com.br/blog/2008/10/usar-dmaventestskiptrue-e-pecado/</link>
		<comments>http://www.hespanha.com.br/blog/2008/10/usar-dmaventestskiptrue-e-pecado/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 01:29:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=17</guid>
		<description><![CDATA[Certa vez estava numa palestra do Vinicius da Globalcode, e ele disse brincando a seguinte frase: &#8220;O JMetter é muito louco! Não sei como alguém faz um negócio tão bom como esse e distribui gratuitamente.&#8221;. Eu diria o mesmo a respeito do Maven. O Maven é uma ferramente fantastica e indispensável para todo projeto Java. [...]]]></description>
			<content:encoded><![CDATA[<p>Certa vez estava numa palestra do Vinicius da Globalcode, e ele disse brincando a seguinte frase: &#8220;O JMetter é muito louco! Não sei como alguém faz um negócio tão bom como esse e<br />
distribui gratuitamente.&#8221;. Eu diria o mesmo a respeito do Maven. O Maven é uma ferramente fantastica e indispensável para todo projeto Java.</p>
<p>Entre as muitas features do Maven que eu gosto, uma das minhas preferidas é que sempre que você precisa compilar o projeto para gerar os seus ears, jars, sars etc, ele executa automaticamente<br />
todos os testes unitários do projeto, e se algum teste não passar ele não compila o projeto. Acho esse recurso formidável para manter a qualidade do projeto.</p>
<p>Porém, infelizmente existe o parâmetro -Dmaven.test.skip=true, que se você passa ele, os testes não são executados. Agora imagine a seguinte situação: &#8220;O sprint está aos 45 do segundo tempo, você<br />
precisa gerar o ear do projeto pra fechar o sprint e mostrar pro Product Owner, dai você manda o Maven compilar o projeto e os testes unitários não passam&#8221; O que fazer nesta situação? Taca o &#8220;Skip Test&#8221;<br />
lá e vamos embora certo?</p>
<p>Ao menos na minha opinião, ERRADISSIMO. Neste caso, é sprint NOT DONE e acabou. O código não está apto para ir para produção, afinal, dizem os mais críticos que código não testado é lixo. Eu não tenho<br />
uma opinião tão rígida, mas concordo que é muito arriscado colocar um código em produção sem testa-lo, ainda mais se você escreveu testes pra esse código, e os testes não estão passando.</p>
<p>Usar -Dmaven.test.skip=true é tentador. Eu mesmo já usei várias vezes, sempre com o pensamento que &#8220;Ah, o código tá certo, precisa só arrumar os testes mas depois quando tiver tempo eu faço isso&#8221;. Hoje,<br />
com mais maturidade eu vejo que isso é um erro feio, e eu aboli completamente este parâmetro da minha vida. Finjo que ele não existe, e tenho até vontade de recompilar o Maven para arrancar ele de vez, para<br />
não correr riscos de ter recaidas. Hehehe</p>
<p>Fica aqui então o recado deste post, se você não conhecia esse parâmetro macabro, continue sem conhecer, se você conhecia mas não usa, excelente, se você conhecia e ainda usa, esta na hora de mudar<br />
a sua mente, deixar de apelar, e começar a testar o código direito. <img src='http://www.hespanha.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Um abraço e até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2008/10/usar-dmaventestskiptrue-e-pecado/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Endereço do meu antigo blog</title>
		<link>http://www.hespanha.com.br/blog/2008/06/endereco-do-meu-antigo-blog/</link>
		<comments>http://www.hespanha.com.br/blog/2008/06/endereco-do-meu-antigo-blog/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 01:16:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.hespanha.com.br/blog/?p=7</guid>
		<description><![CDATA[Esse post é apenas para deixar uma referência aqui para o meu blog antigo, para que assim, quem entre pela primeira vez neste novo blog possa ver o que eu já escrevi. Eu tentei migrar o conteúdo do antigo blog para este novo mas não obtive sucesso. Eu tentei fazer a importação via RSS mas [...]]]></description>
			<content:encoded><![CDATA[<p>Esse post é apenas para deixar uma referência aqui para o meu blog antigo, para que assim, quem entre pela primeira vez neste novo blog possa ver o que eu já escrevi.</p>
<p>Eu tentei migrar o conteúdo do antigo blog para este novo mas não obtive sucesso. Eu tentei fazer a importação via RSS mas não funcionou. <img src='http://www.hespanha.com.br/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  Acho que o UOL não quer colaborar muito com quem quer migrar do servidor de blogs deles para algum outro.</p>
<p>Mas enfim, chega de papo! O endereço do meu antigo blog é:  <a title="http://lavh.zip.net" href="http://lavh.zip.net">http://lavh.zip.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hespanha.com.br/blog/2008/06/endereco-do-meu-antigo-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
