<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>railsbox </title>
  <id>tag:railsbox.org,2008:mephisto/</id>
  <generator version="0.8.0" uri="http://mephistoblog.com">Mephisto Drax</generator>
  
  <link href="http://railsbox.org/" rel="alternate" type="text/html" />
  <updated>2008-10-28T04:14:18Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/osantana" type="application/atom+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fosantana" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fosantana" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fosantana" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/osantana" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fosantana" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fosantana" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fosantana" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-10-28:412</id>
    <published>2008-10-28T04:02:00Z</published>
    <updated>2008-10-28T04:14:18Z</updated>
    <category term="rspec" />
    <category term="autospec" />
    <category term="autotest" />
    <category term="rspec" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/434315942/autotest-rspec-1-1-11" rel="alternate" type="text/html" />
    <title>Autotest + RSpec 1.1.11</title>
<content type="html">
            &lt;p&gt;Apenas uma dica rápida para quem usa Autotest + RSpec. A partir da versão &lt;a href="http://github.com/dchelimsky/rspec-rails/tree/master/History.txt"&gt;1.1.5&lt;/a&gt; foi feito uma alteração na maneira como se executa o autotest, coisa muito simples, mas tem tirado a paz da galera.&lt;/p&gt;
&lt;p&gt;Se você usa gem, somente a gem, então use:&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;autospec&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Se você usa plugin, então use:&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;script/autospec&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Simples...&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=7qpFM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=7qpFM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=HWBsM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=HWBsM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=r2oYm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=r2oYm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=TzKFm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=TzKFm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=big4m"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=big4m" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=RCoPM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=RCoPM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/434315942" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/10/28/autotest-rspec-1-1-11</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-10-23:401</id>
    <published>2008-10-23T22:33:00Z</published>
    <updated>2008-10-23T23:00:46Z</updated>
    <category term="railssummit" />
    <category term="videocast" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/430102210/railsbox-videocast-na-rails-summit-2008" rel="alternate" type="text/html" />
    <title>Railsbox Videocast na Rails Summit 2008</title>
<content type="html">
            &lt;p&gt;Este é meu primeiro post depois da &lt;a href="http://www.locaweb.com.br/railssummit/"&gt;Rails Summit 2008&lt;/a&gt;. Na minha opinião foi o melhor evento de &lt;i&gt;nerd&lt;/i&gt; que já participei, simplesmente excepcional.&lt;/p&gt;
&lt;p&gt;Lá pelas tantas, a galera reunida, resolvemos gravar um videocast para o Railsbox. O problema foi que o &lt;a href="http://daviscabral.com.br"&gt;Davis&lt;/a&gt;, meu companheiro de &lt;a href="http://railsbox.org/podcasts"&gt;podcast&lt;/a&gt;, só gravou uma parte, sorte nossa que eu tinha levado o Sony Vaio do Balena, o que salvou o audio do restante do videocast. O som não ficou aquelas coisas, por isto ainda tenho que editar e tirar um pouco a diferença de volumes.&lt;/p&gt;
&lt;p&gt;Mas para vocês terem uma idéia, ai vai a parte gravada pelo Davis. Esta semana ainda termino a edição do audio e vocês poderão curtir na integra.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;object height="392" width="520"&gt;	&amp;lt;param /&gt;	&amp;lt;param /&gt;	&amp;lt;param /&gt;	&amp;lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2050442&amp;amp;amp;server=vimeo.com&amp;amp;amp;show_title=0&amp;amp;amp;show_byline=0&amp;amp;amp;show_portrait=0&amp;amp;amp;color=00adef&amp;amp;amp;fullscreen=1" height="392" width="520"&gt;&amp;lt;/embed&gt;&amp;lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/2050442?pg=embed&amp;amp;amp;sec=2050442"&gt;Railsbox Videocast na Rails Summit 2008&lt;/a&gt; from &lt;a href="http://vimeo.com/user524484?pg=embed&amp;amp;amp;sec=2050442"&gt;Ozéias Sant'ana&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;amp;amp;sec=2050442"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=b00WM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=b00WM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=i5uJM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=i5uJM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=T2Nbm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=T2Nbm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=PirGm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=PirGm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=yzAPm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=yzAPm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=beymM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=beymM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/430102210" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/10/23/railsbox-videocast-na-rails-summit-2008</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-10-06:397</id>
    <published>2008-10-06T03:46:00Z</published>
    <updated>2008-10-06T03:54:12Z</updated>
    <category term="git" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/412447844/gitx-visualizador-de-historico-do-git-para-os-x" rel="alternate" type="text/html" />
    <title>GitX - Visualizador de histórico do GIT para OS X</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/10/6/gitx.png" alt="post" /&gt;&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://github.com/pieter/gitx/wikis"&gt;GitX&lt;/a&gt; é um clone do &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/gitk.html"&gt;gitk&lt;/a&gt; feito especificamente para &lt;a href="http://www.apple.com/macosx/"&gt;OS X Leopard&lt;/a&gt;. Ainda na versão &lt;a href="http://frim.frim.nl/GitXStable.app.zip"&gt;0.4&lt;/a&gt;, ele é simplesmente espetacular. Escrito em &lt;a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html"&gt;Objective-C&lt;/a&gt;, tem interface nativa e se integra muito bem com o SO, permitindo ações como arrastar e soltar e o uso do QuickLook.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Alguns recursos:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visualização completa das informações de cada revisão&lt;/li&gt;
