Pesquisar

quarta-feira, 18 de março de 2009

Spring, spring meu existe alguém que te usa mais do que eu

Sem dúvida um dos frameworks mais agitados e falados (e usados também) ultimamente é o senhor Spring Framework. Eu há muito tempo (muito mesmo) já gostei da idéia, mas porém contudo todavia tenho hoje uma visão crítica de que não é TODO projeto que se deve usar (ou ao menos em todos os componentes) o mesmo. Essa opinião foi formada devido a um projeto que estive trabalhando nesses últimos meses. Resumidamente o projeto tinha mais ou menos a arquitetura abaixo. (apenas estava servindo como reparador não foi eu que criei)

As dependencias das actions são todas gerenciadas pelo "container" (Spring), logo nas actions só se tem declaração de interfaces (no exemplo qualquer classe sem Imp era uma interface) e o Spring faz a injenção com as classes que as implementa (ClasseImp.java) e isso sucessivamente, ou seja, as dependencias das classes de "negocios" também...

Em si isso é comum, o fato não é o jeito que as coisas foram feitas e sim o motivo, nesse projeto pode se reduzir BASTANTE o uso do Spring mas ao contrário as pessoas apenas querem usar desefreadamente os frameworks em voga.

Eu acredito que o uso de qualquer framework exige um senso apurado assim como uma visão crítica, há projetos em que o uso de JPA pode degradar a performance final e assim como vários outros exemplos de que nem sempre é necessário estar na "moda".

Usar por usar (sem saber o pôrque) não vale a pena! Veja e tente entender os beneficios de se usar esse ou aquele framework ou mesmo alguma metodologia!

terça-feira, 17 de março de 2009

Bons e Novos Jogos!

Influenciado fortemente pelo post no meu outro blog em inglês trago hoje (para uns) novidade na cena da criação de jogos!

Ultimamente estou observando de muito perto a criação de alguns jogos independentes. Especificamente três jogos me tomaram totalmente a atenção; são eles: Braid, Aquaria e Crayon Physics. Se você é daqueles que ainda se lembra da caixa do super nintendo ou do mega drive, dê uma chance a esses jogos.
http://www.geocities.com/compcloset/NintendoSNESBox.jpg


Braid (a versão pra PC sairá dia 31 de Março de 2009)
Um jogo no estilo Super Mario (alias até é meio que uma homenagem) e com uma história depressiva e imperdivel.
Official site: braid-game.com/


Aquaria (já disponivel)
http://www.g4g.it/g4g/wp-content/uploads/2007/12/aquaria_demo_01.jpg
Um épico dos RPGs 2D... se você gosta do estilo, irá amar joga-lo, vai sentir nostalgia e com certeza se lembrará de jogos como... Castlevania!
Official Site: http://www.bit-blot.com/aquaria/

Crayon physics (já disponivel)Esse jogo não encontrei meios ou palavras pra descreve-lo, é incrivel a única coisa que posso dizer é: Entre no site e assista o vídeo de demonstração.... veja vale MUITO a pena!
Official Site: www.crayonphysics.com/

segunda-feira, 16 de março de 2009

Ofereço trabalho de FreeLancer em Java

Olá à todos,

Estou interessado a trabalhar em projetos Freelance (pagos), se tiver algum ou conhecer pessoas que necessitem favor me contactar pelo email: leandro.ribeiro.moreira at Gmail ou ainda comentando neste post.

Tenho experiências com desenvolvimento de aplicações Java a mais de 3 anos (com artigo publicado na revista MundoJ, artigo públicado na infoQ gringa e algumas participações em projetos open-source) , meu foco se baseia principalmente em aplicações Web (Jsf [myfaces, icefaces e richfaces], Jpa, Ejb3, DWR, Jasper, Spring-Framework ...) . Integração de aplicações, DSL, SOA, TDD, DDD são algumas das áreas de conhecimento que atuo. Se estiver interessado posso enviar meu curriculo à você.

No mais obrigado :) Have a nice day!

quarta-feira, 11 de março de 2009

Abordagens e Abordagens

Motivado por uma discussão calorosa sobre meu projeto e o extremismo do OO (no forum WTF daily) o projeto recebeu mais de 500 visitas num só dia, a principal crítica era sobre a quantidade de classes (uma por cada opCode) desnecessárias... o que fez com que os gringos classificassem o projeto como WTF do OO (claro que dentro da discussão haviam aqueles que não achavam que o projeto deveria ganhar esse título também).

Resumidamente o processador do nintendo 8bits é um 6502 modificado, a sua arquitetura conta com 11 meios de se obter os operadores (basicamente em baixo nível você tem uma instrução e os operadores pra mesma), com isso a mesma operação pode ser feita de várias formas...

