Posts

Showing posts from 2009

Aviso sobre emails e participação no blog

Pessoal,

Peço desculpas por não responder os e-mails ultimamente. Estou em uma correria do cão com projetos e treinamentos, este fim de semana pretento responder todos os e-mails pendentes e colocar novos posts no blog. Ano que vem pretendo reformular o blog a fim de deixa-lo mais prático e objetivo, conto com a ajuda e compreenção de de vocês por que no inicio do ano que vem para pequenos ajustes no blog de layout e estruturação.

Pretendo deixar o blog mais leve e rodando melhor e mais blogs, além de fazer uma integração mais efetiva com o meu twitter(http://www.twitter.com/diego_pacheco), no momento estou participando mais ativamente no twitter mas pretendo escrever mais na sequencia agora.

Abraços.

O Pior Débito Técnico: Desenvolvedor Preguiçoso e Sem Estudo e a Negligencia no Acompanhamento

Image
Ward Cunningham criou este termo para representar o seguinte problema: Quando desenvolvemos existe um dilema, escolher a solução melhor, com melhor design, com código mais limpo porem que demora muito mais a ser feita e claro outra opção é a solução mais bagunçada com design ruim porem mais rápida de fazer.

A idéia é que a medida que fazemos código que não é tão bom, vamos aumentando o nosso débito com a qualidade do código. Muitas vezes este débito é criado para atender datas que são complidas em termos de cronogramas ou por que o desvio do projeto já é tão grande que a qualidade virou um item dispensável.


Não tiro a minha parcela de dulpa na questão do débito técnico, quantos projetos nos iniciamos com as melhores intenções do mundo, como por exemplo utilizar integração contínua, Testes unitários, Refactoring e Scrum e neio do projeto algo sai errado e vai tudo por agua a baixo.

Neste caso vejo que muitas vezes por estarmos acostumados com o mind set de gestão tradicional command cont…

Groovy Power: Flexibilidade, Simplicidade e Código Legível

Image
Eu um post anterior comentei sobre a importância de se escrever um código mais fluente, ligível e auto-explicativo. Muitas vezes são com pequenas ações que podemos melhorar este aspecto sobre o código que escrevemos. Estas pequenas ações são caracterizadas com um bom disgn coeso e pouco acoplado, bons nomes de classes e métodos, variáveis com nomes significativos e código fluente e claro.

Criar código fluente e claro pode ser especialemte desafiador. É facto que certas linguagens facilitam ou dificultam esta tarefa, Java não é a linguagem mais fluente do mundo mas existem alternativas. No post anterior eu ensinei a criar uma DSL com Java sem nenhum framework e com batsante fluencia.

Neste post quero comentar sobre a linguagem dinamica Groovy que é a referência padrão de linguagens dinamicas para a JVM. Existem outras bem funcionais e interessantes como JRuby, BeanShell, Jython, Scala e tantas outras. Em especial hoje vou falar de Groovy, por que?

Por que como desenvolvedor Java este f…

A importância do Código Fluente em Java

Image
Não é de hoje que desenvolvemos software. Não é de hoje que temos cada vez mais facilidades para desenvolver mas ao mesmo tempo mais complexidade existe no software que produzimos. Ainda nos dias de hoje é comum achar código que não é fácil de entender. Java é a linguagem mais utilizada no mundo atualmente e é a que possui mais programas prontos rodando diariamente, mas este código Java é simples? Fácil de ler? Rápido de dar manutenção?

O que ocorria antes na era do maiframe era que existia uma preucupação muito grande em "dizer" ao computador o que fazer então a grande preucupação era em fazer o computador entender o que você quer e as precupações da época eram mais com processador, gerência e otimnização de memória, etc...




Mainframe


De lá para cá as coisas mudaram. Na verdade sempre vamos ter mudanças, hoje em dia vejo que é muito importante você escrever um código fácil de ler, rápido de dar manutenção do que o código mais otimizado por que como já dizia o Donald Knuth a o…

TDC 2009: Floripa eu fui

Image
Acabei de chegar do TDC 2009, estou em casa, morto de cansaso mas feliz. Foi um grande evento. Quando cheguei domingo em Floripa(08/11/2009) fiquei um pouco triste que o tempo estava muito ruim e perdi a praia, tive que me contentar com um chopp com meus amigos Giuliano, Simundi e Metz. Foi um pecado estar em Floripa com aquele tempo.



Visão do Hotel - Com tempo ruim :(

No chegando o grande dia dia 09/11/2009, que por sinal estava muito melhor do que domingo :D Acordei cedo, tomei café e fui para o hotel da conferência, chengando quem eu encontro na porta do hotel??? Bom vou deixar as duas fotos a baixo "falarem por mim".


Eu e o Rod Johnson(SpringSource)


Simundi, Eu, Rod Johnson, Giuliano e Metz

Bom só com este inicio já era o suficiente, poderia ir para casa :) Fiquei para ver o evento. A primeira palestra foi a do Rod Johnson que era sobre o futuro do Java daqui a 5 anos, algumas coisas importantes que ele mencionou:
Ruptura, grande mudança de paradigmaCloud ComputingPolyglot pe…

Perdendo o medo de mudar código

Image
Hoje em dia, cada vez mais e difícil fazer um sistema do zero, sempre é necessário realizar integrações com outros sistemas da empresa, sistemas de fornecedores, sistemas do governo e principalmente sistemas legados. Hoje em dia ainda que pareça absurdo a maioria dos projetos não trabalham com testes unitários, concordo que nem sempre será possível trabalhar com testes unitários por que as vezes você não tem o que testar, ou a lógica esta em outra aplicação/camada/tecnologia ou o tempo para realizar versus o beneficio não se paga.

Qualquer linguagem OO moderna tem bons frameworks de testes unitários, falando de Java e .NET existem vários, mas mesmo assim existem muito e muitos sistemas feitos sem testes unitários, não usar este nível de testes além da perda da regressão(Falando de unidade) existem outros problemas.



O Medo de mudar o código



Medo de Mudar código?

Acredito que o ponto seja este mesmo. No final das contas os desenvolvedores ficam com medo, literalmente, logo acabam tomando d…

Extensão do Curso de Spring Framework

Pessoal, é com orgulho que venho publicar o primeiro anexo de atualização e novos recursos ao curso de Spring Framework. O curso que disponibilizei era focado em Spring 2.X sendo que todos os recursos eram válidos para o Spring 2.5, agora neste anexo vou mostrar as novas facilidades de anotações do Spring 2.5 e bem como novos recursos como JMX, JSF e testes com o TestNG, vários destes recursos já existiam no spring 2.0 mas não estavam presentes no curso, agora você pode utilizar estes recursos nesta nova apostila que é incremental a apostila do curso.

Confira o conteúdo detalhado deste anexo:

Anotações@Required@Autowired@Qualifier@PostConstruct@PreDestroy@Service@Repository@Component@ResourceTestes com anotações e TestNGAbstractTestNGSpringContextTests
@Test Integração com JSF e Jboss RichFaces Configuração de toda aplicação e utilização Expondo Beans com JMX MBean ExporterPara este anexo que chamei de Anotações e Web você tem a disposição os slides referentes a este capitulo extra do …

Seja Inteligente e não use Agile

Image
Você não precisa ser agile, você pode fazer um projeto e ter sucesso sem usar agile. Mais softwares foram feitos sem agile ou qualquer metodologia, leia-se AD-HOC, do que com métodos agéis. Neste posto gostaria de esclarecer o diversos enganos que os ditos "agilistas" erram quando falamos de processos tradicionais e desenvolvimento de software.
Em outro post depois falar dos pontos positivos, ou seja, do que é bom mesmo. Mas neste post vou focar neste equívocos que o pessoal comente ou omitem de propósito. Vou falar de algumas falácias também...

Hoje em dia muitos colocam como os métodos ágeis sendo a única solução que funciona para o desenvolvimento de software, será que isso é verdade, será que não existem outras opções? Será que esta é a única solução e será que isso funciona sempre e não tem defeitos.




Primeiro Passo: Escolhendo as palavras mágicas

Palavras Mágicas
Não posso negar o marketing dos caras é bom. Qual metodologia você gostaria de usar, para facilitar a sua escolha…

Interoperabilidade na prática JEE 5(JBoss) com .NET (C# framework 3.5) parte 2

Image
No post anterior mostrei como criar um Webservice em Java EE5 usando EJB3 e rodando a aplicação no JBoss AS 5.1, o webservice foi consumido em uma aplicação C#. Tudo isso foi possível por que as duas implementações(java e .net) implementam WS-I Basic Profile.

Neste post vou mostrar como criar um Webservice em Aspx usando C# como linguagem de implementação e vamos consumir este Webservice com uma aplicação Java usando o Jax-WS. Antes de começar vamos as dependências para execução destas aplicações.



Dependências das Aplicações
Java JDK 6_16Jax-WS 2.1.x
eclipse 3.4.x
Visual Studio 2008SoapUIAplicação .net

Agora vamos criar a aplicação .net que disponibiliza um Webservice. Abra o visual studio 2008 e crie uma aplicação do tipo ASP.NET Web Service, o visual studio vai criar um código de exemplo com um olá mundo, nos vamos modificar este código.

Atenção: O Visual Studio se perde quando mudamos o namespace e o nome da classe do Webservice, você precisa abrir o arquivo asmx e ajustar para o namesp…

Interoperabilidade na prática JEE 5(JBoss) com .NET (C# framework 3.5) parte 1

Image
O desenvolvimento de software corporativo de hoje tem que suportar a interoperabilidade de serviços entre diversas plataformas, neste post vou mostrar como podemos fazer serviços/aplicações escritas em Java com JEE 5 no Jboss 5.1 conversar com uma aplicação C# com .net Framework 3.5.

Vou realizar esta conversa usando Webservice, tanto a solução do lado do Java como a solução do lado do .Net precisam implementar WS-I Basic Profile 1.1, quando criamos um Webservice com C# no .net Framework 3.5 ele já implementa WS-I Basic profile 1.1 o mesmo acontece ao utilizarmos do lado do Java o Jax-WS 2.x. Como vou rodar a solução Java no JBoss AS 5.01GA vamos estar utilizando o JBoss WS.
Interoperabilidade de Webservices

Na prática webservices não são 100% interoperaveis, ainda existem diversos gaps para realizar a comunicação, mas existe uma organização que é a WS-I que define os padrões de comunicação para padronização de interoperabilidade de webservices. No total existem mais de 50 especificaçõ…