sábado, agosto 16, 2008

Sprint Review Meeting

  • No Sprint Review Meeting, participam todos os envolvidos no projeto;
  • É avaliado principalmente se aequipe atingiu o objetivo do sprint;
  • Além disso, é avaliado se as funcionalidades do Product Backlog para aquele Sprint foram implementadas.

Daily Scrum

  • O Daily Scrum é uma rápida reunião diária, onde participam o Scrum Máster e o Scrum Team;
  • Sugere-se que seja feita pela manhã, para priorizar as tarefas diárias.
  • No Daily Scrum, a equipe é responsável por responder a estas questões:
- O que você fez ontem?
- O que você fará hoje:
- Há algum impedimento no seu caminho?
  • Os impedimentos devem ser tratados depois do Daily Scrum, somente com as pessoas envolvidas no problema e/ou podem auxiliar.

Sprint Backlog

  • Lista de tarefas que o Scrum Team se compromete a entregar em um Sprint.
  • São extraídos do Product Backlog, conforme a priorização do Product Owner e a percepção da equipe sobre o tempo necessário para fazer as implementações;
  • Cabe à equipe a quantidade de itens que serão levados para o Sprint Backlog;
  • Durante o Sprint, o Scrum Master atualiza o Sprint Backlog, refletindo as tarefas completadas e quanto tempo será necessário para completar aquelas que ainda não estão prontas. A estimativa das tarefas que ainda não estão prontas são calculadas e plotadas em um gráfico, chamdo Sprint Burndown Chart.
  • Durante um Sprint, novos requisitos não são incluídos. Mudanças são aceitas, porém, ficarão para um outro Sprint.

Sprint Planning Meeting

  • Reunião que estão presentes o Scrum Master, o Product Owner e o Scrum Team;
  • O Scrum team e o Product Owner definem um objetivo para o Sprint, que será uma breve descrição daquilo que se pretende no Sprint.
  • O Product Owner descreve as funcionalidades de maior prioridade;
  • A equipe de desenvolvimento as perguntas necessárias para quebrar estas funcionalidades em tarefas técnicas; estas tarefas formarão o Sprint Backlog;
  • As funcionalidades implementadas no Sprint serão apresentadas e discutidas no Sprint Review Meeting, onde será avaliado o sucesso do Sprint em questão.
  • Após o Sprint Planning Meeting, a equipe se reúne e define o que ela é capaz de desenvolver dentro do Sprint que será iniciado. Isso pode incluir negociação com o Product Owner, mas sempre respeitando a capacidade de produção da equipe.

Product Backlog

  • Conjunto de funcionalidades desejadas;
  • O product backlog, no início do projeto, não precisa estar completo; pode ser iniciado com as funcionalidades mais óbvias.
  • Durante o Sprint Planning Meeting, o product owner prioriza as funcionalidades; a equipe então divide estas funcionalidades em tarefas. As funcionalidades definidas pelo Project Owner são transferidas para o Sprint backlog.

Papéis no Scrum

Product Owner:

  • Pode ser o cliente ou alguém que represente o cliente;
  • Define as funcionalidades no Product Backlog e define as prioridades nas Sprint Planning Meetings;

Scrum Team:

  • É a equipe de desenvolvimento;
  • Não existe papel funcional, como analista, programador, designer, etc.: todos trabalham juntos para atingir o objetivo final.
  • Geralmente, são times com até 10 pessoas;
  • Pode-se utilizar Scrum com times maiores, mas neste caso, utiliza-se o termo Scrum of Scrums: várias equipes Scrum menores.

Scrum Master:

  • É uma pessoa que tem experiência na metodologia Scrum, e vai assegurar que toda a equipe esteja utilizando o método corretamente;
  • Ele também protege a equipe, de forma que a equipe não se comprometa com mais tarefas do que pode realizar;
  • Atua como facilitador no Daily Scrum, e tem a responsabilidade de encontrar soluções para os problemas apontados nestas reuniões.

