Pages

quarta-feira, 19 de maio de 2010

afterFormat para Ubuntu 10.04

Ano passado criei o afterFormat para o Ubuntu 9.10. Para quem não sabe, o afterFormat é um script que instala automaticamente diversos softwares básicos (principalmente para desenvolvedores) que sempre são necessários após uma formatação, além de fazer algumas configurações. Para ver tudo o que ele faz, dê uma olhada no projeto no github.

Como foi uma mão na roda para muita gente, atualizei o script para rodar no Ubuntu 10.04 (fiz um branch para a versão do Ubuntu 9.10). Adicionei algumas coisas novas, retirei algumas que ficaram obsoletas e o script ficou bem legal.

A cara dele está assim:

screenshot do afterFormat para Ubuntu 10.04

Para baixar, basta entrar no aqui, clicar no link Download Source e escolher entre zip ou tar.

Qualquer dúvida ou sugestão, é só comentar!

[ ]'s

sábado, 1 de maio de 2010

Visualizando diff no Git com o Meld

A ferramenta de diff do Git pode muitas vezes ser confusa e difícil de entender. Contudo, existe uma maneira de configurar o Git para usar uma ferramenta externa de visualização do diff. Nesse caso eu vou usar o Meld que é uma ferramenta excelente que te permite visualizar o diff desta forma:

Tela do diff no Meld

Em primeiro lugar, você deve instalar o Meld:

$ sudo apt-get install meld
Em seguida, configurar o git para usar o Meld como ferramenta externa para diff:

$ git config --global diff.external meld
Se agora você for em um diretório versionado com git e der um git diff irá ocorrer um erro como este:

$ git diff arquivo_qualquer
external diff died, stopping at arquivo_qualquer

Esse erro ocorre pelo fato do Git mandar 7 parâmetros para a ferramenta externa de diff, enquanto o Meld recebe apenas dois deles (os nomes dos arquivos para comparar).

Uma maneira de contornar isso é escrever um script para formatar os parâmetros antes de manda-los para o Meld. Para isso, crie em qualquer lugar (recomendo em ~/.config) um script em shell com qualquer nome (recomendo git_meld_diff.sh) contendo o seguinte conteúdo:

#!/bin/bash
meld "$5" "$2"

Agora podemos configurar o Git para para fazer o diff usando o script que criamos (lembre-se de mudar o caminho e o nome do arquivo para o seu caso)

$ git config --global diff.external /home/hugo/.config/git_meld_diff.sh
Agora, quando você fizer o diff, o Meld irá abrir corretamente e você terá um diff como o presentado na imagem.

Este post é uma adaptação deste post do Nathan Hoad.

Nota: Este post estava no meu blog antigo e não tive como trazer os comentários. Como os comentários foram relevantes, seguem aqui:
  • Hugo Lopes Tavares

    E aí chará!
    Cara, eu prefiro ver na ordem inversa: a versão modificada e a versão original, acho mais normal.
    Outra coisa que dá pra fazer é não usar o Python, né:

    #!/bin/bash
    meld $5 $2 # a versão atual e depois a original

    Abração!

  • Hugo Lopes Tavares

    Só uma correção:

    #!/bin/bash
    meld "$5" "$2"

    Senão não consegue fazer o meld com arquivos que tenham espaço no nome.

  • Hugo Maia Vieira

    Fala chará!
    Realmente fica melhor ver na ordem: versão modificada - versão original.
    Nem tinha pensado em usar Shell. Muito mais prático.
    Valeu pelas dicas Hugo!

    Abraço!

    Obs.: Como mudei o post, fica aqui a versão anterior sem as modificações que Hugo comentou:

    Antes usava um script em python com o conteúdo:

    #!/usr/bin/python

    import sys
    import os

    os.system('meld "%s" "%s"' % (sys.argv[2], sys.argv[5]))


[ ]'s

segunda-feira, 26 de abril de 2010

Quem não usa ágil dá um tiro no escuro

Há um tempo atrás, eu estava lendo o livro Extreme Programming do Vinícius Teles e parei um pouco para lanchar. Abri o Rhythmbox, coloquei no shuffle e apertei o play. Começou a tocar Óculos escuros de Raul Seixas. Enquanto ouvia, me veio a cabeça frases sobre XP para substituir as frases da música. Então, resolvi não lanchar aquela hora e fui escrever. O resultado foi esse:

Quem não usa ágil dá um tiro no escuro


(Quem não usa ágil dá um tiro no escuro)
Kent Beck já dizia o requisito vai mudar
(Quem não usa ágil dá um tiro no escuro)
Mas o escopo é fechado e não dá mais para alterar
(Quem não usa ágil dá um tiro no escuro)
A qualidade cai por terra, não dá tempo pra testar
(Quem não usa ágil dá um tiro no escuro)
O analista documenta pois não sabe implementar¹