&lt;li&gt;Aqua interface&lt;/li&gt;
&lt;li&gt;Pesquisa rápida de commit por assunto / autor&lt;/li&gt;
&lt;li&gt;Explorador em forma de árvore para todas revisões&lt;/li&gt;
&lt;li&gt;Usar o QuickLook para todos os arquivos de todas as revisões&lt;/li&gt;
&lt;li&gt;Abrir facilmente qualquer arquivo ou diretório da árvore com um duplo clique&lt;/li&gt;
&lt;li&gt;Atualizações automáticas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://frim.frim.nl/GitXStable.app.zip"&gt;GitX Stable&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://github.com/pieter/gitx/wikis"&gt;Wiki do Projeto&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://frim.frim.nl/gitx/UserManual.html"&gt;Documentação do Projeto&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://frim.frim.nl/GitX6.mov"&gt;Screencast&lt;/a&gt;
&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=QWRPM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=QWRPM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=vHgmM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=vHgmM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=kZwmm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=kZwmm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=mWy1m"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=mWy1m" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=bLc0m"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=bLc0m" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=9qwpM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=9qwpM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/412447844" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/10/6/gitx-visualizador-de-historico-do-git-para-os-x</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-10-01:396</id>
    <published>2008-10-01T17:27:00Z</published>
    <updated>2008-10-01T17:31:07Z</updated>
    <category term="server" />
    <category term="thin" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/408477916/thin-1-0-0-that-s-what-she-said" rel="alternate" type="text/html" />
    <title>Thin 1.0.0 - That's What She Said</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/10/1/server.jpg" alt="post" /&gt;&lt;/p&gt;
&lt;p&gt;Esse é o codename da nova versão do &lt;a href="http://code.macournoyer.com/thin/"&gt;Thin 1.0.0&lt;/a&gt;. O lançamento é o resultado da colaboração efetiva da comunidade, que depois de roda-lo em produção, encontraram alguns bugs e outras necessidades.&lt;/p&gt;
&lt;p&gt;O Thin é um servidor Rails estável, seguro, rápido e extensível. Utiliza 3 das melhores bibliotecas Ruby para web:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;O &lt;a href="http://www.zedshaw.com/tips/ragel_state_charts.html"&gt;Mongrel parser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rubyeventmachine.com/"&gt;Event Machine&lt;/a&gt;, biblioteca para I/O de rede, extremamente escalável, alta performance e super estável&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rack.rubyforge.org/"&gt;Rack&lt;/a&gt;, que também será incluso no Rails 2.2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para instalar: gem install thin&lt;/p&gt;
&lt;p&gt;&lt;a href="http://github.com/macournoyer/thin/tree/v1.0.0/CHANGELOG"&gt;CHANGELOG&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Foto by &lt;a href="http://www.flickr.com/photos/aaronazz/"&gt;aaronazz&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=9uMBM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=9uMBM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=dG4XM"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=dG4XM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=Ru6wm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=Ru6wm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=KDwJm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=KDwJm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=2OzFm"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=2OzFm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=slN1M"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=slN1M" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/408477916" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/10/1/thin-1-0-0-that-s-what-she-said</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-09-29:389</id>
    <published>2008-09-29T11:33:00Z</published>
    <updated>2008-09-29T11:33:15Z</updated>
    <category term="podcasts" />
    <category term="apache" />
    <category term="bsd" />
    <category term="free" />
    <category term="gpl" />
    <category term="lgpl" />
    <category term="licenses" />
    <category term="mit" />
    <category term="open" />
    <category term="trademark" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/406192610/railsbox-podcast-4" rel="alternate" type="text/html" />
    <title>RailsBox Podcast #4</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/9/29/beach.jpg" alt="post" /&gt;&lt;/p&gt;

&lt;p&gt;Motivado por um &lt;a href="http://groups.google.com/group/rails-br/browse_thread/thread/37c9058f2bb98b32/ec3a0b94cf55bdcd?hl=pt-BR&amp;amp;q=software+livre&amp;amp;lnk=ol&amp;amp;"&gt;post&lt;/a&gt; na &lt;a href="http://groups.google.com/group/rails-br"&gt;rails-br&lt;/a&gt;, que demonstrou as dúvidas da galera em relação a Licenças, gravamos um podcast com dois especialistas no assunto: &lt;a href="http://mergulhao.info/"&gt;Sylvestre Mergulhão&lt;/a&gt; e &lt;a href="http://blog.rafaelcaceres.net/"&gt;Rafael Caceres&lt;/a&gt;. Conversamos sobre as diversas licenças, software livre e open source.&lt;/p&gt;

&lt;p&gt;Download: &lt;a href="/assets/2008/9/29/railsbox_4.mp3"&gt;Episódio #4&lt;/a&gt;&lt;br /&gt;
iTunes: &lt;a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=291261173"&gt;Subscribe&lt;/a&gt;&lt;br /&gt;
RSS Feed: &lt;a href="http://feeds.feedburner.com/Railsbox-Podcast"&gt;Subscribe&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Show Notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;O que é &lt;a href="http://www.opensource.org/"&gt;Open Source?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;O que é &lt;a href="http://www.fsf.org/"&gt;Software Livre?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Qual a principal diferença entre ambos?&lt;/li&gt;
&lt;li&gt;Quais os motivos que a galera confunde tanto na sua opinião?&lt;/li&gt;
&lt;li&gt;As licenças que temos hoje?
  &lt;ul&gt;
    &lt;li&gt;&lt;a href="http://creativecommons.org/licenses/publicdomain/"&gt;Public Domain&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.gnu.org/copyleft/gpl.html"&gt;GNU General Public License - GPL&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.gnu.org/licenses/old-licenses/library.html"&gt;GNU Library General Public License - LGPL&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.freebsd.org/copyright/freebsd-license.html"&gt;BSD&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;MIT&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://www.apache.org/licenses/"&gt;Apache Licenses&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linuxdevices.com/news/NS7621424054.html"&gt;GPLv2 VS. GPLv3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/freireag"&gt;Thiago Freire:&lt;/a&gt; Existe uma confusão entre licença do código e &lt;a href="http://en.wikipedia.org/wiki/Trademark"&gt;trademark.&lt;/a&gt; Ex: &lt;a href="http://www.rubyonrails.org/"&gt;Rails&lt;/a&gt; é &lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;MIT&lt;/a&gt;, mas "Rails" e o logo são TM do &lt;a href="http://www.loudthinking.com/"&gt;DHH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Qual o melhor modelo de negócio em cada um na sua opinião?&lt;/li&gt;
