Um Manifesto! | Programação, web, banco de dados e muito desenvolvimento.
#JS13KGames, #gamedev e o jogo de desenvolver jogos
Acho que quase todo nerd de programação já deve ter pensado em desenvolver um jogo (se já não desenvolveu ou até trabalha com isso), eu não sou exceção.
Gamedev fun!
Ano passado conheci o js13kGames, um desafio e competição, com prêmios, em que o objetivo é desenvolver em um mês um jogo usando apenas javascript e web em 13kb. Muito legal! Uma ótima chance de "brincar" de gamedev para quem já trabalha com web e com o incentivo de uma competição leve. Ainda ganhei um blusa!
Recomendo a todos que tem essa curiosidade, foi uma experiência bem legal e aprendi bastante fazendo isso e farei novamente esse ano.
Outras fontes de inspiração você pode achar no Compohub, que agrega competições, jams e desafios que estão acontecendo na web sobre gamedev. Um muito legal é o projeto One game a month, que como um rpg te da achievments e rewards se conseguir realmente manter um ritmo de um jogo simples por mês… mas eu só consegui fazer dois.
Enfim, fazer games é divertido, recomendo! Em próximos posts falo sobre o desenvolvimento em si :-)
Publicado em Gamedev
Dev env as code: Vagrant up
Quem trabalha com muitas tecnologias em diferentes projetos, ou mantém diversos projetos para plataformas diferentes com certeza já passou por isso: Como manter diversos ambientes de desenvolvimento na mesma maquina? Ou mesmo como reconstruir "aquele" projeto mais antigo? Para isso e para o clássico do garoto novo na empresa ter que configurar um ambiente novo ou quando você mesmo troca de maquina, temos o Vagrant!
Vagrant é uma camada de abstração para o ambiente de desenvolvimento. Ele permite definir o ambiente de dev do projeto através de um arquivo de configuração, o Vagrantfile, que passa a ser parte do código da aplicação, logo entrando para o controle de versão, distribuição e tudo mais. A partir desse arquivo o vagrant é capaz de criar uma maquina virtual com todo o ambiente pronto.
Algumas vantagens de usar essa abordagem:
Ambiente faz parte do código do projeto
Ambiente fica documentado
Portabilidade (mesma VM no linux, windows e mac)
Maior proximidade do ambiente de produção/homologação
Maior isolamento entre os ambientes de diversos projetos
Testar projetos distribuídos
Meus dois principais use-cases foram para permitir a quem entrar novo no time ter o ambiente pronto rapidamente, e de manter os ambientes isolados (tenho apps em php, clojure, ruby 1.9, ruby 2.1, etc…) sem afetar uma a outra.
Para usar o vagrant é simples:
Primeiro instale um virtualizador (como o virtualbox) e o vagrant no seu sistema.
Em seguida, no projeto, rode o comando "vagrant init", ele vai criar um arquivo Vagrantfile de exemplo com comentários sobre como configurar sua maquina virtual. Tendo um Vagrantfile no projeto basta executar o "Vagrant up" para subir e configurar a maquina virtual. Com a maquina no ar você pode então executar "vagrant ssh" para ter acesso a ela e ir a pasta /vagrant, a qual é compartilhada com o projeto em si.
$ vagrant init # cria um vagrantfile
$ vagrant up # inicia uma maquina virtual
$ vagrant ssh # acessa a maquina virtual
$ vagrant halt # desliga a maquina virtual
Algumas configurações importantes:
Deve-se definir a máquina base usando, por exemplo:
Além disso você pode buscar no vagrant cloud por várias máquinas já prontas, pode ser que a você precisa já esteja lá.
Usando a diretiva de rede no Vagrantfile a maquina virtual fica disponível nesse IP, assim como ganha uma rede interna para todas as vms poderem se acessar:
O mais importante do vagrant é a capacidade de provisionamento do ambiente, ou seja, instalar e configurar as dependências da sua aplicação de forma simples e automatizada, usando as ferramentas mais comuns de devops:
Pode até combinar eles, exemplo:
config.vm.provision "shell", :inline "apt-get install apache2 php5"
config.vm.provision "shell", :path "config.sh"
Temos também alguns plugins interessantes.
Concluindo, com um Vagrantfile no projeto você garante que o ambiente desse projeto está a um "vagrant up" de distância. Embora o tempo para instalar e configurar a maquina inicialmente demore um pouco (afinal está configurando uma maquina totalmente nova), o isolamento e a certeza de ter um ambiente uniforme valem a pena.
Em um próximo texto faço também alguns exemplos de configurações para os ambientes mais comuns.
Publicado em devops, Geral, Programação
Novos projetos: FastChat e Semaphore.js
Sempre curti micro-projetos úteis e reutilizáveis, principalmente widgets.
Bom, para o projeto que estou trabalhando vi a necessidade de dois widgets que imaginei que seria legal de reutilizar, e eis o resultado deles (ainda em desenvolvimento):
Semaphore.js
Um mini widget em javascript que apenas indica o status do servidor através de um semáforo.
Através de um url configurada do widget ele indica se o servidor está online, lento ou offline. É bem útil para aplicações totalmente em ajax, principalmente quando se depende de servidores instáveis ou serviços de terceiros. Permite ainda algumas integrações para cada estado.
Consiste apenas em um pequeno arquivo javascript.
Esse é mais legal! É um widget de bate-papo que basta carregar um pequeno javascript sem dependências e está pronto o chat!
Foi feito com um servidor em clojure, usando redis e javascript simples para o widget. Pode-se usar css para customizar a UI padrão, grava um histórico, possui uma "janela" por usuário, lista de onlines e etc.
Bom, é isso, o semaphore.js eu já usei em mais de um projeto e o fastchat ainda está em teste no projeto principal, mas acho que promete bastante.
Publicado em Banco de dados e "NoSQL", Javascript, Programação, Programação Funcional
Manifesto de volta, e com wordpress agora!
Publicado em 13 de novembro de 2011 por admin
Faz muito tempo que não dou atenção a este blog, mas pretendo voltar agora, sem promessas apenas vontade.
A novidade é que migrei do joomla(já muito desatualizado que estava, mesmo para um joomla) para o wordpress, migração tranquila com um pouco de sql e todo o conteúdo estava portado, e junto com um 301 na antiga pasta está tudo ok! (eu acho…)
E para quem acompanhava: meu feed antigo está morto :/ é preciso assinar o novo, se o conteúdo ainda interessar.
Aproveitei e atualizei tudo que tinha nesse servidor, que era outro wordpress e outro joomla e uns aplicativos perdidos. Os aplicativos eu removi, ficou apenas o que era estático (documentações, uns hotsites…) e o wordpress eu atualizei.
O outro joomla que roda aqui é um problema, antigo e meio complicado de dar manutenção. Tenho que ver o que fazer com ele, não pode ficar assim.
De resto, I am back!
Redis e PHP: Who is online?
Publicado em 4 de maio de 2011 por
Em um micro projeto precisei manter uma lista de usuários online, são usuários de várias fontes em conexões não persistentes, então fiz uma solução simples em PHP e Redis.
Primeiro você precisa conhecer o Redis e te-lo rodando, o que é bem simples:
Com o redis funcionando vamos usar a biblioteca Predis para trabalhar com Redis em PHP, pegue uma cópia atual e prepare o Phar do projeto:
$ cd predis
$ php bin/createPhar.php
$ mv predis-*.phar seu/projeto/predis.phar
Com as dependências prontas vamos a lógica para os usuários online: Vou implementar um método "ping" em um controller qualquer, a cada ação do usuário uma chamada ao "ping" vai ocorrer.
A cada ping o nome do usuário vai ser inserido em um "set" no redis, vou ter um "set" para cada minuto, mas usando "expire" só vou manter os sets dos ultimos 5 minutos.
Para descobrir os usuários online faço "sunion" dos ultimos 5 minutos para saber quem está online. Você pode ajustar o tempo como achar mais justo para sua aplicação.
Segue o "pseudo-controller", devidamente comentado (no projeto é meio diferente, mas a base é essa):
PS: o Predis é para PHP 5.3, o que não deve ser um problema, certo?
Publicado em PHP	| 1 Resposta
Publicado em 31 de janeiro de 2011 por
Ae, o @gserrano descreveu seu ambiente de trabalho em 7 itens e me convidou para o meme, estão vou descrever meu ambiente de trabalho em 7 itens também:
0. Mesão
É, eu gosto de uma mesa grande, com espaço, com papel e caneta para rabiscar ideias. Espaço, espaço eu preciso de espaço! É o zero porque o meme fala sobre o ambiente virtual apenas :)
1. Opera e Firefox
Para navegação cotidiana, testes, e-mails e etc eu uso Opera. Acho o navegador muito ágil e o sincronismo de tudo desde de bookmarks até histórico e notas bem ajuda. O firefox só quando mexo com Javascript mesmo, ai entra o Firebug.
2. Rhythmbox/celular
Rhythmbox é o player de música no Ubuntu, quando não estou em casa uso o celular mesmo. Música é essencial! Do Punk ao Metal! Oh Yeah \o/
Controle de versão é com Git sempre, e se for possível no Github.
Meu editor de escolha, seus atalhos no teclado "rulez".
Vários utilitários, buscas em arquivos, testes e scripts sempre úteis!
6. SSH/screen/servidores e mais vi
Sempre tem um par de servidores remotos para testar as aplicações e fazer homologações também, além de brincadeiras de qualquer tipo e quando uma banda descente vem a ser necessária.
Agora convidar outros, certo? Vou chamar um pessoal variado também: O #dev companheiro de trabalho @pedromenezes, o #dev companheiro de #cparty @shdo, o designer @richardbarros (para reviver seu blog!) e o sysadmin @ebastos.
Campus Party – Eu fui!
Publicado em 24 de janeiro de 2011 por
Fui na Campus Party Brasil 2011, e foi incrível! Podem ler o que achei no blog (não técnico, mais pessoal) Não Me Digam! na categoria Campus Party.