Quem não usa ágil dá um tiro no escuro
E como a maré, os requisitos sempre mudam
E o cliente então, bate a cara contra o muro

(Quem não usa ágil dá um tiro no escuro)
Pra erro bobo corrigir, pair programming eu vou fazer
(Quem não usa ágil dá um tiro no escuro)
E vou trocar conhecimentos, todo dia aprender
(Quem não usa ágil dá um tiro no escuro)
CMM é o caramba a parada é XP
(Quem não usa ágil dá um tiro no escuro)
Pra que tanto documento se eu tenho BDD

Quem não usa ágil dá um tiro no escuro
E como a maré, os requisitos sempre mudam
E o cliente então, bate a cara contra o muro

¹ Para a grande maioria, isto é verdade. Porém, existem aqueles que encontram o caminho da luz.

Para quem não lembra: música e letra original.

Quem achar que pode melhorar a letra, manda um comentário e a gente vê como fica! =)

Vou ver se gravo uma versão, com a ajuda de alguns amigos, e posto aqui o resultado.

Update (03/08/10): Como prometido acima, aqui está a música! =)

Nota: Este post estava no meu blog antigo e não tive como trazer os comentários. Além dos elogios de Eduardo Hertz, Rogério Atem, Tarsis Azevedo, Lucas, Lucas Fernandes, Cássio RS, Rodrigo Pinto, Marcos Bernardo, Alisson Sales, Michel Amaral, André Faria Gomes, Eberson Pereira, Bruno Marota, Ahdail Netto e Henrique Bastos, destaco alguns:
  • Hugo Lopes Tavares

    Ficou simplesmente foda :)
    Parabéns!

    Eu tenho um patch:

    --- original 2010-04-26 23:13:50.000000000 -0300
    +++ patch 2010-04-26 23:14:33.000000000 -0300
    @@ -9,7 +9,7 @@
    (Quem não usa ágil dá um tiro no escuro)
    O analista documenta pois não sabe implementar¹
    Quem não usa ágil dá um tiro no escuro
    -E como a maré, muitos requisitos mudam
    +E como a maré, os requisitos sempre mudam
    E o cliente então, bate a cara contra o muro

    (Quem não usa ágil dá um tiro no escuro)
    @@ -22,5 +22,5 @@
    Pra que tanto documento se eu tenho BDD

    Quem não usa ágil dá um tiro no escuro
    -E como a maré, muitos requisitos mudam
    +E como a maré, os requisitos sempre mudam
    E o cliente então, bate a cara contra o muro

  • Vinícius Manhães Teles

    Absolutamente sensacional!!!!

    Parabéns!

    Grande abraço,

    Vinícius Teles.

  • Ricardo

    Parabéns! Muito criativo mesmooooo...

    Sugiro trocar: "Pra erro bobo corrigir, pair programming eu vou fazer"
    Pra: "Pra tempo economizar, pair programming eu vou fazer"

    e

    De: "CMM é o caramba a parada é XP"
    Pra: ???

    Creio que não é bom rivalizar o XP com o CMM.. existe um meio termo entre os dois que não será Agile como o XP e nem tão burocrático quanto a maioria das implementações CMM. E começando assim, mesmo ainda com o CMM, a empresa pode ir melhorando rumo à um Agile mais pleno e maduro.

    Grande Abraço

    Ricardo

  • Hugo Maia Vieira

    Valeu pelos elogios pessoal! =)

    Hugo:

    Feito merge!

    Ricardo:

    Tentei preservar a sonoridade da música original e a forma como você colocou foge um pouco e fica meio estranho para cantar. Veja:

    Original: É tanta coisa no menu que eu não sei o que comer
    Sua: Pra tempo economizar, pair programming eu vou fazer

    Quanto à segunda colocação, a intenção é criar questionamentos e ser divertido e não rivalizar =)

    O pessoal do NSI se mobilizou e vamos gravar uma versão. Assim que estiver terminada postarei aqui no blog.

    Abraço à todos!

  • Marcus Rodrigues

    Caríssimos,

    Interessante a versão... bem bolada! Mas permitam-me um comentário. Mas antes, uma citação:

    “Bem-aventurados os que não viram e creram.” João 20:29b

    Ou trazendo para o nosso tema... Felizes os que enxergam mesmo no escuro ;-)

    Interessados em desenvolver a "arte" de atirar no escuro, convido uma leitura sobre o SCRUMMI: http://www.scrummi.com.br/

    O Scrummi é um processo para gerenciamento ágil de projetos que foi desenvolvido como resultado de projeto de pesquisa do mestrado de Ana Sofia Marçal, visando combinar práticas do método ágil Scrum com práticas das áreas de processo de gestão do CMMI.

    Atirar no escuro é possível, e totalmente viável ;-)

    Forte abraço,

    Marcus Rodrigues, PMP, MSC ;-)

  • Luiz C. Parzianello

    Hugo, realmente ficou bem criativo e engraçado! Parabéns! Mas também vou tomar a liberdade de deixar algumas sugestões de refactoring para sua letra:

    1) Substituir "usa ágil" por "pensa ágil". Fica coerente com a sonoridade e vai mais ao encontro com aquilo que pregamos. O próprio David Hussman tem batido na tecla de parar de dizer que fazemos ou usamos Métodos Ágeis. Isso faz pensar em processo novamente acima das pessoas e interações. O processo que temos que pensar é o do pensamento ágil.

    2) Concordo que inserir CMM na letra gera um desconforto para muita gente. Evite aquilo que não se quer e foque mais naquilo que queremos. Uma sugestão, dado que estás explorando mais XP:

    Substituir: "CMM é o caramba a parada é XP"
    Por: "E com o produto integrado, mais valor nós vamos ver"

    Combina com a frase original do Raul e tira o CMM :-)
    "Só com a praia bem deserta que o sol pode nascer"

    Meus 2 cents!

  • Cristiano Teles

    Pô muito boa a ideia, acabei de ouvir a música e achei muito boa.
    Poderia fazer referência desse post com a música gravada ;)
    Já que pesquisando pelo nome da música cai aqui.

    Valeu