&lt;li&gt;Se eu tenho um software livre ou open source, posso ganhar dinheiro com ele? Quais as formas?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Foto by &lt;a href="http://www.flickr.com/photos/jaime_monfort/"&gt;Jaime Monfort&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=NlqxL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=NlqxL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=GxWwL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=GxWwL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=rLvFl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=rLvFl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=FWjcl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=FWjcl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=RCTHl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=RCTHl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=PgeiL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=PgeiL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/406192610" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/9/29/railsbox-podcast-4</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-09-16:370</id>
    <published>2008-09-16T12:28:00Z</published>
    <updated>2008-09-16T14:11:46Z</updated>
    <category term="Off-Topic" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/394173161/townconnect-inc" rel="alternate" type="text/html" />
    <title>TownConnect, Inc.</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/9/16/town.gif" alt="post" /&gt;&lt;/p&gt;
&lt;p&gt;Depois de 2 anos na &lt;a href="http://pratidonaduzzi.com.br"&gt;Prati-Donaduzzi&lt;/a&gt;, chegou a hora de mudanças. Alguns dias de conversas e entrevistas, tenho o prazer de dizer que faço parte agora do time da &lt;a href="http://townconnect.com"&gt;TownConnect, Inc.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A &lt;a href="http://townconnect.com"&gt;TownConnect, Inc.&lt;/a&gt; é uma startup localizada nos EUA, e seu produto é uma rede social muito bem organizada e focada em serviços para a família, amigos e comunidade.&lt;/p&gt;
&lt;p&gt;Junto comigo entra o &lt;a href="http://thiagopradi.net/"&gt;Thiago Pradi&lt;/a&gt;, e nós nos juntamos ao Fábio Espindula, que foi o grande responsável por tudo isto.&lt;/a&gt;
&lt;p&gt;Obrigado Mike, Obrigado Fábio.&lt;/a&gt;
&lt;p&gt;Vamos trabalhar agora!!!&lt;/p&gt;

&lt;p&gt;&lt;b&gt;English Version:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;After 2 years in &lt;a href="http://pratidonaduzzi.com.br"&gt;Prati-Donaduzzi&lt;/a&gt;, the hour of changes arrived. Some days of conversation and interviews, I'm pleased to say I'm now part of &lt;a href="http://townconnect.com"&gt;dream team&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks Mike, Thanks Fábio&lt;/p&gt;
&lt;p&gt;So, let's rock&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=7snAL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=7snAL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=wTwCL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=wTwCL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=Qkmml"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=Qkmml" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=wsRLl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=wsRLl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=qgXdl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=qgXdl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=N5jjL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=N5jjL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/394173161" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/9/16/townconnect-inc</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-09-09:350</id>
    <published>2008-09-09T18:47:00Z</published>
    <updated>2008-09-10T01:04:05Z</updated>
    <category term="podcasts" />
    <category term="jobs" />
    <category term="rails" />
    <category term="story" />
    <category term="tapajos" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946321/railsbox-podcast-3" rel="alternate" type="text/html" />
    <title>RailsBox Podcast #3</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/9/9/agile.jpg" alt="post" /&gt;&lt;/p&gt;

&lt;p&gt;Um super podcast, com &lt;a href="http://www.improveit.com.br/empresa/tapajos"&gt;Marcos Tapajós&lt;/a&gt; da &lt;a href="http://www.improveit.com.br/"&gt;ImproveIt&lt;/a&gt; e da &lt;a href="http://surgeworks.com/"&gt;Surgeworks&lt;/a&gt;. Falamos sobre carreira, mercado de trabalho, rails, plugins e não podíamos deixar de falar de testes.&lt;/p&gt;

&lt;p&gt;Download: &lt;a href="/assets/2008/9/9/RailsBox__3_-_56kbps.mp3"&gt;Episódio #3&lt;/a&gt;&lt;br /&gt;
iTunes: &lt;a href="http://feeds.feedburner.com/Railsbox-Podcast"&gt;RSS Feed&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Show Notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.improveit.com.br/empresa/tapajos"&gt;Tapajós&lt;/a&gt; e programação&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.improveit.com.br/empresa/tapajos"&gt;Tapajós&lt;/a&gt; e Rails&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rubyforge.org/projects/brazilian-rails/"&gt;Brazilian Rails&lt;/a&gt;, &lt;a href="http://www.improveit.com.br/en/opensource/amor"&gt;AMOR&lt;/a&gt;, &lt;a href="http://integration.rubyforge.org/"&gt;Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brazilian Rails em Gem&lt;/li&gt;
&lt;li&gt;Projetos Open Sources&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.improveit.com.br/empresa/vinicius"&gt;Vinícius Teles&lt;/a&gt;, &lt;a href="http://www.improveit.com.br/"&gt;ImproveIt&lt;/a&gt;, &lt;a href="http://surgeworks.com/"&gt;Surgeworks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mercado de Trabalho&lt;/li&gt;
&lt;li&gt;Futuro&lt;/li&gt;
&lt;li&gt;Testes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O livro citado pelo &lt;a href="http://www.improveit.com.br/empresa/tapajos"&gt;Tapajós&lt;/a&gt; é &lt;a href="http://www.amazon.com/Test-Driven-Development-Addison-Wesley-Signature/dp/0321146530"&gt;Test-Driven Development by Example&lt;/a&gt; do &lt;a href="http://en.wikipedia.org/wiki/Kent_Beck"&gt;Kent Beck.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Foto by &lt;a href="http://www.flickr.com/photos/joconnell/"&gt;joconnell&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=657JL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=657JL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=OXffL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=OXffL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=M2PRl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=M2PRl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=1pHnl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=1pHnl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=LXuUl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=LXuUl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=GD93L"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=GD93L" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946321" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/9/9/railsbox-podcast-3</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-09-05:344</id>
    <published>2008-09-05T12:43:00Z</published>
    <updated>2008-09-05T12:49:07Z</updated>
    <category term="rails 2.1" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946322/rails-2-1-1-release-de-manutencao" rel="alternate" type="text/html" />
    <title>Rails 2.1.1 - Release de Manutenção</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/9/3/maintenance_rails.jpg" alt="post" /&gt;&lt;/p&gt;
