<?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>Gustavo Dutra &#187; Linux</title>
	<atom:link href="http://gustavodutra.com/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://gustavodutra.com</link>
	<description>Um pouco de tudo, nada de pouco</description>
	<lastBuildDate>Thu, 29 Jul 2010 22:57:57 +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>Acessando a freenode.org por SSL no Irssi</title>
		<link>http://gustavodutra.com/post/370/acessando-a-freenode-org-por-ssl-no-irssi/</link>
		<comments>http://gustavodutra.com/post/370/acessando-a-freenode-org-por-ssl-no-irssi/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 20:59:15 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[como]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[irssi]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=370</guid>
		<description><![CDATA[Bom, recentemente a FreeNode.org adicionou suporte a conexões SSL. Não que eu faça questão, porém meu irssi perdia a conexão com o server. Fui para o google e decidi postar a dica de como resolvi o problema e habilitei a conexão SSL.

Primeiro, eu baixei um script que a própria FreeNode.org disponibiliza para o irssi, o [...]]]></description>
			<content:encoded><![CDATA[<p>Bom, recentemente a <a rel="nofollow" href="http://freenode.org">FreeNode.org</a> adicionou suporte a conexões SSL. Não que eu faça questão, porém meu <a rel="nofollow" href="http://irssi.org" rel="nofollow">irssi</a> perdia a conexão com o server. Fui para o google e decidi postar a dica de como resolvi o problema e habilitei a conexão SSL.</p>
<p><span id="more-370"></span></p>
<p>Primeiro, eu baixei um script que a própria <a rel="nofollow" href="http://freenode.org">FreeNode.org</a> disponibiliza para o irssi, o instalei e depois algumas dependências.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ~<span style="color: #000000; font-weight: bold;">/</span>.irssi<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>autorun <span style="color: #666666; font-style: italic;">#Se o diretório não existir, crie-o</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.freenode.net<span style="color: #000000; font-weight: bold;">/</span>sasl<span style="color: #000000; font-weight: bold;">/</span>cap_sasl.pl</pre></div></div>

<p>Como maioria das dependências não estavam nos repositórios oficiais do <a rel="nofollow" href="http://archlinux.org">Arch Linux</a> nem do <a rel="nofollow" href="http://aur.archlinux.org">AUR</a>, eu tive que as instalar separadamente e ai já aproveitei pra fazer um script de instalação com todas as dependências. Esse script funciona em qualquer distro. São necessários os seguintes módulos: <strong>Math::BigInt, Math::BigInt::FastCalc, Math::BigInt::GMP, Math::BigInt::Pari, Crypt::DH e Crypt::OpenSSL::BigNum</strong>.</p>
<p>Abra um novo arquivo e cole as linhas abaixo, será nosso script de instalação.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">packages</span>=<span style="color: #7a0874; font-weight: bold;">&#40;</span>Math-BigInt-<span style="color: #000000;">1.89</span> Math-BigInt-FastCalc-<span style="color: #000000;">0.19</span> Math-BigInt-GMP-<span style="color: #000000;">1.24</span> Math-BigInt-Pari-<span style="color: #000000;">1.13</span> Crypt-DH-<span style="color: #000000;">0.06</span> Crypt-OpenSSL-Bignum-<span style="color: #000000;">0.04</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>cpan-comp
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>cpan-comp
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cpan.org<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>T<span style="color: #000000; font-weight: bold;">/</span>TE<span style="color: #000000; font-weight: bold;">/</span>TELS<span style="color: #000000; font-weight: bold;">/</span>math<span style="color: #000000; font-weight: bold;">/</span>Math-BigInt-1.89.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cpan.org<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>T<span style="color: #000000; font-weight: bold;">/</span>TE<span style="color: #000000; font-weight: bold;">/</span>TELS<span style="color: #000000; font-weight: bold;">/</span>math<span style="color: #000000; font-weight: bold;">/</span>Math-BigInt-FastCalc-0.19.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cpan.org<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>T<span style="color: #000000; font-weight: bold;">/</span>TE<span style="color: #000000; font-weight: bold;">/</span>TELS<span style="color: #000000; font-weight: bold;">/</span>math<span style="color: #000000; font-weight: bold;">/</span>Math-BigInt-GMP-1.24.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cpan.org<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>T<span style="color: #000000; font-weight: bold;">/</span>TE<span style="color: #000000; font-weight: bold;">/</span>TELS<span style="color: #000000; font-weight: bold;">/</span>math<span style="color: #000000; font-weight: bold;">/</span>Math-BigInt-Pari-1.13.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cpan.org<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>B<span style="color: #000000; font-weight: bold;">/</span>BT<span style="color: #000000; font-weight: bold;">/</span>BTROTT<span style="color: #000000; font-weight: bold;">/</span>Crypt-DH-0.06.tar.gz
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.cpan.org<span style="color: #000000; font-weight: bold;">/</span>authors<span style="color: #000000; font-weight: bold;">/</span>id<span style="color: #000000; font-weight: bold;">/</span>I<span style="color: #000000; font-weight: bold;">/</span>IR<span style="color: #000000; font-weight: bold;">/</span>IROBERTS<span style="color: #000000; font-weight: bold;">/</span>Crypt-OpenSSL-Bignum-0.04.tar.gz
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> pkg <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$packages</span>; <span style="color: #000000; font-weight: bold;">do</span>
	<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzvf</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pkg</span>.tar.gz&quot;</span> ;
	<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pkg</span>&quot;</span> ;
	<span style="color: #c20cb9; font-weight: bold;">perl</span> Makefile.PL ;
	<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ;
	<span style="color: #7a0874; font-weight: bold;">cd</span> .. ;
<span style="color: #000000; font-weight: bold;">done</span>;</pre></div></div>

<p>OK, o <a rel="nofollow" href="http://garotosopa.wordpress.com/">garotosopa</a> tirou toda a graça do meu script, me alertando uma coisa da qual não sabia, para instalar um módulo do perl, basta digitar:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">cpan <span style="color: #660033;">-i</span> Math::BigInt Math::BigInt::FastCalc Math::BigInt::GMP Math::BigInt::Pari Crypt::DH Crypt::OpenSSL::Bignum</pre></div></div>

<p>Inicie o irssi e digite:</p>

<div class="wp_syntax"><div class="code"><pre class="plain" style="font-family:monospace;">/sasl set freenode Seu_nick Sua_Senha DH-BLOWFISH
/sasl save
/save
/quit</pre></div></div>

<p>Agora, é só ajeitar o config do irssi.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vim</span> ~<span style="color: #000000; font-weight: bold;">/</span>.irssi<span style="color: #000000; font-weight: bold;">/</span>config</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;">servers <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #009900;">&#123;</span>
		address <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;irc.freenode.org&quot;</span><span style="color: #339933;">;</span>
		chatnet <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;freenode&quot;</span><span style="color: #339933;">;</span>
		port <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;7000&quot;</span><span style="color: #339933;">;</span>
		use_ssl <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;yes&quot;</span><span style="color: #339933;">;</span>
		ssl_verify <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;yes&quot;</span><span style="color: #339933;">;</span>
		ssl_capath <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;/etc/ssl/certs&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Entre no irssi novamente e pronto! Só usar o /connect freenode !</p>
<p>E ai, gostou? </p>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/370/acessando-a-freenode-org-por-ssl-no-irssi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Solucionando problema com mmkeys.so no exaile do archlinux</title>
		<link>http://gustavodutra.com/post/327/solucionando-problema-com-mmkeys-so-no-exaile-do-archlinux/</link>
		<comments>http://gustavodutra.com/post/327/solucionando-problema-com-mmkeys-so-no-exaile-do-archlinux/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 00:23:52 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[arch linux]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[exaile]]></category>
		<category><![CDATA[hotkeys]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mmkeys.so]]></category>
		<category><![CDATA[xev]]></category>
		<category><![CDATA[xkeys]]></category>
		<category><![CDATA[xmodmap]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=327</guid>
		<description><![CDATA[As hotkeys, ou teclas de atalho, sempre são úteis para quando você está escutando uma música e alguém lhe pergunta algo, ou precisa ir no banheiro ou precisa passar a música porque a atual é ruim. O exaile sempre foi meu player preferido. Simpatizo muito com ele. Para as teclas de atalho sempre utilizei o [...]]]></description>
			<content:encoded><![CDATA[<p>As <strong>hotkeys</strong>, ou teclas de atalho, sempre são úteis para quando você está escutando uma música e alguém lhe pergunta algo, ou precisa ir no banheiro ou precisa passar a música porque a atual é ruim. O <em>exaile</em> sempre foi meu player preferido. Simpatizo muito com ele. Para as teclas de atalho sempre utilizei o plugin <strong>Xkeys</strong>.</p>
<p>Depois de atualizado o pacote exaile do <strong>ArchLinux</strong>, o plugin <strong>XKeys</strong> parou de funcionar e não aceitava mais minhas teclas de atalho do teclado para manipular áudio, como forward, backward, stop, play, etc.</p>
<p>Esse problema era antigo, ele acusava que era necessário a lib <strong>mmkeys.so</strong> e que não estava presente. Nunca tinha tempo pra verificar o problema, até que eu decidi ir atrás.</p>
<p><span id="more-327"></span></p>
<h2>Configurando as teclas</h2>
<p>O objetivo do post é solucionar o problema, mas para não ficar descontextualizado, vou mostrar como mapear as teclas. É fácil e biodegradável, não polui o meio ambiente.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">xev <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> keycode</pre></div></div>

<p>Vão vir linhas confusas a cada tecla pressionada. O importante é o número junto o &#8220;<strong>keycode</strong>&#8220;. Pegue o número da respectiva tecla e escreva em ~/.<strong>Xmodmap</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="plain" style="font-family:monospace;">keycode NUMERO = XF86AudioLowerVolume
keycode NUMERO = XF86AudioMedia
keycode NUMERO = XF86AudioMute
keycode NUMERO = XF86AudioNext
keycode NUMERO = XF86AudioPlay
keycode NUMERO = XF86AudioPrev</pre></div></div>

<p>Substitua o NUMERO pelo número do keycode que você detectou com o xev, acho que está claro o que cada um representa, né? Abra o arquivo ~/.<strong>xinitrc</strong> e adicione</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">xmodmap</span> ~<span style="color: #000000; font-weight: bold;">/</span>.Xmodmap</pre></div></div>

<p>Se você tiver preguiça de reiniciar a interface gráfica, pode digitar o comando acima para fazer as teclas funcionarem. Ai é só habilitar no exaile!!!</p>
<h2>Ajustando o Exaile</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pacman <span style="color: #660033;">-Ql</span> exaile <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> mmkeys</pre></div></div>

<p>Identifiquei que a mmkeys.so realmente não constava nos arquivos de instalação do <em>exaile</em>. Como o <em>pacman</em> guarda um cache das versões dos programas que eu instalei e atualizei, fui verificando os arquivos de cada uma delas atrás dessa lib, pois um dia isso havia funcionado.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pacman <span style="color: #660033;">-Qpl</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>pacman<span style="color: #000000; font-weight: bold;">/</span>pkg<span style="color: #000000; font-weight: bold;">/</span>exaile-0.2.14-2.pkg.tar.gz <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> mmkeys</pre></div></div>

<p>Esta foi a última versão que tem a dita lib (exaile /usr/lib/exaile/<strong>mmkeys.so</strong>) &#8211; aparentemente o problema veio da versão 3 em diante -, então bastou eu jogá-la para /usr/lib/exaile.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>exaile-src
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-xzvf</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>cache<span style="color: #000000; font-weight: bold;">/</span>pacman<span style="color: #000000; font-weight: bold;">/</span>pkg<span style="color: #000000; font-weight: bold;">/</span>exaile-0.2.14-2.pkg.tar.gz <span style="color: #660033;">-C</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>exaile-src
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>exaile-src<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>exaile<span style="color: #000000; font-weight: bold;">/</span>mmkeys.so <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>exaile<span style="color: #000000; font-weight: bold;">/</span>mmkeys.so
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>exaile-src</pre></div></div>

<p>Pronto! Não precisa nem reiniciar o exaile, apenas habilitar o plugin <strong>XKeys</strong> que ele irá reconhecer automaticamente as suas teclas de atalhos.</p>
<p>Não fui atrás para saber se é problema no empacotamento ou o quê, mas deve funcionar isto até sair uma outra solução.</p>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/327/solucionando-problema-com-mmkeys-so-no-exaile-do-archlinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando Screen e Vim para Pair Programming remoto</title>
		<link>http://gustavodutra.com/post/276/usando-screen-e-vim-para-pair-programming-remoto/</link>
		<comments>http://gustavodutra.com/post/276/usando-screen-e-vim-para-pair-programming-remoto/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 22:09:59 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[engenharia de software]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[pair programming]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=276</guid>
		<description><![CDATA[Bem, é notável o crescimento das metodologias ágeis de desenvolvimento de software. Uma das práticas que me agrada muito, é a programação em pares (pair programming). É bem perceptível, a um longo prazo, a diferença que faz essa prática. Navegando pela internet, como um marujo sem rumo, encontrei um post falando sobre Remote Pair Programming. [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, é notável o crescimento das <strong>metodologias ágeis de desenvolvimento de software</strong>. Uma das práticas que me agrada muito, é a programação em pares (<em>pair programming</em>). É bem perceptível, a um longo prazo, a diferença que faz essa prática. Navegando pela internet, como um marujo sem rumo, encontrei um post falando sobre <em>Remote Pair Programming</em>. Parece meio estranho, porque o XP (<a rel="nofollow" href="http://www.extremeprogramming.org/">eXtreme Programming</a>) faz alusão a uma dupla programar em um único computador, com um único teclado e um único mouse.<br />
<span id="more-276"></span><br />
Então, vamos tentar simular este ambiente utilizando 4 ferramentas simples:</p>
<ul>
<li>screen</li>
<li>ssh</li>
<li>vim</li>
<li>skype</li>
</ul>
<p>Destas, só o <em>skype</em> não é <em>open-source</em>. Mas é interessante manter uma conversa verbal, pois conversas escritas podem desviar o foco da programação, que é bem mais rápida e precisa do que a escrita, que pode deixar brechas para má interpretações. A conversa verbal consegue interromper o programador ao mesmo tempo em que escreve, corrigindo-o ou questionando-o.</p>
<p>Conectados no skype, basta decidir em qual máquina será o desenvolvimento. Esta, por sua vez, terá que ter um servidor <strong>ssh</strong>. Ela será o <em>host</em> da programação. Será necessário, também, nesta máquina, ter instalado o <em>screen</em>, que é um programa que possibilita criar &#8217;sessões&#8217; no terminal.</p>
<h2>Host</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-S</span> PairProgramming</pre></div></div>

<p>Parece que nada mudou, mas você está numa sessão do <strong>screen</strong> chamada <em>PairProgramming</em>.</p>
<p>Precione CTRL+a e digite:</p>

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

<p>Pressione CTRL+a novamente e digite:</p>

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

<p>Tudo que você ver nesta sessão, será visto pelo outro usuário (<em>usuarioclient</em>) que se conectará nela.</p>
<p>Então, abra o <strong>vim</strong>, pois será necessário um edito de textos de verdade <img src='http://gustavodutra.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> , e se divirta:</p>

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

<h2>Client</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> usuarioclient<span style="color: #000000; font-weight: bold;">@</span>host
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-x</span> usuariohost<span style="color: #000000; font-weight: bold;">/</span>PairProgramming</pre></div></div>

<p>Pronto! Agora você está acessando a mesma seção! Tudo que o <em>usuáriohost</em> fizer, o <em>usuárioclient</em> enxergará e <strong>vice-versa</strong>.</p>
<p>Agora, basta descutir a tarefa via Skype e programar. As atualizações são em tempo real, ou seja, aparecem ao mesmo tempo que são escritos, digo&#8230; depende da conexão, mas não é um grande problema.</p>
<p>Caso seja necessário que o usuarioclient não possa modificar o código, apenas assitir e dar pitacos, o usuáriohost deve pressionar CTRL+A e digitar:</p>
<pre>:aclchg usuarioclient -w #</pre>
<p>Eu ainda vou programar assim, depois digo a experiência.</p>
<h2>Referências</h2>
<ul>
<li><a rel="nofollow" href="http://www.linux.com/archive/feature/56443">Linux.com</a></li>
<li><a rel="nofollow" href="http://haruska.com/2009/09/29/remote-pair-programming/">Jason Haruska</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/276/usando-screen-e-vim-para-pair-programming-remoto/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Vimperator, comportamento do Vim no Firefox</title>
		<link>http://gustavodutra.com/post/175/vimperator-comportamento-do-vim-no-firefox/</link>
		<comments>http://gustavodutra.com/post/175/vimperator-comportamento-do-vim-no-firefox/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 02:47:37 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Vimperator]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[produtividade]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=175</guid>
		<description><![CDATA[De um tempo para cá tenho tentando chutar o mouse longe e usar só o teclado, na medida do possível. Culpa do Enygmata, que me mostrou o awesome, um gerenciador de janelas supimpa (que me pareceu 10x melhores que o ion-3), e o vimperator, que adiciona as funcionalidades do Vim no Firefox.O pior é que [...]]]></description>
			<content:encoded><![CDATA[<p>De um tempo para cá tenho tentando chutar o mouse longe e usar só o teclado, na medida do possível. Culpa do <a rel="nofollow" href="http://enygmata.c2zlabs.com/">Enygmata</a>, que me mostrou o <a rel="nofollow" href="http://awesome.naquadah.org/">awesome</a>, um gerenciador de janelas supimpa (que me pareceu 10x melhores que o ion-3), e o vimperator, que adiciona as funcionalidades do Vim no Firefox.O pior é que estou conseguindo!</p>
<p>Parece radical, mas a produtividade aumenta, de certo modo. Não só na hora de programar e testar, sempre que edito arquivos no Vim, tento não usar o mouse. Claro que sempre vai ter alguma aplica&ccedil;&atilde;o que vai te obrigar a usar o mouse, mas se pudermos evitar, melhor!</p>
<p>Graças ao maldito do Enygmata, agora acham que sou retardado. Que estou surtando, querendo usar Vim para tudo! Que não tenho mais nada pra fazer, fico inventando moda. Mas enfim, prefiro terminar minhas coisas rapidinho e tomar meu café vendo os outros perdendo tempo clicando e passando mais trabalho porque não tem mais de 1 clipboard para copiar e colar códigos&#8230;<br />
<span id="more-175"></span></p>
<h2>Vimperator</h2>
<p>Foi minha primeira contribuição séria para a comunidade do ArchLinux. Está lá no AUR, `yaourt -S vimperator` para instalá-lo. Vou dar uma palhinha do que esse moço faz.</p>
<h3>Comandos</h3>
<p>Comandos úteis para utilizar durante a navegação:</p>
<ul>
<li><strong>:buffers</strong><br />
Lista os buffers da aba</li>
<li><strong>:bwipeout</strong><br />
Remove o buffer atual da lista</li>
<li><strong>:edit url</strong><br />
Abre um novo buffer</li>
<li><strong>: open [google|amazom|wikipedia|...] (termos da busca|url)</strong><br />
Abre na aba e buffer atual uma url ou busca. Caso não seja especificado o primeiro parâmetro, ele usará a opção <em>defsearch</em></li>
<li><strong>:tab [help|prefs|addons|downloads]</strong><br />
Executa o comando(help,prefs,etc) e abre numa nova aba</li>
<li><strong>:tabclose</strong><br />
Fecha a aba atual</li>
<li><strong>:tabopen</strong><br />
Abre a url numa nova aba. (Mesmos argumentos de :<em>open</em>)</li>
</ul>
<p><strong>OBS</strong>: A maioria dos comandos para gerenciamento de Abas e buffers do Vim funcionam no Vimperator também.</p>
<ul>
<li><strong>f</strong><br />
	Coloca 1 número em cada link e input da página. Ao digitar o número, ele simula o clique. Caso o número seja de um input, ele dá foco para ele. <strong>Obs</strong>: também é possível digitar um texto contido no link, pois se o texto tiver incidência em apenas 1 link, o mesmo será usado.</li>
<li><strong>G</strong><br />
	Move para o fim da página</li>
<li><strong>gg</strong><br />
	Move para o topo da página</li>
<li><strong>gt / Ctrl+n / Ctrl+PageUp</strong><br />
	Move para a aba seguinte</li>
<li><strong>gT / Ctrl+p / Ctrl+PageDown</strong><br />
	Move para a aba anterior</li>
<li><strong>gH</strong><br />
	Vai para a página inicial definida</li>
<li><strong>H / Ctrl+o</strong><br />
	Volta uma página no histórico</li>
<li><strong>L / Ctrl+i</strong><br />
	Avança uma página no histórico</li>
<li><strong>r</strong><br />
	Recarrega a página</li>
<li><strong>R</strong><br />
	Recarrega a página limpando o cache</li>
<li><strong>y</strong><br />
	Copia a URL atual</li>
<p>&#8216;</p>
<li><strong>Y</strong><br />
	Copia o texto selecionado</li>
<li><strong>zi</strong><br />
	Aumenta o zoom da página em 25%</li>
<li><strong>zo</strong><br />
	Diminui o zoom da página em 25%</li>
<li><strong>zz</strong><br />
	Usado sozinho reseta o zoom para 100%, caso usado 200zz, muda o zoom para 200%</li>
<li><strong>j,k,h,l</strong><br />
	Movem o cursor para baixo, para cima, para a esquerda e para direita, respectivamente</li>
</ul>
<p>As opções funcionam como as do Vim. :set option=valor</p>
<h3>Opções</h3>
<p>Para modificar alguma opção do vimperator, se faz do mesmo modo com que é feito no Vim:</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:</span>set option=value</pre></div></div>

<ul>
<li><strong>complete</strong><br />
	Ao abrir uma URL (com <img src='http://gustavodutra.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> pen), o Vimperator tenta autocompletar. A lista de caracteres que compõe o que será exibido é: s (buscas), f (arquivos locais), b (bookmarks), h (histórico), entre outros.</li>
<li><strong>defsearch</strong><br />
	Especifica a engine de busca, por exemplo: &#8220;:set defsearch=google&#8221;</li>
<li><strong>guioptions</strong><br />
	Opções da gui: m (menubar), T (toolbar), B (bookmark bar), etc. Para mostrar os menus, basta usar &#8220;set guioptions+=m&#8221;, -= para esconder.</li>
<li><strong>hlsearch</strong><br />
	Colore a busca (idem Vim)</li>
<li><strong>ignorecase</strong><br />
	Case-insensitive nas buscas do Firefox</li>
<li><strong>incsearch</strong><br />
	Busca incremental (idem Vim)</li>
<li><strong>showtabline</strong><br />
	Mostra (caso 1) ou esconde (caso 0) a barra de abas.</li>
<li><strong>smartcase</strong><br />
	Sobreescreve o parâmetreo de &#8216;ignorecase&#8217; caso tenha caracteres maiúsculos na busca.</li>
<li><strong>wildmode</strong><br />
	Define como a completação da linha de comando vai funcionar (idem Vim)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/175/vimperator-comportamento-do-vim-no-firefox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Como fazer um mini servidor HTTP em Python</title>
		<link>http://gustavodutra.com/post/141/como-fazer-um-mini-servidor-http-em-python/</link>
		<comments>http://gustavodutra.com/post/141/como-fazer-um-mini-servidor-http-em-python/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 00:06:58 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[como]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tchelinux]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=141</guid>
		<description><![CDATA[Olá! Estava lendo minhas mail lists matinais, mais especificadamente a mail list do TcheLinux (evento que, aliás, irá ocorrer em Gravataí sábado que vem, dia 28/03), quando me deparo com um post de Leonardo Menezes Vaz falando de um mini servidor http em python. Achei muito interessante e resolvi postar aqui.

Ingredientes

Lazanha
Python instalado
3 minutos de lazer


Modo [...]]]></description>
			<content:encoded><![CDATA[<p>Olá! Estava lendo minhas mail lists matinais, mais especificadamente a mail list do TcheLinux (evento que, aliás, irá ocorrer em Gravataí sábado que vem, dia 28/03), quando me deparo com um post de Leonardo Menezes Vaz falando de um mini servidor http em python. Achei muito interessante e resolvi postar aqui.</p>
<p><span id="more-141"></span></p>
<h2>Ingredientes</h2>
<ul>
<li>Lazanha</li>
<li>Python instalado</li>
<li>3 minutos de lazer</li>
</ul>
<ul>
<h2>Modo de preparo</h2>
<p>Pegue os 3 minutos de lazer e utlize para criar um diretório:</p>

<div class="wp_syntax"><div class="code"><pre class="plain" style="font-family:monospace;">$ mkdir ~/htmldocs
$ cd ~/htmldocs
$ echo &quot;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Meus posts no blog&lt;/body&gt;&lt;/html&gt;&quot; &gt; index.html
$ python -m SimpleHTTPServer
$ firefox http://localhost:8000</pre></div></div>

<p>Pronto! Agora você pode gerenciar documentações, fazer preview de posts no seu blog, fazer testes de javascript/css sem precisar instalar o apache ou criar um VirtualHost!</p>
<p>Eu achei útil! E você?</ul>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/141/como-fazer-um-mini-servidor-http-em-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Humor no VIM</title>
		<link>http://gustavodutra.com/post/89/humor-no-vim/</link>
		<comments>http://gustavodutra.com/post/89/humor-no-vim/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 16:28:29 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=89</guid>
		<description><![CDATA[Bom, essa semana foi difícil&#8230; Trabalhando noite a dentro até de manhã, sem parar&#8230; Cansei! Essa semana me cansou de verdade. Então, pra descontrair um pouco, juntei umas tirinhas sobre o VIM que eu já tinha favoritado e vou postar aqui. Vale a pena dar uma lida.
]]></description>
			<content:encoded><![CDATA[<p>Bom, essa semana foi difícil&#8230; Trabalhando noite a dentro até de manhã, sem parar&#8230; Cansei! Essa semana me cansou de verdade. Então, pra descontrair um pouco, juntei umas tirinhas sobre o VIM que eu já tinha favoritado e vou postar aqui. Vale a pena dar uma lida.<br />
<div id="attachment_92" class="wp-caption alignnone" style="width: 310px"><a href="http://gustavodutra.com/wp-content/uploads/2009/02/2009-02-02-emacs-vs-vim.png"><img src="http://gustavodutra.com/wp-content/uploads/2009/02/2009-02-02-emacs-vs-vim-300x94.png" alt="Emacs x Vim" title="2009-02-02-emacs-vs-vim" width="300" height="94" class="size-medium wp-image-92" /></a><p class="wp-caption-text">Emacs x Vim</p></div></p>
<div id="attachment_94" class="wp-caption alignnone" style="width: 510px"><a rel="nofollow" href="http://tnerual.eriogerg.free.fr/0xBABAF000L/10_en.html"><img src="http://gustavodutra.com/wp-content/uploads/2009/02/0010_en_vi-vs-emacs-300x95.png" alt="Vi x Emacs" title="0010_en_vi-vs-emacs" width="300" height="95" class="size-medium wp-image-94" /></a><p class="wp-caption-text">Vi x Emacs</p></div>
<div id="attachment_96" class="wp-caption alignnone" style="width: 510px"><a href="http://gustavodutra.com/wp-content/uploads/2009/02/emacs_learning_curves.png"><img src="http://gustavodutra.com/wp-content/uploads/2009/02/emacs_learning_curves-300x200.png" alt="Curva Aprendizado dos Editores" title="emacs_learning_curves.png" width="300" height="200" class="size-medium wp-image-96" /></a><p class="wp-caption-text">Curva Aprendizado dos Editores</p></div>
<div id="attachment_98" class="wp-caption alignnone" style="width: 510px"><a href="http://gustavodutra.com/wp-content/uploads/2009/02/real_programmers.png"><img src="http://gustavodutra.com/wp-content/uploads/2009/02/real_programmers.png" alt="Programadores de verdade..." title="real_programmers" width="550" height="406" class="size-full wp-image-98" /></a><p class="wp-caption-text">Programadores de verdade...</p></div>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/89/humor-no-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como baixar e converter vídeos do youtube no linux</title>
		<link>http://gustavodutra.com/post/58/como-baixar-e-converter-videos-do-youtube-no-linux/</link>
		<comments>http://gustavodutra.com/post/58/como-baixar-e-converter-videos-do-youtube-no-linux/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 18:17:15 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[como]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[slackware]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://blog.gustavodutra.com/?p=58</guid>
		<description><![CDATA[Aloha! Neste pequeno e simples tutorial (afinal de contas baixar e converter vídeos do youtube é bem mais simples do que você imagina!) vou mostrar a forma mais roots de como baixar vídeos do youtube e converter ela para o formato que quiser. Para isso, vou usar o Slackware 12.2 (testei também no ubuntu 8.04 [...]]]></description>
			<content:encoded><![CDATA[<p>Aloha! Neste pequeno e simples tutorial (afinal de contas baixar e converter vídeos do youtube é bem mais simples do que você imagina!) vou mostrar a forma mais <em>roots</em> de como baixar vídeos do youtube e converter ela para o formato que quiser. Para isso, vou usar o Slackware 12.2 (testei também no ubuntu 8.04 e funcionou legal).</p>
<p>Bom, vamos aos requisitos dos quais vamos precisar:</p>
<ul>
<li>Pacote ffmpeg instalado (geralmente vem com o mplayer, pode ser instalado por apt-get. Também há uma build no linuxpackages)</li>
<li>1 Browser de sua preferência.</li>
<li>1 xícara de café puro sem açúcar</li>
<li>Uma tesoura sem ponta</li>
<li>Cola em bastão</li>
<li>1 url de algum vídeo do youtube</li>
</ul>
<p><span id="more-58"></span></p>
<h2>Baixando o vídeo do youtube</h2>
<p>Modo de preparo:</p>
<ol>
<li>Abra o browser de sua preferência e acesse a url do vídeo do youtube. Eu vou utilizar: http://www.youtube.com/watch?v=dMR0VRb7g60 uma música dos &#8216;Os Nerds&#8217; que fala de um cara que pede &#8220;me dê op no #seu_coração&#8221;, uma paródia com &#8220;here comes you&#8217;re man&#8221;.</li>
<li>Após ter carregada a página, abra o código-fonte do mesmo. (Firefox: CTRL+U).</li>
<li>Localize no meio de tudo aquilo a string &#8220;t&#8221;, sim com aspas e tudo &#8220;t&#8221;. No meu caso ele está nessa linha:

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">var swfArgs = {&quot;q&quot;: &quot;os%20nerds%20kick%20de%20amor&quot;, &quot;vq&quot;: null, &quot;sourceid&quot;: &quot;ys&quot;, &quot;video_id&quot;: &quot;dMR0VRb7g60&quot;, &quot;l&quot;: 164, &quot;sk&quot;: &quot;C4c1AWqTMKCqlc-ps6iNq8hHDwAaAkYAU&quot;, &quot;fmt_map&quot;: &quot;&quot;, &quot;usef&quot;: 0, &quot;t&quot;: &quot;OEgsToPDskJ9NevmQow7fOToemrym1db&quot;, &quot;hl&quot;: &quot;en&quot;, &quot;plid&quot;: &quot;AARgxT891VByDIGsAAAAoAAAAAA&quot;};</pre></div></div>

<p>Viu ele? &#8220;t&#8221;: &#8220;OEgsToPDskJ9NevmQow7fOToemrym1db&#8221;</li>
<li>Copie(com a tesoura sem ponta) aquele token (OEgsToPDskJ9NevmQow7fOToemrym1db) da página do seu vídeo</li>
<li>Agora, na barra de endereços do browser, vamos trocar um pouco as coisas. o que era:<br />
http://www.youtube.com/watch?v=dMR0VRb7g60 vai se tornar: http://www.youtube.com/get_video?video_id=dMR0VRb7g60&#038;t=OEgsToPDskJ9NevmQow7fOToemrym1db (Observerem que trocamos: watch por get_video, v por video_id e adicionamos &#038;t=TOKEN), onde depois de &#038;t= colamos com cola bastão o aquele token que retiramos do código-fonte.</li>
<li>Dando um enter, ele vai pedir pra fazer o download. Esse download é justamente o flv.</li>
<li>Enquanto baixa o vídeo, você toma a 1 xícara de café puro sem açucar.</li>
</ol>
<h2>Convertendo o Vídeo</h2>
<p>Bom, nem todo player toca .flv, então talvez alguns queiram convertê-lo pra .mp3 ou pra .avi, .ogg ou .mpeg. Para isso, vamos utilizar o ffmpeg.</p>
<h3>Convertendo para mp3</h3>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">ffmpeg -author &quot;Os nerds&quot; -title &quot;Me dê op&quot; -i download/get_video.flv -ab 128 -ac 2 -acodec mp3 -vn -y ~/&quot;Musicas/Os nerds - Me dê op.mp3&quot;</pre></div></div>

<p>Voalá! os comandos -author e -title vão mexer na IDv3 da mp3. Assim, quando executar num player, vai aparecer bonitinho o autor e a música. -ab para especificar o bitrate, -i = arquivo de entrada, e -vn = desabilita a gravação de vídeo. -y = é para sobreescrever o arquivo de destino. Ah! e o -acodec para selecionar o codec do audio e -ac o número de canais.</p>
<p>UPDATE<br />
Usando o Arch Linux eu notei que o <strong>-acodec mp3</strong> não funcionava. Portanto, caso vocês não conseguirem com -acodec mp3, tentem: <strong>-acodec libmp3lame</strong></p>
<h3>Convertendo para avi</h3>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">ffmpeg -i download/get_video.flv -ab 56 -y ~/&quot;Clipes/Os nerds - Me dê op.avi&quot;</pre></div></div>

<p>Mais parâmetros, ajuda e outras coisas: http://swoolley.org/man.cgi/1/ffmpeg<br />
Agora você não precisa mais aqueles programinhas cheio de spyware ou ver 300 erros antes de conseguir baixar o vídeo pelo vixy.net!</p>
<p>Qualquer dúvida comente!</p>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/58/como-baixar-e-converter-videos-do-youtube-no-linux/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
