Maio archive

25
Mai

Dia da Toalha

Hoje dia 25 de maio é oficialmente o 'Dia da Toalha'. Um dia onde todos os mochileiros em todo universo homenageiam um dos maiores autores de ficção científica: Douglas Adams, escritor da série 'O Mochileiro das Galáxias'.



Segundo 'O Guia dos Mochileiros das Galáxias', a toalha é uma ferramenta essencial para um mochileiro, afinal é possível usar uma toalha como agasalho, cobertor, vela para uma jangada, entre outras funções. Ah, e úmida uma toalha vira uma ótima arma para lutas corpo a corpo.



Eu como um bom mochileiro levo sempre minha toalha e 'o guia' em minha mochila.

21
Mai

I GamesulMT

Dia 28/06/2008 será o primeiro GamesulMT (Encontro Acadêmico de Desenvolvimento de Jogos do Sul de Mato Grosso) que acontecerá na UNIR/FAIR (http://www.unir-roo.br).



O evento contará com 4 palestras e 3 mini-cursos, lembrando que as palestras são gratuitas e os mini-cursos custam R$ 15,00:



Palestras:


Projeto de jogos na UFMT - Leandro Machado, Msc. Mara Dota, Msc. Soraia Prietch

Projeto de jogos na UFMT - Modelagem de Jogos - Gustavo Xavier Santana

Desenvolvimento de jogos computacionais utilizando Software Livre - João Mendes de Oliveira Neto

Desenvolvendo jogos e maneira rápida, fácil e indolor com Python - Bel. Andrews Patrick Rocha Medina



Mini-cursos:


Desenvolvimento de um jogo do início ao fim em 6 horas - Bel. Andrews Patrick Rocha Medina

Desenvolvendo jogos usando a API ALLEGRO - João Mendes de Oliveira Neto

Treinamento Básico em GIMP - Isis e Itamar



Como podem ver vou marcar presença com uma palestra e um mini-curso. Na palestra falarei como o Python e suas apis e frameworks podem auxiliar no desenvolvimento de jogos tornando o desenvolvimento de jogos ágil, fácil e totalmente indolor. E vou comprovar essa agilidade, facilidade nomini-curso que terá o propósito de desenvolver um jogo em 6 horas, mostrando a parte do Game Design, do design e desenvolvimento do jogo. E o jogo não será um pong.



Para quem acha o desafio de desenvolver um jogo em 6 horas algo impossível, eu e a equipe do OLPyC no FISL desenvolvemos um jogo para XO em 6 horas mal programadas, provando mais uma vez que Python pode fazer diferença também no desenvolvimento de jogos.



O evento começará as 8h da manhã, espero ver todos lá.

20
Mai

Lançado o pre-alpha do babelwiki

Na madrugada do dia 19 eu lancei a versão pré-alpha do babelwiki

Para quem não sabe, o babelwiki é um wiki com o objetivo de facilitar a tradução de documentos compridos que eu estou fazendo usando o Django e o Google App Engine.



A idéia do projeto veio da dificuldade em que há em traduzir-se documentos com muito volume de texto como manuais, tutoriais e etc. Um grande exemplo de umprojeto que está tendo esta dificuldade é a tradução da documentação do Django para português. A documentação em inglês é muito boa, mas cada página é enorme.



Atualmente nas traduções de documentos assim, cada colaborador fica responsável por cada página. Mas, como as páginas são grandes, a tradução acaba lenta eentediante.



A solução foi inspirada numa aplicação não opensource voltara para textos comuns o traduwiki.org. Que quebra um texto em parágrafos permitindo que as pessoas sugiram as traduções parágrafo por parágrafo. O babelwiki é inspirado no traduwiki.org más trás coisas adicionais, como suporte a linguagens de markup, exportação do original e da tradução entre outras coisas voltadas relacionada com a tradução de documentação de projetos opensource.



Ainda falta várias coisas para o projeto ficar completo, mas ele já pode ser testado através do endereço: http://andrews.appspot.com/



E se você quiser reportar algum erro, abrir alguma issue, sugerir alguma feature, enviar algum patch ou só ver o código mesmo. O endereço do projeto com seu código-fonte é: http://code.google.com/p/babelwiki/

08
Mai

Lançadas a versões 2.6a3 e 3.0a5

Só anunciando que foram lançados novas versões alpha do Python 2.6 e doPython 3. As novidades dessa versão para o Python 2.6 pode ser vista aqui e do Python 3 aqui.

As próximas versões já serão beta!

E para instalar essas versões sem afetar a versão do seu sistema você pode seguir uma receita que postei aqui ou usando o virtualenv.
06
Mai

Converter objetos em JSON no Javascript

JSON (JavaScript Object Notation) é um formato simples de transferir dados. Sendo fácil para escrita e leitura por seres-humanos.

Converter uma string JSON em objetos no Javascript é bem simples, basta usarmos o eval:


//string que receberá a string com os dados no formato JSON

json_string = '[{"first_name":"Andrews","last_name":"Medina"},{"first_name":"José","last_name":"Carlos"}]';

//convertendo a string em objetos com o eval

person_list = eval(json_string);

//exibindo o primeiro nome do primeiro item da lista

//o resultado deverá ser o nome Andrews

alert(person_list[0].first_name);


Mas converter um objeto em JSON no Javascript para passar para o servidor como texto é diferente. Para realizar esta tarefa eu achei um scriptna página oficial do JSON , que converte um objeto em um string no formado JSON. Usar esse script é bem simples, basta passar seu objeto ou um vetor (array) de objetos como parâmetros para o método  JSON.stringify:


//criando o objeto Person

function Person(first_name, last_name){

    this.first_name = first_name;

    this.last_name = last_name;

}

//criando a lista que será a nossa lista de pessoas

person_list = new Array();

//adicionando uma pessoa

person_list.push(new Person('Andrews', 'Medina'));

//adicionando outra pessoa

person_list.push(new Person('José', 'Carlos'));

//convertendo a lista de objetos Person em JSON.

//O resultado deverá ser semelhante a linha abaixo:

//[{"first_name":"Andrews","last_name":"Medina"},{"first_name":"José","last_name":"Carlos"}]

alert(JSON.stringify(person_list));


Agora é só usar conforme o seu gosto!
06
Mai

Como utilizar várias versões do Django

Uma dúvida de muitos programadores que começam a utilizar o Django é saber qual versão instalar.

A maior dúvida está na escolha de uma entra as três versões: 0.96.1, 0.97-pre (a versão de desenvolvimento) e o branch newforms-admin.

Muitos a primeira vista escolhem a versão 0.96.1 por ser uma versão estável e fechada. Mas eu acho isso um excesso de zelo.

Desde que a versão 0.96.1 foi lançada foi adicionado muita coisa na versão em desenvolvimento (0.97-pre), contendo assim muito mais funcionalidades importantes:


  • Unicode por padrão

  • Autoself

  • Newforms muito mais maduro e poderoso e a adição do ModelForms

  • TestClient

  • Herança de models e muito mais poder nas query's com a adição do branch queryset-refactor

  • Novos contribs


Como podem ver utilizar a versão em desenvolvimento pode trazer muitas vantagens.

Outro fator a se considerar é que tudo antes de entrar na versão em desenvolvimento é discutido, analizado e depois aceito, trazendo uma certa estabilidade.

Por outro lado temos ainda o branch do newforms-admin, que já está finalizado mais ainda não foi feito a junção dele com a versão em desenvolvimento.

Nesse branch o admin foi refeito utilizando o newforms e algumas filosofias do admin foram alteradas deixando muito mais fácil de customizar e modificar as views de um respectivo model no admin.

Como o newforms-admin tem tudo que a versão em desenvolvimento tem adicionando o novo admin, você pode me perguntar:

"Eu tenho projetos já pronto utilizando a versão em desenvolvimento do Django, gostaria de manter ela para os atuais projetos mais utilizar o branch do newforms-admin para os projetos futuros. É possível?"

A resposta é: Sim! Na verdade esse é o titulo desse post.

Existe um script em Python disponibilizado no djangosnippets.org que permite que de uma maneira simples você alterne entre as versão do Django de acordo com a sua necessidade. Esse script não faz nada mais do que adicionar a versão selecionada ao PYTHONPATH. E quando já existe alguma no PYTHONPATH ele a sobrescreve, ficando apenas a atual.

Para isso baixe a versão em desenvolvimento do Django:

svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk

PS: não faça o link simbólico para o site-packages como é indicado na documentação, porque quem fará isso será o script que vamos utilizar.

Baixe também o branch do newforms-admin:

svn co http://code.djangoproject.com/svn/django/branches/newforms-admin/ newforms-admin

E salve o arquivo do script que faz a troca entre as versões que pode ser baixado aqui, como chdjango.py

A sua sintaxe é: python chdjango.py diretorio_do_django

Seguindo isso para adicionar a versão em desenvolvimento ao PYTHONPATH:

$sudo python chdjango.py django-trunk


E para remover a versão em desenvolvimento e adicionar o branch do newforms-admin ao PYTHONPATH:

$sudo python chdjango.py newforms-admin


Agora você pode utilizar várias versões do Django em seu computador de acordo com seu gosto!

Lembrando, se você começou um projeto em uma versão é recomendado que termine esse projeto nessa mesma versão.
02
Mai

Curso de Python na UFMT - aulas finais



Nos dias 13/4 e 27/04 eu ministrei as últimas aulas do curso gratuito de Python na UFMT em Rondonópolis.

Nessas duas últimas aulas mostrei uma visão geral sobre a API do PyGame e desenvolvemos um jogo simples juntos. O jogo foi uma versão do clássico Pong.


O interessante foi que entre essas duas aulas eu fui para o FISL e lá  participei do desenvolvimento de um jogo para o GameJam. A experiência que tive nessa competição me motivou muito a estudar mais sobre o desenvolvimento de jogos e me mostrou que não basta apenas programar, tem que conhecer um pouco sobre técnicas específicas de desenvolvimento de jogos para desenvolver um bom jogo. Mas falarei em um outro post sobre a minha ida ao FISL e sobre o GameJam.


Foi muito interessante mostrar para o pessoal passo a passo do desenvolvimento de um jogo, desde a criação do laço de repetição infinito do jogo até a manipulação dos eventos. E o mais interessante foi ver que quase todos conseguiram fazer o Pong em Python em algumas horas.

Pena que as aulas acabaram por aqui, mas espero que todos tenham gostado.

Vou deixar aqui um arquivo em pdf da apresentação da penúltima aula e o arquivo .py do jogo feito em algumas horas na última aula.