&lt;p&gt;Depois do &lt;a href="http://railsbox.org/2008/9/3/rails-2-0-4-release-de-manuten-o"&gt;Release de Manutenção para o Rails 2.0&lt;/a&gt;, sai agora o Release de Manutenção para o Rails 2.1. A nova versão, 2.1.1, corrige os problemas de segurança do REXML, além de outras pequenas atualizações.&lt;/p&gt;
&lt;p&gt;Para instalar a nova versão: gem install rails -version 2.1.1&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gist.github.com/8946"&gt;Vejam aqui todas as correções&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=83FML"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=83FML" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=WxmiL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=WxmiL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=BgG7l"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=BgG7l" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=BV9sl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=BV9sl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=EK35l"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=EK35l" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=6L57L"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=6L57L" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946322" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/9/5/rails-2-1-1-release-de-manutencao</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-09-04:336</id>
    <published>2008-09-04T11:18:00Z</published>
    <updated>2008-09-04T12:52:35Z</updated>
    <category term="podcasts" />
    <category term="cache" />
    <category term="jobs" />
    <category term="rails" />
    <category term="screencasts" />
    <category term="story" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946323/railsbox-podcast-2" rel="alternate" type="text/html" />
    <title>RailsBox Podcast #2</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/9/4/img.jpg" alt="post" /&gt;&lt;/p&gt;
&lt;p&gt;Nosso segundo episódio falamos um pouco sobre mercado de trabalho brasileiro e indiano, plugin has_cache, spree, Minas On Rails, Rails Summit e muito mais.&lt;/p&gt;

&lt;p&gt;Ainda temos um pouco de problemas no audio, mais já está bem melhor que no primeiro podcast. Compramos agora um programa que divide os canais e assim fica mais fácil fazer o mix.  Problemas com o iTunes e outros também resolvidos.&lt;/p&gt;

&lt;p&gt;Críticas e sugestões são sempre bem vindas.&lt;p&gt;

&lt;p&gt;Download: &lt;a href="/assets/2008/9/4/RailsBox_2.mp3"&gt;Episódio #2&lt;/a&gt;&lt;br /&gt;
iTunes: &lt;a href="http://feeds.feedburner.com/Railsbox-Podcast"&gt;RSS Feed&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Show Notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.efetividade.net/2008/08/27/prepare-se-para-ser-demitido-hoje-e-voce-nao-sera"&gt;Prepare-se para ser demitido hoje - e você não será&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://prati.ca/2008/08/27/os-indianos-estao-chegando/"&gt;Os Indianos estão chegando&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://simplesideias.com.br/has_cache-cache-no-rails-de-maneira-simples/"&gt;has_cache: cache no Rails de maneira simples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webmastersbydesign.com/2008/08/29/10-online-magazines-for-developers-and-designers/"&gt;10 Online Magazines for Developers and Designers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.shadowmaru.org/2008/8/27/aprenda-rails-assistindo-screencasts/"&gt;Aprenda Rails assistindo screencasts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.spreehq.org/"&gt;Spree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.minasonrails.org/"&gt;Minas On Rails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.locaweb.com.br/railssummit/"&gt;Rails Summit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://groups.google.com/group/rails-br/browse_thread/thread/8891464430ca0ab4/f7041de19a3dd158"&gt;Discussão da semana: Vocês não acham que o Rails está engordando?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblog.rubyonrails.com/2008/8/30/tell-your-rails-story"&gt;Dica de Leandroh: A sua história de Rails é interessante? Conte&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Foto by &lt;a href="http://www.flickr.com/photos/wallyg/338685483"&gt;Wallyg&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=k1RfwL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=k1RfwL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=OKtHKL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=OKtHKL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=YGkhRl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=YGkhRl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=omq9Yl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=omq9Yl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=9DAcfl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=9DAcfl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=RlT36L"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=RlT36L" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946323" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/9/4/railsbox-podcast-2</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-09-03:332</id>
    <published>2008-09-03T12:30:00Z</published>
    <updated>2008-09-03T12:37:19Z</updated>
    <category term="rails 2.0" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946324/rails-2-0-4-release-de-manuten-o" rel="alternate" type="text/html" />
    <title>Rails 2.0.4 - Release de Manutenção</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/9/3/maintenance_rails.jpg" alt="post" /&gt;&lt;/p&gt;
