<?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>Led Nerd &#187; Programação</title> <atom:link href="http://www.lednerd.com/category/programacao/feed/" rel="self" type="application/rss+xml" /><link>http://www.lednerd.com</link> <description>Tecnologia, Informatica e vida nerd</description> <lastBuildDate>Tue, 06 Sep 2011 19:41:25 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.2.1</generator> <item><title>Colorindo a saída do console em Ruby</title><link>http://www.lednerd.com/2007/12/31/colorindo-a-saida-do-console-em-ruby/</link> <comments>http://www.lednerd.com/2007/12/31/colorindo-a-saida-do-console-em-ruby/#comments</comments> <pubDate>Mon, 31 Dec 2007 19:07:01 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/12/31/colorindo-a-saida-do-console-em-ruby/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/12/31/colorindo-a-saida-do-console-em-ruby/&amp;text=Colorindo a saída do console em Ruby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> É muito comum administradores de sistemas escreverem scripts para otimizar execução de processos, visualizar resultados de tarefas, monitorar estados dos serviços, etc, onde são geradas algumas saídas para o console. Muita vezes é importante destacar as saídas, como por exemplo, deixar em vermelho os erros, em verde os sucessos, etc, facilitando a análise dos resultados. [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/12/31/colorindo-a-saida-do-console-em-ruby/&amp;text=Colorindo a saída do console em Ruby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p>É muito comum administradores de sistemas escreverem scripts para otimizar execução de processos, visualizar resultados de tarefas, monitorar estados dos serviços, etc, onde são geradas algumas saídas para o console. Muita vezes é importante destacar as saídas, como por exemplo, deixar em vermelho os erros, em verde os sucessos, etc, facilitando a análise dos resultados.</p><p>É uma situação que as seqüências escapes ANSI podem ajudar.  Suportado nas maioria dos terminais, incluindo VT100 (o BTW, console da família de Windows NT não o suporta, mas existe um contorno que será explicado mais a frente).</p><p>Para o começar, vamos examinar a estrutura da seqüência de escape ANSI.  A seqüência dever sempre começar com o símbolo <strong>ESC</strong> (código 27 da tabela ASCII) seguindo pela abertura de um (<strong>[</strong>) colchete. Há um ou mais número separado por (<strong>;</strong>) ponto-e-vírgula com uma letra na extremidade.</p><p>Não descreverei todos os códigos possíveis, qualquer um pode encontrá-los no <a
href="http://en.wikipedia.org/wiki/ANSI_escape_code">Wikipédia</a> ou Google. A seqüência com a letra <strong>&#8216;m&#8217;</strong> na extremidade é usada mudar a cor do primeiro plano e a cor do fundo. Em geral é parecido com: <strong>ESC [31m</strong>, onde o 31 define a cor de primeiro plano (texto) como vermelha.</p><p>Segue abaixo uma tabela com códigos suportados na maioria dos terminais:</p><table
class="bordered" border="0" cellspacing="0" cellpadding="2"><tbody><tr><td
align="left"><strong>Código</strong></td><td
align="left"><strong>Efeito</strong></td></tr><tr><td>0</td><td>desativa todos os atributos</td></tr><tr><td>1</td><td>ativa o modo brilho</td></tr><tr><td>4</td><td>ativa o modo sublinhado</td></tr><tr><td>5</td><td>ativa o modo pisca-pisca</td></tr><tr><td>7</td><td>troca a cor do primeiro plano pela cor de fundo</td></tr><tr><td>8</td><td>oculta o texto (cor do texto igual ao do fundo)</td></tr><tr><td>30</td><td>texto na cor preta</td></tr><tr><td>31</td><td>texto na cor vermelha</td></tr><tr><td>32</td><td>texto na cor verde</td></tr><tr><td>33</td><td>texto na cor amarela</td></tr><tr><td>34</td><td>texto na cor azul</td></tr><tr><td>35</td><td>texto na cor magenta</td></tr><tr><td>36</td><td>texto na cor ciano</td></tr><tr><td>37</td><td>texto na cor branca</td></tr><tr><td>39</td><td>texto na cor padrão</td></tr><tr><td>40</td><td>fundo na cor preta</td></tr><tr><td>41</td><td>fundo na cor vermelha</td></tr><tr><td>42</td><td>fundo na cor verde</td></tr><tr><td>43</td><td>fundo na cor amarela</td></tr><tr><td>44</td><td>fundo na cor azul</td></tr><tr><td>45</td><td>fundo na cor magenta</td></tr><tr><td>46</td><td>fundo na cor ciano</td></tr><tr><td>47</td><td>fundo na cor branca</td></tr><tr><td>49</td><td>fundo na cor padrão</td></tr><tr><td
valign="top"></td><td
valign="top"></td></tr></tbody></table><p>Como você pode observar na tabela,  podemos definir a cor do texto e a cor de fundo separadamente ou combiná-las em uma única seqüência, por exemplo: <tt>ESC[1;33;44m - </tt>amarelo brilhante com fundo azul.<tt> </tt></p><p><strong>ATENÇÃO: </strong>Não esqueça de desativar todos os atributos antes de finalizar, senão todos os textos seguintes serão exibidos com os atributos que você acabou de definir, a não ser que essa seja sua intenção.</p><p>Chega de teoria, vamos a parte prática:</p><p>Utilizando o IRB vamos executar o seguinte trecho de código</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p232code6'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p2326"><td
class="code" id="p232code6"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#Imprimindo uma mensagem de sucesso em verde</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Importando categorias [ <span style="color:#000099;">\e</span>[32mOK<span style="color:#000099;">\e</span>[0m ]&quot;</span>
<span style="color:#008000; font-style:italic;"># Impriminido uma mensagem de falha em vermelho</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Importando tags [<span style="color:#000099;">\e</span>[31mFALHOU<span style="color:#000099;">\e</span>[0m]&quot;</span></pre></td></tr></table></div><p>Como resultado você obterá:</p><p><a
title="Resultado do terminal usando cores" href="http://lednerd.kazap.com.br/wp-content/uploads/2007/12/terminal_cor.png"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/12/terminal_cor.png" alt="Resultado do terminal usando cores" /></a></p><p>Você poderá criar alguns helpers que facilitarão os trabalhos futuros, como exemplo:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p232code7'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p2327"><td
class="code" id="p232code7"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> colorize<span style="color:#006600; font-weight:bold;">&#40;</span>text, color_code<span style="color:#006600; font-weight:bold;">&#41;</span>
   <span style="color:#996600;">&quot;#{color_code}#{text}<span style="color:#000099;">\e</span>[0m&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> red<span style="color:#006600; font-weight:bold;">&#40;</span>text<span style="color:#006600; font-weight:bold;">&#41;</span>; colorize<span style="color:#006600; font-weight:bold;">&#40;</span>text, <span style="color:#996600;">&quot;<span style="color:#000099;">\e</span>[31m&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">def</span> green<span style="color:#006600; font-weight:bold;">&#40;</span>text<span style="color:#006600; font-weight:bold;">&#41;</span>; colorize<span style="color:#006600; font-weight:bold;">&#40;</span>text, <span style="color:#996600;">&quot;<span style="color:#000099;">\e</span>[32m&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Imprimindo uma mensagem de sucesso em verde</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Importando categorias [ #{green('OK')} ]&quot;</span>
<span style="color:#008000; font-style:italic;"># Impriminido uma mensagem de falha em vermelho</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Importando tags [#{red('FALHOU')}]&quot;</span></pre></td></tr></table></div><p>Recomendo você utilizar desta forma para ser DRY, claro que talvez seja possível melhorar mais ainda, mas este não é objetivo deste post.</p><p>Como dito acima, o Windows não suporta seqüências escapes ANSI, mas você pode resolver isso lendo o artigo <a
onclick="javascript:urchinTracker('/outbound/www.windowsnetworking.com/kbase/WindowsTips/Windows2000/UserTips/Miscellaneous/CommandInterpreterAnsiSupport.html');" href="http://www.windowsnetworking.com/kbase/WindowsTips/Windows2000/UserTips/Miscellaneous/CommandInterpreterAnsiSupport.html" target="_blank">Command Interpreter Ansi Support</a>, ou com as próprias facilidade do Ruby:</p><p>Primeiro instale o win32console:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p232code8'); return false;">View Code</a> BASH</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p2328"><td
class="code" id="p232code8"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> win32console</pre></td></tr></table></div><p>Agora adicione o código abaixo no inicio de seu script:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p232code9'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p2329"><td
class="code" id="p232code9"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">begin</span>
   <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'Win32/Console/ANSI'</span> <span style="color:#9966CC; font-weight:bold;">if</span> PLATFORM =~ <span style="color:#006600; font-weight:bold;">/</span>win32<span style="color:#006600; font-weight:bold;">/</span>
<span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#CC00FF; font-weight:bold;">LoadError</span>
   <span style="color:#CC0066; font-weight:bold;">raise</span> <span style="color:#996600;">'Voce deve instalar o gem win32console para utilizar cores no Windows'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Pronto, a saída de seu script será colorida tanto no Windows como no Unix.</p><p>Para finalizar, veja a tabela completa com diferentes códigos, a qual você poderá usar em seus scripts:</p><p><a
title="Tabelas de Cores" href="http://lednerd.kazap.com.br/wp-content/uploads/2007/12/tabela_cores.png"></a></p><p
style="text-align: center" align="left"><a
title="Tabelas de Cores" href="http://lednerd.kazap.com.br/wp-content/uploads/2007/12/tabela_cores.png"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/12/tabela_cores.png" alt="Tabelas de Cores" /></a></p><p>A tabela acima pode ser obtida através do script:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p232code10'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p23210"><td
class="code" id="p232code10"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#!/usr/bin/ruby</span>
&nbsp;
<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span>, <span style="color:#006666;">1</span>, <span style="color:#006666;">4</span>, <span style="color:#006666;">5</span>, <span style="color:#006666;">7</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>attr<span style="color:#006600; font-weight:bold;">|</span>
   <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'----------------------------------------------------------------'</span>
   <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;ESC[#{attr};Texto;Fundo&quot;</span>
   <span style="color:#006666;">30</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">37</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>fg<span style="color:#006600; font-weight:bold;">|</span>
      <span style="color:#006666;">40</span>.<span style="color:#9900CC;">upto</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">47</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>bg<span style="color:#006600; font-weight:bold;">|</span>
         <span style="color:#CC0066; font-weight:bold;">print</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\0</span>33[#{attr};#{fg};#{bg}m #{fg};#{bg}  &quot;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\0</span>33[0m&quot;</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Fonte: <a
href="http://kpumuk.info/ruby-on-rails/colorizing-console-ruby-script-output/">kpumuk.info</a></p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F12%2F31%2Fcolorindo-a-saida-do-console-em-ruby%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/12/31/colorindo-a-saida-do-console-em-ruby/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Curso online gratuito de Ruby</title><link>http://www.lednerd.com/2007/12/11/curso-online-gratuito-de-ruby/</link> <comments>http://www.lednerd.com/2007/12/11/curso-online-gratuito-de-ruby/#comments</comments> <pubDate>Tue, 11 Dec 2007 18:00:09 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/12/11/curso-online-gratuito-de-ruby/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/12/11/curso-online-gratuito-de-ruby/&amp;text=Curso online gratuito de Ruby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> Quer aprender uma das linguagens que mais tem crescido pelo mundo com apenas poucos anos de vida e com grande previsão de crescimento para o próximo ano, sem ter que gastar nada? O site RubyLearning.com mantido por Satish Talim, está promovendo um curso gratuito de Ruby, totalmente online. O curso está em sua 3ª edição [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/12/11/curso-online-gratuito-de-ruby/&amp;text=Curso online gratuito de Ruby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p><a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/12/ruby.jpg"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/12/ruby-thumb.jpg" id="id" style="border: 0px none " alt="ruby" align="left" border="0" height="136" width="136" /></a> Quer aprender uma das linguagens que mais tem crescido pelo mundo com apenas poucos anos de vida e com grande <a
href="http://www.lednerd.com/2007/11/10/heroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails/">previsão</a> de crescimento para o próximo ano, sem ter que gastar nada?</p><p>O site <a
href="http://rubylearning.com/">RubyLearning.com</a> mantido por Satish Talim, está promovendo um curso gratuito de Ruby, totalmente online.  O curso está em sua 3ª edição e até o momento deste post, já possuía mais de 715 inscritos.</p><p>O curso será ministrado através do Moodle, uma aplicação opensource para ensino a distância e tem início em 07 de janeiro de 2008.  Para mais detalhes e para realizar sua inscrição, <a
href="http://www.rubylearning.org/class/">acesse</a> a página do curso.</p><p>O pré-requisito é saber inglês e já possuir alguma base de programação.</p><p>Não vá perder essa excelente oportunidade! <img
src='http://www.lednerd.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F12%2F11%2Fcurso-online-gratuito-de-ruby%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/12/11/curso-online-gratuito-de-ruby/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>Lançado o Netbeans 6.0</title><link>http://www.lednerd.com/2007/12/04/lanado-o-netbeans-60/</link> <comments>http://www.lednerd.com/2007/12/04/lanado-o-netbeans-60/#comments</comments> <pubDate>Wed, 05 Dec 2007 00:42:20 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/12/04/lanado-o-netbeans-60/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/12/04/lanado-o-netbeans-60/&amp;text=Lançado o Netbeans 6.0&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> Finalmente foi lançada a tão esperada versão 6.0 da plataforma Netbeans. A plataforma vem ganhando destaque com diversas inovações, mas creio que a mais esperada desta versão é o suporte a linguagem Ruby, se tornando umas das plataformas mais sofisticadas no mundo Windows e Linux para desenvolvimento nesta nova e poderosa linguagem. Logicamente que grandes [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/12/04/lanado-o-netbeans-60/&amp;text=Lançado o Netbeans 6.0&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p>Finalmente foi lançada a tão esperada versão 6.0 da plataforma Netbeans.</p><p>A plataforma vem ganhando destaque com diversas inovações, mas creio que a mais esperada desta versão é o suporte a linguagem Ruby, se tornando umas das plataformas mais sofisticadas no mundo Windows e Linux para desenvolvimento nesta nova e poderosa linguagem. Logicamente que grandes melhorias também vieram para Java e C/C++.</p><p>A nova versão é constituída dos seguintes pacotes:</p><ul><li>Java SE</li><li>Web e Java EE</li><li>Mobility</li><li>Ruby</li><li>C/C++</li></ul><p>É possível realizar o <a
href="http://sunmicro.vo.llnwd.net/c1/netbeans/6.0/final/">download</a> por pacote ou todos de uma única vez.</p><p>Para mais detalhes <a
href="http://www.netbeans.org/">acesse</a> o site da comunidade Netbeans.</p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F12%2F04%2Flanado-o-netbeans-60%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/12/04/lanado-o-netbeans-60/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Heroku: Plataforma online de desenvolvimento em Ruby on Rails</title><link>http://www.lednerd.com/2007/11/10/heroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails/</link> <comments>http://www.lednerd.com/2007/11/10/heroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails/#comments</comments> <pubDate>Sat, 10 Nov 2007 19:50:18 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/11/10/heroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/11/10/heroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails/&amp;text=Heroku: Plataforma online de desenvolvimento em Ruby on Rails&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> O framework Ruby on Rails (RoR) tem ganhado cada vez mais adeptos entres os desenvolvedores Web 2.0, graças a sua alta produtividade e forte integração com AJAX (essencial para a Web 2.0). A previsão de crescimento da linguagem Ruby no Brasil para 2008 é dobro em relação a 2007, aproximadamente 33% dos desenvolvedores, segundo levantamento [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/11/10/heroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails/&amp;text=Heroku: Plataforma online de desenvolvimento em Ruby on Rails&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p>O framework <a
href="http://www.rubyonrails.com.br/">Ruby on Rails</a> (RoR) tem ganhado cada vez mais adeptos entres os desenvolvedores Web 2.0, graças a sua alta produtividade e forte integração com AJAX (essencial para a Web 2.0).</p><p>A previsão de crescimento da linguagem Ruby no Brasil para 2008 é dobro em relação a 2007, aproximadamente 33% dos desenvolvedores, segundo <a
href="http://idgnow.uol.com.br/computacao_corporativa/2007/09/03/idgnoticia.2007-09-03.6968188574/">levantamento</a> da Evans Data, feito com 400 desenvolvedores no Brasil, China, Índia e Europa Oriental. Esse crescimento se deve em grande parte pela popularização do RoR.</p><p>Se alguém ainda não acredita no crescimento de RoR, pode verificar a grande <a
href="http://happycodr.com/">lista de aplicações</a> já desenvolvidas pelo mundo.</p><p>Com a popularização do framework, várias iniciativas começaram a surgir e uma muito interessante e promissora é o <a
href="http://heroku.com/">Heroku</a>.</p><p>Heroku é uma plataforma online (beta) para desenvolvimento e hospedagem de aplicações em Ruby on Rails. Você só precisa de um Navegador para ter todo o ambiente de desenvolvimento em suas mãos.</p><p><a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/11/image1.png"></a></p><p
style="text-align: center"><a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/11/image1.png"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/11/image-thumb1.png" style="border: 0px none " alt="image" border="0" height="253" width="333" /></a></p><p>A plataforma possui os seguintes recursos:</p><ul><li>Criação e edição online</li><li>Importação de aplicações desenvolvidas fora do Heroku</li><li>Compartilhamento de aplicações</li><li>Desenvolvimento colaborativo</li><li>Geração de código (<em>generators</em> e <em>migrate</em>)</li><li>Rails console</li><li>Sem necessidade de configuração e <em>deployment</em></li></ul><p>Para conhecer melhor cada recurso, <a
href="http://heroku.com/features">veja os vídeos</a> de demonstração.</p><p>Ficou interessado?  Infelizmente vai ter que <a
href="http://heroku.com/beta">solicitar um convite</a> e aguardar, pois estão limitando os acessos enquanto estiver em beta.  A previsão para receber o convite é de 6 dias.</p><p>Logicamente você não terá todos os recursos de um ambiente de desenvolvimento off-line, mas com certeza é um grande iniciativa e será de grande utilidade para a divulgação de Ruby e RoR e para aqueles que desejam aprender, podendo estudar de qualquer lugar. <img
src='http://www.lednerd.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F11%2F10%2Fheroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/11/10/heroku-plataforma-online-de-desenvolvimento-em-ruby-on-rails/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>Lançado JRuby 1.0 Final</title><link>http://www.lednerd.com/2007/06/11/lancado-jruby-10-final/</link> <comments>http://www.lednerd.com/2007/06/11/lancado-jruby-10-final/#comments</comments> <pubDate>Mon, 11 Jun 2007 21:53:17 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/06/11/lancado-jruby-10-final/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/06/11/lancado-jruby-10-final/&amp;text=Lançado JRuby 1.0 Final&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> No último dia 09/jun, a equipe do JRuby anunciou o lançamento da versão 1.0. Essa versão tenta ser o máximo compatível com o Ruby 1.8.5, mas ainda existe trabalho a ser feito. A equipe julgou que o projeto já havia chego a um estágio que poderia ser lançada para a comunidade começar utilizar. Para realizar [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/06/11/lancado-jruby-10-final/&amp;text=Lançado JRuby 1.0 Final&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/06/jrubylogo.jpg" title="JRuby Logo" alt="JRuby Logo" align="left" />No último dia 09/jun, a equipe do <a
href="http://jruby.codehaus.org/">JRuby</a> anunciou o lançamento da versão 1.0.  Essa versão tenta ser o máximo compatível com o <a
href="http://www.ruby-lang.org/en/">Ruby</a> 1.8.5, mas ainda existe trabalho a ser feito.</p><p>A equipe julgou que o projeto já havia chego a um estágio que poderia ser lançada para a comunidade começar utilizar.  Para realizar o download, clique <a
href="http://dist.codehaus.org/jruby/">aqui</a>.</p><p>Se você quiser conferir o quanto esta versão está compatível com o Ruby 1.8.5, <a
href="http://www.akitaonrails.com/articles/2007/06/10/meu-primeiro-teste-com-jruby-1-0">veja o resultado</a> de um excelente teste realizado pelo Fábio Akita, umas das pessoas mais ativa e importante da comunidade Ruby on Rails, também autor do livro <a
href="http://www.brasport.com.br/index.php?Escolha=8&amp;Livro=L00209">&#8220;Repensando a Web com Rails&#8221;</a>.</p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F06%2F11%2Flancado-jruby-10-final%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/06/11/lancado-jruby-10-final/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Manipulando o registro do Windows com Ruby</title><link>http://www.lednerd.com/2007/05/22/manipulando-o-registro-do-windows-com-ruby/</link> <comments>http://www.lednerd.com/2007/05/22/manipulando-o-registro-do-windows-com-ruby/#comments</comments> <pubDate>Tue, 22 May 2007 14:05:42 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <category><![CDATA[Windows]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/05/22/manipulando-o-registro-do-windows-com-ruby/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/05/22/manipulando-o-registro-do-windows-com-ruby/&amp;text=Manipulando o registro do Windows com Ruby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> Um dia desses precisei escrever um script para manipular o registro do Windows para que eu pudesse altenar entre diferentes configurações do Rational ClearCase para acessar diferentes repositórios de diferentes servidores, e para agilizar meu trabalho utilizei a linguagem Ruby. Para aqueles que gostaram da alternativa, veja abaixo como é simples essa manipulação, mostrarei as [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/05/22/manipulando-o-registro-do-windows-com-ruby/&amp;text=Manipulando o registro do Windows com Ruby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p>Um dia desses precisei escrever um script para manipular o registro do Windows para que eu pudesse altenar entre diferentes configurações do <a
href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o">Rational ClearCase</a> para acessar diferentes repositórios de diferentes servidores, e para agilizar meu trabalho utilizei a linguagem <a
href="http://www.ruby-lang.org/" target="_blank">Ruby</a>.</p><p>Para aqueles que gostaram da alternativa, veja abaixo como é simples essa manipulação, mostrarei as operações básica que também são as mais utilizadas.  Para ficar mais didático, explicarei em parte e com pequenos exemplos.</p><p>A versão do Ruby para Windows possui a classe <a
href="http://stdlib.rubyonrails.org/libdoc/Win32API/rdoc/classes/Win32/Registry.html"><span
class="toctext">Win32::Registry</span></a>, que permite justamente a manipulação do registro do Windows,  e  para utilizá-lo basta apenas escrever<em><strong> require &#8216;win32/registry&#8217;</strong></em>.    Para enteder melhor os exemplos abaixo, vamos ver alguns conceitos importantes:</p><ul><li><strong>Registro:</strong> é uma espécie de banco de dados,         onde são armazenadas as informações sobre todos os         programas instalados, estrutura de diretórios, informações         do usuário, de drivers, etc</li><li><strong>Chave:</strong> é a estrutura básica do registro do Windows, são como pastas utilizada para a organização e armazenamento de valores. O Windows possui basicamente 5 chaves:<ul><li><strong>HKEY_CLASSES_ROOT</strong> &#8211; sua finalidade é manter compatibilidade com programas antigos,         que rodam a 16 bits;</li><li><strong>HKEY_CURRENT_USER</strong> &#8211; ela mostra somente informações do usuário         atual do sistema, como configurações personalizadas, etc;</li><li><strong>HKEY_LOCAL_MACHINE</strong> &#8211; esta é a chave mais importante do         Registro, pois nela é que estão as informações         sobre programas e hardware. Para se ter noção da importante         desta chave, seus dados são guardados num arquivo chamado system.dat.</li><li><strong>HKEY_USERS </strong>- no Windows é possível ter vários         usuários num único computador e a função desta         chave é guardar informações de cada um deles.</li><li><strong>HKEY_CURRENT_CONFIG</strong> &#8211; contém configurações         do usuário atual do computador relativas ao hardware.</li></ul></li><li><strong>Valor:</strong> são como variáveis, que recebe um nome e armazenam valores que podem ser do tipo:<ul><li><strong>REG_SZ</strong> &#8211; Valor da seqüência</li><li><strong>REG_BINARY</strong> &#8211; Valor binário</li><li><strong>REG_DWORD</strong> &#8211; Valor Double Word</li><li><strong>REG_MULTI_SZ</strong> &#8211; Valor de seqüência múltipla</li><li><strong>REG_EXPAND_SZ</strong> &#8211; Valor de seqüência expansível</li></ul></li></ul><p>Com os conceitos básicos em mente, vamos aos exemplos:</p><p><strong>Exemplo 1: Criando um chave e adicionando um valor</strong><br
/> As variáveis <em><strong>chave</strong></em>, <em><strong>nome_valor</strong></em> e <em><strong>valor </strong></em>serão utilizadas em todos nossos exemplos.</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p196code17'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p19617"><td
class="code" id="p196code17"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'win32/registry'</span>
&nbsp;
chave = <span style="color:#996600;">'Software<span style="color:#000099;">\T</span>esteRubyRegistry'</span>
nome_valor = <span style="color:#996600;">'VersaoRuby'</span>
valor = <span style="color:#996600;">'1.8.6'</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#cria um nova chave</span>
<span style="color:#6666ff; font-weight:bold;">Win32::Registry::HKEY_CURRENT_USER</span>.<span style="color:#9900CC;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span>chave<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>regkey<span style="color:#006600; font-weight:bold;">|</span>
  <span style="color:#008000; font-style:italic;">#escreve o valor</span>
  regkey.<span style="color:#9900CC;">write</span><span style="color:#006600; font-weight:bold;">&#40;</span>nome_valor, <span style="color:#6666ff; font-weight:bold;">Win32::Registry::REG_SZ</span>, valor<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#para escrever o valor poderia também ser utilizado:</span>
  <span style="color:#008000; font-style:italic;">#regkey[nome_valor, Win32::Registry::REG_SZ] = valor</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>No exemplo 1 chamamos a <a
href="http://stdlib.rubyonrails.org/libdoc/Win32API/rdoc/classes/Win32/Registry/Constants.html">constante </a><em><strong>Win32::Registry::HKEY_CURRENT_USER</strong></em> com o método <em><strong>create</strong></em>, passando variável <em><strong>chave</strong></em>, o que significa que será criada a chave <strong><em>HKEY_CURRENT_USER\Software\TesteRubyRegistry</em></strong>.</p><p>A chave criada foi instaciada dentro de <em><strong>regkey</strong></em>, o qual chamamos o método <strong><em>write</em></strong>, passando o nome do valor (<em><strong>nome</strong><strong>_valor</strong></em>), o tipo do valor (<em><strong>Win32::Registry::REG_SZ</strong></em>) e o seu contéudo (<em><strong>valor</strong></em>), para que seja escrito o valor <strong>VersaoRuby</strong> com o conteúdo <strong>1.8.6.</strong></p><p>Os demais exemplos seguem a mesma lógica e os detalhes estão comentados no próprio código.</p><p><strong>Exemplo 2: Lendo um valor</strong></p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p196code18'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p19618"><td
class="code" id="p196code18"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#define o nivel de acesso da chave, apenas para leitura</span>
nivel_acesso = <span style="color:#6666ff; font-weight:bold;">Win32::Registry::KEY_READ</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#abre um chave</span>
<span style="color:#6666ff; font-weight:bold;">Win32::Registry::HKEY_CURRENT_USER</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>chave, nivel_acesso<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>regkey<span style="color:#006600; font-weight:bold;">|</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># o método Win32::Registry.read retorna um array,</span>
  <span style="color:#008000; font-style:italic;"># contendo o tipo do valor e o valor atual</span>
  tipo, valor_atual = regkey.<span style="color:#9900CC;">read</span><span style="color:#006600; font-weight:bold;">&#40;</span>nome_valor<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#para retornar o valor atual poderia também ser utilizado:</span>
  <span style="color:#008000; font-style:italic;">#valor_atual = regkey[nome_valor]</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#exibe o valor lido</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Versao do Ruby: #{valor_atual}&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p><strong>Exemplo 3: Modificando um valor</strong></p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p196code19'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p19619"><td
class="code" id="p196code19"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#definindo um novo valor a variável</span>
valor = <span style="color:#996600;">'1.8.5'</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#define o nivel de acesso da chave para escrita</span>
nivel_acesso = <span style="color:#6666ff; font-weight:bold;">Win32::Registry::KEY_WRITE</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#abre um chave</span>
<span style="color:#6666ff; font-weight:bold;">Win32::Registry::HKEY_CURRENT_USER</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>chave, nivel_acesso<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>regkey<span style="color:#006600; font-weight:bold;">|</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#modifica o valor</span>
  regkey.<span style="color:#9900CC;">write</span><span style="color:#006600; font-weight:bold;">&#40;</span>nome_valor, <span style="color:#6666ff; font-weight:bold;">Win32::Registry::REG_SZ</span>, valor<span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#para alterar o valor poderia também ser utilizado:</span>
  <span style="color:#008000; font-style:italic;">#regkey[nome_valor, Win32::Registry::REG_SZ] = valor</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p><strong>Exemplo 4: Excluindo um valor</strong></p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p196code20'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p19620"><td
class="code" id="p196code20"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#define o nivel de acesso da chave para escrita</span>
nivel_acesso = <span style="color:#6666ff; font-weight:bold;">Win32::Registry::KEY_WRITE</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#abre um chave</span>
<span style="color:#6666ff; font-weight:bold;">Win32::Registry::HKEY_CURRENT_USER</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>chave, nivel_acesso<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>regkey<span style="color:#006600; font-weight:bold;">|</span>
  <span style="color:#008000; font-style:italic;">#exclui o valor</span>
  regkey.<span style="color:#9900CC;">delete_value</span><span style="color:#006600; font-weight:bold;">&#40;</span>nome_valor<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p><strong>Exemplo 5: Excluindo uma chave</strong></p><p>1ª forma</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p196code21'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p19621"><td
class="code" id="p196code21"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#true define exclusão recursiva</span>
<span style="color:#6666ff; font-weight:bold;">Win32::Registry::HKEY_CURRENT_USER</span>.<span style="color:#9900CC;">delete_key</span><span style="color:#006600; font-weight:bold;">&#40;</span>chave, <span style="color:#0000FF; font-weight:bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span></pre></td></tr></table></div><p>2ª forma</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p196code22'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p19622"><td
class="code" id="p196code22"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;">#define o nivel de acesso da chave para escrita</span>
nivel_acesso = <span style="color:#6666ff; font-weight:bold;">Win32::Registry::KEY_WRITE</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#abre a chave Software</span>
<span style="color:#6666ff; font-weight:bold;">Win32::Registry::HKEY_CURRENT_USER</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'Software'</span>, nivel_acesso<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>regkey<span style="color:#006600; font-weight:bold;">|</span>
  <span style="color:#008000; font-style:italic;">#exclui a chave TesteRubyRegistry</span>
  regkey.<span style="color:#9900CC;">delete_key</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'TesteRubyRegistry'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F05%2F22%2Fmanipulando-o-registro-do-windows-com-ruby%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/05/22/manipulando-o-registro-do-windows-com-ruby/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>RailsBrain: Documentação Rails com o poder do AJAX</title><link>http://www.lednerd.com/2007/05/07/railsbrain-documentacao-rails-com-o-poder-do-ajax/</link> <comments>http://www.lednerd.com/2007/05/07/railsbrain-documentacao-rails-com-o-poder-do-ajax/#comments</comments> <pubDate>Tue, 08 May 2007 00:45:05 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/05/07/railsbrain-documentacao-rails-com-o-poder-do-ajax/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/05/07/railsbrain-documentacao-rails-com-o-poder-do-ajax/&amp;text=RailsBrain: Documentação Rails com o poder do AJAX&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> Sites de documentação Rails existem vários, mas o RailsBrain surpreende pela sua usabilidade. Fazendo uso de AJAX você poderá fazer buscas &#8220;live search&#8221; de métodos, classes e arquivos, expandir os exemplos de código-fonte, tudo isso sem a necessidade de recarregar páginas e com grande velocidade. Se você gostou da idéia, acesse o site gotAPI, que [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/05/07/railsbrain-documentacao-rails-com-o-poder-do-ajax/&amp;text=RailsBrain: Documentação Rails com o poder do AJAX&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p>Sites de documentação <a
href="http://www.rubyonrails.org/" target="_blank">Rails</a> existem vários, mas o <a
href="http://www.railsbrain.com/" target="_blank">RailsBrain</a> surpreende pela sua usabilidade.  Fazendo uso de AJAX você poderá fazer buscas &#8220;live search&#8221; de métodos, classes e arquivos, expandir os exemplos de código-fonte, tudo isso sem a necessidade de recarregar páginas e com grande velocidade.</p><p>Se você gostou da idéia, acesse o site <a
href="http://gotapi.com/" target="_blank">gotAPI</a>, que você poderá obter o mesmo esquema de documentação para diversas outras linguagens e tecnologias.</p><p><a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/05/railsbrains.jpg" title="RailsBrain Screenshot"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/05/railsbrains.jpg" alt="RailsBrain Screenshot" height="234" width="409" /></a></p><p>Fonte: <a
href="http://www.rubyinside.com/railsbrain-fast-ajax-powered-rails-documentation-482.html">RubyInside</a></p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F05%2F07%2Frailsbrain-documentacao-rails-com-o-poder-do-ajax%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/05/07/railsbrain-documentacao-rails-com-o-poder-do-ajax/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Microsoft anuncia o IronRuby</title><link>http://www.lednerd.com/2007/05/02/microsoft-anuncia-o-ironruby/</link> <comments>http://www.lednerd.com/2007/05/02/microsoft-anuncia-o-ironruby/#comments</comments> <pubDate>Wed, 02 May 2007 02:54:10 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/05/02/microsoft-anuncia-o-ironruby/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/05/02/microsoft-anuncia-o-ironruby/&amp;text=Microsoft anuncia o IronRuby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> Durante a conferência MIX07 a Microsoft anunciou a criação do projeto IronRuby, uma implementação da linguagem Ruby para a plataforma .NET. O projeto IronRuby é similar ao que a Sun vem fazendo com o JRuby, mas não confundam o IronRuby com o Ruby/.NET Bridge, que somente conecta um interpretador Ruby com uma máquina virtual .NET. [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/05/02/microsoft-anuncia-o-ironruby/&amp;text=Microsoft anuncia o IronRuby&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/05/ms_ruby.jpg" title="Ruby Logo" alt="Ruby Logo" align="left" />Durante a conferência <a
href="http://visitmix.com/" target="_blank">MIX07</a> a Microsoft anunciou a criação do projeto IronRuby, uma implementação da linguagem Ruby para a plataforma .NET.  O projeto IronRuby é similar ao que a Sun vem fazendo com o <a
href="http://jruby.codehaus.org/" target="_blank">JRuby</a>, mas não confundam o IronRuby com o <a
href="http://www.saltypickle.com/rubydotnet" target="_blank">Ruby/.NET Bridge</a>, que somente conecta um interpretador Ruby com uma máquina virtual .NET.</p><p>Uma versão oficial do &#8220;Microsoft Ruby&#8221; vem sendo aguardado por membros da comunidade Ruby e uma indicação que isso estava acontecendo, foi John Lam, criador do <a
href="http://rubyforge.org/projects/rubyclr/" target="_blank">Ruby.CLR</a>, agora na Microsoft.</p><p>Fonte: <a
href="http://www.infoq.com/news/2007/04/ms-ironruby" target="_blank">InfoQ</a></p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F05%2F02%2Fmicrosoft-anuncia-o-ironruby%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/05/02/microsoft-anuncia-o-ironruby/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Aprenda a programar em Ruby com Hackety Hack</title><link>http://www.lednerd.com/2007/04/26/aprenda-a-programar-em-ruby-com-hackety-hack/</link> <comments>http://www.lednerd.com/2007/04/26/aprenda-a-programar-em-ruby-com-hackety-hack/#comments</comments> <pubDate>Thu, 26 Apr 2007 22:22:30 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/04/26/aprenda-a-programar-em-ruby-com-hackety-hack/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/04/26/aprenda-a-programar-em-ruby-com-hackety-hack/&amp;text=Aprenda a programar em Ruby com Hackety Hack&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> Um interessante projeto acaba de ser lançado, chamado de Hackety Hack, é uma plataforma livre de ensino a programação em Ruby, para crianças, iniciantes em programação ou para aqueles que nunca programaram antes. A ferramenta orienta os estudantes através de pequenas lições com explicações sobre cada parte do código implementado. Os códigos são executados e [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/04/26/aprenda-a-programar-em-ruby-com-hackety-hack/&amp;text=Aprenda a programar em Ruby com Hackety Hack&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/hacketyhack.jpg" title="Hackety Hack Logo" alt="Hackety Hack Logo" align="left" />Um interessante projeto acaba de ser lançado, chamado de <a
href="http://hacketyhack.net/" target="_blank">Hackety Hack</a>, é uma plataforma livre de ensino a programação em <a
href="http://www.ruby-lang.org/" target="_blank">Ruby</a>, para crianças, iniciantes em programação ou para aqueles que nunca programaram antes.</p><p>A ferramenta orienta os estudantes através de pequenas lições com explicações sobre cada parte do código implementado. Os códigos são executados e testados no próprio ambiente, permitindo também que os estudantes escrevam livremente suas aplicações e as salvem. Outro recurso interessante, porém ainda não disponível, é o compartilhamento de código.</p><p>Não é necessário instalar nenhum interpretador Ruby, pois a plataforma já vem com <a
href="http://tryruby.hobix.com/" target="_blank">Try Ruby!</a> embutido (também do mesmo <a
href="http://whytheluckystiff.net/" target="_blank">criador</a> do Hackety Hack).</p><p
align="center"><a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/hacketyhack_ide.jpg" title="Hackety Hack IDE"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/hacketyhack_ide.jpg" title="Hackety Hack IDE" alt="Hackety Hack IDE" align="left" height="268" width="255" /></a></p><p>Um dos pontos fracos da ferramenta é o idioma, pois atualmente está disponível apenas para o Inglês, mas creio que seja uma questão de tempo para suportar outros idiomas.</p><p>O <a
href="http://code.whytheluckystiff.net/hacketyhack/wiki/GetHacketyHack" target="_blank">download</a> da versão beta está disponível apenas para Windows, mas versões para Linux e MacOS X estão sendo desenvolvidas.</p><p>Agora você não terá desculpas para não aprender a programar, principalmente em uma linguagem tão promissora como é Ruby!</p><p>Fonte: <a
href="http://www.rubyinside.com/" target="_blank">Ruby Inside</a></p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F04%2F26%2Faprenda-a-programar-em-ruby-com-hackety-hack%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/04/26/aprenda-a-programar-em-ruby-com-hackety-hack/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Extraindo dados com Ruby e Hpricot</title><link>http://www.lednerd.com/2007/04/20/extraindo-dados-com-ruby-e-hpricote/</link> <comments>http://www.lednerd.com/2007/04/20/extraindo-dados-com-ruby-e-hpricote/#comments</comments> <pubDate>Sat, 21 Apr 2007 01:17:39 +0000</pubDate> <dc:creator>Anderson</dc:creator> <category><![CDATA[Programação]]></category> <guid
isPermaLink="false">http://www.lednerd.com/2007/04/20/extraindo-dados-com-ruby-e-hpricote/</guid> <description><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/04/20/extraindo-dados-com-ruby-e-hpricote/&amp;text=Extraindo dados com Ruby e Hpricot&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div> Hoje em dia as informações que podem alimentar um sistema ou website, são de vários formatos e fontes diferentes, exemplo: Sistema de Suporte a Decisão e aplicações Mashup e para demonstrar como isso é simples de se fazer usando Ruby, escrevi o exemplo abaixo baseado no artigo &#8220;Scraping IMDB with Ruby and Hpricot&#8220;. Neste exemplo, [...]]]></description> <content:encoded><![CDATA[<div
class="twitterbutton" style="float: right; padding-left: 5px;"><a
href="http://twitter.com/share?url=http://www.lednerd.com/2007/04/20/extraindo-dados-com-ruby-e-hpricote/&amp;text=Extraindo dados com Ruby e Hpricot&amp;via=led_nerd&amp;related=DolcePixel"><img
align="right" src="http://www.lednerd.com/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div><p>Hoje em dia as informações que podem alimentar um sistema ou website, são de vários formatos e fontes diferentes, exemplo: <a
href="http://pt.wikipedia.org/wiki/Sistema_de_apoio_%C3%A0_decis%C3%A3o" target="_blank">Sistema de Suporte a Decisão</a> e aplicações <a
href="http://pt.wikipedia.org/wiki/Mashup" target="_blank">Mashup</a> e para demonstrar como isso é simples de se fazer usando Ruby, escrevi o exemplo abaixo baseado no artigo &#8220;<a
href="http://www.weheartcode.com/2007/04/03/scraping-imdb-with-ruby-and-hpricot/" target="_blank">Scraping IMDB with Ruby and Hpricot</a>&#8220;.</p><p>Neste exemplo, serão extraidas informações sobre Ações do site <a
href="http://finance.google.com" target="_blank">Google Finance</a>. O exemplo tenta mostrar algumas das maneiras utilizadas para se buscar as informações nas tags das páginas.</p><p>O pré-requisito para que a classe funcione é a biblioteca Hpricote, que é um parse HTML baseado na  biblioteca <a
href="http://www.a-k-r.org/htree/" target="_blank">HTree</a> e <a
href="http://jquery.com/" target="_blank">JQuery</a>, porém recodificado em C.  A instalação pode ser feita pelo comando:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code32'); return false;">View Code</a> BASH</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12432"><td
class="code" id="p124code32"><pre class="bash" style="font-family:monospace;">gem <span style="color: #c20cb9; font-weight: bold;">install</span> hpricot</pre></td></tr></table></div><p>Vamos criar a classe <em>Finance</em>, que ao ser instanciada recebe o endereço da Ação que desejamos extrair as informações:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code33'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12433"><td
class="code" id="p124code33"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Finance
   <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;">'hpricot'</span>
   <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'open-uri'</span>
&nbsp;
   <span style="color:#008000; font-style:italic;">#inicializa as variáveis ao instanciar</span>
   <span style="color:#008000; font-style:italic;">#a classe Finances</span>
   <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#0066ff; font-weight:bold;">@hp</span> = Hpricot<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
   <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Para obter o símbolo da Ação consultada, vamos por exemplo extrair do link conforme a tela abaixo:</p><p
align="center"><a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance1.jpg" title="Google Finance - Símbolo"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance1.jpg" alt="Google Finance - Símbolo" height="249" width="434" /></a></p><p>Para isso vamos criar o método <em>symbol</em>:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code34'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12434"><td
class="code" id="p124code34"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> symbol
   <span style="color:#008000; font-style:italic;">#procura pelas tags &lt;strong&gt;&lt;a href=&quot;http://www.lednerd.com/&quot;&gt;...&lt;/a&gt;&lt;/strong&gt;,</span>
   <span style="color:#008000; font-style:italic;">#extrai o conteúdo e remove os caracteres \n</span>
   <span style="color:#0066ff; font-weight:bold;">@symbol</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>@hp<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;b/a&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span>\n<span style="color:#006600; font-weight:bold;">/</span>,<span style="color:#996600;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Para obtermos o título da Ação, vamos extrair do cabeçalho H1 conforme tela abaixo:</p><p
align="center"> <a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance2.jpg" title="Google Finance - Título"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance2.jpg" alt="Google Finance - Título" height="440" width="438" /></a></p><p>Para isso vamos criar o método <em>title</em>:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code35'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12435"><td
class="code" id="p124code35"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> title
   <span style="color:#008000; font-style:italic;">#procura pelo tag &lt;h1&gt;...&lt;/h1&gt;</span>
   <span style="color:#008000; font-style:italic;">#e extrai o conteúdo</span>
   <span style="color:#0066ff; font-weight:bold;">@title</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>@hp<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;h1&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Para obtermos o índice da Ação, vamos extrair do SPAN conforme tela abaixo:</p><p
align="center"> <a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance3.jpg" title="Google Finance - Índice"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance3.jpg" alt="Google Finance - Índice" height="349" width="436" /></a></p><p>Para isso vamos criar o método <em>index</em>:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code36'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12436"><td
class="code" id="p124code36"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> index
   <span style="color:#008000; font-style:italic;">#procura pela tag &lt;span class=&quot;pr&quot;&gt;...&lt;/span&gt;</span>
   <span style="color:#008000; font-style:italic;">#e extrai o conteúdo</span>
   <span style="color:#0066ff; font-weight:bold;">@index</span> = <span style="color:#0066ff; font-weight:bold;">@hp</span>.<span style="color:#9900CC;">at</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;span[@class='pr']&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Para extrairmos o valor da variação da Ação, vamos extrair  do SPAN conforme tela abaixo:</p><p
align="center"> <a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance4.jpg" title="Google Finance - Variação"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance4.jpg" alt="Google Finance - Variação" height="372" width="432" /></a></p><p>Para isso vamos criar o método <em>change</em>:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code37'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12437"><td
class="code" id="p124code37"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> change
   <span style="color:#008000; font-style:italic;">#procura pelas tags &lt;strong&gt;&lt;span class=&quot;chg&quot;&gt;...&lt;/span&gt;&lt;/strong&gt;</span>
   <span style="color:#008000; font-style:italic;">#e extrai o conteúdo</span>
   <span style="color:#0066ff; font-weight:bold;">@change</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>@hp<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;b/span.chg&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Para extrairmos o percentual de variação da Ação, vamos extrair do SPAN conforme tela abaixo:</p><p
align="center"> <a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance5.jpg" title="Google Finance - Percentual de Variação"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance5.jpg" alt="Google Finance - Percentual de Variação" height="356" width="423" /></a></p><p>Para isso vamos criar o método <em>percente_change</em>:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code38'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12438"><td
class="code" id="p124code38"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> percente_change
   <span style="color:#008000; font-style:italic;">#extrai o html do &lt;p id=&quot;market_data_div&quot;&gt;...&lt;/p&gt;</span>
   market_data = <span style="color:#0066ff; font-weight:bold;">@hp</span>.<span style="color:#9900CC;">search</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'#market_data_div'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
   <span style="color:#008000; font-style:italic;">#procura pelas tags &lt;span class=&quot;chg&quot;&gt;...&lt;/span&gt;</span>
&nbsp;
   <span style="color:#008000; font-style:italic;">#e extrai o conteúdo e remove os parênteses</span>
   <span style="color:#0066ff; font-weight:bold;">@percente_change</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>market_data<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;td/span.chg&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">/</span>,<span style="color:#996600;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>O resultado final será como a classe abaixo:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code39'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12439"><td
class="code" id="p124code39"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Finance
  <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;">'hpricot'</span>
  <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'open-uri'</span>
&nbsp;
  <span style="color:#008000; font-style:italic;">#inicializa as variáveis ao instanciar</span>
  <span style="color:#008000; font-style:italic;">#a classe Finances</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@hp</span> = Hpricot<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> symbol
    <span style="color:#008000; font-style:italic;">#procura pelas tags &lt;b&gt;&lt;a href=..&gt;...&lt;/a&gt;&lt;/b&gt;,</span>
    <span style="color:#008000; font-style:italic;">#extrai o conteúdo e remove os caracteres \n</span>
    <span style="color:#0066ff; font-weight:bold;">@symbol</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>@hp<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;b/a&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span>\n<span style="color:#006600; font-weight:bold;">/</span>,<span style="color:#996600;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> title
    <span style="color:#008000; font-style:italic;">#procura pelo tag &lt;h1&gt;...&lt;/h1&gt;</span>
    <span style="color:#008000; font-style:italic;">#e extrai o conteúdo</span>
    <span style="color:#0066ff; font-weight:bold;">@title</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>@hp<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;h1&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> index
    <span style="color:#008000; font-style:italic;">#procura pela tag &lt;span class='pr'&gt;...&lt;/span&gt;</span>
    <span style="color:#008000; font-style:italic;">#e extrai o conteúdo</span>
    <span style="color:#0066ff; font-weight:bold;">@index</span> = <span style="color:#0066ff; font-weight:bold;">@hp</span>.<span style="color:#9900CC;">at</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;span[@class='pr']&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> change
    <span style="color:#008000; font-style:italic;">#procura pelas tags &lt;b&gt;&lt;span class='chg'&gt;...&lt;/span&gt;&lt;/b&gt;</span>
    <span style="color:#008000; font-style:italic;">#e extrai o conteúdo</span>
    <span style="color:#0066ff; font-weight:bold;">@change</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>@hp<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;b/span.chg&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> percente_change
    <span style="color:#008000; font-style:italic;">#extrai o html do &lt;div id=&quot;market_data_div&quot;&gt;...&lt;/div&gt;</span>
    market_data = <span style="color:#0066ff; font-weight:bold;">@hp</span>.<span style="color:#9900CC;">search</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'#market_data_div'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#008000; font-style:italic;">#procura pelas tags &lt;td&gt;&lt;span class='chg'&gt;...&lt;/span&gt;&lt;/td&gt;</span>
    <span style="color:#008000; font-style:italic;">#e extrai o conteúdo e remove os parênteses</span>
    <span style="color:#0066ff; font-weight:bold;">@percente_change</span> = <span style="color:#006600; font-weight:bold;">&#40;</span>market_data<span style="color:#006600; font-weight:bold;">/</span><span style="color:#996600;">&quot;td/span.chg&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">inner_text</span>.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">/</span>,<span style="color:#996600;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div><p>Para testar a classe podemos criar o script abaixo e executá-lo:</p><div
class="wp_codebox_msgheader"><span
class="right"><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p124code40'); return false;">View Code</a> RUBY</span><div
class="codebox_clear"></div></div><div
class="wp_codebox"><table><tr
id="p12440"><td
class="code" id="p124code40"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'finance'</span>
&nbsp;
f = Finance.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;http://finance.google.com/finance?q=RIO&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">p</span> f.<span style="color:#9900CC;">symbol</span>
<span style="color:#CC0066; font-weight:bold;">p</span> f.<span style="color:#9900CC;">title</span>
<span style="color:#CC0066; font-weight:bold;">p</span> f.<span style="color:#9900CC;">index</span>
<span style="color:#CC0066; font-weight:bold;">p</span> f.<span style="color:#9900CC;">change</span>
<span style="color:#CC0066; font-weight:bold;">p</span> f.<span style="color:#9900CC;">percente_change</span></pre></td></tr></table></div><p>Resultado:</p><p><a
href="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance_resultado.jpg" title="Finance - Resultado"><img
src="http://lednerd.kazap.com.br/wp-content/uploads/2007/04/finance_resultado.jpg" alt="Finance - Resultado" /></a></p><p>O exemplo é simples, mas demonstra como poderiamos extrair informações de qualquer página e utilizá-las em nossas aplicações Web (com Ruby on Rails <img
src='http://www.lednerd.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p><p>Outra poderosa biblioteca que faz uso do Hpricot é o <a
href="http://scrubyt.org/" target="_blank">scRUBYt!</a>, mas falarei dela em uma outra oportunidade.</p><p>Este post está participando do concurso promovido pelo site <a
href="http://simplesideias.com.br/ganhe-o-livro-repensando-a-web-com-rails/" target="_blank">Simples Idéias</a>.</p> <iframe
src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.lednerd.com%2F2007%2F04%2F20%2Fextraindo-dados-com-ruby-e-hpricote%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded> <wfw:commentRss>http://www.lednerd.com/2007/04/20/extraindo-dados-com-ruby-e-hpricote/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> </channel> </rss>
