Linux

Linux, Vim, Screen e Pair programming!

Æ!!

Aqui estou eu mais uma vez para falar mais uma das maluquices que eu fiz um bom tempo atrás mas não tive tempo de postar.

Primeiramente eu vou falar o que muita gente já falou muito bem, que é sobre screen e pair programming. Mas vou dizer como funcionou para mim. Alguns posts que eu li antes e depois de começar a brincar com screen e pair programming, e que eu gostei:

Primeiramente vamos começar com umas dicas do post do caike:

Para mim foi necessário alterar as permissões do Screen:

sudo chmod +s /usr/bin/screen
sudo chmod 775 /var/run/screen

Agora é só seguir a velha receita dos dois posts:

Primeiro usuário:

  • O primeiro usuário acessa o computador host via ssh
  • executa o comando screen -S nomedoscreen

Segundo usuário:

  • Acessa o servidor com o mesmo nome de usuário/senha do primeiro
  • executa screen -x

Pronto! As duas pessoas estão compartilhando a mesma tela agora e podem usar o Vim para programar (claro, qual outro editor seria, não!?).

Nunca consegui utilizar o screen multiusuário (como mencionado no post do caike) mas isso não é um grande problema. :)

Como eu usei

Primeiramente fiz um pair programming normal com o @mateuslinhares, onde nós dois ficavamos no mesmo screen conversando (estavamos há menos de 2 metros de distância), e cada um com seu teclado, podendo intervir a qualquer momento. Isso foi legal por que não precisávamos ficar dividindo espaço de um mesmo monitor ou de um mesmo teclado, e ainda driblava outros problemas que tínhamos na época.

Uma nova idéia

Na época desse pair programming estavamos com uma task grande e trabalhosa, mas podia ser feita individualmente, e provavelmente seria mais produtiva do que em pair programming, mas tinha uma particularidade muito interessante. Cada um de nós conhecia melhor uma parte do sistema, portanto, se mantivessemos contato contínuo isso ia acelerar o trabalho, pois precisávamos alterar/retirar algumas coisas que podiam ou não ser importantes para o sistema como um todo. Levando tudo isso em conta me surgiu uma idéia:

Por que não fazer tudo com um “semi pair programming”, onde cada um trabalhava no seu computador mas visualizando a tela do outro em um split.

Tanto eu como o @mateuslinhares estamos acostumados a separar o nosso vim em vários splits verticais e horizontais, ou seja, um split vertical do screen não seria o problema.

O que fizemos

Decidimos então seguir o seguinte script:

Setup das duas maquinas:

  • Vim
  • Screen
  • Um usuário em comum

PotHix:

  • com o usuário compartilhado
  • executa um screen -S pothix na sua maquina
  • Abre um novo split no screen com o comando ctrl+a s
  • Nesse novo split acessa a maquina do Mateus e executa screen -x para acessar o screen que o @mateuslinhares criou na maquina dele
  • Volta para o split anterior e trabalha normalmente

@mateuslinhares

  • com o usuário compartilhado
  • executa um screen -S mateuslinhares na sua maquina
  • Abre um novo split no screen com o comando ctrl+a s
  • Nesse novo split acessa a maquina do Mateus e executa screen -x para acessar o screen que o PotHix criou na maquina dele
  • Volta para o split anterior e trabalha normalmente

Seguindo esse script teremos os 2 utilizando um screen com um split, sendo que um split é para seu trabalho local e no outro você pode acompanhar e dar pitacos no trabalho do seu comparsa! :)

Benefícios

No caso dessa nossa task isso resolveu muito o nosso problema, por que conseguimos trabalhar em locais distintos mas sempre em constante comunicação, o que sempre trazia alguns comentários como:

PotHix: Ow…Não tira isso aí não por que vai quebrar tal parada.

ou então:

Mateuslinhares: Cara…Olha isso aqui no screen, dá para fazer na sua parte tambem.

Conclusão

Para mim foi muito bom e recomendo a todos para tentarem algo do tipo quando tiverem chance (a não ser que você use Textmate…nesse caso…boa sorte! :P )! A unica coisa que eu recomendo é utilizar 2 monitores, assim você pode deixar a tela do seu comparsa no outro monitor (divida os monitores verticalmente) e trabalhar com vários splits no seu monitor. :) É totalmente possível trabalhar com 1 monitor apenas (foi assim que trabalhamos) mas você obviamente perde um pouco de espaço ;)

Espero que essas informações sejam úteis para mais alguem.

Qualquer dúvida ou sugestão deixe nos comentários. :)

Há braços

Tags:

Sunday, March 28th, 2010 Development 5 Comments

Palestra sobre Vim

Æ!!

E ae pessoal,

Esse vai ser um post curto, apenas para deixar registrado algumas informações sobre a palestra de Vim que teve no sétimo encontro do Guru-sp (sim, eu fui o palestrante :D ).

