<?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>Valério Farias &#187; programação</title>
	<atom:link href="http://valeriofarias.com/tag/programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://valeriofarias.com</link>
	<description>(Tecnologia + Negócios) = :)</description>
	<lastBuildDate>Tue, 29 Mar 2011 21:07:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linguagem Ruby e Educação: um acordo feito no céu (tradução)</title>
		<link>http://valeriofarias.com/linguagem-ruby-e-educacao-um-acordo-feito-no-ceu-traducao/</link>
		<comments>http://valeriofarias.com/linguagem-ruby-e-educacao-um-acordo-feito-no-ceu-traducao/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 11:11:33 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Pra refletir]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[aprender]]></category>
		<category><![CDATA[computação]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[diversão]]></category>
		<category><![CDATA[educação]]></category>
		<category><![CDATA[faculdade]]></category>
		<category><![CDATA[linguagem]]></category>
		<category><![CDATA[primeira]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=366</guid>
		<description><![CDATA[É importante não generalizar a linguagem Ruby como se fosse algo que resolverá todos os seus problemas. Ela tem propósito geral, mas será adequada em determinados contexto e outros não, como todas as outras linguagens. O propósito desse post do Kate Cunningham que eu traduzi é mostrar que as características do Ruby são muito harmônicas [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>É importante não generalizar a linguagem Ruby como se fosse algo que resolverá todos os seus problemas. Ela tem propósito geral, mas será adequada em determinados contexto e outros não, como todas as outras linguagens. O propósito desse post do Kate Cunningham que eu traduzi é mostrar que as características do Ruby são muito harmônicas com as características necessárias em um ambiente efetivo de aprendizado. Isso não quer dizer que o aluno deva estacionar no Ruby. Ele terá o caminho facilitado para o mundo da programação com Ruby, mas isso será só o primeiro passo. Ele deverá sim, aprender outras linguagens, pois é a única forma de se aprimorar como profissional de uma área tão dinâmica. O texto original você encontra <a href="http://rubylearning.com/blog/2010/08/11/ruby-programming-and-education-a-match-made-in-heaven/">aqui</a>. Fique agora com a tradução:</p></blockquote>
<p>A linguagem Ruby tem recebido muita atenção na última década, especialmente com o advento do Ruby on Rails em 2005. Enquanto a blogosfera está utilizando Ruby a muito tempo, vamos nos perguntar como, exatamente, a linguagem Ruby é propícia para um ambiente educacional.</p>
<div id="attachment_369" class="wp-caption alignright" style="width: 254px"><a href="http://valeriofarias.com/wp-content/uploads/2010/08/ruby-logo-r.png"><img class="size-full wp-image-369" title="ruby-logo-r" src="http://valeriofarias.com/wp-content/uploads/2010/08/ruby-logo-r.png" alt="Ruby Programming Language" width="244" height="299" /></a><p class="wp-caption-text">Copyright (C) 2008 Ruby Association LLC</p></div>
<p>Claro, podemos ir para a relevância da linguagem Ruby, pois se você está recebendo treinamento em um ambiente educacional para se tornar um programador de computador, e você não sabe o Ruby, então você está ficando cada vez mais fora do circuito. No entanto, linguagens de programação vêm e vão, e educação não é sobre as tendências, é sobre as idéias que sustentam o valor no decorrer dos anos.</p>
<p>Vamos então olhar para a filosofia de linguagem Ruby e ver como é propício à aprendizagem. Por um lado, Ruby é flexível. Ele não tem a rigidez de Java ou PHP. Em um ambiente que maximiza o aprendizado, a flexibilidade é fundamental. E Ruby é tão flexível quanto possível. Yukihiro Matsumoto, o  criador da linguagem Ruby, notou o que ele estava pensando quando ele começou a trabalhar com linguagem de programação: &#8220;É engraçado, quando eu usei PHP para desenvolver ou as coisas que eu fiz em Java, eu estava sempre à procura de algo mais.&#8221;</p>
<p>Outra grande coisa sobre Ruby é seu reforço da capacidade para a criatividade. Como muitos programadores Ruby notaram, Ruby é mais alinhado com o pensamento humano. Desta forma, é muito fácil de usar. E precisamente porque é mais fácil de usar, é mais versátil quando se trata de ser criativo.</p>
<p>A apresentação de <a href="http://www.slideshare.net/vishnu/the-ruby-programming-language-or-why-are-you-wasting-brain-power">slides sobre a linguagem Ruby</a> explica como Ruby auxilia a criatividade. Afirma que os seres humanos perdem produtividade quando são forçados por &#8220;tarefas repetitivas, tarefas desnecessariamente complexas  e resolvendo problemas que não estão dentro do domínio de aplicação.&#8221; Desde que Ruby efetivamente se livra dessas tarefas repetitivas e de tarefas voltadas para máquinas, há mais espaço aberto para ser criativo. Com os alunos, especialmente, a produção criativa é a chave para a aprendizagem de forma eficaz.</p>
<p>Um aspecto do processo de aprendizagem que é absolutamente crítico para a eficácia educacional é diversão. Nós geralmente não pensamos sobre a diversão quando nós pensamos sobre a educação. Mas reflita sobre seus próprios anos escolares no passado. Se você pensar bem, você percebe que os assuntos que você aprendeu mais e reteve o conteúdo eram aqueles em que você estava se divertindo. Este divertimento, claro, resulta em parte da criatividade. Quando você está sendo produtivo, você está se divertindo.</p>
<p>Ao contrário de outras linguagens de programação, você pode fazer muita coisa com Ruby, mesmo se você está apenas nos estágios iniciais de aprendizagem. Para os estudantes, o processo de aprendizagem é frustrante e é um pouco prejudicado quando pequenos erros aparecem no caminho de chegar aos conceitos maiores. Linguagens de programação como C++ podem dificultar o aprendizado dos conceitos maiores porque pequenos erros no código sempre aparecem durante o processo. Já usando o  Ruby o aluno não passa por essas pequenas dificuldades quando está iniciando o aprendizado.</p>
<p>Naturalmente, estes são apenas indicações básicas de que Ruby é a melhor ferramenta de aprendizagem para os interessados em programação de computadores, especialmente os iniciantes. No entanto, assim como na educação como um todo, em que mudanças conceituais básicas no processo de aprendizagem levam os alunos para as melhores práticas na aprendizagem,  Ruby oferece a possibilidade de uma aprendizagem fácil, divertida, criativa, por força da simples virtude de que a linguagem foi feita para pragmaticamente funcionar dessa forma. Em análise final, Ruby foi feito para estudantes, jovens e idosos, iniciantes e mais avançados.</p>
<p>Por Kate Cunningham</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/linguagem-ruby-e-educacao-um-acordo-feito-no-ceu-traducao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução à Linguagem Assembly (tradução)</title>
		<link>http://valeriofarias.com/introducao-a-linguagem-assembly/</link>
		<comments>http://valeriofarias.com/introducao-a-linguagem-assembly/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 22:07:38 +0000</pubDate>
		<dc:creator>Valrio Farias</dc:creator>
				<category><![CDATA[Pra refletir]]></category>
		<category><![CDATA[Assembly]]></category>
		<category><![CDATA[linguagem de máquina]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://geyserway.com/?p=214</guid>
		<description><![CDATA[Para quem não é da área de informática e até mesmo para quem é programador mas sempre trabalhou com linguagens de alto nível esse artigo é muito esclarecedor.  A gente passa a ter consciência e respeitar o esforço que os primeiros programadores e projetistas tiveram para chegar ao que temos hoje. Para ler o artigo [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Para quem não é da área de informática e até mesmo para quem é programador mas sempre trabalhou com linguagens de alto nível esse artigo é muito esclarecedor.  A gente passa a ter consciência e respeitar o esforço que os primeiros programadores e projetistas tiveram para chegar ao que temos hoje. Para ler o artigo original acesse <a href="http://www.swansontec.com/sprogram.html">esse link</a>. Fique agora com a tradução:</p></blockquote>
<p>Esta é uma breve introdução à linguagem assembly. Assembly é a linguagem de programação mais básica disponível para qualquer processador. Com a linguagem assembly, um programador só trabalha com as operações executadas diretamente sobre a CPU física. A linguagem Assembly carece de alto nível de conforto, tais como variáveis e funções, e não é portátil entre as diversas famílias de processadores. No entanto, assembly é a linguagem de programação mais poderosa disponível no computador, e ela dá aos programadores a visão necessária para escrever código eficiente em linguagens de alto nível. Aprender assembly é valorizar o tempo e o esforço de todos os programadores sérios.</p>
<p><strong>O Básico</strong></p>
<p>Antes de podermos explorar o processo de escrever programas de computador, temos que voltar para o básico e saber exatamente o que é um computador e como ele funciona. Cada computador, não importa quão simples ou complexo, tem no seu cerne exatamente duas coisas: <strong>uma CPU e alguma memória</strong>. Juntas, essas duas coisas são o que tornam possível que o seu computador execute programas.</p>
<p>No nível mais <strong>básico</strong>, um <strong>programa de computador</strong> nada mais é do que uma coleção de <strong>números armazenados na memória</strong>. Números diferentes dizem para a CPU fazer coisas diferentes. A CPU lê os números um de cada vez, decodifica-os e executa o que os números dizem. Por exemplo, se a CPU lê o número 64 como parte de um programa, ela irá adicionar 1 ao número armazenado em um local especial chamado AX. Se a CPU lê o número 146, vai trocar o número armazenado em AX com o número armazenado em outro local chamado BX. Ao combinar várias operações simples, como estas em um programa, um programador pode fazer o computador realizar muitas coisas incríveis.</p>
<p>Como exemplo, aqui estão os números de um simples programa de computador: 184, 0, 184, 142, 216, 198, 6, 158, 15, 36, 205, 32. Se você digitar esses números na memória do seu computador e executá-los no MS-DOS, você veria um sinal de dólar ($) colocado no canto inferior direito da tela, uma vez que é o que estes números dizem que o computador faça.</p>
<p><strong>Linguagem Assembly<br />
</strong><br />
Embora os números do programa acima façam sentido para um computador, eles não são claros para um ser humano. Quem poderia imaginar que o código colocaria um cifrão na tela? Claramente, manipular números diretamente é uma péssima maneira de escrever um programa.</p>
<p>Não tem que ser assim. Um tempo atrás, alguém veio com a idéia de que os programas de computador poderiam ser escritos com palavras, em vez de números. Então um programa especial chamado montador pegaria as palavras do programador e converteria em números que o computador pudesse entender. Este novo método consiste em escrever um programa em linguagem Assembly. Isso salvou os programadores de milhares de horas de esforço, já que não tinham mais que procurar números difíceis de lembrar nas costas de livros de programação, em vez disso bastava usar palavras simples.</p>
<p>O programa acima, escrito em linguagem assembly, é assim:<br />
MOV AX, 47104<br />
MOV DS, AX<br />
MOV [3998], 36<br />
32 INT</p>
<p>Quando um montador lê este programa exemplo, converte cada linha de código em uma instrução de nível de CPU. Este programa utiliza dois tipos de instruções, MOV e INT. Em processadores Intel, a instrução MOV movimenta dados, enquanto a instrução INT transfere o controle do processador para os drivers de dispositivo ou sistema operacional.</p>
<p>O programa ainda não está completamente claro, mas é muito mais fácil de entender do que era antes. A primeira instrução, MOV AX, 47104, informa ao computador para copiar o número 47104 no local AX. A próxima instrução, MOV DS, AX, informa ao computador para copiar o número em AX para o local DS. A próxima instrução, MOV [3998], 36 diz ao computador para colocar o número 36 em memória na posição 3998. Finalmente, INT 32 finaliza o programa, retornando ao sistema operacional.</p>
<p>Antes de prosseguirmos, gostaria de explicar como funciona este programa. Dentro do CPU existe uma quantidade de locais, chamados registradores, que podem armazenar um número. Alguns registradores, como o AX, são de uso geral, e não fazem nada de especial. Outros registradores, como o DS, controla a forma como o processador funciona. DS funciona como um registrador de segmento, e é usado para escolher qual área de memória da CPU pode gravar. Em nosso programa, vamos colocar o número 47104 para DS, que fala para a CPU acessar a memória na placa de vídeo. A próxima coisa que nosso programa faz é colocar o número 36 na localização 3998 da memória da placa de vídeo. Como o 36 é o código para o sinal de dólar &#8220;$&#8221; e 3998 é a posição de memória do canto inferior direito da tela, um cifrão aparece na tela alguns microssegundos depois. Finalmente, o nosso programa informa a CPU para realizar o que se chama uma interrupção. Uma interrupção é usada para parar um programa e executar um outro em seu lugar. No nosso caso, usamos a interrupção 32, que termina o nosso programa e retorna para o MS-DOS, ou qualquer outro programa que foi usado para iniciar o nosso programa.</p>
<p><strong>Executando o programa<br />
</strong><br />
Vamos agora rodar este programa. Primeiro, certifique-se de escrever estas instruções em outro local, para servir de referência durante a codificação. Em seguida, clique em seu menu iniciar, e execute o programa chamado &#8220;prompt do MS-DOS&#8221;. Uma tela preta com texto branco deverá aparecer. Estamos agora no MS-DOS, a forma como os computadores eram utilizados 20 anos atrás. MS-DOS existia antes do mouse ser utilizado, então você deve digitar os comandos no teclado para fazer o computador fazer coisas.</p>
<p>Primeiro, eu quero que você digite a palavra &#8220;debug&#8221;, e pressione enter. O cursor irá se mover para baixo uma linha, e você deve ver o prompt de depuração, que é um traço simples. Estamos agora em um programa chamado de depuração. Depuração é uma utilidade poderosa que lhe permite acessar diretamente os registos e memória de seu computador para várias finalidades. No nosso caso, queremos colocar o nosso programa na memória e executá-lo,<br />
então vamos usar um comando debug, para montar. Vá em frente e digite &#8220;a100&#8243; agora. O cursor irá mover para baixo outra linha, e você vai ver algo como &#8220;1073:0100&#8243;. Esta é a localização de memória, nós vamos colocar as instruções assembly. O primeiro número é o segmento, e o segundo número é a posição de memória dentro do segmento. Seu programa de depuração provavelmente irá escolher um segmento diferente do meu, então não se preocupe se ele for diferente. Outra coisa a observar é que a depuração só entende números hexadecimais, que são uma espécie de atalho do computador. Os números hexadecimais podem conter letras e dígitos, então se você ver algo como &#8220;63AF&#8221;, não se preocupe.</p>
<p>Vamos em frente escrever nosso programa agora. Digite cada uma das instruções abaixo no Debug exatamente como elas aparecem, e pressione enter após cada uma. Quando você terminar de inserir a última instrução, pressione enter duas vezes para dizer ao Debug que nós inserimos instruções.</p>
<pre class="brush: ruby; ">
mov ax, B800
mov ds, ax
mov byte [0F9E], 24
int 20
</pre>
<p>Como vocês podem ver, eu converti todos os números em hexadecimal, e fiz algumas mudanças para o debug poder entender o que está acontecendo. Se você cometer um erro ao entrar no programa acima, pressione enter duas vezes, digite novamente &#8220;a100&#8243;, e começe a introduzir as instruções no início do programa.</p>
<p>Depois de ter entrado no programa, você pode ir em frente e executá-lo. Basta digitar &#8220;g&#8221; e pressione enter quando estiver pronto para iniciar o programa. Você deve ver um sinal de dólar no canto inferior direito da tela, e as palavras &#8220;Program terminated normally.&#8221; Estas palavras são colocadas pelo Debug para informá-lo que o programa terminou normalmente. Parabéns! Você acabou de inserir e executar o seu programa feito em Assembly!</p>
<p>Vamos voltar para o Windows agora. Vá em frente e digite &#8220;q&#8221; para sair de depuração. Agora, digite &#8220;exit&#8221; para sair do MS-DOS. Agora você deve estar de volta no Windows.</p>
<p>No próximo artigo falarei da linguagem assembly mais detalhadamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/introducao-a-linguagem-assembly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Papo-de-Nerd: Conversa sobre linguagens de programação</title>
		<link>http://valeriofarias.com/papo-de-nerd-conversa-sobre-linguagens-de-programacao/</link>
		<comments>http://valeriofarias.com/papo-de-nerd-conversa-sobre-linguagens-de-programacao/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 02:35:30 +0000</pubDate>
		<dc:creator>Valrio Farias</dc:creator>
				<category><![CDATA[Papo de Nerd]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://geyserway.com/?p=155</guid>
		<description><![CDATA[No Papo de Nerd de hoje, vou ampliar um pouco o paradigma: Além dos surtos de nerdice que eu comecei no primeiro artigo. Vou incluir também algo parecido com aquelas conversas de boteco, que depois de algumas doses, cada qual quer ser mais filósofo que o outro   . Mais particularmente nesse post vou [...]]]></description>
			<content:encoded><![CDATA[<p>No Papo de Nerd de hoje, vou ampliar um pouco o paradigma: Além dos <strong>surtos de nerdice</strong> que eu comecei no <a href="http://valeriofarias.com/desenhando-com-lado-direito-cerebro/">primeiro artigo</a>. Vou incluir também algo parecido com aquelas <strong>conversas de boteco</strong>, que depois de algumas doses, cada qual quer ser mais filósofo que o outro <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Mais particularmente nesse post vou mostrar <strong>conversas</strong> sobre temas gerais do <strong>dia-a-dia</strong> de um <strong>desenvolvedor web</strong> via Instant Messenger.</p>
<p>Esse papo de nerd virtual foi sobre <strong>linguagens de programação</strong>. Mais particularmente <strong>Python</strong> e <strong>Ruby</strong>. A conversa foi com meu amigo <strong>Macelo.</strong> Fique agora com o texto:</p>
<blockquote><p><strong>Macelo diz:<br />
</strong> O que você Acha do Python?<br />
É o concorrente do Ruby.</p>
<p><strong>Valério diz:<br />
</strong> Não necessariamente o concorrente.<br />
Tem filosofia um pouco diferente do Ruby, mas também é uma linguagem dinâmica,<br />
quase que totalmente orientada a objetos, características parecidas com o Ruby.<br />
<strong><br />
Macelo diz:</strong><br />
Certo, mas não deixa de ser o concorrente.</p>
<p><strong>Valério diz:<br />
</strong>A <a href="http://python-history-pt-br.blogspot.com/2009/04/filosofia-do-python.html">filosofia do Python</a> é dar UMA solução elegante para cada problema. É ser simples e direto.</p>
<p>A <a href="http://en.wikipedia.org/wiki/Ruby_(programming_language)">filosofia do ruby</a> e dar produtividade e diversão para o programador. Dar prioridade ao programador ao invés do computador (linguagem humana).<br />
Os dois tem suas vantagens e desvantagens.</p>
<p><strong>Macelo diz:<br />
</strong> Como tudo na vida.<br />
Mas, do jeito que você diz, faz parecer que o Ruby é bem mais vantajoso.</p>
<p><strong>Valério diz:<br />
</strong> Não necessariamente.<br />
O Python tem o django como framework para aplicativos web, que é muito bem difundido.<br />
É o equivalente ao Rails, mas foi feito com princípios e necessidades próprias.<br />
Cada ferramenta vai ser melhor utilizada em determinados momentos e contextos.</p>
<p>Essa questão de ser concorrente ou não, está muito ligado ao fato de vermos alguns fatos  da vida de forma binária: ou 0 ou 1, ou certo ou errado, ou ganha ou perde. O ponto que quero chegar é que existem outras formas de você olhar para o mundo ao redor e seus recursos. Para você ganhar, não necessariamente o outro tem que perder. Os dois podem ganhar! No caso de linguagens de programação, se eu olhar para elas como mera competição (qual a melhor!) Estarei deixando de lado um universo de possibilidades. Quanto mais pontos de vista e linguagem de programação um programador experimentar e dominar melhor!  Eu <strong>escolhi</strong> o <strong>Ruby</strong> nesse momento porque a <strong>comunidade</strong> é <strong>explosiva</strong> e de <strong>mente aberta</strong>, muitos dos programadores Ruby, conversam sobre ou dominam outras linguagens, além é claro do <strong>código elegante</strong>.</p>
<p><strong>Macelo diz:<br />
</strong> haaaaaa.<br />
Assim faz parecer melhor as duas partes.</p>
<p><strong>Valério diz:<br />
</strong> Em última instância a minha escolha por estudar Ruby é pessoal. Sempre que a gente for para a parte técnica, acaba caindo nessa situação do &#8220;depende do caso&#8221;.</p>
<p><strong>Macelo diz:<br />
</strong> Uhum.<br />
Notei isso.<br />
Um amigo meu programa em Python, e usa o bloco de notas ..</p>
<p><strong>Valério diz:</strong><br />
Você pode usar Python, mas não use o bloco de notas.<br />
Baixe algum aplicativo mais adequado para programação:</p>
<ul>
<li>notepad ++ é uma ótima opção para Windows</li>
<li>no Linux eu uso o gedit</li>
<li>no mac você pode usar o TextMate</li>
</ul>
<p>Se quiser seguir em frente com o Python acesse o <a href=" http://elcio.com.br/">blog de Elcio</a>. Ele tem uma empresa e a base dela é Python.</p>
<p><strong>Marcelo diz:</strong><br />
Beleza, falou!</p>
<p><strong>Valério diz:<br />
</strong>Falou!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/papo-de-nerd-conversa-sobre-linguagens-de-programacao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby + irb + utility-belt + gedit = :)</title>
		<link>http://valeriofarias.com/ruby-irb-utility-belt-gedit/</link>
		<comments>http://valeriofarias.com/ruby-irb-utility-belt-gedit/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 02:25:31 +0000</pubDate>
		<dc:creator>Valrio Farias</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[irb]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[utility-belt]]></category>

		<guid isPermaLink="false">http://geyserway.com/?p=105</guid>
		<description><![CDATA[Em setembro de 2008, Akita fez um post interessante sobre o utility-belt, uma gem
que adiciona várias funcionalidades ao irb (é algo parecido como dar Red Bull para o irb). Entre as várias funcionalidades temos:

 acionar o Vi ou o TextMate a partir do irb, permitindo que você escreva ou cole um código rapidamente, salve, feche [...]]]></description>
			<content:encoded><![CDATA[<p>Em setembro de 2008, Akita fez um <a href="http://www.akitaonrails.com/2008/9/21/ruby-irb-utility-belt">post interessante sobre o utility-belt</a>, uma gem<br />
que adiciona várias funcionalidades ao irb (é algo parecido como dar Red Bull para o irb). Entre as várias funcionalidades temos:</p>
<ul>
<li> acionar o Vi ou o TextMate a partir do irb, permitindo que você escreva ou cole um código rapidamente, salve, feche o editor e já possa testar no irb, sem precisar criar arquivo e salvar em diretório.</li>
<li> visualizar um histórico de comandos digitando &#8220;h&#8221;</li>
<li> abrir o histórico no TextMate ou Vi usando hvi ou hmate</li>
<li> assista ao <a href="http://www.akitaonrails.com/2008/9/21/ruby-irb-utility-belt">screencast</a> do Akita para ver o funcionamento</li>
</ul>
<p>Até aí tudo bem, mas o grande problema é que eu uso <strong>ubuntu</strong> com <strong>gedit</strong> para escrever códigos ruby. E o utility-belt não possui métodos específicos para acionar o gedit. O help do utility belt dá a opção edit_interactively(:gedit), mas é claro que eu não poderia me contentar com esse método, eu queria que funcionasse da mesma forma que funciona para o Vi ou TextMate.</p>
<p>Pesquisando um pouco, achei um artigo que mostra como  <a href="http://www.vanutsteen.nl/2008/05/12/interactiveinline-editor-in-irb/">abrir o editor nano do linux através do irb</a>, extendendo o utility-belt. A partir dele eu fiz algumas modificações no arquivo .irbrc que vocês verão na sequência do Post.</p>
<p>A primeira etapa é instalar o utility-belt:</p>
<pre class="brush: ruby; ">
git clone git://github.com/akitaonrails/utility-belt.git
cd utility-belt
gem build utility_belt.gemspec
sudo gem install utility_belt-1.0.12.gem
</pre>
<p>Agora é só editar o arquivo .irbrc no home do seu sistema e acrescentar as seguintes linhas:</p>
<pre class="brush: ruby; ">
require &#039;rubygems&#039;
require &#039;utility_belt&#039;

module InteractiveEditing
   def gedit
      edit_interactively(:gedit)
   end
end

class Object
   def history_to_gedit
      handling_jruby_bug do
         file = Tempfile.new(&quot;gedit_tempfile&quot;)
         get_lines(0..(Readline::HISTORY.size - 1)).each do |line|
            file &lt;&lt; &quot;#{line}\n&quot;
         end
         file.close
         system(&quot;gedit #{file.path}&quot;)
      end
   end
   alias :hgedit :history_to_gedit
end

UtilityBelt.equip(:all)
</pre>
<p>Depois disso é só salvar e partir para a execução!</p>
<p>Agora você pode usar o comando <strong>gedit</strong> direto do irb e também abrir o histórico no gedit usando <strong>hgedit</strong> ou <strong>history_to_gedit</strong>. Se quiser entender um pouco mais sobre os códigos leia os arquivos: interactive_editor.rb e command_history.rb na pasta: utility-belt/lib/utility_belt$</p>
<p>Para quem não utiliza o gedit, nem o Vi, nem o TextMate,  é só modificar esse código para o seu editor favorito!</p>
<p>Fico por aqui.</p>
<blockquote><p>Obs.:O primeiro teste que eu fiz não funcionou, pois estava faltando uma dependência no meu sistema. Era o xsel que é responsável para fazer cópias de texto do shell para clipboard. Resolvi esse problema usando: <strong>sudo apt-get install xsel</strong><br />
Para saber mais sobre o xsel acesse <a href="http://www.pgrs.net/2008/1/11/command-line-clipboard-access">aqui</a>.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/ruby-irb-utility-belt-gedit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

