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

<channel>
	<title>Blog de desenvolvimento da Milfont Consulting, Client e Server-side &#187; Ruby</title>
	<atom:link href="http://www.milfont.org/tech/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.milfont.org/tech</link>
	<description>Blog da Comunidade Milfont Consulting, uma empresa especializada em desenvolvimento Web, principalmente Javascript, node.js e muito Javascript.</description>
	<lastBuildDate>Thu, 26 Jan 2012 11:30:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Nodejs vs Rails, ou a ironia de quando apertam no meu calo.</title>
		<link>http://www.milfont.org/tech/2011/11/27/nodejs-vs-rails-ou-a-ironia-de-quando-apertam-no-meu-calo/</link>
		<comments>http://www.milfont.org/tech/2011/11/27/nodejs-vs-rails-ou-a-ironia-de-quando-apertam-no-meu-calo/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 21:52:11 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[nodejs]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1496</guid>
		<description><![CDATA[Por volta de 2007/2008 quando o Rails se popularizou no mundo inteiro, um tema comum em todas as listas de discussões era como o Rails ia matar o Java. Ficavam furiosos os mais exaltados, porém míopes, javeiros. Claro que era uma brincadeira com um fundo de verdade, um alerta para sermos poliglotas e usarmos o melhor [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2011/11/27/nodejs-vs-rails-ou-a-ironia-de-quando-apertam-no-meu-calo/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Por volta de 2007/2008 quando o Rails se popularizou no mundo inteiro, um tema comum em todas as listas de discussões era como o Rails ia matar o Java. Ficavam furiosos os mais exaltados, porém míopes, javeiros.</p>
<p>Claro que era uma brincadeira com um fundo de verdade, um alerta para sermos <a href="http://www.programadorpoliglota.com.br/">poliglotas</a> e usarmos o melhor ambiente/plataforma/ferramenta/etc para resoluções de problemas.</p>
<p>Claro que a comparação era esdrúxula porque comparavam um Framework com uma linguagem, aliás, não só linguagem, mas uma plataforma. Não importa se o Rails poderia ser executado na plataforma Java, a mensagem era o alerta de que não adianta fazer tudo com apenas uma ferramenta. Naquele momento se voce era programador DotNet, voce tentaria fazer tudo com DotNet, se voce fosse programador Java, o mesmo com sua linguagem/plataforma.</p>
<p>Na época Java era Mainstream, Rails um Framework que trazia consigo uma linguagem &#8220;Underground&#8221; com uma comunidade ainda muito pequena, porém vibrante.</p>
<h2>A História se repete</h2>
<p>Hoje em dia <a href="http://rubyonrails.org/">Rails</a> é um Framework muito popular que criou um ecossistema em sua volta, graças a ele que a linguagem Ruby tem uma certa penetração até em <a href="http://www.grupofortes.com.br/">grandes</a> corporações. Ouso dizer que Rails é uma &#8220;plataforma&#8221; e que tudo gira em torno dele, retire esse Framework e a linguagem Ruby dificilmente se mantém no Mainstream.</p>
<p>Em 2009 surgiu uma ferramenta chamada <a href="http://nodejs.org/">Nodejs</a>. Um &#8220;Evented I/O for <a href="http://code.google.com/p/v8/">V8 JavaScript</a>&#8220;, ou seja, uma ferramenta para fazer <a href="http://en.wikipedia.org/wiki/Asynchronous_I/O">IO não-bloqueante</a> usando a VM do Chrome. Em pouco tempo a comunidade em volta do Nodejs repetiu o mesmo processo que o Rails levou de 2004 a 2010 só que em menos tempo. Esse ano (2011), as duas comunidades chamam a mesma atenção do mercado, principalmente as Startups do Vale do Silício.</p>
<p>Nodejs criou uma comunidade em sua volta, apesar de ter um propósito bem definido. Não existe um Framework no ecossistema Nodejs que sequer chegue aos pés do Rails, o máximo é algo similar o <a href="http://www.sinatrarb.com/">Sinatra</a> chamado de <a href="http://expressjs.com/">Express</a>. Mas somente a possibilidade de uma comunidade/ecossistema desviar a atenção e rivalizar no efeito &#8220;Sou foda, estou na crista da onda&#8221; já deixa incomodado muitos Railers.</p>
<p>Pois bem, eu dizia há alguns dias para amigos e clientes que a comunidade Rails iria subir nas tamancas quando o Nodejs crescesse mais do que já cresceu. O motivo que alerto é que a comunidade se tornou tão pedante quão a comunidade Java de 2007/2008. Hoje em dia temos &#8220;Railstards&#8221; que pregam o desenvolvimento somente com Ruby ao ponto de <a href="http://www.milfont.org/tech/2011/07/25/coffeescript/">escreverem Javascript em Ruby</a> por conveniência de não sair da sua zona de conforto.</p>
<p>Há alguns dias a <a href="http://www.nodejitsu.com/">Nodejitsu</a> publicou <a href="http://nodejs-vs-ror.nodejitsu.com/">uma página</a> para acompanhar o momento onde o número de Watchers (observadores) do projeto nodejs no github ultrapassou o mesmo número no projeto Rails.</p>
<p><a href="http://www.milfont.org/tech/wp-content/uploads/2011/11/Captura-de-tela-2011-11-27-às-18.36.50.png"><img class="size-medium wp-image-1499 alignnone" title="Nodejs Vs Rails" src="http://www.milfont.org/tech/wp-content/uploads/2011/11/Captura-de-tela-2011-11-27-às-18.36.50-300x115.png" alt="" width="300" height="115" /></a></p>
<p>A Notícia por si só não deveria ter nenhum significado. Comparar um Framework popular com uma Ferramenta de Evented IO?</p>
<p>Ops, há alguns anos comparamos uma linguagem/plataforma com um Framework, ninguém disse na época que era descabido a comparação, porque seria hoje comparar Nodejs vs Rails?</p>
<p>Não rir dessa piada irônica só demonstra que você deveria subir um alerta, a grande maioria dos Javeiros já calçou a sandália da humildade, acho que ta na hora de nós Railers também <img src='http://www.milfont.org/tech/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Como disse o <a href="https://twitter.com/#!/leonardoeloy">@leonardoeloy</a>: Se Java é o novo Cobol, Rails o novo Java, Nodejs o novo Rails, quem é o novo Nodejs?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2011/11/27/nodejs-vs-rails-ou-a-ironia-de-quando-apertam-no-meu-calo/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Terceiro Encontro GURU-CE</title>
		<link>http://www.milfont.org/tech/2010/12/18/terceiro-encontro-guru-ce/</link>
		<comments>http://www.milfont.org/tech/2010/12/18/terceiro-encontro-guru-ce/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 20:33:36 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Ext]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[sencha]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[guruce]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=1134</guid>
		<description><![CDATA[Galera da guru_ce está mandando muito bem, dê uma sacada como foi o encontro: Fiz código na hora e como sempre não deu tempo de mostrar tudo que eu gostaria, estourei o tempo e saímos de lá por volta de 12:30. Espero ter gerado curiosidade na dobradinha sencha e rails, vamos ver se a galera [...]]]></description>
			<content:encoded><![CDATA[<div class="socialize-in-content" style="float:left;"><div class="socialize-in-button socialize-in-button-vertical"><script type="text/javascript">
			<!-- 
				tweetmeme_url = "http://www.milfont.org/tech/2010/12/18/terceiro-encontro-guru-ce/";
				tweetmeme_source = "tweetmeme";
				tweetmeme_style = "";
				
			//-->
			</script>
                        <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script></div></div><p>Galera da <a href="http://guruce.org/">guru_ce</a> está mandando muito bem, dê uma sacada como foi o <a href="http://guruce.org/iii-encontro-guru-ce/">encontro</a>:</p>
<p style="text-align: center;"><a href="http://www.milfont.org/tech/wp-content/uploads/2010/12/210115888.jpg"><img class="aligncenter size-full wp-image-1136" title="guruce1" src="http://www.milfont.org/tech/wp-content/uploads/2010/12/210115888.jpg" alt="" width="384" height="287" /></a></p>
<p>Fiz código na hora e como sempre não deu tempo de mostrar tudo que eu gostaria, estourei o tempo e saímos de lá por volta de 12:30. Espero ter gerado curiosidade na dobradinha sencha e rails, vamos ver se a galera manda dúvidas para a lista.</p>
<div id="__ss_6230362" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Construindo WebApps ricas com Rails e Sencha" href="http://www.slideshare.net/cmilfont/gurucesencha">Construindo WebApps ricas com Rails e Sencha</a></strong><object id="__sse6230362" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" 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://static.slidesharecdn.com/swf/ssplayer2.swf?doc=6230362&amp;stripped_title=gurucesencha&amp;userName=cmilfont" /><param name="name" value="__sse6230362" /><param name="allowfullscreen" value="true" /><embed id="__sse6230362" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=6230362&amp;stripped_title=gurucesencha&amp;userName=cmilfont" name="__sse6230362" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/12/18/terceiro-encontro-guru-ce/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setup do Sunspot-rails no Rspec</title>
		<link>http://www.milfont.org/tech/2010/06/23/setup-sunspot-e-rspec/</link>
		<comments>http://www.milfont.org/tech/2010/06/23/setup-sunspot-e-rspec/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 18:20:27 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Rspec]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Sunspot]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ruby rails]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[sunspot]]></category>
		<category><![CDATA[sunspot-rails]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=965</guid>
		<description><![CDATA[Tínhamos um problema nos testes unitários por débito técnico [na verdade desleixo mesmo] com o setup do Rspec e Sunspot-rails em determinado projeto. O problema era que mesmo para executar um simples teste unitário, levantávamos o Sunspot no spec_helper.rb. Resolvi refatorar isso, acabei descobrindo no before/after do Spec::Runner.configure algo que eu não usava e que [...]]]></description>
			<content:encoded><![CDATA[<p>Tínhamos um problema nos testes unitários por débito técnico [na verdade desleixo mesmo] com o setup do <a href="http://rspec.info/rails/">Rspec</a> e <a href="http://github.com/outoftime/sunspot/">Sunspot-rails</a> em determinado projeto. O problema era que mesmo para executar um simples teste unitário, levantávamos o Sunspot no spec_helper.rb.</p>
<p>Resolvi refatorar isso, acabei descobrindo no <a href="http://rspec.info/documentation/before_and_after.html">before/after do Spec::Runner.configure</a> algo que eu não usava e que já existia desde o rspec &#8220;1.1.12 / 2009-01-11&#8243;, pelo que percebi no changelog.</p>
<p>O que fiz e parece bobo é separar pelo tipo (type) <strong>integration</strong> a subida de uma instancia real do Sunspot e agora dá para usar a estrutura de <a href="http://wiki.github.com/outoftime/sunspot/rspec-and-sunspot">Rspec que o Sunspot disponibiliza</a> para meus testes unitários.<br />
<div id="gist-450280" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="c1">#arquivo spec_helper.rb</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="no">ENV</span><span class="o">[</span><span class="s2">&quot;RAILS_ENV&quot;</span><span class="o">]</span> <span class="o">||=</span> <span class="s1">&#39;test&#39;</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'><span class="nb">require</span> <span class="no">File</span><span class="o">.</span><span class="n">expand_path</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="no">File</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="bp">__FILE__</span><span class="p">),</span><span class="s1">&#39;..&#39;</span><span class="p">,</span><span class="s1">&#39;config&#39;</span><span class="p">,</span><span class="s1">&#39;environment&#39;</span><span class="p">))</span></div><div class='line' id='LC6'><br/></div><div class='line' id='LC7'><span class="nb">require</span> <span class="s1">&#39;spec/autorun&#39;</span></div><div class='line' id='LC8'><span class="nb">require</span> <span class="s1">&#39;spec/rails&#39;</span></div><div class='line' id='LC9'><span class="nb">require</span> <span class="s1">&#39;rake&#39;</span></div><div class='line' id='LC10'><span class="nb">require</span> <span class="s1">&#39;ruby-debug&#39;</span> <span class="k">unless</span> <span class="no">RUBY_VERSION</span> <span class="o">&gt;</span> <span class="s1">&#39;1.9&#39;</span></div><div class='line' id='LC11'><span class="nb">require</span> <span class="s1">&#39;sunspot/rails/tasks&#39;</span></div><div class='line' id='LC12'><span class="nb">require</span> <span class="s1">&#39;authlogic/test_case&#39;</span></div><div class='line' id='LC13'><span class="nb">require</span> <span class="s1">&#39;sunspot/rails/spec_helper&#39;</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="nb">require</span> <span class="s1">&#39;database_cleaner&#39;</span></div><div class='line' id='LC16'><br/></div><div class='line' id='LC17'><span class="c1">#observe aqui que eu criei uma pasta support porque guardo algumas confs em arquivos contidos nela</span></div><div class='line' id='LC18'><span class="no">Dir</span><span class="o">[</span><span class="s2">&quot;</span><span class="si">#{</span><span class="no">File</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="bp">__FILE__</span><span class="p">)</span><span class="si">}</span><span class="s2">/support/**/*.rb&quot;</span><span class="o">].</span><span class="n">each</span> <span class="p">{</span><span class="o">|</span><span class="n">f</span><span class="o">|</span> <span class="nb">require</span> <span class="n">f</span><span class="p">}</span></div><div class='line' id='LC19'><br/></div><div class='line' id='LC20'><span class="no">Spec</span><span class="o">::</span><span class="no">Runner</span><span class="o">.</span><span class="n">configure</span> <span class="k">do</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span></div><div class='line' id='LC21'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">use_transactional_fixtures</span> <span class="o">=</span> <span class="kp">true</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">use_instantiated_fixtures</span>  <span class="o">=</span> <span class="kp">false</span></div><div class='line' id='LC23'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">fixture_path</span> <span class="o">=</span> <span class="no">RAILS_ROOT</span> <span class="o">+</span> <span class="s1">&#39;/spec/fixtures/&#39;</span></div><div class='line' id='LC24'><br/></div><div class='line' id='LC25'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">before</span><span class="p">(</span><span class="ss">:suite</span><span class="p">)</span> <span class="k">do</span></div><div class='line' id='LC26'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="no">DatabaseCleaner</span><span class="o">.</span><span class="n">strategy</span> <span class="o">=</span> <span class="ss">:truncation</span></div><div class='line' id='LC27'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="no">DatabaseCleaner</span><span class="o">.</span><span class="n">clean_with</span><span class="p">(</span><span class="ss">:truncation</span><span class="p">)</span></div><div class='line' id='LC28'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC29'><br/></div><div class='line' id='LC30'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">before</span><span class="p">(</span><span class="ss">:each</span><span class="p">)</span> <span class="k">do</span></div><div class='line' id='LC31'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="no">DatabaseCleaner</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC32'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="ss">:each</span><span class="p">)</span> <span class="k">do</span></div><div class='line' id='LC35'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="no">DatabaseCleaner</span><span class="o">.</span><span class="n">clean</span></div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC37'><br/></div><div class='line' id='LC38'>&nbsp;&nbsp;<span class="o">[</span><span class="ss">:model</span><span class="p">,</span> <span class="ss">:helper</span><span class="p">,</span> <span class="ss">:controller</span><span class="o">].</span><span class="n">each</span> <span class="p">{</span><span class="o">|</span><span class="n">type</span><span class="o">|</span></div><div class='line' id='LC39'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">before</span><span class="p">(</span><span class="ss">:each</span><span class="p">,</span> <span class="ss">:type</span> <span class="o">=&gt;</span> <span class="n">type</span><span class="p">)</span> <span class="k">do</span></div><div class='line' id='LC40'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">::</span><span class="no">Sunspot</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="o">::</span><span class="no">Sunspot</span><span class="o">::</span><span class="no">Rails</span><span class="o">::</span><span class="no">StubSessionProxy</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="o">::</span><span class="no">Sunspot</span><span class="o">.</span><span class="n">session</span><span class="p">)</span></div><div class='line' id='LC41'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC42'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="ss">:each</span><span class="p">,</span> <span class="ss">:type</span> <span class="o">=&gt;</span> <span class="n">type</span><span class="p">)</span> <span class="k">do</span></div><div class='line' id='LC43'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="o">::</span><span class="no">Sunspot</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="o">::</span><span class="no">Sunspot</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">original_session</span></div><div class='line' id='LC44'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC45'>&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC46'><br/></div><div class='line' id='LC47'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">before</span><span class="p">(</span><span class="ss">:all</span><span class="p">,</span> <span class="ss">:type</span> <span class="o">=&gt;</span> <span class="ss">:integration</span><span class="p">)</span> <span class="k">do</span></div><div class='line' id='LC48'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="no">JojobaSunspot</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">start</span></div><div class='line' id='LC49'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC50'>&nbsp;&nbsp;<span class="n">config</span><span class="o">.</span><span class="n">after</span><span class="p">(</span><span class="ss">:suite</span><span class="p">)</span> <span class="k">do</span></div><div class='line' id='LC51'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="no">JojobaSunspot</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">stop</span></div><div class='line' id='LC52'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC53'><br/></div><div class='line' id='LC54'><span class="k">end</span></div><div class='line' id='LC55'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/450280/58362bde581f7929fffd831ee9fead2d0054c113/gistfile1.builder" style="float:right;">view raw</a>
            <a href="https://gist.github.com/450280#file_gistfile1.builder" style="float:right;margin-right:10px;color:#666">gistfile1.builder</a>
            <a href="https://gist.github.com/450280">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</p>
<p>Inspirado <a href="http://blog.kabisa.nl/2010/02/03/running-cucumber-features-with-sunspot_rails/">nesse post</a>, eu adaptei para o código que uso ao subir o sunspot com linha de comando para os testes de integração. Observe no código anterior que importo configurações da pasta <em><strong>support</strong></em>, inclusive a classe JojobaSunspot, usada no after e before de integration.</p>
<div id="gist-450298" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nb">require</span> <span class="s2">&quot;net/http&quot;</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'><span class="k">class</span> <span class="nc">JojobaSunspot</span></div><div class='line' id='LC4'><br/></div><div class='line' id='LC5'>&nbsp;&nbsp;<span class="k">def</span> <span class="nf">start</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@started</span> <span class="o">=</span> <span class="no">Time</span><span class="o">.</span><span class="n">now</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">up_sunspot</span> <span class="k">if</span> <span class="n">starting</span></div><div class='line' id='LC8'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">up</span></div><div class='line' id='LC9'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'>&nbsp;&nbsp;<span class="k">def</span> <span class="nf">stop</span></div><div class='line' id='LC12'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">system</span><span class="p">(</span><span class="s2">&quot;sunspot-solr stop --pid-dir=/tmp/pids&quot;</span><span class="p">)</span> <span class="k">unless</span> <span class="n">starting</span></div><div class='line' id='LC13'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'>&nbsp;&nbsp;<span class="kp">private</span></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="k">def</span> <span class="nf">port</span></div><div class='line' id='LC17'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="no">Sunspot</span><span class="o">::</span><span class="no">Rails</span><span class="o">::</span><span class="no">Server</span><span class="o">.</span><span class="n">new</span><span class="o">.</span><span class="n">port</span></div><div class='line' id='LC18'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC19'><br/></div><div class='line' id='LC20'>&nbsp;&nbsp;<span class="k">def</span> <span class="nf">up_sunspot</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">system</span><span class="p">(</span><span class="s2">&quot;sunspot-solr start -p 8981 -d /tmp/solr_data_test --pid-dir=/tmp/pids --log-file=/tmp/solr_log_test.log --log-level=INFO&quot;</span><span class="p">)</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC23'><br/></div><div class='line' id='LC24'>&nbsp;&nbsp;<span class="k">def</span> <span class="nf">up</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">while</span> <span class="n">starting</span></div><div class='line' id='LC26'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">puts</span> <span class="s2">&quot;Sunspot server is starting...&quot;</span></div><div class='line' id='LC27'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC28'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">puts</span> <span class="s2">&quot;Sunspot server took </span><span class="si">#{</span><span class="s1">&#39;%.2f&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="no">Time</span><span class="o">.</span><span class="n">now</span> <span class="o">-</span> <span class="vi">@started</span><span class="p">)</span><span class="si">}</span><span class="s2"> sec. to get up and running. Let&#39;s Jojoba!&quot;</span></div><div class='line' id='LC29'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC30'><br/></div><div class='line' id='LC31'>&nbsp;&nbsp;<span class="k">def</span> <span class="nf">starting</span></div><div class='line' id='LC32'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">begin</span></div><div class='line' id='LC33'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nb">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></div><div class='line' id='LC34'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">request</span> <span class="o">=</span> <span class="no">Net</span><span class="o">::</span><span class="no">HTTP</span><span class="o">.</span><span class="n">get_response</span><span class="p">(</span><span class="no">URI</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="s2">&quot;http://localhost:</span><span class="si">#{</span><span class="n">port</span><span class="si">}</span><span class="s2">/solr/&quot;</span><span class="p">))</span></div><div class='line' id='LC35'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kp">false</span></div><div class='line' id='LC36'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">rescue</span> <span class="no">Errno</span><span class="o">::</span><span class="no">ECONNREFUSED</span></div><div class='line' id='LC37'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="kp">true</span></div><div class='line' id='LC38'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC39'>&nbsp;&nbsp;<span class="k">end</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="k">end</span></div><div class='line' id='LC42'><br/></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/450298/d7c9895f54595e5074a63efca8c003cf825eae9f/gistfile1.builder" style="float:right;">view raw</a>
            <a href="https://gist.github.com/450298#file_gistfile1.builder" style="float:right;margin-right:10px;color:#666">gistfile1.builder</a>
            <a href="https://gist.github.com/450298">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Desde que colocamos testes de integração o tempo de execução da bateria subiu muito, provocamos um setup ineficiente e desnecessário para os testes unitários. Fica a dica para quem passar pelo mesmo problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/06/23/setup-sunspot-e-rspec/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Você está nivelando por baixo e/ou não conhece seus desenvolvedores</title>
		<link>http://www.milfont.org/tech/2010/01/21/voce-esta-nivelando-por-baixo-eou-nao-conhece-seus-desenvolvedores/</link>
		<comments>http://www.milfont.org/tech/2010/01/21/voce-esta-nivelando-por-baixo-eou-nao-conhece-seus-desenvolvedores/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 14:34:01 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Linguagens]]></category>
		<category><![CDATA[mercado]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[linguagens dinâmicas]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ruby rails]]></category>
		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/2010/01/21/voce-esta-nivelando-por-baixo-eou-nao-conhece-seus-desenvolvedores/</guid>
		<description><![CDATA[Um amigo fez a seguinte pergunta que é muito comum hoje em dia com adoção crescente sobre linguagens dinâmicas, principalmente Ruby: (&#8230;)&#8221;A dúvida era essa: Linguagens dinâmicas dão maiores possibilidades de inclusão de erro no código com isso aumentando de forma significativa a refatoração.&#8221;(&#8230;) Em conversa com um excelente desenvolvedor aqui no Ceará, Delberto Muniz, [...]]]></description>
			<content:encoded><![CDATA[<p>Um amigo fez a seguinte pergunta que é muito comum hoje em dia com adoção crescente sobre linguagens dinâmicas, principalmente Ruby:</p>
<blockquote><p><strong>(&#8230;)&#8221;A dúvida era essa: Linguagens dinâmicas dão maiores possibilidades de inclusão de erro no código com isso aumentando de forma significativa a refatoração.&#8221;(&#8230;)</strong></p></blockquote>
<p>Em conversa com um excelente desenvolvedor aqui no Ceará, <a href="http://twitter.com/delbert_ce">Delberto Muniz</a>, ele escreveu a seguinte resposta:</p>
<blockquote><p>Estava relendo um livro sobre os primórdios da programação e houve um debate semelhante: Os programadores Assembly achavam que programar em Fortan dava maiores possibilidades de erros porquê o programador não tinha total controle sobre o código gerado.</p>
<p>Dez anos depois o pessoal do Fortran falou mal do Algol porquê Algol abstraía demais e o programador não tinha total controle sobre a linguagem.</p>
<p>Aí veio o pessoal do C/C++ dizendo que Java abstraía demais, deixando margens a bugs serem introduzidos nos programas pelo compilador e/ou pela vm ou porquê simplesmente ele não estava alocando/desalocando memória manualmente.</p>
<p>Só mudaram as linguagens &#8211; o debate é sempre o mesmo: Se eu aumentar a abstração, meus programadores vão fazer besteira?<br />
<strong><br />
Se você está com essa dúvida, sinto muito: Você está nivelando por baixo e/ou não conhece seus desenvolvedores.</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2010/01/21/voce-esta-nivelando-por-baixo-eou-nao-conhece-seus-desenvolvedores/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Retrospectiva 2009</title>
		<link>http://www.milfont.org/tech/2009/12/28/retrospectiva-2009/</link>
		<comments>http://www.milfont.org/tech/2009/12/28/retrospectiva-2009/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 15:43:52 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Maré de Agilidade]]></category>
		<category><![CDATA[offtopic]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[xpce]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=844</guid>
		<description><![CDATA[Fonte: Jornal OPOVO Esse foi um bom ano, iniciei 2009 abrindo outra empresa e saindo da Triadworks que continua Triad (com o Carlos Átila, além do Handerson Frota e o Rafael Ponte) e agora parceira e amiga. Minha empresa, a Milfont Consulting foi o profissionalismo de algo que eu já vinha fazendo há algum tempo: [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Jornal OPOVO  (Foto: IGOR DE MELO)" href="http://www.milfont.org/tech/wp-content/uploads/2010/01/937000_not_fot.jpg"><img src="http://www.milfont.org/tech/wp-content/uploads/2010/01/937000_not_fot.jpg" alt="Jornal OPOVO  (Foto: IGOR DE MELO)" /></a><br />
<cite>Fonte: <a href="http://opovo.uol.com.br/opovo/esportes/937000.html">Jornal OPOVO</a> </cite></p>
<p>Esse foi um bom ano, iniciei 2009 abrindo outra empresa e saindo da <a href="http://www.triadworks.com.br/">Triadworks</a> que continua Triad (com o <a href="http://www.carlosatilaabreu.blogspot.com/">Carlos Átila</a>, além do <a href="http://www.handersonfrota.com.br/">Handerson Frota</a> e o <a href="http://www.rponte.com.br/">Rafael Ponte</a>) e agora parceira e amiga.</p>
<p>Minha empresa, a Milfont Consulting foi o profissionalismo de algo que eu já vinha fazendo há algum tempo: Mentoring, treinamento e coaching em desenvolvimento de software, só que agora focado em XP e um nicho específico de linguagem, Ruby. Sobre Rails eu vou fazer um post a parte, sobre o mercado local e meus projetos.</p>
<p>Dois clientes em especial marcaram o ano da Milfont Consulting, o Grupo <a href="http://www.grupotubform.com.br/">Tubform</a> que vem montando um dos maiores projetos em Rails no Brasil que tenho notícia e o <a href="http://www.grupofortes.com.br/">Grupo Fortes</a> que lançou recentemente o <a href="http://www.f2rh.com.br/">F2RH</a>, um portal gratuito para empresas e profissionais que desejam contratar e serem contratados respectivamente. Claro que meus antigos clientes continuam com atenção especial, mas já estão bem maduros em seus sistemas e processos o que me alegra enormemente e me dão aquela satisfação profissional que é motivo para continuar o trabalho que estamos fazendo.</p>
<p>Em relação à comunidade de desenvolvimento de software começamos (eu e <a href="http://www.igocoelho.com.br/">Igo Coelho</a>) o ano criando um grupo de discussões sobre XP exclusivamente do Ceará, o <a href="http://www.xpce.org/">XPCE</a>, do qual <a href="http://www.milfont.org/tech/2009/03/08/extreme-programming-no-ceara/">explico os motivos nesse post</a>. Depois convidamos o Henrique Landim e por último o <a href="http://franciscobarroso.blogspot.com/">Francisco Barroso</a> para se tornarem coordenadores.</p>
<p><a class="alignleft" title="Curso Caelum em Fortaleza - agosto 2009 on Twitpic" href="http://twitpic.com/vl5kd"><img class="alignleft" style="margin-left: 5px; margin-right: 5px;" src="http://twitpic.com/show/thumb/vl5kd.jpg" alt="Curso Caelum em Fortaleza - agosto 2009 on Twitpic" width="150" height="150" /></a></p>
<p>Em agosto realizamos o <a href="http://www.milfont.org/tech/2009/08/12/cobertura-do-mare-de-agilidade/">Maré de Agilidade Fortaleza</a>, que nos deu uma boa perspectiva de como fazer um evento, aprendemos muito com os erros cometidos e vamos para 2010 agora com profissionalismo. Nesse mesmo evento nós formamos a primeiro turma da <a href="http://www.caelum.com.br/">Caelum</a> em Fortaleza, aos trancos e barrancos conseguimos trazer o <a href="http://www.fabiokung.com/">Fábio Kung</a> para nos ensinar um Rails de qualidade. Agradeço a <a href="http://www.caelum.com.br/">Caelum</a> e principalmente ao <a href="http://twitter.com/paulo_caelum/">Paulo Silveira</a> por nos ter presenteado com a vinda do Fábio Kung, que é um dos melhores profissionais do mundo e conseguiu impressionar profissionais com anos de mercado e alguns com mais de um ano em Rails mesmo sendo um curso básico. Em 2010 vamos tentar trazer a Caelum mais vezes.</p>
<p>Não daria para citar todos os amigos e profissionais envolvidos nesses eventos da XPCE, mas agradeço o desprendimento de todos vocês, quem nos acompanha sabe o esforço e dedicação que todos fizeram.</p>
<p><a class="alignleft" title="Share photos on twitter with Twitpic" href="http://twitpic.com/vl1hs"><img style="margin-left: 5px; margin-right: 5px;" src="http://twitpic.com/show/thumb/vl1hs.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a></p>
<p>Esse ano li <a href="http://www.shelfari.com/cmilfont/tags/web%202_2e_0">cerca de 20 livros</a> para um <a href="http://www.milfont.org/tech/research/crowds/">projeto de pesquisa que estou escrevendo</a>, além de <a href="http://www.shelfari.com/cmilfont/shelf">alguns livros técnicos</a>. Fui muito ao cinema para assistir desenhos e filmes de ação com meu filho mas tive pouco tempo para escrever como eu gostaria.<a href="http://www.lastfm.com.br/user/cmilfont"> Ouvi pouco rock esse ano</a>, já que passo o tempo quase todo em clientes e não dá para voce botar fones de ouvidos quando trabalhamos com consultoria.</p>
<h2>Tempo de correr</h2>
<p>Em Setembro eu comecei um <a href="http://blogs.opovo.com.br/tempodecorrer/categorias/desafio-do-christiano/">desafio do jornal OPOVO</a> a convite do jornalista <a href="http://blogs.opovo.com.br/tempodecorrer/hamilton-nogueira/">Hamilton Nogueira</a> para sair do sedentarismo e <a href="http://opovo.uol.com.br/opovo/esportes/906206.html">fazer uma corrida de 5 km</a>. Como não nego uma boa briga, além de topar eu aumentei para 10 km, se vamos morrer pelo menos vamos com classe. O <a href="http://opovo.uol.com.br/opovo/esportes/937000.html">resultado foi que fiz a prova da Unifor</a>, 10 km, em 1:16 aproximadamente.</p>
<p><a class="alignright" title="CampeÃ£o on Twitpic" href="http://twitpic.com/ucbm8"><img style="margin-left: 5px; margin-right: 5px;" src="http://twitpic.com/show/thumb/ucbm8.jpg" alt="CampeÃ£o on Twitpic" width="150" height="150" /></a></p>
<p>Essa saída do sedentarismo foi graças ao acompanhamento do preparador físico Pedro Sena (<a href="http://opovo.uol.com.br/hotsite/quality/quality-acessoria-esportiva.html">Quality Assessoria</a>) que teve muita paciência e profissionalismo para suportar minha agenda um pouco fora do convencional. Essa saga vou publicar com mais calma em outro post.</p>
<p><a class="alignleft" title="treino de Jiujitsu na Gautama um tempo atrÃ¡s on Twitpic" href="http://twitpic.com/vl6u6"><img style="margin-left: 5px; margin-right: 5px;" src="http://twitpic.com/show/thumb/vl6u6.jpg" alt="treino de Jiujitsu na Gautama um tempo atrÃ¡s on Twitpic" width="150" height="150" /></a></p>
<p>Com um bom preparo físico o rendimento é outro, você consegue trabalhar e se divertir melhor. Até dores nas costas devido à obesidade eu já tinha, cheguei a pesar 110 kg.</p>
<p>Meus objetivos para o próximo ano com essa reviravolta  como atleta é correr uma meia maratona (que pretendo ser a do RJ no meio do ano) e voltar ao Jiujitsu que é meu esporte favorito. Até dei um treino em uma academia lá em Iguatu onde meu irmão treina. Em termos de esporte esse ano marcou meu renascimento.</p>
<p>Em termos familiar nunca estivemos tão bem, esposa amada (Renata Milfont) e filho saudável que #asgatapira. Feliz ano-novo para todos vocês e que 2010 seja melhor do que foi esse ano.</p>
<p><a title="FamÃ­lia on Twitpic" href="http://twitpic.com/tdg2a"><img src="http://twitpic.com/show/thumb/tdg2a.jpg" alt="FamÃ­lia on Twitpic" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/12/28/retrospectiva-2009/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Material do terceiro encontro XPCE</title>
		<link>http://www.milfont.org/tech/2009/10/27/material-do-terceiro-encontro-xpce/</link>
		<comments>http://www.milfont.org/tech/2009/10/27/material-do-terceiro-encontro-xpce/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 11:27:47 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviour driven development]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=801</guid>
		<description><![CDATA[Projeto de exemplo com Cucumber, Selenium e Rails http://github.com/cmilfont/bddonrails Para executar o exemplo deve se lembrar de ter o java instalado [de preferência o da SUN] por dependência do Selenium. Execute os comandos abaixo para baixar e rodar a aplicação: BDD com Cucumber, Selenium e Rails View more presentations from Christiano Milfont.]]></description>
			<content:encoded><![CDATA[<p>Projeto de exemplo com Cucumber, Selenium e Rails <a href="http://github.com/cmilfont/bddonrails">http://github.com/cmilfont/bddonrails</a></p>
<p>Para executar o exemplo deve se lembrar de ter o java instalado [de preferência o da SUN] por dependência do Selenium. Execute os comandos abaixo para baixar e rodar a aplicação:</p>
<div id="gist-219501" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="n">git</span> <span class="nb">clone</span> <span class="n">git</span><span class="vi">@github</span><span class="o">.</span><span class="n">com</span><span class="ss">:cmilfont</span><span class="o">/</span><span class="n">bddonrails</span><span class="o">.</span><span class="n">git</span></div><div class='line' id='LC2'><span class="n">cd</span> <span class="n">bddonrails</span><span class="o">/</span></div><div class='line' id='LC3'><span class="n">sudo</span> <span class="n">rake</span> <span class="n">gems</span><span class="ss">:install</span> <span class="no">RAILS_ENV</span><span class="o">=</span><span class="nb">test</span></div><div class='line' id='LC4'><span class="c1">#lembre de trocar a senha do root no mysql ou mudar o banco</span></div><div class='line' id='LC5'><span class="n">rake</span> <span class="n">db</span><span class="ss">:create:all</span></div><div class='line' id='LC6'><span class="n">rake</span> <span class="n">db</span><span class="ss">:migrate</span></div><div class='line' id='LC7'><span class="n">rake</span> <span class="n">cucumber</span><span class="ss">:ok</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/219501/95276a429fd753cdf85620cd4d56aa2cd326d583/gistfile1.rb" style="float:right;">view raw</a>
            <a href="https://gist.github.com/219501#file_gistfile1.rb" style="float:right;margin-right:10px;color:#666">gistfile1.rb</a>
            <a href="https://gist.github.com/219501">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<div id="__ss_2356178" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="BDD com Cucumber, Selenium e Rails" href="http://www.slideshare.net/cmilfont/bdd-com-cucumber-selenium-e-rails">BDD com Cucumber, Selenium e Rails</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" 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://static.slidesharecdn.com/swf/ssplayer2.swf?doc=3encontro-091027061527-phpapp01&amp;stripped_title=bdd-com-cucumber-selenium-e-rails" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=3encontro-091027061527-phpapp01&amp;stripped_title=bdd-com-cucumber-selenium-e-rails" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/10/27/material-do-terceiro-encontro-xpce/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3º Encontro XPCE &#8211; 2º Palestra confirmada</title>
		<link>http://www.milfont.org/tech/2009/09/21/3-encontro-xpce-2-palestra-confirmada/</link>
		<comments>http://www.milfont.org/tech/2009/09/21/3-encontro-xpce-2-palestra-confirmada/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 11:29:35 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviour driven development]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=782</guid>
		<description><![CDATA[A grade foi finalizada com a confirmação da segunda palestra para o evento com um profissional experiente falando e demonstrando na prática como desenvolver com Rspec e Cucumber seguindo uma moderna abordagem chamada Behaviour Driven Development. Palestra: BDD prático com Cucumber, Selenium e RSpec Resumo: Palestra na forma de &#8220;hands on&#8221; com a construção de [...]]]></description>
			<content:encoded><![CDATA[<p>A grade foi finalizada com a confirmação da segunda palestra para o evento com um profissional experiente falando e demonstrando na prática como desenvolver com Rspec e Cucumber seguindo uma moderna abordagem chamada Behaviour Driven Development.</p>
<p><strong>Palestra: </strong><strong>BDD prático com Cucumber, Selenium e RSpec</strong></p>
<p><strong>Resumo:</strong> Palestra na forma de &#8220;hands on&#8221; com a construção de uma aplicação utilizando conceitos de BDD. Outside in development visto na prática através da construção e automação de user stories com Cucumber + Selenium e descrição de comportamento com RSpec e Remarkable</p>
<p><strong>Palestrante: Jefferson Jean Martins Girão</strong><br />
Desenvolvedor no Grupo Tubform (<a href="http://www.grupotubform.com.br/" target="_blank">http://www.grupotubform.com.br</a>) atualmente trabalhando na migração de um ERP industrial de MS FoxPro para Ruby on Rails e Javascript com EXTjs. Tem 4 anos de experiência em desenvolvimento de software já tendo passado por áreas como automação comercial, terceiro setor e gestão pública municipal.</p>
<p>Informações sobre o evento:</p>
<h2>Título: 3º Encontro XPCE &#8211; Comunidade eXtreme Programming do Ceará</h2>
<h2>Local: Faculdade FA7</h2>
<h2>Data: 24 de Outubro</h2>
<h2>Agenda</h2>
<ol>
<li>08:30 as 09:30 &#8211; BDD prático com Cucumber, Selenium e RSpec &#8211; Jefferson Girão</li>
<li>09:30 as 10:00 &#8211; Intervalo</li>
<li>10:00 as 11:00 &#8211; Automação de Testes Funcionais de Software com Selenium &#8211; Fabrício Lemos</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/09/21/3-encontro-xpce-2-palestra-confirmada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recomendação sobre o JBehave</title>
		<link>http://www.milfont.org/tech/2009/09/14/recomendacao-sobre-o-jbehave/</link>
		<comments>http://www.milfont.org/tech/2009/09/14/recomendacao-sobre-o-jbehave/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 10:15:10 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[teste]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[jbehave]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=761</guid>
		<description><![CDATA[Minha recomendação sobre JBehave: use Cucumber! Depois de quebrar cabeça para conseguir escrever histórias em Java eu resolvi trocar o Jbehave [java] pelo cucumber [ruby] em quase todos os projetos Java [falta só um projeto agora] e o resultado é uma pessoa mais feliz e menos trabalho para resolver coisas simples. Não façam juízo de [...]]]></description>
			<content:encoded><![CDATA[<p>Minha recomendação sobre <a href="http://jbehave.org/">JBehave</a>: use <a href="http://cukes.info/">Cucumber</a>!</p>
<p>Depois de quebrar cabeça para conseguir escrever histórias em Java eu resolvi trocar o Jbehave [java] pelo cucumber [ruby] em quase todos os projetos Java [falta só um projeto agora] e o resultado é uma pessoa mais feliz e menos trabalho para resolver coisas simples.</p>
<p>Não façam juízo de valores sobre uma linguagem ser superior a outra, isso não existe. A questão é que escrever os passos das histórias no Ruby é muito mais fácil pela natureza da linguagem, como os blocos. Até coisas simples como parsear listas de valores é algo muito complexo e leva tempo, aliás, parsear os parâmetros é sem dúvida o mais trabalhoso do JBehave.</p>
<p>Com JRuby e Cucumber você consegue utilizar o Storyrunner com facilidade, acessando sua API Java normalmente e tem também a integração natural com o Selenium.</p>
<p>Pretendo abordar esses assuntos no <a href="http://www.milfont.org/tech/2009/09/13/3-encontro-xpce-1-palestra-confirmada/">3º encontro da XPCE</a> no dia 24/10, até lá.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/09/14/recomendacao-sobre-o-jbehave/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Slides do Maré de Agilidade Fortaleza &#8211; 2009</title>
		<link>http://www.milfont.org/tech/2009/08/09/slides-do-mare-de-agilidade-fortaleza-2009/</link>
		<comments>http://www.milfont.org/tech/2009/08/09/slides-do-mare-de-agilidade-fortaleza-2009/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 11:57:15 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Behaviour Driven Development]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Melhores práticas]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[xpce]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviour driven development]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[maredeagilidade]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ruby rails]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[teste]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=735</guid>
		<description><![CDATA[Mare de Agilidade &#8211; BDD e TDD View more presentations from Christiano Milfont.]]></description>
			<content:encoded><![CDATA[<div style="width:425px;text-align:left" id="__ss_1832390"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/cmilfont/mare-de-agilidade-bdd-e-tdd" title="Mare de Agilidade - BDD e TDD">Mare de Agilidade &#8211; BDD e TDD</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=maredeagilidademilfont-090809062633-phpapp01&#038;stripped_title=mare-de-agilidade-bdd-e-tdd" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=maredeagilidademilfont-090809062633-phpapp01&#038;stripped_title=mare-de-agilidade-bdd-e-tdd" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/cmilfont">Christiano Milfont</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/08/09/slides-do-mare-de-agilidade-fortaleza-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maré de Agilidade</title>
		<link>http://www.milfont.org/tech/2009/08/05/mare-de-agilidade/</link>
		<comments>http://www.milfont.org/tech/2009/08/05/mare-de-agilidade/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 13:56:37 +0000</pubDate>
		<dc:creator>cmilfont</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Linguagens]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Métodos Ágeis]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Test Driven]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[XP]]></category>
		<category><![CDATA[Agil]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[CearaOnRails]]></category>
		<category><![CDATA[Extreme Programming]]></category>
		<category><![CDATA[maredeagilidade]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[ruby rails]]></category>
		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://www.milfont.org/tech/?p=731</guid>
		<description><![CDATA[Ontem começou o Maré de Agilidade com o curso RR11 de Ruby on Rails da Caelum com o Fábio Kung, que não precisa de apresentações [se você não sabe quem é Fábio Kung então mude de profissão]. Como o Kung está indo integrar o time da Locaweb, [apesar de continuar como instrutor na Caelum] essa [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.igocoelho.com.br/wp-content/uploads/2009/05/mare_agilidade.jpeg" alt="Mare de Agilidade" /></p>
<p>Ontem começou o <a href="http://www.maredeagilidade.com.br/">Maré de Agilidade</a> com o curso <a href="http://www.caelum.com.br/curso/rr-11-ruby-on-rails/">RR11 de Ruby on Rails</a> da <a href="http://www.caelum.com.br">Caelum</a> com o <a href="http://www.fabiokung.com">Fábio Kung</a>, que não precisa de apresentações [se você não sabe quem é Fábio Kung então mude de profissão].</p>
<p>Como o Kung está <a href="http://fabiokung.com/2009/07/27/status-report-new-job-new-life/">indo integrar o time da Locaweb</a>, [apesar de continuar como instrutor na Caelum] essa é a última oportunidade de tê-lo conosco para ministrar esse curso, a turma foi agraciada com a sorte.</p>
<p><img src="http://s3.amazonaws.com/twitpic/photos/large/21428094.jpg?AWSAccessKeyId=0ZRYP5X5F6FSMBCCSE82&amp;Expires=1249479118&amp;Signature=4CwqGUZlOTxWlDFv3et3mnthV3Q%3D" alt="mare na Milfont Consulting" /></p>
<p>Na quinta e na sexta <a href="http://www.maredeagilidade.com.br/programacao.html">acontecerão os minicursos</a> oficiais do Maré de Agilidade com o <a href="http://manoelpimentel.blogspot.com/">Manoel Pimentel</a> da <a href="http://www.visaoagil.com/">Visão Ágil</a> e a turma da empresa <a href="http://www.seatecnologia.com.br">SEA Tecnologia</a> [ <a href="http://www.maredeagilidade.com.br/palestrantes.html?#willi">Renato Willi</a>, <a href="http://expressocapital.blogspot.com/">Bruno Pedroso</a> e <a href="http://www.maredeagilidade.com.br/palestrantes.html?#alegomes">Alexandre Gomes</a>],  ambos organizadores do evento.</p>
<p>No sábado acontecerão as palestras com todos que ministraram/rão cursos além de <a href="http://blogue.claviustales.com.br/">Clavius Tales</a>, Fabiano Milani da <a href="http://www.adaptworks.com.br/">Adaptworks</a> e um tal de Christiano Milfont.</p>
<p>Todos os minicursos estão com vagas esgotadas, se você quiser ainda participar do Maré de Agilidade, <a href="http://www.fortestreinamentos.com.br/v3/inscricaoOnline.php?id=465">corra para a inscrição das palestras</a> enquanto há tempo.</p>
<p>Para finalizar o Maré, a Adaptworks promove o curso &#8220;Planejamento e estimativas em projetos ágeis&#8221;, através do telefone (11)5585-7738 ou pelo e-mail contato@adaptworks.com.br na sede do CGDT.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.milfont.org/tech/2009/08/05/mare-de-agilidade/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

