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

<channel>
	<title>Lucas Caton</title>
	<atom:link href="http://blog.lucascaton.com.br/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lucascaton.com.br</link>
	<description>Ruby, Rails, evolution and freedom</description>
	<lastBuildDate>Thu, 09 May 2013 01:34:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>15º Encontro Locaweb de Profissionais de Internet</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/05/08/15o-encontro-locaweb-de-profissionais-de-internet/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/05/08/15o-encontro-locaweb-de-profissionais-de-internet/#comments</comments>
		<pubDate>Thu, 09 May 2013 01:34:05 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[locaweb]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1749</guid>
		<description><![CDATA[Ontem participei do 15º Encontro Locaweb em Curitiba-PR. O evento foi interessante e bem organizado e não estou dizendo isso só porque trabalho aqui :-) Assisti as seguintes palestras: Fábio Ricotta &#8211; &#8220;Usando SEO para alavancar suas visitas e negócios&#8221; Diego Eis &#8211; &#8220;Guia de Sobrevivência&#8221; Murilo Gun &#8211; &#8220;O segredo do fracasso&#8221; Silvio Meira [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/05/Screen-Shot-2013-05-08-at-10.12.49-PM.png" alt="Screen Shot 2013-05-08 at 10.12.49 PM" width="637" height="190" class="aligncenter size-full wp-image-1751" /></p>
<p>Ontem participei do <a href="http://www.encontrolocaweb.com.br/" target="_blank">15º Encontro Locaweb</a> em Curitiba-PR. O evento foi interessante e bem organizado e não estou dizendo isso só porque trabalho aqui :-)</p>
<p>Assisti as seguintes palestras:</p>
<ul>
<li>Fábio Ricotta &#8211; &#8220;Usando SEO para alavancar suas visitas e negócios&#8221;</li>
<li>Diego Eis &#8211; &#8220;Guia de Sobrevivência&#8221;</li>
<li>Murilo Gun &#8211; &#8220;O segredo do fracasso&#8221;</li>
<li>Silvio Meira &#8211; &#8220;Empreendedorismo Digital&#8221;</li>
<li>Luli Radfahrer &#8211; &#8220;Internet das coisas, computação em nuvem e tendências 2013&#8243;</li>
</ul>
<p>Todas foram boas, mas as apresentações do Ricotta, do Eis e do Luli me surpreenderam, foram muito boas mesmo!</p>
<p>Tiramos essa foto aí na hora do almoço, no Jardim Botânico. Da esquerda pra direita: Ítalo Oliveira, Diego Eis, eu, Bruno Batalha e Marcos Oliveira:</p>
<p><a href="http://blog.lucascaton.com.br/wp-content/uploads/2013/05/jardim-botanico-curitiba.jpg" target="_blank"><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/05/jardim-botanico-curitiba.jpg" alt="jardim botanico curitiba" width="1000" height="871" class="aligncenter size-full wp-image-1758" /></a></p>
<p>Que venha o 16º encontro! :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/05/08/15o-encontro-locaweb-de-profissionais-de-internet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Screencast #2 – Interessante plugin &#8220;vim-abolish&#8221;</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/04/29/screencast-2-interessante-plugin-vim-abolish/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/04/29/screencast-2-interessante-plugin-vim-abolish/#comments</comments>
		<pubDate>Mon, 29 Apr 2013 14:28:12 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[screencasts]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1738</guid>
		<description><![CDATA[Esse é o segundo screencast que eu faço para o blog e novamente é sobre Vim. Esse ficou bem mais curto (tem apenas 5 minutos) e vai direto ao ponto. Espero que gostem! Se quiserem ver o primeiro, o link é: http://blog.lucascaton.com.br/index.php/2011/12/13/screencast-1-17-dicas-para-o-vim/ Links relevantes: vim-abolish Meus vimfiles Screencast: (caso não consiga ver o vídeo, clique [...]]]></description>
				<content:encoded><![CDATA[<p>Esse é o segundo screencast que eu faço para o blog e novamente é sobre Vim.<br />
Esse ficou bem mais curto (tem apenas 5 minutos) e vai direto ao ponto. Espero que gostem!</p>
<p>Se quiserem ver o primeiro, o link é: <a href="http://blog.lucascaton.com.br/index.php/2011/12/13/screencast-1-17-dicas-para-o-vim/" target="_blank">http://blog.lucascaton.com.br/index.php/2011/12/13/screencast-1-17-dicas-para-o-vim/</a></p>
<p>Links relevantes:</p>
<ul>
<li><a href="https://github.com/tpope/vim-abolish" target="_blank">vim-abolish</a></li>
<li><a href="https://github.com/lucascaton/vimfiles" target="_blank">Meus vimfiles</a></li>
</ul>
<p>Screencast:<br />
<iframe width="640" height="360" src="http://www.youtube.com/embed/OWC3KsXcOCU" frameborder="0" allowfullscreen></iframe><br />
<center>(caso não consiga ver o vídeo, <a href="http://youtu.be/OWC3KsXcOCU" target="_blank">clique aqui</a>)</center></p>
<p>Por favor, mandem feedback sobre o que acharam!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/04/29/screencast-2-interessante-plugin-vim-abolish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Projeto &#8220;MyPodcasts.info&#8221;</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/04/21/projeto-mypodcasts-info/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/04/21/projeto-mypodcasts-info/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 21:56:48 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[meus projetos]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1725</guid>
		<description><![CDATA[Eu sou um cara que gosta muito de escutar podcasts. Escuto vários, sobre variados temas, alguns em português, outros em inglês, alguns sobre áreas totalmente diferentes da que eu trabalho, alguns nostálgicos, alguns pra melhorar meu inglês, etc. E sempre que encontro com alguém e descubro que a pessoa também escuta podcasts, rola as perguntas [...]]]></description>
				<content:encoded><![CDATA[<p>Eu sou um cara que gosta muito de escutar podcasts. Escuto vários, sobre variados temas, alguns em português, outros em inglês, alguns sobre áreas totalmente diferentes da que eu trabalho, alguns nostálgicos, alguns pra melhorar meu inglês, etc. E sempre que encontro com alguém e descubro que a pessoa também escuta podcasts, rola as perguntas sobre qual escuta, sobre o que se trata, quais amigos em comum escutam, qual o nível de qualidade, entre outras dúvidas. Foi aí que surgiu a idéia de criar o site <a href="http://mypodcasts.info/" target="_blank">MyPodcasts.info</a>, um site onde você pode cadastrar tudo isso e no final ter uma URL publica para passar para os interessados nos podcasts que você escuta.</p>
<p>Há 2 meses atrás eu o coloquei no ar e logo em seguida o liberei como open-source: <a href="https://github.com/lucascaton/mypodcasts.info" target="_blank">github.com/lucascaton/mypodcasts.info</a>. Então, sintam-se a vontade para usar o site e contribuir com ele.</p>
<p>Seguem alguns screenshots:</p>
<p><a href='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.38.43-PM.png' target='_blank'><img src='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.38.43-PM.png' alt='Screen Shot 2013-04-21 at 6.38.43 PM' width='1375' height='1553' class='aligncenter size-full wp-image-1728' /></a></p>
<p><a href='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.44.15-PM.png' target='_blank'><img src='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.44.15-PM.png' alt='Screen Shot 2013-04-21 at 6.44.15 PM' width='1155' height='1544' class='aligncenter size-full wp-image-1730' /></a></p>
<p><a href='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.44.50-PM.png' target='_blank'><img src='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.44.50-PM.png' alt='Screen Shot 2013-04-21 at 6.44.50 PM' width='1418' height='1223' class='aligncenter size-full wp-image-1731' /></a></p>
<p>Ah sim! O site é (mais ou menos) responsivo:</p>
<p><a href='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.48.11-PM.png' target='_blank'><img src='http://blog.lucascaton.com.br/wp-content/uploads/2013/04/Screen-Shot-2013-04-21-at-6.48.11-PM.png' alt='Screen Shot 2013-04-21 at 6.48.11 PM' width='514' height='970' class='aligncenter size-full wp-image-1733' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/04/21/projeto-mypodcasts-info/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interesting script written in Ruby: &#8220;The Globe&#8221;</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/04/19/interesting-script-written-in-ruby-the-globe/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/04/19/interesting-script-written-in-ruby-the-globe/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 23:35:03 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1716</guid>
		<description><![CDATA[Minutes ago I received this link from some friends. It’s very interesting (and crazy). Create an empty ruby file, paste this content and save as a.rb. After that, just run this script using:]]></description>
				<content:encoded><![CDATA[<p>Minutes ago I received <a href="http://d.hatena.ne.jp/ku-ma-me/20100905/p1" target="_blank">this link</a> from some friends. It’s very interesting (and crazy).</p>
<p>Create an empty ruby file, paste this content and save as <strong>a.rb</strong>.</p>
<pre class="brush: ruby; title: ; notranslate">v=0000;eval$s=%q~d=%!^Lcf&lt;LK8,                  _@7gj*LJ=c5nM)Tp1g0%Xv.,S[&lt;&gt;YoP
4ZojjV)O&gt;qIH1/n[|2yE[&gt;:ieC       &quot;%.#%  :::##&quot;       97N-A&amp;Kj_K_&gt;&lt;wS5rtWk@*a+Y5
yH?b[F^e7C/56j|pmRe+:)B     &quot;##%      ::##########&quot;     O98(Zh)'Iof*nm.,$C5Nyt=
PPu01Avw^&lt;IiQ=5$'D-y?    &quot;##:         ###############&quot;    g6`YT+qLw9k^ch|K'),tc
6ygIL8xI#LNz3v}T=4W    &quot;#            #.   .####:#######&quot;    lL27FZ0ij)7TQCI)P7u
}RT5-iJbbG5P-DHB&lt;.   &quot;              ##### # :############&quot;   R,YvZ_rnv6ky-G+4U'
$*are@b4U351Q-ug5   &quot;              #######################&quot;   00x8RR%`Om7VDp4M5
PFixrPvl&amp;&lt;p[]1IJ   &quot;              ############:####  %#####&quot;   EGgDt8Lm#;bc4zS^
y]0`_PstfUxOC(q   &quot;              .#############:##%   .##  .&quot;   /,}.YOIFj(k&amp;q_V
zcaAi?]^lCVYp!;  &quot; %%            .################.     #.   &quot;  ;s=&quot;v=%04o;ev&quot;%
(;v=(v-($*+[45,  &quot;:####:          :##############%       :   &quot;  ])[n=0].to_i;)%
360)+&quot;al$s=%q#{  &quot;%######.              #########            &quot;  ;;&quot;%c&quot;%126+$s&lt;&lt;
126}&quot;;d.gsub!(/  &quot;##########.           #######%             &quot;  |\s|&quot;.*&quot;/,&quot;&quot;);;
require&quot;zlib&quot;||  &quot;###########           :######.             &quot;  ;d=d.unpack&quot;C*&quot;
d.map{|c|n=(n||  &quot;:#########:           .######: .           &quot;  )*90+(c-2)%91};
e=[&quot;%x&quot;%n].pack   &quot; :#######%           :###### #:          &quot;   &amp;&amp;&quot;H*&quot;;e=Zlib::
Inflate.inflate(   &quot;  ######%           .####% ::          &quot;   &amp;&amp;e).unpack(&quot;b*&quot;
)[0];22.times{|y|   &quot;  ####%             %###             &quot;   ;w=(Math.sqrt(1-(
(y*2.0-21)/22)**(;   &quot; .###:             .#%             &quot;   ;2))*23).floor;(w*
2-1).times{|x|u=(e+    &quot; %##                           &quot;    )[y*z=360,z]*2;u=u[
90*x/w+v+90,90/w];s[(    &quot; #.                        &quot;    ;y*80)+120-w+x]=(&quot;&quot;&lt;&lt;
32&lt;&lt;&quot;.:%#&quot;)[4*u.count((     &quot; .                   &quot;     ;&quot;0&quot;))/u.size]}};;puts\
s+&quot;;_ The Qlobe#{&quot; &quot;*18+ (       &quot;#  :#######&quot;       ;&quot;Copyright(C).Yusuke End\
oh, 2010&quot;)}&quot;;exit~;_ The Qlobe                  Copyright(C).Yusuke Endoh, 2010</pre>
<p>After that, just run this script using:</p>
<pre class="brush: bash; title: ; notranslate">while true; do clear; ruby a.rb | tee b.rb; sleep 0.2; mv -f b.rb a.rb; done</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/04/19/interesting-script-written-in-ruby-the-globe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tenha orgulho ou f&#8230;-se</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/04/09/tenha-orgulho-ou-f-se/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/04/09/tenha-orgulho-ou-f-se/#comments</comments>
		<pubDate>Tue, 09 Apr 2013 16:09:08 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[qualidade de código]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1698</guid>
		<description><![CDATA[(Esse post é uma tradução (autorizada) do artigo &#8220;Take pride or f&#8212; it&#8221; do Rob Heaton) O arquivo vazio &#8220;sem_titulo.txt&#8221; brilhando no seu editor de código só pode significar uma coisa. É hora de criar uma nova funcionalidade. A última funcionalidade que você desenvolveu começou muito bem, com uma arquitetura esculpida tão elegante e requintada [...]]]></description>
				<content:encoded><![CDATA[<p><center><span style='color: #808080;'><em>(Esse post é uma tradução (<a href="https://twitter.com/robjheaton/status/321499749666672641" target="_blank">autorizada</a>) do artigo <a href="http://robertheaton.com/2013/03/27/take-pride-or-f----it/" target="_blank">&#8220;Take pride or f&#8212; it&#8221;</a> do Rob Heaton)</em></span></center></p>
<hr /></p>
<p>O arquivo vazio &#8220;sem_titulo.txt&#8221; brilhando no seu editor de código só pode significar uma coisa. É hora de criar uma nova funcionalidade.</p>
<p>A última funcionalidade que você desenvolveu começou muito bem, com uma arquitetura esculpida tão elegante e requintada que te fez chorar um pouco quando ninguém estava olhando. Mas as coisas mudaram e no final ficou um lixo. Você não estava particularmente orgulhoso de nada e agora está feliz apenas porque isso vai sair do seu caminho. &#8220;Mas tudo vai ser perfeito dessa vez!&#8221; você diz a si mesmo e mais uma vez ansiosamente começa a trabalhar. Um pouco mais tarde você olha ao redor e sua funcionalidade que já está meio pronta já está caindo aos pedaços, está em chamas. &#8220;Droga!&#8221; &#8211; você diz.</p>
<p>Eu passei por isso em muitas funcionalidades e projetos. Estou cansado disso e eu sei por que isso acontece. Eu escrevo codigo bom e crio um bom produto quando eu me sindo orgulhoso do que eu estou fazendo. Esse sentimento pode vir por vários motivos &#8211; uma equipe que valoriza bom código, clientes os quais estão desesperados para testar uma nova funcionalidade ou uma sensação de habilidade e crença que estou me divertindo fazendo algo bom. Idependente de de qual seja o motivo, se ele não existir, o que eu estou fazendo ficará bem ruim.</p>
<p>Quando eu perco o orgulho de alguma coisa, eu paro de me preocupar se isso ficará bom ou não. O único valor que isso terá para mim é não ter mais que mexer nisso um dia. Isso sempre começa quando estragamos um pequeno trecho do código, mas apenas isso já é o suficiente. A <a href="http://pt.wikipedia.org/wiki/Caixa_de_Pandora" target="_blank">caixa de Pandora</a> foi aberta e a sua nova funcionalidade está infectada. Eu estrago o próximo trecho de código com apenas um pouco de remorso e a partir desse ponto, eu não vou mais vou me importar com isso.</p>
<p>Porque eu sei que você tem que ENTREGAR, que os usuários não se importam como está o seu código, que essa funcionalidade é REALMENTE CHATA e eu só quero começar outra. Então não importa se meus models conhecem a lógica das minhas views, porque levaria 20 minutos que NÓS NÃO TEMOS para resolver isso. Estou fugindo das regras, mas é somente em um ou dois métodos.</p>
<p>Mas isso nunca acaba aí. Essa funcionalidade, ou talvez o produto inteiro, estejam contaminados. Não existe mais nada para se ter orgulho. Não existe nenhuma demonstração de habilidade. Não existe uma forma de fazer que os dados parseados pelo módulo que eu acabei de escrever fiquem legíveis, porque quem vai ler com certeza não entenderá de onde os dados vem. Eu já liberei os cães do inferno e cobri todo o meu código com bacon.</p>
<p>Perder o orgulho do que você faz te transforma em um zumbi, cujo objetivo é, além de ingerir cérebros, é terminar logo a nova funcionalidade. Isso vai acontecer, de qualquer forma. E exceto se você conseguir ter orgulho novamente, esse código não vai ficar bonito. Você tem que lembrar como isso era antes, no começo, há muito tempo atrás. Quando seus controllers eram pequenos e seus models não foram cobertos por ácidos e cacos de vidros. Pense bastante. Pense novamente.</p>
<p>Para minha redenção mortos-vivos, eu tenho que fazer as pazes com o que eu fiz ou então levantar e fazer uma pausa. Então, com a cabeça limpa e reabastecido com bom senso, eu tenho que decidir se quero fazer as coisas direito. Se eu não puder ou não fizer, então essa nova funcionalidade estará condenada e eu devo levar uma estaca até o seu coração e começar uma próxima coisa. Deixar o monstro a crescer e sofrer mutações não é uma opção.</p>
<p>Frequentemente eu sinto que estou gastando meu tempo fazendo coisas direito ou pelo menos de uma forma justificavelmente errada e isso é perdoável. Termine! Entregue! Mas um código ruim reduz a velocidade das coisas muito mais do que um bom código o faria. É muito fácil escrever alguma porcaria, ser forçado a escrever várias camadas de lixo em cima disso, gritar &#8220;espirito de LEAN STARTUP&#8221; para qualquer um que o questionar sobre o que você está fazendo. Você precisa de uma razão muito boa e imediata para escrever código ruim, ou seja, uma vaga sensação de pressão ou apatia não são suficientes.</p>
<p>Porque isso nunca acaba aí. E tão cedo quanto o T-virus seja produzido, você terá um apocalipse de código-zumbi em suas mãos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/04/09/tenha-orgulho-ou-f-se/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Projeto &#8220;time_clock&#8221;</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/03/16/projeto-time_clock/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/03/16/projeto-time_clock/#comments</comments>
		<pubDate>Sat, 16 Mar 2013 21:24:46 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[meus projetos]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1683</guid>
		<description><![CDATA[É comum na maioria das consultorias brasileiras de software, principalmente as que contratam funcionários através de regime PJ, solicitarem o relatório de horas trabalhadas mês a mês. Como esse era o meu caso no ano passado, eu criei um pequeno sistema para facilitar esse controle. Eu havia criando essa funcionalidade dentro do próprio código do [...]]]></description>
				<content:encoded><![CDATA[<p>É comum na maioria das consultorias brasileiras de software, principalmente as que contratam funcionários através de regime PJ, solicitarem o relatório de horas trabalhadas mês a mês. Como esse era o meu caso no ano passado, eu criei um pequeno sistema para facilitar esse controle.</p>
<p>Eu havia criando essa funcionalidade dentro do próprio código do meu site, mas como várias pessoas gostaram e me pediram o código, eu extraí o código para um projeto a parte e o liberei como open-source.</p>
<p>Sinta-se à vontade para usar, melhorar e divulgar:<br />
<a href="https://github.com/lucascaton/time_clock" target="_blank">https://github.com/lucascaton/time_clock</a></p>
<p>Seguem alguns screenshots:<br />
<img src="https://raw.github.com/lucascaton/time_clock/master/screenshots/screenshot_browser.png" alt="Screenshot browser" /><br />
<img src="https://raw.github.com/lucascaton/time_clock/master/screenshots/screenshot_iphone.png" alt="Screenshot iPhone" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/03/16/projeto-time_clock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby 2.0 lançado! O que há de novo?</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/02/26/ruby-2-0-lancado-o-que-ha-de-novo/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/02/26/ruby-2-0-lancado-o-que-ha-de-novo/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 18:17:15 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1668</guid>
		<description><![CDATA[A versão 2.0 do Ruby foi lançada há dois dias. Eu pensei em escrever um post listando e comentando cada uma das novas features, alterações, melhorias e incompatibilidades (quase nenhuma, felizmente) da linguagem. Mas acabei encontrando dois posts muito bons que fazem exatamente isso. O primeiro utilizando exemplos de códigos e o segundo são os [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/02/ruby2.png" alt="ruby2" width="300" height="225" class="aligncenter size-full wp-image-1675" /></p>
<p>A versão 2.0 do Ruby <a href="http://www.ruby-lang.org/en/news/2013/02/24/ruby-2-0-0-p0-is-released/" target="_blank">foi lançada há dois dias</a>.</p>
<p>Eu pensei em escrever um post listando e comentando cada uma das novas features, alterações, melhorias e incompatibilidades (quase nenhuma, felizmente) da linguagem. Mas acabei encontrando dois posts muito bons que fazem exatamente isso. O primeiro utilizando exemplos de códigos e o segundo são os slides do Urabe Shyouhe. Então, não deixe de ler:</p>
<p><a href="http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/" target="_blank">http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/</a><br />
<a href="https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0" target="_blank">https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/02/26/ruby-2-0-lancado-o-que-ha-de-novo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hellо, I am a compiler</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/02/23/hell%d0%be-i-am-a-compiler/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/02/23/hell%d0%be-i-am-a-compiler/#comments</comments>
		<pubDate>Sat, 23 Feb 2013 14:37:55 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[compiler]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1655</guid>
		<description><![CDATA[I copied this little text from a comment on the Stackoverflow website. I really enjoyed it ;) Hellо, I am a compiler. I just scanned thousands of lines of code while you were reading this sentence. I browsed through millions of possibilities of optimizing a single line of yours using hundreds of different optimization techniques [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/02/robot.jpg" alt="robot" width="250" height="269" class="aligncenter size-full wp-image-1661" /></p>
<p>I copied this little text from a <a href="http://stackoverflow.com/questions/2684364/why-arent-programs-written-in-assembly-more-often/2685541#2685541" target="_blank">comment</a> on the Stackoverflow website. I really enjoyed it ;)</p>
<blockquote><p>Hellо, I am a compiler.<br />
I just scanned thousands of lines of code while you were reading this sentence. I browsed through millions of possibilities of optimizing a single line of yours using hundreds of different optimization techniques based on a vast amount of academic research that you would spend years getting at. I won&#8217;t feel any embarrassment, not even a slight ick, when I convert a three-line loop to thousands of instructions just to make it faster. I have no shame to go to great lengths of optimization or to do the dirtiest tricks. And if you don&#8217;t want me to, maybe for a day or two, I&#8217;ll behave and do it the way you like. I can transform the methods I&#8217;m using whenever you want, without even changing a single line of your code. I can even show you how your code would look in assembly, on different processor architectures and different operating systems and in different assembly conventions if you&#8217;d like. Yes, all in seconds. Because, you know, I can; and you know, you can&#8217;t.</p>
<p>P.S. Oh, by the way you weren&#8217;t using half of the code you wrote. I did you a favor and threw it away.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/02/23/hell%d0%be-i-am-a-compiler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting root permissions on a file inside of Vim</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/02/22/getting-root-permissions-on-a-file-inside-of-vim/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/02/22/getting-root-permissions-on-a-file-inside-of-vim/#comments</comments>
		<pubDate>Fri, 22 Feb 2013 18:33:41 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1650</guid>
		<description><![CDATA[Sometimes you open a file that you need root permissions to save it. When it happen, you can close and reopen the Vim (with sudo) or you also can do: Thanks to @dlisboa for the tip.]]></description>
				<content:encoded><![CDATA[<p>Sometimes you open a file that you need root permissions to save it.<br />
When it happen, you can close and reopen the Vim (with <strong>sudo</strong>) or you also can do:</p>
<pre class="brush: plain; title: ; notranslate">:w !sudo tee %</pre>
<p>Thanks to <a href="https://twitter.com/dlisboa" target="_blank">@dlisboa</a> for the tip.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/02/22/getting-root-permissions-on-a-file-inside-of-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vim Users BR</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/02/05/vim-users-br/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/02/05/vim-users-br/#comments</comments>
		<pubDate>Wed, 06 Feb 2013 01:56:56 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1644</guid>
		<description><![CDATA[No mês passado, eu criei um grupo de discussões para usuários do editor Vim. A idéia por trás da criação do grupo é que os usuários pudessem se envolver, compartilhar e discutir coisas interessantes relacionadas à esse fantástico editor. Comentar uma dica nova, um plugin interessante ou alguma técnica útil que pouca gente conheça, etc&#8230; [...]]]></description>
				<content:encoded><![CDATA[<p>No mês passado, eu criei um grupo de discussões para usuários do editor Vim.</p>
<p>A idéia por trás da criação do grupo é que os usuários pudessem se envolver, compartilhar e discutir coisas interessantes relacionadas à esse fantástico editor. Comentar uma dica nova, um plugin interessante ou alguma técnica útil que pouca gente conheça, etc&#8230;</p>
<p>Segue o link do grupo:<br />
<a href="https://groups.google.com/forum/?fromgroups=#!forum/vim-users-br" target="_blank">https://groups.google.com/forum/?fromgroups=#!forum/vim-users-br</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/02/05/vim-users-br/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A simple way to deploy your Rails applications</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/01/25/a-simple-way-to-deploy-your-rails-applications/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/01/25/a-simple-way-to-deploy-your-rails-applications/#comments</comments>
		<pubDate>Fri, 25 Jan 2013 22:24:40 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1623</guid>
		<description><![CDATA[Sometimes I prefer to use a simpler way to deploy my Rails applications instead to install and configure any tool (e.g.: capistrano). A very simple way to do this is to create a shell script within the /script directory, that will access the server via SHH: After that, a tag is created in the git [...]]]></description>
				<content:encoded><![CDATA[<p>Sometimes I prefer to use a simpler way to deploy my Rails applications instead to install and configure any tool (e.g.: <a href="https://github.com/capistrano/capistrano" target="_blank">capistrano</a>).</p>
<p>A very simple way to do this is to create a shell script within the <strong>/script</strong> directory, that will access the server via SHH:</p>
<pre class="brush: bash; title: ; notranslate">#! /bin/bash
# script/deploy.sh

TAG=deploy_$(date +&quot;%F_%Hh%M&quot;)
git tag -m '' -a $TAG
git push --tags

ssh user@your_domain.com &lt;&lt; 'SSH'
  cd /var/rails_apps/my_app
  rm -rf public/assets
  git pull
  bundle install --without development test
  bundle exec rake db:migrate db:seed assets:clean assets:precompile
  touch tmp/restart.txt
  git describe &gt; public/version.txt
SSH</pre>
<p>After that, a tag is created in the git repository. This way you know exactly the date and time the deployment was performed.</p>
<p>And you can find out which version (tag from git) is in production accessing the URL <strong>your_domain.com/version.txt</strong>.</p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/your_domain.png" alt="your_domain" width="594" height="435" class="aligncenter size-full wp-image-1639" /></p>
<h2>Update on March 8, 2013:</h2>
<p>I created another script which accepts the -q param (quick).<br />
<a href="https://gist.github.com/lucascaton/5118852" target="_blank">https://gist.github.com/lucascaton/5118852</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/01/25/a-simple-way-to-deploy-your-rails-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Novos sistemas operacionais móveis</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/01/22/novos-sistemas-operacionais-moveis/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/01/22/novos-sistemas-operacionais-moveis/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 16:41:10 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[blackbarry]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[firefox os]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[mobile os]]></category>
		<category><![CDATA[ubuntu phone]]></category>
		<category><![CDATA[windows phone]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1578</guid>
		<description><![CDATA[Os principais sistemas operacionais móveis hoje são: iOS, Android, Windows Phone e BlackBerry. Porém, mais dois concorrentes estão entrando nessa briga: Ubuntu for phones Site oficial Firefox OS Site oficial Outros posts sobre esses dois novos sistemas operacionais móveis: Ubuntu Dicas &#8211; Posts sobre Ubuntu Phone Ubuntu for phones video demoed at CES 2013 with [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/shutterstock_89124547-100019662-large.jpg" alt="shutterstock_89124547-100019662-large" width="580" height="387" class="aligncenter size-full wp-image-1581" /></p>
<p>Os principais sistemas operacionais móveis hoje são: iOS, Android, Windows Phone e BlackBerry.<br />
<img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/mobile-os.png" alt="mobile-os" width="800" height="600" class="aligncenter size-full wp-image-1586" /></p>
<p>Porém, mais dois concorrentes estão entrando nessa briga:</p>
<h1>Ubuntu for phones</h1>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/phone-photo-hero.jpg" alt="phone-photo-hero" width="584" height="340" class="aligncenter size-full wp-image-1580" /></p>
<p><center><a href="http://www.ubuntu.com/devices/phone" target="_blank">Site oficial</a></center></p>
<p><iframe width="625" height="352" src="http://www.youtube.com/embed/cpWHJDLsqTU?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><iframe width="625" height="352" src="http://www.youtube.com/embed/wfIS6YNmK9Y?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h1>Firefox OS</h1>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/geeksphone.jpg" alt="geeksphone" width="500" height="324" class="aligncenter size-full wp-image-1579" /></p>
<p><center><a href="http://www.mozilla.org/en-US/firefoxos/" target="_blank">Site oficial</a></center></p>
<p><iframe width="625" height="352" src="http://www.youtube.com/embed/2whCBcbB4FQ?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Outros posts sobre esses dois novos sistemas operacionais móveis:<br />
<a href="http://www.ubuntudicas.com.br/blog/tag/ubuntu-phone/" target="_blank">Ubuntu Dicas &#8211; Posts sobre Ubuntu Phone</a><br />
<a href="http://www.iloveubuntu.net/ubuntu-phones-video-demoed-ces-2013-music-player-and-notes-applications" target="_blank">Ubuntu for phones video demoed at CES 2013 with music player and Notes applications</a><br />
<a href="http://www.ubuntudicas.com.br/blog/2013/01/conheca-o-firefox-os-phone/" target="_blank">Ubuntu Dicas &#8211; Conheça o Firefox OS Phone</a><br />
<a href="http://www.pcworld.com/article/2023648/ubuntu-firefox-line-up-to-take-on-ios-android-in-2013.html" target="_blank">Ubuntu, Firefox line up to take on iOS, Android in 2013</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/01/22/novos-sistemas-operacionais-moveis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Start on Rails em SP &#8211; como foi</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/01/22/start-on-rails-em-sp-como-foi/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/01/22/start-on-rails-em-sp-como-foi/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 16:34:35 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[eventos]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1574</guid>
		<description><![CDATA[Conforme eu anunciei no último post, dia 19/01/2013 (último sábado) aconteceu o Start on Rails em SP. O Rodrigo Pinto (@rodrigoospinto) escreveu um post contando como foi lá: http://rodrigopinto.me/2013/01/21/startonrailssp-sucesso-total/. Segue algumas fotos que tiramos:]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/0.jpg" alt="0" width="773" height="600" class="aligncenter size-full wp-image-1597" /></p>
<p>Conforme eu anunciei no <a href="http://blog.lucascaton.com.br/index.php/2013/01/13/start-on-rails-em-sp/" target="_blank">último post</a>, dia 19/01/2013 (último sábado) aconteceu o <strong>Start on Rails em SP</strong>.</p>
<p>O Rodrigo Pinto (<a href="http://twitter.com/rodrigoospinto" target="_blank">@rodrigoospinto</a>) escreveu um post contando como foi lá: <a href="http://rodrigopinto.me/2013/01/21/startonrailssp-sucesso-total/" target="_blank">http://rodrigopinto.me/2013/01/21/startonrailssp-sucesso-total/</a>.</p>
<p>Segue algumas fotos que tiramos:</p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/1.jpg" alt="1" width="800" height="600" class="aligncenter size-full wp-image-1598" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/2.jpg" alt="2" width="800" height="600" class="aligncenter size-full wp-image-1599" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/3.jpg" alt="3" width="800" height="600" class="aligncenter size-full wp-image-1600" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/4.jpg" alt="4" width="800" height="600" class="aligncenter size-full wp-image-1601" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/5.jpg" alt="5" width="800" height="600" class="aligncenter size-full wp-image-1602" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/6.jpg" alt="6" width="800" height="600" class="aligncenter size-full wp-image-1603" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/7.jpg" alt="7" width="800" height="600" class="aligncenter size-full wp-image-1604" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/8.jpg" alt="8" width="800" height="600" class="aligncenter size-full wp-image-1605" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/774352_10151352654644837_1237966537_o.jpg" alt="774352_10151352654644837_1237966537_o" width="800" height="598" class="aligncenter size-full wp-image-1612" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/774919_10151352655484837_446777557_o.jpg" alt="774919_10151352655484837_446777557_o" width="800" height="598" class="aligncenter size-full wp-image-1614" /></p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/774903_10151352655779837_1531556738_o.jpg" alt="774903_10151352655779837_1531556738_o" width="800" height="598" class="aligncenter size-full wp-image-1613" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/01/22/start-on-rails-em-sp-como-foi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Start on Rails em SP</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/01/13/start-on-rails-em-sp/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/01/13/start-on-rails-em-sp/#comments</comments>
		<pubDate>Mon, 14 Jan 2013 02:48:38 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[eventos]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1563</guid>
		<description><![CDATA[No dia 19/01/2013 vai acontecer o Start on Rails em SP. É um evento que dará aquele ponta pé inicial para o pessoal que está interessado em começar a trabalhar / estudar Rails. É um evento parecido com o Rails Girls que rolou ano passado. E eu vou participar como coach novamente! O Ricardo Valeriano [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/ruby_rails.png" alt="ruby_rails" width="500" height="295" class="aligncenter size-full wp-image-1570" /></p>
<p>No dia 19/01/2013 vai acontecer o <strong>Start on Rails</strong> em SP. É um evento que dará aquele ponta pé inicial para o pessoal que está interessado em começar a trabalhar / estudar Rails. É um evento parecido com o <a href="http://blog.lucascaton.com.br/index.php/2012/09/12/rails-girls-sp-2012/" target="_blank">Rails Girls que rolou ano passado</a>. E eu vou participar como coach novamente!</p>
<p>O Ricardo Valeriano escreveu um post que explica tudo sobre o evento: <a href="http://backslashes.net/2013/01/10/voce-esta-convidado-para-o-start-on-rails-sp-no-dia-19012013/" target="_blank">http://backslashes.net/2013/01/10/voce-esta-convidado-para-o-start-on-rails-sp-no-dia-19012013/</a></p>
<p>Não perca essa oportunidade! :D</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/01/13/start-on-rails-em-sp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An easy way to split windows in Vim</title>
		<link>http://blog.lucascaton.com.br/index.php/2013/01/03/an-easy-way-to-split-windows-in-vim/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2013/01/03/an-easy-way-to-split-windows-in-vim/#comments</comments>
		<pubDate>Thu, 03 Jan 2013 14:22:32 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1554</guid>
		<description><![CDATA[There are several ways to split windows in Vim. This one is what I prefer:]]></description>
				<content:encoded><![CDATA[<p>There are several ways to split windows in Vim. This one is what I prefer:</p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2013/01/cell-division.png" alt="cell-division" width="642" height="427" class="aligncenter size-full wp-image-1557" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2013/01/03/an-easy-way-to-split-windows-in-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transformando um Array em um Enumerator no Ruby</title>
		<link>http://blog.lucascaton.com.br/index.php/2012/12/29/transformando-um-array-em-um-enumerator-no-ruby/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2012/12/29/transformando-um-array-em-um-enumerator-no-ruby/#comments</comments>
		<pubDate>Sat, 29 Dec 2012 11:53:32 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1542</guid>
		<description><![CDATA[Existem alguns casos em que você precisa modificar um array (aumentá-lo por exemplo) repetindo os valores presentes no array original. Uma forma bem interessante de fazer isso é convertendo tal array para um objeto Enumerator. Para isso, existe o método Enumerator#cycle. Imagine o seguinte array: Ao rodar o método cycle, veja o que acontece: Podemos [...]]]></description>
				<content:encoded><![CDATA[<p>Existem alguns casos em que você precisa modificar um array (aumentá-lo por exemplo) repetindo os valores presentes no array original.</p>
<p>Uma forma bem interessante de fazer isso é convertendo tal array para um objeto Enumerator. Para isso, existe o método <strong>Enumerator#cycle</strong>. Imagine o seguinte array:</p>
<pre class="brush: ruby; title: ; notranslate">array = [1, 3, 5, 7]</pre>
<p>Ao rodar o método <strong>cycle</strong>, veja o que acontece:</p>
<pre class="brush: ruby; title: ; notranslate">array.cycle
#=&gt; #&lt;Enumerator: [1, 3, 5, 7]:cycle&gt;</pre>
<p>Podemos agora usar o método <strong>Enumerator#take</strong> e modificar o array original como quisermos. Por exemplo, vamos dobrar o seu tamanho:</p>
<pre class="brush: ruby; title: ; notranslate">array.cycle.take(8)
#=&gt; [1, 3, 5, 7, 1, 3, 5, 7]</pre>
<p>Foi criado um array do tamanho especificado no parametro do método <strong>take</strong>.</p>
<p>Isso é útil &#8211; por exemplo &#8211; em casos similares à <a href="https://github.com/tomas-stefano/boleto_bancario/commit/967503d35ac1f9c250aa7438fa22670cb947afef" target="_blank">esse código</a> da gem <strong>boleto_bancario</strong>. Em algoritmos de IA também é bastante comum precisar desse tipo de modificação em arrays.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2012/12/29/transformando-um-array-em-um-enumerator-no-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Novo trabalho, nova fase</title>
		<link>http://blog.lucascaton.com.br/index.php/2012/10/15/novo-trabalho-nova-fase/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2012/10/15/novo-trabalho-nova-fase/#comments</comments>
		<pubDate>Tue, 16 Oct 2012 02:15:38 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[carreira]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1519</guid>
		<description><![CDATA[Depois de quase um ano trabalhando na Codeminer 42, posso dizer que tive o prazer de trabalhar com equipes sensacionais, com as quais aprendi muitas coisas, sendo recompensado ao ver a realização de bons trabalhos e também fazendo grandes amigos. Obrigado Codeminer 42! Começo hoje uma nova fase da minha vida, trabalhando na Locaweb! E [...]]]></description>
				<content:encoded><![CDATA[<p>Depois de quase um ano <a href="http://blog.lucascaton.com.br/?p=1232" target="_blank">trabalhando na Codeminer 42</a>, posso dizer que tive o prazer de trabalhar com equipes sensacionais, com as quais aprendi muitas coisas, sendo recompensado ao ver a realização de bons trabalhos e também fazendo grandes amigos. <strong>Obrigado Codeminer 42!</strong></p>
<p>Começo hoje uma nova fase da minha vida, trabalhando na Locaweb! E como eu já conheço a equipe, o ambiente de trabalho e os projetos, me sinto honrado de estar entrando em uma empresa como a Locaweb, onde pretendo dar o melhor de mim, como sempre tentei fazer. Obrigado a todos pela ótima recepção!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2012/10/15/novo-trabalho-nova-fase/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>New blog layout</title>
		<link>http://blog.lucascaton.com.br/index.php/2012/10/02/new-blog-layout/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2012/10/02/new-blog-layout/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 17:08:09 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1512</guid>
		<description><![CDATA[I finally changed the layout of my blog. This theme is more clean, I hope you all enjoy.]]></description>
				<content:encoded><![CDATA[<p>I finally changed the layout of my blog. This theme is more clean, I hope you all enjoy.</p>
<p><img src="http://blog.lucascaton.com.br/wp-content/uploads/2012/10/Screen-Shot-2012-10-02-at-1.57.23-PM.png" alt="" title="Screen Shot 2012-10-02 at 1.57.23 PM" width="1055" height="798" class="aligncenter size-full wp-image-1513" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2012/10/02/new-blog-layout/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tentativa de atualização de um projeto para Rails 4 (o qual ainda não está pronto)</title>
		<link>http://blog.lucascaton.com.br/index.php/2012/09/22/tentativa-de-atualizacao-de-um-projeto-para-rails-4-o-qual-ainda-nao-esta-pronto/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2012/09/22/tentativa-de-atualizacao-de-um-projeto-para-rails-4-o-qual-ainda-nao-esta-pronto/#comments</comments>
		<pubDate>Sun, 23 Sep 2012 00:50:32 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails4]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1475</guid>
		<description><![CDATA[O Rails 4 ainda não foi lançado, tampouco tem uma versão beta, um Release Candidate ou algo do tipo. Mas depois de ver os slides &#8220;What to expect in Rails 4.0&#8243; do Boston Ruby Group, fiquei com vontade de atualizar um projeto no qual estou trabalhando atualmente só pra ver se algo iria explodir :-) [...]]]></description>
				<content:encoded><![CDATA[<p>O Rails 4 ainda não foi lançado, tampouco tem uma versão beta, um Release Candidate ou algo do tipo.</p>
<p>Mas depois de ver os slides <a href="https://speakerdeck.com/u/bostonrb/p/what-to-expect-in-rails-4-dot-0" target="_blank">&#8220;What to expect in Rails 4.0&#8243;</a> do <a href="http://bostonrb.org/" target="_blank">Boston Ruby Group</a>, fiquei com vontade de atualizar um projeto no qual estou trabalhando atualmente só pra ver se algo iria explodir :-)</p>
<h1>Antes de mais nada</h1>
<p>Dê uma olhada nos <a href="http://edgeguides.rubyonrails.org/4_0_release_notes.html" target="_blank">Release Notes</a> e <a href="http://blog.wyeworks.com/images/posts/Rails4.png" target="_blank">nesta árvore do Rails 4</a>.</p>
<h1>Atualização do Bundler</h1>
<p>Bom, a primeira coisa que tive que fazer, foi atualizar o meu bundler (eu usava a versão 1.1.5 e atualizei para a <a href="http://gembundler.com/v1.2/whats_new.html" target="_blank">1.2.1</a>), já que o Rails 4 precisa da versão 1.2.x ou superior.</p>
<h1>Atualização do Gemfile</h1>
<p>Feito isso, alterei algumas coisas no Gemfile, sendo que a parte relevante é essa abaixo:</p>
<pre class="brush: ruby; title: ; notranslate"># gem 'rails', '3.2.8'
gem 'rails', github: 'rails/rails' # Aqui vamos pegar o código mais novo do Rails, diretamente do Github :-)
gem 'journey', github: 'rails/journey' # o Rails depende da versão mais nova dessa gem
gem 'activerecord-deprecated_finders', github: 'rails/activerecord-deprecated_finders' # o Rails depende dessa gem, a qual ainda não foi lançada

group :assets do
  gem 'sass-rails', github: 'rails/sass-rails' # o Rails depende da versão mais nova dessa gem
  gem 'coffee-rails', github: 'rails/coffee-rails' # o Rails depende da versão mais nova dessa gem
  gem 'uglifier', '&gt;= 1.0.3'
end

# resto do Gemfile...</pre>
<p>Nesse ponto, a brincadeira meio que acabou pra mim: o <a href="http://mongoid.org/" target="_blank">Mongoid</a> ainda não é compatível com o Rails 4. Mas resolvi seguir em frente, testando apenas as páginas estáticas (que não dependendiam do Mongo), só pra ver o que iria rolar&#8230;</p>
<h1>Alterações no config/application.rb</h1>
<p>Como nesse projeto, eu <strong>não</strong> fazia um</p>
<pre class="brush: ruby; title: ; notranslate">require 'rails/all'</pre>
<p>pois não uso nem ActiveRecord nem test_unit, eu fazia require apenas do que eu precisava:</p>
<pre class="brush: ruby; title: ; notranslate"># require &quot;active_record/railtie&quot;
require &quot;action_controller/railtie&quot;
require &quot;action_mailer/railtie&quot;
require &quot;active_resource/railtie&quot;
require &quot;sprockets/railtie&quot;
# require &quot;rails/test_unit/railtie&quot;</pre>
<p>Mas eu tive que retirar o &#8220;active_resource/railtie&#8221; (que agora é uma <a href="https://github.com/rails/activeresource" target="_blank">gem externa</a>) e o &#8220;sprockets/railtie&#8221; (este simplesmente não funcionou &#8211; e eu não pesquisei o motivo).</p>
<h1>Rotas</h1>
<p>Se você tiver alguma rota desse tipo:</p>
<pre class="brush: ruby; title: ; notranslate">match 'foobar' =&gt; 'foo#bar', via: 'put'</pre>
<p>Você vai ver um erro assim: &#8220;You should not use the `match` method in your router without specifying an HTTP method. (RuntimeError)&#8221;.</p>
<p>A solução é usar o verbo HTTP no lugar do &#8220;match&#8221;:</p>
<pre class="brush: ruby; title: ; notranslate">put 'foobar' =&gt; 'foo#bar'</pre>
<p>Isso também vale para rodas com o GET. Resumindo: não use mais o &#8220;match&#8221;! :-)</p>
<p>Aproveitando que estou falando de rotas, uma coisa muito interessante que eu descobri foi o novo stack trace de erro de rota, que agora mostra todas as rotas disponíveis (obviamente, só exibe isso no ambiente <em>development</em>). Segue um screenshot:</p>
<p><a href="http://blog.lucascaton.com.br/wp-content/uploads/2012/09/shot.png" target="_blank"><img src="http://blog.lucascaton.com.br/wp-content/uploads/2012/09/shot.png" alt="" title="shot" width="997" height="754" class="aligncenter size-full wp-image-1490" /></a></p>
<h1>Configurações de ambientes</h1>
<p>Uma nova configuração obrigatória nos arquivos <strong>config/environments/*.rb</strong> é o <strong>eager_load</strong>. Caso você não configure isso, receberá um WARNING:</p>
<pre class="brush: plain; title: ; notranslate">config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:
  * development - set it to false
  * test - set it to false (unless you use a tool that preloads your test environment)
  * production - set it to true</pre>
<p>Outro detalhe é que a config <strong>whiny_nils</strong> não existe mais, então eu precisei retirá-la.</p>
<h1>Views e helpers</h1>
<p>Em um trecho do meu HTML, eu usava o helper <strong>asset_path</strong>:</p>
<pre class="brush: ruby; title: ; notranslate">&lt;%= asset_path 'some_image.png' %&gt;</pre>
<p>Mas rolava esse erro:</p>
<pre class="brush: ruby; title: ; notranslate">undefined method `asset_path' for #&lt;#&lt;Class:0x007...&gt;</pre>
<p>E resolvi isso por hora removendo essa linha (afinal, eu queria ver até onde eu conseguiria chegar).</p>
<p>Outro problema que tive em views foi esse:</p>
<pre class="brush: ruby; title: ; notranslate">undefined method `handle_positional_args' for #&lt;#&lt;Class:0x007...&gt;</pre>
<p>A primeira vez aconteceu em um helper <strong>link_to</strong> e depois em um <strong>form_for</strong>. Aparentemente, nenhum deles tinha nada demais. Novamente eu removi esses dois heleprs da minha view.</p>
<p>Então eu finalmente consegui ver a página (estática)! :-)</p>
<h1>TL; DR => Conclusão</h1>
<p>Consegui carregar apenas as páginas estáticas, uma vez que o Mongoid ainda não suporta o Rails 4.0. E pelo mesmo motivo, não consegui rodar nenhum teste :-(<br />
Ainda é cedo pra começar a migrar os projetos (como eu já falei, o Rails 4 não tem nem mesmo um Release Candidate). O faça apenas para se divertir e/ou ajudar os desenvolvedores <a href="https://github.com/rails/rails/issues" target="_blank">reportando bugs</a> ou colaborando com o código!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2012/09/22/tentativa-de-atualizacao-de-um-projeto-para-rails-4-o-qual-ainda-nao-esta-pronto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails Girls SP 2012</title>
		<link>http://blog.lucascaton.com.br/index.php/2012/09/12/rails-girls-sp-2012/</link>
		<comments>http://blog.lucascaton.com.br/index.php/2012/09/12/rails-girls-sp-2012/#comments</comments>
		<pubDate>Wed, 12 Sep 2012 13:59:59 +0000</pubDate>
		<dc:creator>Lucas Caton</dc:creator>
				<category><![CDATA[Portuguese]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.lucascaton.com.br/?p=1470</guid>
		<description><![CDATA[Nos dias 7 e 8 de setembro, aconteceu o evento &#8220;Rails Girls&#8221; aqui em São Paulo. O evento é uma iniciativa para fazer com que mais mulheres se interessem pela área de desenvolvimento de software. O evento é gratuito e acontece em vários lugares do mundo. Aqui no Brasil já aconteceu em Porto Alegre e [...]]]></description>
				<content:encoded><![CDATA[<p>Nos dias 7 e 8 de setembro, aconteceu o evento &#8220;Rails Girls&#8221; aqui em São Paulo.</p>
<p>O evento é uma iniciativa para fazer com que mais mulheres se interessem pela área de desenvolvimento de software. O evento é gratuito e acontece em vários lugares do mundo. Aqui no Brasil já aconteceu em Porto Alegre e agora em São Paulo (realizado na Locaweb).</p>
<p>Nos dois dias do evento, foram apresentadas algumas lighting talks muito boas (a maioria apresentadas por mulheres) e um curso básico de programação para web, usando Ruby on Rails. Durante o curso, foi mostrado às alunas uma visão geral sobre desenvolvimento web (HTML, CSS, javascript), MVC e banco de dados. E elas  tiveram que criar um projeto real, começando do zero e terminando com a aplicação rodando no Heroku, apresentando o que fizeram para todos no final.</p>
<p>Eu participei como coach e valeu muito a pena. Foi sensacional ver os projetos finalizados!</p>
<p>Segue o link do evento e algumas fotos:</p>
<p><a href="http://railsgirls.com/saopaulo" target="_blank">http://railsgirls.com/saopaulo</a></p>
<p><a href="http://www.flickr.com/photos/64572237@N00/sets/72157631520431773/" target="_blank">http://www.flickr.com/photos/64572237@N00/sets/72157631520431773/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lucascaton.com.br/index.php/2012/09/12/rails-girls-sp-2012/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