&lt;p&gt;Acaba de ser liberada a versão 2.0.4 do Rails. É uma liberação para corrigir alguns problemas de segurança, compatibilidade e correções de alguns erros. A mais importante das correções, e graças a comunidade, foi ajustar a  vulnerabilidade do REXML que poderia ser usada para um ataque &lt;a href="http://en.wikipedia.org/wiki/Denial-of-service_attack"&gt;&lt;abbr class="initialism" title="Denial of Service"&gt;DoS&lt;/abbr&gt;.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para instalar a nova versão: gem install rails -version 2.0.4&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gist.github.com/8565"&gt;Vejam aqui todas as correções&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=LBIHdL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=LBIHdL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=Kdos3L"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=Kdos3L" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=kXs7el"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=kXs7el" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=WQdbLl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=WQdbLl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=2hFpHl"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=2hFpHl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=lmqJtL"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=lmqJtL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946324" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/9/3/rails-2-0-4-release-de-manuten-o</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-08-31:325</id>
    <published>2008-08-31T18:17:00Z</published>
    <updated>2008-08-31T19:17:10Z</updated>
    <category term="agile" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946325/agil-vs-cascata" rel="alternate" type="text/html" />
    <title>Ágil vs. Cascata</title>
<content type="html">
            &lt;p&gt;&amp;lt;object height="349" width="425"&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;param&gt;&amp;lt;/param&gt;&amp;lt;embed src="http://www.youtube.com/v/gDDO3ob-4ZY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x5d1719&amp;amp;color2=0xcd311b&amp;amp;border=1" height="349" width="425"&gt;&amp;lt;/embed&gt;&amp;lt;/object&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=Gwz3PK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=Gwz3PK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=cfILlK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=cfILlK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=7xWBLk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=7xWBLk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=PywYDk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=PywYDk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=xK13Sk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=xK13Sk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=UBIdJK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=UBIdJK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946325" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/8/31/agil-vs-cascata</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-08-27:311</id>
    <published>2008-08-27T12:30:00Z</published>
    <updated>2008-09-03T22:42:07Z</updated>
    <category term="podcasts" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946326/railsbox-podcast-1" rel="alternate" type="text/html" />
    <title>RailsBox podcast #1</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/8/27/microphone.jpg" alt="post" /&gt;&lt;/p&gt;

&lt;p&gt;É com prazer que anúncio o primeiro RailsBox Podcast! Depois de algumas tentativas, diversas paradas, conseguimos finalmente terminar.&lt;/p&gt;
&lt;p&gt;Sempre ao som de bons blues, iremos falar sobre rails, ruby, web, programação, ou seja, o mundo geek.&lt;/p&gt;
&lt;p&gt;O RailsBox podcast será apresentado por mim, Ozéias Sant’ana, e por Davis Cabral.&lt;/p&gt;
&lt;p&gt;Espero que gostem e não se esqueçam de mandar feedback, que irá deixar nosso podcast cada vez melhor.&lt;/p&gt;
&lt;p&gt;Neste primeiro episódio falemos sobre o firefox, rails summit, falha no rexml, tradução e mais, confira.&lt;/p&gt;

&lt;p&gt;Download: &lt;a href="/assets/2008/8/27/RailsBox__1.mp3"&gt;Episódio #1&lt;/a&gt;&lt;br /&gt;
iTunes: &lt;a href="http://feeds.feedburner.com/Railsbox-Podcast"&gt;RSS Feed&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Show Notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.geeksaresexy.net/2008/08/22/firefox-31-to-dramatically-speed-up-javascript/"&gt;Firefox 3.1 to dramatically speed up JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.locaweb.com.br/railssummit/"&gt;Rails Summit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://weblog.rubyonrails.com/2008/8/23/dos-vulnerabilities-in-rexml"&gt;DOS vulnerabilities in rexml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/ryanb/railscasts/tree"&gt;Railscast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://railsbox.org/2008/8/14/esta-tudo-ok-para-voce"&gt;Tradução: "Está tudo OK para você?"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://veiorosa.blogspot.com/2008/08/comparao-evoluo-do-windows-e-evoluo-do.html"&gt;Comparação: a evolução do Windows e a evolução do Mac OS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.clarkware.com/cgi/blosxom/2008/08/06#Webby"&gt;Building Static Websites with Webby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rfacebook.wordpress.com/2008/08/07/desktop/"&gt;Create a Facebook Desktop Script Using Ruby in 3 Easy Steps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://rubybook.ca/2008/08/06/downgrade-older-version-rails/"&gt;Rails Tip of the Day: Use Magic Version Tag to “Downgrade” Rails to Older Version When Generating New Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dizzy.co.uk/ruby_on_rails/cheatsheets"&gt;Ruby on Rails Cheatsheets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://railsbox.org/2008/8/22/usando-o-observer-no-rails"&gt;Usando o Observer no Rails&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;UPDATE 03-09:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;O feed para iTunes e demais softwares já está ok.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=qjfSvK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=qjfSvK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=pDGwwK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=pDGwwK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=X3RnIk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=X3RnIk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=oYib0k"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=oYib0k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=FerGOk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=FerGOk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=0SZnzK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=0SZnzK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946326" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/8/27/railsbox-podcast-1</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-08-27:310</id>
    <published>2008-08-27T11:13:00Z</published>
    <updated>2008-08-27T11:28:31Z</updated>
    <category term="Off-Topic" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946327/primeiro-post" rel="alternate" type="text/html" />
    <title>Primeiro Post</title>
<content type="html">
            &lt;p&gt;&lt;img class="xleft" src="/assets/2008/8/27/post_it.jpg" alt="post" /&gt;&lt;/p&gt;

&lt;p&gt;Bom, este é o primeiro post &lt;b&gt;oficial&lt;/b&gt; no meu novo blog, e diga-se de passagem, eu estou muito feliz com isto. O meu antigo domínio, iconcreative.net, não fazia mas sentindo desde que comecei a fazer parte da comunidade rails.&lt;/p&gt;

&lt;p&gt;Com um novo layout, que vai ganhar corpo com o tempo, e bastante novidades como podcast, screencast e muito mais conteúdo para a comunidade.&lt;/p&gt;

