<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <id>tag:blog.shadowmaru.org,2005:/posts</id>
  <link type="text/html" href="http://blog.shadowmaru.org" rel="alternate" />
  
  <title>shadowmaru.org</title>
  <updated>2009-11-10T14:33:00Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/shadowmaru" type="application/atom+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fshadowmaru" 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%2Fshadowmaru" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/shadowmaru" 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%2Fshadowmaru" 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%2Fshadowmaru" 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%2Fshadowmaru" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <id>tag:blog.shadowmaru.org,2005:Post/81</id>
    <published>2009-11-10T14:42:42Z</published>
    <updated>2009-11-10T14:55:12Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/SmTGALDfpaY/ltimos-eventos" rel="alternate" />
    <title>Últimos eventos</title>
    <content type="html">&lt;p&gt;Olá, sei que tenho negligenciado um pouco este blog, mas muita coisa está acontecendo ultimamente, profissionalmente e pessoalmente, o que não vem ao caso comentar.&lt;/p&gt;
&lt;p&gt;Estou trabalhando agora na &lt;a href="http://www.bioritmo.com.br"&gt;Bio Ritmo&lt;/a&gt;, mais precisamente cuidando dos sistemas da &lt;a href="http://www.smartfit.com.br"&gt;SmartFit&lt;/a&gt;, na companhia de outros talentosos desenvolvedores &lt;a href="http://sledge.boo-box.com/list/page/UmFpbHNfIyNfYm94XyMjX3RhZ2dpbmctdG9vbF8jI18xMjEwNjg=-52" class="bbli"&gt;Rails&lt;img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /&gt;&lt;/a&gt;&lt;script src="http://static.boo-box.com/javascripts/engine/boo-box-loader.js" type="text/javascript"&gt;&lt;/script&gt;. Foi muito bom meu período na &lt;a href="http://www.dburnsdesign.com"&gt;DBurns Design&lt;/a&gt;, e agradeço muito ao &lt;a href="http://www.marciotrindade.com"&gt;Marcio Trindade&lt;/a&gt; pela oportunidade.&lt;/p&gt;
&lt;p&gt;Lógico que estive no último &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit&lt;/a&gt;, mas ainda não tive tempo de escrever sobre tudo. O que eu já escrevi vocês podem conferir na &lt;a href="http://www.infoq.com/br"&gt;InfoQ Brasil&lt;/a&gt;, é só ver &lt;a href="http://www.infoq.com/br/bycategory.action?authorName=Ricardo-Yasuda"&gt;meu conteúdo publicado&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ainda sobre eventos, no dia 28/11/2009 acontece o primeiro &lt;a href="http://www.devinsampa.com.br"&gt;Dev In Sampa&lt;/a&gt;, e pretendo ir, se conseguir uma vaga :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/SmTGALDfpaY" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/11/10/ltimos-eventos</feedburner:origLink></entry>
  <entry><title type="text">Rails Summit Latin America 2009 [Flickr]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/s5wPxDjTk3M/" /><category term="railssummit" /><author><name>shadow11</name><uri>http://www.flickr.com/people/shadow11/</uri></author><updated>2009-10-30T06:56:31-07:00</updated><id>tag:flickr.com,2005:/photo/4058403754</id><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc/2.0/deed.en" /><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/people/shadow11/"&gt;shadow11&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/4058403754/" title="Rails Summit Latin America 2009"&gt;&lt;img src="http://farm4.static.flickr.com/3479/4058403754_105fe2bc4d_m.jpg" width="240" height="180" alt="Rails Summit Latin America 2009" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Segundo #horaextra no Villa Vintém&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/s5wPxDjTk3M" height="1" width="1"/&gt;</content><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="enclosure" href="http://farm4.static.flickr.com/3479/4058403754_99d1277c7f_o.jpg" length="0" type="image/jpeg" /><dc:date.Taken xmlns:dc="http://purl.org/dc/elements/1.1/">2009-10-14T21:55:36-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/shadow11/4058403754/</feedburner:origLink></entry><entry><title type="text">Rails Summit Latin America 2009 [Flickr]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/ysiXUAWzuyo/" /><category term="railssummit" /><author><name>shadow11</name><uri>http://www.flickr.com/people/shadow11/</uri></author><updated>2009-10-30T06:55:48-07:00</updated><id>tag:flickr.com,2005:/photo/4058402260</id><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc/2.0/deed.en" /><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/people/shadow11/"&gt;shadow11&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/4058402260/" title="Rails Summit Latin America 2009"&gt;&lt;img src="http://farm3.static.flickr.com/2432/4058402260_6e3bc9eb02_m.jpg" width="240" height="180" alt="Rails Summit Latin America 2009" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obie Fernandez&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/ysiXUAWzuyo" height="1" width="1"/&gt;</content><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="enclosure" href="http://farm3.static.flickr.com/2432/4058402260_cc33b772ab_o.jpg" length="0" type="image/jpeg" /><dc:date.Taken xmlns:dc="http://purl.org/dc/elements/1.1/">2009-10-14T17:53:12-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/shadow11/4058402260/</feedburner:origLink></entry><entry><title type="text">Rails Summit Latin America 2009 [Flickr]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/--mn9gddiGA/" /><category term="railssummit" /><author><name>shadow11</name><uri>http://www.flickr.com/people/shadow11/</uri></author><updated>2009-10-30T06:55:17-07:00</updated><id>tag:flickr.com,2005:/photo/4057662229</id><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc/2.0/deed.en" /><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/people/shadow11/"&gt;shadow11&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/4057662229/" title="Rails Summit Latin America 2009"&gt;&lt;img src="http://farm4.static.flickr.com/3526/4057662229_1d754fda11_m.jpg" width="240" height="180" alt="Rails Summit Latin America 2009" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vinicius Teles&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/--mn9gddiGA" height="1" width="1"/&gt;</content><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="enclosure" href="http://farm4.static.flickr.com/3526/4057662229_ff30c1a926_o.jpg" length="0" type="image/jpeg" /><dc:date.Taken xmlns:dc="http://purl.org/dc/elements/1.1/">2009-10-14T17:22:25-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/shadow11/4057662229/</feedburner:origLink></entry><entry><title type="text">Rails Summit Latin America 2009 [Flickr]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/zAT5jRpFI7E/" /><category term="railssummit" /><author><name>shadow11</name><uri>http://www.flickr.com/people/shadow11/</uri></author><updated>2009-10-30T06:54:47-07:00</updated><id>tag:flickr.com,2005:/photo/4057661293</id><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc/2.0/deed.en" /><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/people/shadow11/"&gt;shadow11&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/4057661293/" title="Rails Summit Latin America 2009"&gt;&lt;img src="http://farm3.static.flickr.com/2639/4057661293_84ee0d42a4_m.jpg" width="240" height="180" alt="Rails Summit Latin America 2009" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bruno Miranda e Jason Seifer (via video)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/zAT5jRpFI7E" height="1" width="1"/&gt;</content><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="enclosure" href="http://farm3.static.flickr.com/2639/4057661293_d622f0cc5c_o.jpg" length="0" type="image/jpeg" /><dc:date.Taken xmlns:dc="http://purl.org/dc/elements/1.1/">2009-10-14T15:09:07-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/shadow11/4057661293/</feedburner:origLink></entry><entry><title type="text">Rails Summit Latin America 2009 [Flickr]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/ITxB5H_H7Jo/" /><category term="railssummit" /><author><name>shadow11</name><uri>http://www.flickr.com/people/shadow11/</uri></author><updated>2009-10-30T06:54:28-07:00</updated><id>tag:flickr.com,2005:/photo/4058399596</id><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc/2.0/deed.en" /><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/people/shadow11/"&gt;shadow11&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/4058399596/" title="Rails Summit Latin America 2009"&gt;&lt;img src="http://farm4.static.flickr.com/3501/4058399596_713e3afb01_m.jpg" width="240" height="180" alt="Rails Summit Latin America 2009" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pratik Naik&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/ITxB5H_H7Jo" height="1" width="1"/&gt;</content><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="enclosure" href="http://farm4.static.flickr.com/3501/4058399596_874971e39c_o.jpg" length="0" type="image/jpeg" /><dc:date.Taken xmlns:dc="http://purl.org/dc/elements/1.1/">2009-10-14T14:01:20-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/shadow11/4058399596/</feedburner:origLink></entry><entry>
    <id>tag:blog.shadowmaru.org,2005:Post/80</id>
    <published>2009-09-25T16:11:07Z</published>
    <updated>2009-09-25T16:12:02Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/d1O6uYtJbZ0/6o-encontro-do-guru-sp-testes" rel="alternate" />
    <title>6o Encontro do Guru-SP - Testes</title>
    <content type="html">&lt;p&gt;&lt;img src="http://blog.shadowmaru.org/system/assets/40/thumb/logo_guru.jpg?1253894901" style="float:left; margin:0 10px 10px 0" /&gt;O &lt;a href="http://www.guru-sp.org"&gt;Guru-SP&lt;/a&gt; é o Grupo de Usuários Ruby de São Paulo, fundado no ano passado para discutir, promover eventos, e talvez futuramente elaborar um projeto, tudo relacionado a Ruby, e não necessariamente limitado a Rails.&lt;/p&gt;
&lt;p&gt;Neste sábado (26/09/2009) acontecerá o 6o encontro do grupo. Faremos uma mesa de debates sobre um assunto que ainda nem todos dominam: testes. Fui gentilmente convidado para participar da mesa de debates, juntamente com &lt;a href="http://cassiomarques.wordpress.com"&gt;Cássio Marques&lt;/a&gt;, &lt;a href="http://www.mouseoverstudio.com/blog/"&gt;Diego Carrion&lt;/a&gt;, &lt;a href="http://fabiokung.com/"&gt;Fabio Kung&lt;/a&gt;, &lt;a href="http://twitter.com/jorgediz"&gt;Jorge Diz&lt;/a&gt;, &lt;a href="http://www.aniche.com.br/"&gt;Mauricio Aniche&lt;/a&gt; e &lt;a href="http://twitter.com/scalone"&gt;Thiago Scalone&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O encontro acontecerá na &lt;a href="http://www.gonow.com.br"&gt;Gonow&lt;/a&gt; que mais uma vez cederá suas dependências para um evento de Ruby, como no &lt;a href="http://blog.shadowmaru.org/2009/8/22/rails-rumble-2009"&gt;Rails Rumble&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mais detalhes no &lt;a href="http://www.rubyinside.com.br/6o-encontro-do-guru-sp-fechados-os-detalhes-2217"&gt;RubyInside&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/d1O6uYtJbZ0" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/9/25/6o-encontro-do-guru-sp-testes</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/79</id>
    <published>2009-09-21T22:58:40Z</published>
    <updated>2009-09-21T22:58:40Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/RN84nyr3Y8A/rails-summit-2009" rel="alternate" />
    <title>Rails Summit 2009</title>
    <content type="html">&lt;p&gt;&lt;a href="http://www.railssummit.com.br?utm_campaign=Railssummit&amp;utm_source=banner_parceiros&amp;utm_medium=banner&amp;utm_content=vouParticipar_210x60"&gt;&lt;img src="http://railssummit.com.br/images/banners/vouParticipar_210x60.jpg" alt="Rails Summit 2009" style="float:left; margin:0 10px 10px 0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Seguindo o grande sucesso de 2008, que eu relatei no blog em 3 posts (&lt;a href="http://blog.shadowmaru.org/2008/10/16/rails-summit-latin-america-dia-1"&gt;Dia 1&lt;/a&gt;, &lt;a href="http://blog.shadowmaru.org/2008/10/17/rails-summit-latin-america-dia-2"&gt;Dia 2&lt;/a&gt; e a &lt;a href="http://blog.shadowmaru.org/2008/10/17/rails-summit-a-experiencia-pessoal"&gt;Experiência Pessoal&lt;/a&gt;) teremos mais uma vez o &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America&lt;/a&gt;, que será realizado nos dias 13 e 14 de outubro de 2009, no Auditório Elis Regina do Centro de Convenções do Anhembi.&lt;/p&gt;
