Ganhei este lindo brinquedinho da minha mãe! :D
Desde que vi os netbooks me apaixonei, finalmente via um notebook que era realmente móvel: pequeno e leve! Algo que eu não via nos notebooks por aí.
Porém, confesso que fiquei bastante decepcionado quando vi os primeiros netbooks. Pouco espaço em disco, pouca memória e uma tela pequena demais. Eu esperava algo melhor e um espaço confortável para acessar internet, programar, etc, etc.
Foi então que a coisa começou a evoluir e por dias fiquei babando por estas maquininhas. Quando vi o MSI Wind U100X achei a máquina completa, porém havia me programado para comprar um daqui 1 ano e meio, foi então que recebi uma grade presente e agora estou aqui, com meu Wind de 10'', 2GB de RAM, 120 GB de HD, Intel Atom 1.6Ghz, bateria 6 células, Wireless e webcam 1.3 Mpixel de onde faço este post!
Estou extremamente satisfeito com meu novo brinquedinho e já instalei minha distribuição GNU/Linux preferida nela, a Slackware. Agora que tenho uma máquina minha, sim programadores precisam de uma máquina só para eles, vou continuar minhas aventuras com a CrystalSpace! Falando nisso, estou até compilando ela agora, mas isso é assunto pra outro post...
segunda-feira, 9 de março de 2009
quinta-feira, 12 de fevereiro de 2009
Incrementado variável, com valor inicial, de 1 em 1 a cada página no iReport 3.0.0
Esses dias um amigo e colega de trabalho, o Anselmo do blog que acompanho, resolveu algum problema cabeludo. Não perguntei o que era, só lembro dele dizendo: "Essa merece um post" e eu dei risada... Agora me encontro na mesma situação.
Acreditei que seria fácil fazer uma variável incrementar no iReport a partir de um valor inicial a cada página, porém após praticamente três horas de luta saí da frente do PC exausto, mas com a luta ganha!
Após diversas tentativas e buscas de como fazer essa tarefa, acreditei ser impossível conseguir o efeito que desejava, no entanto, logo chegou um insight que me deu novas esperanças. Pensei em utilizar mais uma varíavel. Deu certo, porém o valor na primeira página ficava em "null". Quando estava quase pensando em jogar a toalha veio outro insight e pensei "vou jogar a declaração desta variável auxiliar para cima da que é utilizada na página"... e para minha surpresa, deu certo!!!!
Depois da historinha, agora a parte interessante, como ficou as minhas variáveis:
Acreditei que seria fácil fazer uma variável incrementar no iReport a partir de um valor inicial a cada página, porém após praticamente três horas de luta saí da frente do PC exausto, mas com a luta ganha!
Após diversas tentativas e buscas de como fazer essa tarefa, acreditei ser impossível conseguir o efeito que desejava, no entanto, logo chegou um insight que me deu novas esperanças. Pensei em utilizar mais uma varíavel. Deu certo, porém o valor na primeira página ficava em "null". Quando estava quase pensando em jogar a toalha veio outro insight e pensei "vou jogar a declaração desta variável auxiliar para cima da que é utilizada na página"... e para minha surpresa, deu certo!!!!
Depois da historinha, agora a parte interessante, como ficou as minhas variáveis:
Variável Gambi: esta varíavel inicia em 0 (zero) e a cada página tem seu valor incrementado em 1 (um).
Tipo de Classe da Variável: java.lang.Integer
Tipo de Cálculo: Contador
Resetar Tipo: Relatório
Tipo de Incremento: Nenhum
Variável de Expressão: $V{Gambi}
Valor Inicial da Expressão: new Integer(0)
Variável NumMemorando: esta é a varíavel que vai aparecer no relatório e que a cada página deve ser incrementada.
Tipo de Classe de Variável: java.lang.Integer
Tipo de Cálculo: Sistema
Resetar Tipo: Nenhum
Tipo de Incremento: Página
Variável de Expressão: new Integer ($P{NmrMmrInicial}.intValue() + $V{Gambi}.intValue())
Pronto, agora é só utilizar seu contado a partir de um valor inicial!
Mais uma vez, na lista de variáveis do iReport, a variável Gambi deve estar listada primeiro que a variável NumMemorando, senão você terá um valor "null" na primeira página.
Tipo de Classe da Variável: java.lang.Integer
Tipo de Cálculo: Contador
Resetar Tipo: Relatório
Tipo de Incremento: Nenhum
Variável de Expressão: $V{Gambi}
Valor Inicial da Expressão: new Integer(0)
Variável NumMemorando: esta é a varíavel que vai aparecer no relatório e que a cada página deve ser incrementada.
Tipo de Classe de Variável: java.lang.Integer
Tipo de Cálculo: Sistema
Resetar Tipo: Nenhum
Tipo de Incremento: Página
Variável de Expressão: new Integer ($P{NmrMmrInicial}.intValue() + $V{Gambi}.intValue())
Pronto, agora é só utilizar seu contado a partir de um valor inicial!
Mais uma vez, na lista de variáveis do iReport, a variável Gambi deve estar listada primeiro que a variável NumMemorando, senão você terá um valor "null" na primeira página.
sábado, 3 de janeiro de 2009
Brincando com Jogos de Corrida
Desde muito pequeno eu sempre gostei de jogos de corrida, até mesmo porque eu sempre vencia meus irmãos :D.
O primeiro jogo/simulador de fórmula 1 que joguei foi o F1GP ou World Circuit. Tem uma página legal na wikipédia sobre ele: http://en.wikipedia.org/wiki/Formula_One_Grand_Prix_(Geoff_Crammond) e no YouTube tem um vídeo legal também: http://www.youtube.com/watch?v=ZPTN4hnuShw. Neste vídeo contém a abertura do jogo que até hoje me deixa emocionado :). Eu e meus irmãos passavamos horas jogando. Foi paixão a primeira jogada, ainda lembro até hoje a minha primeira vitória, em Mexico City, estava numa posição ruim, 13º, e fiz uma corrida perfeita, voei baixo, fiz melhor volta atrás de melhor volta e no final lembro que o meu pai imprimiu a classificação final... fahsdufashfasdufsdhfsuadfshdu, bons tempos!!!
Depois vieram os outros jogos da série, GP2, GP3 e GP4. Joguei todos e joguei muito! Até hoje arranjo um tempinho pra jogar GP4, apesar de ser um jogo de 2002, ainda consigo me divertir com ele, ainda mais no meu hardware modesto, que não rodam os jogos de F1 mais novos e mesmo se rodasse continuaria jogando GP4, pois já tive a oportunidade de jogar outros, mas sempre tem algum aspecto que me faz voltar, seja ele na IA, na física, na jogabilidade com o teclado, etc.
Hoje já estou com quase 25 anos, acabei de me formar em ciência da computação e mesmo antes de entrar na faculdade eu sempre quis desenvolver um jogo, porém por um motivo ou por outro sempre acabava mudando os planos e nunca passava da votande. Nas últimas semanas decidi mudar esta história e criar culhões :D. Finalmente comecei a estudar pra criar um jogo e até agora estou me divertindo bastante, apesar de quebrar a cabeça muitas vezes pra fazer algo funcionar. Ainda não comecei a estudar a parte de física a fundo pra deixar o jogo realístico, pois primeiro quero criar um jogo que se possa jogar :D. Isso parece contraditório, porém sou usuário/programador de Linux e neste ambiente é comum encontrar diversos jogos que não dá pra instalar e jogar. Tem que instalar, ficar procurando mods, pistas, add-ons em diversos lugares, aprender como instalá-los, etc, etc, etc... fora os jogos incompletos que possuem screenshots marivolhasas em seus sites, parece até que os desenvolvedores ficaram mais tempo programando pra conseguir uma screen legal, ao invés de um jogo legal e isso me deixa muito frustrado.
Sendo assim a minha idéia é começar com coisas simples, porém juntando todas elas seja possível se divertir ao menos de forma parecida como eu me diverti com o F1GP. Você entra no jogo, escolhe as opções e joga, e pode ficar jogando durante horas. Não me importo em fazer algo visualmente atrativo, mas algo atrativo como um tudo, se conseguir isso, tenho certeza que poderei agregar uma comunidade com interesse comuns. Ainda tenho ótimas lembranças das comunidades que participei durante todos os anos que fiquei jogando a série GP, a qual não apenas jogava, mas criava utilitários, patchs, pistas, carros, milhares de add-ons pra deixar o jogo mais legal. Mas por enquanto isso é apenas sonho, ainda tem muito trabalho pra que eu consiga qualquer coisa próxima disso, então vamos falar de uma coisa mais interessante, o que eu estou fazendo (pelo menos pra min é interessante :).
Primeiramente, decidi em utilizar um engine para jogos, pois caso contrário iria levar no mínimo 2 anos pra fazer uma que funcionasse, e ainda não seria muito boa, pra somente depois começar a desenvolver o jogo. Deste modo, comecei a pesquisar algumas engines em software livre/código aberto. Decidi que iria utilizar a Delta3D, mas depois de praticamente uma semana tentando compilá-la desisti. Depois disto decidi pela CrystalSpace3D (CS) a qual foi fácil fazer funcionar, além disso esta possui uma boa documentação introdutória, a qual está desatualizada, mas quebra um galho pra quem está inciando.
Tal engine possui diversos exemplos que podem ser estudados, modificados e executados imediatamente, além disso, possui capacidade de scripting através da linguagem python e de uma linguagem própria, além disso possui uma biblioteca construída sobre si denominada CEL, esta contém abstrações para facilitar a criação de entidades. Algo que achei bastante interessante quando li e que gostei mais ainda da idéia depois que comecei a ler Programming Game AI by Example.
Apesar de aparentar ser uma boa engine, com suporte a física, detecção de colisões, rede e som (os elementos que preciso pra desenvolver um jogo) possui alguns bugs (que estão sendo trabalhados) e como já disse, como a documentação é introdutória, muitas coisas é difícil de saber como deve ser utilizada, porém a comunidade de desenolvedores é bastante ativa e disposta em ajudar, até já obtive a recomendação de um jogo desenvolvido com a engine que está hospedado no site SourceForge.net, falando nisso, existem vários jogos desenvolvidos com a engine lá, o que é legal, pois pra quem está começando fica mais fácil aprender com pessoas que já têm experiência.
Depois disso, decidi criar uma pista. Não fazia a menor idéia de como fazé-lo, sendo assim a minha primeira idéia foi encontrar uma pista já pronta e encontrei, porém não satisfez as minhas necessidades, pois estava em um formato não suportado pela engine e que só abriria no 3D Studio Max. Deste modo optei por fazer algo utilizando o Blender e fui incentivado pelo pessoal da CS, pois este é o melhor programa suportado pela engine.
Como nunca tinha utilizado o Blender pesquisei na internet como desenvolver uma pista com ele e pra minha surpresa encontrei um ótimo tutorial a respeito. O resultado final que obtive não foi nada profissional, mas para quem não sabia nada de Blender (ainda me bato bastante pra fazer umas coisas simples) fiquei bastante satisfeito, pois pude ver minha pista carregada dentro da engine e até interagir com ela.
Nesta screenshot está a pista dentro do blender:

E esta é uma screenshot da mesma pista dentro da engine:

Como já havia dito, nada profissional, mas consegui criar estas coisas de forma relativamente fácil. Agora que já tenho uma pista (que precisa de alguns ajustes, na verdade são diversos, mas vou fechar o parêntese :) o meu próximo passo é colocar um carro pra andar sozinho aí. Acreditava que isso seria extremamente difícil, mas pelo que estou lendo até agora em Programming Game AI by Example esta não parece uma tarefa muito herculiana e acho que vou me divertir fazendo isso.
Assim que colocar um carro pra rodar aí faço uma nova postagem a respeito. Por hoje é só :D
O primeiro jogo/simulador de fórmula 1 que joguei foi o F1GP ou World Circuit. Tem uma página legal na wikipédia sobre ele: http://en.wikipedia.org/wiki/Formula_One_Grand_Prix_(Geoff_Crammond) e no YouTube tem um vídeo legal também: http://www.youtube.com/watch?v=ZPTN4hnuShw. Neste vídeo contém a abertura do jogo que até hoje me deixa emocionado :). Eu e meus irmãos passavamos horas jogando. Foi paixão a primeira jogada, ainda lembro até hoje a minha primeira vitória, em Mexico City, estava numa posição ruim, 13º, e fiz uma corrida perfeita, voei baixo, fiz melhor volta atrás de melhor volta e no final lembro que o meu pai imprimiu a classificação final... fahsdufashfasdufsdhfsuadfshdu, bons tempos!!!
Depois vieram os outros jogos da série, GP2, GP3 e GP4. Joguei todos e joguei muito! Até hoje arranjo um tempinho pra jogar GP4, apesar de ser um jogo de 2002, ainda consigo me divertir com ele, ainda mais no meu hardware modesto, que não rodam os jogos de F1 mais novos e mesmo se rodasse continuaria jogando GP4, pois já tive a oportunidade de jogar outros, mas sempre tem algum aspecto que me faz voltar, seja ele na IA, na física, na jogabilidade com o teclado, etc.
Hoje já estou com quase 25 anos, acabei de me formar em ciência da computação e mesmo antes de entrar na faculdade eu sempre quis desenvolver um jogo, porém por um motivo ou por outro sempre acabava mudando os planos e nunca passava da votande. Nas últimas semanas decidi mudar esta história e criar culhões :D. Finalmente comecei a estudar pra criar um jogo e até agora estou me divertindo bastante, apesar de quebrar a cabeça muitas vezes pra fazer algo funcionar. Ainda não comecei a estudar a parte de física a fundo pra deixar o jogo realístico, pois primeiro quero criar um jogo que se possa jogar :D. Isso parece contraditório, porém sou usuário/programador de Linux e neste ambiente é comum encontrar diversos jogos que não dá pra instalar e jogar. Tem que instalar, ficar procurando mods, pistas, add-ons em diversos lugares, aprender como instalá-los, etc, etc, etc... fora os jogos incompletos que possuem screenshots marivolhasas em seus sites, parece até que os desenvolvedores ficaram mais tempo programando pra conseguir uma screen legal, ao invés de um jogo legal e isso me deixa muito frustrado.
Sendo assim a minha idéia é começar com coisas simples, porém juntando todas elas seja possível se divertir ao menos de forma parecida como eu me diverti com o F1GP. Você entra no jogo, escolhe as opções e joga, e pode ficar jogando durante horas. Não me importo em fazer algo visualmente atrativo, mas algo atrativo como um tudo, se conseguir isso, tenho certeza que poderei agregar uma comunidade com interesse comuns. Ainda tenho ótimas lembranças das comunidades que participei durante todos os anos que fiquei jogando a série GP, a qual não apenas jogava, mas criava utilitários, patchs, pistas, carros, milhares de add-ons pra deixar o jogo mais legal. Mas por enquanto isso é apenas sonho, ainda tem muito trabalho pra que eu consiga qualquer coisa próxima disso, então vamos falar de uma coisa mais interessante, o que eu estou fazendo (pelo menos pra min é interessante :).
Primeiramente, decidi em utilizar um engine para jogos, pois caso contrário iria levar no mínimo 2 anos pra fazer uma que funcionasse, e ainda não seria muito boa, pra somente depois começar a desenvolver o jogo. Deste modo, comecei a pesquisar algumas engines em software livre/código aberto. Decidi que iria utilizar a Delta3D, mas depois de praticamente uma semana tentando compilá-la desisti. Depois disto decidi pela CrystalSpace3D (CS) a qual foi fácil fazer funcionar, além disso esta possui uma boa documentação introdutória, a qual está desatualizada, mas quebra um galho pra quem está inciando.
Tal engine possui diversos exemplos que podem ser estudados, modificados e executados imediatamente, além disso, possui capacidade de scripting através da linguagem python e de uma linguagem própria, além disso possui uma biblioteca construída sobre si denominada CEL, esta contém abstrações para facilitar a criação de entidades. Algo que achei bastante interessante quando li e que gostei mais ainda da idéia depois que comecei a ler Programming Game AI by Example.
Apesar de aparentar ser uma boa engine, com suporte a física, detecção de colisões, rede e som (os elementos que preciso pra desenvolver um jogo) possui alguns bugs (que estão sendo trabalhados) e como já disse, como a documentação é introdutória, muitas coisas é difícil de saber como deve ser utilizada, porém a comunidade de desenolvedores é bastante ativa e disposta em ajudar, até já obtive a recomendação de um jogo desenvolvido com a engine que está hospedado no site SourceForge.net, falando nisso, existem vários jogos desenvolvidos com a engine lá, o que é legal, pois pra quem está começando fica mais fácil aprender com pessoas que já têm experiência.
Depois disso, decidi criar uma pista. Não fazia a menor idéia de como fazé-lo, sendo assim a minha primeira idéia foi encontrar uma pista já pronta e encontrei, porém não satisfez as minhas necessidades, pois estava em um formato não suportado pela engine e que só abriria no 3D Studio Max. Deste modo optei por fazer algo utilizando o Blender e fui incentivado pelo pessoal da CS, pois este é o melhor programa suportado pela engine.
Como nunca tinha utilizado o Blender pesquisei na internet como desenvolver uma pista com ele e pra minha surpresa encontrei um ótimo tutorial a respeito. O resultado final que obtive não foi nada profissional, mas para quem não sabia nada de Blender (ainda me bato bastante pra fazer umas coisas simples) fiquei bastante satisfeito, pois pude ver minha pista carregada dentro da engine e até interagir com ela.
Nesta screenshot está a pista dentro do blender:

E esta é uma screenshot da mesma pista dentro da engine:

Como já havia dito, nada profissional, mas consegui criar estas coisas de forma relativamente fácil. Agora que já tenho uma pista (que precisa de alguns ajustes, na verdade são diversos, mas vou fechar o parêntese :) o meu próximo passo é colocar um carro pra andar sozinho aí. Acreditava que isso seria extremamente difícil, mas pelo que estou lendo até agora em Programming Game AI by Example esta não parece uma tarefa muito herculiana e acho que vou me divertir fazendo isso.
Assim que colocar um carro pra rodar aí faço uma nova postagem a respeito. Por hoje é só :D
quarta-feira, 3 de dezembro de 2008
Seam? SIM!
Já fazem mais ou menos 8 meses que estou trabalhando com o framework Seam e também foi neste período que comecei a trabalhar com desenvolvimento web. Apesar de existirem muitas coisas que ainda não funcionam bem, principalmente na parte da visão quando se utiliza o RichFaces, com todo a certeza o Seam é uma ferramenta muito poderosa para desenvolver aplicações web, facilitando muito a vida de quem precisa fazer coisas simples e possibilitando o desenvolvimento de aplicações complexas, desde que se conheça toda a maçaroca necessária para fazê-lo, pois dominar Hibernate, EJB3 e JSF não é uma tarefa fácil.
Apesar do Seam integrar todas as tecnologias citadas acima, é necessário conhecê-las para poder utilizá-las de forma racional e eficiente. No começo não conseguia entender como todas estas tecnologias poderiam me ajudar, agora que já ganhei um certo conhecimento a respeito delas, já começo a imaginar cenários onde elas podem ser úteis.
O lado legal do Seam é que ele permite começar a utilizar tais recursos sem precisar conhecer muito sobre eles, no entanto é muito bom começar entendê-los pois no dia-a-dia sempre aparece alguma coisa estranha a ser resolvida e conhecer estas tecnologias permite resolver coisas complexas sem ter que desenvolver muito, o que é importante. É aquela velha história, você pode até conseguir tirar um parafuso com um alicate, mas seria bem mais fácil com uma chave de fenda, então conhecer uma ferramente nova é sempre um bom negócio, pois quando lhe aparecer um problema o seu arsenal vai ser melhor.
Sendo assim, gostaria de compartilhar alguns livros que me ajudaram a conhecer melhor estas tecnologias. São eles:
Apesar do Seam integrar todas as tecnologias citadas acima, é necessário conhecê-las para poder utilizá-las de forma racional e eficiente. No começo não conseguia entender como todas estas tecnologias poderiam me ajudar, agora que já ganhei um certo conhecimento a respeito delas, já começo a imaginar cenários onde elas podem ser úteis.
O lado legal do Seam é que ele permite começar a utilizar tais recursos sem precisar conhecer muito sobre eles, no entanto é muito bom começar entendê-los pois no dia-a-dia sempre aparece alguma coisa estranha a ser resolvida e conhecer estas tecnologias permite resolver coisas complexas sem ter que desenvolver muito, o que é importante. É aquela velha história, você pode até conseguir tirar um parafuso com um alicate, mas seria bem mais fácil com uma chave de fenda, então conhecer uma ferramente nova é sempre um bom negócio, pois quando lhe aparecer um problema o seu arsenal vai ser melhor.
Sendo assim, gostaria de compartilhar alguns livros que me ajudaram a conhecer melhor estas tecnologias. São eles:
- JBoss Seam Simplicity and Power Beyond Java EE
- Seam in Action
- EJB3 in Action
- Java Persistence with Hibernate
sexta-feira, 7 de novembro de 2008
Google docs poderia importar códigos-fontes.
Seria uma opção interessante e fácil para nós programadores compartilhar-mos trechos úteis de código, ainda mais quando você está querendo explicar algo simples para alguém que está começando a utilizar os mesmo recursos que você.
Ei Google, se tiver me ouvindo, dá uma pensada aí!
Ei Google, se tiver me ouvindo, dá uma pensada aí!
sábado, 25 de outubro de 2008
Ativar particão swap no ubuntu 8.04
Eu gostava muito mais quando o /etc/fstab continha apenas o nome dos volumes. Não faço a menor idéia pq mudaram para UUID, mas a vida é assim mesmo e os caras mudaram, o que eu posso fazer, conviver...
A algum tempo atrás tive que aumentar a minha área de swap. Usei um LiveCD e utilizei o gparted. Beleza, só que agora a swap não era mais encontrada durante o boot.
Entrei na página de manual do swapon e verifiquei que a opção padrão é utilizar swapon -a, o qual vai buscar no arquivo /etc/fstab as unidades. Executei o comando e o bendito disse que não tinha o UUID do swap em /dev/disk/by-uuid. Fui lá e dei um ls, recebi uma listagem com os seguinte arquivos:
Não é uma grande informação, mas fiquei um bom tempo pra realizar essas coisas, sempre ia pelo caminho mais fácil devido a falta de tempo. Mesmo assim, resolvi postar, pois não achei em lugar nenhum informação parecida.
A algum tempo atrás tive que aumentar a minha área de swap. Usei um LiveCD e utilizei o gparted. Beleza, só que agora a swap não era mais encontrada durante o boot.
Entrei na página de manual do swapon e verifiquei que a opção padrão é utilizar swapon -a, o qual vai buscar no arquivo /etc/fstab as unidades. Executei o comando e o bendito disse que não tinha o UUID do swap em /dev/disk/by-uuid. Fui lá e dei um ls, recebi uma listagem com os seguinte arquivos:
- 1CB02BA2B02B80FE
- 3b81a3dd-6685-4605-ad8a-cf92ed560320
- a72b73f5-4472-43a0-9677-738f0159f6b2
- AEB026BEB0268D41
- fa5df5ec-ec0d-48ed-a0f3-9bfbd0d4b726
Não é uma grande informação, mas fiquei um bom tempo pra realizar essas coisas, sempre ia pelo caminho mais fácil devido a falta de tempo. Mesmo assim, resolvi postar, pois não achei em lugar nenhum informação parecida.
sexta-feira, 29 de agosto de 2008
Produtividade no Desenvolvimento de Software
O que você precisa pra ser produtivo ao desenovler software?
Uma boa IDE? Boas ferramentas? Uma boa metodologia?
Nada disso, você precisa conhecer apenas o suficiente para resolver bem o problema. Você pode saber muita coisa sobre uma IDE, sobre ferramentas, sobre metodologias, etc, mas na hora que todo o seu conhecimento não servir para resolver os problemas que você tem sua produtividade irá virar um lixo.
Uma boa IDE? Boas ferramentas? Uma boa metodologia?
Nada disso, você precisa conhecer apenas o suficiente para resolver bem o problema. Você pode saber muita coisa sobre uma IDE, sobre ferramentas, sobre metodologias, etc, mas na hora que todo o seu conhecimento não servir para resolver os problemas que você tem sua produtividade irá virar um lixo.
Assinar:
Postagens (Atom)