&lt;p&gt;Aguardo sugestões, dicas e também críticas, é com elas que trarei informações certas, na pedida certa para cada leitor.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=6eXWSK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=6eXWSK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=SiOKZK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=SiOKZK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=P1Wzyk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=P1Wzyk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=xkcCSk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=xkcCSk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=HJwVYk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=HJwVYk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=obV0gK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=obV0gK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946327" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/8/27/primeiro-post</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-08-22:302</id>
    <published>2008-08-22T12:40:00Z</published>
    <updated>2008-08-22T12:50:35Z</updated>
    <category term="rails 2.1" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946328/usando-o-observer-no-rails" rel="alternate" type="text/html" />
    <title>Usando o Observer no Rails</title>
<content type="html">
            &lt;p&gt;Este artigo seria apenas uma dica de como saber o que foi alterado em um objeto, mas para ficar mais fácil e principalmente para quem está dando os primeiros passos em rails resolvi fazer uma pequena introdução sobre o assunto.&lt;/p&gt;
&lt;p&gt;O &lt;a href="http://apidock.com/rails/ActiveRecord/Observer"&gt;Observer&lt;/a&gt; é um objeto que se responsabiliza por "escutar" os eventos que ocorrem com outro objeto. Ou seja, qualquer alteração feito no objeto observado será analizado e poderá executar uma ação. Isto é muito útil para gravar logs, enviar emails e outros.&lt;/p&gt;
&lt;p&gt;Vamos criar um projetinho para entender:&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;rails observers&lt;tt&gt;
&lt;/tt&gt;cd observers&lt;tt&gt;
&lt;/tt&gt;script/generate scaffold User name:string phone:string age:integer&lt;tt&gt;
&lt;/tt&gt;rake db:migrate&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Acima criamos um projeto e geramos uma entidade User e seus atributos, e migramos o banco. Vamos criar agora a entidade de log e o observer:&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;&lt;tt&gt;
&lt;/tt&gt;script/generate model Log table:string action:string field:string \ &lt;tt&gt;
&lt;/tt&gt;old_value:string new_value:string comments:text&lt;tt&gt;
&lt;/tt&gt;      exists  app/models/&lt;tt&gt;
&lt;/tt&gt;      ...&lt;tt&gt;
&lt;/tt&gt;script/generate observer user&lt;tt&gt;
&lt;/tt&gt;      exists  app/models/&lt;tt&gt;
&lt;/tt&gt;      exists  test/unit/&lt;tt&gt;
&lt;/tt&gt;      create  app/models/user_observer.rb&lt;tt&gt;
&lt;/tt&gt;      create  test/unit/user_observer_test.rb&lt;tt&gt;
&lt;/tt&gt;rake db:migrate&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Feito isto precisamos "ativar" o observer, e para isto basta adicionar no config/enviroment.rb&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# config/enviroment.rb&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  ...&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# Activate observers that should always be running&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# config.active_record.observers = :cacher, :garbage_collector&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  config.active_record.observers = &lt;span class="sy"&gt;:user_observer&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Agora podemos definir em qual momento ele vai gerar o log, antes ou depois de persistir o objeto:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;before_create, before_destroy, before_update, before_save, before_update&lt;/li&gt;
	&lt;li&gt;after_create, after_destroy, after_update, after_save, after_update&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Como tudo no rails os nomes já definem o que cada um vai fazer. Vamos gerar um log quando criar ou excluir um usuário. Para isto, vamos abrir o arquivo user_observer.rb&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;# app/models/user_observer.rb&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;UserObserver&lt;/span&gt; &amp;lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Observer&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;after_create&lt;/span&gt;(user)&lt;tt&gt;
