Despedida da IBM

Olá Pessoal,

Bem, como alguns já ficaram sabendo nos bastidores, estou deixando a IBM, após quase dois anos de trabalho na companhia, e onde em 2008 escrevi este post. Quem lembra? Hoje, venho postar que não faço mais do time IBMer, os motivos nao posso mencionar aqui, pois envolve desde pessoal,profissional e informacoes confidenciais do projeto que participei.Apesar de ter  surgido oportunidades para trabalhar em outros projetos na IBM, mas por agora optei em viajar e me desligar da empresa, uma vez que não poderia fazer os dois.

Acredito que em nossa vida, vivemos fases e cada uma tem uma missão para nós. E acredito que tive uma boa fase na empresa. Aprendi muito tanto na parte técnica, mas desenvolvi bastante algumas habilidades comportamentais, sendo assim não posso dizer que sou o mesmo profissional que era à 2 anos atras.

Adotei a cultura da empresa,aprimorei meu perfil profissional, aprendi novas regras corporativas. Enfim, foi uma experiência que recomendo à todos que tiverem uma oportunidade de trabalhar nessa empresa. No meu caso que fui para um projeto internacional, meu inglês teve um avanço bem significativo em todos os skills da lingua, comparado com o tempo que venho estudando (jan/2008).Uma vez que o inglês era full time e com os nativos, então o que eu via na escola de idiomas poderia ir colocando em pratica e cada dia descobria um ponto a ser melhorado que as vezes por falta de pratica nao conseguia identificar de imediato. Enfim, Work for IBM, it was very good!!. Mas, cada um tem seu objetivo profissional e temos que ir atras deles e uma coisa que aprendi é que : “podemos mudar o caminho, mas nao desistir dos  objetivos”.

Quem lembra na época que entrei na companhia estava no finalzinho da minha graduação(bacharelado) e foi um presente que acabei ganhando foi ir para uma empresa como a IBM. Fiz amigos tanto dentro da empresa, quanto fora através dos programas que participei como Embaixador do AI/Mentorização. E acredito que esse relacionamento vai se manter, mesmo não fazendo da equipe.

Sentirei falta e saudades dos momentos stressante do trabalho, já que trabalhava em um projeto internacional com pessoas de culturas diferentes e fisicamente longe(Canada, New York, India etc), as discussões, o controle da situação era tudo diferente de quando estamos com a equipe fisicamente perto.E saber lidar com essa situação nem sempre é uma tarefa fácil.

E as palestras pelo AI? E os mini-cursos? Pow, esses farão falta tb, abaixo limpando o note aqui, achei uns momentos legais. Hehe. Acho que foi um dos momentos mais legais que experimentei na minha vida profissional até hoje. Claro que não vou parar de palestrar, é so mandar o convite que estarei presente :).

Não posso deixar de agradecer aos amigos IBMer que sempre deram aquele apoio em vários momentos aonde a experiência deles que faziam toda diferença, que são eles: Juliano Martins(eng. De Soft), Josy Santos, José Damico, Miro(developer), Katia Pessanha (ex-gerente do AI), Cezar Taurion (Executivo), Ana Carolina (AI). Pessoal obrigado! Foi realmente um prazer ter trabalhado com vocês. Tem um amigo que entrou praticamente junto comigo e que sempre dar uma força de amigo, o Alberto Leal.

Sei que muitos vão perguntar para onde estou indo ne? Bem, o meu destino agora é esse. Ficarei algumas semanas, aprimorando meu inglês em um curso intensivo e tb as minhas queridas férias que venho tentando tirar desde 2005. Quando voltar eu conto pra vcs como foi o intercambio, acredito que quando estiver la, meu acesso à internet será quase zero. Primeiro que estarei bastante ocupado na escola com aula de manha/tarde e outras atividades.

Abracos!! see you next post.