Definição de Scrum

  • Metodologia de gerenciamento de projetos;
  • Projetos são divididos em ciclos ( sprints ), geralmente de um mês;
  • As funcionalidades são mantidas em uma lista chamada Product Backlog;
  • No início de cada sprint, a equipe se reúne , em uma reunião chamada Sprint Planning Meeting. Nesta reunião, o Product Owner prioriza os itens do Product Backlog e a equipe seleciona as atividades que será capaz de implementar.
  • Estas tarefas depois são transferidas do Product Backlog para o Sprint Backlog.
  • A cada dia do sprint, a equipe se reúne, para identificar o que foi feito no dia anterior, resolver problemas e priorizar o trabalho do dia.que se inicia.
  • Ao final do sprint, a equipe se reúne e apresenta as funcionalidades implementadas em um Sprint Review Meeting.
  • É feita uma retrospectiva e o trabalho passa para o sprint seguinte.

sexta-feira, abril 18, 2008

Configurando Postgresql em rede

Por padrão, o servidor de banco de dados Postgresql desabilita o acesso remoto, isto é, só é possível manipular seus dados do servidor onde ele está instalado. Questões de segurança.

Para alterar e definir quais são os computadores e redes que podem acessar o banco de dados, é necessário alerar dois arquivos: o pgba_conf e e o postgresql.conf

No meu caso, minha rede doméstica, não tenho preocupações quanto à segurança, então, se você também não tem, você pode deixar qualquer um acessar o banco de dados fazendo assim:

  • No pgba_conf, localize o trecho abaixo:
# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access. Records take one of these forms:
#
# local DATABASE USER METHOD [OPTION]
# host DATABASE USER CIDR-ADDRESS METHOD [OPTION]
# hostssl DATABASE USER CIDR-ADDRESS METHOD [OPTION]
# hostnossl DATABASE USER CIDR-ADDRESS METHOD [OPTION]

e insira mais uma linha assim:

host all all 0.0.0.0 0.0.0.0 trust

No arquivo postgresql.conf:

  • Localize a linha abaixo:
#listen_addresses = 'localhost'

  • e substitua-a por

listen_addresses = '*'

reinicie o servidor, e agora ele está apto a receber conexões.

sábado, março 08, 2008

DBExpress não sabe contar

No Delphi, eu estava tentando executar uma query, e logo abaixo, eu testava quantos registros a query retornou. A Query simples, uma join de duas tabelas pequenas. Meu sistema é desenvolvido utilizando banco de dados SQL Server, acessado através de componentes DBExpress. Pra qualquer porcaria ( BDE, ADO, Zeos, etc.. ) o recordcount funciona. Menos para DBExpress. Quando eu tento chamar o método Recordcount do TSQLQuery, ele berra, avisando que a operação não é suportada.

Segundo esta explicação da Borland, o recordcount não pode ser obtido se:
- você está executando uma stored procedure;
- você está executando uma view;
- você está executando um script que contém joins entre tabelas;

Resumindo: recordcount never more. Qual sistema que não tem stored procedure, view ou joins ?

Boa sorte desenvolvedor Delphi. Você vai precisar.

quinta-feira, março 06, 2008

Fluent Interfaces, by Guilherme Chapiewski

Não domino o assunto, nem tampouco me atrevo a escrever muito sobre isso aqui, mas Fluent Interfaces é uma forma de escrever código.

É um esforço para criar interfaces mais intuitivas, onde outros analistas que vão utilizar o seu método possam facilmente entender a regra de negócio a qual o seu método está inserido e/ou pretende resolver.

A abordagem é interessantíssima, embora não aplicável a todos os casos de software.


Guilherme Chapiewski escreveu artigos interessantes sobre este assunto no blog dele, inclusive, implementou uma classe de exemplo, uma API para envio de e-mails, utilizando Fluent Interfaces.

Link para os artigos:


Refatorando para Fluent Interface
Um exemplo prático de Fluent Interface

Delphi: showmodal em aplicação MDI

O padrão MDI é um tipo de interface onde múltiplos documentos podem ser abertos dentro de uma única janela. Cada um desses documentos, por sua vez, abrem-se cada qual em uma
janela, dentro da janela "pai". Um exemplo de aplicação que usa um padrão
desse tipo é o Adobe Photoshop.

A vantagem do padrão MDI é que ele dá a possibilidade do usuário utilizar duas ou mais janelas, comparando dados entre elas. Uma desvantagem é que a proliferação de muitas janelas abertas pode deixar o sistmea lento e o usuário perdido.