&lt;/tt&gt;    &lt;span class="co"&gt;Log&lt;/span&gt;.create(&lt;span class="sy"&gt;:table&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:action&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;create&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:comments&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;New user added!&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;after_destroy&lt;/span&gt;(user)&lt;tt&gt;
&lt;/tt&gt;    &lt;span class="co"&gt;Log&lt;/span&gt;.create(&lt;span class="sy"&gt;:table&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:action&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;destroy&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:comments&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;User removed!&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Vamos acessar http://localhost:3000/users e criar um user e veja o log gerado:&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;INSERT INTO &amp;quot;users&amp;quot; (&amp;quot;name&amp;quot;, &amp;quot;updated_at&amp;quot;, &amp;quot;phone&amp;quot;, &amp;quot;age&amp;quot;, &amp;quot;created_at&amp;quot;)&lt;tt&gt;
&lt;/tt&gt;VALUES('First User', '2008-08-22 12:07:34', '111-1111', 20, '2008-08-22 12:07:34')&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;INSERT INTO &amp;quot;logs&amp;quot; (&amp;quot;new_value&amp;quot;, &amp;quot;updated_at&amp;quot;, &amp;quot;comments&amp;quot;, &amp;quot;old_value&amp;quot;, &amp;quot;action&amp;quot;, &amp;quot;field&amp;quot;,&lt;tt&gt;
&lt;/tt&gt;&amp;quot;table&amp;quot;, &amp;quot;created_at&amp;quot;) VALUES(NULL, '2008-08-22 12:07:34', 'New user added!', NULL, &lt;tt&gt;
&lt;/tt&gt;'create', NULL, 'user', '2008-08-22 12:07:34')&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Simples? Muito. Agora vamos pedir para ele observar o que foi alterado em um objeto:&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;&lt;span class="c"&gt;# app/models/user_observer.rb&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  ...&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;before_update&lt;/span&gt;(user)&lt;tt&gt;
&lt;/tt&gt;    user.changes.each &lt;span class="r"&gt;do&lt;/span&gt; |key, values|&lt;tt&gt;
&lt;/tt&gt;      &lt;span class="co"&gt;Log&lt;/span&gt;.create(&lt;span class="sy"&gt;:table&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:action&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;update&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="sy"&gt;:field&lt;/span&gt; =&amp;gt; key, &lt;span class="sy"&gt;:old_value&lt;/span&gt; =&amp;gt; values.first,&lt;tt&gt;
&lt;/tt&gt;        &lt;span class="sy"&gt;:new_value&lt;/span&gt; =&amp;gt; values.last,  &lt;span class="sy"&gt;:comments&lt;/span&gt; =&amp;gt; &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;User updated!&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)&lt;tt&gt;
&lt;/tt&gt;    &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  ...&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;O log gerado:&lt;/p&gt;
&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td title="click to toggle" class="line_numbers"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;5&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre&gt;INSERT INTO &amp;quot;logs&amp;quot; (&amp;quot;new_value&amp;quot;, &amp;quot;updated_at&amp;quot;, &amp;quot;comments&amp;quot;,&lt;tt&gt;
&lt;/tt&gt;&amp;quot;old_value&amp;quot;, &amp;quot;action&amp;quot;, &amp;quot;field&amp;quot;, &amp;quot;table&amp;quot;, &amp;quot;created_at&amp;quot;) VALUES('2008-08-22 12:29:00', &lt;tt&gt;
&lt;/tt&gt;'2008-08-22 12:29:00', 'User updated!', '2008-08-22 12:07:34', 'update', 'updated_at', 'user',&lt;tt&gt;
&lt;/tt&gt;'2008-08-22 12:29:00')&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;INSERT INTO &amp;quot;logs&amp;quot; (&amp;quot;new_value&amp;quot;, &amp;quot;updated_at&amp;quot;, &amp;quot;comments&amp;quot;, &amp;quot;old_value&amp;quot;, &amp;quot;action&amp;quot;, &amp;quot;field&amp;quot;,&lt;tt&gt;
&lt;/tt&gt;&amp;quot;table&amp;quot;, &amp;quot;created_at&amp;quot;) VALUES('222-2222', '2008-08-22 12:29:00', 'User updated!', '111-1111', &lt;tt&gt;
&lt;/tt&gt;'update', 'phone', 'user', '2008-08-22 12:29:00')&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;INSERT INTO &amp;quot;logs&amp;quot; (&amp;quot;new_value&amp;quot;, &amp;quot;updated_at&amp;quot;, &amp;quot;comments&amp;quot;, &amp;quot;old_value&amp;quot;, &amp;quot;action&amp;quot;, &amp;quot;field&amp;quot;, &lt;tt&gt;
&lt;/tt&gt;&amp;quot;table&amp;quot;, &amp;quot;created_at&amp;quot;) VALUES(26, '2008-08-22 12:29:00', 'User updated!', 20, 'update',&lt;tt&gt;
&lt;/tt&gt;'age', 'user', '2008-08-22 12:29:00')&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;UPDATE &amp;quot;users&amp;quot; SET &amp;quot;phone&amp;quot; = '222-2222', &amp;quot;age&amp;quot; = 26, &amp;quot;updated_at&amp;quot; = '2008-08-22 12:29:00'&lt;tt&gt;
&lt;/tt&gt;WHERE &amp;quot;id&amp;quot; = 1&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Aqui temos apenas uma introdução do que podemos ter com o Observer. Bons estudos.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=xeW1XK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=xeW1XK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=14rQVK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=14rQVK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=QSct2k"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=QSct2k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=KhXkqk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=KhXkqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=nmabWk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=nmabWk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=pleudK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=pleudK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946328" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/8/22/usando-o-observer-no-rails</feedburner:origLink></entry>
  <entry xml:base="http://railsbox.org/">
    <author>
      <name>Ozéias Sant'ana</name>
    </author>
    <id>tag:railsbox.org,2008-08-14:259</id>
    <published>2008-08-14T17:04:00Z</published>
    <updated>2008-08-14T19:16:34Z</updated>
    <category term="agile" />
    <category term="agile" />
    <link href="http://feeds.feedburner.com/~r/osantana/~3/387946329/esta-tudo-ok-para-voce" rel="alternate" type="text/html" />
    <title>Tradução: "Está tudo OK para você?"</title>
<content type="html">
            &lt;p&gt;Achei esse artigo interessante, o título original é &lt;a href="http://agilesoftwaredevelopment.com/blog/pbielicki/is-everything-ok-for-you"&gt;"Is everything OK for you?" - the question you should never ask your developers&lt;/a&gt;. É minha primeira, de muitas outras, traduções que pretendo trazer para vocês:&lt;/p&gt;

&lt;h3&gt;"Está tudo OK para você?" - A pergunta que você nunca deve fazer ao seus desenvolvedores&lt;/h3&gt;
&lt;img src="http://railsbox.org/assets/2008/8/14/376588066_ae1f1f8363.jpg" alt="Está tudo OK para você?" /&gt;
&lt;p&gt;Eu falei com um amigo meu recentemente e ele queixou-se sobre o seu líder (na verdade ele estava me explicando por que razão o seu líder era ruim). Não é sobre sua personalidade ou atitude, mas meu amigo queixa-se das perguntas que seu líder fazia, por exemplo:&lt;/p&gt;

&lt;p&gt;&lt;b&gt;- "Está tudo OK para você?"&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Muito bem... Como você pode responder a esta pergunta? Será que ele está perguntando sobre minha vida privada? sobre meu ambiente de trabalho? Sobre minhas tarefas? O que ele espera como resposta? Se quase tudo está OK para mim, mas eu tenho algumas idéias sobre como melhorar a performance da equipe, devo responder "Sim", "Sim, mais..." ou "Não"? Na minha humilde opinião, está é uma pergunta errada - isto demonstra falta de respeito, porque meu líder não se importante realmente com a resposta, é igual a "Como vai você?".&lt;/p&gt;

&lt;p&gt;Se você é líder de Equipe ou Projeto ou está a frente de uma equipe de desenvolvimento você deve ler este artigo e conhecer o ponto de vista dos seus engenheiros.&lt;/p&gt;

&lt;h3&gt;Por que essas questões não são boas ?&lt;/h3&gt;

&lt;p&gt;Vamos supor que eu trabalho em uma equipe e vejo que estamos produzindo um código que não está sendo bem testado, e a nossa equipe não tem qualquer ferramenta de &lt;a href="http://www.improveit.com.br/xp/praticas/integracao"&gt;integração contínua.&lt;/a&gt; Eu gostaria de compartilhar minhas idéias sobre como lidar com estes problemas, mais meu líder é difícil de compreender e está sempre ocupado.&lt;/p&gt;

&lt;p&gt;Embora ele sempre me faça perguntas como "Você está OK com a equipe?", "Está tudo OK para você?", eu devo falar sobre Integração contínua e dos problemas de testes que temos aqui? Será que é um bom momento para falar sobre minhas idéias? Estas questões não me incentivam em expor os verdadeiros problemas que a nossa equipe possa ter.&lt;/p&gt;

&lt;h3&gt;Quais perguntas os engenheiros aguardam?&lt;/h3&gt;

&lt;p&gt;Os engenheiros são pessoas concretas e eles esperam perguntas concretas. Claro, que às vezes é dolorido, mas o que estamos fazendo é freqüentemente tão complexo que fazer perguntas gerais refere-se a nada - você realmente quer saber sobre o nada? (Será que não é um exemplo de gerenciamento?). No exemplo do meu amigo, as questões do seu líder são genéricas demais.&lt;/p&gt;

&lt;p&gt;Seria muito mais fácil se ele pergunta-se:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Você vê qualquer problema no projeto que estamos desenvolvendo?&lt;/li&gt;
&lt;li&gt;Você pensa que os nossos processos de desenvolvimento estão corretos? Você tem qualquer idéia sobre como podemos melhorá-los?&lt;/li&gt;
&lt;li&gt;Você precisa de alguma ajuda no que está fazendo?&lt;/li&gt;
&lt;li&gt;Você tem alguma idéia como ...?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use sua criatividade com as pessoas&lt;/p&gt;

&lt;p&gt;Se você tiver gerenciando uma equipe de desenvolvimento de software você deve aprender quais questões deve fazer. Você deve fazer perguntas que não se pode responder com um simples "sim" ou "não". Faça perguntas que permitam aos seus engenheiros se expressarem, exporem seus sentimentos, idéias, medos. Seus engenheiros são criativos (Eu tenho certeza disso) - deixe eles falar com você e compartilhar suas idéias, deixe-os pensar e criar!&lt;/p&gt;

&lt;h3&gt;Faça perguntas certas - você receberá as respostas certas&lt;/h3&gt;

&lt;p&gt;Se você estiver fazendo perguntas erradas como "Está tudo OK para você?" não espere uma resposta certa (o que significa). O que você espera do seu engenheiro quando faz uma destas pergunta? Você espera que ele lhe fale sobre sua semana? Peça a ele sobre o final de semana. Você está esperando que ele fale sobre seus filhos? Pergunte sobre seus filhos.&lt;/p&gt;

&lt;p&gt;Fazer perguntas corretas é a chave para uma boa e aberta comunicação - e é o fator mais importante para ter uma equipe eficiente de desenvolvimento (ver também as &lt;a href="http://www.improveit.com.br/xp"&gt;Práticas de XP&lt;/a&gt;). Fazer perguntas corretas, você vai obter respostas coerentes ou seja, a resposta correta para sua questão - sem equívocos. Se você quiser fazer perguntas gerais, só para ver se não está dormindo (mante-los acordados?), basta dizer "Olá!". Se você quiser fazer uma pergunta e não espera qualquer resposta (ping?) - Então não faça!, você não vai ganhar respeito fazendo isto.&lt;/p&gt;

&lt;p&gt;Se você estiver a sorte de trabalhar em um ambiente Ágil, esse problema pode ser resolvido de alguma forma durante o &lt;a href="http://agilesoftwaredevelopment.com/blog/artem/7-tips-daily-scrum"&gt;Daily Scrum Meeting&lt;/a&gt;, onde você pode compartilhar suas idéias e problemas, ou através das retrospectivas, quando a equipe é encorajada a analisar a sua maneira de trabalhar.&lt;/p&gt;

&lt;h3&gt;Conselho&lt;/h3&gt;

&lt;p&gt;Se você é um líder de equipe ou projeto, significa que você é esperto o bastante para encontrar perguntas certas que deixarão seus desenvolvedores falarem sobre os verdadeiros problemas e soluções reais. Faça suas perguntas freqüentemente e você verá quantas oportunidades irá encontrar ao seu redor.&lt;/p&gt;

&lt;p&gt;Tome cuidado, ao fazer perguntas genéricas. Pode ser pior do que não fazer nenhuma pergunta.&lt;/p&gt;

&lt;p&gt;Eu estou muito curioso sobre suas opiniões:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Você é um engenheiro (desenvolvedor) e estão lhe fazendo essas perguntas sem sentido? Qual é a sua resposta?&lt;/li&gt;
&lt;li&gt;Você que é líder de equipe, faz estas perguntas? O que espera nas respostas? Por que você está perguntando?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fique a vontade para compartilhar suas idéias aqui.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/osantana?a=OmacrK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=OmacrK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=1zYUuK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=1zYUuK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=Cj3iXk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=Cj3iXk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=tSKCjk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=tSKCjk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=j3S0Sk"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=j3S0Sk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/osantana?a=jAv4sK"&gt;&lt;img src="http://feeds.feedburner.com/~f/osantana?i=jAv4sK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/osantana/~4/387946329" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://railsbox.org/2008/8/14/esta-tudo-ok-para-voce</feedburner:origLink></entry>
</feed>
