Quem sou eu

Minha foto
Programador por profissão, formação e opção! Interessado em tudo relacionado a computadores, menos manutenção de hardware! Linguagens (interesse e trabalho): Java, C#, C/C++, Python, Ruby, Haskell. Atualmente trabalhando como Desenvolvedor (maior parte do tempo em soluções ASP.NET)

domingo, 4 de dezembro de 2011

Desenvolvendo jogos 3d no Linux - Ogre3D

Boas notícias, a Irrlicht compilou sem problemas no Ubuntu 11.10 com minha placa nVidia 8800 GT (não entendeu, veja o post anterior ).

Agora como no mundo não faltam opções decidi testar também a engine Ogre3D.

Essa engine possui uma documentação muito melhor do que a Irrlicht e alguns recursos muito avançados para renderização. Vale a pena citar que isso não é uma comparação pois a Irrlicht é uma "game engine" e a Ogre3D é uma "render engine".

Basicamente com a irrlicht você pega a engine, escreve um pouco de código e têm seu jogo. Na Ogre3D apenas a renderização está pronta todo o resto você precisa plugar na engine, nem mesmo detecção de colisão é embutida.

A instalação da Ogre3d (nos dois equipamentos citados no post anterior) foi muito simples e como você pode imaginar o desempenho foi extremamente diferente porém usável em ambos.

Para instalar, acesse o site da Ogre3d, baixe os fontes para sua plataforma (usei linux).

Depois disso, SIGA os passos para compilar a engine.

Feito isso você deverá ter um executável em: <LOCAL DOS FONTES>/build/bin/SampleBrowser

Basta rodar esse camarada e observar as diversas qualidades da engine. Alguns desses exemplos são pesados ou exigem recursos novos e talvez não rodem muito bem dependo da sua máquina.

Como sempre, qualquer dúvida podem deixar um comentário perguntando que tento ajudar.

segunda-feira, 28 de novembro de 2011

Desenvolvendo jogos 3d no Linux - parte 1

Este post é uma maneira de compartilhar minha felicidade que tive alguns dias atrás ao conseguir compilar com sucesso a engine Irrlicht no Ubuntu 11.10.

Para começo de conversa, a máquina que estou utilizando possui as placas integradas Intel Corporation Mobile GM965/GL960 que não são o top de linha no que diz respeito à aceleração 3d.

Apesar dessa limitação, instalando o mesa-utils e rodando glxinfo o sistema informa que possui renderização direta! O que é um bom sinal pois melhora consideravelmente o desempenho das aplicações gráficas (leia sobre o funcionamento do X e DRI para entender melhor).

Depois de tentar, sem sucesso, instalar e rodar os demos da Crystal Space através dos repositórios do ubuntu, decidi tentar a Irrlicht novamente, meu primeiro contato com essa engine foi à +/- 6 anos atrás quando comecei a faculdade de Ciência da Computação e queria aprender C++ e programar jogos (como praticamente todo estudante de ciência da computação que passou a infância jogando snes/doom/duke nuken/shadow warrior).

Na primeira vez que usei a irrlicht foi indicação de um grande amigo da faculdade (rwrz!) e eu ainda tinha o dual-boot com Windows. Tudo correu sem problemas e instalar/configurar a irrlicht no VS Express foi moleza.

Desta vez, instalar ela no GNU\Linux (Ubuntu 11.10 ou Oneric Ocelot) foi mais fácil ainda.
Bastou achar no site a lista completa de dependências, que por sinal, já veio com os comands apt-get para instalar as mesmas.

sudo apt-get install build-essential xserver-xorg-dev x11proto-xf86vidmode-dev libxxf86vm-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libxext-dev libxcursor-dev

Depois disso foi só baixar a SDK 1.7.2, entrar na pasta source/Irrlicht e dar um make -j 2

Compilou que foi uma beleza, sem erros e quase nenhum warning. Após terminar a compilação para testar tudo bastou entrar no diretório de exemplos, 01.Helloworld e rodar make. Um detalhe, o código de exemplo usa renderização vai software ao invés da OpenGL, foi necessário alterar para utilizar a OpenGL para checar se a aceleração estava OK.

Novamente nenhum erro e como resultado um binário impecável na pasta bin/Linux/.

