As coisas estúpidas feitas quando se trabalha com programação

Java, Java EE, Programação, Uncategorized No Comments

Este post foi traduzido e alterado deste link:
http://blog.cherouvim.com/the-stupidest-things-ive-done-in-my-programming-job/

Observação: Não fui eu quem escreveu este post. Apenas fiz a tradução e alteração pois achei muito interessante.

As coisas estúpidas feitas quando se trabalho com programação

  1. ORM
    • Estupidez
      Construir um framework próprio de ORM.
    • Consequências
      O projeto vira uma bagunça depois de 2 anos de manutenção com gambiarras para passar pelo meu framework ORM desenvolvido e chamar comandos SQL’s customizados.
    • O que deveria ter sido feito?
      Usar hibernate, iBATIS, Cayenne ou outros parecidos.
  2. EAV
    • Estupidez
      Usar uma modelagem de banco de dados do tipo Entity-Attribute-Value model.
    • Consequências
      Solução não escalável e impossibilidade de rodar queries úteis no banco de dados.
    • O que deveria ter sido feito?
      Usar uma modelagem de banco de dados normalizada.
  3. Acesso ao Banco de dados
    • Estupidez
      Sincronizar o acesso ao banco de dados com uma conexão compartilhada.
    • Consequências
      Escalabilidade zero. Tempos de respostas muito lentos quando mais de 10 usuários estavam utilizando a aplicação.
    • O que deveria ter sido feito?
      Não fazer isto e utilizar um pool de conexões como c3p0 e usar uma “nova” (reutilizada) conexão retornada do pool para cada ciclo de request / response.
  4. IDE
    • Estupidez
      Evitar aprender e utilizar uma IDE.
    • Consequências
      Falta de habilidade de compilar, testar e fazer o deploy da aplicação rapidamente e / ou geralmente fazer qualquer coisa útil.
    • O que deveria ter sido feito?
      Familiarizar-me com uma IDE. Ex.: NetBeans, eclipse, etc.
  5. Transações
    • Estupidez
      Não usá-las.
    • Consequências
      Corromper os dados da aplicação.
    • O que deveria ter sido feito?
      Usar transações do banco de dados. No MySQL usar InnoDB.
  6. Prepared Statements
    • Estupidez
      Usar Statements, concatenação de strings e escapar caracteres para montar queries “seguras”.
    • Consequências
      Possibilidade de SQL Injections na aplicação. É possível logar utilizando por exemplo “or 1=1;delete from users;” e alterar o estado do banco de dados de uma forma muito desagradável.
    • O que deveria ter sido feito?
      Usar Prepared Statements que montam e escapam corretamente as queries dependendo do driver JDBC utilizado.
  7. Lógica de Negócios
    • Estupidez
      Fazer isto nos templates (JSP).
    • Consequências
      Aplicação de manutenção difícil.
    • O que deveria ter sido feito?
      Fazer isto utilizando o padrão MVC com servlets ou com um Front Controller. Melhor se utilizar um framework MVC open source como Struts, Spring MVC, etc.

Trocando a localização de um repositório svn de uma working copy

Programação No Comments

Essa semana troquei o repositório svn de um sistema meu do meu desktop para o site http://www.xp-dev.com. Tive que trocar todas as working copies do meu notebook e desktop para referenciar essa nova localização.

Para fazer isso basta utilizar o seguinte comando:
svn sw –relocate <localização antiga> <nova localização>

ORA-17410: No more data to read from socket

Programação No Comments

Semana passada no trabalho perdi umas 2 horas com o problema ORA-17410: No more data to read from socket. Em diversos lugares falava que era porque o oracle não estava suportando o modo de conexões compartilhadas. Tentei alterar o oracle para dar o suporte para conexões compartilhadas mas sem sucesso.

Após algumas tentativas, verifiquei que o problema era ocasionado quando fazia um select no banco de dados e esse select utilizava um índice específico. Depois de dropar e recriar o índice este erro parou de acontecer.

Freemarker + Sitemesh + Spring

Java EE No Comments

Depois de muito tempo consegui fazer minha aplicação utilizando Freemarker (template engine) + Sitemesh (web page layout framework) + Spring (IOC, etc) funcionar.