&lt;p&gt;O Rails Summit Latin America, para quem não conhece, é um conferência internacional de Ruby e Rails que reúne toda a comunidade brasileira e mais alguns desenvolvedores dos demais países da América Latina. É uma grande oportunidade para aprender e conhecer outros desenvolvedores, e por que não, conseguir um emprego na área.&lt;/p&gt;
&lt;p&gt;Eu estarei presente, cobrindo o evento para a &lt;a href="http://www.infoq.com/br"&gt;InfoQ Brasil&lt;/a&gt;, onde colaboro com &lt;a href="http://www.infoq.com/br/bycategory.action?authorName=Ricardo-Yasuda"&gt;traduções de notícias, entrevistas e artigos&lt;/a&gt;. A &lt;a href="http://www.fratech.net"&gt;Fratech&lt;/a&gt; gentilmente cedeu cortesias através de sorteio aos seus editores e eu fui um dos vencedores. Agradeço a organização do Rails Summit e a Fratech por isso.&lt;/p&gt;
&lt;p&gt;Este ano teremos palestras de nomes consagrados da comunidade Ruby/Rails nacional e internacional. Vejam a lista de palestrantes:&lt;/p&gt;
&lt;h3&gt;Palestrantes nacionais&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Arthur Zapparoli (Arthurgeek)&lt;/li&gt;
	&lt;li&gt;Bruno Miranda&lt;/li&gt;
	&lt;li&gt;Carlos Brando&lt;/li&gt;
	&lt;li&gt;Carlos Villela&lt;/li&gt;
	&lt;li&gt;Fabio Kung&lt;/li&gt;
	&lt;li&gt;José Valim&lt;/li&gt;
	&lt;li&gt;Leonardo Borges&lt;/li&gt;
	&lt;li&gt;Marcos Tapajós&lt;/li&gt;
	&lt;li&gt;Nando Vieira&lt;/li&gt;
	&lt;li&gt;Vinícius Telles&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Palestrantes internacionais&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Bryan Lyles (&lt;a href="http://rubyhoedown2008.confreaks.com/05-bryan-liles-lightning-talk-tatft-test-all-the-f-in-time.html"&gt;&lt;span class="caps"&gt;TATFT&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Chad Fowler&lt;/li&gt;
	&lt;li&gt;David Chelimsky&lt;/li&gt;
	&lt;li&gt;Glenn Vanderburg&lt;/li&gt;
	&lt;li&gt;Gregg Pollack&lt;/li&gt;
	&lt;li&gt;Ilya Grigorik&lt;/li&gt;
	&lt;li&gt;Jason Seifer&lt;/li&gt;
	&lt;li&gt;Matt Aimonetti&lt;/li&gt;
	&lt;li&gt;Obie Fernandez&lt;/li&gt;
	&lt;li&gt;Pratik Naik&lt;/li&gt;
	&lt;li&gt;Richard Kilmer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se você for, deixe um comentário, nos encontramos por lá.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/RN84nyr3Y8A" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/9/21/rails-summit-2009</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/78</id>
    <published>2009-09-16T02:56:20Z</published>
    <updated>2009-09-17T01:46:14Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/DonmQMhJ_ns/formate-melhor-seu-console-do-rails-ou-irb-com-hirb" rel="alternate" />
    <title>Formate melhor seu console do Rails ou irb com Hirb</title>
    <content type="html">&lt;p&gt;Geralmente quando quero testar alguma coisa no ActiveRecord do Rails eu abro um console, usando o &lt;code&gt;script/console&lt;/code&gt;. O problema é que a formatação dele (e consequentemente do irb, que é a engine por trás do console) é muito ruim, mostrando os resultados em forma de Hash.&lt;/p&gt;
&lt;p&gt;Entra &lt;a href="http://tagaholic.me/hirb/"&gt;Hirb&lt;/a&gt;. Ele é, segundo o autor, Gabriel Horner, &amp;#8216;um miniframework de visualização para console/irb&amp;#8217;. As melhorias incluem formatação em tabelas de Arrays e Hashes, paginação, visualização em árvore e menu.&lt;/p&gt;
&lt;p&gt;Para instalar,&lt;/p&gt;
&lt;pre&gt;sudo gem install cldwalker-hirb --source http://gems.github.com&lt;/pre&gt;
&lt;p&gt;e para usar, entre no irb/console, faça o require e ative&lt;/p&gt;
&lt;script src='http://gist.github.com/187833.js'&gt;&lt;/script&gt;
&lt;pre class="degrade"&gt;
$ script/console
Loading development environment (Rails 2.3.4)
&amp;gt;&amp;gt; require 'hirb'
=&amp;gt; []
&amp;gt;&amp;gt; Hirb.enable
=&amp;gt; nil
&lt;/pre&gt;
&lt;p&gt;Se quiser que o Hirb sempre esteja habilitado, crie ou edite o arquivo ~/.irbrc&lt;/p&gt;
&lt;script src='http://gist.github.com/187834.js'&gt;&lt;/script&gt;
&lt;pre class="degrade"&gt;
if ENV['RAILS_ENV']
  require 'rubygems'
  require 'hirb'
  Hirb.enable
end
&lt;/pre&gt;
&lt;p&gt;Vamos ver um exemplo com ActiveRecord:&lt;/p&gt;
&lt;script src='http://gist.github.com/187835.js'&gt;&lt;/script&gt;
&lt;pre class="degrade"&gt;
&amp;gt;&amp;gt; Post.all :limit =&amp;gt; 5
+----+---------------+---------------+---------------+---------------+---------+---------------+---------------+-----------+---------------+
| id | name          | body          | published_at  | permalink     | user_id | created_at    | updated_at    | published | comments_c... |
+----+---------------+---------------+---------------+---------------+---------+---------------+---------------+-----------+---------------+
| 74 | Manipuland... | Uma das d?... | 2009-06-09... | manipuland... | 1       | 2009-06-09... | 2009-08-11... | true      | 3             |
| 73 | Limpando o... | !/system/a... | 2009-04-22... | limpando-o... | 1       | 2009-04-22... | 2009-08-11... | true      | 0             |
| 72 | Why's (poi... | &amp;lt;img src="... | 2009-04-09... | why-s-poig... | 1       | 2009-04-09... | 2009-08-11... | true      | 0             |
| 70 | Evento: Ru... | No dia 4 d... | 2009-03-10... | evento-rub... | 1       | 2009-03-10... | 2009-08-10... | true      | 1             |
| 68 | Dica rápi... | O &amp;lt;a href=... | 2009-03-06... | dica-rapid... | 1       | 2009-03-06... | 2009-03-06... | true      | 1             | 
+----+---------------+---------------+---------------+---------------+---------+---------------+---------------+-----------+---------------+
5 rows in set
&lt;/pre&gt;
&lt;p&gt;Repare que na linha que tem um acento ele recua um caractere, deve ser um problema ainda a ser resolvido com caracteres especiais.&lt;/p&gt;
&lt;p&gt;Uma outra coisa legal é a visualização em árvore. Digamos que você tenha um model Page com &lt;a href="http://github.com/rails/acts_as_tree"&gt;acts_as_tree&lt;/a&gt;, ou seja, uma instância de Page tem um parent_id, e pode ter filhas.&lt;/p&gt;
&lt;script src='http://gist.github.com/187837.js'&gt;&lt;/script&gt;
&lt;pre class="degrade"&gt;
&amp;gt;&amp;gt; extend Hirb::Console
=&amp;gt; main

&amp;gt;&amp;gt; view Page.find_by_name('About Us'), :class =&amp;gt; :parent_child_tree, :type =&amp;gt; :directory
About Us
|-- Contact
|-- Our History
|-- Mission
|-- Privacy Policy
`-- Terms of Use
=&amp;gt; true
&lt;/pre&gt;
&lt;p&gt;Prático, não? Isso é só uma parte do que o Hirb pode fazer, recomendo olhar o &lt;a href="http://github.com/cldwalker/hirb"&gt;projeto no github&lt;/a&gt; e a &lt;a href="http://tagaholic.me/hirb/doc/index.html"&gt;documentação&lt;/a&gt;, tem muita coisa interessante.&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/DonmQMhJ_ns" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/9/16/formate-melhor-seu-console-do-rails-ou-irb-com-hirb</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/77</id>
    <published>2009-08-24T00:19:53Z</published>
    <updated>2009-08-24T00:19:53Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/rrvTsQB726E/rails-rumble-2009-game-over" rel="alternate" />
    <title>Rails Rumble 2009 - Game Over</title>
    <content type="html">&lt;p&gt;São 21:00 do dia 23/08, e acabou de acabar a fase de desenvolvimento do &lt;a href="http://r09.railsrumble.com"&gt;Rails Rumble 2009&lt;/a&gt;. Foram 48 horas de muito código, comida, café, refri, cerveja, energéticos, videogame, sono e as 3 apps que a &lt;a href="http://www.gonow.com.br/rumble"&gt;Gonow&lt;/a&gt; patrocinou foram:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://flashmobstream.r09.railsrumble.com"&gt;FlashMobStream&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3513/3847070287_1c9ca32c96.jpg" title="FlashMobStream" alt="FlashMobStream" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://hublator.r09.railsrumble.com/"&gt;Hublator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2524/3847861096_a8d98fac1d.jpg" title="Hublator" alt="Hublator" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://annoying-us.r09.railsrumble.com/"&gt;What annoys you?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2635/3847860950_8e5e7ba409.jpg" title="What annoys you?" alt="What annoys you?" /&gt;&lt;/p&gt;
&lt;p&gt;Agora começa a fase de julgamento, e você também pode participar, veja mais no site do Rails Rumble.&lt;/p&gt;
&lt;p&gt;Boa sorte às equipes brasileiras!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/rrvTsQB726E" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/8/24/rails-rumble-2009-game-over</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/76</id>
    <published>2009-08-22T07:28:56Z</published>
    <updated>2009-08-22T07:28:56Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/U1T1Xn76qrk/rails-rumble-2009" rel="alternate" />
    <title>Rails Rumble 2009</title>
    <content type="html">&lt;p&gt;São 4:00 da manhã do dia 22/08 e estou aqui na &lt;a href="http://www.gonow.com.br"&gt;Gonow&lt;/a&gt; acompanhando (não participando) do &lt;a href="http://r09.railsrumble.com/"&gt;Rails Rumble 2009&lt;/a&gt;. O Rails Rumble é uma competição mundial onde as equipes, de no máximo 4 pessoas, devem programar, fazer o design, configurar o servidor, e publicar uma aplicação Rails, tudo isso em apenas 48 horas.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3448/3844500114_ab12b1a898.jpg" title="Equipes no Rails Rumble" alt="Equipes no Rails Rumble" /&gt;&lt;/p&gt;
&lt;p&gt;O destaque deste ano é o patrocínio da Gonow para 3 equipes brasileiras, fornecendo a inscrição, o escritório para as equipes, além de &lt;a href="http://twitter.com/shadow11/status/3461936658"&gt;comida&lt;/a&gt;, &lt;a href="http://twitter.com/dcrec1/status/3455275647"&gt;bebida&lt;/a&gt; e até um hotel para descanso e banho. Até pra quem quis somente assistir (como eu) está valendo tudo isso. A iniciativa partiu do &lt;a href="http://www.mouseoverstudio.com/blog"&gt;Diego Carrion&lt;/a&gt;, o peruano mais brasileiro que eu conheço :)&lt;/p&gt;
&lt;p&gt;Você pode acompanhar o evento pela tag &lt;a href="http://search.twitter.com/search?q=%23railsrumble"&gt;#railsrumble&lt;/a&gt; ou &lt;a href="http://twitter.com/gonowtecnologia"&gt;seguir a Gonow no twitter&lt;/a&gt; ou ainda no &lt;a href="http://www.gonow.com.br/rumble"&gt;live feed do site deles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Vale lembrar ainda que a Gonow é uma das patrocinadoras do &lt;a href="http://www.railssummit.com.br"&gt;Rails Summit Latin America 2009&lt;/a&gt;, ou seja, eles estão bem envolvidos com a comunidade Rails brasileira. É isso aí!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/U1T1Xn76qrk" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/8/22/rails-rumble-2009</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/75</id>
    <published>2009-08-21T17:43:02Z</published>
    <updated>2009-08-21T17:43:02Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/pntHPDAT6Ac/tudo-novo" rel="alternate" />
    <title>Tudo novo</title>
    <content type="html">&lt;p&gt;Opa, como vocês podem ver, o blog mudou de visual. Mas não foi só isso. Como eu queria fazer muitas customizações nele e o Mephisto estava meio difícil de mexer, larguei mão do &amp;#8220;casa de ferreiro, espeto de pau&amp;#8221; e implementei todas as funcionalidades do blog, em Rails, claro. Agora além das funcionalidades normais, temos integração com &lt;a href="http://gist.github.com"&gt;gist&lt;/a&gt;, o &amp;#8216;Tweet this post&amp;#8217; e os &amp;#8216;Tweetbacks&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Mudei também de hospedagem. Estava na &lt;a href="http://www.railsplayground.net"&gt;Rails Playground&lt;/a&gt;, até que satisfeito, mas resolvi mudar para um &lt;acronym title="Virtual Private Server"&gt;&lt;span class="caps"&gt;VPS&lt;/span&gt;&lt;/acronym&gt;, e experimentar a &lt;a href="http://www.webbynode.com"&gt;Webbynode&lt;/a&gt;, hosting americano com gente brasileira envolvida. Está bem fácil de usar, e bem estável.&lt;/p&gt;
&lt;p&gt;Espero que gostem.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/pntHPDAT6Ac" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/8/21/tudo-novo</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/74</id>
    <published>2009-06-09T20:30:39Z</published>
    <updated>2009-08-21T18:31:24Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/2vPLKzNtZRE/manipulando-imagens-com-rails-bordas-arredondadas-no-paperclip" rel="alternate" />
    <title>Manipulando imagens com Rails: bordas arredondadas no Paperclip</title>
    <content type="html">&lt;p&gt;Uma das dúvidas mais recorrentes de usuários do &lt;a href="http://www.thoughtbot.com/projects/paperclip"&gt;Paperclip&lt;/a&gt; é como tornar as bordas dos thumbnails arredondadas. Felizmente o Paperclip usa o ImageMagick para lidar com imagens e dá para passar opções para a linha de comando do convert:&lt;/p&gt;
&lt;pre&gt;
has_attached_file :image, 
             :styles =&amp;gt; { :thumb =&amp;gt; ['400x300#', :png] },
             :convert_options =&amp;gt; { 
                :thumb =&amp;gt; "\\( +clone  -threshold -1 \
                     -draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \
                     \\( +clone -flip \\) -compose Multiply -composite \
                     \\( +clone -flop \\) -compose Multiply -composite \
                     \\) +matte -compose CopyOpacity -composite"
                }
&lt;/pre&gt;
&lt;p&gt;Não esqueça que a imagem resultante será um &lt;span class="caps"&gt;PNG&lt;/span&gt;, então você precisa passar o formato na definição do thumb. Essas opções também funcionam no ImageMagick diretamente na linha de comando.&lt;/p&gt;
&lt;p&gt;O resultado é esse:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.shadowmaru.org/system/assets/39/original/Boston_City_Flow.png" /&gt;&lt;/p&gt;
&lt;p&gt;Confira outras &lt;a href="http://www.imagemagick.org/Usage/thumbnails/"&gt;opções do ImageMagick&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/2vPLKzNtZRE" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/6/9/manipulando-imagens-com-rails-bordas-arredondadas-no-paperclip</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/73</id>
    <published>2009-04-22T20:49:28Z</published>
    <updated>2009-08-23T22:54:37Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/T5pf5agNzTs/limpando-o-cache-de-outros-models-no-rails" rel="alternate" />
    <title>Limpando o cache de outros models no Rails</title>
    <content type="html">&lt;p&gt;&lt;img src="/system/assets/38/original/2236762500_5d8ba8e4d7.jpg.jpeg" title="Photo:Ange Soleil (a.k.a Tweng)" alt="Photo:Ange Soleil (a.k.a Tweng)" /&gt;&lt;/p&gt;
&lt;p&gt;Frequentemente fazemos Page Cache na &lt;a href="http://www.dburnsdesign.com"&gt;DBurns&lt;/a&gt;, para melhorar a performance das nossas aplicações. Um dos problemas que temos enfrentado nos últimos projetos é limpar o cache de outros models, quando modificamos alguma página no nosso &lt;span class="caps"&gt;CMS&lt;/span&gt;, principalmente quando temos um submenu dinâmico, com as filhas de uma página.&lt;/p&gt;
&lt;p&gt;Digamos que temos um model Page e um model NewsArticle. Quando alteramos alguma coisa no Page queremos limpar o cache, através de um sweeper, tanto de Page como de NewsArticle.&lt;/p&gt;
&lt;p&gt;Todas as soluções que encontramos, entre elas o tutorial de cache do &lt;a href="http://www.railsenvy.com"&gt;Rails Envy&lt;/a&gt;, diziam para mudar o diretório de cache e apagá-lo por inteiro. Veja no &lt;a href="http://www.railsenvy.com/2007/2/28/rails-caching-tutorial"&gt;tutorial&lt;/a&gt; mais detalhes de como fazer isso.&lt;/p&gt;
&lt;p&gt;Só que o problema é que tanto o Mongrel quanto o Apache não sabem ler o cache se não for o padrão (em /public). Então você precisaria fazer um &lt;a href="http://rubyforge.org/tracker/index.php?func=detail&amp;amp;aid=17713&amp;amp;group_id=1306&amp;amp;atid=5147"&gt;patch no Mongrel&lt;/a&gt; e uma mudança no httpd.conf do Apache:&lt;/p&gt;
&lt;pre&gt;
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^/$ /cache/index.html [QSA,L]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ /cache/$1.html [QSA,L]
&lt;/pre&gt;
&lt;p&gt;OK, fácil, mas nem sempre temos acesso às configurações do Apache em produção, e por .htaccess não funciona, já tentamos. Para não depender do servidor onde fazemos deploy, a solução foi usar o mesmo procedimento (apagar o diretório inteiro), só que usando o diretório padrão de cache.&lt;/p&gt;
&lt;script src='http://gist.github.com/173503.js'&gt;&lt;/script&gt;&lt;p&gt;Fiz isso, daí o &lt;a href="http://www.marciotrindade.com"&gt;Marcio Trindade&lt;/a&gt; deu a idéia de transformar em um método e colocar numa lib, adicionando o método ao ActionController::Caching::Sweeper. Daí poderíamos aproveitar para outros sweepers. Foi o que eu fiz, colocando o arquivo em config/initializers:&lt;/p&gt;
&lt;script src='http://gist.github.com/173506.js'&gt;&lt;/script&gt;&lt;p&gt;E o sweeper ficou:&lt;/p&gt;
&lt;script src='http://gist.github.com/173507.js'&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/T5pf5agNzTs" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/4/22/limpando-o-cache-de-outros-models-no-rails</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/72</id>
    <published>2009-04-09T14:14:27Z</published>
    <updated>2009-08-21T18:32:43Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/CtAZCT-3dOM/why-s-poignant-guide-to-ruby-em-português" rel="alternate" />
    <title>Why's (poignant) Guide to Ruby em Português</title>
    <content type="html">&lt;p&gt;&lt;img src="http://blog.shadowmaru.org/system/assets/36/original/2006.cover.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Finalmente, saiu! O &lt;a href="http://www.nomedojogo.com"&gt;Carlos Brando&lt;/a&gt; acabou de anunciar o lançamento da &lt;a href="http://www.nomedojogo.com/2009/04/09/o-comovente-guia-de-ruby-do-why/"&gt;versão 1.0 de &amp;#8220;O (comovente) guia de Ruby do Why&amp;#8221;&lt;/a&gt;, que é a tradução do &amp;#8220;Why&amp;#8217;s (poignant) guide to Ruby&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Ajudei na tradução nos estágios iniciais, fiz algumas revisões, mas o trabalho pesado, da revisão final, foi do &lt;a href="http://www.agaelebe.com.br"&gt;agaelebe&lt;/a&gt;, que também faz parte do &lt;a href="http://www.guru-sp.org"&gt;Guru-SP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O livro ensina a programar em Ruby, mas de uma forma muito descontraída e com várias historinhas. Fora que o Why the lucky stiff é um artista, então há várias tirinhas e desenhos, o que torna o aprendizado mais lúdico.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.shadowmaru.org/system/assets/37/original/the-foxes-2.png" width="600" /&gt;&lt;/p&gt;
&lt;p&gt;A versão em &lt;span class="caps"&gt;HTML&lt;/span&gt; do livro pode ser encontrada &lt;a href="http://why.nomedojogo.com"&gt;aqui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aproveitem!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/CtAZCT-3dOM" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/4/9/why-s-poignant-guide-to-ruby-em-português</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/70</id>
    <published>2009-03-10T23:16:10Z</published>
    <updated>2009-08-10T11:34:13Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/iGmbLY6NS7U/evento-ruby-e-rails-no-mundo-real" rel="alternate" />
    <title>Evento: Ruby e Rails no Mundo Real</title>
    <content type="html">&lt;p&gt;No dia 4 de abril de 2009 acontecerá mais um evento relacionado a Ruby e Rails em São Paulo. O evento, &amp;#8216;Ruby e Rails no Mundo Real&amp;#8217;, é organizado pelo &lt;a href="http://www.guru-sp.com" title="Grupo de Usuários Ruby de São Paulo"&gt;Guru-SP&lt;/a&gt; e com o apoio da Tempo Real Eventos, Sun e Caelum.&lt;/p&gt;
&lt;p&gt;Haverá palestras sobre aplicações Ruby e Rails no &amp;#8216;mundo real&amp;#8217;, ou seja, coisas que estão no ar em produção, experiências reais. Vai além das &amp;#8216;palestras tutoriais&amp;#8217;.&lt;/p&gt;
&lt;p&gt;Confira a programação e os palestrantes:&lt;/p&gt;
&lt;p&gt;08:30 as 09:00: Credenciamento&lt;/p&gt;
&lt;p&gt;09:00 as 09:15: Abertura do evento&lt;/p&gt;
&lt;p&gt;09:15 as 10:30: Criando um Instant Messenger usando Rails (Vinícius Baggio)&lt;/p&gt;
&lt;p&gt;10:30 as 10:45: Ruby, Rails e empreendedorismo (&lt;a href="http://www.agaelebe.com.br/"&gt;Hugo Lima Borges&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;10:45 as 11:00: Coffee break&lt;/p&gt;
&lt;p&gt;11:00 as 12:00: Ruby Desktop (&lt;a href="http://www.hypequino.com/"&gt;Marcelo Castellani&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;12:00 as 13:00: Almoço&lt;/p&gt;
&lt;p&gt;13:00 as 14:00: Outsorcing, ou como trabalhar para empresas gringas (&lt;a href="http://caffo.chaosnet.org/"&gt;Caffo&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;14:00 as 15:00: GlassFish on Rails: Escalabilidade e Confiabilidade (Maurício Leal &amp;#8211; Sun Microsystems)&lt;/p&gt;
&lt;p&gt;15:00 as 16:00: Só os imaturos não testam (&lt;a href="http://www.nomedojogo.com"&gt;Carlos Brando&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;16:00 as 16:15: Coffee break&lt;/p&gt;
&lt;p&gt;16:15 as 16:30: O que é e como funciona o RubyLearning (Willian Molinari)&lt;/p&gt;
&lt;p&gt;16:30 as 17:30: Ruby, muito mais do que reflexivo! (&lt;a href="http://www.fabiokung.com/"&gt;Fábio Kung&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;17:30 as 18:00: Desconferência e Encerramento&lt;/p&gt;
&lt;p&gt;Será realizado no Century Flat Paulista, na Rua Teixeira da Silva, 647, perto do metrô Brigadeiro.&lt;/p&gt;
&lt;p&gt;A inscrição custa R$69 (até 31/03) e pode ser feita na &lt;a href="http://www.temporealeventos.com.br/?area=130&amp;tipo=1&amp;id=2476"&gt;página oficial do evento&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/iGmbLY6NS7U" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/3/10/evento-ruby-e-rails-no-mundo-real</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/68</id>
    <published>2009-03-06T22:38:52Z</published>
    <updated>2009-03-06T22:42:15Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/4HXxB3Soo5s/dica-rapida-thumbnail-de-pdf-no-paperclip" rel="alternate" />
    <title>Dica rápida: Thumbnail de PDF no Paperclip</title>
    <content type="html">&lt;p&gt;O &lt;a href="http://www.thoughtbot.com/projects/paperclip"&gt;Paperclip&lt;/a&gt; consegue fazer thumbnail da primeira página de um &lt;span class="caps"&gt;PDF&lt;/span&gt;. Para isso, escreva:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;has_attached_file :pdf, :styles { :thumb =&amp;gt; &amp;#8220;100&amp;#215;200#&amp;#8221; }&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;como você faz para qualquer imagem. Porém, além de ter o ImageMagick instalado, você vai precisar também instalar o GhostScript, que é a biblioteca para interpretar e salvar PDFs. Senão você vai ter erros como o seguinte:&lt;/p&gt;
&lt;filter:code lang="shell-unix-generic"&gt;
&lt;p&gt;An error was received while processing: #&amp;lt;Paperclip::NotIdentifiedByImageMagickError: &lt;br /&gt;
/var/folders/xz/xz9+JOHXHse6kcOo1B2kMk+++TI/-Tmp-/stream.29062.0 &lt;br /&gt;
is not recognized by the &amp;#8216;identify&amp;#8217; command.&amp;gt;&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;que é o mesmo erro que acontece quando você não tem o ImageMagick instalado, ou o Paperclip não consegue achar. &lt;a href="http://blog.shadowmaru.org/2008/11/14/dica-configuracao-do-paperclip"&gt;Escrevi sobre isso neste post&lt;/a&gt;. Para testar se você tem o GhostScript instalado, faça:&lt;/p&gt;
&lt;filter:code lang="shell-unix-generic"&gt;
&lt;p&gt;identify -format &amp;#8220;%wx%h&amp;#8221; algumarquivo.pdf&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Se der erro de arquivo não encontrado, você precisa instalar o GhostScript:&lt;/p&gt;
&lt;filter:code lang="shell-unix-generic"&gt;
&lt;ol&gt;
	&lt;li&gt;Leopard&lt;br /&gt;
sudo port install ghostscript&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
	&lt;li&gt;Ubuntu&lt;br /&gt;
sudo apt-get install ghostscript&lt;br /&gt;
&lt;/filter:code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Teste de novo e o comando supracitado deverá retornar a largura e altura do &lt;span class="caps"&gt;PDF&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;#fikdik&lt;/code&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/4HXxB3Soo5s" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/3/6/dica-rapida-thumbnail-de-pdf-no-paperclip</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/64</id>
    <published>2009-02-09T19:08:52Z</published>
    <updated>2009-02-09T19:09:51Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/ZTu-WqBgnyE/spree-production-ready-really" rel="alternate" />
    <title>Spree: Production ready, really?</title>
    <content type="html">&lt;p&gt;&lt;a href="http://blog.shadowmaru.org/2009/2/9/spree-pronto-para-producao-serio"&gt;Portuguese version here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Three months ago I wrote about how &lt;a href="http://blog.shadowmaru.org/2008/11/25/e-commerce-usando-spree"&gt;I helped the Spree project&lt;/a&gt; (in Portuguese) with some features. I was developing a store for a client, but we got nothing but headaches. We had 3 stores being developed under Spree, and&amp;#8230; none are in production at the moment.&lt;/p&gt;
&lt;p&gt;Two were taken down and are being released this week as a Miva Merchant customization, and one has been completely rewritten, still using Rails, ActiveMerchant, ActiveShipping, but without any Spree logic.&lt;/p&gt;
&lt;p&gt;Ironically, we had problems using Authorize.net and &lt;span class="caps"&gt;SSL&lt;/span&gt; in production mode with ActiveShipping. Ironically because it was exactly these two features I&amp;#8217;ve worked back in November. My boss decided to drop Spree for good and we started over as a Miva Merchant customization.&lt;/p&gt;
&lt;p&gt;What we learned from this? Spree is not really production ready, when you have a client constantly asking for changes, features that are fairly common in an e-commerce, but Spree didn&amp;#8217;t have. The customization in Spree is far from being easy. Although the extensions system is a really nice idea, the reality is that everything gets really confusing. You never know where is the file you need to change. It totally goes against being &lt;span class="caps"&gt;DRY&lt;/span&gt; and the organization of Rails.&lt;/p&gt;
&lt;p&gt;I see that Sean Schofield and several people are constantly developing Spree to make it better, so I wish them good luck. I&amp;#8217;ll try to help in everything that&amp;#8217;s possible, but for my company, we&amp;#8217;ll wait version 1.0 to try it again.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/ZTu-WqBgnyE" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/2/9/spree-production-ready-really</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/63</id>
    <published>2009-02-09T19:05:27Z</published>
    <updated>2009-02-09T19:09:08Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/t0z3Zi3b1eM/spree-pronto-para-producao-serio" rel="alternate" />
    <title>Spree: pronto para produção, sério?</title>
    <content type="html">&lt;p&gt;Três meses atrás eu escrevi sobre como eu &lt;a href="http://blog.shadowmaru.org/2008/11/25/e-commerce-usando-spree"&gt;ajudei o projeto Spree&lt;/a&gt; com algumas funcionalidades. Eu estava desenvolvendo uma loja para um cliente, mas não conseguimos nada além de dores de cabeça. Tínhamos 3 lojas sendo desenvolvidas usando Spree, e&amp;#8230;. nenhum está em produção no momento.&lt;/p&gt;
&lt;p&gt;Duas foram canceladas e estão sendo lançadas esta semana como uma customização do Miva Merchant, e a outra está sendo completamente reescrita, ainda usando Rails, ActiveMerchant e ActiveShipping, mas sem qualquer lógica do Spree.&lt;/p&gt;
&lt;p&gt;Ironicamente, tivemos problemas usando Authorize.net e &lt;span class="caps"&gt;SSL&lt;/span&gt; em produção com ActiveShipping. Ironicamente porque foram exatamente estas duas funcionalidades que eu adicionei em Novembro. Meu chefe decidiu abandonar o Spree e recomeçamos como uma customização do Miva.&lt;/p&gt;
&lt;p&gt;O que aprendemos com isso? O Spree ainda não está pronto para produção, quando você tem um cliente pedindo mudanças constantes, funcionalidades que são bem comuns para um e-commerce, mas o Spree não tinha. A customização do Spree está longe de ser fácil. Embora o sistema de extensões seja uma boa idéia, a realidade é que tudo fica muito confuso. Você nunca sabe onde está o arquivo que você precisa mudar. Vai totalmente contra ser &lt;span class="caps"&gt;DRY&lt;/span&gt; e a organização do Rails.&lt;/p&gt;
&lt;p&gt;Eu estou vendo que o Sean Schofield e várias outras pessoas estão constantemente desenvolvendo o Spree para fazê-lo melhor, então lhes desejo boa sorte. Tentarei ajudar no que for possível, mas para minha empresa, esperaremos a versão 1.0 para tentar novamente.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/t0z3Zi3b1eM" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2009/2/9/spree-pronto-para-producao-serio</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/59</id>
    <published>2008-12-29T21:19:34Z</published>
    <updated>2008-12-29T21:25:18Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/2L84K-qlDL4/traducao-trazendo-provides-display-do-merb-para-o-rails-3" rel="alternate" />
    <title>Tradução: Trazendo provides/display do Merb para o Rails 3</title>
    <content type="html">&lt;p&gt;A essa altura todos já sabem sobre a &lt;a href="http://weblog.rubyonrails.com/2008/12/23/merb-gets-merged-into-rails-3"&gt;fusão de Rails e Merb&lt;/a&gt;, então não me dar ao trabalho de noticiar ou comentar.&lt;/p&gt;
&lt;p&gt;O interessante agora vai ser ver exatamente o que de bom do Merb que o Rails vai ter na versão 3. &lt;a href="http://www.loudthinking.com/posts/37-bringing-merbs-providesdisplay-into-rails-3"&gt;O &lt;span class="caps"&gt;DHH&lt;/span&gt; já postou uma das mudanças&lt;/a&gt; e eu traduzo abaixo:&lt;/p&gt;
&lt;h3&gt;Trazendo provides/display do Merb para o Rails 3&lt;/h3&gt;
&lt;p&gt;O fluxo de idéias do Merb para o Rails 3 já está caminhando. Deixe-me mostrar um dos primeiros exemplos que estive trabalhando no design. Merb tem uma feature relacionada à estrutura do respond_to do Rails que funciona para os casos genéricos onde você tem um objeto ou coleção que você gostaria de servir em diferentes formatos. Aqui está um exemplo:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;class Users &amp;lt; Application&lt;/p&gt;
provides :xml, :json
def index
@users = User.all
display @users
end
&lt;p&gt;end&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Este controller pode responder a requisições html, xml e json. Quando display for executado, ele primeiro checará se existe um template disponível para o tipo requisitado, o que é normalmente o caso com &lt;span class="caps"&gt;HTML&lt;/span&gt;, e caso contrário tentará converter o objeto. Então @users.to_xml como resultado de uma requisição &lt;span class="caps"&gt;XML&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;As aplicações em que eu trabalhei nunca tiveram realmente este caso, no entanto. Sempre tive que fazer mais do que apenas converter o objeto para o tipo ou renderizar um template. Ou eu precisava fazer um redirecionamento para um dos tipos em vez de renderizar ou eu precisava fazer outra coisa além de renderizar. Então eu nunca passei muito tempo com o caso default que já vem com os scaffolds:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;class PostsController &amp;lt; ApplicationController&lt;/p&gt;
def index
@posts = Post.find(:all)
respond_to do |format|
format.html
format.xml { render :xml =&amp;gt; @posts }
end
end
def show
@post = Post.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml =&amp;gt; @post }
end
end
&lt;p&gt;end&lt;/p&gt;
&lt;/filter:code&gt;
&lt;h4&gt;Corte duplicação quando possível, dê controle total quando não&lt;/h4&gt;
&lt;p&gt;Mas o caso da duplicação é definitivamente real para algumas classes de aplicações. E isso é muito feio. Os blocos respond_to se repetem para index, show e geralmente mesmo no edit. Isso é três vezes uma estrutura razoavelmente peso-pesada. Este é o caso em que provides/display vem a calhar e elimina a duplicação.&lt;/p&gt;
&lt;p&gt;Para o Rails 3, nós queremos o melhor dos dois mundos. A estrutura completa do respond_to quando você precisa fazer coisas que não estavam na estrutura genérica, mas ainda ter a abordagem genérica na manga para quando as circunstâncias estiverem disponíveis para seu uso.&lt;/p&gt;
&lt;h4&gt;Lidando com simetria e expansão progressiva do design da &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Há algumas desvantagens na dupla provides/display, porém, que gostaríamos de lidar ao mesmo tempo. A primeira é a falta de simetria nos nomes dos métodos. As palavras &amp;#8220;provides&amp;#8221; e &amp;#8220;display&amp;#8221; não refletem o seu relacionamento próximo e se você ainda levar em conta o fato que eles estão realmente relacionados à renderização, a coisa fica ainda mais feia.&lt;/p&gt;
&lt;p&gt;A simetria se relaciona com outro ponto no design da &lt;span class="caps"&gt;API&lt;/span&gt; que estive interessado ultimamente: expansão progressiva. Deveria haver um caminho suave do caso simples para o caso complexo. Deveria ser como um Ogro, ele deve ter camadas. Aqui está o resultado que chegamos:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;class PostsController &amp;lt; ApplicationController&lt;br /&gt;
  respond_to :html, :xml, :json&lt;/p&gt;
def index
@posts = Post.find(:all)
respond_with(@posts)
end
def show
@post = Post.find(params[:id])
respond_with(@post)
end
&lt;p&gt;end&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Esse é o exemplo padrão de provides/display, mas ele tem a simetria no respond_to como método de classe, respond_with como método de instância, e os blocos originais respond_to. Então ele também parece progressivo quando você abre o respond_with e o transforma em um respond_to completo se você repentinamente precisa de diferenças por formato.&lt;/p&gt;
&lt;p&gt;O design também estende o estilo de trabalhar somente em nível de instância sem os default de nível de classe:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;class DealsController &amp;lt; SubjectsController&lt;/p&gt;
def index
@deals = Deal.all
respond_with(@deals, :to =&amp;gt; [ :html, :xml, :json, :atom ])
end
def new
respond_with(Deal.new, :to =&amp;gt; [ :html, :xml ])
end
&lt;p&gt;end&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;É bastante frequente que a action index tenha responsabilidades de formato diferentes do new ou do show ou de qualquer outra coisa. Esse design aborda todos esses cenários.&lt;/p&gt;
&lt;p&gt;Yehuda também esteve interessado em melhorar a performance do respond_to/with ao eliminar os blocos necessários. Especialmente quando você está apenas usando respond_with que não precisa declarar bloco algum.&lt;/p&gt;
&lt;p&gt;Levando em conta tudo isso, acho que este é um grande exemplo to tipo de funcionalidade superior que pode sair de idéias misturadas dos dois lados. Estamos certamente animados em fazer o mesmo truque em vários outros elementos do framework. Tenho explorado como um roteador revisado que importa as melhores idéias de ambos poderia ser. Escreverei sobre isso quando tiver algo real para compartilhar.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/2L84K-qlDL4" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/12/29/traducao-trazendo-provides-display-do-merb-para-o-rails-3</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/57</id>
    <published>2008-12-19T14:26:28Z</published>
    <updated>2008-12-19T14:26:29Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/W0AlOytDTm8/plugins-de-rails-que-eu-normalmente-uso" rel="alternate" />
    <title>Plugins de Rails que eu normalmente uso</title>
    <content type="html">&lt;p&gt;Neste post vou listar alguns plugins (ou gems) que eu normalmente uso quando estou desenvolvendo em Ruby on Rails. A decisão de usá-los ou não, naturalmente, cabe a você:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;JRails &amp;#8211; substitui o prototype.js pelo jQuery e altera alguns helpers do Rails que utilizam JavaScript&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;Paperclip &amp;#8211; para upload de imagens (com transformações) e outros arquivos. A vantagem é ele atuar como se fosse um atributo do model, sem precisar de models adicionais&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;resource_controller &amp;#8211; para facilitar &lt;acronym title="Create, Read, Update, Delete"&gt;&lt;span class="caps"&gt;CRUD&lt;/span&gt;&lt;/acronym&gt; em áreas de administração&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;restful-authentication &amp;#8211; praticamente obrigatório nas minhas aplicações, para autenticação de usuários&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;Shoulda &amp;#8211; estou atualmente utilizando o Shoulda para meus testes. Ele é um conjunto de macros para o Test::Unit do Rails, e lembra (mas não é) &lt;acronym title="Behavior Driven Development"&gt;&lt;span class="caps"&gt;BDD&lt;/span&gt;&lt;acronym&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;tlsmail &amp;#8211; para enviar e-mail usando uma conta do Gmail&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;Ultrasphinx &amp;#8211; para buscas mais complexas, geralmente envolvendo vários models.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;Will Paginate &amp;#8211; para paginação&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;Zen Test (gem) &amp;#8211; para usar o autotest. Ele roda todos os seus testes e quando algum arquivo monitorado é salvo roda novamente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Colocaria os links, mas estou com preguiça, procure no Google :)&lt;/p&gt;
&lt;p&gt;E você? Quais plugins utiliza no Rails?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/W0AlOytDTm8" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/12/19/plugins-de-rails-que-eu-normalmente-uso</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/55</id>
    <published>2008-11-25T19:19:11Z</published>
    <updated>2009-08-11T22:36:58Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/qFM5tnzW0gc/e-commerce-usando-spree" rel="alternate" />
    <title>E-commerce usando Spree</title>
    <content type="html">&lt;p&gt;&lt;a href="http://spreehq.org/articles/2008/11/25/integrated-authorize-net-support/"&gt;&lt;img src="/system/assets/35/original/Picture_2.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Como o &lt;a href="http://www.marciotrindade.com/2008/11/18/spree"&gt;Marcio Trindade falou no seu blog&lt;/a&gt;, implementei, junto com a equipe da &lt;a href="http://www.dburnsdesign.com"&gt;DBurns Design&lt;/a&gt;, um e-commerce em Rails usando como base o &lt;a href="http://www.spreehq.org"&gt;Spree&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O Spree tem o básico para um e-commerce: produtos, carrinho de compras, checkout, pagamento por cartão de crédito (usando o ActiveMerchant) e taxonomias (categorização). O resto pode ser customizado por você mesmo usando extensões. No nosso caso, fizemos uma extensão para mudar todo o layout da loja, outra para as páginas de conteúdo usando o nosso &lt;span class="caps"&gt;CMS&lt;/span&gt; próprio, outra para imagens para imprensa, e adicionei uma &lt;a href="http://github.com/edmundo/spree-search/tree/master"&gt;extensão para busca&lt;/a&gt; feita pelo Edmundo Valle Neto. O site não está no ar ainda, mas deve estar em breve.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://spreehq.org/articles/2008/11/20/integrated-ssl-support/"&gt;&lt;img src="/system/assets/34/original/Picture_1.png" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Durante o desenvolvimento do projeto, notei que faltavam algumas features que o cliente exigia: suporte a &lt;span class="caps"&gt;SSL&lt;/span&gt; e pagamentos através do Authorize.Net (até então suportava apenas Linkpoint e PayPal). No melhor espírito open source, postei na lista, o mantenedor (Sean Schofield) me pediu para implementar e o fiz. O Sean aprovou os patches e os incorporou ao projeto, portanto agora o Spree suporta &lt;a href="http://spreehq.org/articles/2008/11/25/integrated-authorize-net-support/"&gt;pagamentos pelo Authorize.Net&lt;/a&gt; e &lt;a href="http://spreehq.org/articles/2008/11/20/integrated-ssl-support/"&gt;&lt;span class="caps"&gt;SSL&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/qFM5tnzW0gc" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/11/25/e-commerce-usando-spree</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/53</id>
    <published>2008-11-20T20:02:40Z</published>
    <updated>2009-08-11T20:18:03Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/3nx0ug6ZCjo/turbo-pascal-25-anos" rel="alternate" />
    <title>Turbo Pascal: 25 anos</title>
    <content type="html">&lt;p&gt;Hoje o &lt;a href="http://en.wikipedia.org/wiki/Turbo_Pascal"&gt;Turbo Pascal&lt;/a&gt; completa 25 anos. Foi lançado em 20 de novembro de 1983 (duh). Pelo que pesquisei, foi a primeira &lt;acronym title="Integrated Development Environment"&gt;&lt;span class="caps"&gt;IDE&lt;/span&gt;&lt;/acronym&gt; a ser lançada, pois além de editar os códigos, também compilava, debugava e gerava executáveis.&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/33/original/300px-Turbo_Pascal_60_screenshot.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Foi com o Turbo Pascal que eu comecei a programar, quando entrei na faculdade (hoje em dia isso é considerado muito tarde), em 1995 (olhem só, justamente quando a Borland deixou de desenvolvê-lo, por causa do Delphi). A disciplina de Introdução à Computação (&lt;span class="caps"&gt;MAC&lt;/span&gt;-110) era dada em Pascal, e no laboratório do &lt;a href="http://www.ime.usp.br"&gt;&lt;span class="caps"&gt;IME&lt;/span&gt;-&lt;span class="caps"&gt;USP&lt;/span&gt;&lt;/a&gt; (&lt;acronym title="Centro de Ensino de Computação"&gt;&lt;span class="caps"&gt;CEC&lt;/span&gt;&lt;/acronym&gt;) tínhamos o Turbo Pascal instalado para fazermos os EPs (exercício-programa).&lt;/p&gt;
&lt;p&gt;Achei o Pascal uma linguagem bem fácil para aprender a programar (tanto que Niklaus Wirth a criou justamente para ensinar programação estruturada), por sua semelhança com o inglês, como é hoje o Ruby.&lt;/p&gt;
&lt;p&gt;Depois do primeiro ano nunca mais programei em Pascal (nem em Delphi). Já passei por C, C++, Perl, Java, &lt;span class="caps"&gt;PHP&lt;/span&gt;, Ruby, até Cobol e Clipper, mas sempre vou lembrar do Turbo Pascal e sua interface no &lt;span class="caps"&gt;DOS&lt;/span&gt;, me matando para terminar os EPs até a hora da entrega :)&lt;/p&gt;
&lt;p&gt;Tem alguma história sobre o Turbo Pascal? Comente aqui.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/3nx0ug6ZCjo" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/11/20/turbo-pascal-25-anos</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/50</id>
    <published>2008-11-14T17:55:04Z</published>
    <updated>2009-08-11T20:16:56Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/jh265_26jO8/dica-configuracao-do-paperclip" rel="alternate" />
    <title>Dica: Configuração do Paperclip</title>
    <content type="html">&lt;p&gt;&lt;img src="/system/assets/32/original/116-classic-paperclip-money-clip-image-1.jpg" align="left" width="150" style="margin-right:10px;" hspace="10" /&gt;&lt;a href="http://www.thoughtbot.com/projects/paperclip"&gt;Paperclip&lt;/a&gt; é um plugin para Rails que permite o upload de arquivos para a aplicação, e ainda faz transformações em imagens usando o ImageMagick. Também possibilita o armazenamento do arquivo no próprio servidor, ou em serviços como o Amazon S3.&lt;/p&gt;
&lt;p&gt;Comecei a usá-lo em abril, algum tempo depois de ser lançado em março. Achei um plugin mais fácil de usar e mais simples que o attachment_fu, por exemplo. Agora vejo muita gente migrando do attachment_fu para o Paperclip, saindo posts em vários blogs da comunidade, como &lt;a href="http://www.nomedojogo.com/2008/11/12/por-que-paperclip/"&gt;Carlos Brando&lt;/a&gt;, Peter Cooper (via &lt;a href="http://www.railsinside.com/plugins/149-paperclip-file-attachment-image-upload-plugin-for-rails.html"&gt;Rails Inside&lt;/a&gt;) e &lt;a href="http://railscasts.com/episodes/134-paperclip"&gt;Ryan Bates&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Um problema comum que estou vendo em muita gente que está começando a usar o Paperclip (&lt;span class="caps"&gt;EDIT&lt;/span&gt;: e se estiver usando Passenger, como bem lembrou o dookie) é subir uma imagem que tenha diferentes versões (:medium e :thumb, por exemplo), mas só aparecer no diretório a versão original. Isso geralmente acontece porque você precisa configurar o caminho para o executável do ImageMagick, o &lt;code&gt;convert&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Então, se você estiver em um sistema *nix, digite:&lt;/p&gt;
&lt;filter:code lang="shell-unix-generic"&gt;
&lt;p&gt;which convert&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;e ele retornará o caminho, no meu caso &lt;code&gt;/usr/local/bin/convert&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Daí é só criar um initializer (em config/initializers), por exemplo, paperclip.rb e colocar o conteúdo:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;Paperclip.options[:command_path] = &amp;#8216;/usr/local/bin&amp;#8217;&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Se quiser ter configurações diferentes dependendo do ambiente, faça:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;if RAILS_ENV=development&lt;br /&gt;
     Paperclip.options[:command_path] = &amp;#8216;/usr/local/bin&amp;#8217;&lt;br /&gt;
else&lt;br /&gt;
     Paperclip.options[:command_path] = &amp;#8216;/opt/local/bin&amp;#8217;&lt;br /&gt;
end&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Agora reinicie o servidor e tente subir a imagem novamente.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;: Paperclip.options[:image_magick_path] foi deprecado em favor de Paperclip.options[:command_path]. Post corrigido.&lt;/p&gt;
&lt;pre&gt;#ficadica&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/jh265_26jO8" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/11/14/dica-configuracao-do-paperclip</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/49</id>
    <published>2008-11-12T13:23:40Z</published>
    <updated>2008-11-12T13:27:50Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/S755hROvzCM/quickpost-o-que-significa-git" rel="alternate" />
    <title>QuickPost: o que significa git?</title>
    <content type="html">&lt;p&gt;Hoje me perguntaram no trabalho o que significa &amp;#8216;git&amp;#8217;. Respondi: &amp;#8216;não sei&amp;#8217;. Mas como nunca me dou por satisfeito em não saber alguma coisa, procurei, óbvio. Achei no &lt;a href="http://git.or.cz/gitwiki/GitFaq#head-90fa13ebe170116f1586156e73b549cc2135b784"&gt;&lt;span class="caps"&gt;FAQ&lt;/span&gt; do git&lt;/a&gt; e traduzo abaixo:&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Por que o nome &amp;#8216;git&amp;#8217;?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Parafraseando Linus [Torvalds, criador do Linux e do git]: &amp;#8220;Sou um egoísta de &lt;strong&gt;*&lt;/strong&gt;, e nomeio todos os meus projetos baseados no meu próprio nome. Primeiro &amp;#8216;Linux&amp;#8217;, e agora &amp;#8216;git&amp;#8217;&amp;#8221;.&lt;/p&gt;
&lt;p&gt;(&amp;#8216;git&amp;#8217; é uma gíria inglesa para &amp;#8220;idiota, estúpido, ou pessoa que não vale a pena&amp;#8221;).&lt;/p&gt;
&lt;p&gt;Alternativamente, nas próprias palavras de Linus como inventor do git: &amp;#8220;git&amp;#8221; pode significar qualquer coisa, dependendo do seu humor:&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;Combinação aleatória de 3 letras que é pronunciável, e não usada por algum comando &lt;span class="caps"&gt;UNIX&lt;/span&gt; comum. O fato de ser &amp;#8220;get&amp;#8221; mal-pronunciado pode ou não ser relevante.&lt;/li&gt;
    &lt;li&gt;Estúpido. Lamentável e indesejado. Simples. Escolha do seu dicionário de gírias.&lt;/li&gt;
    &lt;li&gt;&amp;#8220;Global information tracker&amp;#8221; (Rastreador de informação global): você está de bom humor, e ele realmente funciona para você. Anjos cantam, e uma luz de repente invade a sala.&lt;/li&gt;
    &lt;li&gt;&amp;#8220;Goddamn idiotic truckload of sh*t&amp;#8221; (Maldito caminhão de m**a idiota): quando dá pau&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/S755hROvzCM" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/11/12/quickpost-o-que-significa-git</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/48</id>
    <published>2008-11-10T22:06:47Z</published>
    <updated>2009-08-11T20:15:38Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/mw-r3S-5NJ0/infoq-brasil" rel="alternate" />
    <title>InfoQ Brasil</title>
    <content type="html">&lt;div style="background-color:#fff; width:500px; padding:10px; margin-top:15px;"&gt;&lt;img src="/system/assets/30/original/InfoQ_Brasil.png" width="500" /&gt;&lt;/div&gt;
&lt;p&gt;Este deve ser o último post da série de eventos que fui entre setembro e novembro. Acho que compareci em tantos que neste último o Alexandre Gomes, da &lt;span class="caps"&gt;SEA&lt;/span&gt; Tecnologia e o Fabio Akita comentaram: &amp;#8220;Você também está em todas, hein?&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Bom, no dia 01/11 aconteceu em uma unidade da Anhembi-Morumbi da Vila Olímpia o lançamento do portal &lt;a href="http://www.infoq.com/br"&gt;InfoQ Brasil&lt;/a&gt; (InfoQ Launch Meeting). O portal &lt;a href="http://www.infoq.com"&gt;InfoQ internacional&lt;/a&gt; é bastante conhecido da comunidade de desenvolvedores, abordando temas (queues, daí o nome) como Java, .&lt;span class="caps"&gt;NET&lt;/span&gt;, &lt;span class="caps"&gt;SOA&lt;/span&gt;, Arquitetura, Ruby e Agile, sendo que os assuntos que mais me interessam são os 3 últimos. Pensando nisso, o portal conta com um recurso interessante: é possível personalizar a visualização, escolhendo apenas os assuntos que são do seu interesse.&lt;/p&gt;
&lt;p&gt;Voltando ao assunto, &lt;a href="http://www.infoq.com/br/news/2008/11/Infoq-br-sirva-se-a-vontade"&gt;o Brasil ganhou uma versão&lt;/a&gt; do mesmo portal, com artigos e notícias em Português, traduzido pela comunidade de editores, de modo voluntário, e organizado pela &lt;a href="http://www.fratech.net/"&gt;Fratech It&lt;/a&gt;, que tem feito um ótimo trabalho nesse sentido. Sou um dos editores, e por enquanto traduzi uma das notícias que fizeram parte do lançamento do portal, sobre o &lt;a href="http://www.infoq.com/br/news/2008/10/MagLevAtRailsConf"&gt;lançamento do MagLev na RailsConf deste ano&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/31/original/screenshot_infoq.png" /&gt;&lt;/p&gt;
&lt;p&gt;Outro destaque do conteúdo de lançamento é o famoso livro &lt;a href="http://www.infoq.com/br/minibooks/scrum-xp-from-the-trenches"&gt;&amp;#8220;Scrum e XP direto das trincheiras&amp;#8221;&lt;/a&gt;, que foi traduzido por vários voluntários, com a &lt;a href="http://blog.seatecnologia.com.br/articles/2008/11/06/construindo-um-brasil-melhor-lancamento-do-scrum-e-xp-direto-das-trincheiras"&gt;organização&lt;/a&gt; da &lt;a href="http://seatecnologia.com.br"&gt;&lt;span class="caps"&gt;SEA&lt;/span&gt; Tecnologia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O Launch Meeting teve palestras sobre os temas tratados na InfoQ e dois painéis, sobre plataformas distribuídas e métodos ágeis. O evento contou com a participação de Giovanni Bassi, Fábio Akita, Henry Conceição, Vinícius Senger, Alexandre Gomes, Felipe Rodrigues, Yara Senger, Victor Hugo, Rodrigo Yoshima, Hugo Corbucci, Wagner Santos e Manoel Pimentel, além dos internacionais Floyd Marinescu (fundador da InfoQ Internacional) e Max Lafranconi, do &lt;span class="caps"&gt;JCP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Parabéns à Fratech It pelo bom trabalho! E quem quiser ajudar, traduzindo ou produzindo artigos, é só entrar em contato.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/mw-r3S-5NJ0" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/11/10/infoq-brasil</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/47</id>
    <published>2008-11-10T13:36:12Z</published>
    <updated>2009-08-11T20:14:04Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/gjZdMgUtKxY/intercon-2008" rel="alternate" />
    <title>InterCon 2008</title>
    <content type="html">&lt;p&gt;&lt;img src="/system/assets/29/original/DSC00065-1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;E mais um evento&amp;#8230;. no dia seguinte ao &lt;a href="http://blog.shadowmaru.org/2008/10/23/falando-em-agile-dia-1"&gt;Falando em Agile&lt;/a&gt; lá estava eu no Teatro do Shopping Frei Caneca para o &lt;a href="http://imasters.uol.com.br/intercon/2008/cobertura/"&gt;iMasters InterCon 2008&lt;/a&gt;. O evento, que eu &lt;a href="http://imasters.uol.com.br/intercon/2005/"&gt;fui pela primeira vez em 2005&lt;/a&gt;, tem como tema a Internet, e é voltada principalmente para designers, desenvolvedores e empreendedores que trabalham com web.&lt;/p&gt;
&lt;p&gt;O tema deste ano era a inovação digital. Para isso, nada melhor que apostar num formato inovador de evento, idéia do consagrado &lt;a href="http://www.luli.com.br"&gt;Luli Radfahrer&lt;/a&gt;. A idéia era ter 4 sessões paralelas, sendo duas no mesmo auditório, o próprio Teatro Frei Caneca, e dois workshops (de design e programação) no saguão externo. Mas como fazer duas palestras paralelas? Solução simples: usar os rádios normalmente utlizados em traduções simultâneas. Em um canal, a palestra da direita, e em outro a palestra da esquerda.&lt;/p&gt;
&lt;p&gt;Óbvio que, como em toda inovação, o sistema estava sujeito a falhas, e não deu outra: na primeira palestra houve problemas no áudio e só uma palestra pôde ser apresentada. Mas tudo bem: depois do almoço foi resolvido e foi mesmo muito legal ver cabeças para um lado e para outro. Luli até se emocionou.&lt;/p&gt;
&lt;p&gt;Sem dúvida as palestras do FF (que segundo o Luli não é Fast Forward, nem Final Fantasy, nem FireFox&amp;#8230; ou tudo isso) foram melhores, pois tratavam da inovação em si. Palestras como a do Videolog, do &lt;a href="http://www.manoellemos.com"&gt;Manoel Lemos&lt;/a&gt;, do &lt;a href="http://www.crisdias.com"&gt;Cris Dias&lt;/a&gt;, do &lt;a href="http://www.marcogomes.com"&gt;Marco Gomes&lt;/a&gt; com certeza eram mais interessantes que palestras da Oracle ou sobre Gerência de Projetos em agências de publicidade (ainda mais indo contra princípios das metodologias ágeis).&lt;/p&gt;
&lt;p&gt;Resumindo, foi um evento muito legal, que valeu a pena também pelo networking e ver ao vivo figuras tão conhecidas na blogosfera.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/gjZdMgUtKxY" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/11/10/intercon-2008</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/46</id>
    <published>2008-11-03T13:41:12Z</published>
    <updated>2009-08-11T20:12:14Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/Elmd6HJRuQ8/falando-em-agile-dia-2" rel="alternate" />
    <title>Falando em Agile - Dia 2</title>
    <content type="html">&lt;p&gt;Atrasado em uma semana, mas vamos lá. Ainda tenho muito o que escrever.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.shadowmaru.org/assets/2008/11/3/DSC00061-1.jpg" /&gt;&lt;br /&gt;
&lt;small&gt;O evento foi no salão Ruby &amp;#8211; Coincidência?&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;O segundo dia do &lt;a href="http://www.falandoemagile.com.br"&gt;Falando em Agile&lt;/a&gt; (veja o primeiro dia) começou com o keynote do &lt;a href="http://amagno.blogspot.com"&gt;Alexandre Magno&lt;/a&gt;, que falou sobre Scrum em ambientes PMBok. Ele fez uma comparação entre práticas do Scrum que podem ser aplicadas usando o PMBok. E acredito que vale não somente para o PMBok, mas para a maioria dos ambientes que usam os métodos tradicionais de desenvolvimento de software.&lt;/p&gt;
&lt;p&gt;A próxima palestra foi do Daniel Bardusco, que apresentou como a Globo.com começou a usar Scrum e como foi a evolução da adoção. Interessante foi ver como a Globo.com é referência no uso de Scrum no Brasil, apesar do pouco tempo de adoção. Só neste evento foram 4 palestrantes que já passaram ou ainda estão na empresa.&lt;/p&gt;
&lt;p&gt;Logo em seguida &lt;a href="http://agileandart.blogspot.com/"&gt;Daniel Cukier&lt;/a&gt; e &lt;a href="http://www.ime.usp.br/~kon"&gt;Fabio Kon&lt;/a&gt;, do &lt;a href="http://www.ime.usp.br"&gt;&lt;span class="caps"&gt;IME&lt;/span&gt;-&lt;span class="caps"&gt;USP&lt;/span&gt;&lt;/a&gt; falaram sobre &amp;#8220;Padrões para Introdução de Novas Idéias na Indústria de Software&amp;#8221;, tema da dissertação de mestrado do Daniel no &lt;span class="caps"&gt;IME&lt;/span&gt;. Foi um resumo do livro &lt;a href="http://www.amazon.com/Fearless-Change-Patterns-Introducing-Ideas/dp/0201741571/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1225718594&amp;sr=8-1"&gt;&amp;#8220;Fearless Change&amp;#8221;&lt;/a&gt;, de Linda Rising e Mary Lynn Manns, que fala sobre técnicas para convencer uma empresa a adotar novas idéias para o desenvolvimento de software. Esse assunto é particularmente importante, visto que ainda é difícil convencer as empresas na adoção de métodos ágeis.&lt;/p&gt;
&lt;p&gt;Após o almoço Daniel Wildt falou sobre a experiência dele na adoção gradativa de métodos ágeis na Dell, que é uma empresa global. Ele apresentou os três projetos que trabalhou neste período, com ambientes bem distintos e as mudanças que foram implementadas, tais como &lt;span class="caps"&gt;TDD&lt;/span&gt;, Code Coverage, e Scrum of Scrums.&lt;/p&gt;
&lt;p&gt;Em seguida foi a vez de Antonio Carlos Silveira, do Yahoo! (e ex-Globo.com) falar sobre o papel do Product Owner no Scrum e a sua importância na priorização do Product Backlog. Foi interessante pois na maioria das palestras sobre Scrum fala-se sobre o time, a adoção, o Scrum Master mas pouco se fala sobre o PO, que é parte fundamental para o bom funcionamento do Scrum, afinal ele representa o cliente, cuja satisfação é o objetivo final de qualquer projeto.&lt;/p&gt;
&lt;p&gt;A penúltima palestra do dia foi do Robinson Caiado, da Borland, e eu já sabia que seria uma grande propaganda dos produtos da empresa, para implementar métodos ágeis. Muitas vezes as pessoas perguntam sobre qual a melhor ferramenta para métodos ágeis, e na minha opinião, nada melhor que o quadro na parede e a conversa. Ferramentas online são boas para times distribuídos e remotos, no entanto. A gota d&amp;#8217;água da palestra foi quando ele falou que os dados &amp;#8220;foram retirados diretamente do &amp;#8216;chão da fábrica de software&amp;#8217;&amp;#8221;. Sinceramente&amp;#8230;&lt;/p&gt;
&lt;p&gt;O evento encerrou com a palestra do &lt;a href="http://blog.fragmental.com.br/"&gt;Phillip Calçado (Shoes)&lt;/a&gt;, da ThoughtWorks Australia, que falou justamente sobre &amp;#8220;A maldição da fábrica de software ágil&amp;#8221;. Ele deu dois exemplos de projetos que abandonaram algumas práticas ágeis, sem pensar no impacto que causaria no ciclo.&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/28/original/DSC00062-1.jpg" /&gt;&lt;br /&gt;
&lt;small&gt;Como todo bom evento de agile, foi feita uma retrospectiva&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Enfim, foi um ótimo evento, com palestras muito interessantes (não todas, claro&amp;#8230;), e a Caelum está de parabéns pela organização. No fim do evento, Alexandre Magno anunciou que em 2009 teremos no Brasil o &lt;a href="http://www.scrumalliance.org/gathering"&gt;Scrum Gathering&lt;/a&gt;. É o Brasil entrando de vez na rota dos grandes eventos de TI. Primeiro com o &lt;a href="http://blog.shadowmaru.org/2008/10/16/rails-summit-latin-america-dia-1"&gt;Rails&lt;/a&gt;, e agora com agile.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/Elmd6HJRuQ8" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/11/3/falando-em-agile-dia-2</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/44</id>
    <published>2008-10-23T23:28:32Z</published>
    <updated>2009-08-11T20:09:58Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/5mirY2MWFcg/falando-em-agile-dia-1" rel="alternate" />
    <title>Falando em Agile - Dia 1</title>
    <content type="html">&lt;p&gt;&lt;img src="/system/assets/26/original/falando-agile-site_06.gif"  align="left" style="margin-right:10px;" vspace="5" /&gt; Consegui fazer a minha inscrição de última hora, então hoje fui ao &lt;a href="http://www.falandoemagile.com.br"&gt;Falando em Agile&lt;/a&gt;, evento promovido pela &lt;a href="http://www.caelum.com.br"&gt;Caelum&lt;/a&gt; cujo tema são os métodos ágeis.&lt;/p&gt;
&lt;p&gt;Foi legal ver o &lt;a href="http://amagno.blogspot.com"&gt;Alexandre Magno&lt;/a&gt;, professor do curso de Certified Scrum Master que fiz, e o Fabiano Milani, assistente deste curso, e eles me reconhecerem. Só não fizeram o cumprimento secreto :)&lt;/p&gt;
&lt;p&gt;O evento começou com o keynote de David Anderson, membro do time que criou a &lt;acronym title="Feature Driven Development"&gt;&lt;span class="caps"&gt;FDD&lt;/span&gt;&lt;/acronym&gt;. Ele focou seu keynote na qualidade de código e como o sistema kanban pode ajudar na sua receita para o sucesso:&lt;/p&gt;
&lt;p&gt;- Foco em qualidade&lt;br /&gt;
- Reduzir (ou limitar) o &lt;i&gt;work in progress&lt;/i&gt;&lt;br /&gt;
- Equilibrar demanda e taxa de transferência&lt;br /&gt;
- Priorização&lt;br /&gt;
- Reduzir a variabilidade&lt;/p&gt;
&lt;p&gt;Depois do almoço foi a palestra do &lt;a href="http://www.dtsato.com"&gt;Danilo Sato&lt;/a&gt; e do Francisco Trindade, da ThoughtWorks, que falaram sobre &amp;#8220;Agilidade de Tartaruga&amp;#8221;, ou seja, problemas que eles encontraram na vida real ao implementar métodos ágeis em clientes. O que ficou da palestra foi a seguinte frase:&lt;/p&gt;
&lt;p&gt;&lt;q&gt;Métodos ágeis para muitos são práticas, mas o importante são os princípios.&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;Em seguida tivemos a paletra do Adail Retamal, que falou sobre Agile Thinking (pensamento ágil). Apresentou ferramentas como &lt;i&gt;mind maps&lt;/i&gt; e &lt;span class="caps"&gt;UML&lt;/span&gt; em cores, e explicou a Teoria das Restrições.  Após o coffee-break o pessoal da &lt;span class="caps"&gt;SEA&lt;/span&gt; Tecnologia, de Brasília, apresentou um case de sucesso de métodos ágeis na Aeronáutica, lidando com uma cultura militar, mais rígida.&lt;/p&gt;
&lt;p&gt;José Papo falou sobre um assunto que ainda gera muitas dúvidas: como elaborar contratos que contemplam métodos ágeis? Apresentou os problemas dos métodos tradicionais de contratação (preço fixo) e também as alternativas (contratos de escopo variável, aquisição progressiva).&lt;/p&gt;
&lt;p&gt;A última palestra do dia, na minha opinião a melhor, talvez pelo meu interesse no assunto, foi do &lt;a href="http://gc.blog.br"&gt;Guilherme Chapiewski&lt;/a&gt;, da globo.com, que falou sobre &amp;#8220;Liderando Equipes Ágeis&amp;#8221;. As características de um líder de equipes ágeis, o que deve e o que não deve fazer para proteger e motivar sua equipe.&lt;/p&gt;
&lt;p&gt;É isso aí, amanhã tem mais.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/5mirY2MWFcg" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/10/23/falando-em-agile-dia-1</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/40</id>
    <published>2008-10-17T16:26:00Z</published>
    <updated>2008-10-17T16:30:33Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/Km6r7nzROoM/rails-summit-a-experiencia-pessoal" rel="alternate" />
    <title>Rails Summit - A experiência pessoal</title>
    <content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2948766891/" title="Rails Summit Latin America - Assinaturas by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3223/2948766891_e88f308734.jpg" width="500" height="375" alt="Rails Summit Latin America - Assinaturas" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bom, agora que escrevi sobre o que aconteceu nos dois dias de Rails Summit Latin America (&lt;a href="http://blog.shadowmaru.org/2008/10/16/rails-summit-latin-america-dia-1"&gt;dia 1&lt;/a&gt; e &lt;a href="http://blog.shadowmaru.org/2008/10/17/rails-summit-latin-america-dia-2"&gt;dia 2&lt;/a&gt;), vou falar sobre o que esta experiência significou para mim.&lt;/p&gt;
&lt;p&gt;Sempre participei de eventos de tecnologia, congressos e etc., mas introvertido que sou, sempre fiquei na minha e só assistia. A Rails Summit proporcionou um encontro com pessoas que eu já conhecia online, na lista rails-br, no twitter, e também presencialmente, como no &lt;a href="http://www.akitaonrails.com/2008/8/15/happy-hour-de-railers-de-sampa"&gt;happy-hour de railers em Agosto&lt;/a&gt; e o pessoal da Webco. Foi muito legal ser reconhecido pelo que faço online (&amp;#8220;ah, &lt;b&gt;você &lt;/b&gt; é o Shadow&amp;#8230;&amp;#8221;).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2948767061/" title="Rails Summit Latin America - Assinaturas by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3136/2948767061_9f22e0b04e.jpg" width="500" height="375" alt="Rails Summit Latin America - Assinaturas" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mais que isso, os palestrantes se mostraram muito abertos à conversa, e socializaram bastante durante o evento e após ele. Vai parecer propaganda de cartão de crédito, mas a possibilidade de conversar com Chad Fowler, Obie Fernandez, Dr. Nic, Hongli Lai e Ninh Bui (além dos palestrantes brasileiros) &lt;b&gt;não tem preço&lt;/b&gt;. Fora o pessoal que nem era palestrante mas estava lá. &lt;a href="http://gc.blog.br"&gt;Guilherme Chapiewski&lt;/a&gt; por exemplo. O ingresso para o evento ficou muito barato de repente.&lt;/p&gt;
&lt;div align="center"&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2949620622/" title="Rails Summit - After by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3187/2949620622_26ec9a8f76.jpg" width="375" height="500" alt="Rails Summit - After" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;O que quero dizer com isso é: não perca essas oportunidades. Às vezes não é nem pelo conteúdo das palestras, mas pelo networking e pela chance de aprender com as feras. Não reclame de preço. É por isso que os eventos não falam em custo. Falam em investimento. E realmente é um investimento, na sua carreira e em você como pessoa (aproveitando o gancho motivacional de algumas palestras do Summit).&lt;/p&gt;
&lt;p&gt;E é isso.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/Km6r7nzROoM" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/10/17/rails-summit-a-experiencia-pessoal</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/38</id>
    <published>2008-10-17T13:57:45Z</published>
    <updated>2008-10-17T15:00:33Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/EOjjQHFH4VY/rails-summit-latin-america-dia-2" rel="alternate" />
    <title>Rails Summit Latin America - Dia 2</title>
    <content type="html">&lt;p&gt;O segundo dia do &lt;a href="http://www.locaweb.com.br/railssummit/"&gt;Rails Summit Latin America&lt;/a&gt; (veja o &lt;a href="http://blog.shadowmaru.org/2008/10/16/rails-summit-latin-america-dia-1"&gt;primeiro dia&lt;/a&gt;) começou bem. O pessoal da &lt;a href="http://phusion.nl"&gt;Phusion (Ninh Bui e Hongli Lai)&lt;/a&gt; deu uma palestra show sobre o Passenger e escalabilidade, com direito a Megaman, Star Wars e Scarlett Johansson.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2949619770/" title="Rails Summit Latin America - Phusion by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3203/2949619770_62507844d1.jpg" width="500" height="375" alt="Rails Summit Latin America - Phusion" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A palestra seguinte foi uma videoconferência com Charles Nutter e Thomas Enebo, sobre &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt;. Não sou dos maiores fãs de Java, então não prestei muita atenção à apresentação, que por problemas de conexão teve muitas falhas de áudio.&lt;/p&gt;
&lt;p&gt;A seguir começaram as sessões paralelas. Eu assisti somente às brasileiras, já que as estrangeiras estavam sendo gravadas. A primeira foi do &lt;a href="http://blog.georgeguimaraes.com/"&gt;George Guimarães&lt;/a&gt;, do &lt;a href="http://www.pagestacker.com"&gt;Pagestacker&lt;/a&gt;, sobre como colocar uma aplicação Rails em produção e monitorá-la.&lt;/p&gt;
&lt;p&gt;Depois do almoço, duas palestras sobre empreendedorismo, de duas empresas brasileiras. A primeira foi da WebCo, dada por &lt;a href="http://manoellemos.com"&gt;Manoel Lemos&lt;/a&gt;, &lt;a href="http://logbr.reflectivesurface.com"&gt;Ronaldo Ferraz&lt;/a&gt; e &lt;a href="http://simplesideias.com"&gt;Nando Vieira&lt;/a&gt;. Como começou o &lt;a href="http://blogblogs.com.br"&gt;BlogBlogs&lt;/a&gt;, como ele cresceu e o que foi feito para escalar a aplicação. Também falaram sobre o &lt;a href="http://brasigo.com.br"&gt;Brasigo&lt;/a&gt; e o dia-a-dia da empresa.&lt;/p&gt;
&lt;p&gt;A segunda palestra foi do &lt;a href="http://blog.improveit.com.br"&gt;Vinicius Teles, da ImproveIT&lt;/a&gt;. Foi uma palestra dividida com o &lt;a href="http://blog.youngbloods.org"&gt;Carl Youngblood&lt;/a&gt;, da &lt;a href="http://surgeworks.com"&gt;Surgeworks&lt;/a&gt;, mais uma vez falando motivacionalmente, como você pode fazer a diferença, principalmente no Brasil.&lt;/p&gt;
&lt;p&gt;A palestra seguinte foi sobre testes automatizados, com o &lt;a href="http://www.dtsato.com"&gt;Danilo Sato&lt;/a&gt;. Foi uma passagem sobre os testes que você pode fazer na sua aplicação Rails e alguns problemas e lições aprendidas com os testes.&lt;/p&gt;
&lt;p&gt;As sessões paralelas seguintes não me interessavam (Ruby on Windows e mais JRuby), então aproveitei para começar a escrever este post :)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2949620452/" title="Rails Summit Latin America - Obie Fernandez by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3241/2949620452_8580afaa75.jpg" width="500" height="375" alt="Rails Summit Latin America - Obie Fernandez" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O keynote de encerramento foi do &lt;a href="http://blog.obiefernandez.com/content/"&gt;Obie Fernandez&lt;/a&gt;, falando sobre a &lt;a href="http://www.hashrocket.com"&gt;Hashrocket&lt;/a&gt; e como eles adotam os princípios do &lt;a href="http://agilemanifesto.org"&gt;Manifesto Ágil&lt;/a&gt; da sua própria maneira. Como muitas outras palestras nesta Rails Summit, muito inspirador.&lt;/p&gt;
&lt;p&gt;Assim acabou a Rails Summit (oficialmente). Mas espere, tem mais! No próximo post&amp;#8230;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/EOjjQHFH4VY" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/10/17/rails-summit-latin-america-dia-2</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/37</id>
    <published>2008-10-16T14:37:29Z</published>
    <updated>2009-08-11T20:06:52Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/RF8vHqUWNDg/rails-summit-latin-america-dia-1" rel="alternate" />
    <title>Rails Summit Latin America - Dia 1</title>
    <content type="html">&lt;p&gt;O &lt;a href="http://www.locaweb.com.br/railssummit/"&gt;Rails Summit Latin America&lt;/a&gt; começou no dia 15/10, no Auditório Elis Regina, no Anhembi. É o maior evento de Ruby on Rails da América Latina, e trouxe alguns dos maiores nomes de Rails do mundo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2946127358/" title="Rails Summit - Abertura by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3069/2946127358_3c27ddcb75.jpg" width="500" height="375" alt="Rails Summit - Abertura" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;O primeiro dia teve a abertura de Gilberto Mautner e &lt;a href="http://www.akitaonrails.com"&gt;Fabio Akita&lt;/a&gt;, da Locaweb. Logo em seguida tivemos uma sessão de perguntas e respostas com &lt;a href="http://www.loudthinking.com"&gt;David Heinemeier Hansson (&lt;span class="caps"&gt;DHH&lt;/span&gt;)&lt;/a&gt;, o criador do Rails. Ele respondeu perguntas ao vivo da platéia através de videoconferência. Apesar de algumas perguntas parecerem suporte técnico, outras foram bem interessantes, como sobre as novidades do Rails 2.2 e o futuro do framework.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2946127368/" title="Rails Summit - DHH by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3158/2946127368_24f5c15025.jpg" width="500" height="375" alt="Rails Summit - DHH" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Em seguida tivemos o keynote de &lt;a href="http://chadfowler.com"&gt;Chad Fowler&lt;/a&gt;. Chad, sem a barba que lhe é característica, falou sobre como ser marcante (remarkable). Segue mais ou menos a linha do seu livro, &lt;a href="http://www.pragprog.com/titles/mjwti/my-job-went-to-india"&gt;&amp;#8220;My Job Went to India&amp;#8221;&lt;/a&gt;. Algumas frases da apresentação foram realmente marcantes, como:&lt;/p&gt;
&lt;p&gt;&lt;q&gt;Cada dia faça uma coisa melhor que o dia anterior&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;&lt;q&gt;Você é um produto&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;&lt;q&gt;Faça barulho&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/shadow11/2946127374/" title="Rails Summit - Chad Fowler by shadow11, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3011/2946127374_da14a0c08a.jpg" width="500" height="375" alt="Rails Summit - Chad Fowler" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Depois do almoço, na sessão dupla, assisti à palestra de &lt;a href="http://nutrun.com/"&gt;George Malamidis&lt;/a&gt; e &lt;a href="http://www.dtsato.com"&gt;Danilo Sato&lt;/a&gt;, que falaram sobre &lt;a href="http://en.wikipedia.org/wiki/REST"&gt;&lt;span class="caps"&gt;REST&lt;/span&gt;&lt;/a&gt;. Foi uma palestra bem teórica, e boa para quem ainda não está familiarizado com o conceito de RESTful Web Services. A palestra paralela, que não assisti, foi do Akita, que pelo que ouvi, foi bem básica, sobre o básico de Rails.&lt;/p&gt;
&lt;p&gt;A palestra seguinte foi do &lt;a href="http://drnicwilliams.com/"&gt;Dr. Nic Williams&lt;/a&gt;, cujo tema foi &amp;#8220;Todos podem contribuir&amp;#8221;. Foi bastante similar à do Chad Fowler, motivacional, incentivando todos a contribuir para projetos open source, e falou sobre os &amp;#8216;segredos&amp;#8217; para se tornar sensacional: aprenda testes unitários, comece um blog, aprenda a criar, e melhore seus conhecimentos. A sessão paralela foi com &lt;a href="http://www.nomedojogo.com"&gt;Carlos Brando&lt;/a&gt;, que falou como é trabalhar para uma empresa de fora do Brasil.&lt;/p&gt;
&lt;p&gt;Todos voltaram ao auditório principal para o keynote de &lt;a href="http://errtheblog.com"&gt;Chris Wanstrath&lt;/a&gt;, do &lt;a href="http://github.com"&gt;github&lt;/a&gt;. Uma palestra também motivacional, muito parecida com a que ele deu no Ruby Hoedown deste ano.&lt;/p&gt;
&lt;p&gt;Após a última palestra, começou o Birds of a Feather, que na verdade acabou sendo Lightning Talks, palestras bem rápidas sobre algum assunto relacionado. Infelizmente alguns participantes não captaram a mensagem e falaram sobre coisas totalmente sem relação com Ruby ou Rails, inclusive política (?). As melhores, sem dúvida, foram a do pessoal da Phusion, que demonstraram um interpretador Brainfuck em Ruby, e a do &lt;a href="http://maisweb.org/blogdoelomar/"&gt;Elomar França&lt;/a&gt;, de apenas 17 anos, que deu um show na sua apresentação sobre o grupo de estudos &lt;a href="http://groups.google.com/group/aprendendo-rails"&gt;aprendendo-rails&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Assim acabou o primeiro dia de Rails Summit. Hoje tem mais!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/RF8vHqUWNDg" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/10/16/rails-summit-latin-america-dia-1</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/36</id>
    <published>2008-10-14T13:40:56Z</published>
    <updated>2009-08-11T20:05:30Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/mIp9mGnPf4s/encontro-agil-2008-relato" rel="alternate" />
    <title>Encontro Ágil 2008 - Relato</title>
    <content type="html">&lt;p&gt;Dando início à minha temporada de eventos (de &lt;a href="http://blog.shadowmaru.org/2008/8/25/eventos"&gt;Rails/internet&lt;/a&gt; e &lt;a href="http://blog.shadowmaru.org/2008/9/16/mais-eventos-agora-sobre-agile"&gt;Agile&lt;/a&gt;), neste sábado (11/10/2008) retornei ao &lt;a href="http://www.ime.usp.br"&gt;&lt;span class="caps"&gt;IME&lt;/span&gt;-&lt;span class="caps"&gt;USP&lt;/span&gt;&lt;/a&gt; (depois de me formar lá em 2005) para o &lt;a href="http://www.encontroagil.com.br"&gt;Encontro Ágil&lt;/a&gt;, evento organizado pelo &lt;a href="http://www.agilcoop.org.br/"&gt;AgilCoop&lt;/a&gt;, e que tem como tema as metodologias ágeis. Vou falar sobre as palestras que participei.&lt;/p&gt;
&lt;div align="center"&gt;&lt;img src="/system/assets/25/original/logoEncontroAgil.png" /&gt;&lt;/div&gt;
&lt;p&gt;A primeira palestra foi do Dairton Bassi, do &lt;a href="http://www.ikwa.com.br"&gt;Ikwa&lt;/a&gt;, que falou sobre &amp;#8220;Planejamento ágil de projetos&amp;#8221;: priorização, estimativas, preparar para mudanças, planejamento por níveis.&lt;/p&gt;
&lt;p&gt;A segunda palestra seria &amp;#8220;Desconfiométricas&amp;#8221;, mas o palestrante (Jorge Diz) teve um impedimento (pneu furado), mas foi rapidamente substituído pelo Hugo Corbucci, que também falou sobre métricas. A palestra do Jorge foi para o Open Space, no horário seguinte, mas eu já havia me programado para assistir à palestra do Fabio Kon, sobre &amp;#8220;Dificuldade na implantação de Métodos Ágeis&amp;#8221;. Muito interessante, ele falou sobre vários problemas que ele enfrentou, mas não deu nenhuma solução, o que arrancou vários risos da platéia.&lt;/p&gt;
&lt;p&gt;Após o almoço (patrocinado), peguei um café espresso na máquina do andar de cima (às vezes é bom conhecer o lugar) e fui para a sessão do Birds of a Feather sobre &amp;#8220;Espaços Ágeis&amp;#8221;, que tinha como meta esboçar um escritório ideal para práticas ágeis. Foram pensadas soluções para Pair Programming (também considerando privacidade individual), comida/bebida, diversão (Wii, é claro) e conforto (pufes, vestiário/chuveiro pra quem vem de &lt;a href="http://www.amoodeiosp.com.br/tags/bike"&gt;bike&lt;/a&gt;). Foi um debate muito interessante.&lt;/p&gt;
&lt;p&gt;A última palestra (após o coffee break) foi sobre um case do &lt;span class="caps"&gt;UOL&lt;/span&gt;, que está utilizando Scrum com algumas práticas do XP (principalmente testes) em alguns projetos. Houve uma comparação com projetos já realizados usando &lt;acronym title="Rational Unified Process"&gt;&lt;span class="caps"&gt;RUP&lt;/span&gt;&lt;/acronym&gt;.&lt;/p&gt;
&lt;p&gt;No geral, foi um ótimo evento, principalmente se considerarmos que foi gratuito. Algumas coisas não foram boas, mas como foi feita uma retrospectiva do evento, a tendência é melhorar no próximo. Assim como toda metodologia ágil.&lt;/p&gt;
&lt;p&gt;Amanhã tem Rails Summit!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/mIp9mGnPf4s" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/10/14/encontro-agil-2008-relato</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/31</id>
    <published>2008-10-03T19:59:08Z</published>
    <updated>2009-08-11T17:54:21Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/A5pQqAsVJvk/mudanca-de-emprego" rel="alternate" />
    <title>Mudança (de emprego)</title>
    <content type="html">&lt;p&gt;Há algum tempo (acho que dois anos) tomei contato com esse framework impressionante que é o Rails. Desde então decidi que iria investir no aprendizado da linguagem (Ruby) e do framework (Rails), assim como seus usuais agregados: Mac OS, Git, &lt;span class="caps"&gt;BDD&lt;/span&gt;, Agile methods, para algum dia trabalhar a maior parte do tempo com isso, visto que estava preso a vários sistemas que estavam em &lt;span class="caps"&gt;PHP&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/24/original/dburns.png" align="left" style="margin-right:10px;" /&gt;Agora tudo começa a valer a pena. A partir deste mês sou mais um railer a se juntar ao excelente time da &lt;a href="http://www.dburnsdesign.com"&gt;DBurns Design&lt;/a&gt;. Será fascinante trabalhar full-time com aquilo que eu me dediquei tanto a aprender: Rails, Git, &lt;span class="caps"&gt;BDD&lt;/span&gt;, XP, Scrum, e por aí vai, ainda mais com uma equipe que está crescendo e se dedicando cada vez mais ao Rails.&lt;/p&gt;
&lt;p&gt;Agradeço os meus colegas de trabalho da &lt;a href="http://spaceprod.com.br"&gt;Space&lt;/a&gt; que me aguentaram por mais de sete anos, mas é hora de mudar.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/A5pQqAsVJvk" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/10/3/mudanca-de-emprego</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/30</id>
    <published>2008-09-16T15:54:11Z</published>
    <updated>2008-10-14T13:43:51Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/lY26SDhTVQ4/mais-eventos-agora-sobre-agile" rel="alternate" />
    <title>Mais Eventos - agora sobre Agile</title>
    <content type="html">&lt;p&gt;Como disse no &lt;a href="http://blog.shadowmaru.org/2008/8/25/eventos"&gt;post anterior&lt;/a&gt;, parece que Outubro é mesmo o mês dos eventos de TI. Nele eu falei sobre os eventos relacionados a Rails e Web. Agora vou falar sobre os eventos sobre Agile.&lt;/p&gt;
&lt;p&gt;Para quem não sabe, os métodos ágeis de desenvolvimento surgiram para otimizar as entregas e entregar realmente aquilo que o cliente considera importante. Recomendo a leitura do &lt;a href="http://agilemanifesto.org"&gt;Manifesto Agile&lt;/a&gt;. Pois bem, na última semana fiz um curso sobre &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)"&gt;Scrum&lt;/a&gt;, e também estou lendo sobre &lt;a href="http://en.wikipedia.org/wiki/Extreme_programming"&gt;Extreme Programming (XP)&lt;/a&gt;. Agora também vou começar a participar das listas e dos eventos relacionados a agile. Em outubro teremos os seguintes eventos (em São Paulo) nos quais estarei presente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.encontroagil.com.br"&gt;Encontro Ágil&lt;/a&gt; &amp;#8211; gratuito, e será realizado no dia 11/10/2008 no &lt;a href="http://www.ime.usp.br"&gt;&lt;span class="caps"&gt;IME&lt;/span&gt;-&lt;span class="caps"&gt;USP&lt;/span&gt;&lt;/a&gt;, faculdade onde estudei. Contará com a presença do Vinicius Teles, da ImproveIT, que também é um nome forte na comunidade Rails.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.falandoemagile.com.br"&gt;Falando em Agile&lt;/a&gt; &amp;#8211; organizado pela Caelum, onde fiz o curso de &lt;span class="caps"&gt;CSM&lt;/span&gt;. Vai contar com grandes nomes de Agile no Brasil e também de fora: Alexandre Magno, David Anderson, o time brasileiro da ThoughtWorks que também desenvolve em Rails, Guilherme Chapiewski da globo.com, entre outros.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/lY26SDhTVQ4" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/9/16/mais-eventos-agora-sobre-agile</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/27</id>
    <published>2008-09-12T15:49:05Z</published>
    <updated>2008-09-21T23:59:50Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/0djS_G03XjU/problema-com-comentários" rel="alternate" />
    <title>Problema com comentários</title>
    <content type="html">&lt;p&gt;Hum, aparentemente o Mephisto está tendo problemas com comentários. Quando já existe um postado, o seguinte não vai. Deve ser algum problema de cache do Mephisto, pelo que andei investigando.&lt;/p&gt;
&lt;p&gt;Eu já devia ter suspeitado, já que nenhum artigo meu tinha mais de 1 comentário. Só achei que eles não eram tão populares :)&lt;/p&gt;
&lt;p&gt;Vou tentar ver o que está acontecendo, mas qualquer comentário envie para mim mesmo: shadow11 (at) gmail&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;EDIT&lt;/span&gt;: Ok, resolvido, era um bug antigo, na verdade, mas só percebi agora. Tem a ver com o Apache colocando uma barra &amp;#8216;/&amp;#8217; no final da &lt;span class="caps"&gt;URL&lt;/span&gt;, e isso zoava o cache do Mephisto (nos logs aparecia 302). Para corrigir, é só colocar no &lt;code&gt;/public/.htaccess&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DirectorySlash Off&lt;/code&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/0djS_G03XjU" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/9/12/problema-com-comentários</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/25</id>
    <published>2008-09-11T15:22:28Z</published>
    <updated>2009-08-11T17:53:02Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/Qqc1shUapQM/identificando-seu-branch-do-git-no-prompt" rel="alternate" />
    <title>Identificando seu branch do git no prompt</title>
    <content type="html">&lt;p&gt;Uma das coisas que mais me atraem no git é a facilidade de lidar com branches, ou seja, uma versão do seu repositório que não interfere no principal, que já está funcionando. Geralmente se usa para adicionar novas funcionalidades sem quebrar o código original, podendo fazer commit à vontade.&lt;/p&gt;
&lt;p&gt;Pois bem, certas vezes vi alguns &lt;a href="http://blog.shadowmaru.org/2008/8/27/aprenda-rails-assistindo-screencasts"&gt;screencasts&lt;/a&gt; sobre Rails e git onde o prompt do terminal tinha o branch do git atual. Isso é muito útil para saber em que branch você está e lembrar você de fazer um branch em vez de alterar o master. Vi um tweet do Nando com o prompt dele alterado, e resolvi ir atrás. Sinceramente não lembro onde eu achei o código, mas segue ele aqui um pouco adaptado para o meu gosto, usando o bash:&lt;/p&gt;
&lt;filter:code lang="shell-unix-generic"&gt;
&lt;p&gt;function parse_git_branch {&lt;br /&gt;
git branch &amp;#8212;no-color 2&amp;gt; /dev/null | sed -e &amp;#8216;/^[^*]/d&amp;#8217; -e &amp;#8216;s/* \(.*\)/(\1)/&amp;#8217;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;export PS1=&amp;quot;\u@\h:\W \$(parse_git_branch)\$ &amp;quot;&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Bom, PS1 é a variável de ambiente do bash que define o prompt. Aqui &lt;code&gt;\u&lt;/code&gt; é o seu login, &lt;code&gt;\h&lt;/code&gt; é o hostname (nome da sua máquina), &lt;code&gt;\W&lt;/code&gt; é o diretório atual, e &lt;code&gt;\$&lt;/code&gt; no final é o símbolo de cifrão mesmo. A sacada aqui é o &lt;code&gt;\$(parse_git_branch)&lt;/code&gt;. Ele faz uma chamada para a função &lt;code&gt;parse_git_branch&lt;/code&gt; definida acima.&lt;/p&gt;
&lt;p&gt;E o que essa função retorna é justamente o seu branch atual entre parênteses, pegando a saída do comando &lt;code&gt;git branch&lt;/code&gt; e usando expressões regulares para formatar a saída usando o &lt;code&gt;sed&lt;/code&gt;. O primeiro parâmetro do &lt;code&gt;sed&lt;/code&gt; pega o branch atual (que é o que tem o * na frente) e o segundo coloca somente o texto do branch entre parênteses.&lt;/p&gt;
&lt;p&gt;Meu prompt ficou assim:&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/23/original/prompt.png" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/Qqc1shUapQM" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/9/11/identificando-seu-branch-do-git-no-prompt</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/24</id>
    <published>2008-09-04T18:18:37Z</published>
    <updated>2009-08-11T00:14:17Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/7f5LD8kEOX8/rails-para-designers" rel="alternate" />
    <title>Rails para designers</title>
    <content type="html">&lt;p&gt;Este post é para designers que pretendem trabalhar com Rails e querem um guia inicial para poderem se dar bem com o programador. É bem introdutório, então muita gente que já conhece Rails vai falar &amp;#8216;putz, isso é muito básico&amp;#8217;. E é mesmo. Mas pra quem não manja nada de programação vai ajudar. Vou falar de &lt;span class="caps"&gt;MVC&lt;/span&gt;, a estrutura do Rails e também sobre partials e helpers (um pouco mais avançado).&lt;/p&gt;
&lt;h2&gt;&lt;span class="caps"&gt;MVC&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span class="caps"&gt;MVC&lt;/span&gt; quer dizer &amp;#8216;Model, View, Controller&amp;#8217; e é um jeito de separar as camadas de um sistema. O que vai interessar a você são as Views, que são o front-end do sistema. Você não vai ter que ficar olhando aquele código enorme de programação antes do seu &lt;span class="caps"&gt;HTML&lt;/span&gt;. Talvez nem no meio. Só para complementar, no Model são implementadas as regras de negócio do sistema e as conexões com o banco de dados, e no Controller a lógica de processamento, ou seja, a intermediação do Model com as Views. É no controller que as variáveis que serão usadas nas Views são geradas.&lt;/p&gt;
&lt;h2&gt;Estrutura do Rails&lt;/h2&gt;
&lt;p&gt;Para facilitar a sua vida, todos os arquivos que você precisará editar estão ou em &lt;code&gt;app/views/&lt;/code&gt; ou em &lt;code&gt;public/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Existem duas estruturas básicas para as URLs em Rails, uma seguindo o padrão &lt;span class="caps"&gt;REST&lt;/span&gt; e outra que era padrão até o Rails 1.2. Você não precisa saber exatamente o que é &lt;span class="caps"&gt;REST&lt;/span&gt;, mas precisa saber qual view editar. Qualquer dúvida, pergunte ao programador se ele está usando alguma rota específica ou fora do padrão. Para não complicar muito, digamos que o seu sistema segue o padrão &lt;span class="caps"&gt;REST&lt;/span&gt; (ou seja, é RESTful):&lt;/p&gt;
&lt;p&gt;http://dominio.com/posts/1&lt;/p&gt;
&lt;p&gt;Segundo o padrão &lt;span class="caps"&gt;REST&lt;/span&gt; do Rails, o controller posts vai chamar a action &amp;#8216;show&amp;#8217;, portanto o arquivo que você terá que editar será o &lt;code&gt;app/views/posts/show.html.erb&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Já se a &lt;span class="caps"&gt;URL&lt;/span&gt; for&lt;/p&gt;
&lt;p&gt;http://dominio.com/posts/new&lt;/p&gt;
&lt;p&gt;o arquivo será &lt;code&gt;app/views/posts/new.html.erb&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Public&lt;/h2&gt;
&lt;p&gt;No diretório &lt;code&gt;public/&lt;/code&gt; estão todos os artefatos que você normalmente usa numa página web: imagens, estilos, JavaScript, Flash, cada um no seu respectivo diretório:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;public/images&lt;/li&gt;
	&lt;li&gt;public/stylesheets&lt;/li&gt;
	&lt;li&gt;public/javascripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;E para chamá-los é só imaginar o diretório &lt;code&gt;public/&lt;/code&gt; como a raiz do seu domínio, por exemplo&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&amp;lt;img src="/images/logo.jpg" /&amp;gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;ou usando um helper do Rails:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
&amp;lt;%= image_tag 'logo.jpg' %&amp;gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Veja que você não precisa declarar o diretório images, o Rails já sabe que tem que buscar lá.&lt;/p&gt;
&lt;h2&gt;Layouts&lt;/h2&gt;
&lt;p&gt;Bom, layouts são basicamente templates. Eles estão em &lt;code&gt;app/views/layouts&lt;/code&gt;. É onde você inclui elementos comuns de um site, como topo, rodapé e o conteúdo principal vai no meio. Aquilo que vai no meio da página é o conteúdo das views e tudo em volta faz parte do layout. Bem, então como eu coloco esse conteúdo das views? É só incluir a tag &lt;code&gt;&amp;lt;%= yield %&amp;gt;&lt;/code&gt; onde você quiser que ele apareça.&lt;/p&gt;
&lt;p&gt;O padrão no Rails é que seja renderizado o layout com o mesmo nome do controller. Se esse layout não existir, &lt;code&gt;app/views/layouts/application.html.erb&lt;/code&gt; é utilizado.&lt;/p&gt;
&lt;p&gt;Um arquivo &lt;code&gt;.html.erb&lt;/code&gt; é como se fosse um arquivo &lt;span class="caps"&gt;HTML&lt;/span&gt; normal, só que com algum código Ruby embutido (ERb é embedded ruby).&lt;/p&gt;
&lt;p&gt;Vamos ver um exemplo de layout:&lt;/p&gt;
&lt;filter:code lang="html"&gt;
&lt;p&gt;&amp;lt;!&lt;span class="caps"&gt;DOCTYPE&lt;/span&gt; html &lt;span class="caps"&gt;PUBLIC&lt;/span&gt; &amp;#8220;-//W3C//&lt;span class="caps"&gt;DTD&lt;/span&gt; &lt;span class="caps"&gt;XHTML&lt;/span&gt; 1.0 Strict//EN&amp;#8221;&lt;br /&gt;
        &amp;#8220;http://www.w3.org/TR/xhtml1/&lt;span class="caps"&gt;DTD&lt;/span&gt;/xhtml1-strict.dtd&amp;#8221;&amp;gt;&lt;br /&gt;
&lt;html&gt;&lt;/p&gt;
&lt;head&gt;
    &lt;title&gt;&amp;lt;%= @title || &amp;#8220;Título&amp;#8221; %&amp;gt;&lt;/title&gt;
&amp;lt;%= stylesheet_link_tag &amp;#8216;site&amp;#8217; %&amp;gt;
&amp;lt;%= javascript_include_tag &amp;#8216;application&amp;#8217;, &amp;#8216;prototype&amp;#8217;, &amp;#8216;effects&amp;#8217; %&amp;gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div id="header"&gt;
&amp;lt;%= render :partial =&amp;gt; &amp;#8216;shared/header&amp;#8217; %&amp;gt;
&lt;/div&gt;
&lt;div id="content"&gt;
&amp;lt;%= yield %&amp;gt;
&lt;/div&gt;
&lt;div id="footer"&gt;
&amp;lt;%= render :partial =&amp;gt; &amp;#8216;shared/footer&amp;#8217; %&amp;gt;
&lt;/div&gt;
&lt;/body&gt;

&lt;p&gt;&lt;/html&gt;&lt;/filter:code&gt;&lt;/p&gt;
&lt;p&gt;Veja, parece um &lt;span class="caps"&gt;HTML&lt;/span&gt; normal, que você já está acostumado a ver e escrever. Vamos ver alguns detalhes:&lt;/p&gt;
&lt;filter:code lang="html_rails"&gt;
 &lt;title&gt;&amp;lt;%= @title || &amp;#8220;Título&amp;#8221; %&amp;gt;&lt;/title&gt;
&lt;/filter:code&gt;
&lt;p&gt;&lt;code&gt;@title&lt;/code&gt; aqui é uma variável, que vai estar definida em algum controller. Se ela não existir, será usada a string &amp;#8220;Título&amp;#8221;. O &lt;code&gt;||&lt;/code&gt; quer dizer &amp;#8216;ou&amp;#8217;.&lt;/p&gt;
&lt;filter:code lang="html_rails"&gt;
&lt;p&gt;&amp;lt;%= stylesheet_link_tag &amp;#8216;site&amp;#8217; &lt;span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;/span&gt;= javascript_include_tag &amp;#8216;application&amp;#8217;, &amp;#8216;prototype&amp;#8217;, &amp;#8216;effects&amp;#8217; %&amp;gt;&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Estas são os helpers no Rails para inclusão de &lt;span class="caps"&gt;CSS&lt;/span&gt; e JavaScript. No caso, eles vão automaticamente gerar uma tag para &lt;code&gt;/stylesheets/site.css&lt;/code&gt; e tags para os arquivos &lt;code&gt;/javascripts/application.js&lt;/code&gt;, &lt;code&gt;/javascripts/prototype.js&lt;/code&gt; e &lt;code&gt;/javascripts/effects.js&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Existem muitos outros helpers que podem ajudar você (e o programador) a gerar código &lt;span class="caps"&gt;HTML&lt;/span&gt;. Para mais informações, consulte a &lt;a href="http://api.rubyonrails.org"&gt;&lt;span class="caps"&gt;API&lt;/span&gt; do Rails&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Partials&lt;/h2&gt;
&lt;p&gt;Vejamos esta chamada:&lt;/p&gt;
&lt;filter:code lang="html_rails"&gt;
&lt;p&gt;&amp;lt;%= render :partial =&amp;gt; &amp;#8216;shared/header&amp;#8217; %&amp;gt;&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Já viu no &lt;span class="caps"&gt;PHP&lt;/span&gt; algo assim?&lt;/p&gt;
&lt;filter:code lang="php"&gt;
&lt;p&gt;&amp;lt;?php include &amp;#8216;header.php&amp;#8217;;?&amp;gt;&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Então, é parecido. São pequenos pedaços de &lt;span class="caps"&gt;HTML&lt;/span&gt; que são comuns a várias páginas que você gostaria de reutilizar. Aliás esse é um dos princípios do Rails: &lt;span class="caps"&gt;DRY&lt;/span&gt; (Don&amp;#8217;t Repeat Yourself). O arquivo que ele vai chamar tem que ter um &amp;#8216;\_&amp;#8217; na frente, no caso &lt;code&gt;app/views/shared/_header.html.erb&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;DISCLAIMER&lt;/span&gt;: este artigo é inspirado e muito baseado neste post (embora não seja uma tradução literal): http://glu.ttono.us/articles/2006/03/21/rails-for-designers&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/7f5LD8kEOX8" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/9/4/rails-para-designers</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/23</id>
    <published>2008-09-01T18:00:14Z</published>
    <updated>2008-09-01T18:13:33Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/EAn8iJ7yGMM/conte-sua-historia-sobre-rails" rel="alternate" />
    <title>Conte sua história sobre Rails</title>
    <content type="html">&lt;p&gt;No blog &lt;a href="http://weblog.rubyonrails.com"&gt;Riding Rails&lt;/a&gt; (o blog oficial do Rails), o &lt;span class="caps"&gt;DHH&lt;/span&gt; &lt;a href="http://weblog.rubyonrails.com/2008/8/30/tell-your-rails-story"&gt;pediu para as pessoas contarem sua história pessoal com o Rails&lt;/a&gt;. Segue o post traduzido:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Tenho recebido algumas histórias realmente tocantes sobre pessoas que se tornaram programadores Rails a partir de diversas origens durante esses anos. Eu até conversei uma vez com um taxista que estava me levando para o aeroporto que estava programando em Rails. Ou os caras que queriam largar a programação, mas começaram a se divertir noovamente com Rails.&lt;/p&gt;
&lt;p&gt;Todas essas são histórias poderosas que eu adoraria poder compartilhá-las com o mundo. Então vamos tentar fazer isso! Se você tem uma ótima história sobre como você chegou ao Rails, então por favor mande para david arroba loudthinking ponto com com o assunto &amp;#8220;My Rails story&amp;#8221;. Eu flitrarei todas as mensagens em uma pasta e veremos um jeito de publicá-las&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Minha história não é nada sensacional. Eu já era programador, quando um outro desenvolvedor foi contratado, e ele queria programar em Rails, e nos convenceu a fazer isso. Eu comecei a ver o que ele fazia, estudar e comecei a mexer com Rails também.&lt;/p&gt;
&lt;p&gt;Mas quem sabe a sua história não é sensacional, a ponto do &lt;span class="caps"&gt;DHH&lt;/span&gt; publicá-la?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/EAn8iJ7yGMM" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/9/1/conte-sua-historia-sobre-rails</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/20</id>
    <published>2008-08-27T14:21:33Z</published>
    <updated>2008-08-29T13:49:52Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/sIVWi48EDzY/aprenda-rails-assistindo-screencasts" rel="alternate" />
    <title>Aprenda Rails assistindo Screencasts</title>
    <content type="html">&lt;p&gt;Além dos &lt;a href="http://blog.shadowmaru.org/2008/5/27/livros-de-rails-e-suas-versoes"&gt;livros&lt;/a&gt;, uma outra forma de aprender Rails me ajudou muito: os screencasts. Eles são uma forma de aprendizado mais dinâmica que os livros, e mais visual que os podcasts. Segue uma lista dos screencasts que eu já assisti e recomendo:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.peepcode.com"&gt;Peepcode&lt;/a&gt; &amp;#8211; é um dos mais antigos, portanto um dos que tem mais conteúdo. É pago (9 &lt;span class="caps"&gt;USD&lt;/span&gt; cada) mas vale cada centavo, além de ter uma &lt;a href="http://blog.shadowmaru.org/2008/2/20/peepcode-unlimited-screencasts-sobre-rails-por-um-ano"&gt;assinatura anual&lt;/a&gt; (149 &lt;span class="caps"&gt;USD&lt;/span&gt;). Os screencasts são longos, então cuidado para não dormir :) Por Geoffrey Grosenbach (putz, acertei de primeira)&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.railscasts.com"&gt;Railscasts&lt;/a&gt; &amp;#8211; grátis, episódios curtos e focados. Excelente. Feito por Ryan Bates.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.nomedojogo.com/2008/08/29/os-screencasts-perdidos-do-nome-do-jogo/"&gt;Nome do Jogo&lt;/a&gt; &amp;#8211; infelizmente o Carlos Brando interrompeu a série de screencasts, que ia muito na linha do Railscasts. Quem sabe não volta?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.pragprog.com"&gt;Pragmatic Screencasts&lt;/a&gt; &amp;#8211; pago também, feito por várias pessoas e organizado pela Pragmatic Programmers, mais conhecida pelos seus livros.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.buildingwebapps.com/podcasts"&gt;Learning Rails&lt;/a&gt; &amp;#8211; gratuito, e cobre o básico para criar sua aplicação Rails. Começou como podcast, e virou screencast.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.envycasts.com"&gt;Envycasts&lt;/a&gt; &amp;#8211; lançado recentemente, é pago (9 &lt;span class="caps"&gt;USD&lt;/span&gt; cada), a qualidade é ótima, o conteúdo muito bom e conta com todo o senso de humor do Gregg Pollack e do Jason Seifer, que vocês podem conferir também no Rails Envy e no Rails Envy Podcast.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Reparem que quase todos os screencasts são em inglês. Mais um motivo então para aprender inglês, que eu considero fundamental para qualquer programador, apesar de haver muito &lt;a href="http://gettingreal.37signals.com/GR_por.php"&gt;material&lt;/a&gt; &lt;a href="http://blog.shadowmaru.org/2008/1/24/aprenda-a-programar"&gt;traduzido&lt;/a&gt; por aí, com esforços da comunidade.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/sIVWi48EDzY" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/8/27/aprenda-rails-assistindo-screencasts</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/19</id>
    <published>2008-08-25T23:20:01Z</published>
    <updated>2008-10-14T13:44:05Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/ZP-m3ikNllc/eventos" rel="alternate" />
    <title>Eventos</title>
    <content type="html">&lt;p&gt;Parece que o segundo semestre se estabeleceu como o período dos grandes eventos, pelo menos na área de TI/Web. Depois de um primeiro semestre meio inerte, o segundo promete!&lt;/p&gt;
&lt;p&gt;Tivemos nesta sexta-feira o primeiro &lt;a href="http://www.akitaonrails.com/2008/8/15/happy-hour-de-railers-de-sampa"&gt;Happy Hour de Railers em São Paulo&lt;/a&gt;, no Bar do Juarez. Foi bem legal, tinha umas 30 pessoas, incluindo gente da WebCo, Pagestacker e boo-box. Quem sabe isso não motiva encontros regionais em outras cidades?&lt;/p&gt;
&lt;p&gt;Vamos ter o &lt;a href="http://imasters.uol.com.br/intercon/2008/"&gt;InterCon 2008&lt;/a&gt;, evento sobre web e tendências, onde vão palestrar grandes nomes da web/blogosfera brasileira, como Fabio Seixas, Manoel Lemos, Marco Gomes, Fabio Akita, Cris Dias e o grande Luli Radfahrer. O InterCon acontece no dia 25 de outubro e tem como tema a inovação digital. &lt;strong&gt;Eu vou!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ainda em outubro, nos dias 15 e 16, teremos o grande evento de Rails do ano, que eu já mencionei no post anterior, aqui em São Paulo: a &lt;a href="http://www.locaweb.com.br/railssummit/"&gt;Rails Summit Latin America&lt;/a&gt;. &lt;strong&gt;Eu vou!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sem confirmação ainda, deve acontecer em setembro o &lt;a href="http://www.minasonrails.org/"&gt;Minas on Rails&lt;/a&gt;. Se realmente acontecer, vou fazer um esforço para comparecer.&lt;/p&gt;
&lt;p&gt;Isso fora o &lt;a href="http://www.expomoney.com.br"&gt;ExpoMoney&lt;/a&gt;, mas isso é assunto para outro &lt;a href="http://www.conscienciafinanceira.com.br"&gt;blog&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/ZP-m3ikNllc" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/8/25/eventos</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/17</id>
    <published>2008-07-13T01:33:25Z</published>
    <updated>2008-10-14T13:44:18Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/qw2Zrc1j4zM/rails-summit-brazil-2008-hospedagem" rel="alternate" />
    <title>Rails Summit Latin America 2008 - Hospedagem</title>
    <content type="html">&lt;p&gt;Como o &lt;a href="http://akitaonrails.com"&gt;Fabio Akita&lt;/a&gt; anunciou no seu blog, em outubro (dias 15 e 16) haverá a &lt;a href="http://akitaonrails.com/2008/7/4/est-chegando-a-hora-rails-summit-brazil-2008"&gt;Rails Summit &lt;strike&gt;Brazil&lt;/strike&gt; Latin America 2008&lt;/a&gt;. Vai ser o primeiro grande evento de Rails no Brasil, com presenças internacionais como Chad Fowler, Obie Fernandez, Dr. Nic Williams e até o próprio &lt;span class="caps"&gt;DHH&lt;/span&gt; (por vídeo-conferência), e nacionais como &lt;a href="http://www.manoellemos.com"&gt;Manoel Lemos&lt;/a&gt; e &lt;a href="http://www.improveit.com.br"&gt;Vinicius Teles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para colaborar um pouco com o evento e a divulgação, resolvi fazer (inspirado por uma &lt;a href="http://twitter.com/tapajos/statuses/853140229"&gt;pergunta do Tapajós no Twitter&lt;/a&gt;) uma listagem dos hotéis que ficam perto do local do evento, o Anhembi, para as pessoas que não são de São Paulo. Não sei se haverá hospedagem oficial, mas o que importa é a liberdade de escolha :)&lt;/p&gt;
&lt;p&gt;Segue a lista (os preços variam conforme o tipo de quarto):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.hinnbrasil.com.br/hotel_sao_hipa_home.php"&gt;Holiday Inn Parque Anhembi&lt;/a&gt;&lt;br /&gt;
É definitivamente o hotel mais perto, ele fica &lt;b&gt;dentro&lt;/b&gt; do complexo do Anhembi.&lt;br /&gt;
Diária: de R$250 a R$400&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.accorhotels.com.br/guiahoteis/Ibis/hotel_main.asp?cd_hotel=33"&gt;Ibis Barra Funda&lt;/a&gt;&lt;br /&gt;
Diária: R$135 (+R$9,50 com café da manhã)&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.accorhotels.com.br/guiahoteis/novotel/hotel_main.asp?cd_hotel=18"&gt;Novotel Center Norte&lt;/a&gt;&lt;br /&gt;
Diária: R$145 a R$320&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.accorhotels.com.br/guiahoteis/mercure/hotel_main.asp?cd_hotel=179"&gt;Mercure Apt Nortel&lt;/a&gt;&lt;br /&gt;
Diária: R$150 a R$220&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bwmetrotietehotel.com.br/home"&gt;Best Western Metrô Tietê&lt;/a&gt;&lt;br /&gt;
&lt;strike&gt;Não está disponível para o período.&lt;/strike&gt; &lt;span class="caps"&gt;UPDATE&lt;/span&gt;: O &lt;a href="http://blog.improveit.com.br/articles/2008/07/29/rails-summit-latin-america-2008"&gt;Tapajós&lt;/a&gt; conseguiu reserva lá, então estou mudando o status.&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;s=AARTsJqgV2nwuj5YC0Xh92dc3AKX1p_ipQ&amp;amp;msa=0&amp;amp;msid=100925736882151121931.000451dddee08a50ac21b&amp;amp;ll=-23.508589,-46.63456&amp;amp;spn=0.055095,0.072956&amp;amp;z=13&amp;amp;output=embed"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=100925736882151121931.000451dddee08a50ac21b&amp;amp;ll=-23.508589,-46.63456&amp;amp;spn=0.055095,0.072956&amp;amp;z=13&amp;amp;source=embed" style="text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/qw2Zrc1j4zM" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/7/13/rails-summit-brazil-2008-hospedagem</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/15</id>
    <published>2008-06-12T13:28:09Z</published>
    <updated>2009-08-11T17:43:05Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/PFhLPxukRUw/rails-2-1-what-s-new" rel="alternate" />
    <title>Rails 2.1: What's new?</title>
    <content type="html">&lt;div style="width:640px;margin:10px auto;"&gt;&lt;img src="/system/assets/22/original/ruby_on_rails_2_1.jpg" /&gt; &lt;img src="/system/assets/21/original/cover.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;Mais um projeto de tradução do qual eu participei (o outro foi o &lt;a href="http://blog.shadowmaru.org/2008/1/24/aprenda-a-programar"&gt;Learn to Program&lt;/a&gt;): é a &lt;a href="http://www.nomedojogo.com/2008/06/09/new-free-book-ruby-on-rails-21-whats-new/"&gt;tradução&lt;/a&gt;, desta vez do Português para o Inglês do e-book do &lt;a href="http://www.nomedojogo.com"&gt;Carlos Brando&lt;/a&gt;, sobre as novidades do Rails 2.1, lançado oficialmente durante a &lt;a href="http://www.railsconf.com"&gt;RailsConf 2008&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Traduzi somente o capítulo 14 (todos os outros já &amp;#8220;tinham dono&amp;#8221;), mas pelo menos pude contribuir. Foi o primeiro livro a ser lançado sobre o assunto, tanto em Português como em Inglês, e fico feliz por ter feito parte desse projeto. Agora deve sair até &lt;a href="http://ruby-it.org/pages/traduzione%20rails%202.1%20dal%20portoghese"&gt;versão em italiano&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.nomedojogo.com/2008/06/06/o-primeiro-livro-sobre-rails-21-e-brasileiro/"&gt;Veja a versão em Português&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.nomedojogo.com/2008/06/09/new-free-book-ruby-on-rails-21-whats-new/"&gt;Veja a versão em Inglês&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Gostou? Recomende o pessoal no &lt;a href="http://workingwithrails.com"&gt;Working with Rails&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/PFhLPxukRUw" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/6/12/rails-2-1-what-s-new</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/12</id>
    <published>2008-05-27T14:28:52Z</published>
    <updated>2009-08-11T17:26:07Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/2QImjcV3z20/livros-de-rails-e-suas-versoes" rel="alternate" />
    <title>Livros de Rails e suas versões</title>
    <content type="html">&lt;p&gt;Uma das melhores maneiras de se aprender uma linguagem (ou, no caso, um framework) é lendo um livro. O problema em aprender Rails através de livros é que a linguagem muda frequentemente, então as versões nas quais os livros foram escritos tornam-se desatualizadas muito rapidamente.&lt;/p&gt;
&lt;p&gt;Veja as versões e suas datas de lançamento:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Rails 1.0 &amp;#8211; 13/12/2005&lt;/li&gt;
	&lt;li&gt;Rails 1.1 &amp;#8211; 27/03/2006&lt;/li&gt;
	&lt;li&gt;Rails 1.2 &amp;#8211; 17/01/2007&lt;/li&gt;
	&lt;li&gt;Rails 2.0 &amp;#8211; 06/12/2007&lt;/li&gt;
	&lt;li&gt;Rails 2.1 &amp;#8211; 31/05/2008&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para ajudar o iniciante que quer aprender &lt;a href="http://boo-box.com/link/bid:424/lang:en-US/tags:Rails+livro/format:box" class="bbli"&gt;Ruby on Rails&lt;img src="http://boo-box.com/bbli" alt="[bb]" class="bbic" /&gt;&lt;/a&gt;&lt;script src="http://stable.boo-box.com/" type="text/javascript"&gt;&lt;/script&gt;, compilei uma lista com os livros mais populares com suas respectivas versões:&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/9/original/agile_web_development_with_rails1.jpg" align="left" style="margin-right:10px;" /&gt;Agile Web Development with Rails 1ed. (2005)&lt;br /&gt;
Dave Thomas/David Heinemeier Hansson&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 1.0&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/10/original/agile_web_development_with_rails2.jpg" align="left" style="margin-right:10px;" /&gt;Agile Web Development with Rails 2ed. (2006)&lt;br /&gt;
Dave Thomas/David Heinemeier Hansson&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 1.2&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/11/original/agile_web_development_with_rails3beta.jpg" align="left" style="margin-right:10px;" /&gt;Agile Web Development with Rails 3ed. (beta)&lt;br /&gt;
Sam Ruby/Dave Thomas&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 2.x&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/16/original/rails_recipes.jpg" align="left" style="margin-right:10px;" /&gt;Rails Recipes (2006)&lt;br /&gt;
Chad Fowler&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 1.1&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/8/original/advanced_rails_recipes.jpg" align="left" style="margin-right:10px;" /&gt;Advanced Rails Recipes (2008)&lt;br /&gt;
Mike Clark&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 2.0&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/19/original/the_rails_way.jpg" align="left" style="margin-right:10px;" /&gt;The Rails Way (2007)&lt;br /&gt;
Obie Fernandez&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 2.0&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/20/original/ndphpr.jpg" align="left" style="margin-right:10px;" /&gt;Rails for &lt;span class="caps"&gt;PHP&lt;/span&gt; Developers (2008)&lt;br /&gt;
Derek DeVries/Mike Naberezny&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 2.0&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/17/original/repensando_a_web_com_rails.jpg" align="left" style="margin-right:10px;" /&gt;Repensando a Web com Rails (2006)&lt;br /&gt;
Fabio Akita&lt;br /&gt;
Português&lt;br /&gt;
Rails 1.1.2&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/15/original/rails_para_desenvolvedores_java.jpg" align="left" style="margin-right:10px;" /&gt;Rails para Desenvolvedores Java (2007)&lt;br /&gt;
Stuart Halloway/Justin Gehtland&lt;br /&gt;
Português&lt;br /&gt;
Rails 1.1&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/18/original/ruby_on_rails_executando.jpg" align="left" style="margin-right:10px;" /&gt;Ruby on Rails: Executando (2006)&lt;br /&gt;
Curt Hibbs/Bruce Tate&lt;br /&gt;
Português&lt;br /&gt;
Rails 1.1&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/12/original/ajax_on_rails.jpg" align="left" style="margin-right:10px;" /&gt;Ajax on Rails (2007)&lt;br /&gt;
Scott Raymond&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 1.1&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/14/original/rails_cookbook.jpg" align="left" style="margin-right:10px;" /&gt;Rails Cookbook (2007)&lt;br /&gt;
Rob Orsini&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 1.2&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/system/assets/13/original/beginning_rails.png" align="left" style="margin-right:10px;" /&gt;Beginning Rails (2007)&lt;br /&gt;
Cloves Carneiro Jr./Jeffrey Allan Hardy&lt;br /&gt;
Inglês&lt;br /&gt;
Rails 1.2.3&lt;/p&gt;
&lt;p&gt;&lt;br style="clear:both" /&gt;&lt;/p&gt;
&lt;p&gt;Pode-se ver que a oferta é grande mas as versões não são as mais atuais. Minha sugestão: se não tiver acesso a um livro mais recente, aprenda com a versão do livro que você tem (e baixe a versão do Rails correspondente), e depois veja quais foram as alterações de uma versão para a outra.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/2QImjcV3z20" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/5/27/livros-de-rails-e-suas-versoes</feedburner:origLink></entry>
  <entry><title type="text">Links for 2008-08-06 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/H22USKAVYHg/shadow11" /><updated>2008-08-07T00:00:00-07:00</updated><id>http://del.icio.us/shadow11#2008-08-06</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://wiki.dreamhost.com/PHP.ini"&gt;PHP.ini - DreamHost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.railsinside.com/tips/65-how-to-detect-and-fix-slow-rails-requests.html"&gt;How to Detect and Fix Slow Rails Requests&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/H22USKAVYHg" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/shadow11#2008-08-06</feedburner:origLink></entry><entry><title type="text">Links for 2008-08-05 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/ew-KUylBtjc/shadow11" /><updated>2008-08-06T00:00:00-07:00</updated><id>http://del.icio.us/shadow11#2008-08-05</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mikenaberezny.com/2007/09/04/faster-tdd-with-stakeout-rb/"&gt;Mike Naberezny - Faster TDD with Stakeout.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.insoshi.com/2008/07/03/a-rails-21-case-study-upgrading-the-insoshi-social-networking-platform/"&gt;A Rails 2.1 case study: upgrading the Insoshi social networking platform &amp;laquo; Insoshi Ruby on Rails blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/ew-KUylBtjc" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/shadow11#2008-08-05</feedburner:origLink></entry><entry><title type="text">Links for 2008-07-30 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/_V5CHZa_fdc/shadow11" /><updated>2008-07-31T00:00:00-07:00</updated><id>http://del.icio.us/shadow11#2008-07-30</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://malsup.com/jquery/form/"&gt;jQuery Form Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/_V5CHZa_fdc" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/shadow11#2008-07-30</feedburner:origLink></entry><entry><title type="text">Links for 2008-07-23 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/leB5KZSOlHY/shadow11" /><updated>2008-07-24T00:00:00-07:00</updated><id>http://del.icio.us/shadow11#2008-07-23</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.daviferreira.com/blog/2007/08/12/interface-drag-and-drop-com-jquery.html"&gt;Davi Ferreira blog! &amp;raquo; Interface drag and drop com jQuery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/leB5KZSOlHY" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/shadow11#2008-07-23</feedburner:origLink></entry><entry><title type="text">Links for 2008-07-19 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/Nn3DN8xT2Cs/shadow11" /><updated>2008-07-20T00:00:00-07:00</updated><id>http://del.icio.us/shadow11#2008-07-19</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://leandrovieira.com/projects/jquery/lightbox/"&gt;jQuery lightBox plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/Nn3DN8xT2Cs" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/shadow11#2008-07-19</feedburner:origLink></entry><entry><title type="text">Links for 2008-07-18 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/WLjW3q8iaPw/shadow11" /><updated>2008-07-19T00:00:00-07:00</updated><id>http://del.icio.us/shadow11#2008-07-18</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://davehauenstein.com/blog/archives/28"&gt;Dave Hauenstein &amp;raquo; Another In-Place Editor, jQuery Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/WLjW3q8iaPw" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/shadow11#2008-07-18</feedburner:origLink></entry><entry><title type="text">Links for 2008-06-26 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/jKzo-3DIeJg/shadow11" /><updated>2008-06-27T00:00:00-07:00</updated><id>http://del.icio.us/shadow11#2008-06-26</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://dan.drydog.com/apache2php.html"&gt;Apache 2 and PHP 5 (mod_php) on Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/jKzo-3DIeJg" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/shadow11#2008-06-26</feedburner:origLink></entry><entry>
    <id>tag:blog.shadowmaru.org,2005:Post/11</id>
    <published>2008-05-09T21:57:08Z</published>
    <updated>2008-05-13T22:21:16Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/pEhSf9nWnrA/de-mudança-de-provedor" rel="alternate" />
    <title>De mudança (de provedor)</title>
    <content type="html">&lt;p&gt;&lt;img src="http://www.railsplayground.com/images/logos/rails_playground.jpg" align="left" style="margin-right:10px;" /&gt;Quick note: Este blog deve ficar fora do ar por algum tempo &amp;mdash; espero que pouco &amp;mdash; pois abri uma conta na &lt;a href="http://railsplayground.net"&gt;Rails Playground&lt;/a&gt; e vou tentar migrar meus sites neste fim de semana.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;EDIT&lt;/span&gt;: blog já movido. Fora um pequeno problema com o fcgi (aqui eles usam mod_fcgid) está tudo rodando beleza!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/pEhSf9nWnrA" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/5/9/de-mudança-de-provedor</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/10</id>
    <published>2008-04-15T21:15:47Z</published>
    <updated>2008-04-15T21:22:02Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/8b8Y0kxkWqU/name-that-code" rel="alternate" />
    <title>Name That Code</title>
    <content type="html">&lt;p&gt;&lt;a href="http://www.oneplusyou.com/q/v/code"&gt;&lt;img border="0" src="http://www.oneplusyou.com/q/img/badges/code_100.jpg" alt="Name That Code" /&gt;&lt;/a&gt;&lt;br /&gt;Created by &lt;a href="http://www.oneplusyou.com/"&gt;OnePlusYou&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Por esta eu não esperava. Já estudei diversas linguagens de programação, mas programar pra valer, só Perl, &lt;span class="caps"&gt;PHP&lt;/span&gt; e Ruby on Rails mesmo. Pelo visto, conheço (mesmo não gostando &amp;#8211; essa foi direta pro &lt;span class="caps"&gt;ASP&lt;/span&gt;) mais linguagens do que imaginava.&lt;/p&gt;
&lt;p&gt;Obs: uma delas eu chutei. Mas foi por eliminação.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/8b8Y0kxkWqU" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/4/15/name-that-code</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/9</id>
    <published>2008-04-11T19:57:58Z</published>
    <updated>2008-04-11T19:58:42Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/3MIYs1AgIbA/rails-com-mod_rails-para-apache" rel="alternate" />
    <title>Rails com mod_rails para Apache</title>
    <content type="html">&lt;p&gt;Um dos maiores motivos para resistência à mudança dos nossos sistemas na empresa, de &lt;span class="caps"&gt;PHP&lt;/span&gt; para Ruby on Rails, sempre foi o &lt;i&gt;deploy&lt;/i&gt;. Convenhamos, colocar um sistema Rails em produção não é a coisa mais fácil do mundo. FastCGI, Mongrel, Mongrel Cluster, Apache&amp;#8230;&lt;/p&gt;
&lt;p&gt;Agora a coisa parece mudar de figura e ficar tão fácil como o mod_php. Foi lançado hoje o &lt;a href="http://www.modrails.com/"&gt;Phusion Passenger&lt;/a&gt; (ou mod_rails), um módulo do &lt;a href="http://httpd.apache.org"&gt;Apache&lt;/a&gt; que torna o &lt;i&gt;deploy&lt;/i&gt; tão simples como copiar os arquivos pro servidor e configurar o caminho no Apache.&lt;/p&gt;
&lt;p&gt;Acredito que a partir de agora a adesão ao Rails (principalmente por parte das empresas de &lt;i&gt;hosting&lt;/i&gt;) será ainda maior&amp;#8230;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/3MIYs1AgIbA" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/4/11/rails-com-mod_rails-para-apache</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/8</id>
    <published>2008-02-20T20:25:03Z</published>
    <updated>2009-08-11T17:10:58Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/MdyAOLgi6Mc/peepcode-unlimited-screencasts-sobre-rails-por-um-ano" rel="alternate" />
    <title>PeepCode Unlimited - Screencasts sobre Rails, por um ano</title>
    <content type="html">&lt;p&gt;&lt;img src="/system/assets/7/original/peepcode.png" align="left" style="margin-right:10px;" /&gt;&lt;a href="http://peepcode.com"&gt;PeepCode&lt;/a&gt; é um site que vende screencasts e PDFs sobre Rails e assuntos relacionados (como &lt;span class="caps"&gt;GIT&lt;/span&gt;, prototype.js e RSpec). Você pode, por apenas US$9, comprar um screencast de altíssima qualidade (tanto de conteúdo como áudio e vídeo) e aprender sobre algum aspecto do Rails. Existem pacotes de 5 e 10 screencasts/PDFs, que custam US$40 e US$70, respectivamente. Eu mesmo já comprei 6 screencasts e recomendo.&lt;/p&gt;
&lt;p&gt;Hoje, Geoffrey Grosenbach anunciou um novo pacote de assinatura: o &lt;a href="http://peepcode.com/products/unlimited"&gt;PeepCode Unlimited&lt;/a&gt;. O pacote custa US$139 e inclui todos os screencasts e PDFs já publicados e tudo o que for publicado por um ano. Para você ter uma idéia, o primeiro screencast foi publicado em dezembro de 2006, e já temos 17 screencasts e 4 livros em &lt;span class="caps"&gt;PDF&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Para você que pretende entrar de cabeça no mundo Rails, esta é uma ótima oportunidade, já que o preço sobe para US$149 em 21/03/2008.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;EDIT&lt;/span&gt; 20/03/2008: Acabei de comprar o meu! Já baixei RESTful Rails, Caching e &lt;span class="caps"&gt;RJS&lt;/span&gt; templates. Tenho já o bastante para o feriado :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/MdyAOLgi6Mc" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/2/20/peepcode-unlimited-screencasts-sobre-rails-por-um-ano</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/7</id>
    <published>2008-01-24T13:39:55Z</published>
    <updated>2009-08-11T15:55:32Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/CHYrL7YEXP4/aprenda-a-programar" rel="alternate" />
    <title>Aprenda a Programar</title>
    <content type="html">&lt;p&gt;&lt;img src="/system/assets/6/original/LTP_cover.jpg" alt="Capa do livro Learn to Program, por Chris Pine" align="left" hspace="10" vspace="5" style="margin-right:10px;" /&gt; Você é webdesigner e tem dificuldades de entender todo aquele código que o programador deixou? Você trabalha com suporte de software e não tem a menor idéia de como ele foi feito? Você sempre quis saber como esses maravilhosos programadores (ok, agora exagerei) conseguem fazer as coisas funcionarem? Seus problemas acabaram! (hehe).&lt;/p&gt;
&lt;p&gt;Agora sério, deixa eu divulgar aqui esse excelente livro feito por Chris Pine, que eu, entre muitos outros programadores, ajudei a traduzir/revisar. O livro chama-se &lt;a href="http://aprendaaprogramar.rubyonrails.pro.br/introducao"&gt;Aprenda a Programar&lt;/a&gt; e foi traduzido graças à iniciativa de &lt;a href="http://www.akitaonrails.com"&gt;Fabio Akita&lt;/a&gt; e com a ajuda da comunidade Rails-br.&lt;/p&gt;
&lt;p&gt;Recomendo esse livro para uma introdução ao mundo da programação. A linguagem é descontraída e fácil de entender. Até os webdesigners vão entender &amp;lt;/maldade&amp;gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/CHYrL7YEXP4" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2008/1/24/aprenda-a-programar</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/4</id>
    <published>2007-12-19T20:52:50Z</published>
    <updated>2007-12-19T21:29:21Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/OIOXZTqXEyc/tirando-os-acentos" rel="alternate" />
    <title>Tirando os acentos</title>
    <content type="html">&lt;p&gt;Recentemente tive que fazer uma rotina para tirar os acentos de um arquivo texto (fornecido pelo cliente) antes de serem processados, pois as diferenças de charset (tipicamente &lt;span class="caps"&gt;ISO&lt;/span&gt;-8859-1 vs. &lt;span class="caps"&gt;UTF&lt;/span&gt;-8) levavam a linha a ter um comprimento maior que o esperado. Assim, o script que interpretava a linha entendia tudo errado, pois é baseado em comprimento de strings. Procurei muito na internet (quero dizer, Google) mas não achei nada que pudesse resolver o problema. Então fui explorando a documentação do Ruby e experimentando no &lt;span class="caps"&gt;IRB&lt;/span&gt; até chegar nessa solução:&lt;/p&gt;
&lt;filter:code lang="ruby"&gt;
&lt;p&gt;f = File.open(filename,&amp;#8216;r&amp;#8217;)&lt;/p&gt;
&lt;p&gt;f.each_line do |line|&lt;br /&gt;
	line = line.strip&lt;br /&gt;
	next if line.length == 0&lt;/p&gt;
&lt;p&gt;lines.push line&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;replace accented characters to avoid charset conflicts&lt;br /&gt;
        line = line.tr(&amp;#8220;\301\300\303\302\341\340\343\342&amp;#8221;,&amp;#8216;a&amp;#8217;)&lt;br /&gt;
        line = line.tr(&amp;#8220;\311\312\351\352&amp;#8221;,&amp;#8216;e&amp;#8217;)&lt;br /&gt;
        line = line.tr(&amp;#8220;\315\355&amp;#8221;,&amp;#8216;i&amp;#8217;)&lt;br /&gt;
        line = line.tr(&amp;#8220;\323\325\324\363\365\364&amp;#8221;,&amp;#8216;o&amp;#8217;)&lt;br /&gt;
        line = line.tr(&amp;#8220;\332\372&amp;#8221;,&amp;#8216;u&amp;#8217;)&lt;br /&gt;
        line = line.tr(&amp;#8220;\307\347&amp;#8221;,&amp;#8216;c&amp;#8217;)&lt;br /&gt;
        line = line.tr(&amp;#8220;\321\361&amp;#8221;,&amp;#8216;n&amp;#8217;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;# processamento da linha aqui&lt;br /&gt;
end&lt;/p&gt;
&lt;/filter:code&gt;
&lt;p&gt;Não ficou lá muito elegante, mas pelo menos pra mim funcionou. Alguma sugestão de refactoring?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/OIOXZTqXEyc" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2007/12/19/tirando-os-acentos</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/3</id>
    <published>2007-11-26T18:54:10Z</published>
    <updated>2007-12-07T12:46:42Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/TaFUPxfqjdg/sou-78-por-cento-geek-e-90-por-cento-viciado-em-cafe" rel="alternate" />
    <title>Sou 78% geek e 90% viciado em café. Novidade?</title>
    <content type="html">&lt;p&gt;Para mim não é novidade alguma. Mas se você quiser saber o quanto geek você é ou o quanto você precisa de um café neste momento, siga os links:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.justsayhi.com/bb/geek" style="text-decoration: none; background: url('http://assets.justsayhi.com/badges/339/467/geek_badge1_green.4uqdvaevqb.jpg') no-repeat; display: block; width: 268px; height: 82px;"&gt;&lt;span style="display: block; padding-left: 125px; padding-top: 28px; color: #000; font-family: Arial; font-size: 22px;"&gt;78% Geek&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div style="background: url('http://assets.justsayhi.com/badges/394/728/coffee.0r90iqkf48.jpg') no-repeat; width: 265px; height: 211px;"&gt;&lt;a style="display: block; text-align: center; padding-top: 167px;  height: 35px; font-size: 16px; font-family: Arial; text-decoration: none; color: #fff;" href="http://www.justsayhi.com/bb/view/how-addicted-to-coffee-are-you"&gt;I am 90% Addicted to Coffee&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/TaFUPxfqjdg" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2007/12/7/sou-78-por-cento-geek-e-90-por-cento-viciado-em-cafe</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/2</id>
    <published>2007-11-07T14:44:32Z</published>
    <updated>2009-08-11T15:53:46Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/k_b9qJgMksg/o-tema" rel="alternate" />
    <title>O Tema</title>
    <content type="html">&lt;p&gt;&lt;img src="/system/assets/5/original/textmate.png" align="left" hspace="5" /&gt;O tema que eu coloquei aqui neste Mephisto foi baseado na &lt;em&gt;syntax highlighting&lt;/em&gt; de Ruby do &lt;a href="http://macromates.com"&gt;TextMate&lt;/a&gt;, na minha opinião o melhor editor de texto que eu já usei para programação. Mas eu estou achando ele meio escuro, o que acham? Talvez clarear um pouco o texto&amp;#8230;. não sei, não sou designer.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;: já mudei a cor do texto normal para #777, acho que ficou um pouco melhor.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/k_b9qJgMksg" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2007/11/7/o-tema</feedburner:origLink></entry>
  <entry>
    <id>tag:blog.shadowmaru.org,2005:Post/1</id>
    <published>2007-11-01T21:03:22Z</published>
    <updated>2007-11-12T15:29:48Z</updated>
    <link type="text/html" href="http://feedproxy.google.com/~r/shadowmaru/~3/0s-Q_vBudSc/first-post" rel="alternate" />
    <title>First Post</title>
    <content type="html">&lt;p&gt;Oh não! Outro blog para ficar desatualizado!&lt;/p&gt;
&lt;p&gt;Espero que não.&lt;/p&gt;
&lt;p&gt;Como dessa vez espero falar sobre mais assuntos, e não apenas finanças (como em &lt;a href="http://conscienciafinanceira.com.br"&gt;Consciência Financeira&lt;/a&gt;) ou o meu casamento (em &lt;a href="http://casamento.yasuda.eti.br"&gt;casamento.yasuda.eti.br&lt;/a&gt; &amp;#8211; na verdade eu não escrevi nada no blog, foi a Gizela &amp;#8211; eu só fiz o site), acho que este blog não vai ficar desatualizado. Caso fique, siga-me no &lt;a href="http://twitter.com/shadow11"&gt;twitter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O conteúdo? Sei lá, qualquer coisa. Na verdade eu instalei mais pra testar o &lt;a href="http://mephistoblog.com"&gt;Mephisto&lt;/a&gt;, que é feito em &lt;a href="http://boo-box.com/link/aff:submarinoid/uid:173710/tags:ruby rails" class="bbli"&gt;Ruby on Rails&amp;lt;img src=&amp;#8220;http://boo-box.com/bbli&amp;#8221; alt=&amp;#8220;[bb]&amp;#8221; class=&amp;#8220;bbic&amp;#8221; /&lt;/a&gt;, meu novo vício tecnológico. Mas quem sabe aparece algo interessante?&lt;/p&gt;
&lt;script src="http://stable.boo-box.com" type="text/javascript"&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/shadowmaru/~4/0s-Q_vBudSc" height="1" width="1"/&gt;</content>
    <author>
      <name>
      </name>
    </author>
  <feedburner:origLink>http://blog.shadowmaru.org/2007/11/1/first-post</feedburner:origLink></entry>
</feed>