Primeiramente, já começo com uma desculpa, por que já faz mais de 2 semanas que palestrei e só agora estou fazendo esse post. :(

Foi bem legal palestrar para uma galera que já conhecia ao menos um pouco do editor. Quando eu estava planejando o que eu ia falar eu fiquei com uma grande dúvida de qual seria a minha linha de apresentação, por que eu não sabia quantos já conheciam o editor, portanto eu poderia chegar falando de coisas avançadas e ninguem entenderia nada, ou pelo contrário, se muitos conhecessem e eu chegasse falando de coisas básicas demais a palestra seria um saco. A minha solução para isso foi preparar os slides de uma forma que eu conseguisse falar mais ou menos de determinados assuntos baseado no conhecimento do pessoal. Os slides que saíram foram esses:

Quando perguntei para o pessoal quem já utilizava, quem nunca abriu (ou não conseguiu sair…heheh) e que usa como editor principal, eu descobri que estava equilibrado. Portanto segui uma linha mais comum.

Tive a sorte do agaelebe gravar (valeu Hugo!), e portanto temos o vídeo tambem:

Qualquer dúvida, comentário ou sugestão é só postar aqui! :)

Há braços

Tags: , ,

Sunday, March 28th, 2010 Presentation 5 Comments

Ubuntu 9.04

Æ!!

Hoje estou aqui para falar um pouco sobre o Ubuntu 9.04! :)

Alguns dias atrás eu postei no twitter que não estava satisfeito com o Ubuntu 9.04,  e abaixo descrevo alguns dos motivos.

Primeiramente comecei tentando instalar ele pelo cd ( para não ter que deixar o computador ligado mil horas baixando, e tambem por que tenho mais de 1 Ubuntu em casa, portanto mais de mil horas x 2 ) e não consegui….Procurei várias informações, desabilitei os sources e deixei só o cd lá, e vários outros procedimentos, mas mesmo assim não tive sucesso, e por isso tive que deixar o notebook ligado fazendo download a noite inteira.

Ao terminar a instalação e reiniciar ele funcionou beleza! :)

Começando a brincar mais com o bichinho, eu descobri que o meu flash tinha bugado ( para variar… ), e as coisas que utilizavam ele estavam funcionando meia boca,  sem contar que ainda tinha alguma coisa bizarra que funcionava como um flashblock, só que pior, por que quando eu clicava ele poderia funcioanar, ou não. ¬¬

Tentei relevar isso, mas quando fui fazer uns testes com o compiz, percebi que ele tambem não conseguia mais ativar os efeitos ( tudo bem que eu nem uso…Mas gostaria que funcionasse pelo menos :P ), retornando uma mensagem de que os efeitos não poderiam ser habilitados. :(

Estava meio sem tempo para perquisar sobre isso, então ficou assim por alguns dias, o que me deu um pouco de desânimo, e foi aí que postei no twitter aquele comentário.

Ontem eu resolvi tirar um tempinho para resolver esses problemas, e até que foi simples ( como de costume )! ;)

Resolvendo problema do Flash no Ubuntu 9.04:

Eu percebi que estava usando um plugin free do flash, e vi comentários na internet que esse plugin não é tão bom como o da Adobe ( mas funcionava muito bem no 8.10 :P ), portanto resolvi desinstalar e instalar o da Adobe:

sudo apt-get remove --purge swfdec-mozilla swfdec-gnome mozilla-plugin-gnash gnash
sudo apt-get install flashplugin-nonfree

E o flash já voltou a operar normalmente! :)

OBS: Se não conseguir resolver com o mesmo procedimento que eu usei, veja se consegue com um dos outros 3 procedimentos que tem no UbuntuGeek.

Resolvendo problema do compiz no Ubuntu 9.04:

Pesquisando mais sobre o meu problema eu achei esse bug no LaunchPad, com várias pessoas com o mesmo problema, e em um dos ultimos comentários tem uma dica que resolveu o meu! :)

A minha placa de vídeo estava na blacklist do compiz, e eu comentei o arquivo, deixando com que ela não fique mais blacklisted:

Abri o arquivo do compiz ( que está em /usr/bin/compiz ), comentei as linhas referente a minha placa de vídeo, salvei e reiniciei.

Depois de logar fui testar o compiz, e lá estava ele funcionando novamente! :D

É claro que eu já desabilitei os efeitos denovo por que não acho legal ficar trabalhando com eles, mas já está lá funcioanndo para fazer gracinhas! :P

Espero que seja útil para mais alguem.

Há braços

Tags: ,

Wednesday, May 6th, 2009 Ubuntu 7 Comments

Deploying a simple Merb application on Locaweb

Æ!!

I writing this post to help my friends of Rubylearning with a little Merb application deployment on Locaweb. I’m just translating some informations that you can find here in portuguese.

Lets start! :D

