<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>KP Brasil</title>
	
	<link>http://www.kpbrasil.com/br</link>
	<description>por Kirk Patrick</description>
	<lastBuildDate>Sat, 09 Jan 2010 16:22:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kpbrasil" /><feedburner:info uri="kpbrasil" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Ontem Você Disse Amanhã</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/mik9w7NXDiM/</link>
		<comments>http://www.kpbrasil.com/br/destaques/ontem-voce-disse-amanha/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 16:22:16 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Para Você]]></category>
		<category><![CDATA[anúncio]]></category>
		<category><![CDATA[nike]]></category>
		<category><![CDATA[projetos]]></category>
		<category><![CDATA[realização]]></category>
		<category><![CDATA[sonhos]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=211</guid>
		<description><![CDATA[Como estão os seus projetos? Já começou a colocar a &#8216;mão na massa&#8217; ou está naquela de só adiar, como você fez no ano passado? Janeiro é um ótimo mês para você começar seus projetos. Comece a fazer as coisas acontecerem! Se o seu projeto for muito grande, quebre ele em pequenos subprojetos. Se for [...]]]></description>
			<content:encoded><![CDATA[<p>Como estão os seus projetos? Já começou a colocar a &#8216;mão na massa&#8217; ou está naquela de só adiar, como você fez no ano passado? Janeiro é um ótimo mês para você começar seus projetos. Comece a fazer as coisas acontecerem! Se o seu projeto for muito grande, quebre ele em pequenos subprojetos. Se for impossível, torne ele possível. Se o problema for tempo, então é problema seu. Você arruma tempo para namorar, para sair com os amigos, para ver TV, para ir no cinema. Com certeza você consegue arrumar tempo para seus projetos. Basta criar uma lista de prioridades.</p>
<p>Hoje estava navegando pelas atualizações dos meus amigos no Orkut e acabei encontrando uma foto de um anúncio da Nike, que o <a title="Acesse o blog do Diego Roriz" href="http://www.diegororiz.com.br" target="_blank">Diego Roriz</a> postou no seu perfil. O anúncio é uma advertência e um conselho para todos nós. Vejam:</p>
<p style="text-align:center">
<img src="http://www.kpbrasil.com/br/wp-content/uploads/2010/01/nike.jpg" alt="Anúncio da Nike" title="Anúncio da Nike" width="450" height="600" class="aligncenter size-full wp-image-212" />
</p>
<p>Diz o anúncio: &#8216;Ontem Você Disse Amanhã. Apenas Faça.&#8217; </p>
<p>Bem, o anúncio sintetiza tudo o que desejo passar para você. Apenas faça. Se precisar de ajuda, sugestões ou apenas conversar sobre seus projetos, pode contar comigo. Eu quero que este ano sua vida aconteça.</p>
<p>Gostou do post? Deixe seu comentário.<br />
Um grande abraço. </p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/mik9w7NXDiM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/ontem-voce-disse-amanha/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/ontem-voce-disse-amanha/</feedburner:origLink></item>
		<item>
		<title>Sexta-feira, 7 de Janeiro de 2010</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/YZh2KY7FrLA/</link>
		<comments>http://www.kpbrasil.com/br/diario-web/sexta-feira-7-de-janeiro-de-2010/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 18:46:27 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Diário Web]]></category>
		<category><![CDATA[sites]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=206</guid>
		<description><![CDATA[Como havia prometido anteriormente, vou postar um resumo do que tenho feito durante o dia, sempre que possível. Vou postar alguns links, situações e tweets interessantes. Vou fazer isso porque você lida com tanta informação diariamente que as vezes fica até difícil lembrar depois o que é importante e o que não é para passar [...]]]></description>
			<content:encoded><![CDATA[<p>Como havia prometido anteriormente, vou postar um resumo do que tenho feito durante o dia, sempre que possível. Vou postar alguns links, situações e tweets interessantes. Vou fazer isso porque você lida com tanta informação diariamente que as vezes fica até difícil lembrar depois o que é importante e o que não é para passar pra frente. Pode acontecer de uma simples informação, como um link para um site interessante resolver um problema que você está lidando naquele momento.</p>
<p><strong>Sites</strong></p>
<p style="padding-left: 30px;"><a href="http://dealspl.us/giveaway/macbook1.php" target="_blank">Deals Plus </a><br />
A Deals Plus está com mais um sorteio promocional de um MacBook Pro para a galera do twitter. Mais uma vez, vou participar. Quem sabe não ganho um cupom para comprar um MacBook Pro.</p>
<p style="padding-left: 30px;"><a href="http://www.rubyinside.com.br/coffeescript-uma-nova-linguagem-com-um-compilador-feito-em-ruby-puro-2818" target="_blank">CoffeScript</a><br />
Fiz um <a href="http://www.kpbrasil.com/br/destaques/gerando-javascript-com-ruby-introducao/" target="_self">post</a> rápido sobre o CoffeeScript, um compilador de código Ruby para JavaScript.</p>
<p style="padding-left: 30px;"><a href="http://circleboxblog.com/2009/tutorials/design-a-clean-tidy-blog-layout-mock-up-in-photoshop/" target="_blank">CircleBox</a><br />
Um artigo interessante sobre desenvolver um layout integralmente no Photoshop.</p>
<p style="padding-left: 30px;"><a href="http://gpwiki.org/" target="_blank">Game Programming Wiki</a><br />
Para àqueles que gostam, recebi um link interessante do Diego Roriz sobre desenvolvimento de games.</p>
<p style="padding-left: 30px;"><a href="http://www.diegororiz.com.br/2010/01/apple-think-different-and-change-the-world/" target="_blank">Apple &#8211; Pense Diferente e Mude o Mundo</a><br />
Um vídeo interessante postado no blog do Diego Roriz, sobre como a Apple chegou onde está hoje.</p>
<p><strong>Twitter</strong></p>
<p style="padding-left: 30px;"><a href="http://macmagazine.uol.com.br/2010/01/08/primeira-versao-candidata-a-final-do-firefox-3-6-ja-esta-disponivel-para-download/" target="_blank">@carlosbrando enviou um link da @macmagazine sobre o release candidate do Firefox 3.6 para Mac. </a></p>
<p style="padding-left: 30px;"><a href="http://lightblueoptics.com/products/light-touch/" target="_blank">@tinogomes enviou um link sobre transformar qualquer superfície plana em Touch-Screen.</a></p>
<p style="padding-left: 30px;"><a href="http://jquery14.com/" target="_blank">@rodrigokono um evento chamado The 14 Days of JQuery, para o lançamento da versão 1.4 do framework.</a></p>
<p style="padding-left: 30px;"><a href="http://revistapegn.globo.com/Revista/Common/0,,EMI114948-17180,00-CELULAR+E+MOVIDO+A+COCACOLA.html" target="_blank">@Sarabarbosa mandou um artigo sobre um celular movido a coca-cola. </a></p>
<p>Por hoje é só. Um abraço e um ótimo final de semana a todos!</p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/YZh2KY7FrLA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/diario-web/sexta-feira-7-de-janeiro-de-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/diario-web/sexta-feira-7-de-janeiro-de-2010/</feedburner:origLink></item>
		<item>
		<title>Gerando JavaScript com Ruby – Introdução</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/7TEADiOauOo/</link>
		<comments>http://www.kpbrasil.com/br/destaques/gerando-javascript-com-ruby-introducao/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 17:30:20 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[coffee script]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linguagens dinâmicas]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=197</guid>
		<description><![CDATA[Sexta-feira é muito bom, não acham? É melhor ainda porque fica mais próximo da segunda-feira (:P). Brincadeiras à parte, hoje vamos falar sobre uma linguagem feita em Ruby puro chamada CoffeeScript. Se você não é muito fã de JavaScript, mas não tem como correr, então você vai gostar de usar CoffeeScript. E sabe porquê? Porque [...]]]></description>
			<content:encoded><![CDATA[<p>Sexta-feira é muito bom, não acham? É melhor ainda porque fica mais próximo da segunda-feira (:P). Brincadeiras à parte, hoje vamos falar sobre uma linguagem feita em Ruby puro chamada <em>CoffeeScript</em>. Se você não é muito fã de JavaScript, mas não tem como correr, então você vai gostar de usar <em>CoffeeScript</em>. E sabe porquê? Porque ele compila para JavaScript. Vamos dar uma olhada rápida na linguagem?</p>
<p>Antes vamos instalar os programas que vamos utilizar.<br />
Eu estou considerando que você está utilizando Linux, que tenha o Firefox instalado e que tenha a extensão do firebug instalado no seu Firefox, caso você deseje testar o código JavaScript gerado. Se você não tem o firebug instalado, você pode clicar <a href="https://addons.mozilla.org/pt-BR/firefox/addon/1843">aqui</a> e instalar.</p>
<p>Você também vai precisar instalar o <em>Narwhal</em>. Ele vai tornar possível executarmos o shell interativo do <em>CoffeeScript</em>. Você pode instalar o Narwhal clonando o seu respositório git, que está disponível no GitHub, digitando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">git clone git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>tlrobinson<span style="color: #000000; font-weight: bold;">/</span>narwhal.git</pre></div></div>

<p>Depois exporte as variáveis de ambiente digitando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #007800;">$PATH</span>:~<span style="color: #000000; font-weight: bold;">/</span>narwhal<span style="color: #000000; font-weight: bold;">/</span>bin ou <span style="color: #7a0874; font-weight: bold;">source</span> narwhal<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>activate</pre></div></div>

<p>Para àqueles que não conhecem, o <a href="http://narwhaljs.org/">Narwhal</a> é uma plataforma JavaScript de propósito geral, multi-interpretado e cross-plataform. Se você quiser saber mais, clique <a href="http://narwhaljs.org/">aqui</a>.</p>
<p>Agora vamos instalar a gem <em>coffee-script</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> coffee-script</pre></div></div>

<p>Depois de instalado a gem digite ainda no terminal:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">coffee <span style="color: #660033;">-i</span></pre></div></div>

<p>O comando acima inicia o interpretador interativo do CoffeeScript.<br />
Com o interpretador aberto, digite:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">idade: <span style="color: #000000;">17</span> <span style="color: #666666; font-style: italic;"># Estamos atribuindo 17 à variável idade</span>
<span style="color: #ff0000;">'Você é menor de idade'</span> <span style="color: #000000; font-weight: bold;">if</span> idade <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000;">18</span> <span style="color: #666666; font-style: italic;"># Imprima se idade for menor que 18 </span>
=<span style="color: #000000; font-weight: bold;">&gt;</span> Você é menor de idade <span style="color: #666666; font-style: italic;"># Saída</span></pre></div></div>

<p>Em Javascript, você teria que fazer assim:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">idade <span style="color: #339933;">=</span> <span style="color: #CC0000;">17</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>idade <span style="color: #339933;">&lt;</span> <span style="color: #CC0000;">18</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>     <span style="color: #3366CC;">&quot;Você é menor de idade&quot;</span> <span style="color: #009900;">&#125;</span> 
<span style="color: #339933;">=&gt;</span> Você é menor de idade</pre></div></div>

<p>Vamos criar uma função. Ainda no shell interativo do CoffeeScript digite:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Vamos fazer uma soma de dois elementos</span>
soma: x, y <span style="color:#006600; font-weight:bold;">=&gt;</span> x <span style="color:#006600; font-weight:bold;">+</span> x</pre></div></div>

<p>Ops! Aconteceu algo diferente certo? Ao digitar o código acima, você recebeu a seguinte saída:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> soma<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> x <span style="color: #339933;">+</span> y<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>O que aconteceu é que a função que criamos anteriormente usando CoffeeScript gerou uma função em JavaScript. Como disse anteriormente, o CoffeeScript compila seu código Ruby puro para Javascript. Se você chamar o método soma no shell interativo do CoffeScript, você recebera o resultado. Vamos testar:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">soma<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">3</span>,<span style="color:#006666;">4</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">7</span></pre></div></div>

<p>Gostou? Agora abra o seu editor de texto preferido e digite:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Soma</span>
soma: x, y <span style="color:#006600; font-weight:bold;">=&gt;</span> x <span style="color:#006600; font-weight:bold;">+</span> y
&nbsp;
<span style="color:#008000; font-style:italic;"># Subtração</span>
subtracao: x, y <span style="color:#006600; font-weight:bold;">=&gt;</span> x <span style="color:#006600; font-weight:bold;">-</span> y
&nbsp;
<span style="color:#008000; font-style:italic;"># Divisão</span>
divisao: x, y <span style="color:#006600; font-weight:bold;">=&gt;</span> x <span style="color:#006600; font-weight:bold;">/</span> y
&nbsp;
<span style="color:#008000; font-style:italic;"># Multiplicação</span>
multiplicacao: x, y <span style="color:#006600; font-weight:bold;">=&gt;</span> x <span style="color:#006600; font-weight:bold;">*</span> y</pre></div></div>

<p>Salve o arquivo com o nome <em>&#8216;operacoes.coffee&#8217;</em>.<br />
Agora volte ao seu terminal e digite:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">coffee operacoes.coffee</pre></div></div>

<p>O comando acima compila o seu arquivo <em>&#8216;operacoes.coffee&#8217;</em> para JavaScript. Você deve ter agora no mesmo diretório um arquivo <em>&#8216;operacoes.js&#8217;</em>. Se você abrir o seu arquivo, você vai ver o JavaScript que foi gerado com Ruby semelhante a este:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> divisao<span style="color: #339933;">,</span> multiplicacao<span style="color: #339933;">,</span> soma<span style="color: #339933;">,</span> subtracao<span style="color: #339933;">;</span>
  <span style="color: #006600; font-style: italic;">// Soma</span>
  soma <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> soma<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> x <span style="color: #339933;">+</span> y<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #006600; font-style: italic;">// Subtração</span>
  subtracao <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> subtracao<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> x <span style="color: #339933;">-</span> y<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #006600; font-style: italic;">// Divisão</span>
  divisao <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> divisao<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> x <span style="color: #339933;">/</span> y<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #006600; font-style: italic;">// Multiplicação</span>
  multiplicacao <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> multiplicacao<span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> x <span style="color: #339933;">*</span> y<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Legal gerar JavaScript com Ruby, não é mesmo?<br />
Essa foi só uma introdução para deixar você feliz.<br />
Para saber mais acesse:</p>
<ul>
<li><a href="http://jashkenas.github.com/coffee-script/" target="_blank">Site Oficial</a></li>
<li><a href="http://www.rubyinside.com.br/coffeescript-uma-nova-linguagem-com-um-compilador-feito-em-ruby-puro-2818" target="_blank">Artigo no Ruby Inside Brasil</a></li>
</ul>
<p>Gostou do post? Deixe seu comentário.<br />
Um grande abraço!</p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/7TEADiOauOo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/gerando-javascript-com-ruby-introducao/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/gerando-javascript-com-ruby-introducao/</feedburner:origLink></item>
		<item>
		<title>Lata de Lixo Divertida – TheFunTheory.com</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/b-9WSj6hb98/</link>
		<comments>http://www.kpbrasil.com/br/destaques/lata-de-lixo-divertida-thefuntheory-com/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 11:05:08 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Diversão]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[TheFunTheory]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=163</guid>
		<description><![CDATA[Eu já falei para vocês sobre a galera da TheFunTheory.com, que é uma iniciativa da Volkswagem. Eles acreditam que a diversão pode ajudar a resolver alguns problemas e tornar as pessoas melhores. Eles chamam essa teoria de Teoria da Diversão (The Fun Theory). No vídeo abaixo, eles transformaram o ato de jogar lixo dentro do [...]]]></description>
			<content:encoded><![CDATA[<p>Eu já falei para vocês sobre a galera da TheFunTheory.com, que é uma iniciativa da Volkswagem. Eles acreditam que a diversão pode ajudar a resolver alguns problemas e tornar as pessoas melhores. Eles chamam essa teoria de Teoria da Diversão (The Fun Theory). No vídeo abaixo, eles transformaram o ato de jogar lixo dentro do lixo em algo divertido. Para conseguir tal façanha eles instalaram um sensor no topo da lata de lixo que emite um som quando alguém joga algum lixo lá dentro. O som dá a impressão de que a lata de lixo é muito profunda. Com essa simples brincadeira eles conseguiram cumprir o objetivo, que é conscientizar as pessoas de que o lugar do lixo é no lixo. Confiram o vídeo:</p>
<p style="text-align:center">
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/cbEKAwCoCKw&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/cbEKAwCoCKw&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>
</p>
<p>Gostou do post? Deixe um comentário!</p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/b-9WSj6hb98" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/lata-de-lixo-divertida-thefuntheory-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/lata-de-lixo-divertida-thefuntheory-com/</feedburner:origLink></item>
		<item>
		<title>Manipulando Planilhas com Ruby</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/284TE69m1wE/</link>
		<comments>http://www.kpbrasil.com/br/destaques/manipulando-planilhas-com-ruby/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 15:19:32 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[planilhas]]></category>
		<category><![CDATA[roo]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rubygems]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=145</guid>
		<description><![CDATA[Hoje vamos brincar um pouco com planilhas eletrônicas. Existe uma rubygem para manipulação de planilhas chamada &#8216;roo&#8217;. Ela pode manipular as planilhas do Excel (incluindo o novo formato xlsx do Office 2007), do OpenOffice e do Google Docs. Não sei quanto a vocês, mas eu já ralei bastante para trabalhar com planilhas eletrônicas no Rails. [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje vamos brincar um pouco com planilhas eletrônicas. Existe uma rubygem para manipulação de planilhas chamada <em>&#8216;roo&#8217;</em>. Ela pode manipular as planilhas do <strong>Excel</strong> (incluindo o novo formato xlsx do Office 2007), do <strong>OpenOffice</strong> e do <strong>Google Docs</strong>. Não sei quanto a vocês, mas eu já ralei bastante para trabalhar com planilhas eletrônicas no Rails. Você vai descobrir o quanto essa gem vai simplificar a sua vida. Vamos começar!</p>
<p>Ante de colocar a mão na massa, você vai precisar adicionar ao seu rubygem o repositório de gems do Github. Para fazer isso digite:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">    sudo gem sources <span style="color:#006600; font-weight:bold;">-</span>a http:<span style="color:#006600; font-weight:bold;">//</span>gems.<span style="color:#9900CC;">github</span>.<span style="color:#9900CC;">com</span></pre></div></div>

<p>Agora vamos instalar uma gem chamada <em>Gimite Ruby Spreadsheet</em>. Essa gem é uma biblioteca para ler/escrever planilhas do Google. Instale a gem digitando no seu terminal:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">    sudo gem install gimite<span style="color:#006600; font-weight:bold;">-</span>google<span style="color:#006600; font-weight:bold;">-</span>spreadsheet<span style="color:#006600; font-weight:bold;">-</span>ruby</pre></div></div>

<p>Agora vamos instalar a gem <em>roo</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">    sudo gem install roo</pre></div></div>

<p>Uma vez instalado, faça o download deste pacote zip com duas planilhas clicando <a href="http://www.kpbrasil.com/br/wp-content/uploads/2010/01/planilhas_roo.zip">aqui</a>. Não esqueça de descompactá-las depois de baixá-las. Nós vamos usá-las em nosso exemplo de hoje. </p>
<p>Agora abra o seu editor/IDE preferido (no meu caso, Gedit Turbinado <img src='http://www.kpbrasil.com/br/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) e crie um arquivo chamado <em>brincando_com_roo.rb</em>. Salve de preferência no mesmo diretório das planilhas. Agora vamos brincar:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'roo'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos abrir nossa planilha do Excel (planilha_roo.xls)</span>
excel = Excel.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'planilha_roo.xls'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos escolher qual pasta de trabalho queremos utilizar</span>
excel.<span style="color:#9900CC;">default_sheet</span> = excel.<span style="color:#9900CC;">sheets</span>.<span style="color:#9900CC;">first</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos informar ao roo qual o intervalo de linhas que queremos importar</span>
2.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>line<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#008000; font-style:italic;">#Poderiamos ter feito assim: 2.upto(excel.last_row) do |line|</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Vamos pegar todas as linhas da coluna A</span>
    empresa =   excel.<span style="color:#9900CC;">cell</span><span style="color:#006600; font-weight:bold;">&#40;</span>line, <span style="color:#996600;">'A'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Vamos pegar todas as linhas da coluna B</span>
    servico =   excel.<span style="color:#9900CC;">cell</span><span style="color:#006600; font-weight:bold;">&#40;</span>line, <span style="color:#996600;">'B'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Vamos pegar todas as linhas da coluna C</span>
    orcamento = excel.<span style="color:#9900CC;">cell</span><span style="color:#006600; font-weight:bold;">&#40;</span>line, <span style="color:#996600;">'C'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Vamos pegar todas as linhas da coluna D</span>
    aprovado =  excel.<span style="color:#9900CC;">cell</span><span style="color:#006600; font-weight:bold;">&#40;</span>line, <span style="color:#996600;">'D'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Vamos agora imprimir os nomes das empresas </span>
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{empresa}&quot;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># Vamos imprimir o orçamento e se foi ou não aprovado</span>
    <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{orcamento} ---&gt; #{aprovado}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Podemos também exportar nossa planilha inteira para o formato CSV</span>
excel.<span style="color:#9900CC;">to_csv</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'planilha_roo.csv'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Podemos exportar também para YAML</span>
file = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'planilha_roo.yaml'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
file <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> excel.<span style="color:#9900CC;">to_yaml</span>
file.<span style="color:#9900CC;">close</span></pre></div></div>

<p>Viu como é fácil utilizar a gem <em>roo</em>. Se você quiser trabalhar com arquivos do <em>OpenOffice</em>, você deverá chamar <em>Openoffice.new(&#8216;planilha_roo.ods&#8217;)</em> ao invés de <em>Excel.new(&#8216;planilha_roo.xls&#8217;)</em>. </p>
<p>Esta gem suporta os seguintes tipos de células:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#ff3333; font-weight:bold;">:float</span> <span style="color:#008000; font-style:italic;"># retorna um objeto Ruby do tipo float</span>
<span style="color:#ff3333; font-weight:bold;">:string</span> <span style="color:#008000; font-style:italic;"># retorna um objeto String</span>
<span style="color:#ff3333; font-weight:bold;">:date</span> <span style="color:#008000; font-style:italic;"># retorna um objeto Date do Ruby</span>
<span style="color:#ff3333; font-weight:bold;">:percentage</span> <span style="color:#008000; font-style:italic;"># retorna um objeto Float, com range entre 0.0 e 1.0</span>
<span style="color:#ff3333; font-weight:bold;">:formula</span> <span style="color:#008000; font-style:italic;"># utiliza um método chamado #formula</span>
<span style="color:#ff3333; font-weight:bold;">:time</span> <span style="color:#008000; font-style:italic;"># retorna um tipo Time</span>
<span style="color:#ff3333; font-weight:bold;">:datetime</span> <span style="color:#008000; font-style:italic;"># retorna um objeto do tipo DateTime</span></pre></div></div>

<p>Vamos fazer um exemplo mais interessante? Vamos acessar e recuperar os dados de uma planilha que está no endereço abaixo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">http:<span style="color: #000000; font-weight: bold;">//</span>www.kpbrasil.com<span style="color: #000000; font-weight: bold;">/</span>planilha_roo.xls</pre></div></div>

<p>Agora vamos fazer uma alteração em nosso código. Encontre a seguinte linha:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">excel = Excel.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'planilha_roo.xls'</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>E altere para:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">excel = Excel.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://www.kpbrasil.com/planilha_roo.xls'</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Apague as seguintes linhas:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Podemos também exportar nossa planilha inteira para o formato CSV</span>
excel.<span style="color:#9900CC;">to_csv</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'planilha_roo.csv'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Podemos exportar também para YAML</span>
file = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'planilha_roo.yaml'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
file <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> excel.<span style="color:#9900CC;">to_yaml</span>
file.<span style="color:#9900CC;">close</span></pre></div></div>

<p>E adicione ao final do arquivo:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Remove arquivos temporários gerado pela abertura do arquivo online</span>
excel.<span style="color:#9900CC;">remove_tmp</span></pre></div></div>

<p>Agora rode o script para ver o resultado.<br />
Você pode também acessar um arquivo zipado. Vamos acessar esta planilha que está zipada:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">http:<span style="color:#006600; font-weight:bold;">//</span>www.<span style="color:#9900CC;">kpbrasil</span>.<span style="color:#9900CC;">com</span><span style="color:#006600; font-weight:bold;">/</span>planilha_roo.<span style="color:#9900CC;">xls</span>.<span style="color:#9900CC;">zip</span></pre></div></div>

<p>Vamos fazer apenas uma alteração na seguinte linha:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Altere esta linha</span>
excel = Excel.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://www.kpbrasil.com/planilha_roo.xls'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Para esta, passando um parâmetro :zip</span>
excel = Excel.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://www.kpbrasil.com/planilha_roo.xls.zip'</span>, <span style="color:#ff3333; font-weight:bold;">:zip</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Agora rode o script novamente e veja o resultado.<br />
E ai, gostou do post? Se quiser saber mais sobre a gem roo, clique <a href="http://roo.rubyforge.org/">aqui</a>.</p>
<p>Não esqueça de deixar seu comentário.<br />
Um abraço e até a próxima.</p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/284TE69m1wE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/manipulando-planilhas-com-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/manipulando-planilhas-com-ruby/</feedburner:origLink></item>
		<item>
		<title>Uma Escada Diferente – TheFunTheory.com</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/IB4jZU0PXPs/</link>
		<comments>http://www.kpbrasil.com/br/destaques/uma-escada-diferente-thefuntheory-com/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 22:02:46 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Diversão]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[inovação]]></category>
		<category><![CDATA[TheFunTheory]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=133</guid>
		<description><![CDATA[O vídeo abaixo foi produzido pela galera da TheFunTheory, uma iniciativa da Volkswagen. Eles pegaram uma escada comum no que parece ser uma estação de metrô em Estocolmo na Suécia e fizeram desta escada comum um piano. O resultado é que mais pessoas começaram a utilizar a &#8216;escada piano&#8217; no lugar da escada rolante. Virou [...]]]></description>
			<content:encoded><![CDATA[<p>O vídeo abaixo foi produzido pela galera da <a href="http://www.thefuntheory.com">TheFunTheory</a>, uma iniciativa da Volkswagen. Eles pegaram uma escada comum no que parece ser uma estação de metrô em Estocolmo na Suécia e fizeram desta escada comum um piano. O resultado é que mais pessoas começaram a utilizar a <em>&#8216;escada piano&#8217;</em> no lugar da escada rolante. Virou pura diversão. É isso que eu chamo de pensar fora da caixa. Agora confira o vídeo: </p>
<p style="text-align:center">
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/2lXh2n0aPyw&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2lXh2n0aPyw&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>Gostou do post? Deixe seu comentário!<br />
Um grande abraço!</p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/IB4jZU0PXPs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/uma-escada-diferente-thefuntheory-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/uma-escada-diferente-thefuntheory-com/</feedburner:origLink></item>
		<item>
		<title>Diversão com Strings no Ruby</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/YJ1l1VpD9Us/</link>
		<comments>http://www.kpbrasil.com/br/destaques/diversao-com-strings-no-ruby/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 20:12:10 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Diversão]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[strings]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=112</guid>
		<description><![CDATA[Hoje é segunda-feira, 04 de Janeiro de 2010. Primeiro dia da semana, primeiro dia útil do ano. Todo mundo acreditando que 2010 é o &#8216;ANO&#8217; pra fazer acontecer. Pra realizar aquele projeto que tá engavetado, pra pedir um aumento, pra mudar de emprego, pra pedir a mão da sua namorada em casamento, afinal de contas [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje é segunda-feira, 04 de Janeiro de 2010. Primeiro dia da semana, primeiro dia útil do ano. Todo mundo acreditando que 2010 é o &#8216;ANO&#8217; pra fazer acontecer. Pra realizar aquele projeto que tá engavetado, pra pedir um aumento, pra mudar de emprego, pra pedir a mão da sua namorada em casamento, afinal de contas faz 8 anos que vocẽ tá enrolado. =]</p>
<p>Este é o ano para todo mundo mudar de vida, seja para pior ou melhor. E eu, por incrível que pareça, não consigo imaginar você mudando sua vida para melhor sem aprender a trabalhar com a classe String do Ruby. Strings são uma parte importante da nossa vida. Agora vamos deixar de conversa fiada e vamos agir. </p>
<p>Abra o seu <em>shell</em> (terminal) do seu SO e acesse o famoso <em>irb</em>.<br />
Vamos começar criando sua declaração de vitória, de quem 2010 as coisas vão acontecer para você. Digite:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">ano = <span style="color:#006666;">2010</span>
nome = <span style="color:#996600;">'Kirk Patrick'</span>
frase = <span style="color:#996600;">'vou ter uma vida melhor.'</span>
declaracao = <span style="color:#996600;">&quot;Neste ano de #{ano} eu, #{nome}, #{frase}.&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> declaracao
&nbsp;
<span style="color:#006600; font-weight:bold;">=&gt;</span> Neste ano de <span style="color:#006666;">2010</span> eu, Kirk Patrick, vou ter uma vida melhor.</pre></div></div>

<p>O que fizemos acima nada mais é do que declarar variáveis e atribuir valores a ela. O interessante do código acima está na variável declaracao. Nós usamos ela para interpolar ou concatenar os valores de nossas variáveis. Até aqui, nada de mais. </p>
<p>No ruby, você pode concatenar strings da seguinte forma:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Forma tradicionalmente utilizada por muita gente</span>
nome = <span style="color:#996600;">'Kirk'</span>
sobrenome = <span style="color:#996600;">' Patrick'</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> nome <span style="color:#006600; font-weight:bold;">+</span> sobrenome
<span style="color:#006600; font-weight:bold;">=&gt;</span> Kirk Patrick 
&nbsp;
<span style="color:#008000; font-style:italic;"># Você pode utilizar o método concat</span>
nome.<span style="color:#9900CC;">concat</span><span style="color:#006600; font-weight:bold;">&#40;</span>sobrenome<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> Kirk Patrick
&nbsp;
<span style="color:#008000; font-style:italic;"># Você pode também interpolar expressões arbitrárias do Ruby nas Strings</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{nome}&quot;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> Kirk Patrick
&nbsp;
<span style="color:#008000; font-style:italic;"># Outro exemplo de interpolação </span>
x = <span style="color:#006666;">10</span>
y = <span style="color:#006666;">2</span> 
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;O resultado da soma de x + y é #{x+y}&quot;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> O resultado da soma de x <span style="color:#006600; font-weight:bold;">+</span> y é <span style="color:#006666;">12</span></pre></div></div>

<p>Você pode perceber que o método <em>concat</em> chamado acima alterou o valor do nosso objeto (tudo em Ruby é um objeto). Antes o valor atribuído a ele era apenas <em>&#8216;Kirk&#8217;</em>. Depois de usar o método <em>concat</em> ele passou a ter o valor de <em>&#8216;Kirk Patrick&#8217;</em>, pois o valor <em>&#8216; Patrick&#8217;</em> que fora atribuído a variável <em>sobrenome</em> fora adicionado ao <em>nome</em>. O metódo <em>concat</em> faz a mesma coisa que <em>&#8216;<<'</em> (apêndice). Vamos conferir:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">nome = <span style="color:#996600;">'Kirk'</span>
sobrenome = <span style="color:#996600;">' Patrick'</span>
nome <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> sobrenome
<span style="color:#CC0066; font-weight:bold;">puts</span> nome
<span style="color:#006600; font-weight:bold;">=&gt;</span> Kirk Patrick</pre></div></div>

<p>Agora você não tem mais dúvida de que o método concat faz a mesma coisa que <<. Continuando:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">nome = <span style="color:#996600;">'Kirk Patrick'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Coloca o nome MAIÚSCULO mas não altera o valor da variável.</span>
nome.<span style="color:#9900CC;">upcase</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> KIRK PATRICK
&nbsp;
<span style="color:#008000; font-style:italic;"># Veja como a variável mantém o mesmo valor</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> nome
<span style="color:#006600; font-weight:bold;">=&gt;</span> Kirk Patrick</pre></div></div>

<p>O método upcase alterou apenas a saída da nossa variável, colocando toda nossa string em maiuscula. Agora, se você preferir, você pode dar uma força para o método upcase alterar o valor da nossa variável. Veja:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">nome = <span style="color:#996600;">'Kirk Patrick'</span>
nome.<span style="color:#9900CC;">upcase</span>!
<span style="color:#006600; font-weight:bold;">=&gt;</span> KIRK PATRICK
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos conferir se houve alteração no valor da variável</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> nome
<span style="color:#006600; font-weight:bold;">=&gt;</span> KIRK PATRICK <span style="color:#008000; font-style:italic;"># Alterou mesmo!</span></pre></div></div>

<p>Você tem disponível além do <em>upcase</em> os métodos <em>downcase</em>, <em>capitalize</em> e <em>swapcase</em>. Vamos ver cada um:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Usando downcase</span>
nome = <span style="color:#996600;">'KIRK PATRICK'</span>
nome.<span style="color:#9900CC;">downcase</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> kirk patrick
&nbsp;
<span style="color:#008000; font-style:italic;"># Forçando a alteração do valor da variável</span>
nome = <span style="color:#996600;">'KIRK PATRICK'</span>
nome.<span style="color:#9900CC;">downcase</span>!
<span style="color:#006600; font-weight:bold;">=&gt;</span> kirk patrick
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos ver se alterou mesmo</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> nome 
<span style="color:#006600; font-weight:bold;">=&gt;</span> kirk patrick
&nbsp;
<span style="color:#008000; font-style:italic;"># Agora vamos capitalizar nossa string</span>
nome.<span style="color:#9900CC;">capitalize</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> Kirk patrick
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos forçar uma alteração na variável</span>
nome.<span style="color:#9900CC;">capitalize</span>!
<span style="color:#006600; font-weight:bold;">=&gt;</span> Kirk patrick
&nbsp;
<span style="color:#008000; font-style:italic;"># Agora vamos aplicar um swapcase</span>
nome.<span style="color:#9900CC;">swapcase</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> kIRK PATRICK</pre></div></div>

<p>Tá gostando de brincar com strings né? Vamos mais além, para o alto até o infinito:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">sobre = <span style="color:#996600;">'Sou um cara legal'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos conferir o comprimento de nossa string</span>
sobre.<span style="color:#9900CC;">size</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">17</span>
&nbsp;
sobre.<span style="color:#9900CC;">length</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">17</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos ver se sobre está vazio</span>
sobre.<span style="color:#9900CC;">empty</span>?
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">false</span></pre></div></div>

<p>Eu sou um programador pior com Ruby. Obrigado Ruby!<br />
Vamos mais:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">texto = <span style="color:#996600;">'Casar é bom. O ruim é morrer queimado! (Brincadeira)'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Aplicando split e atribuindo o resultado, um array, para a variável a</span>
a = texto.<span style="color:#CC0066; font-weight:bold;">split</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;Casar&quot;</span>, <span style="color:#996600;">&quot;é&quot;</span>, <span style="color:#996600;">&quot;bom.&quot;</span>, <span style="color:#996600;">&quot;O&quot;</span>, <span style="color:#996600;">&quot;ruim&quot;</span>, <span style="color:#996600;">&quot;é&quot;</span>, <span style="color:#996600;">&quot;morrer&quot;</span>, <span style="color:#996600;">&quot;queimado!&quot;</span>, <span style="color:#996600;">&quot;(Brincadeira)&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Vamos se a é realmente um array</span>
a.<span style="color:#9966CC; font-weight:bold;">class</span> 
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#CC0066; font-weight:bold;">Array</span></pre></div></div>

<p>Você deve ter notado que o método split &#8216;quebrou&#8217; nossa string justamente onde havia espaços em branco. Será? Vamos tirar à prova:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">texto = <span style="color:#996600;">'la le li lo... Lú Patinadora, la le li lo Lú Patinadora.'</span>
texto.<span style="color:#CC0066; font-weight:bold;">split</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;la&quot;</span>, <span style="color:#996600;">&quot;le&quot;</span>, <span style="color:#996600;">&quot;li&quot;</span>, <span style="color:#996600;">&quot;lo...&quot;</span>, <span style="color:#996600;">&quot;Lú&quot;</span>, <span style="color:#996600;">&quot;Patinadora,&quot;</span>, <span style="color:#996600;">&quot;la&quot;</span>, <span style="color:#996600;">&quot;le&quot;</span>, <span style="color:#996600;">&quot;li&quot;</span>, <span style="color:#996600;">&quot;lo&quot;</span>, <span style="color:#996600;">&quot;Lú&quot;</span>, <span style="color:#996600;">&quot;Patinadora.&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># O split pode receber algum parâmetro. </span>
colunas = <span style="color:#996600;">'ENTRADA | SAÍDA | SALDO'</span>
colunas.<span style="color:#CC0066; font-weight:bold;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'|'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;ENTRADA&quot;</span>, <span style="color:#996600;">&quot;SAÍDA&quot;</span>, <span style="color:#996600;">&quot;SALDO&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span></pre></div></div>

<p>Existe também o método gsub. Veja:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">enigma = <span style="color:#996600;">'T4lvez você consig4 s4ber que 4quel4 c4s4 é minh4.'</span>
enigma.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'4'</span>,<span style="color:#996600;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
 <span style="color:#006600; font-weight:bold;">=&gt;</span> Talvez você consiga saber que aquela casa é minha</pre></div></div>

<p>O que fizemos acima foi passar dois parâmetros para o gsub onde o primeiro localiza o caractere &#8216;4&#8242; na minha string e substitui pelo segundo parâmetro que é o &#8216;a&#8217;. </p>
<p>Podemos também justificar texto com o Ruby.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">texto = <span style="color:#996600;">'deploy'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Alinhando 10 caracteres à esquerda.</span>
texto.<span style="color:#9900CC;">ljust</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;deploy    &quot;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Alinhando 10 caracteres à direita</span>
texto.<span style="color:#9900CC;">rjust</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;    deploy&quot;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Centralizando</span>
texto.<span style="color:#9900CC;">center</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;  deploy  &quot;</span></pre></div></div>

<p>Vamos ver algumas coisas diferentes.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">letra = <span style="color:#996600;">'a'</span>
letra.<span style="color:#9900CC;">succ</span> <span style="color:#008000; font-style:italic;"># Vai para o sucessor de a, no caso b. </span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> b
&nbsp;
letra.<span style="color:#9966CC; font-weight:bold;">next</span> <span style="color:#008000; font-style:italic;"># Faz a mesma coisa que succ</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> b
&nbsp;
texto = <span style="color:#996600;">'Uma linha<span style="color:#000099;">\n</span>Outra linha'</span>
<span style="color:#CC0066; font-weight:bold;">print</span> texto
<span style="color:#006600; font-weight:bold;">=&gt;</span> Uma linha
<span style="color:#006600; font-weight:bold;">=&gt;</span> Outra linha
&nbsp;
texto.<span style="color:#9900CC;">dump</span> <span style="color:#008000; font-style:italic;"># Escapa caracteres especiais</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\&quot;</span>Uma linha<span style="color:#000099;">\\</span>nOutra linha<span style="color:#000099;">\&quot;</span>&quot;</span>
&nbsp;
texto.<span style="color:#9900CC;">inspec</span> <span style="color:#008000; font-style:italic;"># Faz o mesmo que dump</span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\&quot;</span>Uma linha<span style="color:#000099;">\\</span>nOutra linha<span style="color:#000099;">\&quot;</span>&quot;</span>
&nbsp;
texto = <span style="color:#996600;">'ruby'</span>
texto.<span style="color:#9900CC;">crypt</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'az'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># Passa dois caracteres como salt para o método crypt. </span>
<span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;az0vDqRxYPlCU&quot;</span> <span style="color:#008000; font-style:italic;"># O valor vai variar de acordo com sua plataforma (Win/Linux/Mac)</span></pre></div></div>

<p>Bem, por enquanto é isso.<br />
Não esqueça de comentar o post.<br />
Um abraço e até a próxima. </p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/YJ1l1VpD9Us" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/diversao-com-strings-no-ruby/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/diversao-com-strings-no-ruby/</feedburner:origLink></item>
		<item>
		<title>Você trabalha com TI?</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/XlMl-z7uCiY/</link>
		<comments>http://www.kpbrasil.com/br/destaques/voce-trabalha-com-ti/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 15:35:03 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Diversão]]></category>
		<category><![CDATA[Off-Topic]]></category>
		<category><![CDATA[parentes]]></category>
		<category><![CDATA[ti]]></category>
		<category><![CDATA[trabalho]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=105</guid>
		<description><![CDATA[Se você trabalha com TI, você já deve ter passado pela situação de ter que arrumar os computadores dos seus parentes e amigos. Eu já passei por isso. Não acho ruim consertar os computadores de parentes e amigos. O que eu acho ruim é &#8216;folga&#8217; que vai acontecendo decorrente disto. Então, na hora em que [...]]]></description>
			<content:encoded><![CDATA[<p>Se você trabalha com TI, você já deve ter passado pela situação de ter que arrumar os computadores dos seus parentes e amigos. Eu já passei por isso. Não acho ruim consertar os computadores de parentes e amigos. O que eu acho ruim é <em>&#8216;folga&#8217;</em> que vai acontecendo decorrente disto. Então, na hora em que você for solicitado por algum parente para arrumar o computador, pense bem antes de ajudar. Pois você pode acabar com um filho pra criar. A tira abaixo, publicada no blog do <a title="Clique para acessar o blog do Diego Roriz" href="http://www.diegororiz.com.br" target="_blank">Diego Roriz</a>, ilustra bem esta história:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-106" title="tio-computador" src="http://www.kpbrasil.com/br/wp-content/uploads/2010/01/tio-computador-oatmeal.jpg" alt="tio-computador" width="560" height="3616" /></p>
<p>Gostou do post? Comente!<br />
Um abraço e até a próxima.</p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/XlMl-z7uCiY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/voce-trabalha-com-ti/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/voce-trabalha-com-ti/</feedburner:origLink></item>
		<item>
		<title>Filtrando Informações Sensíveis nos Logs</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/jmd8EXr1lwA/</link>
		<comments>http://www.kpbrasil.com/br/destaques/filtrando-informacoes-sensiveis-nos-logs/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 12:59:19 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[logs]]></category>
		<category><![CDATA[railscasts]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=86</guid>
		<description><![CDATA[A grande maioria das aplicações trabalha com alguma informação sensível como login e senha de usuário, números de cartão de crédito, dados de contas bancárias, etc.
Para quem desconhece, o Rails armazena estes parâmetros em texto simples nos logs. Isto significa que se você não tratar estes parâmetros, estas informações estarão disponíveis para quem tiver acesso [...]]]></description>
			<content:encoded><![CDATA[<p>A grande maioria das aplicações trabalha com alguma informação sensível como login e senha de usuário, números de cartão de crédito, dados de contas bancárias, etc.</p>
<p>Para quem desconhece, o Rails armazena estes parâmetros em texto simples nos logs. Isto significa que se você não tratar estes parâmetros, estas informações estarão disponíveis para quem tiver acesso aos seus logs.</p>
<p>Agora vamos tratar estas informações utilizando um recurso disponibilizado pelo próprio Rails. Primeiramente crie sua aplicação de exemplo:</p>
<p>Obs: para esta aplicação eu utilizarei o mysql. Mas você pode utilizar qualquer banco de dados que desejar.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rails <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-d</span> mysql</pre></div></div>

<p>Não se esqueça de acessar a pasta da sua aplicação e configurar o arquivo database.yml, disponível dentro da pasta config, com o usuário e senha do seu banco de dados.</p>
<p>Depois de configurado sua base de dados vamos criá-lo chamando a tarefa rake específica para isso:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rake db:create</pre></div></div>

<p>Vamos agora criar um scaffold para cadastrar os usuários da nossa aplicação:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">script<span style="color: #000000; font-weight: bold;">/</span>generate scaffold User nome:string <span style="color: #c20cb9; font-weight: bold;">login</span>:string password:string</pre></div></div>

<p>Rode a migrate:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rake db:migrate</pre></div></div>

<p>Vamos agora iniciar o servidor da nossa aplicação:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">script<span style="color: #000000; font-weight: bold;">/</span>server</pre></div></div>

<p>Remova o arquivo <em>index.htm</em> da sua pasta <em>public</em> e acrescente ao início do seu arquivo <em>routes.rb</em> a seguinte linha de código:</p>

<div class="wp_syntax"><div class="code"><pre class="rails" style="font-family:monospace;">map.<span style="color:#9900CC;">root</span> <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:users</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'new'</span></pre></div></div>

<p>A linha acima informa ao Rails que a rota especificada em map.root deve ser aplicada quando requisitada a raiz do site.</p>
<p>Agora acesse no seu browser: <a href="http://localhost:3000">http://localhost:3000</a></p>
<p>Você vai cair na tela de cadastro de usuários.<br />
Cadastre um usuário e em seguida veja o log da sua aplicação. Você vai encontrar linhas semelhantes a estas:</p>
<p><img src="http://www.kpbrasil.com/br/wp-content/uploads/2010/01/log1.png" alt="log1" title="log1" width="580" height="313" class="aligncenter size-full wp-image-93" /></p>
<p>Obs: como estamos utilizando o ambiente de desenvolvimento, você poderá visualizar as consultas SQL feitas por sua aplicação. Já no ambiente de produção isto NÃO acontece. Você não visualizará estas consultas SQL no ambiente de produção. </p>
<p>Você percebeu que a senha do seu usuário está acessível para qualquer um que tenha acesso aos logs? Isto é um problema.</p>
<p>Vamos resolvê-lo. Abra o arquivo <em>application_controller.rb</em> na pasta <em>controller</em> da sua aplicação e adicione e a seguinte linha:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">filter_parameter_logging :password</pre></div></div>

<p>O que a linha acima faz?<br />
Ela esconde os dados do parâmetro passado acima, no caso <em>:password</em>, no log. Vamos testá-la? Então reinicie seu server (para carregar as alterações que efetuamos no <em>application_controller.rb</em>) e insira um novo usuário na sua aplicação. Veja agora seu log. Ele deverá ser semelhante a este: </p>
<p><img src="http://www.kpbrasil.com/br/wp-content/uploads/2010/01/log2.png" alt="log2" title="log2" width="580" height="310" class="aligncenter size-full wp-image-95" /></p>
<p>Note que você não consegue ver mais a senha do usuário no log. A senha foi substituida por [FILTERED]. Ou seja, ela foi filtrada. Para saber mais sobre o método <em>filter_parameter_logging</em>, <a href="http://api.rubyonrails.org/classes/ActionController/Base.html#M000647">clique aqui</a>.</p>
<p>Gostou do post? Tem dúvidas?<br />
Não deixe de comentar.</p>
<p><strong>Nota:</strong><br />
<em><br />
Este é um artigo, de uma série que será publicada, com base nos screencasts disponíveis no site <a href="http://www.railscasts.com">Railscasts</a>. Você pode conferir o screencast que serviu como base para este artigo clicando <a href="http://railscasts.com/episodes/9-filtering-sensitive-logs">aqui</a>.  </em></p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/jmd8EXr1lwA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/filtrando-informacoes-sensiveis-nos-logs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/filtrando-informacoes-sensiveis-nos-logs/</feedburner:origLink></item>
		<item>
		<title>Artigos baseados no Railscasts</title>
		<link>http://feedproxy.google.com/~r/kpbrasil/~3/cwbbdpO8V-w/</link>
		<comments>http://www.kpbrasil.com/br/destaques/artigos-baseados-no-railscasts/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 11:35:28 +0000</pubDate>
		<dc:creator>Kirk Patrick</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[railscasts]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[screecasts]]></category>

		<guid isPermaLink="false">http://www.kpbrasil.com/br/?p=82</guid>
		<description><![CDATA[
A partir desta semana vou começar uma série de artigos curtos, baseados nos screencasts disponíveis no Railscasts. Para quem não conhece, o Railscasts é um site onde você pode encontrar inúmeros screencasts sobre Rails. Os screencasts são de excelente qualidade, são curtos e vão direto ao assunto.
Mas porque isso? Vou fazer isso porque estou estudando [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-83" title="Ruby on Rails" src="http://www.kpbrasil.com/br/wp-content/uploads/2010/01/ruby-on-rails.jpg" alt="Ruby on Rails" width="580" height="219" /></p>
<p>A partir desta semana vou começar uma série de artigos curtos, baseados nos screencasts disponíveis no <a title="Clique para acessar o Railscasts.com" href="http://www.railscasts.com" target="_blank">Railscasts</a>. Para quem não conhece, o Railscasts é um site onde você pode encontrar inúmeros screencasts sobre Rails. Os screencasts são de excelente qualidade, são curtos e vão direto ao assunto.</p>
<p>Mas porque isso? Vou fazer isso porque estou estudando Ruby e o framework Rails com mais profundidade. O objetivo é que desejo me tornar um desenvolvedor melhor. E como Ruby e Rails são ferramentas que uso no dia-a-dia, é minha obrigação fazer bom uso delas. E para fazer bom uso, preciso conhecê-las melhor, ter intimidade com as ferramentas.</p>
<p>Não deixe de conferir o blog.<br />
Um abraço e até o próximo post.</p>
<img src="http://feeds.feedburner.com/~r/kpbrasil/~4/cwbbdpO8V-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kpbrasil.com/br/destaques/artigos-baseados-no-railscasts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kpbrasil.com/br/destaques/artigos-baseados-no-railscasts/</feedburner:origLink></item>
	</channel>
</rss>

