pareando remotamente com tmux

Este artigo é uma continuação do pareando remotamente

No outro post, havíamos falado do screen, uma excelente ferramenta tanto para pareamento remoto, como para simplesmente garantir que os programas continuem rodando mesmo que a sua conexão ssh caia.

Porém, como nem tudo é perfeito, o screen tem suas limitações, e, no melhor estilo, surge na comunidade uma alternativa interessante: tmux

Se eu tinha falado de zilhões de atalhos para você conseguir fazer uma sessão de pair-programming remoto via terminal, sinto desapontá-lo, mas o tmux tornou tudo mais fácil:

Enquanto um usuário conecta no servidor e executa

tmux

O outro usuário conecta com o mesmo usuário e executa

tmux attach

O resultado é instantâneo, simples e eficiente. Tudo que você estava acostumado a usar no screen continua funcionando no tmux; a única diferença é que o atalho ctrl+a virou ctrl+b, por questões de interoperabilidade (o criador do tmux era usuário do screen e desenvolveu o tmux usando screen). Isso pode ser configurado, mas isso fica para outra oportunidade.

Acho que a principal coisa a destacar no tmux é o suporte a splits (uma beleza pra usuários de vim como eu), suporte a unicode e 256 cores; falando das partes internas, uma arquitetura 100% client/server, permitindo inclusive que as janelas possam ser movidas de uma sessão para outra, além de retirar um monte de funcionalidades obscuras presentes no screen, como suporte a terminais seriais e outras coisas exóticas. A descrição completa das diferenças você pode encontrar aqui

Já experimentou? Aposentei o screen por aqui...


Pareando Remotamente

Não preciso tecer comentários sobre as vantagens da programação em par. Se você ainda tem dúvidas, leia isto

pair - taken from http://www.flickr.com/photos/cobalt/677911778/sizes/m/

Às vezes não é possível a presença física de um dos pares, por diversos motivos. Para esse tipo de situação, screen! (contando que você consiga usar editor modo texto)

Não vou me aprofundar no screen em si, deixando uma receita de bolo para os impacientes:

Você vai precisar de uma máquina acessível por ssh, com o screen instalado - praticamente todas as distribuições de linux possuem um pacote pro screen.

Receita de bolo

  • acesse a máquina remota
  • execute screen
  • ctrl + a :multiuser on (sim, este comando é bem chato para quem não está acostumado, isso vai colocar o screen no modo de compartilhamento de tela
  • peça ao outro desenvolvedor para acessar a mesma máquina (com o mesmo usuário, sei que funciona com usuários diferentes, mas ainda não testei)
  • o outro desenvolvedor executa screen -rx e voilá, já temos uma tela compartilhada entre os pares.

Algumas dicas do screen

  • ctrl + a d => desconecta o terminal, e deixa ele rodando no servidor. Isso é extremamente útil em conexões que ficam caindo o tempo todo...
  • ctrl + a c => cria um novo terminal virtual, que pode ser acessado usando.....
  • ctrl + a 0 => acessa o terminal virtual #0
  • ctrl + a 1 => acessa o terminal virtual #1 e assim respectivamente...
  • ctlr + a ? => acessa a ajuda do screen

Viu como é fácil?

Agradeço ao Jeff Schoolcraft pela dica, me ajudou muito a começar a brincar com cucumber / rspec.