O Knowledge BlackBelt é um site para aprender, ensinar e comprovar seu conhecimento, principalmente na linguagem Java.

Qualquer pessoa pode participar, ajudando de diferentes formas possíveis. Todos participam estudando, passando nos exames, contribuindo com nova perguntas, novos tutorias, traduções, etc…

A medida que for estudando e passando nos exames, você acaba trocando de faixa (assim como nas artes marciais), comprovando seu conhecimento de acordo com a cor da faixa.

Para quem ainda tem problema com o inglês, não se preocupe, alguns tutoriais já foram traduzidos. O site não é apenas para o Java, outros assuntos como Bando de Dados, .Net e Mobile estão surgindo aos poucos!

Deve ficar claro que, o site não tem ligação alguma com as certificações oficiais da Oracle, mas as provas não deixam a desejar.

Para quem está iniciando ou já tem um bom conhecimento em Java (mesmo com certificação oficial) vale a pena conferir e ajudar como coach.

Meu usuário no KBB é “luizfeltes”.  Vejo vocês por lá!

Recentemente estive em um workshop na TECNOPUC em Porto Alegre, realizado pela DBServer, sobre automação de testes utilizando o framework FEST. O evento demonstrou como é simples aplicar a automação de testes em janelas gráficas SWING, juntamente com o FEST.

Em poucas palavras, o framework utiliza as informações sobre os componentes (nome, visibilidade, etc) e não por suas coordenadas. A abordagem utilizando coordenadas (x,y) é ruim, pois se você trocar de máquina, resolução, sistema operacional, ou qualquer outra coisa que possa interferir nas coordenadas, o teste vai falhar. Desta forma, o FEST acaba com esse problema, pois ele encontra a posição desses componentes utilizando suas propriedades.

Vou demonstrar uma aplicação simples, com dois JLabel, dois JTextField e dois JButton. A interface tem duas funcionalidades: Botão “Salvar”, que persiste a informação e o botão “Limpar”, que remove as informações contidas nos campos. Abaixo uma imagem da janela SWING criada.

Para demonstrar o FEST, vou aplicar dois testes:

  1. Inserir conteúdo nos campos e simular o clique no botão “Salvar”;
  2. Simular o botão “Limpar” e verificar se informações foram limpas.
O código abaixo demonstra a simplicidade para aplicar os testes, utilizando o framework:
public class CadastroTest {

    private static FrameFixture window;

    @BeforeClass
    public static void setUp() {
        Cadastro frame = new Cadastro();
        frame.setVisible(true);
        window = new FrameFixture(frame);
    }

    @Test
    public void salvarEmpresa() {
        window.textBox("txtCodigo").setText("1");
        window.textBox("txtEmpresa").setText("Empresa AAA");
        window.button("btnSalvar").click();
    }

    @Test
    public void limparCampos() {
        window.textBox("txtCodigo").setText("1");
        window.textBox("txtEmpresa").setText("Empresa AAA");
        window.button("btnLimpar").click();
        window.textBox("txtCodigo").requireEmpty();
        window.textBox("txtEmpresa").requireEmpty();
    }
}

O primeiro método de teste “salvarEmpresa”, insere as informações nos campos de código da empresa e nome da empresa e após simula o clique no botão “Salvar”. Nesse ponto, podem ser criados testes para verificar se a informação foi salva no banco de dados.

No segundo método de teste “limparCampos”, é simulado uma inserção de conteúdo nos campos e acionado o botão para limpar. Propositalmente, não foi implementado o botão “Limpar” na janela Swing, para simular uma falha no teste, pois obrigatoriamente eu indico para o framework que os campos “txtCodigo” e “txtEmpresa” não contenham nenhuma informação. A imagem abaixo demonstra a saída do framework, com erro.

Após aplicar a funcionalidade de limpar os dados e rodar novamente o teste, o framework fez seu trabalho.

Bom, o post é bem básico mesmo, apenas para dar uma noção de como o framework funciona. Para quem interessar, estou deixando alguns links com mais informações sobre ele!

