Pesquisar

quarta-feira, 22 de abril de 2009

DSL Interna ou DSL Externa dão brigas feias


O assunto interessantissímo DSL (domain-specific language) é contraverso (assim como a maioria das tecnicas/metodologias/tecnologias novas) e chega a dar briga!

Acompanho direto foruns e artigos sobre o assunto, para alguns ela é dividida em dois ramos dsl interna e externa, pra outros essa divisão é sem sentido. A discussão já começa na definição do conceito ou conjunto de conceitos por trás do assunto.

Leia a opinião de Martin Fowler sobre DSL's (interna e/ou externa): DSL (domain-specific language)
Leia também a opinião de Phillip Calçado: Domain-Specific Language Interna

E por último não deixe de conferir este artigo no infoq: http://www.infoq.com/articles/External-DSL-Vaughn-Vernon

sexta-feira, 17 de abril de 2009

Lula on South Park

Este post vai fugir bastante (no fundo acho que não) do usual aqui. Ontem assisti o novo episódio (transmitido na quarta) de south park, nele os grandes líderes do mundo aparecem and Guess Who.... Mister Lula também aparece. Não sou daqueles a favor do Lula muito ao contrário sou sempre um vigia do atual governo. Mas achei muito bom a aparição dele "entre os líderes mundiais" bem como o episódio. Esta temporada de south park está de mais, o melhor episódio IMHO foi Gay Fish. (hilário)



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)