TriadWorks: Deploy Automatizado

Aprenda como Automatizar seu Deploy em 15min…

Você faz deploy da sua aplicação manualmente? Em produção? Não cara, não faz isso.

Você sabe que esse processo manual cedo ou tarde vai te trazer uma grande dor de cabeça, né? Qualquer tarefa manual, repetitiva e feita por um ser humano tende a não dar certo.

A melhor forma de resolver isso é automatizando: desde build até o processo de deploy. Automatizar o deploy não precisa ser algo difícil nem sofisticado, você consegue resolver isso com 2 passos simples:

  1. liste todos os passos do deploy num arquivo TXT;
  2. transforme essa lista num script executável;

Pronto! A partir de agora você tem um processo de deploy automatizado sem firulas! Não sabe escrever o script? Não te preocupas, eu te ensino como fazer nesse novo post no blog:

[Post] Deploy Automatizado: feito é melhor que perfeito

Deploy deve ser simples e executado com frequência, dessa forma você diminui os riscos a cada nova versão da sua aplicação.

E aí, o que achou? Será que você consegue aplicar o script do post no seu trabalho? Comenta lá, deixa eu saber!

2o Mau Habito Dos Desenvolvedores JSF

Método getter invocado múltiplas vezes?

Você sabia que uma simples consulta ao banco de dados colocada no método errado do seu managed bean pode tornar suas páginas 10x mais lentas?

Entre 2008 e 2014 eu palestrei em diversos lugares do Brasil sobre os 10 maus hábitos dos desenvolvedores JSF, e sem dúvida um dos problemas mais comuns que encontrei durante estas palestras conversando com profissionais, em consultorias e treinamentos foi o 2o mau hábito: colocar lógica cara em métodos getters.

Provavelmente você já caiu neste 2o mau hábito ou conhece alguém que tenha caído, de qualquer forma, podemos simplificá-lo com um simples trecho de código. Por exemplo, um problema grave pode estar num simples método getter:

public List<Produto> getProdutos() {
    return this.dao.lista(); // lista produtos do banco
}

Apesar deste método parecer inofensivo ele pode tornar sua página até 10x mais lenta para abrir no navegador! Caso duvide ou queira entender por que ele pode ser tão perigoso para sua aplicação, eu recomendo a leitura do meu novo post:

>> JSF: Não coloque processamento caro em métodos getters

Colocar consultas dentro de getters é tão perigoso que, na maioria dos casos, além de impactar diretamente na aplicação Java ele impacta no banco de dados pois este é bombardeado com inúmeras consultas.

E aí, o que achou da dica?

Deixe seu comentário, e se tiver algum amigo que curte meter consultas em getters por comodidade, eis a chance de convence-lo do contrário.

Relatorios PDF com JasperReports

JasperReports: gere relatórios PDF na sua aplicação Web

Não sei você, mas eu sempre tive uma grande dificuldade com a API do JasperReports para gerar relatórios em PDF. Novo projeto significa reaprender a API. E acreditem, não tem como decorar um código que você praticamente escreve uma única vez e nunca mais olha.

Eu não gosto de simplesmente colar um código de um projeto em outro sem antes entender o que aquele código faz e como funciona. Por exemplo, para gerar relatórios nas minhas aplicações é comum ter um código semelhante a este:

// parametros
String jrxml = "/relatorios/todos-cursos.jrxml";
Map<String, Object> parametros = new HashMap<>();
Connection conexao = new ConnectionFactory().getConnection();

// gera relatorio pdf
GeradorDeRelatorios gerador = new GeradorDeRelatorios(conexao);
File pdf = gerador.geraPdf(jrxml, parametros);

// escreve na saida do response
Files.copy(pdf.toPath(), output);

O código é bem simples, não é? Isso porque toda a complexidade da API do JasperReports está encapsulada dentro da classe GeradorDeRelatorios. Todos os detalhes estão dentro dela e do seu método geraPdf. Dentro deste método existem 3 passos importantes para gerar relatórios em PDF, os relatórios que você desenhou com o iReport.

Para entender os 3 passos e o que realmente importa na API do JasperReports eu recomendo você ler meu novo post no blog da TriadWorks:

>> Como gerar relatórios PDF na Web com JasperReports

A verdade é que eu escrevi esse post para NUNCA mais esquecer como a API funciona e como posso tirar proveito dela. Ainda no post, eu aproveito para ensinar como disponibilizar seu PDF para download na sua aplicação Web.

E ai, como você implementou sua classe para gerar relatórios?