Facebook Twitter Gplus RSS
 
 
formats

Código do Quake II

A +- um ano atrás resolvi me aventurar no código do Quake III. Tentei reencarnar meus conhecimentos, não muito sólidos,  em C/C++ para tentar aprender um pouco sobre motores de games. Pelo fato do código fonte dos Quake I, II e III estarem disponíveis no site da ID, o único trabalho que tive foi de fazer o download dos fontes e abrir no visual Studio 2008 e configurar os módulos para abrir na IDE. Fiz compilar e rodar o game para depuração, olha que deu um trabalhão, mexi em muitas linhas, adicionei outras, mas nada de especial, alem do mais, estava de férias e isso acaba rápido. Apesar do código estar bem arrumado, fácil de ler e bem intuitivo, não consegui tempo pra fuçar mais coisa nos fontes.

Fuçando na internet, encontrei o blog do Fabien Sanglard’s que transcreve todos os passos para rodar os fontes do Quake II. Em seu post são descrito os passos necessários para compilar e executar os fontes, contem também os detalhes do módulos, arquitetura e etc. O post está mais completo que o meu sobre o Quake III. Vale a pena dar uma olhada.

 
Tags: , ,
formats

Hibernate/JPA – Utilizando SQL sem perder o vinculo dos objetos relacionados

Não há dúvidas de que o hibernate é um excelente ORM, se não o melhor que há no mercado. Porém, muitas pessoas, satisfeitas com os procedimentos iniciais de aprendizado do framework, não se dão conta das demais funcionalidades disponíveis para o desenvolvedor. A lista é vasta, confesso que posso não conhecer a metade, mas alguns dias atrás, uma dessas funcionalidades me ajudou muito.

Um objeto persistente, para o hibernate, é uma entidade que contem relacionamentos com outras entidades que juntos formam uma relação. Em diversas situações, na maioria das vezes no mundo real, essa relação se torna complexa quando existe a necessidade de relação com outras entidades, somado com o numero enorme de dados relacionados. Existem várias formas de obter essas esses dados relacionados, uns que permitem obter todo o conjunto de dados relacionados ao carregar o objeto (eager), outro no momento que a relação é obtida (lazy). Outras alternativas podem ser utilizadas em conjunto, como, as consultas nomeadas atreladas ao carregamento do objeto. Porém, apenas obter a lista de desses informações não é suficiente para a aplicação, fazendo com que o desenvolvedor utiliza consultas mais elaboradas com HQL ou criteria.

A forma como o framework monta as consultas é na maioria das vezes genérica e pouco intuitiva, fazendo com que o desenvolvedor opte por utilizar o SQL nativo, ou portar a consulta para uma Stored Procedure para construir uma consulta mais elaborada. É uma estratégia plausível quando a aplicação necessita de desempenho mas, isso tiraria a principal vantagem do framework; o acesso as relações que são representadas pelo relacionamento entre os objetos. Existe uma maneira muito simples de executar uma consulta SQL mantendo o relacionamento entre os objetos.

Para o framework, os objetos persistentes são de extrema importância. Quando o framework é executado pela primeira vez, ele adiciona uma série de funcionalidade nos objetos persistentes que permite realizar as operações em suas relações. A maneira com que o framework realiza essa tarefa é pela Instrumentação de código. A instrumentação nada mais de uma técnica de incluir alterações do código do programa mesmo após a sua compilação. O conceito pode ser semelhante com Reflexão e AOP, mas existem particularidades que tornam os conceitos bem distintos. Por ser um assunto muito pesquisado e com referencias em abundância, é um assunto para ser tratado outra hora. No hibernate, isso é feito através da lib ASM, que é um extenso conjunto de utilidade que permitem a plicar esse conceito nas classes escritas em linhagem Java.

Bom, para que o framework compreenda que o resultado de uma consulta SQL possa ser vinculado a um objeto é necessário que o retorno corresponda aos atributos do objeto, sendo que o objeto possa ser reconhcido pelo motor de consulta. Ex:


List<ClasseQualquer> planos = new ArrayList<ClasseQualquer>();
String queryStr = queryUtils.findValue(nome_da_query); //obtem a string de consulta
Query query = entityManager.createNativeQuery(queryStr, ClasseQualquer.class);

 

Obtendo um objeto Query configurado como acima, é possível realizar operações como essas abaixo:

List dados = instanciaObjetoQualquer.getDadosParticulares();

 

Esse simples macete pode ajudar bastente para obter objetos, que necessitem manter o acesso aos objetos relacionados, através de consultas bem elaboradas e com o desempenho do SQL.

 
Tags: , ,
formats

Dica de repositório de fontes: Assembla

Utilizo o github a um bom tempo simplesmente pelo fato de  ser um excelente repositório que pode ser utilizado para projetos opensource e para projetos fechados, isso de acordo com os pacotes disponíveis para seus clientes.

Recentemente, precisei de um repositório que fosse aberto para uso, mas, que fosse possível manter projetos fechados com possibilidade de abrir para uma determinada quantidade de usuários. Encontrei o Assembla. O Assembla permite trabalhar com SVN ou Git, possui trambém recursos para trackin de projetos, wiki e outras ferramentas de colaboração que podem ser utilizadas de forma integrada com o repositório. Muitas dessas ferramentas estão disponíveis também para o pacote free, porém, diminui consideravelmente os recursos de armazenamento.

A administração é feita inteiramente Através do site, tornando possível atribuir e remover acesso aos usuários ao projeto, inclusive gerenciar permissões.

Achei essa ferramenta muito boa. É ideal para quem tem um projeto com vários colaboradores e que tem necessidade de mante-lo fechado. Taí a dica: Assembla; monte seu plano, pague baratou ou utilize de graça.

[]s.


 

 
Tags: , ,
formats

PHP X Ruby

Published on March 4th, 2011 by in web

Link enviado pelo Fio (Marcio Gomes) sobre uma discussão sobre PHP X Ruby. Não costumo opinar sobre qual é a melhor linguagem, mas, é válido ressaltar que a PHP é uma linguagem que nasceu com um objetivo; a WEB.

Vale a pena dar uma olhada: Link.

Comentem.

[]s

 
Tags: , ,
formats

Suporte a Ruby on Rails descontinuado no NetBeans

Não tenho muito o que falar por nunca ter utilizado o NetBeans para esse propósito, mas é uma notícia triste para as pessoas que mantinham projetos RoR sobre essa IDE.

Em resumo, o fato foi devido a necessidade de priorizar o relase 7 (JDK 7), por ser o maior relase da plataforma,  e pela baixa utilização da IDE para projetos RoR.

Segue a fonte AQUI.

 
Tags: , ,
formats

Jquery: Grid Plugins

Published on January 20th, 2011 by in web

Quem já trabalhou com grids dinamicos na view, sabe da dificuldade que é trabalhar com uma série de eventos capturados via javascript, encaminhar via AJAX e manipular o conteúdo JASON para dar vida a sua solução. Olha que eu não falei da paginação. Realmente, é um saco.

JQuery surgiu para ajudar a quem utiliza JavaScript para em suas páginas. Sem dúvida, é uma excelente lib. Melhor ainda são seus incatalogáveis plugins, estão ai para uma série de soluções. Portanto, encontrei um site que catalogou os 15 melhores plugins para manipulação de tabelas.

Segue a dica e o link AQUI.

 
Tags: ,
 
© Blog do Alone
credit