Este aqui é um vídeo de um pequeno jogo que estou desenvolvendo usando SDL e C. Enquanto desenvolvo o jogo vou aprendendo um pouco dos dois.
É um jogo no estilo side-scroller, 2D daqueles que para quem viveu a fase de videogames como Super-Nes e Mega Drive vai trazer algumas boas lembranças! Mas ainda falta muita coisa para ser feita.
segunda-feira, 26 de março de 2012
sexta-feira, 23 de março de 2012
Simular o comando stash do git no svn
O programa de controle de versão git tem um comando muito útil chamado stash. Ele permite que você "coloque de lado" as alterações não persistidas. É muito útil quando por exemplo você está trabalhando em alguma alteração profunda na base de código e uma alteração rápida para corrigir um bug surge. O que você faz neste caso? Você não vai querer perder as alterações já feitas, mas para corrigir o bug você precisa de uma versão "limpa" do código. Uma solução seria obter o código novamente do programa de controle de versão e corrigir o bug neste novo checkout, o que é muito trabalhoso e dependendo do tamanho de sua base de código pode tomar muito tempo. É aí que o comando stash entra, você coloca suas alterações na "espera", corrige o bug e depois traz novamente todas as alterações iniciais.
Agora como dar um stash no svn? O svn não tem o comando stash, mas podemos simulá-lo usando outros comandos. Primeiro nós precisamos criar um patch com todas as alterações feitas. Na raiz de seu diretório execute o seguinte comando:
svn diff > nome_patch.patch
Um patch nada mais é do que um arquivo que contem as alterações feitas em um ou mais arquivos. O comando diff cria exatamente isso. Se você abrir o arquivo nome_patch.patch em um editor de texto vai ver várias linhas com sinais de + ou - indicando linhas adicionadas ou removidas.
Antes de fazer o diff adicione os novos arquivos criados (com o comando svn add nome_arquivo) se você quiser que eles sejam enviados para o patch. Após isso você pode executar o seguinte comando:
svn revert -R .
Este comando vai desfazer todas as alterações feitas nos arquivos em todos os diretórios do projeto. Quando você quiser retornar todas as alterações feitas você deve executar o seguinte comando:
patch -p0 < nome_patch.patch
Lembrem-se de executar os comando de criação e restauração do patch no mesmo diretório e de preferência que seja o diretório raiz.
Pronto agora todas as alterações devem estar de volta!
Agora como dar um stash no svn? O svn não tem o comando stash, mas podemos simulá-lo usando outros comandos. Primeiro nós precisamos criar um patch com todas as alterações feitas. Na raiz de seu diretório execute o seguinte comando:
svn diff > nome_patch.patch
Um patch nada mais é do que um arquivo que contem as alterações feitas em um ou mais arquivos. O comando diff cria exatamente isso. Se você abrir o arquivo nome_patch.patch em um editor de texto vai ver várias linhas com sinais de + ou - indicando linhas adicionadas ou removidas.
Antes de fazer o diff adicione os novos arquivos criados (com o comando svn add nome_arquivo) se você quiser que eles sejam enviados para o patch. Após isso você pode executar o seguinte comando:
svn revert -R .
Este comando vai desfazer todas as alterações feitas nos arquivos em todos os diretórios do projeto. Quando você quiser retornar todas as alterações feitas você deve executar o seguinte comando:
patch -p0 < nome_patch.patch
Lembrem-se de executar os comando de criação e restauração do patch no mesmo diretório e de preferência que seja o diretório raiz.
Pronto agora todas as alterações devem estar de volta!
segunda-feira, 5 de março de 2012
Fazer download de arquivos via Ajax
Na verdade o método que vou mencionar aqui não usa ajax. Mas permite que sejam enviadas requisições do tipo post ou get e que a partir destas requisições seja possível fazer um download de um arquivo.
A ideia não é minha e todos os créditos vão para o autor deste post. A implementação é bem simples e o truque usado é no mínimo inteligente. A requisição é enviada através de um form criado em tempo de execução, basta que o servidor que recebeu a requisição responda com o download do arquivo (em PHP geralmente é usada a função readfile). Ao invés de uma requisição ajax o browser envia uma requisição de form via post ou get conforme definido na chamada da função no parâmetro method. O autor criou a função na forma de um plugin jQuery, aqui está o código:
O uso é bem simples:
$.download('./url_download.php','parametro_1=valor_1¶metro_2=' + valor_2 );
Aqui está o projeto github do plugin. É isso aí até a próxima.
A ideia não é minha e todos os créditos vão para o autor deste post. A implementação é bem simples e o truque usado é no mínimo inteligente. A requisição é enviada através de um form criado em tempo de execução, basta que o servidor que recebeu a requisição responda com o download do arquivo (em PHP geralmente é usada a função readfile). Ao invés de uma requisição ajax o browser envia uma requisição de form via post ou get conforme definido na chamada da função no parâmetro method. O autor criou a função na forma de um plugin jQuery, aqui está o código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* -------------------------------------------------------------------- | |
* jQuery-Plugin - $.download - allows for simple get/post requests for files | |
* by Scott Jehl, scott@filamentgroup.com | |
* http://www.filamentgroup.com | |
* reference article: http://www.filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/ | |
* Copyright (c) 2008 Filament Group, Inc | |
* Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses. | |
* -------------------------------------------------------------------- | |
*/ | |
jQuery.download = function(url, data, method){ | |
//url and data options required | |
if( url && data ){ | |
//data can be string of parameters or array/object | |
data = typeof data == 'string' ? data : jQuery.param(data); | |
//split params into form inputs | |
var inputs = ''; | |
jQuery.each(data.split('&'), function(){ | |
var pair = this.split('='); | |
inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; | |
}); | |
//send request | |
jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>') | |
.appendTo('body').submit().remove(); | |
}; | |
}; |
O uso é bem simples:
$.download('./url_download.php','parametro_1=valor_1¶metro_2=' + valor_2 );
Aqui está o projeto github do plugin. É isso aí até a próxima.
sexta-feira, 2 de março de 2012
E aqui está a nova versão PHP
Acabou de ser lançada a nova versão PHP. O anúncio pode ser visto aqui. Várias correções de bugs, melhoras no uso de memória e algumas coisas adicionais. Seu código está preparado para esta nova versão?
Assinar:
Postagens (Atom)