<?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/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Igo Coelho &#187; Dicas</title>
	<atom:link href="http://www.igocoelho.com.br/category/dicas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.igocoelho.com.br</link>
	<description>Meus pensamentos sobre muitas coisas...</description>
	<lastBuildDate>Thu, 05 Jan 2012 17:41:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<atom:link rel='hub' href='http://www.igocoelho.com.br/?pushpress=hub'/>
	<copyright>2006-2007 </copyright>
	<managingEditor>igocoelho@gmail.com (Igo Coelho)</managingEditor>
	<webMaster>igocoelho@gmail.com (Igo Coelho)</webMaster>
	<image>
		<url>http://www.igocoelho.com.br/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Igo Coelho</title>
		<link>http://www.igocoelho.com.br</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>Meus pensamentos sobre muitas coisas...</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Igo Coelho</itunes:author>
	<itunes:owner>
		<itunes:name>Igo Coelho</itunes:name>
		<itunes:email>igocoelho@gmail.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.igocoelho.com.br/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Os perigos para quem não sabe inglês</title>
		<link>http://www.igocoelho.com.br/2011/10/11/os-perigos-para-quem-nao-sabe-ingles/</link>
		<comments>http://www.igocoelho.com.br/2011/10/11/os-perigos-para-quem-nao-sabe-ingles/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 12:22:08 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Diversos]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=347</guid>
		<description><![CDATA[Eu já havia twittado sobre isso aqui. Para saber mais acesse o link. Link direto para o Youtube.]]></description>
			<content:encoded><![CDATA[<p>Eu já havia twittado sobre isso <a href="http://twitter.com/#!/igocoelho/status/120532755904864257" target="_blank">aqui</a>. Para saber mais acesse o <a href="http://coisasdblg.blogspot.com/2010/11/wtf-short-dick-man-xuxa-1995.html" target="_blank">link</a>.</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/FmKBQLWisOQ" frameborder="0" allowfullscreen></iframe></p>
<p><a href="http://youtu.be/FmKBQLWisOQ" target="_blank">Link direto para o Youtube.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2011/10/11/os-perigos-para-quem-nao-sabe-ingles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Let&#8217;s Program: Basic Grails Tutorial</title>
		<link>http://www.igocoelho.com.br/2011/04/14/lets-program-basic-grails-tutorial/</link>
		<comments>http://www.igocoelho.com.br/2011/04/14/lets-program-basic-grails-tutorial/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 01:36:30 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[Ágil]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=315</guid>
		<description><![CDATA[Foi lançado recemente no site do GRails na página de Screencasts a série a seguir: #1 http://grails.org/screencast/show/24 #2 http://grails.org/screencast/show/25 #2 Overrun http://grails.org/screencast/show/26 #3 http://grails.org/screencast/show/27 Recomendo que assistam todos os vídeos e espero que gostem]]></description>
			<content:encoded><![CDATA[<p>Foi lançado recemente no site do <a href="http://grails.org/" target="_blank">GRails</a> na página de <a href="http://grails.org/Grails+Screencasts" target="_blank">Screencasts</a> a série a seguir:</p>
<p>#1 <a href="http://grails.org/screencast/show/24" target="_blank">http://grails.org/screencast/show/24</a><br />
<iframe width="425" height="349" src="http://www.youtube.com/embed/WTP8gUfQ-e8" frameborder="0" allowfullscreen></iframe></p>
<p>#2 <a href="http://grails.org/screencast/show/25" target="_blank">http://grails.org/screencast/show/25</a><br />
<iframe width="425" height="349" src="http://www.youtube.com/embed/y7I2x4NwyfM" frameborder="0" allowfullscreen></iframe></p>
<p>#2 Overrun <a href="http://grails.org/screencast/show/26" target="_blank">http://grails.org/screencast/show/26</a><br />
<iframe width="425" height="349" src="http://www.youtube.com/embed/97r6uhnWsAY" frameborder="0" allowfullscreen></iframe></p>
<p>#3 <a href="http://grails.org/screencast/show/27" target="_blank">http://grails.org/screencast/show/27</a><br />
<iframe width="425" height="349" src="http://www.youtube.com/embed/eZFf4aiNbNU" frameborder="0" allowfullscreen></iframe></p>
<p>Recomendo que assistam todos os vídeos e espero que gostem <img src='http://www.igocoelho.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2011/04/14/lets-program-basic-grails-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dicas Java</title>
		<link>http://www.igocoelho.com.br/2011/04/06/dicas-java/</link>
		<comments>http://www.igocoelho.com.br/2011/04/06/dicas-java/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 20:32:33 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=306</guid>
		<description><![CDATA[Continuando com a dica de links fruto da limpeza que estou fazendo nas minhas anotações. Dessa vez trago assuntos relacionados com Java e arquitetura de software. [Java] http://blog.caelum.com.br/entendendo-o-serialversionuid/ http://blog.caelum.com.br/os-7-habitos-dos-desenvolvedores-hibernate-e-jpa-altamente-eficazes/ http://www.urubatan.com.br/orientacao-a-objetos-e-facil-as-pessoas-e-que-complicam/ http://www.rponte.com.br/2008/11/01/algumas-boas-praticas-com-jsf-e-richfaces/ http://www.objectzilla.com.br/2009/02/15/aprenda-java-ee-6-agora/ http://www.objectzilla.com.br/2009/02/24/aprenda-java-ee-6-agora-2/ http://www.objectzilla.com.br/2009/03/22/aprenda-java-ee-6-agora-3/ [Testes] http://andrefaria.com/2008/08/22/junit-4-em-60-segundos/ http://www.urubatan.com.br/test-infected-to-the-bones-tornando-os-testes-mais-divertidos/ http://jeveaux.com/2009/palestra-testes-de-unidade-com-junit/ [Metodologia] http://blog.aspercom.com.br/2008/05/03/3-qualidades-3-tipos-de-debitos/ http://www.akitaonrails.com/2008/12/18/tradu-o-d-vida-t-cnica http://josepaulopapo.blogspot.com/2008/11/behavior-acceptance-test-driven.html http://blog.improveit.com.br/articles/2008/08/06/palestra-de-modelagem-%C3%81gil-de-manoel-pimentel-na-tdc-2008 http://blog.improveit.com.br/articles/2008/08/01/documenta%C3%A7%C3%A3o-%C3%81gil [Arquitetura e afins] http://josepaulopapo.blogspot.com/2008/10/arquitetura-software.html http://blog.fragmental.com.br/2008/05/18/objetos-nao-sao-atributos-funcoes/ http://architecture-journal.blogspot.com/2008/05/arquitetura-de-software-no-brincadeira.html http://blog.fragmental.com.br/2008/05/22/domain-driven-design-e-simples/ http://josepaulopapo.blogspot.com/2008/04/qualidade-cdigo-manutenibilidade.html http://diego-pacheco.blogspot.com/2009/01/o-papel-do-arquiteto-de-software.html]]></description>
			<content:encoded><![CDATA[<p>Continuando com a dica de links fruto da limpeza que estou fazendo nas minhas anotações. Dessa vez trago assuntos relacionados com Java e arquitetura de software.</p>
<p><strong>[Java]</strong><br />
<a href="http://blog.caelum.com.br/entendendo-o-serialversionuid/" target="_blank">http://blog.caelum.com.br/entendendo-o-serialversionuid/</a><br />
<a href="http://blog.caelum.com.br/os-7-habitos-dos-desenvolvedores-hibernate-e-jpa-altamente-eficazes/" target="_blank">http://blog.caelum.com.br/os-7-habitos-dos-desenvolvedores-hibernate-e-jpa-altamente-eficazes/</a><br />
<a href="http://www.urubatan.com.br/orientacao-a-objetos-e-facil-as-pessoas-e-que-complicam/" target="_blank">http://www.urubatan.com.br/orientacao-a-objetos-e-facil-as-pessoas-e-que-complicam/</a><br />
<a href="http://www.rponte.com.br/2008/11/01/algumas-boas-praticas-com-jsf-e-richfaces/" target="_blank">http://www.rponte.com.br/2008/11/01/algumas-boas-praticas-com-jsf-e-richfaces/</a><br />
<a href="http://www.objectzilla.com.br/2009/02/15/aprenda-java-ee-6-agora/" target="_blank">http://www.objectzilla.com.br/2009/02/15/aprenda-java-ee-6-agora/</a><br />
<a href="http://www.objectzilla.com.br/2009/02/24/aprenda-java-ee-6-agora-2/" target="_blank">http://www.objectzilla.com.br/2009/02/24/aprenda-java-ee-6-agora-2/</a><br />
<a href="http://www.objectzilla.com.br/2009/03/22/aprenda-java-ee-6-agora-3/" target="_blank">http://www.objectzilla.com.br/2009/03/22/aprenda-java-ee-6-agora-3/</a></p>
<p><strong>[Testes]</strong><br />
<a href="http://andrefaria.com/2008/08/22/junit-4-em-60-segundos/" target="_blank">http://andrefaria.com/2008/08/22/junit-4-em-60-segundos/</a><br />
<a href="http://www.urubatan.com.br/test-infected-to-the-bones-tornando-os-testes-mais-divertidos/" target="_blank">http://www.urubatan.com.br/test-infected-to-the-bones-tornando-os-testes-mais-divertidos/</a><br />
<a href="http://jeveaux.com/2009/palestra-testes-de-unidade-com-junit/" target="_blank">http://jeveaux.com/2009/palestra-testes-de-unidade-com-junit/</a></p>
<p><strong>[Metodologia]</strong><br />
<a href="http://blog.aspercom.com.br/2008/05/03/3-qualidades-3-tipos-de-debitos/" target="_blank">http://blog.aspercom.com.br/2008/05/03/3-qualidades-3-tipos-de-debitos/</a><br />
<a href="http://www.akitaonrails.com/2008/12/18/tradu-o-d-vida-t-cnica" target="_blank">http://www.akitaonrails.com/2008/12/18/tradu-o-d-vida-t-cnica</a><br />
<a href="http://josepaulopapo.blogspot.com/2008/11/behavior-acceptance-test-driven.html" target="_blank">http://josepaulopapo.blogspot.com/2008/11/behavior-acceptance-test-driven.html</a><br />
<a href="http://blog.improveit.com.br/articles/2008/08/06/palestra-de-modelagem-%C3%81gil-de-manoel-pimentel-na-tdc-2008" target="_blank">http://blog.improveit.com.br/articles/2008/08/06/palestra-de-modelagem-%C3%81gil-de-manoel-pimentel-na-tdc-2008</a><br />
<a href="http://blog.improveit.com.br/articles/2008/08/01/documenta%C3%A7%C3%A3o-%C3%81gil" target="_blank">http://blog.improveit.com.br/articles/2008/08/01/documenta%C3%A7%C3%A3o-%C3%81gil</a></p>
<p><strong>[Arquitetura e afins]</strong><br />
<a href="http://josepaulopapo.blogspot.com/2008/10/arquitetura-software.html" target="_blank">http://josepaulopapo.blogspot.com/2008/10/arquitetura-software.html</a><br />
<a href="http://blog.fragmental.com.br/2008/05/18/objetos-nao-sao-atributos-funcoes/" target="_blank">http://blog.fragmental.com.br/2008/05/18/objetos-nao-sao-atributos-funcoes/</a><br />
<a href="http://architecture-journal.blogspot.com/2008/05/arquitetura-de-software-no-brincadeira.html" target="_blank">http://architecture-journal.blogspot.com/2008/05/arquitetura-de-software-no-brincadeira.html</a><br />
<a href="http://blog.fragmental.com.br/2008/05/22/domain-driven-design-e-simples/" target="_blank">http://blog.fragmental.com.br/2008/05/22/domain-driven-design-e-simples/</a><br />
<a href="http://josepaulopapo.blogspot.com/2008/04/qualidade-cdigo-manutenibilidade.html" target="_blank">http://josepaulopapo.blogspot.com/2008/04/qualidade-cdigo-manutenibilidade.html</a><br />
<a href="http://diego-pacheco.blogspot.com/2009/01/o-papel-do-arquiteto-de-software.html" target="_blank">http://diego-pacheco.blogspot.com/2009/01/o-papel-do-arquiteto-de-software.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2011/04/06/dicas-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dicas jQuery</title>
		<link>http://www.igocoelho.com.br/2011/03/08/dicas-jquery/</link>
		<comments>http://www.igocoelho.com.br/2011/03/08/dicas-jquery/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 15:17:31 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=300</guid>
		<description><![CDATA[Tenho um monte de links lidos e para ler. Estou tentando organizar as coisas, por isso vou começar a colocar a leitura dos mesmos em dia, categorizar e postar como dica para vocês. Com certeza teremos muitas coisas legais misturadas com dicas para iniciantes, assuntos avançados e  coisas/praticas que não devemos seguir Segue os primeiros [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Tenho um monte de links lidos e para ler. Estou tentando organizar as coisas, por isso vou começar a colocar a leitura dos mesmos em dia, categorizar e postar como dica para vocês.</p>
<p style="text-align: justify;">Com certeza teremos muitas coisas legais misturadas com dicas para iniciantes, assuntos avançados e  coisas/praticas que não devemos seguir <img src='http://www.igocoelho.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Segue os primeiros links com algumas coisas legais de jQuery:<br />
<a href="http://i18n.2kminterativa.com.br/jquery/jquery-getting-started-pt_br.html" target="_blank">http://i18n.2kminterativa.com.br/jquery/jquery-getting-started-pt_br.html<br />
</a><a href="http://visualjquery.com/" target="_blank">http://visualjquery.com/<br />
</a><a href="http://pedromenezes.com/os-40-melhores-plugins-da-jquery-para-facilitar-a-vida-do-desenvolvedor-web" target="_blank">http://pedromenezes.com/os-40-melhores-plugins-da-jquery-para-facilitar-a-vida-do-desenvolvedor-web<br />
</a><a href="http://pedromenezes.com/programar-plugins-jquery-produtividade" target="_blank">http://pedromenezes.com/programar-plugins-jquery-produtividade<br />
</a><a href="http://www.sastgroup.com/jquery/240-plugins-jquery" target="_blank">http://www.sastgroup.com/jquery/240-plugins-jquery<br />
</a><a href="http://www.dirceupauka.com/excelentes-truques-e-dicas-para-jquery" target="_blank">http://www.dirceupauka.com/excelentes-truques-e-dicas-para-jquery<br />
</a><a href="http://code.google.com/p/checkboxtree/" target="_blank">http://code.google.com/p/checkboxtree/<br />
</a><a href="http://www.datatables.net/" target="_blank">http://www.datatables.net/</a></p>
<p>Espero que gostem!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2011/03/08/dicas-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sobre as eleições 2010</title>
		<link>http://www.igocoelho.com.br/2010/09/04/sobre-as-eleicoes-2010/</link>
		<comments>http://www.igocoelho.com.br/2010/09/04/sobre-as-eleicoes-2010/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 15:22:01 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Diversos]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=282</guid>
		<description><![CDATA[Estou repassando o vídeo abaixo da palavra de advertência acerca das eleições de 2010 dada pelo Pr. Paschoal Piragine Jr, da Primeira Igreja Batista de Curitiba/PR. Normalmente não me pronuncio acerca de questões eleitorais, mas diante do momento que estamos vivendo, não diremos, nas palavras do Pr. Piragine, “em quem votar, mas em quem não [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Estou repassando o vídeo abaixo da palavra de advertência acerca das eleições de 2010 dada pelo Pr. Paschoal Piragine Jr, da Primeira Igreja Batista de Curitiba/PR.</p>
<p style="text-align: justify;">Normalmente não me pronuncio acerca de questões eleitorais, mas diante do momento que estamos vivendo, não diremos, nas palavras do Pr. Piragine, “em quem votar, mas em quem não votar”…</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ILwU5GhY9MI?fs=1&amp;hl=pt_BR" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/ILwU5GhY9MI?fs=1&amp;hl=pt_BR" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Referência: <a href="http://blogdosubira.wordpress.com/2010/09/03/palavra-do-pr-paschoal-piragine-jr-pib-curitiba-sobre-as-eleicoes-2010/" target="_blank">http://blogdosubira.wordpress.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2010/09/04/sobre-as-eleicoes-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integração Sinatra, Cucumber e Webrat</title>
		<link>http://www.igocoelho.com.br/2010/07/29/integracao-sinatra-cucumber-webrat/</link>
		<comments>http://www.igocoelho.com.br/2010/07/29/integracao-sinatra-cucumber-webrat/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 00:49:04 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ágil]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=225</guid>
		<description><![CDATA[Sempre que consigo algum tempo tento escrever alguma coisa no blog e desta vez quero mostrar como é fácil o desenvolvimento em BDD no Sinatra usando Cucumber e Webrat. Para quem numca ouviu falar nesses caras vamos as apresentações. Quem é esse Sinatra? Para quem não saber Sinatra é uma linguagem de domínio específico (DSL [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Sempre que consigo algum tempo tento escrever alguma coisa no blog e desta vez quero mostrar como é fácil o desenvolvimento em BDD no Sinatra usando Cucumber e Webrat. Para quem numca ouviu falar nesses caras vamos as apresentações. <img src='http://www.igocoelho.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align: justify;"><strong>Quem é esse Sinatra?</strong><br />
Para quem não saber <a href="http://www.sinatrarb.com" target="_blank">Sinatra</a> é uma linguagem de domínio específico (<a href="http://en.wikipedia.org/wiki/Domain-specific_language" target="_blank">DSL</a> &#8211; Domain Specific Language) para a criação rápida de aplicações web escritas em <a href="http://www.ruby-lang.org/pt/" target="_blank">ruby</a>. Ele mantém uma característica mínima definida, deixando livre o desenvolvedor para utilizar as ferramentas que melhor lhe servir em sua aplicação.</p>
<p style="text-align: justify;"><strong>BDD? Cucumber?</strong><br />
<a href="http://pt.wikipedia.org/wiki/Behavior_Driven_Development" target="_blank">BDD</a> ou Behavior Driven Development(Desenvolvimento Guiado por Comportamento) é uma técnica de desenvolvimento Ágil que encoraja colaboração entre desenvolvedores, setores de qualidade e pessoas não-técnicas ou de negócios num projeto de software. O foco em BDD é a linguagem e interações usadas no processo de desenvolvimento de software.</p>
<p style="text-align: justify;">O <a href="http://cukes.info/" target="_blank">Cucumber</a> foi criado para permitir que você execute a documentação de funcionalidades de uma aplicação, escritas em texto puro (também conhecidas como &#8220;estórias&#8221;). Com o Cucumber, isto é uma especificação executável que você pode  discutir com seu cliente e então usá-la para verificar o comportamento  correto dos testes. Por trás dos bastidores, você faz isto funcionar  criando &#8220;steps&#8221;, que são expressões regulares que executam código em  Ruby.</p>
<p style="text-align: justify;"><strong>Webrat</strong><br />
<a href="http://github.com/brynary/webrat" target="_blank">Webrat</a> é uma ferramenta fantástica que permite escrever rapidamente testes de aceitação expressivos e robustos para uma aplicação web Ruby. Ele nos fornece entre outras coisas:</p>
<ul>
<li>Simulador de browser de alto nível;</li>
<li>Suporta vários frameworks web Ruby;</li>
<li>Suporta os mais populares frameworks de teste;</li>
<li>Fornece uma API para verificar o HTML gerado usando CSS, XPath, etc.</li>
</ul>
<p style="text-align: justify;">Depois de feita as devidas apresentações vamos colocar a mão na massa. O primeiro passo é criar o diretório de nosso projeto.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ mkdir sinatra-cucumber
$ cd sinatra-cucumber</pre></td></tr></table></div>

<p style="text-align: justify;">Vamos acessar a pasta do projeto que acabamos de criar e executar os comandos abaixo para criar a pasta onde iremos definir nossas features.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ mkdir features
$ touch features/ola.feature</pre></td></tr></table></div>

<p><em>Obs.: Para quem não conhece o comando touch apenas criou um arquivo vazio.</em></p>
<p>No arquivo <strong>ola.feature</strong> escreva o seguinte código:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="text" style="font-family:monospace;"># language: pt
Funcionalidade: Ver páginas
  Como um usuário qualquer
  Eu quero acessar as páginas do sistema
  Para ter acesso a seu conteúdo
&nbsp;
  Cenário: Página principal
    Dado que acabei de acessar o sistema
    Então Eu devo ver o texto &quot;Olá, pessoal!&quot;</pre></td></tr></table></div>

<p>Vamos executar o cucumber e ver o que acontece. <img src='http://www.igocoelho.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ cucumber features/ola.feature</pre></td></tr></table></div>

<p><img class="alignnone size-full wp-image-251" title="cucumber_20100729_1" src="http://www.igocoelho.com.br/wp-content/uploads/2010/07/cucumber_20100729_1.png" alt="" width="519" height="441" /></p>
<p>Como era de esperar o teste não passou. Vamos em seguida criar os testes para nossa funcionalidade mais antes iremos criar uma tarefa rake para otimizar a chamada do Cucumber.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ touch Rakefile</pre></td></tr></table></div>

<p>O código para nossa tarefa rake que será executada com o comando &#8220;<em>rake  features</em>&#8221; é o seguinte:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'cucumber/rake/task'</span>
&nbsp;
<span style="color:#6666ff; font-weight:bold;">Cucumber::Rake::Task</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:features</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>t<span style="color:#006600; font-weight:bold;">|</span>
  t.<span style="color:#9900CC;">cucumber_opts</span> = <span style="color:#996600;">'--format pretty'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Agora sim podemos continuar.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ mkdir features/step_definitions
$ touch features/step_definitions/ola_steps.rb</pre></td></tr></table></div>

<p>No arquivo <strong>ola_steps.rb</strong> teremos o seguinte código:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">Dado /^que acabei de acessar o sistema$/ do
  visit(&quot;/&quot;)
end
&nbsp;
Entao /^Eu devo ver o texto &quot;(.+)&quot;$/ do |texto|
  response_body.should =~ Regexp.new(Regexp.escape(texto))
end</pre></td></tr></table></div>

<p style="text-align: justify;">Estes dois passos simples fazem uma solicitação a url do nosso aplicativo pelo Webrat e verifica se a resposta contém o texto que estamos procurando.</p>
<p style="text-align: justify;">Abaixo segue as configurações que fazem a integração realmente acontecer. Vamos configurar o ambiente do Cucumber para usar o Webrat.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ mkdir features/support
$ touch features/support/env.rb</pre></td></tr></table></div>

<p>O conteúdo do arquivo <strong>env.rb</strong> deve ser o seguinte:</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
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'spec/expectations'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rack/test'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'webrat'</span>
&nbsp;
Webrat.<span style="color:#9900CC;">configure</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>config<span style="color:#006600; font-weight:bold;">|</span>
  config.<span style="color:#9900CC;">mode</span> = <span style="color:#ff3333; font-weight:bold;">:rack</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> MyWorld
  <span style="color:#9966CC; font-weight:bold;">include</span> Rack::<span style="color:#CC00FF; font-weight:bold;">Test</span>::Methods
  <span style="color:#9966CC; font-weight:bold;">include</span> <span style="color:#6666ff; font-weight:bold;">Webrat::Methods</span>
  <span style="color:#9966CC; font-weight:bold;">include</span> <span style="color:#6666ff; font-weight:bold;">Webrat::Matchers</span>
&nbsp;
  <span style="color:#6666ff; font-weight:bold;">Webrat::Methods</span>.<span style="color:#9900CC;">delegate_to_session</span> <span style="color:#ff3333; font-weight:bold;">:response_code</span>, <span style="color:#ff3333; font-weight:bold;">:response_body</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> app
    <span style="color:#6666ff; font-weight:bold;">Sinatra::Application</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
World <span style="color:#9966CC; font-weight:bold;">do</span>
  MyWorld.<span style="color:#9900CC;">new</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">dirname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'/../../ola'</span></pre></td></tr></table></div>

<p style="text-align: justify;">Agora que temos nosso cenário montado podemos escrever nossa aplicação web com essas simples linhas abaixo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ touch ola.rb</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'sinatra'</span>
&nbsp;
get <span style="color:#996600;">'/'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#996600;">&quot;Olá, pessoal!&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Agora vamos executar mais uma vez o Cucumber e ver os testes passando para ficarmos felizes. <img src='http://www.igocoelho.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="text" style="font-family:monospace;">$ rake features</pre></td></tr></table></div>

<p><img class="alignnone size-full wp-image-250" title="cucumber_20100729_2" src="http://www.igocoelho.com.br/wp-content/uploads/2010/07/cucumber_20100729_2.png" alt="" width="522" height="185" /></p>
<p style="text-align: justify;">Bom pessoal, o objetivo foi cumprido e espero que tenha ficado claro como é fácil desenvolver em Sinatra usando BDD com Cucumber e Webrat. Sei que o exemplo foi bem simples e abaixo segue o código fonte do projeto e alguma referências para você conhecer mais do assunto.</p>
<p><strong>Código fonte</strong><a href="http://github.com/igocoelho/sinatra-cucumber" target="_blank"></p>
<p>http://github.com/igocoelho/sinatra-cucumber</a></p>
<p><strong>Conheça mais</strong><br />
Livro de Sinatra em Português<br />
<a href="http://sinatra.tailorfontela.com.br/" target="_blank">http://sinatra.tailorfontela.com.br/</a></p>
<p>Aplicação simples com Sinatra<br />
<a href="http://pomoti.com/aplicacao-simples-com-sinatra" target="_blank">http://pomoti.com/aplicacao-simples-com-sinatra</a></p>
<p>BDD com Cucumber, Selenium e Rails<br />
<a href="http://www.slideshare.net/cmilfont/bdd-com-cucumber-selenium-e-rails" target="_blank">http://www.slideshare.net/cmilfont/bdd-com-cucumber-selenium-e-rails</a></p>
<p>Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium &#8211; Parte I<br />
<a href="http://jefferson.eti.br/?p=96" target="_blank">http://jefferson.eti.br/?p=96</a></p>
<p>Introducão ao BDD com Cucumber, RSpec,  Webrat e Selenium &#8211; Parte II<a href="http://jefferson.eti.br/?p=105" target="_blank"></p>
<p>http://jefferson.eti.br/?p=105</a></p>
<p>Introducão ao BDD com Cucumber, RSpec,  Webrat e Selenium &#8211; Parte III<a href="http://jefferson.eti.br/?p=139" target="_blank"></p>
<p>http://jefferson.eti.br/?p=139</a></p>
<p>Screencast Ruby on Rails: Introdução a RSpec e Cucumber<br />
<a href="http://vimeo.com/7108280" target="_blank">http://vimeo.com/7108280</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2010/07/29/integracao-sinatra-cucumber-webrat/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Gerenciando as dependências com Ruby Tracker</title>
		<link>http://www.igocoelho.com.br/2010/07/12/gerenciando-dependencias-ruby-tracker/</link>
		<comments>http://www.igocoelho.com.br/2010/07/12/gerenciando-dependencias-ruby-tracker/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 14:19:29 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ágil]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=215</guid>
		<description><![CDATA[Ruby Tracker é um projeto de apoio à comunidade liderado por Jacob Swanner que tem como objetivo monitorar e informar as dependências entre gems em projetos Ruby. O Ruby Tracker funciona examinando o projeto e verificando quais gems são utilizadas e principalmente quais versões. Quando for preciso autalizar qualquer gem você será informado quais outras [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://rubytracker.com/" target="_blank">Ruby Tracker</a> é um projeto de apoio à comunidade liderado por Jacob Swanner que tem como objetivo monitorar e informar as dependências entre gems em projetos Ruby.</p>
<p style="text-align: justify;">O <a href="http://rubytracker.com/" target="_blank">Ruby Tracker</a> funciona examinando o projeto e verificando quais gems são utilizadas e principalmente quais versões. Quando for preciso autalizar qualquer gem você será informado quais outras também devem ser atualizadas e para qual versão.</p>
<p>Segue abaixo um vídeo demonstrando melhor o uso da ferramenta:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/YMC-TV2FCXg&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/YMC-TV2FCXg&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2010/07/12/gerenciando-dependencias-ruby-tracker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Para não esquecer: Ruby on Rails Unit Testing Assertions</title>
		<link>http://www.igocoelho.com.br/2010/02/27/para-nao-esquecer-ruby-on-rails-assertions/</link>
		<comments>http://www.igocoelho.com.br/2010/02/27/para-nao-esquecer-ruby-on-rails-assertions/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 17:44:42 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ágil]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=184</guid>
		<description><![CDATA[Basic Assertions assert(boolean, message) assert(person.name == “John”, “Name was expected to be John.”) assert(item.errors.invalid?(:price)) assert_equal(expected, actual, message) assert_equal(person.name, “John”, “Name was expected to be John.”) assert_equal(“can’t be empty”, product.errors.on(:price)) assert_not_equal(expected, actual, message) assert_not_equal(person.name, “Mary”, “Name was Mary and it should not be.”) assert_not_equal(“is not a number”, product.errors.on(:price)) assert_raise(Exception, message) { block&#8230; } assert_raise(ZeroDivisionError, “Cannot divide [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><strong>Basic Assertions</strong></p>
<p style="text-align: left;"><strong>assert(boolean, message)</strong><br />
assert(person.name == “John”, “Name was expected to be John.”)<br />
assert(item.errors.invalid?(:price))</p>
<p><strong>assert_equal(expected, actual, message)</strong><br />
assert_equal(person.name, “John”, “Name was expected to be John.”)<br />
assert_equal(“can’t be empty”, product.errors.on(:price))<br />
<strong><br />
assert_not_equal(expected, actual, message)</strong><br />
assert_not_equal(person.name, “Mary”, “Name was Mary and it should not be.”)<br />
assert_not_equal(“is not a number”, product.errors.on(:price))<br />
<strong><br />
assert_raise(Exception, message) { block&#8230; }</strong><br />
assert_raise(ZeroDivisionError, “Cannot divide by zero!”) { 100 / 0 }<br />
assert_raise(ActiveRecord::RecordNotFound) { Product.find(bad_id) }<br />
<strong><br />
assert_nothing_raised(Exception, message) { block&#8230; }</strong><br />
assert_nothing_raised(ZeroDivisionError) { 100 / [0,1].max }<br />
assert_nothing_raised(ActiveRecord::RecordNotFound) { Product.find(good_id) }<br />
<strong><br />
assert_nil(object, message)</strong><br />
assert_nil( product, “Expected product to be nil.” )<br />
assert_nil( Wine.find(:first, :conditions =&gt; ‘id = 1000’) )<br />
<strong><br />
assert_not_nil(object, message)</strong><br />
assert_not_nil( product, “Product should not be nil.” )<br />
assert_not_nil( Wine.find(:first, :conditions =&gt; ‘id = 1’) )<br />
<strong><br />
assert_valid(activerecord_object)</strong><br />
same as: assert(object.valid?)<br />
assert_valid(@person)<br />
assert_valid( Wine.find(1) )<br />
<strong><br />
flunk(message)</strong><br />
always fails immediately; same as: assert(false, message)<br />
flunk(“Quantity should not be greater than 100”) if quantity &gt; 100<br />
flunk(“Either user or account should be valid”) unless user.valid? || account.valid?</p>
<p style="text-align: center;"><strong>Advanced Assertions</strong></p>
<p><strong>assert_match(pattern, string, message)</strong><br />
assert_match(/^\d,\d{3},\d{3}$/, “1,000,000”, “Should match this format.”)<br />
<strong><br />
assert_no_match(pattern, string, message)</strong><br />
assert_no_match(/\d{3},\d{2}$/, “1,000,000”, “Should not match this format.”)<br />
<strong><br />
assert_in_delta(expected_float, actual_float, delta, message)</strong><br />
assert_in_delta(100.0, price, 20.0, “Price should be between 80.00 and 120.00”)<br />
assert_in_delta(2, length, 1, “Length should be 1-3 feet.”)<br />
<strong><br />
assert_instance_of( klass, object, message )</strong><br />
assert_instance_of( User, person, “person should be an instance of User” )<br />
<strong><br />
assert_kind_of( klass, object, message )</strong><br />
assert_kind_of( User, person, “person should be a kind of User” )<br />
assert_kind_of( Class, User, “User should be a kind of Class” )<br />
<strong><br />
assert_respond_to( object, symbol, message )</strong><br />
Instances only respond to instance methods, classes only respond to class methods<br />
assert_respond_to( person, :full_name, “No response to full_name” )<br />
assert_respond_to( User, :custom_find, “No response to custom_find” )<br />
<strong><br />
assert_throws(expected_symbol, message) { block&#8230; }</strong><br />
assert_throws(:done, “Array should be empty”) { throw :done if [].empty? }<br />
<strong><br />
assert_nothing_thrown(message) { block&#8230; }</strong><br />
assert_nothing_thrown(“Array should not be empty”) { throw :done if [1].empty? }</p>
<p style="text-align: center;"><strong>Rare Assertions &amp; DEFAULT EROR MESSA GES</strong></p>
<p><strong>assert_same( expected, actual, message)</strong><br />
same as: assert_equal(expected, actual)<br />
assert_same( person.name, “John”)<br />
<strong><br />
assert_not_same( expected, actual, message)</strong><br />
same as: assert_not_equal(expected, actual)<br />
assert_not_same( person.name, “Mary”)<br />
<strong><br />
assert_operator( object1, operator, object2, message )</strong><br />
same as: assert( object1.operator(object2) )<br />
assert_operator( 1000, :&lt;, 2000, “Expected 1000 to be less than 2000” )<br />
assert_operator( user, <img src='http://www.igocoelho.com.br/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> ld_enough?, Time.now(), “User should be old enough”)<br />
<strong><br />
assert_send([receiver, symbol, arg1, arg2], message)</strong><br />
same as: assert( receiver.message(arg1, arg2) )<br />
assert_send([product, :decrement_inventory, qty], “Decrement should succeed”)</p>
<p>From: /activerecord/lib/active_record/validations.rb</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
17
18
19
20
21
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">@@default_error_messages = <span style="color:#006600; font-weight:bold;">&#123;</span>
<span style="color:#ff3333; font-weight:bold;">:inclusion</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “is <span style="color:#9966CC; font-weight:bold;">not</span> included <span style="color:#9966CC; font-weight:bold;">in</span> the list”,
<span style="color:#ff3333; font-weight:bold;">:exclusion</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “is reserved”,
<span style="color:#ff3333; font-weight:bold;">:invalid</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “is invalid”,
<span style="color:#ff3333; font-weight:bold;">:confirmation</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “doesn’t match confirmation”,
<span style="color:#ff3333; font-weight:bold;">:accepted</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be accepted”,
<span style="color:#ff3333; font-weight:bold;">:empty</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “can’t be empty”,
<span style="color:#ff3333; font-weight:bold;">:blank</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “can’t be blank”,
<span style="color:#ff3333; font-weight:bold;">:too_long</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “is too long <span style="color:#006600; font-weight:bold;">&#40;</span>maximum is <span style="color:#006600; font-weight:bold;">%</span>d characters<span style="color:#006600; font-weight:bold;">&#41;</span>”,
<span style="color:#ff3333; font-weight:bold;">:too_short</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “is too short <span style="color:#006600; font-weight:bold;">&#40;</span>minimum is <span style="color:#006600; font-weight:bold;">%</span>d characters<span style="color:#006600; font-weight:bold;">&#41;</span>”,
<span style="color:#ff3333; font-weight:bold;">:wrong_length</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “is the wrong length <span style="color:#006600; font-weight:bold;">&#40;</span>should be <span style="color:#006600; font-weight:bold;">%</span>d characters<span style="color:#006600; font-weight:bold;">&#41;</span>”,
<span style="color:#ff3333; font-weight:bold;">:taken</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “has already been taken”,
<span style="color:#ff3333; font-weight:bold;">:not_a_number</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “is <span style="color:#9966CC; font-weight:bold;">not</span> a number”,
<span style="color:#ff3333; font-weight:bold;">:greater_than</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be greater than <span style="color:#006600; font-weight:bold;">%</span>d”,
<span style="color:#ff3333; font-weight:bold;">:greater_than_or_equal_to</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be greater than <span style="color:#9966CC; font-weight:bold;">or</span> equal to <span style="color:#006600; font-weight:bold;">%</span>d”,
<span style="color:#ff3333; font-weight:bold;">:equal_to</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be equal to <span style="color:#006600; font-weight:bold;">%</span>d”,
<span style="color:#ff3333; font-weight:bold;">:less_than</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be less than <span style="color:#006600; font-weight:bold;">%</span>d”,
<span style="color:#ff3333; font-weight:bold;">:less_than_or_equal_to</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be less than <span style="color:#9966CC; font-weight:bold;">or</span> equal to <span style="color:#006600; font-weight:bold;">%</span>d”,
<span style="color:#ff3333; font-weight:bold;">:odd</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be odd”,
<span style="color:#ff3333; font-weight:bold;">:even</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> “must be even”
<span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p><strong>Referência:</strong><br />
<a href="http://www.nullislove.com/2008/02/20/testing-in-rails-part-10-assertions/" target="_blank"> http://www.nullislove.com/2008/02/20/testing-in-rails-part-10-assertions/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2010/02/27/para-nao-esquecer-ruby-on-rails-assertions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A revista do futuro</title>
		<link>http://www.igocoelho.com.br/2009/12/18/a-revista-do-futuro/</link>
		<comments>http://www.igocoelho.com.br/2009/12/18/a-revista-do-futuro/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 11:46:28 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Diversos]]></category>
		<category><![CDATA[Revista]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=179</guid>
		<description><![CDATA[Colocando em dia hoje a minha leitura de feeds no Google Reader achei esse vídeo que traz uma ideia sobre o futuro das revistas no Lifehacker. Mag+ from Bonnier on Vimeo. Podemos ver que a Mag+ lança um novo olhar sobre o que as revistas do futuro podem se parecer. Clique aqui e confira o [...]]]></description>
			<content:encoded><![CDATA[<p>Colocando em dia hoje a minha leitura de feeds no <a href="http://reader.google.com/" target="_blank">Google Reader</a> achei esse vídeo que traz uma ideia sobre o futuro das revistas no <a href="http://lifehacker.com/" target="_blank">Lifehacker</a>.</p>
<p><object width="400" height="225" data="http://vimeo.com/moogaloop.swf?clip_id=8217311&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8217311&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /></object></p>
<p><a href="http://vimeo.com/8217311">Mag+</a> from <a href="http://vimeo.com/bonnier">Bonnier</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p><span id="result_box" class="long_text"><span style="background-color: #ffffff;" title="Mag+ takes a look at what magazines of the future may look like, Firefox nightly builds come with Chrome-like multi-process separation, and it may be time for a new approach with your stale old resume.">Podemos ver que a Mag+ lança um novo olhar sobre o que as revistas do futuro podem se parecer.</span></span></p>
<p><span class="long_text"><span style="background-color: #ffffff;" title="Mag+ takes a look at what magazines of the future may look like, Firefox nightly builds come with Chrome-like multi-process separation, and it may be time for a new approach with your stale old resume."><a href="http://lifehacker.com/5429068/remains-of-the-day-the-magazine-of-the-future-edition" target="_blank">Clique aqui</a> e confira o post no Lifehacker.<br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2009/12/18/a-revista-do-futuro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 6 of top 10 Lists by Coding Horror</title>
		<link>http://www.igocoelho.com.br/2009/05/16/top-6-of-top-10-lists-by-coding-horror/</link>
		<comments>http://www.igocoelho.com.br/2009/05/16/top-6-of-top-10-lists-by-coding-horror/#comments</comments>
		<pubDate>Sat, 16 May 2009 20:41:57 +0000</pubDate>
		<dc:creator>igocoelho</dc:creator>
				<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://www.igocoelho.com.br/?p=142</guid>
		<description><![CDATA[Ontem no trabaldo recebi um email do Fred de Castro onde le fez a tradução de um post do Coding Horror. Clique aqui e acesse o post original e abaixo segue a tradução. Jerry Weinberg: Os 10 Mandamentos da Programação sem Ego Entenda e aceite que você irá cometer erros; Você não é o seu [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem no trabaldo recebi um email do Fred de Castro onde le fez a tradução de um post do <a href="http://www.codinghorror.com/" target="_blank">Coding Horror</a>. <a href="http://www.codinghorror.com/blog/archives/000822.html" target="_blank">Clique aqui</a> e acesse o post original e abaixo segue a tradução.</p>
<p>Jerry Weinberg: <a href="http://www.codinghorror.com/blog/archives/000584.html" target="_blank">Os 10 Mandamentos da Programação  sem Ego</a></p>
<ol>
<li>Entenda e aceite que você irá  cometer erros;</li>
<li>Você não é o seu código;</li>
<li>Não importa quanto &#8220;Karatê&#8221; você sabe, sempre haverá alguém que sabe mais que  você;</li>
<li>Não reescreva código sem orientação;</li>
<li>Trate as pessoas que sabem menos que você com respeito, consideração e  paciência;</li>
<li>A única constante no mundo é a  mudança;</li>
<li>A verdadeira autoridade nasce do conhecimento, não  da posição;</li>
<li>Lute pelo que acredita, mas aceite a derrota com  elegância;</li>
<li>Não seja &#8220;o cara na sala&#8221;;</li>
<li>Critique  o código ao invés da pessoa &#8211; seja gentil com o programador, não com o código.</li>
</ol>
<p>Dare Obasanjo: <a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=a76eab63-70f0-48b4-8b75-66c366a651cd" target="_blank">Os 10 Sinais de Que Seu Projeto Está  Condenado</a></p>
<ol>
<li>Tentar fazer muita coisa na  primeira versão;</li>
<li>Criar uma funcionalidade crítica usando uma  tecnologia não comprovada;</li>
<li>Competir com um projeto interno  que já existe e que tem ótimo retorno ou tem patrocinadores  poderosos;</li>
<li>A equipe tem menos pessoas que o  necessário;</li>
<li>&#8220;Problemas complexos requerem soluções  complexas&#8221;;</li>
<li><a href="http://www.stickyminds.com/se/S7923.asp" target="_blank">Prazos irreais;</a></li>
<li><a href="http://www.projectperfect.com.au/info_scope_creep_mgmt.php" target="_blank">Mudanças  descontroladas no escopo do projeto</a>;</li>
<li><a href="http://www.answers.com/topic/second-system-syndrome" target="_blank">Sindrome do segundo  sistema &#8220;Second System Syndrome&#8221;</a>;</li>
<li>Não ter estratégia de  entrada no mercado;</li>
<li>Ficar travado em um problema que você não sabe  como resolver.</li>
</ol>
<p>Omar Shahine: <a href="http://www.shahine.com/omar/TipsForWorkingAtMS.aspx" target="_blank">As 10 Dicas Para Trabalhar na  Microsoft(ou em qualquer outro lugar)</a></p>
<ol>
<li>Processo não é substituto para  raciocínio;</li>
<li>Saia do seu escritório;</li>
<li>Use  seu produto(o que seus clientes irão usar);</li>
<li>Conserte as  coisas que estão quebradas ao invés de reclamar por elas estarem quebradas.  Ações falam mais que suas reclamações;</li>
<li>Faça um problema  difícil parecer fácil. Não faça problemas fáceis parecerem  difíceis;</li>
<li>Use a ferramenta de comunicação correta para o  serviço;</li>
<li>Aprenda a cometer erros;</li>
<li>Mantenha  as coisas simples;</li>
<li>Adicione valor sempre;</li>
<li>Use o  produto dos outros.</li>
</ol>
<p>Michael McDonough: <a href="http://www.designobserver.com/archives/000121.html" target="_blank">As 10 Coisas que Nunca me  Ensinaram na Escola de Design</a></p>
<ol>
<li>Talento é um-terço na equação do  sucesso;</li>
<li>95 por cento de qualquer profissional criativo é  trabalho;</li>
<li>Se tudo é igualmente importante, então nada é muito  importante;</li>
<li>Não pense demais sobre um  problema;</li>
<li>Comece com o que você sabe; então remova o que você  não sabe;</li>
<li>Não esqueça seu objetivo;</li>
<li>Quando  você joga seu peso para os lados, você geralmente cai da  balança;</li>
<li>A estrada para o inferno está cheia de boas  intenções; ou, nenhuma boa ação sai impune;</li>
<li>Tudo isto vai  aparecer no final;</li>
<li>O resto do mundo importa.</li>
</ol>
<p>Andres Taylor: <a href="http://www.taylor.se/blog/2007/03/22/top-ten-things-ten-years-of-professional-software-development-has-taught-me/" target="_blank">As 10 Coisas que Aprendí em Dez Anos  como Proffisional em Desenvolvimento de Software.</a></p>
<ol>
<li>Orientação a objetos é mais difícil  do que você pensa;</li>
<li>A parte difícil no desenvolvimento de  software é a comunicação;</li>
<li>Aprenda a dizer  não;</li>
<li>Se tudo é igualmente importante, então nada é  importante;</li>
<li>Não pense demais sobre um  problema;</li>
<li>Mergulhe realmente fundo em algo, mas não fique  preso;</li>
<li>Aprenda sobre as outras partes da máquina de  desenvolvimento de software;</li>
<li>Seus colegas são seus melhores  professores;</li>
<li>Tudo isto vai terminar no programa em  produção;</li>
<li>Algumas pessoas são idiotas.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.igocoelho.com.br/2009/05/16/top-6-of-top-10-lists-by-coding-horror/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

