Integração Contínua de aplicações Python com Hudson

27 de outubro de 2008

No começo deste mês eu dei dicas sobre como usar o Fabric para automatizar o build e o deployment de aplicações Python.

Essa automatização por si só já quebra uma árvore, mas ela possibilita ainda o uso de Integração Contínua, uma prática extremamente importante que costuma ajudar muitas equipes a manter seus projetos nos trilhos. Para mais informações sobre Integração Contínua, eu recomendo a leitura deste artigo, até porque este post terá um enfoque mais prático.

Neste texto será mostrado como configurar um projeto Python no Hudson, um servidor de Integração Contínua muito simples de configurar e utilizar. O sistema de controle de versões que eu utilizo aqui é o Git, mas usuários de outros sistemas também poderão achar este texto útil. Leia o resto desse post »

Rails Summit Latin America ‘08: eu vou!

13 de outubro de 2008

Todos já devem estar sabendo, mas vale a pena repetir que irá rolar em Sampa, nos dias 15 e 16 de Outubro, o evento Rails Summit Latin America.

Minha expectativa em relação a este evento em particular é muito boa. Apesar de já terem ocorrido outros eventos dedicados ao Ruby on Rails aqui no Brasil, os organizadores desse evento em particular resolveram levar a coisa toda a um outro nível.

Citando o site do evento:

O Rails Summit Latin America surge para completar a agenda dos grandes eventos mundiais de Ruby on Rails™. Inspirado na RailsConf americana que reúne cerca de 2.000 desenvolvedores e tomadores de decisão, o Rails Summit Latin America trará os principais palestrantes e especialistas no assunto do mundo inteiro incluindo participação especial do criador do Ruby on Rails™, David Hansson.

Com diversos palestrantes internacionais e empreendedores brasileiros, o evento será referência sobre o assunto na América Latina, trazendo o que há de melhor na plataforma para o Brasil.

Para quem não se inscreveu, corra que ainda dá tempo. (eu acho!) :)

Nos vemos por lá!

Deployment de aplicações Python com Fabric

5 de outubro de 2008

Uma coisa é fato: subir uma nova versão de uma aplicação é um procedimento que, se feito manualmente, costuma demandar tempo precioso, independente do tamanho da aplicação e dos frameworks utilizados no projeto. Não há o que discutir.

Na verdade, ninguém parecia se importar em automatizar tarefas “mecânicas” como o deployment, coisa que mudou de figura ao passo que metodologias ágeis — juntamente com técnicas como Integração Contínua — passaram a se tornar populares. Desde então, algum esforço vem sendo investido para criar ferramentas para automatização de muitas dessas tarefas. Leia o resto desse post »

Seaside: um framework web de verdade

30 de setembro de 2008

Provavelmente isso não é novidade para alguns de vocês, mas já faz algum tempo que eu venho me aventurando pelo incrível mundo do Smalltalk. Dando prosseguimento à esta saga, tenho o orgulho de anunciar a minha próxima vítima: o framework Seaside!

O Seaside é um impressionante framework web escrito em Smalltalk focado no desenvolvimento de sites aplicações stateful. Mesmo conhecendo muito pouco a respeito do seu funcionamento — até então, nada além de um mísero hello world — resolvi tentar criar uma aplicação que realmente fizesse algo a mais do que simplesmente escrever um texto na tela.

A experiência foi muito boa, mas poderia ter sido melhor se o projeto contasse com uma documentação decente. O código do framework propriamente dito é muito bem documentado e é possível aprender bastante, mesmo tendo apenas o Class Browser do Squeak como recurso de pesquisa. Mas convenhamos: uma documentação como esta ainda faz falta, principalmente para os aventureiros que, como eu, não fazem parte do core team do Seaside. Leia o resto desse post »

6 lições que aprendi sobre desenvolvimento de softwares

28 de setembro de 2008

É natural do ser humano aprender com os seus próprios erros. Quem aqui nunca vivenciou uma situação inusitada na qual mesmo tendo a impressão de que algo está errado, acabamos ignorando e seguindo em frente. E assim continua até que, num belo dia, a bomba explode e você pensa consigo mesmo: “eu sabia!”.

Essas situações, embora aparentam ser ruins em um primeiro momento, são excelentes oportunidades para nos ensinar algumas coisas que provavelmente não aprenderíamos de outra forma. Aliás, talvez seja até mais fácil aprender com nossos próprios erros do que ler sobre isso em algum livro ou artigo. O problema é que nem sempre é fácil saber tirar algo de bom de situações problemáticas.