P.S: Eu viajo nesta sexta-feira 20/08 (e so chego em NZ no domingo 22/08 pela manha) e a partir daí já deixei alguns posts programados aqui no blog, possivelmente não poderei responder os comentários, após esta data. Mas, podem enviar que assim que ficar ON, eu já respondo. Dia 21-22/09 estou chegando no Brasil.Mas, tentarei responder antes.

Palestras & Eventos AI IBM

ibmairh

ibmrhai2


simform

Sinform 001

Sinform 012

uesbai2

uesbai

uesbai3


Praticando JSF Facelets no Eclipse

olá Pessoal,

Nesse post vou mostrar como brincar com JSF no Eclipse criando uma simples aplicação usando JSF + facelets e armazenar os dados em um ArrayList. A ideia é mostrar o desenvolvimento simples e ágil com o framework sem Banco de Dados (já mostramos em outros posts como usar JSF + DB veja na categoria JSF).

Lets go…

Note: A versão do JSF que vamos usar aqui é a 1.2. Na versão 2.0 o uso de facelets é padrão. Mas, ainda não “instalei” a nova versão aqui.

Oportunidade Java

profissional desenvolvedor em Java, para um projeto do Banco Votorantim.
> Para adiantar, utilizamos:
> · Hibernate 3.2
> · jfreechart 1.0.12
> · spring 2.5
> · struts 1.3.9
> · quartz 1.6
> · dwr 1.59
> · displaytag 1.1.1
> · jasperreports 3.5.0..
> · Tomcat 6.0
> · Alguns relatórios estão desenvolvidos em iReports

enviar cv para:helio@wbctech.com.br

Requisitos:

  1. JSF + BD

  2. Configurando JSF no eclipse galileo

  3. Instalação TomCat 6.0

Passo 1

Crie um JSF Project.

Vamos criar o JavaBeans para essa aplicação. Que será chamada de Usuário. Portanto crie uma classe Java chamada Usuario dentro do package br.com.camilo. Veja:

package br.com.camilo;
public class Usuario {
	private String nome;
	private String email;
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

Passo 2

Agora precisamos criar um controlador que vai ter como objetivo salvar e exibir os dados.

 package br.com.camilo.controller;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import br.com.camilo.Usuario;
public class Controler {
	private Usuario user;
	/*lista de objetos do tipo Usuario, assim podemos acessar os atributos javabean   */
	private ArrayList lista = new ArrayList();
	public ArrayList getLista() {
		return lista;	}

	public void setLista(ArrayList lista) {
		this.lista = lista;
	}
	public Usuario getUser() {
		return user;
	}
	public void setUser(Usuario user) {
		this.user = user;
	}
public Controler(){
	user = new Usuario(); //cria um novo objeto
}

public void adicionar(Usuario us){
	lista.add(us);
}
public void remover(Usuario us){
	lista.remove(us);
}
public String salvar(){
		this.adicionar(user);
		FacesContext context = FacesContext.getCurrentInstance(); //criando uma instancia FacesContext
		FacesMessage message = new FacesMessage("Salvo com sucesso");
		context.addMessage(null, message);
		return "salvar";
	}
	public DataModel getExibir(){//retorna os elementos na lista
		return  new ListDataModel(lista);
	}
	//cria um novo objeto, quando o botao novo for chamado
	public String novo(){
		user = new Usuario();
		return "novo";
	}
	public String remover(){
		this.remover(user);
		FacesContext context = FacesContext.getCurrentInstance();
		FacesMessage message = new FacesMessage("Removido com sucesso");
		context.addMessage(null, message);
		return "remover";
	}
}

Passo 3

Criar o formulario e a pagina de resultado. Para isso crie uma arquivo chamado formemail.xhtml e outro no chamado de resultado.xhtml.

Deixe seu arquivo conforme o code abaixo:

Cadastro

Altere o arquivo resultado.xhtml:

Novo Cadastro Remover

Passo 5

Agora precisamos configurar o arquivo faces-web.xml. Abra o faces-web.xml no modo source e adicione o code abaixo:

passo 6

Agora vamos testar aplicação clique com o botao direito sobre o arquivo formemail.xhtml e escolha a opcao abaixo:

Na próxima tela vá no diretorio apache = => e escolha TomCat 6.0 e clique em finish. Aguarde o web browser dentro do eclipse abrir e teste aplicação. Veja alguns prints.

note: Esses plugins para wordpress tem hora que stressa e bagunça todo o code. Mas, estou deixando o projeto para download, aqui.

Valeu!Pessoal, Espero que tenham gostado. Até o próximo post.

Hibernate com Pool de Conexão

Olá Pessoal,

Hoje o post é bem simples, na verdade considero este como uma continuação do post sobre pool de conexão. Vou mostrar aqui como fazer hibernate usar o pool de conexão através de uma JNDI. Então será um post bem pequeno, já que vou adicionar apenas as informações referente ao arquivo hibernate.cfg.xml. Se quer comecar do zero, veja o post anterior.

Lets go…

Configurando

