Archive for May, 2008

Domingo passado, estive lá no Falando em Java 2008. O evento teve diversas apresentações com destaques, na minha opinião, para as seguintes:

1) A apresentação do Guilherme Silveira sobre hábitos de arquitetos eficazes abriu muito a minha mente para determinadas coisas e, com isso, gerou algumas idéias para escrever aqui no blog, aguardem :)

2) O Sérgio Lopes foi muito bem sucedido com a sua abordagem teatral na apresentação sobre Domain-Driven Design. Ele simplesmente encenou a implementação de um sistema com “DDD”, onde o desenvolvedor cria uma linguagem ubíqua com o cliente e ambos conseguem falar a mesma língua - mesmo o cliente sendo literalmente um cachorro! Alguém tem uma foto disso? - durante o desenvolvimento do sistema.

3) A apresentação do Fábio Kung sobre JRuby on Rails foi bem esclarecedora em relação às limitações do Rails e como isso pode ser resolvido usando o JRuby. Sério, apesar de saber da existência de algumas linguagens cuja a JVM consegue rodar, eu ainda não tinha parado pra pensar no Java como uma plataforma que pode executar várias linguagens diferentes, como o .NET.

4) Emmanuel Bernard, líder de projetos Hibernate e autor do livro Hibernate Search in Action, falou sobre JPA 2.0 e, após o brunch, voltou em cena para falar sobre Hibernate Search. Duas ótimas palestras, diretas e objetivas, com muitos códigos e exemplos. Mas mesmo assim vi muita gente caindo no sono. Uma apresentação logo após o almoço, não dá. Eu me mantive acordado sem muito esforço, porque havia tomando 3 copos de café bem quente para não congelar. ;-)

No final do dia teve o sorteio mais nerd que se tem notícia. O próprio Emmanuel Bernard disse que nunca tinha visto um sorteio mais nerd. O Fábio Kung plugou seu MacBook - e por falar em MacBook, 99% dos presentes estavam com seus MacBooks e iPhones - no projetor e escreveu um simples método em Ruby para sortear os números, o método ficou mais ou menos assim:


def sorteio
(1..5).each {|x| puts x; sleep 1}
rand(300)
end

Houve sorteios de cupons de descontos em compras de livros, de um livro sobre Ruby on Rails e de um Nintendo Wii. É claro que a essa altura do campeonato eu estava achando que o Wii já era meu. Por já ter pago R$ 1500,00 em um e não ter recebido - sim, tomei calote no Mercado Livre de um vendedor altamente qualificado com mais de 1000 pontos positivos - achei que os céus fariam justiça e que o meu número, o nº 32, seria sorteado mas não foi :(

Por isso que agora eu sou ateu! :P

No próximo domingo, dia 18/05, estarei no Falando em Java 2008. Trata-se de um evento organizado pela Caelum para a comunidade Java.

Eu poderia falar mais sobre o evento aqui, mas o Guilherme Chapiewski já fez isso no blog dele.

Eu tenho instalando algumas aplicações em Java aqui no meu Ubuntu 7.10 e geralmente elas abrem com uma tela vazia, sem nenhum componente sendo exibindo, como na figura abaixo:

Print Screen da tela do Netbeans 6.1

Eu instalei o IRPF 2008 (sim, existe uma versão pra Linux), o Druid (este eu já até removi do pc) e mais recentemente o Netbeans 6.1. E com todos eles aconteceu o mesmo problema.

Procurando na internet, eu descobri que isso é um conflito com o Compiz e existem duas soluções:

1) Desabilitar o Compiz. Vá em Sistema > Preferência > Aparência e na aba “Efeitos Visuais” escolha a opção “Nenhum”. Isso irá resolver o problema, mas irá deixar o Ubuntu muito simples. Se você não quer desabilitar o Compiz, escolha a opção segunda opção.

2) Definir uma variável de ambiente. Essa solução resolve o problema e não é necessário desabilitar o Compiz. Execute o seguinte comando para editar o arquivo /etc/profile:

sudo gedit /etc/profile

E então adicione as linhas abaixo no final do arquivo e salve:

# resolvendo o conflito do java com compiz
AWT_TOOLKIT=MToolkit
export AWT_TOOLKIT

Reinicie o pc - um logout já resolve - para poder abrir qualquer aplicação Java normalmente.

É impressionante a capacidade que algumas pessoas têm de não pensar no código que está copiando, seja de um exemplo na internet, de um sistema existente da empresa ou até do desenvolvedor da baia ao lado.

Se você for copiar um código, pelo menos, veja se o que você está copiando se aplica ao problema que você quer resolver e, é claro, adéqüe tudo que está copiando ao seu contexto. Caso contrário você estará sendo um… eh… mau copiador, não podendo nem se dar ao luxo de ser chamado de desenvolvedor.

É claro que erros todo nós cometemos, mas também tem aquela velha história:

Errar é humano, persistir no erro é burrice.

Concluindo, prestar muita atenção antes de copiar um padrão, um trecho de código ou qualquer outra coisa. Porque você poderá passar por situações delicadas e até ser considerado uma piada dentro da empresa, se copiar coisas sem saber o que está fazendo.

Esta semana, eu precisei criar um modelo de banco de dados MySQL e como o MySQL Workbench ainda não saiu para Linux, decidi instalar o DBDesigner4 que é como se fosse a versão mais antiga do Workbench.

Depois de tentar instalar de várias vezes, encontrei os pacotes “.deb” para instalar o DBDesigner4. Agradeço ao Gabriel Falcão, autor dos pacotes deb.

Mas depois de instalar os pacotes e começar a usar o aplicativo, tive alguns problemas:

1) Ao tentar conectar na base acontecia o erro “Unable to load libsqlmy.so”. Para corrigir isso, baixei o DBExpress para MySQL, descompactei o arquivo libsqlmda.so.4.20 no diretório /usr/lib/DBDesigner/Linuxlib/ e, no DBDesigner, fui em Database > Connect to database, cliquei em “New Connection” e, na aba “Advanced”, defini os seguintes valores:

  • GetDriverFunc: getSQLDriverMySQL
  • LibraryName: /usr/lib/DBDesigner/Linuxlib/libsqlmda.so.4.20
  • VendorLib: /usr/lib/DBDesigner/Linuxlib/libmysqlclient.so.10.0.0

IMPORTANTE: Note que o valor padrão de GetDriverFunc é getSQLDriverMYSQL, com Y maiúsculo e o valor que deve ser colocado é com y minúsculo.

Com isso eu consegui conectar no banco e fazer a engenharia reversa. Essa solução, encontrei no artigo DBDesigner do DokuWiki.

2) Depois de já ter conseguido conectar no banco de dados, passou a acontecer o erro “Error while executing Query:…… ERROR Message: libmidas.so.1:cannot open shared object file” ao tentar executar uma query. Para corrigir isso, criei um link para biblioteca libmidas.so.1.0 no diretório /usr/lib/, executando o seguinte comando no terminal:

sudo ln -sf /usr/local/DBDesigner4/Linuxlib/libmidas.so.1.0 /usr/lib/libmidas.so.1

Depois, bastou reiniciar o DBDesigner para tudo funcionar normalmente. Essa solução eu achei num post do ubuntuforums.org.