Por isso, tentarei fazer um gancho entre esse assunto e a área de desenvolvimento de softwares, mostrando algumas das lições em que aprendi errando. Também seria interessante se os leitores que se identificarem com o assunto também compartilhassem algumas lições que aprenderam em períodos turbulentos. Afinal, errar faz bem! Leia o resto desse post »

Em tempos de Mega Sena acumulada…

27 de setembro de 2008

Há algum tempo atrás eu acabei me deparando com um desafio bastante interessante proposto por Rodrigo Sol. O desafio em questão pede a criação do menor programa possível — em qualquer linguagem — para gerar um jogo da Mega Sena. Hehe, impressionante o poder de uma loteria acumulada sobre as pessoas! :D

Seguem as regras do desafio nas palavras do próprio Rodrigo:

Escrever em qualquer linguagem de programação um programa que realize 100.000 sorteios de um numero entre 1 e 60 e mostre na tela os 6 mais freqüentes.

Ganha quem fizer o programa com o menor numero de linhas possíveis, lembrando que a linha considerada é a linha da unidade léxica da linguagem, portanto a seguinte linha em Java seria considerada duas: int i =0; sysout(i);

Como na época eu estava aprendendo Groovy, não podia deixar esta oportunidade passar. E, de fato, não deixei! Leia o resto desse post »

Debugando aplicações JavaEE no Glassfish v2

22 de setembro de 2008

Este post, na verdade, é uma dica rápida para quem possui aplicações JavaEE rodando em servidores Glassfish e está tendo dificuldades na hora de rastrear a origem de possíveis bugs no código. Leia o resto desse post »

JavaEE 5 interceptors

21 de setembro de 2008

É inegável que a não-tão-nova versão 5 da especificação JavaEE veio numa hora mais do que necessária. Todo mundo parecia — e com razão — evitá-la ao máximo, pois seu uso demandava muito tempo e caixas de calmante.

Hoje, criar e manter uma aplicação com EJBs é relativamente simples. E, por este motivo, a adoção da tecnologia passou a ser mais expressiva, mesmo em projetos menores.

Alguns aspectos da especificação, entretanto, ainda deixam a desejar. Um exemplo seria a parte de injeção de dependências, que é limitada apenas a componentes gerenciados pelo container. O que isso quer dizer? Isso quer dizer que, para você poder tirar proveito do esquema de injeção de dependências, todos os seus componentes precisam ser EJBs.

Mas, nesta versão, os EJBs não são POJOs? Sim, mas ter de expor classes simples como EJBs — só para ganhar essa “injetabilidade” de presente — não parece correto. E, da mesma forma, espalhar instanciações de objetos pelos vários componentes da aplicação definitivamente também não parece. Leia o resto desse post »

2 (boas) formas de testar clientes JavaMail

20 de setembro de 2008

Sem sombra de dúvidas, a API Java mais usada para resolver a questão do envio e recebimento de emails é o JavaMail. Apesar de existirem outras opções, como o Spring Mail e Commons Email, no fim das contas é o próprio JavaMail quem faz todo o trabalho sujo, já que tais APIs são baseadas no próprio JavaMail.

Apesar de dar conta do recado, a referida API conta com alguns problemas bastante complicados, dentre os quais eu destaco o design (horrível, diga-se de passagem) de suas classes e interfaces, que parecem fazer o possível para dificultar a testabilidade dos seus “clientes”. Leia o resto desse post »

Test Driven Development com Java Swing

18 de setembro de 2008

Deixarei hoje algumas dicas sobre como desenvolver uma aplicação em Java Swing de conversão de temperaturas utilizando uma técnica de desenvolvimento de software conhecida como TDD (Test Driven Development). Então, se você nunca ouviu falar em TDD antes, procure dar uma estudada para saber do que se trata antes continuar lendo este texto. Garanto que, por mais esquisito que esse negócio de TDD possa parecer, é um jeito bem interessante de se desenvolver aplicações.

Basicamente, a sequência que seguiremos no decorrer deste artigo será a seguinte: primeiramente, criaremos testes de unidade com o JUnit para definir a lógica para conversão de uma temperatura para outras escalas (Celsius, Kelvin e Fahrenheit). Em seguida, iremos programar essa lógica até que todos os testes passem. Depois disso, a interface com o usuário será desenhada e o seu comportamento definido, através da criação de testes JUnit + FEST-Swing, ferramenta esta muito interessante que permite automatizar testes em aplicações Swing. Por fim, programaremos a lógica da View até que todos os testes passem.

É, eu sei… na teoria tudo parece muito bonito, mas, e na prática? Será que funciona assim mesmo? Se está curioso, então continue lendo! Leia o resto desse post »