<?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>Uilton Dutra</title>
	<atom:link href="http://www.uilton.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.uilton.com</link>
	<description>Tecnologia com uma pitada de empreendedorismo.</description>
	<lastBuildDate>Wed, 03 Mar 2010 02:00:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mulheres levantem a mão!</title>
		<link>http://www.uilton.com/mulheres-levantem-a-mao-333</link>
		<comments>http://www.uilton.com/mulheres-levantem-a-mao-333#comments</comments>
		<pubDate>Sun, 28 Feb 2010 23:08:38 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Computação]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=333</guid>
		<description><![CDATA[Você não precisa ler relatórios estatísticos ou visitar a lista de programadores notáveis da Wikipedia para perceber que nós não temos muitas mulheres trabalhando com computação. Para quem trabalha na área este fato é tão natural que nós nem mesmo falamos sobre o assunto (a não ser quando alguém faz uma piada).
Eu sempre pensei que [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uilton.com/wp-content/uploads/2008/10/hand_raised4.jpg" alt="" title="hand_raised" width="150" height="178" class="alignright size-full wp-image-771" />Você não precisa ler relatórios estatísticos ou visitar a <a title="List of programmers" href="http://en.wikipedia.org/w/index.php?title=List_of_programmers" target="_blank">lista de programadores notáveis da Wikipedia</a> para perceber que nós não temos muitas mulheres trabalhando com computação. Para quem trabalha na área este fato é tão natural que nós nem mesmo falamos sobre o assunto (a não ser quando alguém faz uma piada).</p>
<p>Eu sempre pensei que o número pequeno de mulheres não é um problema apenas da computação, porque é fácil observar que as ciências tendem a ter um número maior de homens. Mas chamou a minha atenção que a disparidade da ciência da computação é estática ou está piorando de acordo com este <a title="Computer Science Takes Steps to Bring Women to the Fold" href="http://www.nytimes.com/2007/04/17/science/17comp.html?_r=1&amp;oref=slogin" target="_blank">artigo publicado no New York Times</a>:</p>
<blockquote><p>“For decades, undergraduate women have been moving in ever greater numbers into science and engineering departments at American universities. Yet even as they approach or exceed enrollment parity in mathematics, biology and other fields, there is one area in which their presence relative to men is static or even shrinking: computer science.”</p></blockquote>
<p>De acordo com os especialistas, o fator social é determinante para explicar porque as mulheres não escolhem ciência da computação. Um <a title="Why Women Shy Away From Careers In Science And Math" href="http://www.sciencedaily.com/releases/2005/05/050511134757.htm" target="_blank">artigo na ScienceDaily</a>, afirma que as mulheres evitam as ciências e as engenharias porque elas pensam que é uma atividade solitária. Em complemento, no artigo citado do New York Times, o cientista Dr. Jan Cuny, afirma que o estereótipo nerd é um grande problema.</p>
<p>A discriminação também é apontada como um fator de distância, mas eu acredito que é igual ao das outras áreas profissionais. O que acontece é que o pequeno número de mulheres trabalhando com computação talvez faça crescer o sentimento de discriminação.</p>
<p>A <a title="THE SCIENCE OF GENDER AND SCIENCE " href="http://www.edge.org/3rd_culture/debate05/debate05_index.html" target="_blank">discussão entre Steven Pinker e Elizabeth Spelke de Harvard</a> causou polêmica. Eles debateram a idéia de que existe diferença de habilidades entre os homens e as mulheres, e que este fato poderia definir a escolha das carreiras.</p>
<p>São muitas as suposições, mas a resposta não é simples. Ações como o projeto <a href="http://www.cs.brown.edu/orgs/artemis/2009/index.html" target="_blank">Artemis</a> são louváveis para incentivar o ingresso de mulheres nas carreiras de ciência e tecnologia. Sem dúvida a organização e a sensibilidade das mulheres faria muito bem a computação.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/mulheres-levantem-a-mao-333/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Entendendo o leitor de notícias</title>
		<link>http://www.uilton.com/entendendo-o-leitor-de-noticias-724</link>
		<comments>http://www.uilton.com/entendendo-o-leitor-de-noticias-724#comments</comments>
		<pubDate>Sun, 28 Feb 2010 20:31:03 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Introdução a programação]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=724</guid>
		<description><![CDATA[No artigo anterior foi apresentado um programa que lê as últimas noticias do site www.g1.com.br. Você conseguiu inferir o que cada linha do programa faz?

require 'rss'

O método require serve para carregar bibliotecas ou arquivos Ruby. Uma biblioteca é um conjunto de rotinas prontas que você pode utilizar para agilizar o desenvolvimento de programas. No exemplo, [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="http://www.uilton.com/comecando-a-programar-com-ruby-594" target="_blank">artigo anterior</a> foi apresentado um programa que lê as últimas noticias do site <a href="http://www.g1.com.br">www.g1.com.br</a>. Você conseguiu inferir o que cada linha do programa faz?</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;">'rss'</span></pre></div></div>

<p>O método <em>require</em> serve para carregar bibliotecas ou arquivos Ruby. Uma biblioteca é um conjunto de rotinas prontas que você pode utilizar para agilizar o desenvolvimento de programas. No exemplo, nós carregamos a biblioteca <em>rss</em> que oferece métodos para ler <a href="http://pt.wikipedia.org/wiki/Feed" target="_blank">feeds</a>. Para entender melhor como esta biblioteca facilita o trabalho, crie um novo arquivo no editor de textos e cole o código abaixo:</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;">'open-uri'</span>
feed  = <span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;http://g1.globo.com/Rss2/0,,AS0-5597,00.xml&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">read</span>
<span style="color:#CC0066; font-weight:bold;">puts</span><span style="color:#006600; font-weight:bold;">&#40;</span>feed<span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Executando este código no terminal (mesmo procedimento do artigo anterior), você vai ver na tela o conteúdo que o G1 envia para você. A biblioteca <em>rss</em> lê este conteúdo e o disponibiliza de uma maneira fácil de manipular dentro do Ruby. Na código abaixo estamos usando a biblioteca:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># RSS do portal de notícias www.g1.com.br</span>
feed = <span style="color:#6666ff; font-weight:bold;">RSS::Parser</span>.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;http://g1.globo.com/Rss2/0,,AS0-5597,00.xml&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></div></div>

<p>Sem ela você teria fazer todo o trabalho. Quando você instala o Ruby, ele vem com diversas bibliotecas para facilitar a sua vida. Você também pode instalar e criar bibliotecas, nós vamos falar sobre isso mais à frente. No código acima, o “#” serve para fazer um comentário (é um trecho que não é executado).</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Você deseja ver notícias sobre:&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;(a) Cinema&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;(b) Economia&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;(c) Mundo&quot;</span></pre></div></div>

<p>O método <em>puts</em> imprime uma linha de texto na tela. Note que em Ruby declara-se pedaços de texto dentro de aspas.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">opcao=<span style="color:#CC0066; font-weight:bold;">gets</span>.<span style="color:#CC0066; font-weight:bold;">chomp</span></pre></div></div>

<p>Como em linguagem matemática, neste trecho estamos atribuindo à variável <em>opcao</em> o valor que o método <em>gets</em> retorna.  No exemplo, o método <em>gets</em> está lendo uma linha no console. Quando você executa o programa, digita a opção e pressiona enter, a variável recebe o valor que você digitou. Se você não está familiarizado com o conceito de variável, pense nela como uma gaveta onde você guarda algo par usar depois. Quando você lê uma linha no console, o conteúdo que o método <em>gets</em> retorna vem com o código do enter no final. Para remove-lo nós utilizamos o método <em>chomp</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">if</span> opcao==<span style="color:#996600;">&quot;a&quot;</span>
  quer_ver=<span style="color:#996600;">&quot;G1 - Cinema&quot;</span>
<span style="color:#9966CC; font-weight:bold;">elsif</span> opcao==<span style="color:#996600;">&quot;b&quot;</span>
  quer_ver=<span style="color:#996600;">&quot;G1 - Economia&quot;</span>
<span style="color:#9966CC; font-weight:bold;">elsif</span> opcao==<span style="color:#996600;">&quot;c&quot;</span>
  quer_ver=<span style="color:#996600;">&quot;G1 - Mundo&quot;</span>
<span style="color:#9966CC; font-weight:bold;">else</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Opção inválida.&quot;</span>
  abort
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>As notícias do site G1 são divididas em categorias. Para mostrar as notícias da categoria que o usuário selecionou, nós precisamos converter a letra que ele digitou na categoria correspondente. Para fazer isso utilizamos a estrutura condicional if. Este comando serve para impor condições à execução do código. No exemplo estamos atribuindo a variável quer_ver o nome da categoria do G1 de acordo com a letra que o usuário digitou. Note que apenas o código que tem a condição verdadeira é executado. Em português fica fácil de entender:</p>

<div class="wp_syntax"><div class="code"><pre class="natural" style="font-family:monospace;">Se opcao =  a
   quer_ver = “Cinema”
Senão, se opcao = b
   quer_ver = “Economia”
Senão, se opcao = c
   quer_ver = “Mundo”
Senão
   Opção inválida.</pre></div></div>

<p>Observe que em Ruby para fazer uma comparação de igualdade, utilizamos dois sinais de igual e não apenas um. Funciona desta maneira para diferenciar uma comparação de uma atribuição. O método <em>abort</em> serve para encerrar a execução do programa.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Notícias sobre &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> quer_ver <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">&quot;:&quot;</span></pre></div></div>

<p>Para juntar pedaços de texto, nós utilizamos o símbolo “+”.</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">feed.<span style="color:#9900CC;">items</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>noticia<span style="color:#006600; font-weight:bold;">|</span>
   <span style="color:#9966CC; font-weight:bold;">if</span> noticia.<span style="color:#9900CC;">category</span>.<span style="color:#9900CC;">content</span>==quer_ver
        <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;* &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> noticia.<span style="color:#9900CC;">title</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>No trecho acima nós temos um loop e uma estrutura condicional. <em>feed.items</em> contém todas as notícias que foram lidas pela biblioteca rss. Imagine como se fosse uma tabela, cada linha tem uma notícia e cada coluna tem as propriedades (category, title, etc.). O método <em>each</em> passa por todas as linhas da tabela e, no exemplo, carrega na variável <em>noticia</em> o conteúdo da linha que ele está lendo. Com o if testamos se a categoria da notícia que está sendo lida pelo <em>each</em> é igual a que o usuário selecionou. Se ela for igual, então utilizamos o <em>puts</em> para imprimir na tela o título da notícia.</p>
<p>Para quem esta confortável com a linguagem eu proponho um desafio. Se não existirem notícias com o assunto que o usuário selecionou, mostre a mensagem: “Nenhuma notícia com o assunto selecionado.” Se você está achando difícil, não se preocupe. A cada artigo vai se sentir mais confiante.</p>
<blockquote><p>Em áudio (<a href="http://www.uilton.com/wp-content/uploads/2010/02/entendendo-o-leitor-de-noticias-724.mp3">download</a>): </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/entendendo-o-leitor-de-noticias-724/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.uilton.com/wp-content/uploads/2010/02/entendendo-o-leitor-de-noticias-724.mp3" length="891648" type="audio/mpeg" />
		</item>
		<item>
		<title>Multiplique bons programadores</title>
		<link>http://www.uilton.com/multiplique-bons-programadores-678</link>
		<comments>http://www.uilton.com/multiplique-bons-programadores-678#comments</comments>
		<pubDate>Fri, 26 Feb 2010 21:33:17 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Opinião]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=678</guid>
		<description><![CDATA[
É recorrente a discussão sobre a falta de programadores qualificados e como é difícil fazer a seleção de talentos. Nas duas últimas semanas me deparei com um post sarcástico do Carlos Brando, com um texto do Jeff Atwood falando que a maioria dos candidatos não sabe programar e ontem, no jornal da Globo, Sardenberg comentou [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uilton.com/wp-content/uploads/2010/02/amoeba-fission4.jpg" alt="" title="Amoeba fission" width="184" height="159" class="alignright size-full wp-image-757" /></p>
<p>É recorrente a discussão sobre a falta de programadores qualificados e como é difícil fazer a seleção de talentos. Nas duas últimas semanas me deparei com um <a href="http://www.nomedojogo.com/2010/02/17/programadores-incompetentes-sao-otimos-para-o-mercado/" target="_blank">post sarcástico do Carlos Brando</a>, com <a href="http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html" target="_blank">um texto do Jeff Atwood</a> falando que a maioria dos candidatos não sabe programar e ontem, no jornal da Globo, Sardenberg comentou que a falta de qualificação é principal fator para as vagas sobrando no mercado.</p>
<p>Acho ingênuo tratar deste assunto como se na área de tecnologia o problema fosse naturalmente pior. Quando foi a última vez que você foi bem atendido em uma rede de fast-food? Empreiteiras, empresas de telemarketing, lojas de roupas etc, todos os setores sofrem com este problema. Mesmo exigindo diferentes graus de qualificação, sempre existem candidatos aquém do que é necessário. E estes, muitas vezes, são contratados por falta de opção ou para reduzir custos.</p>
<p>A situação nas empresas de desenvolvimento de software é agravada pela forma como usualmente trabalhamos. Se fizermos uma comparação com a construção civil, na obra de um prédio, você encontra ajudantes de pedreiro, pedreiros, mestres de obras, engenheiros civis etc. Para desenvolver um sistema você também pode ter diferentes perfis de profissionais. Só que isso acaba não acontecendo. </p>
<p>Nos projetos de software os requisitos mudam com maior freqüência, a especificação geralmente é superficial e quem acabada matando no peito é o programador. Desta maneira, a formação exigida dos programadores é alta. E como não é uma cirurgia coronária, se o programador não dá conta, o sistema atrasa ou sai funcionando a moda Frankenstein.</p>
<p>Se os programadores bons codificarem menos e acompanharem mais o trabalho de seus pares com nível técnico inferior, é possível multiplicar os resultados com qualidade. Existem ferramentas que facilitam bastante este trabalho, podemos citar sistemas de controle de versão, behavior driven development, code review etc.</p>
<p>Esta abordagem é mais vantajosa do que tentar manter um time de estrelas. Porque não é fácil encontrar bons programdores procurando emprego, profissionais medianos custam menos e privilegiar a padronização de processos permite ganhar escala mais rápido.</p>
<p>Chega de reclamar da falta de mão de obra qualificada, é necessário encontrar maneiras de resolver o problema com o contingente disponível. Para mim a solução está em multiplicar bons programadores colocando-os no papel de inspirar e acompanhar o trabalho da equipe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/multiplique-bons-programadores-678/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Farfalle com Brócolis</title>
		<link>http://www.uilton.com/farfalle-com-brocolis-642</link>
		<comments>http://www.uilton.com/farfalle-com-brocolis-642#comments</comments>
		<pubDate>Sun, 21 Feb 2010 17:03:37 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Culinária]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=642</guid>
		<description><![CDATA[Esta é uma receita que eu gosto bastante &#8211; a ponto de comer até enjoar. O farfalle fica muito bem com molhos encorpados, mas apesar de usar creme de leite neste prato, fica leve porque vai apenas peito de peru e brócolis para acompanhar.
Ingredientes:

150 g de peito de peru defumado fatiado e cortado em tiras;
1 [...]]]></description>
			<content:encoded><![CDATA[<p>Esta é uma receita que eu gosto bastante &#8211; a ponto de comer até enjoar. O farfalle fica muito bem com molhos encorpados, mas apesar de usar creme de leite neste prato, fica leve porque vai apenas peito de peru e brócolis para acompanhar.</p>
<p><strong>Ingredientes:</strong></p>
<ul>
<li>150 g de peito de peru defumado fatiado e cortado em tiras;</li>
<li>1 xícara e meia de brócolis;</li>
<li>1 lata de creme de leite;</li>
<li>250 g de macarrão farfalle;</li>
<li>Noz moscada, sal e queijo ralado a gosto.</li>
</ul>
<p><strong>Modo de preparo:</strong></p>
<p>Lave, corte e cozinhe o brócolis al dente (só um susto). Se preferir, pode usar brócolis congelado para poupar tempo. Em um recipiente, misture o peito de peru, o brócolis, o creme de leite e tempere com sal e noz moscada a gosto. Cozinhe o macarrão em água fervente e sal até ficar al dente. Escorra e junte ao molho. Coloque em um refratário, polvilhe queijo ralado em cima e leve ao forno médio-alto (200°C) para aquecer por cerca de 10 minutos.</p>
<p>É interessante como a noz moscada faz diferença no sabor deste prato, me lembra algumas falas do <a href="http://www.estomagoofilme.com.br" target="_blank">filme Estômago</a>. Na prisão os detentos estão comendo: <em>Essa comida tá uma merda, hein? Bota um poquinho de alecrim e pimenta do reino melhora a comida&#8230; Tu sabe cozinhar parmalat?</em></p>
<p>Bom apetite!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/farfalle-com-brocolis-642/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Começando a programar com Ruby</title>
		<link>http://www.uilton.com/comecando-a-programar-com-ruby-594</link>
		<comments>http://www.uilton.com/comecando-a-programar-com-ruby-594#comments</comments>
		<pubDate>Sat, 20 Feb 2010 21:19:45 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Introdução a programação]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=594</guid>
		<description><![CDATA[Assim como você não sabe como a sua calculadora funciona internamente, para programar em uma linguagem como o Ruby, você não precisa conhecer muito além da própria linguagem.
No primeiro artigo foram apresentados alguns conceitos, agora vamos instalar o Ruby para começar a programar de verdade.
No Windows:

 Visite o site http://www.ruby-lang.org/pt/downloads/.
 Na seção “Ruby em Windows” [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uilton.com/wp-content/uploads/2010/02/199510042.jpg" alt="" title="Your brain sucked dry" width="182" height="150" class="alignright size-full wp-image-610" />Assim como você não sabe como a sua calculadora funciona internamente, para programar em uma linguagem como o Ruby, você não precisa conhecer muito além da própria linguagem.</p>
<p><a href="http://www.uilton.com/programacao-para-nao-programadores-527" target="_blank">No primeiro artigo</a> foram apresentados alguns conceitos, agora vamos instalar o Ruby para começar a programar de verdade.</p>
<p><strong>No Windows:</strong></p>
<ol>
<li> Visite o site <a href="http://www.ruby-lang.org/pt/downloads/" target="_blank">http://www.ruby-lang.org/pt/downloads/</a>.</li>
<li> Na seção “Ruby em Windows” faça o download do Ruby 1.8.6 One-Click Installer.</li>
<li> Execute o instalador e prossiga a instalação. Quando chegar na tela “Choose Components”, certifique-se de que “Enable RubyGems” está marcado e continue.</li>
<li> Para verificar se o Ruby foi instalado corretamente, clique no menu Iniciar &gt; Acessórios &gt; Prompt de Comando. Quando a janela abrir, digite &#8220;<em>ruby -v</em>&#8220;. Este comando deve retornar algo como “ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]”.</li>
<li> Para editar os programas nós vamos usar o editor de textos Notepad, que você encontra em menu Iniciar &gt; Acessórios &gt; Notepad.</li>
</ol>
<p><strong>No Mac OS X:</strong></p>
<p>Se você utiliza o OS X 10.2 (Jaguar) ou superior, o Ruby já está instalado para você. Para usar basta abrir o terminal em Applications &gt; Utilities &gt; Terminal. Para editar programas nós vamos utilizar o editor TextEdit que você encontra em Applications &gt; TextEdit. Depois de abrir o editor, clique em Format &gt; Make Plain Text, antes de começar a editar o código.</p>
<p><strong>No Linux:</strong></p>
<p>Se você utiliza o Ubuntu, basta abrir o terminal e digitar “<em>sudo apt-get install ruby irb rdoc</em>” para instalar o Ruby. Nós vamos utilizar o editor gedit para editar o código do programas.</p>
<p><strong>Outros sistemas operacionais e versões:</strong></p>
<p>Você pode obter mais informações sobre a instalação do Ruby em: <a href="http//www.ruby-lang.org/pt/downloads/" target="_blank">http//www.ruby-lang.org/pt/downloads/</a>.</p>
<p>Com o Ruby instalado, vamos editar o primeiro programa. Clique com o botão direito (crtl+clique no Mac) no seu desktop e crie uma pasta com o nome “codigo”.  Vamos guardar os programas nesta pasta.  Abra o editor de textos do seu sistema e bora se divertir:</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;">'rss'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># RSS do portal de notícias www.g1.com.br</span>
feed  = <span style="color:#6666ff; font-weight:bold;">RSS::Parser</span>.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;http://g1.globo.com/Rss2/0,,AS0-5597,00.xml&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Você deseja ver notícias sobre:&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;(a) Cinema&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;(b) Economia&quot;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;(c) Mundo&quot;</span>
opcao=<span style="color:#CC0066; font-weight:bold;">gets</span>.<span style="color:#CC0066; font-weight:bold;">chomp</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">if</span> opcao==<span style="color:#996600;">&quot;a&quot;</span>
  quer_ver=<span style="color:#996600;">&quot;G1 - Cinema&quot;</span>
<span style="color:#9966CC; font-weight:bold;">elsif</span> opcao==<span style="color:#996600;">&quot;b&quot;</span>
  quer_ver=<span style="color:#996600;">&quot;G1 - Economia&quot;</span>
<span style="color:#9966CC; font-weight:bold;">elsif</span> opcao==<span style="color:#996600;">&quot;c&quot;</span>
  quer_ver=<span style="color:#996600;">&quot;G1 - Mundo&quot;</span>
<span style="color:#9966CC; font-weight:bold;">else</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Opção inválida.&quot;</span>
  abort
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Notícias sobre &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> quer_ver <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">&quot;:&quot;</span>
&nbsp;
feed.<span style="color:#9900CC;">items</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>noticia<span style="color:#006600; font-weight:bold;">|</span>
   <span style="color:#9966CC; font-weight:bold;">if</span> noticia.<span style="color:#9900CC;">category</span>.<span style="color:#9900CC;">content</span>==quer_ver
        <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;* &quot;</span> <span style="color:#006600; font-weight:bold;">+</span> noticia.<span style="color:#9900CC;">title</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Quer ver o programa funcionando? Depois de colar o código no editor de texto, salve no diretório Desktop\codigo com o nome “noticias.rb”. Para executar o programa abra o prompt de comando ou terminal e digite:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> Desktop
<span style="color: #7a0874; font-weight: bold;">cd</span> codigo
ruby noticias.rb</pre></div></div>

<p>Gostou? O programa acima lê as últimas notícias do site <a href="http://www.g1.com.br" target="_blank">www.g1.com.br</a> e exibe os títulos de acordo com o assunto escolhidos pelo usuário.</p>
<p>Antes de explicar os detalhes deste programa, eu peço que você tente ler o código e entender o que ele está fazendo. É importante exercitar a sua capacidade de leitura e interpretação do código. </p>
<p>Achou fácil? Proponho um desafio a você, tente fazer o programa exibir mais uma opção de assunto. Mostre as notícias sobre o &#8220;Rio de Janeiro&#8221; se o usuário pressionar “d”. Achou difícil? Não se preocupe! No próximo artigo eu vou explicar o programa linha a linha para passarmos juntos todos os conceitos.</p>
<blockquote><p>Em áudio (<a href="http://www.uilton.com/wp-content/uploads/2010/02/comecando-a-programar-com-ruby-594.mp3">download</a>): </p></blockquote>
<p><a href="http://www.uilton.com/wp-content/uploads/2010/02/noticias.rb" target="_blank">Resposta do desafio</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/comecando-a-programar-com-ruby-594/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://www.uilton.com/wp-content/uploads/2010/02/comecando-a-programar-com-ruby-594.mp3" length="1282104" type="audio/mpeg" />
		</item>
		<item>
		<title>Programação para não programadores</title>
		<link>http://www.uilton.com/programacao-para-nao-programadores-527</link>
		<comments>http://www.uilton.com/programacao-para-nao-programadores-527#comments</comments>
		<pubDate>Sat, 13 Feb 2010 21:45:26 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Introdução a programação]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=527</guid>
		<description><![CDATA[
Existem vários motivos para aprender a criar programas de computador. A demanda do mercado por programadores é grande e os salários são atrativos. Você pode evitar trabalho tedioso automatizando tarefas. Pode se gabar para os seus amigos. E, melhor do que isso, é muito gratificante conceber algo, codificar e ver funcionando.
Porém, muitas vezes, a forma [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-542" title="Nice try" src="http://www.uilton.com/wp-content/uploads/2010/02/cartoon-programming1.jpg" alt="" width="576" height="189" /></p>
<p>Existem vários motivos para aprender a criar programas de computador. A demanda do mercado por programadores é grande e os salários são atrativos. Você pode evitar trabalho tedioso automatizando tarefas. Pode se gabar para os seus amigos. E, melhor do que isso, é muito gratificante conceber algo, codificar e ver funcionando.</p>
<p>Porém, muitas vezes, a forma como é ensinada a programação aos iniciantes não é atraente. Assim como acontece em outras disciplinas, a distância entre a teoria e a prática, o excesso de jargão técnico e o aprofundamento desnecessário tornam a área desinteressante.</p>
<p>Existem vários títulos que tentam ensinar programação de um jeito menos traumático e iniciativas como o tutorial <a href="http://aprendaaprogramar.rubyonrails.pro.br" target="_blank">Learn to Program</a> ou os livros <a href="http://www.greenteapress.com/thinkpython/" target="_blank">How to Think Like a Computer Scientist</a>. Mesmo assim, eu resolvi escrever esta série de artigos para introduzir a programação porque acredito que é possível ensinar o assunto com uma abordagem diferente.</p>
<p>Minha forma de aprender sempre foi caótica, prefiro me expor ao todo e entender os conceitos à medida que vou vivenciando na prática. Assim como um bebê que se depara com um mundo inteiro para explorar e aprende um pouco a cada dia. Desta forma acredito que a aprendizagem flui de maneira mais gratificante, motivada pelo desafio e pela curiosidade.</p>
<p>Para começar, você sabe o que é programação? De forma simplificada, programação é dizer ao computador o que ele deve fazer. Um programa é uma lista de instruções que diz quais informações a máquina vai receber e o que ela deve fazer com elas. Todos os softwares, por mais complexos que sejam, seguem este processo de entradas e saídas. Para exemplificar, as entradas podem vir do teclado, mouse, webcam, rede, de um arquivo etc. e saídas podem ocorrer na tela, em um arquivo, na impressora, nas caixas de som etc.</p>
<p><strong>Que tal começar com um exemplo prático?</strong></p>
<p>Eu quero que o computador receba um número maior que zero e exiba na tela o número digitado multiplicado por 2. Se ele pudesse entender português, eu explicaria da seguinte maneira:</p>

<div class="wp_syntax"><div class="code"><pre class="natural" style="font-family:monospace;">O usuário vai digitar um número.
&nbsp;
Se o usuário digitou um número e este número é maior que zero, então imprima na
tela o número multiplicado por 2.
&nbsp;
Senão, imprima na tela “Por favor, digite um número maior que zero”.</pre></div></div>

<p>Como você pode observar, é necessário determinar todos os passos. Não é divertido?</p>
<p>A computador não entende a nossa linguagem natural, precisamos escrever os programas em uma língua que ele consiga entender. A máquina se comunica através de instruções em formato binário (10101001), mas seria muito chato ter que falar diretamente com ela porque gastaríamos mais tempo gerenciando os recursos do computador como a memória e os periféricos do que efetivamente desenvolvendo um programa útil.</p>
<p>Então vamos deixar este nível de complexidade para os cientistas da computação e utilizar as facilidades dos sistemas operacionais e das <a href="http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_alto_n%C3%ADvel" target="_blank">linguagens de programação de alto nível</a> para desenvolver os nossos programas. Existem várias linguagens que permitem criar programas de maneira rápida e intuitiva. Para esta série de artigos eu escolhi o <a href="http://www.ruby-lang.org/pt/" target="_blank">Ruby</a>.</p>
<p><strong>As instruções que dei acima, agora em Ruby:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">numero = <span style="color:#CC0066; font-weight:bold;">gets</span>.<span style="color:#9900CC;">to_i</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">if</span> numero <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#006666;">0</span>
   <span style="color:#CC0066; font-weight:bold;">puts</span> numero<span style="color:#006600; font-weight:bold;">*</span><span style="color:#006666;">2</span>
<span style="color:#9966CC; font-weight:bold;">else</span>
   <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Por favor, digite um número maior que zero.&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Parece um inglês modificado, não? A grande maioria das linguagens de programação tem as palavras chave em inglês, então conhecimentos básicos do idioma facilitam bastante o aprendizado. Além disso, existe uma quantidade infinitamente maior de informações sobre o assunto neste idioma. Você não precisa se preocupar em compreender agora todo o código apresentado, tente apenas ter uma idéia geral do que o programa está fazendo.</p>
<p><a href="http://www.uilton.com/comecando-a-programar-com-ruby-594">No próximo artigo</a> vamos instalar as ferramentas necessárias para criar programas em Ruby e você poderá sujar as mãos no código do seu primeiro script. Se ficou com dúvida ou tem alguma sugestão, deixe um comentário ou me envie um e-mail. O feedback dos leitores é fundamental para o sucesso desta empreitada.</p>
<blockquote><p>Em áudio (<a href="http://www.uilton.com/wp-content/uploads/2010/02/programacao-para-nao-programadores-527.mp3">download</a>): </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/programacao-para-nao-programadores-527/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
<enclosure url="http://www.uilton.com/wp-content/uploads/2010/02/programacao-para-nao-programadores-527.mp3" length="1619424" type="audio/mpeg" />
		</item>
		<item>
		<title>Viro pra lá, viro pra cá e o sono não vem</title>
		<link>http://www.uilton.com/viro-pra-la-viro-pra-ca-e-o-sono-nao-vem-515</link>
		<comments>http://www.uilton.com/viro-pra-la-viro-pra-ca-e-o-sono-nao-vem-515#comments</comments>
		<pubDate>Tue, 09 Feb 2010 04:14:44 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Cotidiano]]></category>
		<category><![CDATA[Miscelânia]]></category>

		<guid isPermaLink="false">http://www.uilton.com/viro-pra-la-viro-pra-ca-e-o-sono-nao-vem-515</guid>
		<description><![CDATA[Que mundo de extremos! Eu derretendo aqui e os estadunidenses tirando gelo de pá. Vai ver é por isso que não temos Big Foot, o bicho não ia agüentar esse calor infernal. Eu também não agüento, ninguém agüenta. Não se acha mais ar condicionado ou ventilador para comprar, e quando se acha está pelo preço [...]]]></description>
			<content:encoded><![CDATA[<p>Que mundo de extremos! Eu derretendo aqui e os estadunidenses tirando gelo de pá. Vai ver é por isso que não temos Big Foot, o bicho não ia agüentar esse calor infernal. Eu também não agüento, ninguém agüenta. Não se acha mais ar condicionado ou ventilador para comprar, e quando se acha está pelo preço da morte. O meu circulador de ar gira 24 horas sem muito efeito. Puxa! Se ainda fosse um calor de praia, se tivesse aquele sol, a brisa do mar&#8230; mas não, é só quente e úmido. Aqui em São Paulo quase todos os dias chove bem no fim da tarde. Parece que escolhe a hora certa para ilhar todo mundo saindo do trabalho. O calor não vai embora, mas a água suja fica em vários bairros da cidade.  Viro de novo, sem sono, sem carneirinho, com a boca seca. Vou pegar algo para beber. Sei que a teoria do clima como fator determinante para o subdesenvolvimento é furada, mas como o vivente acorda daqui a algumas horas com energia para começar o dia? Tem que ser muito forte para não fazer corpo mole, que com essa temperatura, não é difícil até para quem dormiu bem a noite. Gostaria de ir embora para Pasárgada. Não preciso ser amigo do rei, a mulher eu já tenho, 20 graus resolveria o problema. Como não posso ir para lá, só me resta hidratar, rolar na cama e esperar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/viro-pra-la-viro-pra-ca-e-o-sono-nao-vem-515/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Espaguete com tomates frescos</title>
		<link>http://www.uilton.com/espaguete-com-tomates-frescos-460</link>
		<comments>http://www.uilton.com/espaguete-com-tomates-frescos-460#comments</comments>
		<pubDate>Mon, 25 Jan 2010 01:19:14 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Culinária]]></category>
		<category><![CDATA[Miscelânia]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=460</guid>
		<description><![CDATA[Domingo, final de dia e aquela fome. Pensei em fazer uma massa, mas qual receita mataria minha vontade sem me prender muito tempo na cozinha? Na dúvida, perguntei ao Google e cheguei na receita abaixo. É rápida, saudável e também serve como coringa para quando aquele primo vegetariano aparece de surpresa.

 Ingredientes:

1 pacote de espaguete
6 [...]]]></description>
			<content:encoded><![CDATA[<p>Domingo, final de dia e aquela fome. Pensei em fazer uma massa, mas qual receita mataria minha vontade sem me prender muito tempo na cozinha? Na dúvida, perguntei ao Google e <a title="Fresh Tomato Pasta" href="http://busycooks.about.com/od/pastawithsaucerecipes/r/freshtomatopast.htm" target="_blank">cheguei na receita</a> abaixo. É rápida, saudável e também serve como coringa para quando aquele primo vegetariano aparece de surpresa.<strong><br />
</strong></p>
<p><strong> Ingredientes:</strong></p>
<ul>
<li>1 pacote de espaguete</li>
<li>6 tomates picados sem semente</li>
<li>5 colheres de sopa de óleo extra virgem</li>
<li>2 colheres de chá de suco de limão</li>
<li>1 maço de manjericão fresco</li>
<li>Sal, pimenta e parmesão a gosto</li>
</ul>
<p><strong>Modo de preparo:</strong></p>
<p>Corte os tomates e adicione o óleo de oliva, o suco de limão, o manjericão, o sal e a pimenta. Misture os ingredientes e reserve. Cozinhe a massa al dente, escorra e misture imediatamente com o tomate. Polvilhe o queijo ralado para servir e bom apetite!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/espaguete-com-tomates-frescos-460/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quadrilha (Carlos Drummond de Andrade)</title>
		<link>http://www.uilton.com/quadrilha-carlos-drummond-de-andrade-445</link>
		<comments>http://www.uilton.com/quadrilha-carlos-drummond-de-andrade-445#comments</comments>
		<pubDate>Mon, 14 Dec 2009 13:44:53 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Miscelânia]]></category>
		<category><![CDATA[Poemas]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=445</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-457" title="Quadrilha (Carlos Drummond de Andrade)" src="http://www.uilton.com/wp-content/uploads/2009/12/quadrilha2.png" alt="quadrilha" width="538" height="583" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/quadrilha-carlos-drummond-de-andrade-445/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Almoço</title>
		<link>http://www.uilton.com/almoco-440</link>
		<comments>http://www.uilton.com/almoco-440#comments</comments>
		<pubDate>Sun, 13 Dec 2009 02:28:59 +0000</pubDate>
		<dc:creator>Uilton</dc:creator>
				<category><![CDATA[Cotidiano]]></category>
		<category><![CDATA[Miscelânia]]></category>

		<guid isPermaLink="false">http://www.uilton.com/?p=440</guid>
		<description><![CDATA[Neste sábado, depois da chuva da tarde, cheguei ao shopping para almoçar. Alguns lances de escada rolante, a fila costumeira e sentei uma amiga para esperar a comida. Pedimos em um restaurante japonês, ela sushi, eu yakisoba. Após garfadas afoitas (não gosto de hashi nem para fazer pose), olhei para o lado e vi um [...]]]></description>
			<content:encoded><![CDATA[<p>Neste sábado, depois da chuva da tarde, cheguei ao shopping para almoçar. Alguns lances de escada rolante, a fila costumeira e sentei uma amiga para esperar a comida. Pedimos em um restaurante japonês, ela sushi, eu yakisoba. Após garfadas afoitas (não gosto de hashi nem para fazer pose), olhei para o lado e vi um dekassegui comendo casquinha de siri. Então olhei para o outro lado e dois homens morenos falando espanhol latino-americano tomavam miso shiru. Na minha frente por cima do ombro da minha companheira percebi uma moça com traços orientais devorando um BigMac. E nós, que não temos nada de oriental, “lambemos o prato” e voltamos para casa. Mas fiquei por algum tempo deslumbrado com essa simples mistura. Coisa de menino do interior, virtude dessa cidade cosmopolita.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.uilton.com/almoco-440/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
