29 de set. de 2009

Scrum e ferramentas gratuitas - Pronto Agile

Em um projeto em que estou trabalhando foi definido que iríamos utilizar o modelo do scrum para realizar acompanhamento de projetos da equipe.
A equipe em questão não é uma equipe de desenvolvimento de software e portanto precisamos encontrar uma ferramenta que possa ser adaptada para a nossa realidade que é mais relacionadas a planejamento de ambiente e suporte a ambiente de produção. Com isso em mente comecei uma avaliação de várias ferramentas que dão suporte ao processo de desenvolvimento de software com XP e Scrum para avaliar a que seria a de mais fácil customização para adotarmos no nosso dia a dia. As ferramentas que avaliei foram:
XPlanner, IceScrum, Scarab e o Pronto.

Dentre estas a que mais agradou e que vamos customizar para atender à nossa demanda foi o Pronto. Os principais pontos que fizeram com que utilizássemos o Pronto é sua facilidade de configuração, open source, simples e também por ser um projeto de Brasileiros.

Durante a configuração de nosso ambiente seguimos as instruções de download e instalação no site do Pronto para baixar os fontes e gerar nosso ambiente.

Durante o processo de configuração do ambiente conforme descrito na documentação do pronto, ocorre um erro ao tentar executar um comando do maven como por exemplo: mvn eclipse:eclipse ou mvn package O erro é causado pois existe uma dependência documentada no pom.xml do projeto e que não é encontrada que é a do bliki.wiki . Este pacote vem junto com a distribuição de códigos-fonte do pronto e encontra-se sob o diretório WEB-INF/lib . A versão que vem distribuída é a 3.0.11 e a referência no pom.xml é para a 3.0.13. Para corrigir o problema temos 2 opções. O primeiro passo para ambas as situações é corrigir a referência do pom para a versão 3.0.11 então onde está no pom.xml a entrada:

       info.bliki.wiki
       bliki-core
       3.0.13
  


Deve ser corrigido para referenciar a versão 3.0.11 que vem com os fontes do pronto. Com isso a entrada no pom.xml fica assim:

 
       info.bliki.wiki
       bliki-core
       3.0.11
  


Feito isso temos duas opções, a primeira é instalar manualmente o pacote utilizando o comando do maven para tal e a segunda é encontrar um repositório que contenha as bibliotecas e registrá-la no nosso pom.xml. Procurei na web e não encontrei um repositório maven com a biblioteca do bliki.wiki em questão e por isso estou disponibilizando no meu repositório na internet. Para baixar essa lib do repositório basta registrar no pom.xml do projeto(entre as tags build e dependencies) o repositório com a seguinte entrada:


    
         maweb
         http://www.maweb.com.br/mvn_repo
    