  1. Certifique-se que você tem no seu projeto o arquivo context.xml e web.xml configurado corretamente.

  2. Tanto faz se seu projeto é JSF Project ou Dynamic Web Project desde que seja para plataforma JEE.

  3. Não esqueça de adicionar os .jars do hibernate ao seu projeto, se tem dúvida veja neste post.

  4. Agora vamos para a parte mais simples, configurar o arquivo hibernate.cfg.xml. Então deixe seu arquivo conforme abaixo:




java:/comp/env/jdbc/blog
thread
org.hibernate.transaction.JDBCTransactionFactory
org.hibernate.dialect.MySQL5InnoDBDialect
0



 

Pronto observe que agora seu arquivo de configuração do hibernate ele “aponta” para o JNDI que criamos, e quando o schema ou caminho do BD mudar, vamos apenas alterar lá no JNDI e o hibernate já pega a nova informação. Simples não?

Abracos, espero que tenham gostado do post.

Gerando arquivos txt, html, pdf, xls, rtf, doc, xml, xls e ppt com Java

olá Pessoal,
Meu amigo Juliano Martins tem um projeto legal e simples para gerar txt, pdf, xls etc.  usando o velho e querido Java. Para nao perder a graça Configra o post dele abaixo:

Executáveis e código fonte podem ser baixados daqui: http://code.google.com/p/jfilecreator/
Blog do autor aqui: http://jmmwrite.wordpress.com
Aproveitem e divulguem, pode ser útil aos “javeiros

É comum em nossos projetos precisarmos de uma massa de arquivos para testar algo. Porém, eventualmente precisamos de vários arquivos com conteúdo real, ou seja, com texto verdadeiro, e não simplesmente arquivos gerados baseados em palavras randômicas. Além disso, tambem surge a necessidade de exportarmos conteúdo para um tipo de arquivo.

Para resolver um problema pontual em meu atual projeto, mas já contribuindo com a comunidade, lancei o jFileCreator (aka: Acarajé… coisas do projeto), que é um programa open source, com código fonte bem didático e de fácil reaproveitamento.

O mesmo gera: txt, html, pdf, xls, rtf, doc, xml, xls e ppt.

Executáveis e código fonte podem ser baixados daqui: http://code.google.com/p/jfilecreator/

Blog do autor aqui: http://jmmwrite.wordpress.com

Aproveitem e divulguem, pode ser útil aos “javeiros”.

Criando um pool de conexão JEE/TomCat

olá Pessoal,

O post desta semana é sobre pool de conexão, veremos como usar em uma aplicação JEE. Apesar de ter o mesmo efeito de fecharmos de forma programatica uma conexão, mas nem sempre esta ultima é melhor, principalmente em produção uma conexão pode ficar aberta, outra vem a ser aberta e por ai vai até estourar o nosso BD. E para retornar o normal tem que ter dar um restart no tomcat. Imagine em dar um restart no servidor em produção por causa disso?

Até a implementação do pool de conexão é bem lógico e bem refatorado, basta ter o JNDI e pronto. Quando precisar alterar vamos em um local e aonde o JNDI é referenciado já está atualizado (obvio).

Lets go…

Posts recomendados:

MySql + Java

Criando dynamic web project

Pool de Conexão

O pool de conexão é usado do lado do servidor independente da IDE que você está usando, porém cada servidor e IDE tem suas config especiais para o uso do Pool, ou seja, no tomcat é de uma forma, no Jboss eh outra, no glassfish também. E na IDE Netbeans pode mudar, que ele organiza um projeto JEE levemente diferente da IDE eclipse. Mas, nada que o programador precise “comprar um livro” para esse fim.

Requisitos:

Tomcat 5.5/superior – Instalação

Eclipse
MySql – 5.x

Antes de colocar mão na massa certifique-se que você tem o conectar 5.x.jar MySql . Pois, vamos precisar dele em nosso projeto JEE.

