<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Cairo'sBlog</title>
	
	<link>http://www.caironoleto.com</link>
	<description>Mais um blog sobre tecnologia ...</description>
	<pubDate>Wed, 07 Jan 2009 02:20:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/caironoleto" type="application/rss+xml" /><item>
		<title>Benchmarks: Como vou saber se está bom ou ruim?</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/504843354/</link>
		<comments>http://www.caironoleto.com/2009/01/06/benchmarks-como-vou-saber-se-esta-bom-ou-ruim/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 02:20:37 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[Paradigmas]]></category>

		<category><![CDATA[Pensamentos]]></category>

		<category><![CDATA[benchmarks]]></category>

		<category><![CDATA[comparação entre linguagens]]></category>

		<category><![CDATA[comparações entre frameworks]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=159</guid>
		<description><![CDATA[Esta foi a pergunta que um amigo me fez no GTalk, eu respondi a ele mas gostei do assunto, é um bom assunto para começar 2009.
Como vou saber se está bom ou ruim um benchmark?! Simples, assim como muita coisa na vida, tudo depende do ponto de vista. A grande maioria dos benchmarks são sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Esta foi a pergunta que um amigo me fez no GTalk, eu respondi a ele mas gostei do assunto, é um bom assunto para começar 2009.</p>
<p>Como vou saber se está bom ou ruim um benchmark?! Simples, assim como muita coisa na vida, tudo depende do ponto de vista. A grande maioria dos benchmarks são sobre performance, tecnologia X é mais rápido do que Y ou framework U é mais rápido do que framework K.</p>
<p>Mas existem alguns benchmarks específicos como framework Y é mais fácil de fazer manutenção do que framework Z ou o tamanho dos arquivos gerados. Enfim, todos os propósitos dos benchmarks são apenas para demonstrar o lado bom e o ruim de uma tecnologia e levantar dados que facilitam na escolha dessas tecnologias.</p>
<p>Se você está indeciso de sobre qual tecnologia escolher, pesquise todos os benchmarks que existem sobre esta tecnologia em comparações a outras, se ainda não estiver satisfeito, faça seus próprios benchmarks e no final faça um levantamento junto com a sua equipe e discuta todos os pontos.</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=SsjLO1"><img src="http://feeds.feedburner.com/~a/caironoleto?i=SsjLO1" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/504843354" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2009/01/06/benchmarks-como-vou-saber-se-esta-bom-ou-ruim/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2009/01/06/benchmarks-como-vou-saber-se-esta-bom-ou-ruim/</feedburner:origLink></item>
		<item>
		<title>Feliz festas!</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/493928449/</link>
		<comments>http://www.caironoleto.com/2008/12/24/feliz-festas/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 10:17:16 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[Off-topic]]></category>

		<category><![CDATA[2009]]></category>

		<category><![CDATA[ano novo]]></category>

		<category><![CDATA[feliz]]></category>

		<category><![CDATA[Feliz Natal]]></category>

		<category><![CDATA[festas]]></category>

		<category><![CDATA[natal]]></category>

		<category><![CDATA[Própero ano novo]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=158</guid>
		<description><![CDATA[Pensavam que eu tinha esquecido totalmente do meu blog?! Não!
Infelizmente nesse final de ano foi muito corrido, muitas tarefas, muito trabalho, projetos, opensource. Depois que cheguei de São Paulo foi uma correria!
Mas em 2009 esse quadro vai mudar :)
Eu quero dizer a vocês o quanto eu estou agradecido com todos os meus leitores, as pessoas [...]]]></description>
			<content:encoded><![CDATA[<p>Pensavam que eu tinha esquecido totalmente do meu blog?! Não!</p>
<p>Infelizmente nesse final de ano foi muito corrido, muitas tarefas, muito trabalho, projetos, opensource. Depois que cheguei de São Paulo foi uma correria!</p>
<p>Mas em 2009 esse quadro vai mudar :)</p>
<p>Eu quero dizer a vocês o quanto eu estou agradecido com todos os meus leitores, as pessoas que me seguem no <a title="@caironoleto" href="http://www.twitter.com/caironoleto">twitter</a> e as pessoas que conheci neste ano de 2008. Este ano, foi um ano inesquecível e espero que 2009 seja mais ainda!</p>
<p>Meus planos para 2009 já estão feitos, e se for que nem os planos de 2008, todos serão realizados. Espero que os seus planos tenham dado certo e que vocês estejam felizes nesse final de ano!</p>
<p>Papo ta bom, mas preciso trabalhar! :P Então, feliz natal e um própero ano novo, até 2009!</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=WSQGHE"><img src="http://feeds.feedburner.com/~a/caironoleto?i=WSQGHE" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/493928449" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/12/24/feliz-festas/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/12/24/feliz-festas/</feedburner:origLink></item>
		<item>
		<title>PHPUnit series: Nomeando os testes</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/477763979/</link>
		<comments>http://www.caironoleto.com/2008/12/07/phpunit-series-nomeando-os-testes/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 20:03:07 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[PHPUnit]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[Desenvolvimento Guiado a Testes]]></category>

		<category><![CDATA[Desenvolvimento Orientado a Testes]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=156</guid>
		<description><![CDATA[Nomeando os testes? E isso é relevante? Eu não sei para você mas isso faz total diferença.
Um teste chamado ValorVerdadeiro é diferente de um teste chamado ValorDaVariavelFooDeveSerVerdadeiro, a diferença não está no fato do código ser diferente, mas na percepção que temos ao ler isso. Ao ler ValorVerdadeiro o nome desse teste oculta o que [...]]]></description>
			<content:encoded><![CDATA[<p>Nomeando os testes? E isso é relevante? Eu não sei para você mas isso faz total diferença.</p>
<p>Um teste chamado <em>ValorVerdadeiro</em> é diferente de um teste chamado <em>ValorDaVariavelFooDeveSerVerdadeiro</em>, a diferença não está no fato do código ser diferente, mas na percepção que temos ao ler isso. Ao ler ValorVerdadeiro o nome desse teste oculta o que ele realmente quer fazer. E nós não queremos ocultar nenhum teste, ou omitir o que os testes querem mostrar ;)</p>
<p>A nomeação de um teste não passa só por isso, as vezes, quando não sabemos nem o que testar, quando nomeamos um teste de maneira correta temos um gancho para sabermos o que queremos com esse teste e como vamos implementá-los.</p>
<p>E o nome do teste deve ser claro para que qualquer um possa saber o que você está querendo, em times mistos e com várias pessoas a integração fica bem maior. Ou para um novo desenvolvedor na empresa/projeto, você não precise de imediato explicar para ele todos detalhes do projeto, mas pode mostrar e pedir para ele ler os testes e tentar entender o que está acontecendo ali, é bem mais produtivo. (Se ele for bom, ele pega boa parte da lógica do sistema ao ver os testes).</p>
<p>Coloquem nomes legais e façam uma identidade unica para cada teste, isso pode salvar a pele de vocês um dia, quando um dos testes resolver não funcionar! Você de cara já vai entender o contexto do teste.</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=4zZijD"><img src="http://feeds.feedburner.com/~a/caironoleto?i=4zZijD" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/477763979" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/12/07/phpunit-series-nomeando-os-testes/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/12/07/phpunit-series-nomeando-os-testes/</feedburner:origLink></item>
		<item>
		<title>PHPUnit series: Por que desenvolver orientado a testes?</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/473848122/</link>
		<comments>http://www.caironoleto.com/2008/12/03/phpunit-series-por-que-desenvolver-orientado-a-testes/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 18:01:22 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[PHPUnit]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[Desenvolvimento Orientado a Testes]]></category>

		<category><![CDATA[Testes]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=155</guid>
		<description><![CDATA[Eu twittei um dia desses se eles leriam sobre uma série de artigos sobre o PHPUnit e a resposta foi SIM :)
Eu já escrevi aqui sobre o PHPUnit e até uma vez eu disse que ia fazer uma série, comecei como fazer a instalação, aqui tem relatos tanto de windows como de linux, ensinei como [...]]]></description>
			<content:encoded><![CDATA[<p>Eu <a title="Twitter / Cairo Noleto" href="http://twitter.com/caironoleto/status/1031561715" target="_blank">twittei</a> um dia desses se eles leriam sobre uma série de artigos sobre o <a title="PHPUnit Framework" href="http://www.phpunit.de" target="_blank">PHPUnit</a> e a resposta foi SIM :)</p>
<p>Eu já escrevi aqui sobre o <a title="Archive PHPUnit" href="http://www.caironoleto.com/category/php/phpunit-php/" target="_self">PHPUnit</a> e até uma vez eu disse que <a title="PHPUnit series - instalação" href="http://www.caironoleto.com/2008/03/03/phpunit-series-instalacao/" target="_self">ia fazer uma série</a>, comecei como fazer a instalação, aqui tem relatos tanto de <a title="PHPUnit series - instalação" href="http://www.caironoleto.com/2008/03/03/phpunit-series-instalacao/" target="_self">windows</a> como de <a title="Instalando PHPUnit e PHPSpec no Ubuntu Linux" href="http://www.caironoleto.com/2008/08/07/instalando-phpunit-e-phpspec-no-ubuntu-linux/" target="_self">linux</a>, ensinei como integrar o <a title="Integrando o PHPUnit e o PHPSpec ao CodeIgniter e ao Lumine Framework" href="http://www.caironoleto.com/2008/07/11/integrando-o-phpunit-e-o-phpspec-ao-codeigniter-e-ao-lumine-framework/" target="_self">PHPUnit ao CodeIgniter sem o uso de mocks e stubs</a> (por falta de experiência, não é legal) e mostrei como <a title="Criando testes com o PHPUnit" href="http://www.caironoleto.com/2008/08/12/criando-testes-com-phpunit/">fazer alguma coisa com o PHPUnit</a>.</p>
<p>Mas o que quero mostrar nessa série é algo real, casos reais que eu enfrentei e como eu testei.</p>
<p>Eu vou explanar falando sobre o <a title="cake: CodeIgniter Make" href="http://www.github.com/caironoleto/cake" target="_blank">cake</a>, um projeto estou trabalhando :)</p>
<p>O que eu realmente aprendi com o PHPUnit é que ele não é um simples framework de testes, na realidade, aprendi com todos os tipos de testes que já fiz (<a title="RSpec" href="http://rspec.info/" target="_blank">RSpec</a>, <a title="Test::Unit" href="http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html" target="_blank">Test::Unit</a>, <a title="Cucumber" href="http://github.com/aslakhellesoy/cucumber" target="_blank">Cucumber</a>, <a title="SimpleTest" href="http://simpletest.org/" target="_blank">SimpleTest</a>). Testes é apenas uma forma racional de você pensar em como desenvolver. Se você não tem a mínima idéia do que você quer saber, teste. Se tem bastante idéia do que você quer fazer, teste. Se você quer ter certeza do que está fazendo, teste! Em qualquer caso que você imaginar, teste!</p>
<p>Criando testes, você força a sua mente a pensar no comportamento da aplicação, na unidade de seus objetos e no que realmente você precisa. Eu já li a respeito de testes, e todos os autores afirmam, testes é uma filosofia, não é somente fazer você escrever menos e fazer mais, mas é realmente uma filosofia, existe pessoas que não conseguem criar guiado a testes, mas nem por isso são péssimos profissionais, é uma filosofia, vai de cada uma.</p>
<p>Você muda a sua forma de pensar, se você não está querendo ou não quer mudar, nem comece a tentar entender o que e para que serve todos esses frameworks, pois você está no caminho errado. Para começar a desenvolver orientado a testes, é necessário que você mude, que você programe menos e pense mais!</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=81zwfJ"><img src="http://feeds.feedburner.com/~a/caironoleto?i=81zwfJ" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/473848122" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/12/03/phpunit-series-por-que-desenvolver-orientado-a-testes/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/12/03/phpunit-series-por-que-desenvolver-orientado-a-testes/</feedburner:origLink></item>
		<item>
		<title>Se vocês puderem pelo menos uma vez ir a São Paulo, vão!</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/472424030/</link>
		<comments>http://www.caironoleto.com/2008/12/02/se-voces-puderem-pelo-menos-uma-vez-ir-a-sao-paulo-vao/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 12:40:17 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[Off-topic]]></category>

		<category><![CDATA[#Nob]]></category>

		<category><![CDATA[conheça São Paulo]]></category>

		<category><![CDATA[São Paulo]]></category>

		<category><![CDATA[viagem]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=153</guid>
		<description><![CDATA[
Não é brincadeira, é sério! Vocês não precisam morar lá, mas devem conhecer São Paulo e seus lugares mais obscuros!
No último final de semana eu fui a São Paulo para participar do PHP Conference 2008 (Em breve, um resumo sobre o evento), eu fiquei na casa do Klederson. O apartamento dele é dentro do coração [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a title="Consolação X Maceió" rel="lightbox[pics153]" href="http://www.caironoleto.com/wp-content/uploads/2008/12/pb283513_mini.jpg"><img class="attachment wp-att-154 aligncenter" src="http://www.caironoleto.com/wp-content/uploads/2008/12/pb283513_mini.jpg" alt="Consolação X Maceió" width="500" height="375" /></a></p>
<p>Não é brincadeira, é sério! Vocês não precisam morar lá, mas devem conhecer São Paulo e seus lugares mais obscuros!</p>
<p>No último final de semana eu fui a São Paulo para participar do PHP Conference 2008 (Em breve, um resumo sobre o evento), eu fiquei na casa do <a title="Add4 Comunicação" href="http://www.add4.com.br" target="_blank">Klederson</a>. O apartamento dele é dentro do coração de São Paulo, próximo a Av. Paulista e perto de tudo!</p>
<p>Por ser perto de tudo, sai caminhando pela cidade assim que cheguei, a impressão é muito boa. Limpa (As ruas, não o ar), cheia de gente de todos os tipos e sempre alguma coisa para fazer.</p>
<p>Eu fui a um #NoB, no El Malak, depois de passar na porta e caminhar até quase o final da rua e depois de ter perguntando a umas pessoas em um bar se lá estava acontecendo o #NoB.</p>
<p>Conheci <a title="Substantivo Volátil" href="http://substantivolatil.com/" target="_blank">Mirian Bottan</a>, <a title="Marco Gomes . Com" href="http://marcogomes.com/blog/" target="_blank">Marco Gomes</a>, Sabine e mais algumas pessoas que não me lembro o nome xD depois do #NoB saímos e pronto!</p>
<p>Na sexta levantei cedo e conheci de perto o sistema de transporte da cidade, totalmente interligado, e cheguei a Osasco de trem.</p>
<p>E no sábado, após o evento, consegui dar umas voltas de carro pela cidade, eu mesmo dirigindo, com o meu tio louco!</p>
<p>Depois de dar um susto no papai e na mamãe, dizendo que eu estava perdido e procurando uma parada de ônibus para ir para o aeroporto, quase em cima da hora, cheguei ao aeroporto internacional de guarulhos e tomei o rumo de casa.</p>
<p>Deixando para trás uma bela cidade, gigante, por sinal, com muita coisa para fazer e muita coisa para aproveitar, fico agradecido as pessoas que me ajudaram por lá e para as pessoas que eu conheci fica meu grande prazer.</p>
<p>P.S. No final da viagem, eu pedi ao piloto do 737-800 para tirar umas fotos na cabine, coisa de Nerd. Então ele me explicou que não podia, mas pediu a camera para filmar a aterrissagem em Fortaleza, ele só filmou 2:17 por quê tinha acabado a bateria :( mas para a minha sorte, um dos pilotos desembarcou em Fortaleza, e o mesmo piloto me chamou para voltar para Teresina dentro da cabine, mas sem eu tirar foto e nem filmar. Como Nerd que sou, fiquei muito feliz em viajar como terceiro piloto de um 737-800 por alguns minutos!!</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=887Fws"><img src="http://feeds.feedburner.com/~a/caironoleto?i=887Fws" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/472424030" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/12/02/se-voces-puderem-pelo-menos-uma-vez-ir-a-sao-paulo-vao/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/12/02/se-voces-puderem-pelo-menos-uma-vez-ir-a-sao-paulo-vao/</feedburner:origLink></item>
		<item>
		<title>Está chegando, PHP Conference!</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/465610127/</link>
		<comments>http://www.caironoleto.com/2008/11/25/esta-chegando-php-conference/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 00:26:56 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Desenvolvimento]]></category>

		<category><![CDATA[Evento]]></category>

		<category><![CDATA[ORM]]></category>

		<category><![CDATA[Palestra]]></category>

		<category><![CDATA[Palestras]]></category>

		<category><![CDATA[PHP Conference]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=152</guid>
		<description><![CDATA[Essas últimas semanas está sendo corrida&#8230; Estou acertando todos os detalhes para o PHP Conference, e é por que ainda não cheguei por lá, quando chegar, terá mais coisas para fazer :)
Esse post é para apenas lembrá-los que a Add4 Comunicação estará fazendo parte do PHP Conference e nós queremos vocês com a gente :)
Eu [...]]]></description>
			<content:encoded><![CDATA[<p>Essas últimas semanas está sendo corrida&#8230; Estou acertando todos os detalhes para o <a href="http://www.phpconf.com.br" target="_blank">PHP Conference</a>, e é por que ainda não cheguei por lá, quando chegar, terá mais coisas para fazer :)</p>
<p>Esse post é para apenas lembrá-los que a <a href="http://www.add4.com.br" target="_blank">Add4 Comunicação</a> estará fazendo parte do <a href="http://www.phpconf.com.br" target="_blank">PHP Conference</a> e nós queremos vocês com a gente :)</p>
<p>Eu chego em São Paulo no dia 27. Tem um #NoB marcado, quero ir, alguém me leva?! :P</p>
<p>O <a href="http://www.phpconf.com.br" target="_blank">PHP Conference</a> vai acontecer nos dias 27, 28 e 29 e será recheada de PHPzeiros e Nerds. Espero conhecer muita gente boa.</p>
<p>Nos encontramos lá :)</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=hEx96N"><img src="http://feeds.feedburner.com/~a/caironoleto?i=hEx96N" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/465610127" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/11/25/esta-chegando-php-conference/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/11/25/esta-chegando-php-conference/</feedburner:origLink></item>
		<item>
		<title>O que?! Podcast da mesa redonda?!</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/460989210/</link>
		<comments>http://www.caironoleto.com/2008/11/21/o-que-podcast-da-mesa-redonda/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 17:47:37 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=151</guid>
		<description><![CDATA[Eu estava esperando as fotos, mas parece que alguem se adiantou, e MUITO e acabou lançando um podcast :D
Então, o audio pode ser conferido aqui.
]]></description>
			<content:encoded><![CDATA[<p>Eu estava esperando as fotos, mas parece que alguem se adiantou, e MUITO e acabou lançando um podcast :D</p>
<p>Então, o audio pode ser conferido <a title="Enfim ... o audio!" href="http://juliodemello.wordpress.com/2008/11/18/enfim-o-audio/" target="_blank">aqui</a>.</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=sCX1s4"><img src="http://feeds.feedburner.com/~a/caironoleto?i=sCX1s4" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/460989210" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/11/21/o-que-podcast-da-mesa-redonda/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/11/21/o-que-podcast-da-mesa-redonda/</feedburner:origLink></item>
		<item>
		<title>Tradução: Refatorando seu código legado - Parte 1: No início houve…</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/456173071/</link>
		<comments>http://www.caironoleto.com/2008/11/17/traducao-refatorando-seu-codigo-legado-parte-1-no-inicio-houve/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 16:58:11 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[Traduções]]></category>

		<category><![CDATA[Desenvolvimento Guiado por Testes]]></category>

		<category><![CDATA[Desenvolvimento Orientado a Testes]]></category>

		<category><![CDATA[Refactoring]]></category>

		<category><![CDATA[Refatoração]]></category>

		<category><![CDATA[Selenium]]></category>

		<category><![CDATA[Test-Driven Development]]></category>

		<category><![CDATA[Testes]]></category>

		<category><![CDATA[Tradução]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=135</guid>
		<description><![CDATA[Este artigo é uma tradução do artigo Refactoring your legacy code - Part One: In the beginning there was&#8230;, caso você encontre erros de português, concordância, tem algum comentário ou agradecimento, FAÇA! É como um amigo meu sempre fala, se você ver alguma coisa errada, conserte!
Lars Jankowfsky é desenvolvedor PHP e participou da International PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Este artigo é uma tradução do artigo <a title="Refactoring your legacy code - Part One: In the beginning there was..." href="http://www.frontalaufprall.com/2008/10/15/refactoring-your-legacy-code-part-one-in-the-beginning-there-was/#comment-338" target="_blank">Refactoring your legacy code - Part One: In the beginning there was&#8230;</a>, caso você encontre erros de português, concordância, tem algum comentário ou agradecimento, FAÇA! É como um amigo meu sempre fala, se você ver alguma coisa errada, conserte!</p>
<p>Lars Jankowfsky é desenvolvedor PHP e participou da International PHP Conference 2008. Ele possui o <a href="http://www.frontalaufprall.com/">Frontalaufpral</a> onde ele fala sobre PHP, Agile Development e outros assuntos.</p>
<p>Deixa de papo e vamos a tradução!</p>
<h3>Refatorando seu código legado - Parte Um: No início houve&#8230;</h3>
<p>Como prometido, <a href="http://tomas.liubinas.com/" target="_blank">Tomas</a> e <a title="Lars Jankowfsky" href="http://www.frontalaufprall.com" target="_blank">eu</a> iremos procurar mostrar uma visão sobre o que você precisa considerar quando você planejar refatorar suas velhas (legadas) aplicações. Não será um guia detalhado nem muito ordenado. Será mais ou menos nossas experiências e pensamentos nos últimos anos.</p>
<p>Se você precisa de uma introdução mais detalhada (incluindo a nível de código) você deve participar de nosso workshop na <a href="http://it-republik.de/php/phpconference/">Internation PHP Conference 2008</a>. Eu irei ministrar o workshop juntamente com dois dos melhores programadores PHP (Johann Peter Hartmann e <a href="http://www.thorsten-rinne.de/" target="_blank">Thorsten Rinne</a>), você pode esperar muito mais detalhes.</p>
<p>Com certeza eu irei publicar a apresentação após o IPC - mas não antes ;)</p>
<p>Agora - Refatorando, hmm&#8230; Refatorar é, por definição, o meio de modificar (limpando) sem alterar o comportamento. Mas como você pode ter certeza que não está mudando o comportamento se você não está fazendo testes? Isto significa - você só pode refatorar um código se ele possui testes. E é aqui que começa o problema - onde está os testes?</p>
<p>E lá vamos nós. Vamos assumir que você possui um grande projeto - que cresceu durante anos. E agora você está na sorte que seu chefe concorda com você sobre a necessidade dos testes. Mas como iniciar? O time não possui experiência escrevendo testes. Pior ainda, nem sabem o que é Test Driven Development.</p>
<p>Você precisará investir um tempo no time para que eles aprendam como escrever testes. E você experimentará que <strong>conhecer</strong> e <strong>compreender</strong> são duas coisas diferentes. Na minha opinião, somente uma coisa pode ser comparada. A diferença entre programação procedural e orientada a objetos. Estranho exemplo? Não.</p>
<p>Deixe-me explicar. É muito fácil pegar um livro e aprender um pouco sobre classes, objetos, etc. Mas somente depois de você usar por um tempo é que você entenderá profundamente o conceito de OOP e buscar o bom senso. O mesmo é para o TDD - escrever testes é mais ou menos questão de minutos. Ou digamos horas se for o seu primeiro teste. Mas entender por quê os testes são importantes e como usá-los. Isto precisa de tempo. E você terá que investir esse tempo.</p>
<p>Depois de eu ter empurrado o time dentro desta direção ( e ei! - isto não foi tão fácil, como muitos desenvolvedores tendem a ser mais conservadores), eles fizeram os testes - simplesmente por quê o chefe disse isso. Mas somente poucas semanas depois, um desenvolvedor disse-me &#8220;Ei! Testes são legais! Eu encontrei um bug, eu nunca teria encontrado antes&#8221;. Este é o ponto que você precisa para o seu time.</p>
<p>Um pouco mais de teoria. Mas o que dizer dos testes? Por onde começar? Essa resposta é fácil. Você precisa começar com o mais sórdido, mais sujo, e maior arquivo que você pode achar no seu projeto. Eu sei, Eu sei. Eles querem começar com os arquivos mais fáceis, onde os testes são feitos rapidamente e você ver algum progresso. Os desenvolvedores realmente terão medo deste arquivo. Mas o que vai acontecer se você iniciar pelos fáceis? Simples - você verá algum progresso e terá a sensação que as coisas estão tudo bem. Seu time não entenderá os testes completamente - e eles deixam as partes mais sórdidas do código para o final. Você tem que ter forças para resolver os demônios logo no começo. Isso vai demorar um pouco. Mas então você pode ter certeza que o restante vai ser um bom e delicioso pedaço de bolo. De outro modo, você irá mover o parte do risco para o fim do período de refatoração -  e isto não é uma boa idéia.</p>
<p>Você poderia pensar &#8220;Esse cara é louco, onde está o problema em escrever testes&#8230;?&#8221; Ei! Nós estamos falando de velho código crescido ( == espaguete ). Este código é massivamente interconectado. Variáveis globais, classes mistas, selvagens chamadas entre módulos e objetos, etc. É muito difícil escrever testes para isto.</p>
<p>Na verdade, enquanto estiver escrevendo testes você notará que precisa refatorar o código. Você simplesmente tem que refatorar. Pois de outra forma você não pode escrever os testes. Ou - vamos ser honesto - você pode. Se você escrever mocks e stubs que é o triplo do tamanho do seu código. Isto é exatamente o que desenvolvedores sem experiência com TDD irão fazer. Se você ver isso - chutem eles! E em seguida novamente, por que a sensação é muito boa ;).</p>
<p>Cada teste leva ao refatoramento. Como o nó górdio (<a title="Gordian Knot" href="http://en.wikipedia.org/wiki/Gordian_Knot" target="_blank">Vejam no wikipedia</a>) você começará a puxar o worm, e irá puxar, puxar e puxar. E após algum tempo a refatoração estará pronta e o primeiro teste pode ser escrito. Ok, só estava brincando. Mas há alguma verdade nesta afirmação. Você precisa refatorar o código primeiro - então escrever o teste. Sem grandes stubs.</p>
<p>E isto será trabalhoso - especialmente no início, onde tudo está interconectado. E algumas dependencias precisam ser abordadas e resolvidas. Primeiro. Separe o modelo da visão. Na visão, deixe sem lógica - somente I/O. E então teste o modelo. Algumas pessoas até mesmo testam as visões com testes unitários. Eu não. Eu prefiro testar o modelo, com pequenas visões sem lógica e deixar o resto para os testes com selenium.</p>
<p>O sórdido. Leva tempo. Muito trabalho. Mas acredite em mim. Não há outra forma.</p>
<p>Durante a leitura, você pode ficar com a idéia de que você vai fugir com os testes de aceitação. (selenium). Você acha que isso é um bom negócio? A idéia é sensacional. Se você escrever testes do selenium para toda a aplicação - então refatorar - e você não quebrar nenhum teste, você pode ter certeza que você não alterou qualquer funcionalidade. Boa ideia? Não vai funcionar. Desculpe</p>
<p>Lembre-se. Eu estou falando de uma grande aplicação que cresceu. Ela terá toneladas de funcionalidades. Isto significa centenas ou milhares de testes. E estes testes podem durar muito. Eu sei disso. Eu fui até esta estrada - e ela é uma estrada de mão uníca. Nós terminamos com um teste completo rodando por 10 horas. Isso não é desenvolvimento guiado a testes. Para fazer isso que você precisa instantaneamente - instantaneamente - de feedback. Ninguém pode trabalhar assim.</p>
<p>Contínua na parte dois.</p>
<p>Essa foi a primeira parte do artigo. Mais uma vez, espero que vocês gostem. Qualquer dúvida entre em contato! Não deixe de me passar seu feedback.</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=HUl0oD"><img src="http://feeds.feedburner.com/~a/caironoleto?i=HUl0oD" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/456173071" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/11/17/traducao-refatorando-seu-codigo-legado-parte-1-no-inicio-houve/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/11/17/traducao-refatorando-seu-codigo-legado-parte-1-no-inicio-houve/</feedburner:origLink></item>
		<item>
		<title>Mídias alternativas - A vida além dos 30 segundos</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/455497109/</link>
		<comments>http://www.caironoleto.com/2008/11/16/midias-alternativas-a-vida-alem-dos-30-segundos/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 02:54:14 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[Sem categoria]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=148</guid>
		<description><![CDATA[Esse foi o tema da mesa redonda na semana de comunicação da faculdade CEUT. Estava lá eu ( :P ), Thiago Emérito, Igor Drey e Itallo Victor.
Bom, eu falei um pouco sobre minha experiência com a Web 2.0 e como você pode utiliza-la para lucro (não apenas para diversão).
Eu já esperava que a maior parte [...]]]></description>
			<content:encoded><![CDATA[<p>Esse foi o tema da mesa redonda na semana de comunicação da <a title="Semana de Comunicação" href="http://www.ceut.com.br/semanadecomunicacao.asp">faculdade CEUT</a>. Estava lá eu ( :P ), <a title="Thiago Emérito" href="http://twitter.com/thiagoemerito" target="_blank">Thiago Emérito</a>, <a title="Igor Drey" href="http://www.meionorte.com/igordrey" target="_blank">Igor Drey</a> e <a title="Bloco de notas" href="http://itallo.wordpress.com/" target="_blank">Itallo Victor</a>.</p>
<p>Bom, eu falei um pouco sobre minha experiência com a Web 2.0 e como você pode utiliza-la para lucro (não apenas para diversão).</p>
<p>Eu já esperava que a maior parte do tempo nós quatro falaríamos e que em algumas partes quem estava lá, iria contribuir, mas eu não esperava que seriam umas quatro pessoas (de mais de 40). A impressão que eu tive é que essas pessoas ainda não entraram de cabeça dentro do novo mundo, ou que ainda não tiveram o interesse necessário para fazer esse tipo de coisa.</p>
<p>Uma coisa que eu sempre falo para todos é que vocês devem estar atentos as mudanças mundiais, acompanhar bolsa de valores, política, novas tecnologias, enfim, se manter atualizado frente ao mundo. Fazendo isso você está preparado para qualquer desafio, independente da sua área de atuação.</p>
<p>Bom, eu queria ter colocado algumas fotos aqui, mas ainda não achei nenhuma. Queria agradecer a todos que participaram e contribuiram para a mesa redonda, agradecer a <a title="Add4 Comunicação" href="http://www.add4.com.br" target="_blank">Add4 Comunicação</a> e a todos que fazem e fizeram parte de tudo.</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=W0B2jv"><img src="http://feeds.feedburner.com/~a/caironoleto?i=W0B2jv" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/455497109" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/11/16/midias-alternativas-a-vida-alem-dos-30-segundos/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/11/16/midias-alternativas-a-vida-alem-dos-30-segundos/</feedburner:origLink></item>
		<item>
		<title>Tradução: Rails Database Migrations - Parte IV</title>
		<link>http://feeds.feedburner.com/~r/caironoleto/~3/450940463/</link>
		<comments>http://www.caironoleto.com/2008/11/12/traducao-rails-database-migrations-parte-iv/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 17:59:46 +0000</pubDate>
		<dc:creator>Cairo Noleto</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Traduções]]></category>

		<category><![CDATA[Migrações]]></category>

		<category><![CDATA[Migrations]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://www.caironoleto.com/?p=146</guid>
		<description><![CDATA[Esta é a última parte da tradução do guia sobre Rails Database Migrations. Espero que vocês gostem, agora irei partir para tradução de mais guias :) Mais uma vez, dúvidas, erros de português, tradução com sentido diferente, por favor, me comuniquem!! Podem me mandar email (caironoleto NOT SPAM at gmail dot com ), pelo twitter [...]]]></description>
			<content:encoded><![CDATA[<p>Esta é a última parte da tradução do <a title="Rails Database Migrations" href="http://guide.rails.info/migrations.html">guia sobre Rails Database Migrations</a>. Espero que vocês gostem, agora irei partir para tradução de mais guias :) Mais uma vez, dúvidas, erros de português, tradução com sentido diferente, por favor, me comuniquem!! Podem me mandar email (caironoleto NOT SPAM at gmail dot com ), pelo twitter (@caironoleto) ou pela seção de contato ou pelo Gtalk, msn, skype, enfim, me comuniquem!!</p>
<p><a title="Rails Database Migrations - Parte I" href="http://www.caironoleto.com/2008/09/23/traducao-rails-database-migrations-parte-i/" target="_self">Rails Database Migration - Parte I</a></p>
<p><a title="Rails Database Migrations - Parte II" href="http://www.caironoleto.com/2008/10/20/traducao-rails-database-migrations-parte-ii-2/" target="_self">Rails Database Migration - Parte II</a></p>
<p><a title="Rails Database Migrations - Parte III" href="http://www.caironoleto.com/2008/11/04/traducao-rails-database-migrations-parte-3/" target="_self">Rails Database Migration - Parte III</a></p>
<h3>6. Armazenando esquemas e você</h3>
<h3>6.1 Quais são os arquivos do esquema?</h3>
<p>Migrações, poderosas como são, não são fontes autorizada para o esquema do seu banco de dados. Esse papel cabe ao <tt>schema.rb</tt> ou ao um arquivo SQL gerado pelo Active Record através da análise do banco de dados. Este arquivo não foi projetado para ser editado, ele é uma representação do estado atual do banco de dados.</p>
<p>Não é necessário (e isto é um erro propenso) para implantar uma nova instancia de uma aplicação repetindo o histórico inteiro da migração. É mais simples e rápido apenas carregar dentro do banco de dados a descrição do esquema atual.</p>
<p>Por exemplo, esta é a forma de como o banco de dados de testes é criado: o banco de dados atual de desenvolvimento é excluído (tanto para o <tt>schema.rb</tt> ou para <tt>development.sql</tt>) e então carregado dentro do banco de dados de teste.</p>
<p>Arquivos de esquema também são uteis se deseja olhar rapidamente quais atributos o objeto do Active Record possui. Estas informações não está no código do modelo e frequentemente está espalhado pelas várias migrações mas está resumido no arquivo de esquema. O plugin <a href="http://agilewebdevelopment.com/plugins/annotate_models" target="_blank">annotate_models</a>, adiciona automaticamente cada (e atualiza) um dos comentários no início de cada modelo resumindo o esquema, que pode ser de seu interesse.</p>
<h3>6.2 Formas de armazenar o esquema</h3>
<p>Existe duas formas de armazenar o esquema. Uma é setar em <tt>config/environment.rb</tt> atribuindo o <tt>config.active_record.schema_format</tt>, que pode ser <tt>:sql</tt> ou <tt>:ruby</tt>.</p>
<p>Se <tt>:ruby</tt> é selecionada então o esquema será armazenado em <tt>db/schema.rb</tt>. Se você olhar este arquivo você verá que não encontrará um pouco mais do que uma grande migração:</p>
<pre><tt><tt>ActiveRecord<span style="color: #990000;">::</span>Schema<span style="color: #990000;">.</span>define<span style="color: #990000;">(:</span>version <span style="color: #990000;">=&gt;</span> <span style="color: #993399;">20080906171750</span><span style="color: #990000;">)</span> <span style="font-weight: bold;"><span style="color: #0000ff;">do</span></span>
  create_table <span style="color: #ff0000;">&#8220;authors&#8221;</span><span style="color: #990000;">,</span> <span style="color: #990000;">:</span>force <span style="color: #990000;">=&gt;</span> <span style="font-weight: bold;"><span style="color: #0000ff;">true</span></span> <span style="font-weight: bold;"><span style="color: #0000ff;">do</span></span> <span style="color: #990000;">|</span>t<span style="color: #990000;">|</span>
    t<span style="color: #990000;">.</span>string   <span style="color: #ff0000;">&#8220;name&#8221;</span>
    t<span style="color: #990000;">.</span>datetime <span style="color: #ff0000;">&#8220;created_at&#8221;</span>
    t<span style="color: #990000;">.</span>datetime <span style="color: #ff0000;">&#8220;updated_at&#8221;</span>
  <span style="font-weight: bold;"><span style="color: #0000ff;">end</span></span>

  create_table <span style="color: #ff0000;">&#8220;products&#8221;</span><span style="color: #990000;">,</span> <span style="color: #990000;">:</span>force <span style="color: #990000;">=&gt;</span> <span style="font-weight: bold;"><span style="color: #0000ff;">true</span></span> <span style="font-weight: bold;"><span style="color: #0000ff;">do</span></span> <span style="color: #990000;">|</span>t<span style="color: #990000;">|</span>
    t<span style="color: #990000;">.</span>string   <span style="color: #ff0000;">&#8220;name&#8221;</span>
    t<span style="color: #990000;">.</span>text     <span style="color: #ff0000;">&#8220;description&#8221;</span>
    t<span style="color: #990000;">.</span>datetime <span style="color: #ff0000;">&#8220;created_at&#8221;</span>
    t<span style="color: #990000;">.</span>datetime <span style="color: #ff0000;">&#8220;updated_at&#8221;</span>
    t<span style="color: #990000;">.</span>string   <span style="color: #ff0000;">&#8220;part_number&#8221;</span>
  <span style="font-weight: bold;"><span style="color: #0000ff;">end</span></span>
<span style="font-weight: bold;"><span style="color: #0000ff;">end</span></span></tt></tt></pre>
<p>De muitas formas é exatamente isso. Este arquivo é criado pela examinação do banco de dados e expressado em estruturas usando <tt>create_table</tt>, <tt>add_index</tt> e assim por diante. Por causa da independência do banco de dados ele deve carregar dentro de qualquer banco de dados que o Active Record suporta. Isso poderia ser muito útil se você quiser distribuir a aplicação para rodar em vários banco de dados.</p>
<p>Existe porém uma desvantagem: <tt>schema.rb</tt> não expressa itens específicos de banco de dados como constraints de chaves estrangeiras, triggers ou stored procedures. Enquanto na migração você pode executar SQL customizadas, o esquema armazenado não pode reconstituir essas atribuições do banco de dados. Se você usar recursos como este, então você deve atribuir o esquema para <tt>:sql</tt>.</p>
<p>Em vez de usar o esquema de armazenamento do Active Record a estrutura será armazenada usando uma ferramenta específica do banco de dados (pela tarefa rake <tt>db:structure:dump</tt>) dentro de <tt>db/#\{RAILS_ENV\}_structure.sql</tt>. Por exemplo para o PostgreSQL a utilidade <tt>pg_dump</tt> é usada e para o MySQL este arquivo irá conter a saída de SHOW CREATE TABLE para as várias tabelas. Carregando este esquema é uma simples questão de executar as declarações SQL contida dentro.</p>
<p>Por definição irá fazer uma copia perfeita da estrutura do banco de dados mas isso vai impedir o carregamento do esquema dentro de outros banco de dados que não seja um dos utilizados para criá-lo.</p>
<h3>6.3 Armazenamento de esquema e controle de código</h3>
<p>Por causa da autoridade do código do seu esquema de banco de dados, é altamente recomendado que você verifique dentro de seu controle de código.</p>
<h3>7. Active Record e Integridade Referencial</h3>
<p>O Active Record é a maneira inteligente de permanecer em seus modelos, não no banco de dados. Alguns recursos como triggers ou constraints de chaves estrangeiras, que empurra alguma inteligência de volta para os banco de dados não são muito usados.</p>
<p>Validações como <tt>validates_uniqueness_of</tt> é uma forma de seus modelos podem valer a integridade dos dados. A opção <tt>:dependent</tt> em associações adiciona aos modelos automaticamente destruir os objetos filhos que seus pais são destruídos. Como tudo que funciona a nível de aplicação, estes não podem garantir integridade referencial e algumas pessoas aumentam com constraints de chaves estrangeiras.</p>
<p>Apesar de o Active Record não fornecer todas as ferramentas para trabalhar diretamente com todos os recursos, o método <tt>execute</tt> pode ser usado para executar SQL arbitrárias. Há também uma série de plugins como <a href="http://agilewebdevelopment.com/plugins/search?search=redhillonrails" target="_blank">redhillonrails</a> que adicionam suporte a chaves estrangeiras para o Active Record (incluindo suporte para destruir chaves estrangeiras no <tt>schema.rb</tt>)</p>

<p><a href="http://feeds.feedburner.com/~a/caironoleto?a=q6mGDj"><img src="http://feeds.feedburner.com/~a/caironoleto?i=q6mGDj" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/caironoleto/~4/450940463" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.caironoleto.com/2008/11/12/traducao-rails-database-migrations-parte-iv/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.caironoleto.com/2008/11/12/traducao-rails-database-migrations-parte-iv/</feedburner:origLink></item>
	<item><title>Links for 2008-11-01 [del.icio.us]</title><link>http://feeds.feedburner.com/~r/caironoleto/~3/439658772/caironoleto</link><pubDate>Sun, 02 Nov 2008 00:00:00 -0500</pubDate><guid isPermaLink="false">http://del.icio.us/caironoleto#2008-11-01</guid><content:encoded><![CDATA[<ul>
<li><a href="http://www.slideshare.net/wycats/jquery-presentation-to-rails-developers-110063">jQuery Presentation to Rails Developers - SlideShare</a><br/>
jQuery Presentation to Rails Developers</li>
</ul><img src="http://feeds.feedburner.com/~r/caironoleto/~4/439658772" height="1" width="1"/>]]></content:encoded><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.slideshare.net/wycats/jquery-presentation-to-rails-developers-110063"&gt;jQuery Presentation to Rails Developers - SlideShare&lt;/a&gt;&lt;br/&gt;
jQuery Presentation to Rails Developers&lt;/li&gt;
&lt;/ul&gt;</description><feedburner:origLink>http://del.icio.us/caironoleto#2008-11-01</feedburner:origLink></item><item><title>Links for 2008-10-22 [del.icio.us]</title><link>http://feeds.feedburner.com/~r/caironoleto/~3/429284127/caironoleto</link><pubDate>Thu, 23 Oct 2008 00:00:00 -0500</pubDate><guid isPermaLink="false">http://del.icio.us/caironoleto#2008-10-22</guid><content:encoded><![CDATA[<ul>
<li><a href="http://tuxpepino.wordpress.com/2007/05/30/steam-y-counter-strike-en-ubuntu-linux/">Steam y Counter-Strike en Ubuntu Linux &laquo; Entre tuxes y pepinos</a><br/>
$ wine msiexec /i SteamInstall.msi</li>
</ul><img src="http://feeds.feedburner.com/~r/caironoleto/~4/429284127" height="1" width="1"/>]]></content:encoded><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://tuxpepino.wordpress.com/2007/05/30/steam-y-counter-strike-en-ubuntu-linux/"&gt;Steam y Counter-Strike en Ubuntu Linux &amp;laquo; Entre tuxes y pepinos&lt;/a&gt;&lt;br/&gt;
$ wine msiexec /i SteamInstall.msi&lt;/li&gt;
&lt;/ul&gt;</description><feedburner:origLink>http://del.icio.us/caironoleto#2008-10-22</feedburner:origLink></item><item><title>Links for 2008-10-13 [del.icio.us]</title><link>http://feeds.feedburner.com/~r/caironoleto/~3/420201633/caironoleto</link><pubDate>Tue, 14 Oct 2008 00:00:00 -0500</pubDate><guid isPermaLink="false">http://del.icio.us/caironoleto#2008-10-13</guid><content:encoded><![CDATA[<ul>
<li><a href="http://robwilkerson.org/2008/09/12/ignore-gits-suspicious-patch-lines/">Rob Wilkerson &raquo; Ignore Git's Suspicious Patch Lines</a><br/>
Ignore Git&#039;s Suspicious Patch Lines</li>
</ul><img src="http://feeds.feedburner.com/~r/caironoleto/~4/420201633" height="1" width="1"/>]]></content:encoded><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://robwilkerson.org/2008/09/12/ignore-gits-suspicious-patch-lines/"&gt;Rob Wilkerson &amp;raquo; Ignore Git's Suspicious Patch Lines&lt;/a&gt;&lt;br/&gt;
Ignore Git&amp;#039;s Suspicious Patch Lines&lt;/li&gt;
&lt;/ul&gt;</description><feedburner:origLink>http://del.icio.us/caironoleto#2008-10-13</feedburner:origLink></item><item><title>Links for 2008-09-25 [del.icio.us]</title><link>http://feeds.feedburner.com/~r/caironoleto/~3/403452632/caironoleto</link><pubDate>Fri, 26 Sep 2008 00:00:00 -0500</pubDate><guid isPermaLink="false">http://del.icio.us/caironoleto#2008-09-25</guid><content:encoded><![CDATA[<ul>
<li><a href="http://www.bencurtis.com/archives/2008/06/restful-searching-in-rails/">BenCurtis.com &raquo; RESTful searching in Rails</a><br/>
RESTful searching in Rails</li>
</ul><img src="http://feeds.feedburner.com/~r/caironoleto/~4/403452632" height="1" width="1"/>]]></content:encoded><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.bencurtis.com/archives/2008/06/restful-searching-in-rails/"&gt;BenCurtis.com &amp;raquo; RESTful searching in Rails&lt;/a&gt;&lt;br/&gt;
RESTful searching in Rails&lt;/li&gt;
&lt;/ul&gt;</description><feedburner:origLink>http://del.icio.us/caironoleto#2008-09-25</feedburner:origLink></item><item><title>Links for 2008-09-22 [del.icio.us]</title><link>http://feeds.feedburner.com/~r/caironoleto/~3/400475000/caironoleto</link><pubDate>Tue, 23 Sep 2008 00:00:00 -0500</pubDate><guid isPermaLink="false">http://del.icio.us/caironoleto#2008-09-22</guid><content:encoded><![CDATA[<ul>
<li><a href="http://blog.wolfman.com/articles/2007/07/28/rspec-testing-all-actions-of-a-controller">RSpec testing all actions of a controller</a></li>
<li><a href="http://weblog.techno-weenie.net/2007/12/26/controller-specs-are-a-drag">Controller specs are a drag -- techno weenie</a><br/>
Controller specs are a drag</li>
</ul><img src="http://feeds.feedburner.com/~r/caironoleto/~4/400475000" height="1" width="1"/>]]></content:encoded><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.wolfman.com/articles/2007/07/28/rspec-testing-all-actions-of-a-controller"&gt;RSpec testing all actions of a controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblog.techno-weenie.net/2007/12/26/controller-specs-are-a-drag"&gt;Controller specs are a drag -- techno weenie&lt;/a&gt;&lt;br/&gt;
Controller specs are a drag&lt;/li&gt;
&lt;/ul&gt;</description><feedburner:origLink>http://del.icio.us/caironoleto#2008-09-22</feedburner:origLink></item><item><title>Links for 2008-09-17 [del.icio.us]</title><link>http://feeds.feedburner.com/~r/caironoleto/~3/395893343/caironoleto</link><pubDate>Thu, 18 Sep 2008 00:00:00 -0500</pubDate><guid isPermaLink="false">http://del.icio.us/caironoleto#2008-09-17</guid><content:encoded><![CDATA[<ul>
<li><a href="http://thinkrefresh.com/">ThinkRefresh</a></li>
</ul><img src="http://feeds.feedburner.com/~r/caironoleto/~4/395893343" height="1" width="1"/>]]></content:encoded><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://thinkrefresh.com/"&gt;ThinkRefresh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><feedburner:origLink>http://del.icio.us/caironoleto#2008-09-17</feedburner:origLink></item><item><title>Links for 2008-09-16 [del.icio.us]</title><link>http://feeds.feedburner.com/~r/caironoleto/~3/394891743/caironoleto</link><pubDate>Wed, 17 Sep 2008 00:00:00 -0500</pubDate><guid isPermaLink="false">http://del.icio.us/caironoleto#2008-09-16</guid><content:encoded><![CDATA[<ul>
<li><a href="http://guides.rails.info/">Ruby on Rails guides</a></li>
<li><a href="http://blog.imperialdune.com/2007/2/12/rspec-ing-rails-views">graeme nelson: Rspec'ing Rails Views</a><br/>
Rspec&#039;ing Rails Views</li>
<li><a href="http://kpumuk.info/rspec/useful-helpers-for-rspec-mocks/">Useful helpers for RSpec mocks | Dmytro Shteflyuk's Home</a><br/>
Useful helpers for RSpec mocks</li>
<li><a href="http://www.robbyonrails.com/articles/2007/08/02/spec-your-views">Robby on Rails : Spec Your Views</a><br/>
Spec Your Views</li>
</ul><img src="http://feeds.feedburner.com/~r/caironoleto/~4/394891743" height="1" width="1"/>]]></content:encoded><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://guides.rails.info/"&gt;Ruby on Rails guides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.imperialdune.com/2007/2/12/rspec-ing-rails-views"&gt;graeme nelson: Rspec'ing Rails Views&lt;/a&gt;&lt;br/&gt;
Rspec&amp;#039;ing Rails Views&lt;/li&gt;
&lt;li&gt;&lt;a href="http://kpumuk.info/rspec/useful-helpers-for-rspec-mocks/"&gt;Useful helpers for RSpec mocks | Dmytro Shteflyuk's Home&lt;/a&gt;&lt;br/&gt;
Useful helpers for RSpec mocks&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/08/02/spec-your-views"&gt;Robby on Rails : Spec Your Views&lt;/a&gt;&lt;br/&gt;
Spec Your Views&lt;/li&gt;
&lt;/ul&gt;</description><feedburner:origLink>http://del.icio.us/caironoleto#2008-09-16</feedburner:origLink></item></channel>
</rss>