Links:

Neste post vou abordar um pouco sobre a API JMS (Java Message Service) para comunicação entre duas ou mais aplicações utilizando o conceito de MOM (Message Oriented Middleware) para troca de mensagens. A API está disponível junto com a versão J2EE.

A apresentação aborda uma introdução ao conceito de troca de mensagens entre aplicações, trata um pouco sobre a arquitetura, vantagens e desvantagens da sua utilização, os componentes que integram a API, a comparação com outras tecnologias como RMI/RPC e algumas considerações finais.

Segue o link da apresentação para Java Message Service – JMS.

Este trabalho foi apresentado para a disciplina de Sistemas Distribuídos do Mestrado em Computação Aplicada na Unisinos.

Depois de alguns meses sem postar, em função das aulas do Mestrado, optei por postar partes dos trabalhos produzidos nas disciplinas durante o semestre.

Alguns vão ser mais simples, em função do tempo que foi dado para apresentação e outros maiores.

No primeiro post vou deixar disponível a apresentação no formato PDF, onde trato de forma geral e introdutória a API do Google Maps para Javascript com exemplo de código.

Google Maps API Javascript V3

Os padrões de projetos, também conhecidos pelo termo em inglês Design Patterns, descrevem uma metodologia para solucionar problemas ou situações no desenvolvimento de aplicações OO (Orientada a Objeto). Utilizar padrões de projeto durante o desenvolvimento de uma aplicação reduz muito a complexidade e permite a reutilização em outras aplicações. Os padrões de projeto podem ser utilizados independente da linguagem de programação OO, como Java, C++, PHP, etc. Nos próximos posts sobre DP (Desing Patterns), irei utilizar a linguagem de programação Java para exemplificar situações de cada DP.

Podemos classificar os DP em três grandes grupos: Padrões de Criação, Padrões Estruturais e Padrões Comportamentais.

Leia o resto deste post »

Suas origens remotam ao Paleolítico, época em que os homens, durante as caçadas, eram acompanhados por matilhas selvagens que se alimentavam dos restos de alimentos na região da Turígia. Depois, no neolítico, com a criação de ovelhas, os alemães necessitavam de um cão forte e de movimentação rápida acompanhada de um mínimo gasto de energia, além de uma inteligência excepcional, para proteger o rebanho de animais selvagens ou invasores, e impedir que o próprio rebanho destruísse as plantações. Para essa função foi criada toda a família de cães pastores. Durante 3 mil anos, os alemães foram aprimorando seus cães de pastoreio ninhada por ninhada, até a seleção definitiva, em 1882, por Max von Stephanitz. O Pastor Alemão é uma raça de cães de guarda. É muito rápido, agil, forte e preparado, sendo considerado um dos cães mais inteligentes. Foi considerado 3 vezes o melhor cão para se adestrar. Um dos maiores cães de guardas na segunda guerra mundial recebeu a alcunha de ‘el diablo’. (Fonte: wikipedia)

Final de 2008 decidi que estava na hora de encontrar um cão Pastor Alemão para alegrar minha família! Já fazia muitos anos que não tinhamos um cachorro e agora estava na hora certa. Fechamos o pátio, construímos um canil e uma casa para ele.

Começou então a procura pelo filhote. Ainda bem que tenho um vizinho com criação da raça, pais com Pedigree. Quando fomos a primeira vez, não tivemos dúvida entre os três filhotes. Um era mais lindo que o outro, mas o menor e mais encabulado chamou a atenção. A expectativa foi grande até o dia para retirá-lo do canil.

Leia o resto deste post »

Lineage II é um RPG Online, onde os reinos lutam pelo poder. Desde que conheci o Linage II em 2004, sempre tive vontade de jogar no servidor oficial. Mas como todo bom brasileiro, pagar mensalidade não estava nos meus planos na época. Existem vários servidores não oficiais espalhados pelo Brasil e pelo mundo, alguns melhores, outros piores com lag, vários bugs, wipes, etc.

Leia o resto deste post »