Com isso o arquivo pom.xml do pronto completo fica assim:



 4.0.0
 pronto-agile
 pronto-agile
 war
 Pronto!
 1.0.0
 http://www.bluesoft.com.br/pronto

 
  
   
   
    maven-compiler-plugin
    
     1.6
     1.6
     iso-8859-1
     true
    
   
  
 
 
  
   maweb
   http://www.maweb.com.br/mvn_repo
  
 
 
  
   org.hibernate
   hibernate
   ${hibernate.version}
   
    
     ejb
     javax.persistence
    
    
     jta
     javax.transaction
    
   
   provided
  

  
   org.hibernate
   hibernate-commons-annotations
   ${hibernate.commons.annotations.version}
  

  
   dom4j
   dom4j
   1.6.1
   provided
  

  
   org.hibernate
   hibernate-annotations
   ${hibernate.annotations.version}
   
    
     ejb
     javax.persistence
    
   
   provided
  

  
   log4j
   log4j
   ${log4j.version}
   provided
  

  
   cglib
   cglib
   ${cglib.version}
   provided
  

  
   commons-fileupload
   commons-fileupload
   1.2.1
  

  
   commons-codec
   commons-codec
   1.3
  

  
   commons-io
   commons-io
   1.4
  

  

  
   json-lib
   net.sf.json-lib
   0.9
  

  
   org.springframework
   spring-core
   2.5.6
  

  
   org.springframework
   spring-web
   2.5.6
  
  

  
   org.springframework
   spring-aop
   2.5.6
  

  
   org.springframework
   spring-webmvc
   2.5.6
  

  
   org.springframework
   spring-jdbc
   2.5.6
  

  
   hsqldb
   hsqldb
   1.8.0.7
  

  
   org.springframework
   spring-orm
   2.5.6
  

  
   junit
   junit
   4.4
   test
  

  
   javax.servlet
   jstl
   1.1.2
  

  
   taglibs
   standard
   1.1.2
  

  
   opensymphony
   sitemesh
   ${sitemesh.version}
  

  
   javax.mail
   mail
   ${javamail.version}
   provided
  

  
   javax.servlet
   jsp-api
   ${jsp.version}
   provided
  

  
   javax.servlet
   servlet-api
   ${servlet.version}
   provided
  

  
   com.google.collections
   google-collections
   1.0-rc2
  
        
        
            info.bliki.wiki
            bliki-core
            3.0.11
        
        
        
 

 
  3.2.1.ga
  3.0.0.ga
  3.0.0.ga
  3.2.5.ga
  2.2.1
  1.4
  2.4
  2.0
  2.1_3
  1.2.14
 



Após estas alterações os comandos do maven já irão funcionar corretamente como por exemplo:
mvn eclipse:eclipse - irá gerar arquivos de projeto para ser importado pelo eclipse. Se der algum erro tente rodar mvn eclipse:clean e então o mvn eclipse:eclipse
mvn package - gera um .war do projeto no diretório targets.

Pronto!

[]s

15 de set. de 2009

Gzip no Weblogic

Outro dia precisei que as aplicações rodando em weblogic server utilizassem recursos de compactação Gzip para conteúdos de texto, html, css e javascript. O Gzip compacta estes recursos para transimtir pela internet e posteriormente o browser descompacta o que pode aumentar sensivelmente a performance percebida pelo usuário final da aplicação em diversos casos.

No ambiente em questão o weblogic está configurado para servir também o conteúdo estático e neste caso a solução padrão no mundo java é utilizar a configuração por Filtros.

Felizmente já existe um filtro Open Source disponibilizado para o weblogic para este fim e por isso basta configurarmos o pacote para utilizá-lo. Segue um passo-a-passo.

1) Baixar o .jar com as classes do filtro Gzip que vc preferir ou então escrever e gerar seu .jar com o filtro. Se preferir utilizar um filtro já escrito seguem links com posts e código fonte para tal. Links em inglês. blog do Markus Eisele ou blog do Nagesh Susarla. Se você preferir desenvolver o seu filtro de compactação Gzip pode se basear em artigos já escritos a respeito filtros, gzip e performance no On Java, no JavaWorld ou no Java Boutique, dentre outros.

2) O segundo passo é configurar o seu filtro no web.xml da apliação web que irá utilizar o Gzip, essa configuração deve variar um pouco depedendo do filtro que for ser utilizado conforme mencionado no passo 1, portanto segue um exemplo meramente ilustrativo abaixo:


  

    GZIPFilter

    weblogicx.servlet.gzip.filter.GZIPFilter

  



  

  

    GZIPFilter

    /*.html

  



  

    GZIPFilter

    /*.htm

  



  

    GZIPFilter

    /*.log

  

  

  

    GZIPFilter

    /*.txt

  



Finalmente, para checar a compactação utilizo o web developer toolbar do firefox em Information > View Document Size mostra a compactação de cada recurso carregado em uma página. Ver exemplo nas 2 imagens abaixo(ilustrativo).

Outra possibilidade é utilizar o plugin do Apache para Weblogic Server e habilitar a configuração de compactação do Apache para recursos estáticos. []s