First open the Domain Manager ( Gerenciador de domínios ) on Locaweb Panel ( Painel da Locaweb ) and configure the pointer of your main site to  other directory on public_html of your account ( this directory don’t need to exist ). Follow this steps:

  1. Click on “alterar” ( change )
  2. Change the “Diretório Web” ( web directory ) to the new diretory
  3. And click on button “Salvar” ( save )

Transfer your application to a directory on your host. For this example, lets say that your application is called “sample_merb”, so, connect via SSH on your account and create the directory “rack_app”:

mkdir -p rack_app/sample_merb

And move your application to there.

Your application must to have a file called “config.ru” to be executed by Phusion Passenger, so, you need to create this file on your application folder ( rack_app/sample_merb on this case ) with this content:

require ‘rubygems’ require ‘merb-core’ Merb::Config.setup(:merb_root => “.”, :environment => ENV['RACK_ENV']) Merb.environment = Merb::Config[:environment] Merb.root = Merb::Config[:merb_root] Merb::BootLoader.run run Merb::Rack::Application.new

Now you need to create a symbolic link on your public_html diretory, as you have configured on your Domain Manager ( Gerenciador de Domínios ) of Locaweb Panel.

ln -s ~/rack_app/sample_merb/public ~/public_html/sample_merb

With this simple configuration you will have your application pointed by apache with Phusion Passenger.

Just to you know, you can see the merb gems that are installed with:

gem list | grep merb

Hope this help you on how to make your simple application works on Locaweb. ;)

Tags: , , ,

Wednesday, January 7th, 2009 English, Rubylearning No Comments

Ir além do básico tambem é gratis

Æ!!

Faz um tempinho que eu estou querendo fazer um post seguindo os moldes da campanha do Marco Gomes, que também gerou o post do Diego Eis, e finalmente consegui um tempinho para expressar também a minha opinião nesse assunto! :)

Conheço muitas pessoas que fazem faculdade relacionada a programação, mas não aplicam o que estão vendo por lá, acham que já estão fazendo demais em ir para a faculdade e ficar lá no tempo em que o professor está falando…Ou seja, essas pessoas não estão indo a faculdade para aprender algo para colocar em prática, eles estão lá simplesmente para “passar de ano”.

As vezes não é nem tanto com faculdade também, tem pessoas que não fazem faculdade, querem ser programadores, mas tem aquele pensamento:

“Ahh…Eu preciso de uma oportunidade para aplicar os meus conhecimentos”

A internet está aí para isso! Você pode ter uma gama monstruosa de ferramentas para brincar se quiser, tantos livros gratuitos para aprender / melhorar sua programação, tantos projetos Open Source para contribuir, cursos on-line gratuitos para fazer, mas o sujeito quer “ganhar uma oportunidade” sem nem mesmo merecer ela.

Esse tipo de pessoa para mim não é programador!

O Marco Gomes costuma chamar esse tipo de pessoa de bunda mole, eu tenho meu termo favorito que é muito utilizado por mim atualmente: Marica!

“Gostaria de aprender a fazer isso por que é muito foda, mas parece muito difícil, então vou fazer o XY que é mais zuadinho mas é fácil”

Apertar parafusos também é fácil…Se as coisas fossem fáceis colocaríamos robôs para fazer…Marica!

“Estou trabalhando na empresa XY mas já estou cansado de lá…Cansei de suporte técnico, eu quero é ir programar, mas sem experiência fica difícil”

Vá e consiga sua experiência sozinho, faça um site e mostre quando for na entrevista, como que o cara quer ter experiência sem fazer nada….Marica!

“Putz…Não conheço nada de Linux esse sistema é uma merda…”

Esse é um candidato perfeito a ser um ótimo programador não é?! Primeiro já caiu numa contradição, por que se ele não conhece nada, como sabe que é uma merda? E outras, não quer nem conhecer um sistema diferente onde ele terá suporte nativo a várias linguagens, e não só isso, só o fato de não querer aprender algo gratuito e importante para a carreira já faz dele um marica!

Portanto, vamos a alguns pontos importantes:

  • Invista tempo em aplicar o que você aprende na faculdade, ou caso não faça faculdade, corra atrás de coisas para estudar e aplique elas também.
  • Procure coisas diferente para saber, afinal, quanto maior a sua gama de conhecimentos mais difícil será você dizer para alguem: “Não sei nem o que é isso”.
  • Desenvolva coisas úteis e mostre seus código na internet, isso ainda vai ser muito útil para você ( tanto para aprendizado quanto para apresentação pessoal ).

Para finalizar só quero frisar uma frase do post do Marco Gomes que é muito interesssante e resume muito a minha opinião:

“Você pode mudar sua vida, e até mudar o mundo, com o mesmo equipamento que usa pra ficar o dia inteiro no orkut trocando recadinhos com as peguetes”

Há braços

Tags: ,

Wednesday, December 10th, 2008 Advice 13 Comments

My last Tweet

Search