A medida que avançar nos trabalhos com a Irrlicht vou postando mais informações aqui, a próxima etapa é compilar a engine no Ubuntu 11.04 onde tenho hardware bem mais poderoso (nVidia GForce 8800 GT / Intel Quad-Core)

quinta-feira, 17 de novembro de 2011

Guia Postgres - Alterar dono (owner) da tabela.

Este post é mais um da série de guias que venho fazendo, postando aqui códigos e trechos de códigos que ajudaram a resolver algum problema durante o dia-a-dia do desenvolvedor.

Mas vamos ao que interessa, o trecho abaixo troca o owner de todas as tabelas (do schema public) da sua base de dados postgresql pelo onwer que você informar.

UPDATE pg_class SET relowner = (SELECT oid FROM pg_roles WHERE rolname = '$USER') 
 WHERE relname IN (SELECT relname FROM pg_class, pg_namespace 
                    WHERE pg_namespace.oid = pg_class.relnamespace AND 
                          pg_namespace.nspname = 'public');

*Outro link interessante (youtube)

quinta-feira, 13 de outubro de 2011

Uma notícia muito triste para todos programadores do mundo.

Hoje, assim cheguei em casa e comecei a ler as notícias do dia, vi que um grande gênio da computação deixou de nos fazer companhia.

Dennis MacAlistair Ritchie, também conhecido como Dennis Ritchie (dmr) ou pai do UNIX faleceu no final de semana passado.
A notícia foi dada pelo site G1 e também pelo amigo dele Rob Pike.

Dennis juntamente com Ken Thompson trabalharam muitos anos na Bell Labs desenvolvendo tecnologias que permeiam nossas vidas até a data presente. Uma delas o belo sistema UNIX que acabou gerando diversas variantes e sendo base para os sistemas mais avançados existentes atualmente foi criado por Dennis.

O UNIX serviu de inspiração para o sistema GNU\Linux e no BSD que por sua vez foi a base dos sistemas que rodam nos computadores da Apple (Mac OS)

Além disso, Dennis também criou a linguagem C provavelmente uma das melhores e mais simples linguagens já criada. A filosofia UNIX de manter as ferramentas simples e bem feitas, as vezes citado como: "Do one thing and do it well" (Faça uma coise e faça bem feito).

O sistema UNIX é uma das peças que tornou possível o que conhecemos hoje como a Internet e que dependemos para praticamente tudo (transações financeiras, compras on-line, conversas e video conferências, etc).

Espero que o Mundo posso entender o alcance das mudanças provocadas por esse hacker e gênio da computação.

Da próxima vez que você acessar a internet ou abrir um aplicativo em seu computador/celular/notebook/geladeira/televisão/carro lembre-se que se não fosse pelo UNIX e pela linguagem C você provavelmente iria estar assistindo TV ou ouvindo Rádio.

Descanse em paz, Dennis Ritchie.

RIP dmr, my sincere condolences to his family and friends.

Notícia do G1 sobre a morte de Dennis Ritchie

Post do Rob Pike (amigo de Ritchie) sobre o falecimento do mesmo.

quarta-feira, 15 de junho de 2011

Guia prático do VIM - Removendo search highlight

Essa dica vai para quem gosta de destacar as buscas de strings no VIM, porém fica irritado quando entra em modo de inserção e os trechos encontrados continuam em destaque.

"" Clean the hlsearch when entering/leaving insert mode.
set hlsearch
autocmd VimEnter * :let @/=""
autocmd InsertEnter * :noh
autocmd InsertLeave * :noh

Referência http://superuser.com/questions/156248/disable-set-hlsearch-when-i-enter-insert-mode.

O event VimEnter descobri lendo um pouco da documentação do VIM, disponível no próprio VIM ou então em: http://vimdoc.sourceforge.net/htmldoc/autocmd.html#autocmd-events

sábado, 30 de abril de 2011

Notificação via linha de comando no Ubuntu

Procurando uma maneira de se avisado quando meus downloads com o wget terminassem, achei esse site.
O script python é muito simples, porém quebra um galho.
Sem contar que existe o comando notify-send que facilita ainda mais a vida.
O link da postagem é: http://ubuntu.online02.com/node/30
E só para garantir que o texto vai continuar disponível caso o blog do camarada feche, segue a cópia literal do mesmo:
#!/usr/bin/env python