Uma dúvida muito comum em aplicações Delphi que utilizam MDI é quando o analista tem que recorrer ao recurso de janelas modais, aquelas que bloqueiam o usuário enquanto a janela está ativa. No delphi, o formstyle da janela que vai ser modal tem que ser fsNormal, uma janela comum, e a janela não pode estar visível, portanto, a propriedade visible tem que estar configurada para False.

A dica de ouro é que estas propriedades setadas em design time não funcionam; quando você for executar o showmodal, ocorrerá um erro de excessão dizendo que a janela não pode ser modal. A solução é fazer tudo em runtime:


application.createform(TfrmLocalizarPessoa,frmLocalizarPessoa);
frmLocalizarPessoa.Visible:=false;
frmLocalizarPessoa.FormStyle:= fsNormal;
frmLocalizarPessoa.ShowModal;



Bons códigos.

terça-feira, março 04, 2008

Alterar senha do Postgresql no Ubuntu

Quando instalamos o server Postgresql no Ubuntu, onde a forma mais fácil é via synaptic, ele não pede a senha inicial do usuário postgres.

Para acessar o banco, primeiro, você tem que configurar esta senha. Os códigos abaixo vão auxiliar você nesta tarefa:


Entre no diretório /etc/init.d

cd /etc/init.d/

Logue no postgresql usando a conta root:

sudo -u postgres psql template1

Depois quando estiver no psql digite o seguinte comando SQL:

ALTER USER postgres WITH PASSWORD ‘***password***’;

onde ***password*** é a sua nova senha.

Saia do console do postgresql digitando \q

Pronto. Senha alterada, logue no Postgresql via PgAdmin
ou o Aqua Data Studio e boa diversão.

terça-feira, fevereiro 19, 2008

OpenID: enfim, uma solução para autenticação

Orkut, Msn, GMail, Yahoo, Provedor de Internet.. enfim, são tantos que você tem que usar um "Gerenciador de Senhas" para lembrá-los de tudo.

Há 10 anos atrás tinhamos no máximo uma ou duas senhas. Hoje, podemos ter dezenas delas. A típica janela solicitando login e senha já faz parte da nossa vida, e não vai nos deixar tão cedo.

A biometria surgiu para substituir as senhas em ambientes críticos, e foi uma ótima solução para isso. Mas é uma solução cara e só é possível utilizá-la onde a presença física é necessária para a autenticação.

Um outro esforço para eliminar o número de logins e senhas é uma iniciativa conjunta de diversas emprsesas denominado OpenID. Com o OpenID, você tem um login único, onde pode autenticar-se em diversos sites. Ambos vão compartilhar da mesma OpenID. Uma solução prática, que está ganhando força e deve se tornar o padrão de autenticação na web, graças a Deus.

O funcionamento é simples: você escolhe um provedor de OpenID (existem vários, todos free ) , cadastra-se e ele vai te fornecer um endereço OpenID.

Mais detalhes no site http://openid.net/

sexta-feira, fevereiro 08, 2008

Java, Ubuntu e Compiz/Beryl

Instalei o Ubuntu no meu desktop, configurei o Compiz/Beryl para dar uma animada nas telas, tudo muito lindo, tudo muito legal, com direito a telas pegando fogo e tudo.

Instalei o Java 6.0, e em seguida, instalei o Mercury Messenger, um client de MSN para linux com direito a webcam, winks e emoticons.

Abri o Mercury, e nada além de uma tela vazia, somente as bordas da tela estavam visíveis.

Achei que fosse bug do aplicativo, então deixei pra lá,de uma tela vazia, somente as bord e continuei a configurar e instalar meu Ubuntu. Baixei o Oracle XE, instalei, baixei o Oracle SQL Developer, instalei, e quando fui rodar o SQL Developer, novamente, a tela não apareceu, somente as bordas com uma janela em branco.

Logo, só podia ser pau na JVM.

Pesquisando um pouco na net, encontrei a solução, simples, graças a Deus: atualizar para a JVM 6.1, que já contém um fix para este problema.

O bug é relatado no Bug ID 6429775, no sistema de bugs da Sun. O problema é relacionado ao Compiz.