  1. crie um novo dynamic web project
  2. Abra o arquivo web.xml e na aba Tree clique em Resources.
  3. Precisamos adicionar uma referência para isso clique em add e deixe conforme abaixo:

< resource-ref>
    < res-ref-name>jdbc/blog
    < res-type>javax.sql.DataSource
    < res-auth>Container
  < /resource-ref>
  1. O name pode ser qualquer um, como jdbc/nomequevcquer
  2. crie um package para conexão br.com.conexao

  3. Agora crie uma classe chamada Conexao com o método a seguir:

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class Conexao {

	public static Connection getConnection() throws Exception{

		InitialContext context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/blog");

		try {

			return ds.getConnection();
		} catch (SQLException e) {

			throw new Exception(e.getMessage());
		}}}
  1. o método lookup tem como objetivo buscar o jdni que criamos no web.xml

Configurando o config BD no TomCat

  1. crie um arquivo em META-INF chamado context.xml
  2. Aqui vamos passar as configurações do BD para o JNDI que criamos, ou seja, jdbc/blog. Vamos informar qual usuário/senha e schema do BD aquele JNDI deve conectar.

	
	

Então podemos ter vários JNDI em um mesmo context.xml com usuários/senha + schema diferentes. Isso ajuda quando precisar fazer alterações de teste para produção, basta mudar em um lugar. E pronto.

A JNDI é uma API para acesso a serviços de diretórios que permite aplicações cliente descobrir e obter dados ou objetos através de um nome. A API JNDI é utilizada em aplicações Java para acessar recursos externos, como banco de dados, filas ou tópicos JMS e componentes da plataforma Java EE. (Edson Gonçalves).”

Adicione ao projeto o driver do BD na pasta lib. Lembre-se de copia-lo fisicamente para o eclipse, ou seja, saia do eclipse e copie o .jar, pois o eclipse não faz isso automaticamente quando add via library da própria IDE.

Testando

Para testar vamos criar um simples servlet que vai estabelecer a conexão e se der tudo tudo certo, não veremos nenhuma exceção e será impresso uma mensagem.

Mas, antes disso criamos uma pagina .jsp que chama o servlet. Fizemos isso para ser mais rápido e e simples. Já que precisamos apenas saber se o nosso pool está funcionando corretamente.

Servlet.java

  1. crie um package br.com.servlet

  2. Crie um servlet TesteAPP conforme abaixo:

public class TesteAPP extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public TesteAPP() {
        super();
        // TODO Auto-generated constructor stub
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
		try {
			Conexao.getConnection();
			System.out.println("conexão estabelecida com sucesso");

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();}}

note: Se usou o assistente do eclipse para criar um servlet, fique atento se não mudou o <url-pattern> . Caso não tenha feito este leva o mesmo nome da class Servlet.

Index.jsp

Apenas encaminha a solicitação para o servlet TesteAPP

Execute o projeto, e veja o resultado esperado.



Note: Não esqueça de verificar se o Banco de dados foi iniciado. Ou seja, deu start no BD? Senão vai receber uma exceção: Communication failure link

Simples não? Vou ficando por aqui e espero que tenham gostado do post.

Abraços, see you next post. :).