import pynotify
import sys
from optparse import OptionParser

class NotifyCallerID:
 def __init__(self):
  if not pynotify.init("Caller ID"):
      sys.exit(-1)

  parser = OptionParser()
  parser.add_option("-b", "--body", dest="body", help="Body of Alert", metavar="FILE")
  parser.add_option("-t", "--title", dest="title", help="Title of Alert", metavar="FILE")
  parser.add_option("-i", "--icon", dest="icon", help="Path to Icon File", metavar="FILE")

  (o, args) = parser.parse_args()

  self.showNotification(o.title,o.body,o.icon)

 def showNotification(self, summary, message, ikon):
  if summary == None: summary = " "  
  n = pynotify.Notification(summary, message, ikon)
  n.show()

cm = NotifyCallerID()

HotLink - Configurando rede no ubuntu

Esta postagem e a primeira de um grupo que irá agregar diversos links que vou encontrando durante minhas pesquisas na internet.

Abaixo está um lista de links interessantes sobre configuração de rede e afins.


domingo, 6 de março de 2011

Instalar LX300 no Ubuntu 10.10

Essa dica é para quem possui uma LX-300 e deseja instalar ela no Ubuntu 10.10.

No meu caso utilizo um adaptador "PARALELA-USB" pois meu PC não possui nenhuma entrada Paralela, sendo assim a impressora é reconhecida como um dispositivo USB desconhecido.

Depois de ligar a impressora vá até a central de impressão e peça para adicionar uma impressora.

Feito isso o Ubuntu irá mostrar na lista de impressoras que ele encontrou sua impressora (no meu caso unknown).

Quando ele solicitar o driver para a impressora, selecione a opção para "Fornecer arquivo PPD".

Baixe o PPD da LX-300 desse endereço e sua impressora estará configurada, imprima uma página de teste para garantir que tudo está OK.

Achei qual driver deveria baixar nesta lista de discussão: http://listas.ufg.br/pipermail/geral/2004-June/007000.html. Não conheço o camarada mas estou muito agradecido ao mesmo! :)

Boa sorte com a instalação (pode ser problemática...) e qualquer coisa podem deixar comentários que tento ajudar no que for possível.

Abraço,

Abaixo separei dois links importantes que encontrei nessa caçada:

terça-feira, 1 de março de 2011

Pequeno Guia do Mochileiro do PostgreSQL

Este é o pequeno guia de que contém informações uteis para trabalhar com o PostgreSQL
  • Trocar a senha do usuário (postgres):

    Abra o arquivo de configuração pg_hba.conf e inclua a linha local all all trust.

    Depois disso abra o terminal (ou prompt do windows) e rode o comando:

    psql -U postgres

    Informe a senha antiga e rode o comando:

    USER postgres WITH PASSWORD 'nova_senha';

    Caso seja necessário altere o pg_hba.conf e reinicie o serviço. Essa dica foi copiada do site: http://www.hades.com.br/forum/viewtopic.php?id=351.

sábado, 8 de janeiro de 2011

Guia prático do VIM

No dia a dia, quando estou longe das práticas e full-featured IDE's, encontro refúgio em um dos melhores editores que existe, o vim.
Claro que se você utiliza emacs você irá descordar de corpo e alma da afirmação acima, porém não estou para discutir quem é melhor, apenas para listar algumas dicas que vou acumulando com o tempo e utilização do vim.

Veja abaixo a lista de comandos que utilizo no dia-a-dia.
Importante: O que deve ser digitado está destacado desta maneira. Estes trechos (exceto quando explicitado o contrário) nunca possuem um espaço a esquerda.

Editar um arquivo
Basta pressionar ESC e digitar : caminho/do/arquivo/desejado.txt. O vim é tão esperto que se você pressionar TAB ele vai alternando entre os diretórios/arquivos contidos no diretório corrente (aquele de onde você invocou o vim)
Desfazer/Refazer uma alteração
Esse é para quando você aquela alteração e viu que fez besteira. Basta sair do modo de edição (pressione ESC) e pressione u e para refazer uma alteração pressione Ctrl-R