sexta-feira, 8 de agosto de 2008

Melhores Práticas no tratamento de erros(Exceptions) em java:

Java define 2 tipos de Exceptions:

  • Checked Exceptions
Exceptions que extendem a classe Exception o código cliente sempre tem que tratar a possível exception com um catch, tratando, ou throws, jogando pra cima o erro.
  • Unchecked Exceptions
Todas as Exceptions que extendem a classe RuntimeException. A RuntimeException exception também extende a classe Exception, mas tem um tratamento diferenciado. O código cliente não é obrigado a tratar estas excessões.

Definindo Exceptions:
1 - Sempre que o código cliente não puder fazer algo com a exception use Unchecked Exceptions.
2 - Preserve a encapsulação do erro (Nunca use throw new Exception("erro neste metodo tal") em um catch)
3 - Não crie novas Exceptions customizadas se não forem adicionar informações importantes para o código cliente.
4 - Documente as Exceptions (javadoc com @throws, e documentacao do projeto)

Usando Exceptions:

1 - Sempre se certificar que não deixou nada aberto como conexão a banco (usar o finally)
2 - Não usar exceptions para controle de código... Exceptions são para situações excepcionais, não para sempre serem chamadas em uma determinada rotina.
3 - Nunca suprimir/ignorar Exceptions. Se a excessão não deve ser tratada ou não existe sentido o tratamento da excessão no codigo cliente, converta-a para RuntimeException(Unchecked Exception).
4 - Não capture/trate a excessão no nível principal (catch (Exception ex))
5 - Log Excessões apenas uma vez. Várias entradas no log confundem a depuração.

Referência:
http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=2

Abs,
Ton

sexta-feira, 27 de junho de 2008

Pronto! Mensagens migradas, Inaugurando Oficialmente Blog!!!

