You're settling for good when there's awesome.  Upgrade to Firefox 3.6!

Quem já viu o TextMate sabe o quanto ele é simples e prático para desenvolver em algumas linguagens devido os bundles e snippets que ele suporta. Bem, o gedit também dá suporte a estes a partir de plugins desenvolvidos por terceiros.

O GMate é uma tentativa de deixar o gedit parecido com o TextMate focando no desenvolvimento Ruby/Rails, pelo menos até o momento. Mas após instalá-lo, você poderá incrementar o suporte a outras linguagens também.

Há duas formas de instalar esse pacote: via apt-get; ou, via linha de comando. Irei demonstrar as duas formas, porém prefiro via linha de comando porque tenho em mãos um código mais atualizado do que o presente no PPA do Ubuntu On Rails.

Vamos lá!
Leia o resto deste post »

Neste post veremos como adicionar a extensão para manipulação de dados espaciais que o PostgreSQL oferece, o PostGIS. Bem, após instalar e configurar o PostgreSQL 8.4 + pgAdmin III, instalamos o PostGIS pelo comando abaixo:

$ sudo apt-get install postgresql-8.4-postgis

Bem, na teoria já temos o PostGIS instalado. Nos próximos passos, iremos verificar na prática se a API dele realmente está integrada com o PostgreSQL e criaremos um exemplo simples. Isso pode ser feito via linha de comando, como veremos a seguir, ou via pgAdmin mesmo.

Primeiro passo:

$ sudo su postgres
$ createdb postgistemplate
$ createlang plpgsql postgistemplate
$ psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis.sql
$ psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql
$ createdb -T postgistemplate exemplo_gis

Cria-se um template para a associação das futuras databases com as funções espaciais do PostGIS, e, em seguida, cria-se um database que já possui a API espacial.
Leia o resto deste post »

Mais um guia aqui no blog. Este foi devido a necessidade da instalação do PostgreSQL e pgAdmin para o projeto da disciplina de SIG (Sistema de Informação Geográfica) que trabalhará juntamente com o PostGIS para o armazenamento e consulta de informações espaciais. Em um próximo post irei explicar como instalar a extensão do PostGIS para o PostgreSQL.

Vamos lá!

Primeiro passo:

$ sudo apt-get install postgresql-8.4 pgadmin3

Instalação do PostgreSQL 8.4 + pgAdmin III.
Leia o resto deste post »

Semana passada, mais uma vez, tive a curiosidade e coragem de preparar o ambiente de desenvolvimento Rails no Ubuntu (no meu caso, o 10.04). Após muita pesquisa, acatei o melhor de cada dica e decidi preparar e compartilhar os passos que tomei para ter um ambiente redondo.

Teremos ao final um ambiente com Ruby 1.9.1 + Rails 2.3.8 + RubyGems 1.3.7 + SQLite3/MySQL/PostgreSQL instalados e pronto para desenvolvimento. Vamos lá então!

[update 20/05/10 às 10:31]
Até ontem, eu pensei que a instalação do RubyGems instalado via source juntamente com o Ruby instalado via apt-get estava correto. De fato, está. Porém, após muita dor de cabeça percebi que ao instalar o Ruby via apt-get ele não reconhece os PATHS de ambiente utilizados pelo RubyGems. O problema é que diante do Rails, o ambiente parecia estar funcionando corretamente.

Como percebi? Simples, fui instalar a gem do Sinatra e ela simplesmente não era encontrada. Achei estranho e fui mais além, foi aí que instalei uma lib (libsinatra-ruby1.9.1) e tudo funcionou. Ou seja, quem estava fazendo o papel do RubyGems eram essas libs e não a própria.

Era tão visível isso, mas acabei me dando conta somente agora. Por exemplo, pra usar o sqlite3 precisava instalar além do mesmo, duas libs (libsqlite3-dev libsqlite3-ruby1.9.1), mas em um ambiente redondo isso não seria necessário. Por que? Porque na verdade quem está fazendo o papel da gem não é de fato ela, mas sim essas duas libs que foram instaladas.

DICA: Jamais misture uma app instalada via gerenciador de pacotes com algum plugin/feature que é instalado via source. A probabilidade de acontecer alguma merda é alta, a não ser que você esteja sabendo bem onde esteja pisando; o que não foi meu caso.

Peço desculpas aos que acreditaram fielmente que isso daqui estava, de fato, 100% correto. Iremos instalar os pré-requisitos via apt-get e o Ruby + RubyGems via source. Sem mais dores de cabeça! ;)
[/update]

Leia o resto deste post »

Quando se trata de aplicações escaláveis todo cuidado é pouco. A forma de armazenar os dados dos usuários no banco de dados é algo básico e de extrema importância, já que ninguém quer responsabilizar-se pela roubo dos mesmos.

Com o passar dos anos, as pessoas especializaram-se ainda mais em quebrar dados criptografados. Isto é, já se tem histórico da quebra de md5 e sha1, o que trás uma preocupação para os desenvolvedores. Eu mesmo costumava usar esses dois tipos de criptografias nas minhas aplicações, porém já não as uso mais.

Uma outra forma bem mais segura de encriptar dados é o uso do módulo mcrypt. Com base nisso e após algumas pesquisas, decidi criar uma simples classe utilitária que seria responsável por gerar qualquer dado criptografado que seja passado como argumento.

Classe:

class PasswordEncrypter {

 /* key to encrypt/decrypt */
 const KEY = "something";

 public static function generate($data) {
 $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CFB, '');
 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
 $ks = mcrypt_enc_get_key_size($td);
 mcrypt_generic_init($td, self::KEY, $iv);
 $encrypted = mcrypt_generic($td, $data);

 mcrypt_generic_deinit($td);
 mcrypt_module_close($td);

 return $encrypted;
 }

}

Só é possível desencriptar caso alguém saiba a chave de encriptação. Fiz somente a ida; prefiro encriptar o dado de entrada do usuário e comparar com o que vem do banco de dados. A volta é super simples, basta utilizar o mdecrypt. Para maiores informações, http://www.php.net/manual/en/function.mcrypt-module-open.php

Espero que ajude-os. Estou aberto a sugestões já que não sou muito técnico no tema. Fiquem à vontade! ;)