Exemplo: Para a instrução STA (carregue o registrador Accumulator) existem várias STA's: STA $10, STA ($10),Y , STA $1002 ... (sta direta, sta indexeda por y, sta indireta....)

Logo criou-se a situação de que eu tomei a decisão de uma interface Instrução e criei várias classes abstratas InstrucaoAbsoluta, InstrucaoRelativa, InstrucaoIndexadaY ... e várias subclasses concretas LDAAbsoluta, LDARelativa... (sendo que o trabalho de se obter o operador ficaria a cargo da classe pai).

Com isso tenho REALMENTE MUITAS CLASSES isso foi uma das reclamações. Hoje penso que poderia (e ainda posso mas ando focado no debugger) fazer algo mais ou menos assim.
lda(immediate());
lda(absolute());
sta(immediate());
sta(absolute());
Só isso reduziria e muito o número de classes apenas com a composição correta delas.

A outra indagação é sobre o meio que usei para se interpretar cada opcode. Normalmente um interpretador agi mais ou menos assim:

switch(coisaASerInterpretada){
case 0xFA: fazA();
case 0xFB: fazB();
}

E minha abordagem foi diferente, coloquei todas as "funções" num hashmap generic e apenas executava.

O preenchimento:
hash.add(0xFA,new FazA());
hash.add(0xFB,new FazB());
Quando fosse usar:
hash.get(coisaASerInterpretada).execute();

Eles não discordaram do jeito que fiz as coisas; mas de ter usado HashMap ao invés de um simples array. Acredito que realmente seja verdade, é desperdício usar um HashMap ao invés de um array comum mas nesse caso prefiro correr "esse risco bobo calculado" a ter que declarar uma array maior do que o necessário já que o índice do vetor seria a identificação da operação e aproveitar das facilidades do hashmap (melhor ainda pra buscas...).

Não posso deixar de rir um pouco com as opiniões xiitas mas também não concordo que isso poderia fazer um projeto ser classificado como um WTF (what the f%ck)

Meu novo projeto JNesBR

O meu atual hobbie preferido é criar emuladores (máquinas virtuais, simuladores, emuladores + simuladores), agora estou "desenhando" um emulador da máquina Nintendo 8Bits (NES ou FAMICOM). As minhas motivações para o hobbie são (entre outras):
  • Amar videogames/computadores e entender como realmente eles funcionam [bit a bit mesmo no mais baixo nivel].
  • Criar um sistema onde eu posso realmente empregar oo em vários sentidos, dar soluções flexiveis para os problemas mais desconhecidos.
  • Criar um sistema bom de debugger. (isso é muito legal, ver seus breakpoints nos assemblers, criar interfaces e objetos que lhe possibilitem caminhar no código, ver valores, enfim foge muito dos CRUD's de cada dia [amém graças a Deus])
É interessante ressaltar que a quantidade de conhecimento que você obtem ao escrever um emulador é gigante, você passa desde conceitos de memoria (páginação, troca) a controladores de vídeo (compactação, paleta de cores, conceitos sobre computação gráfica 2d e 3d...).
Espero postar mais sobre essas experiências e também alguns screenshots.
A página do projeto é http://code.google.com/p/jnesbr/

sexta-feira, 6 de março de 2009

Aumente pessoas e seu projeto terá os objetivos atingidos mais rapidamente....

Desde que fiz faculdade, e já faz dois anos, TODA a bibliografia SEMPRE dizia: ter muitas pessoas num projeto não garante que ele vá terminar mais rápido.
E AINDA HOJE TEM pessoas da alta gerência que resolvem dar gás ao projeto inserido mais 20 colaboradores (não estou afirmando que às vezes é necessário mais pessoas). E depois a cobrança é mais idiota : "Um projeto com 15 pessoas teria que terminar mais rápido"... ah vai ler qualquer texto sobre gerência de projetos...

segunda-feira, 2 de março de 2009

GIT, SVN, CVS, SourceSafe etc. Podem tirar suas fóbias de comentar código

Sabe aquele código comentado em produção que ninguém mexe e ainda dizem de modo obscuro... "Isso aí é coisa legada melhor deixar, vai que um dia tenhamos que descomentar..."
Eu (sempre) prefiro tirar todo lixo do código (isso claro que inclui códigos comentados), mas para aqueles que ainda sentem calafrios ao excluir código comentado segue uma velha dica, qualquer (que conheço) sistema de versionamento oferece ÓTIMOS e eficientes meios para que você possa "voltar" aquele comentário obscuro ...