Curso CSM – Certificação Scrum

Depois de trabalhar alguns anos com Scrum, tive a oportunidade de participar do curso de certificação CSM ministrado por Alexandre Magno da AdaptWorks, que é reconhecido mundialmente pela Scrum Alliance.

O curso tem 16 horas de duração divido em dois dias. A minha turma estava bem heterogênea, composta desde programadores, desenvolvedores, líderes técnicos, arquitetos, gerentes de projetos, gerentes de desenvolvimento… entre outros cargos tendo o software em comum.

Preparei-me para o curso anotando em um rascunho várias dúvidas que acumulei durante o tempo que tive em contato com o framework. Dúvidas que eu não havia encontrado no Scrum Guide, fóruns, listas de discussões, blogs… nem conversando com pessoas que tinham vivência com o Scrum. O engraçado de questionar as pessoas que tem um pouco de experiência em Scrum é que ao receberem alguma pergunta (na maioria das vezes perguntas complexas) sobre o Scrum, a resposta by default era:

“Então… é assim porque o Scrum fala que tem que ser assim!”

Na minha cabeça também vinha uma resposta por padrão:

“Que jóia! Fiquei na mesma!”

E continuava com as dúvidas…

O Scrum em si é bem simples, o framework segue alguns conceitos básicos e regras bem definidas.OK! Mas o quê afinal é o Scrum?

O Scrum é um framework de desenvolvimento iterativo e incremental utilizado para gerenciamento de projetos e desenvolvimento ágil de software.

Leia o resto deste post »


Qualidade com o JSFUnit – Artigo Java Magazine 91

Venho divulgar meu artigo sobre testes unitários em aplicações que utilizam a tecnologia JSF, presente na edição 91 da revista Java Magazine. São apresentadas, de maneira prática, as principais características do framework JSFUnit, e como sua utilização pode auxiliar o desenvolvedor na identificação de erros na aplicação. Além da parte teórica, o artigo apresenta um projeto que pode ser baixado no site da revista.

Artigos desta edição:


Tutorial Maven 2

O Apache Maven é uma poderosa ferramenta utilizada para gerenciar projetos Java. Com Maven temos todo o controle de compilação da aplicação, controle de bibliotecas, deployment e relatórios estatísticos. A configuração do Maven se baseia em um arquivo chamado pom.xml (Project Object Model), onde são declaradas todas as dependências do projeto. Depois de feita a configuração, o Maven se encarrega de analisar as dependências declaradas, fazer o download de todas as elas a partir de um repositório, e utilizá-las para compilar, empacotar e distribuir o artefato que pode ser um JAR, WAR ou EAR.

Download e configuração

1) O download do Maven pode ser feito no site: http://maven.apache.org/download.html

2) Descompacte o arquivo em algum diretório. Eu descompactei no diretório: E:\apache-maven-2.2.1

3) Adicionar as variáveis de ambiente M2_HOME e M2 na parte de Variáveis do sistema:

  • M2_HOME = E:\apache-maven-2.2.1
  • M2 = %M2_HOME%\bin
Leia o resto deste post »

JSF – Combo utilizando t:selectItems

Neste post irei demonstrar a utilização do componente <t:selectItems>, que é componente responsável por popular os dados no componente <h:selectOneMenu>.

Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.

Estrutura do projeto

Versões utilizadas

  • Eclipse 3.5.2
  • JDK 1.6
  • Tomcat 6.0.18
  • MyFaces 1.2.5
  • Tomahawk 1.1.8
  • RichFaces 3.3.1
  • Hibernate Annotations 3.4.0
  • Hibernate 3.3.1
  • MySQL 5
  • MySQL Query Browser 1.2

Leia o resto deste post »


JSF – Aplicação rich:editor + Facelets

Neste post irei demonstrar a utilização do componente rich:editor que faz parte da biblioteca de componentes RichFaces.

O rich:editor é um componente usado para a criação de um editor em páginas. Seu uso é relativamente simples e o resultado é impressionante.

A aplicação consiste num cadastro de Rascunhos onde o usuário poderá cadastrar e remover seus rascunhos de uma forma prática e simples. Para gerenciar as sessões/transações do Hibernate criei um serlvet filter Open Session In View fazendo papel de um interceptador, que será executado a cada request e response.

Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.

Estrutura do projeto

rich_editor

Versões utilizadas

  • Eclipse 3.4.1
  • JDK 1.6
  • Tomcat 6.0.18
  • MyFaces 1.2.5
  • RichFaces 3.3.1
  • Hibernate Annotations 3.4.0
  • Hibernate 3.3.1
  • MySQL 5
  • MySQL Query Browser 1.2

Códigos

Rascunho.java:

package br.com.serjaum.modelo;

@Entity
@Table(name="rascunho")
public class Rascunho implements Serializable{

 private static final long serialVersionUID = -6142163109498247473L;

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 @Column(name="RASCUNHO_ID")
 private Long id;

 @Column(name="titulo")
 private String titulo;

 @Temporal(TemporalType.DATE)
 @Column(name="data")
 private Date data = new Date();    

 @Lob
 @Column(name="conteudo")
 private String conteudo;

...
}

Leia o resto deste post »


JSF – Migrando CRUD para Facelets

Neste post irei fazer a migração da nossa aplicação JSF completa utilizando RichFaces + Hibernate + MySQL na prática para Facelets.

Algumas das características do Facelets:

  • Utilização do XHTML como camada de visão da aplicação;

  • Permite a criação de componentes reutilizáveis;

  • Aumenta a performance da aplicação de 30% até 50% comparado com JSP, pois não usa a compilação para servlet;
  • Criação simplificada de templates;

  • Uso de código JSF em tags HTML com o atributo jsfc (não é muito recomendado);
  • Camada de visão padrão para o JSF 2.0;

Mais informações >>aqui<<.

Versões utilizadas

  • Eclipse 3.4.1
  • JDK 1.6
  • Tomcat 6.0.18
  • MyFaces 1.2.5
  • RichFaces 3.3.1
  • Hibernate Annotations 3.4.0
  • Hibernate 3.3.1
  • MySQL 5
  • JUnit 4.5
  • Caelum Stella 1.2

Estrutura do projeto

crud_facelets

Leia o resto deste post »


JSF – Criptografia de senhas com MD5

Neste post irei mostrar um exemplo prático de criptografia MD5 para aplicações JSF.

A API Java implementa dois algoritmos de Message Digest: o MD5 e o SHA-1. O algoritmo MD5 é um algoritmo de hash de 128 bits unidirecional, por isso ele não pode ser transformado na mesma string que foi usada para gerar o código criptografado. Utilizarei a classe java.security.MessageDigest para implementar a aplicação proposta.

Estrutura do projeto

md5_estrutura

Versões utilizadas

  • Eclipse 3.5.0
  • JDK 1.6
  • MyFaces 1.2.5
  • RichFaces 3.3.1

Códigos

TransformaStringMD5.java:

package br.com.serjaum.util;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class TransformaStringMD5 {

 public static String md5(String senha) {
 String sen = "";
 MessageDigest md = null;
 try {
 md = MessageDigest.getInstance("MD5");
 } catch (NoSuchAlgorithmException e) {
 e.printStackTrace();
 }
 BigInteger hash = new BigInteger(1, md.digest(senha.getBytes()));
 sen = hash.toString(16);
 return sen;
 }
}

Leia o resto deste post »