domingo, 14 de março de 2010

Os 5 "porquês"

Desenvolvida por Sakichi Toyoda (fundador da Toyota), a técnica conhecida como "os 5 porquês" pode ser usada para identificar a causa-raiz de um problema, atacando assim as causas e não os sintomas. De forma simples, consiste em realizar 5 iterações questionando o porquê do problema, sempre questionando a causa anterior.
A técnica foi apresentada por Juan Bernabó, durante o treinamento de Scrum Master, em São Paulo. No exemplo, a situação ocorreu quando os responsáveis pela manutenção do monumento à Washington, na capital dos USA, buscavam entender a causa das constantes rachaduras em torno do monumento. A solução imediata seria melhorar a qualidade do concreto utilizado e aumentar a frequência de manutenção, aumentando os custos. Mas questionando um pouco mais :
  • Por que o concreto racha?
- Por causa das constantes (diárias) lavagens (com produtos quimicos)
  • Por que são necessárias as lavagens?
- Para limpar as fezes de pombos
  • Por que existem tantos pombos?
- Porque eles se alimentam dos insetos que existem no monumento
  • Porque existem tantos insetos?
- Porque eles são atraidos pela iluminação, que fica ligada a noite inteira, e após se alimentarem, fazem as fezes ao redor do monumento.

Solução: Para reduzir a necessidade de manutenção do monumento, desligar as luzes após determinado horário.

É um exemplo simples, mas demonstra o conceito. Em várias situações, podem ser necessárias mais ou menos iterações, mas na maioria dos casos, gira próximo a cinco. Técnica bastante útil, em especial em processos de qualidade.

Mais informacões:

Wikipedia - The five whys

segunda-feira, 7 de dezembro de 2009

MACOSX: Configurando teclado US International

Para utilizarmos os caracteres acentuados do português corretamente no MACOSX é necessário configurar o layout do teclado para US International. E para isso, o procedimento é bem simples:

  1. Baixe o arquivo dmg aqui.
  2. Abra o arquivo dmg e copie o arquivo US International para o diretorio /Library/Keyboard Layouts - exatamente com esse nome, caso não exista na sua distribuição
  3. Faça logout para que o novo layout seja reconhecido e login novamente.
  4. Vá em 'System Preference', escolha 'International' >> 'Input Menu' e seleciona US International na lista
  5. Selecione o layout correspondente na barra superior do MACOSX (escolhendo o icone da bandeira americana) - caso não mude automaticamente.
  6. Pronto, instalação do novo layout concluída. Você pode testar digitando acentos seguidos por letras como á, ç ou ó.

Simples assim.

Referência aqui.

sábado, 28 de novembro de 2009

Rootkits no Linux

Rootkits são trojans que tentam esconder sua presença fazendo-se passar por drivers, processos ou arquivos do sistema operacional. Ao contrário do que possa parecer, os sistemas Linux também podem ser afetados por eles, embora não seja tão frequente quanto no Windows.

Para verificar se o seu sistema está infectado, existem diversas opção, gratuitas e pagas. Entre elas, duas são especialmente simples de instalar e executar:

chkrootkit

Para instalar, basta abrir uma janela de terminal (shell) e executar:

sudo apt-get install chkrootkit

e confirmar a instalação - será necessária a senha de root (administrador do sistema). Para executar, basta digitar

sudo chkrootkit.

Será realizada uma varredura no sistema e apresentado um relatório com os resultados. Fique atento para os avisos.

rkhunter

Outra opção é o rkhunter. O procedimento de instalação é similar:

sudo apt-get install rkhunter

confirmando a instalação - este requer algumas confirmações adicionais. A execução também é a mesma:

sudo rkhunter --check para executar a varredura padrão no sistema ou

sudo rkhunter para obter mais opções.

Ambas as soluções são gratuitas e os procedimentos foram executados sobre o Ubunto 9.10, mas não devem variar muito em outras distribuições. As duas ferramentas apenas identificam a existência dos rootkits, sem removê-los. Isso é tema para outros artigos.

domingo, 5 de julho de 2009

Checklist para Scrum

