Script de deploy para projetos que usam git

Há alguns meses atrás desenvolvi um script de deploy para um projeto em que estou trabalhando. Com o tempo vi a possibilidade de melhorar alguns pontos, especialmente com o uso do componente Console do Symfony2,  e agora disponibilizo uma versão pública que pode ser usada com projetos armazenados em um repositório git.

https://github.com/straube/deploy

Uma das limitações dessa versão é que ela trabalha apenas com SSH, mas em breve devo adicionar suporte a FTP.

Usando os comandos do Symfony2 isolados

Um componente muito útil do Symfony2 é o Console. Ele permite a criação de comandos que podem ser executados via terminal. Isso é muito útil para processos relacionados à manutenção do sistema e àqueles que devem estar na crontab, por exemplo. Assim como os demais componentes do framework, o Console pode ser usado isolado e isso é muito interessante para quando é necessário fazer uma aplicação que deve ser executada via linha de comando.

Para facilitar a criação de um aplicação baseada nesse componente, criei um projeto base no GitHub: https://github.com/straube/base-command. No README existem algumas instruções de como executar e customizar o código, mas ele basicamente adiciona, além do próprio Console, o registro automático de comandos dentro de um namespace específico através do componente Finder, também do Symfony2.

Simple Gallery — Uma simples galeria baseada em jQuery

Na maioria dos projetos que desenvolvemos na CodeKings, acabamos não conseguindo usar as opções de galerias disponíveis na web. Isso acontece porque a estrutura do plugin não é compatível com o layout ou faz muito mais coisas do que realmente precisamos. Nesses casos, acabamos escrevendo um script simples que resolve mais rapidamente do que se tivermos que adaptar alguma solução pronta. Com o tempo, percebi que esse script não mudava muito de um projeto para outro, então resolvi escrever uma versão genérica que é bem simples de customizar.

Publiquei o projeto no GitHub: https://github.com/straube/simple-gallery.

Mac OS X and Java 1.6, keyboard input

Few months ago, after I updated (via Apple’s software update) my Java from 1.5 to 1.6, some applications started to have a strange behavior: the input by keyboard simply didn’t work as expected. Some keys, like return and shift, does work, but all letters and numbers not.

Only in the past week I’ve discovered why. The problem wasn’t with the Java version, like I thought, but with the keyboard layout. As I’m brazilian, I’m using the US International layout by Rainer Brockerhoff. Googling about this issue, I found that some custom keyboard layout doesn’t work correctly with recent Java versions.

Now I’m using the Mac’s native layout for Brazil. The bad thing is that I have to make the accentuation using option + some key. e.g., option + e to make the acute accent (´).

Retrieving an hierarchical tree recursively with PL/PgSQL

From PostgreSQL 8.4 you can write WITH queries using the optional RECURSIVE modifier to make a query refer to its own output.

Ok, but if I’m using a previous version of PostgreSQL? What can I do? I had this same question and, after some research, I found a solution based on functions.

Below I’ll explain how the functions works. Continue reading “Retrieving an hierarchical tree recursively with PL/PgSQL”

PHP strtr alternative for an UTF-8 enviroment

The PHP strtr function replaces characters in a list by characters in a second list. The expected behaviour for that function in any enviroment is the following:

$from = '12345';
$to = 'ABCDE';
$str = 'I have 2 monkeys and just 1 dog';
echo strtr($str, $from, $to); // Prints 'I have B monkeys and just A dog';

But when using an UTF-8 encoded script, some unexpected character replacement can happen, because the strtr function always expect a string where the characters takes 1 byte each. But in the case of UTF-8, each char holds 2 bytes. So the split truncates.
Continue reading “PHP strtr alternative for an UTF-8 enviroment”