[ ]'s

quinta-feira, 22 de abril de 2010

Vamos instalar e configurar o Git?

Git é um sistema de controle de versão gratuito e opensource. É muito simples de manipular e foi projetado para ser usado desde pequenos projetos individuas até grandes projetos com diversas pessoas, com grande velocidade e eficiência.

Para instalar o git rode no terminal (Ubuntu):

$ sudo apt-get install git
A configuração do git fica guardada no arquivo .gitconfig na home do usuário. Você pode configurar o git editando esse arquivo manualmente, porém, recomento usar o comando git config pelo terminal que editará o arquivo pra você, e irá manter o padrão correto de configuração do arquivo.

Para manter a configuração de todos os seus projetos a mesma, utiliza-se o argumento --global.

Usuário


As configurações do usuário são importantes para identificar quem fez as alterações nos arquivos. Para quem usa o github, o e-mail configurado aqui deve ser o mesmo cadastrado no site, para que ele te identifique e relacione seus commits a você, além de colocar as informações cadastradas no gravatar, como sua foto.

$ git config --global user.name "Hugo Maia Vieira"
$ git config --global user.email "hugomaiavieira@gmail.com"

Cores


O uso de cores facilita bastante quando você vai ver alguma informação. Para facilitar a visualização do branch, diff, grep e status você pode ativar o uso de cores para esses comandos do git.

$ git config --global color.ui auto
Assim, ao rodar o git status, por exemplo, você vai ver os arquivos modificados adicionados e não adicionados ao commit em verde e vermelho respectivamente.

Editor


Ao fazer qualquer interação que precise de alguma entrada de texto, por exemplo um commit, o editor que você configurar aqui será aberto para você escrever, neste caso, a descrição do que foi alterado. No meu caso eu uso o vim.

$ git config --global core.editor vim

Abreviações/Apelidos


Algumas pessoas preferem usar abreviações em vez de digitar o nome do comando inteiro. Eu particularmente acho desnecessário, pois o comandos são curtos e o tab também ajuda bastante, mas para quem gosta ai vai um exemplo no estilo SVN

$ git config --global alias.br branch
$ git config --global alias.ci commit
$ git config --global alias.co checkout
$ git config --global alias.st status

Essas são apenas as configurações mais básicas. Para mais informações sobre outras diversas configurações existentes veja a documentação.

Nota: Este post estava no meu blog antigo e não tive como trazer os comentários. Seguem o bom comentário que lá estava:
  • Hugo Lopes Tavares
    Aprendi um alias muito interessante com uma apresentação que o Gabriel Lima me enviou por e-mail:

    git config --global alias.gl "log --graph --pretty=oneline --abbrev-commit"
    O que isso fará é um log, mostrando um gráfico com contrabarras e pipes de merges, apenas uma linha com as informações do commit (hash e mensagem do commit) e fará uma abreviação do hash. Assim, um no should-dsl eu tive, entre outras mensagens:

    $ git gl
    * e7ce5fe should.thrown added
    * 5044b8b obsolete comments removed
    * 1bee06e matcher added: equal_to_ignoring_case
    * 2674658 updated version

    Abração!
[ ]'s

sexta-feira, 9 de abril de 2010

Deus e Ruby!

Deus e Ruby

Um bom exemplo do poder de ruby e da lentidão de sua versão 1.8 =)

Estou começando a brincar com o Inkscape. Como tinha a ideia dessa tirinha, resolvi cria-la usando o Inkscape para dar uma treinada. Pretendo fazer outras como esta, se surgirem ideias novas =)

[ ]'s