Basicamente, basta configurar no web.xml o filtro do Sitemesh (com.opensymphony.sitemesh.webapp.SiteMeshFilter), a servlet do Freemarker que vem com o Sitemesh (com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet) e a servlet do Spring MVC (org.springframework.web.servlet.DispatcherServlet).

O filtro do Sitemesh é aplicado a todas as requisições, a servlet do freemarker às urls *.ftl e a servlet do Spring às urls *.html.

O problema que eu tive foi que os templates do Freemarker e do Sitemesh não eram encontrados. No web.xml, um dos parâmetros iniciais da servlet do Freemarker é o diretório dos templates (TemplatePath). Configurei este parâmetro para “/WEB-INF/templates/”. E no arquivo decorators.xml configurei que os templates do Sitemesh ficavam no diretório “/decorators”. O que acontecia é que o diretório dos templates do Sitemesh deveriam ficar dentro do diretório dos templates do Freemarker. Logo a estrutura de diretórios é dessa maneira: /WEB-INF/templates/decorators.

Segue abaixo o link com a aplicação de exemplo desta integração:
http://www.fnbrandao.com.br/blog/files/freemarker.tar.gz

Vôo duplo de Parapente – Pedra Grande – Atibaia – 18/04/09

Esportes, Parapente 2 Comments

Há algum tempo atrás venho pensando seriamente em fazer algum esporte radical. Depois de conversar bastante, achei um esporte interessante: parapente. No dia 18 de março, fui até atibaia para fazer um vôo duplo para ver como que é esse esporte.

O que posso dizer é que é muito bom, e apesar de meu medo sobre a segurança do esporte, este parece ser muito seguro. Ainda não sei quando e se vou mesmo começar a fazer as aulas para voar sozinho.

Seguem abaixo algumas fotos:

As fotos estão em: http://picasaweb.google.com/fabio.nb/ParapenteVooDuploAtibaiaPedraGrande180409

Os vídeos estão em: http://www.youtube.com/view_play_list?p=622B966AA3F0F01C

Show Deep Purple – 06/03/09

Deep Purple, Shows No Comments

Show do Deep Purple!!! Atrasadas, mas estão aí as fotos.

Seguem abaixo algumas fotos:

As fotos estão em: http://picasaweb.google.com/fabio.nb/DeepPurple060309

Show Kiss – 07/04/09

Kiss, Shows No Comments

Kiss!!! You wanted the best, You’ve got the best, the hottest band in the world!

Seguem abaixo algumas fotos:

As fotos estão em: http://picasaweb.google.com/fabio.nb/Kiss070409

Show Claustrofobia + In Flames – 15/02/09

In Flames, Shows No Comments

Fui no show do Claustrofobia + In Flames, que foi muito bom. O que foi ruim foi o local do show: Santana Hall (fica na Av. Cruzeiro do Sul, perto do Metrô Carandiru), pois havia uma mureta no meio da pista, e a pista era muito pequena. Mas mesmo assim o show valeu a pena!

Seguem abaixo algumas fotos:

As fotos estão em: http://picasaweb.google.com/fabio.nb/ClaustrofobiaInFlames150209

Show Queen – 26/11/08

Queen, Shows No Comments

Fui no show do Queen, que foi muito bom.

Seguem abaixo algumas fotos:

As fotos estão em: http://picasaweb.google.com/fabio.nb/Queen261108

Ubuntu + Kodak C743

Linux, Ubuntu No Comments

Para utilizar a câmera digital Kodak EasyShare C743, basta criar o arquivo “/etc/udev/rules.d/KodakC743.rules” com o seguinte conteúdo:

ACTION=="add", SYSFS{idVendor}=="Eastman Kodak Company", SYSFS{idProduct}=="KODAK EasyShare C743 Zoom Digital Camera", MODE="0660", GROUP="plugdev"

E rodar o seguinte comando: “sudo /etc/init.d/udev restart”

Para saber qual é o idVendor e o idProduct basta executar: “for dev in `ls /sys/bus/usb/devices`; do udevinfo -ap /sys/bus/usb/devices/$dev; done”

Retirado de:
http://linuxnet.blogspot.com/2007/03/kodak-c743-no-ubuntu-610.html
http://ubuntuforums.org/showthread.php?t=286730

« Previous Entries Next Entries »