Até aqui, todas as mensagens foram migradas dos últimos 3 anos em meu antigo blog (http://glaudiston.spaces.live.com)

A partir daqui eu estarei postando com mais frequência.

Também adicionei o adsense do google... Assim poderei testar este recurso, e quem sabe, complementar um pouco da renda familiar.

Vou continuar seguindo o mesmo padrão tecnológico e alguns posts pessoais... mas principalmente tecnológico.
Afinal é um blog sobre desenvolvimento, o Meu desenvolvimento. Que compartilho para poder aprender mais, ter um ponto de referência e reflexão, e ajudar outros, que como eu, vivem do que encontram na internet relacionado a tecnologia.

Atenciosamente,
Glaudiston Gomes
Especialista em TI.

2008-06-20 - Adeus propagandas

20 de junho

Adeus propagandas

Faz um tempo que quero compartilhar este plugin do firefox, que faz milagres para melhorar a experiência com a internet.
por padrão, o AdBlock Plus já bloqueia a maioria das propagandas, e permite a personalização do restante.

Imagine usar o windows live mail sem o banner, sem propagandas, sem perda de espaço.

Por padrão depois de instalado o adblock plus, o banner do live spaces e do live mail já não vai aparecer, mas o espaço ainda vai estar lá.
Para remover o espaço vazio, até então usado pelo banner do live mail, é só adicionar o filtro:
#div(RadAd_Banner)
Já para remover os banners do spaces.live.com, é só adicionar o filtro:
#div(AdContainer)
o resultado são páginas limpas mais seguras e muito menos cansativas.

Pra quem quer ser feliz e testar este milagre da tecnologia é só baixar o plugin do firefox e nunca mais usar o desnecessário e obsoleto Microsoft Internet Explorer.

Segue o link do addon:
http://adblockplus.org/en/installation
e do firefox:
http://www.getfirefox.com

Abraços,
Ton

2008-02-13 - Carro Novo DíVida Nova...

13 de fevereiro

Carro Novo DíVida Nova...

Hoje peguei meu primeiro carro, depois de pesquisar muito e analizar os pontos fortes e fracos, problemas conhecidos, custos de manutenção e freqüência desta manutenção, depreciação, desempenho, valor e dentre outras coisas principalmente conforto, cheguei a conclusão que um importado usado é a melhor escolha para mim.
Os importados novos tem uma depreciação muito alta, comparadas com o Vectra e Fusion.
Minha escolha foi um Citroën Xsara GLX 1.8 16v GLX.
Este carro tem muitas peças compatíveis com o Peugeot 306 e existem aqui em Campinas opções bem em conta para compra de peças originais fora da concessionária da Citroën.
Para meus amigos e os que acompanham o meu desenvolvimento estou postando as fotos do meu mais novo brinquedo/recurso

Abraços,
Ton

2008-01-04 - Introdução ao Kernel Linux

04 de janeiro

Introdução ao Kernel Linux

Para quem não entende muito bem este lance de kernel do linux, vou explicar superficialmente:
O Linux em sí é um "programa" chamado kernel que controla a parte física do computador(Hardware).
Estes programas do tipo kernel só podem ser usados por outros programas, e são o coração do computador. O kernel é o Sistema Operacional puro, que controla o processador, memória e instruções de hardware, entre outras coisas.
Todo sistema operacional(O.S.) tem seu kernel. Claro que por causa dos infindáveis tipos de hardware, é necessário que se tenha outros programas ou informações que o kernel precisa para controlar o hardware, estes programas são chamados no windows de drivers, e no linux de modulos.
Muitos tipos de hardwares são suportados diretamente pelo kernel do linux, mas se você não tem um hardware específico em seu computador, então você não precisa do módulo dele instalado pra você. No Windows você não tem saída. Todos os dispositivos de hardware que vêm com suporte nativo do windows estão lá. Querendo você ou não, e ocupando um espaço desnecessário em sua instalação. Por isto existe no linux a opção de configurar o kernel, ativando apenas o que você precisa. Assim você tem a liberdade de criar o seu sistema personalizado, enxuto e íntegro.
A configuração do kernel do linux é simples. O difícil é você adquirir os conhecimentos necessários do seu hardware e das opções do kernel que você quer. É necessário que você estude muito a documentação do kernel para ter este conhecimento.
As distros nada mais são, do que uma configuração compilada do kernel do linux somados a um pacote de programas. Tudo pra facilitar a vida de usuários que normalmente não têm o conhecimento necessário para criar sua própria distro, ou simplesmente acham perca de tempo reinventar a roda.

Espero que esta breve e resumida informação seja útil.

Abs,
Ton

2007-12-23 - Desafio, um jogo 2D até dia 23-12-2007 ... Feito!

23 de dezembro

Desafio, um jogo 2D até dia 23-12-2007 ... Feito!

No início deste mês aceitei um desafio do meu amigo Bill Guedes no forum programadoresdejogos.com.br, aqui está o desafio:
http://www.programadoresdejogos.com/forum/viewtopic.php?t=9193&postdays=0&postorder=asc&start=0

Se trata de um desafio para testar os conhecimento e capacidades de colocar estes conhecimentos em prática: "Quem consegue fazer um jogo do tipo space invaders até o dia 23 ?".
Como achei a idéia simples, e eu tinha outras prioridades, trabalhei pouco nela, só peguei firme nesta ultima semana, quando acordei do fato que o prazo estava acabando.

No final das contas, fiquei satisfeito com o resultado, fiz o jogo com usando o autotools, em bibliotecas divididas para o ambiente, o menu e o jogo em si.
Coloquei audio... e está bem jogável.

Sei que tem alguns detalhes errados, e falta algumas coisas do que eu havia pensado em fazer, mas já está bom. Pelo meno concluí a tempo.

Quem quiser testar este jogo "beta", pegue-o no meu projeto bombas.sf.net no link de downloads

2007-12-10 - autotools parte2 - adicionando dependencias

10 de dezembro

autotools parte2 - adicionando dependencias

Bem, no artigo anterior, já expliquei como funciona o autotools:
http://glaudiston.spaces.live.com/blog/cns!50A3054EE15AB96C!298.entry

Agora vou explicar como adicionar dependências.

Neste exemplo, vou puxar pro lado de desenvolvimento de games, usando SDL que é uma biblioteca portável, que tem funções de controle de hardware entre outras coisas que facilitam muito nossa vida, e outras bibliotecas derivadas do SDL, como o SDL_image para controle de imagens de vários formatos, o SDL_mixer para o controle de mid, wav, ogg e mp3, o SDL_gfx, para rotação e zoom de imagens ou filmes, o SDL_mpeg para reprodução de filmes... etc.

Vamos começar com a teoria:
Pelo que já vimos, você deve ter percebido que o autotools trabalha com macros, macros são funções prontas, programas que você passa um comando com parâmetros ou não e eles executam determinadas funções.
Você também já deve ter percebido que estas configurações são centralizadas nos arquivos configure.ac e Makefile.am. Sim... continua assim, porém vamos colocar mais um arquivo importante: o acinclude.m4 .

acinclude.m4:
Este arquivo é uma forma de adicionar macros que podem ser usadas dentro do configure.ac, por exemplo: o Sam Lantinga, desenvolvedor do SDL, criou um arquivo chamado sdl.m4 que está no código fonte do SDL, você pode baixar este código na página do SDL em http://www.libsdl.org, e copiar este arquivo sdl.m4 para o nosso diretório base. depois disto é só adicionar sdl.m4 em nosso arquivo acinclude.m4.in ou acinclude.m4, adicionar o teste desta biblioteca no arquivo configure.ac e executar o autogen.sh
Depois de copiar o sdl.m4, só é necessário adionar uma linha com o conteudo sdl.m4 no acinclude.m4.in ... NÃO é preciso nada como #include sdl.m4 ... apenas o sdl.m4... depois disto o script de teste no configure.ac, deve ser colocado na parte de libraries é assim:
dnl Check for SDL
SDL_VERSION=1.2.0
AM_PATH_SDL($SDL_VERSION,
:,
AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
)
CXXFLAGS="$CXXFLAGS $SDL_CFLAGS"
LIBS="$LIBS $SDL_LIBS"
Para mais informações, consulte o artigo: http://www.samhart.com/snh/files/docs/sdl-kdev/sdl-kdev-mini-how2-2.html

Agora se tudo está certo, você pode executar nosso script de reconfiguração (vide artigo anteiror citado acima):
$ sh autogen.sh

O resultado esperado é:
sh autogen.sh
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for sdl-config... /usr/bin/sdl-config
checking for SDL - version >= 1.2.0... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands

Observe que agora temos uma parte onde o SDL está sendo checado por uma versão superior à 1.2.0

Isto é suficiente pro SDL, mas e quando temos outras dependências que não nos dão as macros m4 prontas ?
A primeira coisa é procurar no google... muitas vezes, no código fonte não vem o arquivo m4, mas alguém criou e postou em algum lugar. Então, se você encontrar vai simplificar muito seu configure.ac da forma q fizemos acima. Mas se o google não achar ? como fazer ?

Neste caso, você pode criar seu arquivo m4, ou pode simplesmente adicionar o uma verificação no configure.ac, só q vai poluir um pouco nosso arquivo configure.ac que até então está bem simples.

Depois vou postar mais entrada a respeito disto: autotools, criando seu próprio m4.

Por hora é só. Tenho que fazer algum código também Tongue out

Abs,
Ton