Uma das reuniões previstas no Scrum é a Sprint Retrospective. Nesse encontro, a equipe discute o sprint anterior, o que foi bom (e deve ser mantido), o que não foi bom (e precisa ser melhorado ou não repetido) e o que poderia ser feito de novo para melhorar ainda mais os próximos sprints. É um momento excelente para captar opções de melhorias vindas do próprio time, com base em fatos concretos e experiências reais.
Contudo, fica uma questão: como manter esse conhecimento ao longo do tempo e transformá-lo em um 'asset' da empresa, aplicavel não apenas para o time em questão, para todos os times de scrum, replicando as melhores práticas e evitando cometer os mesmos erros?
Uma forma que aplicamos, com relativo sucesso (importando a idéia dos métodos de gerenciamento da rotina) foi a criação de um checklist: Uma lista de perguntas que é aplicada sempre ao final das reuniões de planning, e atualizada ao final de cada reunião de retrospective. Serve como uma verificação de que os pontos principais levantados pela equipe no passado estão sendo considerados no planejamento e não foram esquecidos. Questões como:
  • Reservamos tempo suficiente para testes? E homologação?
  • Existe algum item de backlog que não está claro? Todos sabem o objetivo de cada um?
  • Temos algum evento previsto para ocorrer durante o próximo sprint? Algum membro do time tem algum compromisso marcado, férias, ou precisará se ausentar? Se sim, irá impactar nos prazos?
Essa lista, que pode parecer simples e óbvia para equipes mais experientes, pode auxiliar muito novas equipes, evitando falhas comuns no planejamento e auxiliando a alcançar o objetivo assumido pela equipe.
Importante: No modelo que implementamos, fica a critério dos Scrum Masters (ou do PMO, quando existir um) selecionar os pontos que devem ou não ser incluidos nessa lista comum. É importante separar o que é específico de um projeto, e portanto deve ser incluído apenas naquele contexto, e o que pode beneficiar todos os demais times de Scrum. É uma tarefa importante, que irá transformar o conhecimento adquirido pelas equipes em conhecimento corporativo, fazendo com que velhos erros não sejam repetidos, mesmo por equipes novas. O checklist pode ficar disponivel on-line , com ferramentas como blogs e wikis corporativos, e ser consultado por todos.

quarta-feira, 1 de julho de 2009

Java 6 no MAC

Nos últimos dias, tive uma surpresa ao tentar compilar um projeto Java 6 usando o maven. Ao que parece, o Java 6 para MAC somente funciona nas versões 64 bits e, ainda assim, não é default. A alteracão usando a interface de preferences também não funciona. Para configura-lo, é preciso alterar as variaveis de ambiente JAVA_HOME e PATH:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
export PATH=$PATH:/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin

Depois disso, a compilação no maven funcionou e consegui adiciona-los no eclipse.

Fica a dica. Referencia da solução:

http://mail-archives.apache.org/mod_mbox/maven-users/200810.mbox/%3CB795E29E-15C4-45F7-A6A6-B6A0ED7AD923@resolvesw.com%3E

domingo, 7 de junho de 2009

Google Wave























Lançado durante o evento para desenvolvedores Google I/O, o Google Wave promete revolucionar a comunicação na internet.
Criado como uma espécie de agregador de diversas ferramentas de comunicação, o Wave é uma mistura de e-mail, blog, wikis, redes sociais, instant messenger, além de permitir compartilhamento de arquivos e fotos. Mais legal ainda: tudo em tempo real.
Um dos recursos mais inovadores do Wave é possibilitar criar conversar dentro de conversas. Um usuário pode, por exemplo, selecionar parte de uma conversar (literalmente) e iniciar uma conversa nova (paralela à principal) a partir daquele trecho. Outro usuário pode comentar o comentário anterior, e assim uma nova linha surge a partir da conversa original.
Outro recurso bacana é a possibilidade de arrastar arquivos e imagens diretamente para a janela do browser. Esse recurso ainda não é suportado pelo HTML atual, sendo previsto para a próxima versão (HTML 5), portanto é necessário instalar um plug-in fornecido pelo Google para suportar a funcionalidade. Mas vale a pena.
A ferramenta está em beta (e qual não está?), sem data prevista de lançamento, mas o Google deve liberar um beta em breve. O vídeo do lançamento é um pouco longo (1:30h) mas vale a pena assistir.

Disponível em:

http://wave.google.com/




sábado, 6 de junho de 2009

Mongrel: Executando sua aplicação Rails

Ao instalar o netbeans, você ganha de presente o webrick, um servidor que atende a maioria das necessidades durante o desenvolvimento. Para producão, todavia, pode ser necessário um servidor mais robusto. Uma opção simples (e popular) é o mongrel, um servidor desenvolvido originalmente por Zed A. Shaw.
Para usuários linux, a instalação é simples:

  • sudo apt-get install mongrel
  • cd [myapp]
  • ./mongrel_rails start -d
Para parar o servidor:

  • ./mongrel_rails stop (no mesmo diretorio da aplicacão)

Mais informações em :

http://mongrel.rubyforge.org/

No link você também encontra documentação e o procedimento para usuários windows.