TrueCrypt

Posted on March 27th, 2008

Comentando sobre o roubo dos laptops da Petrobrás, o TaQ mostrou como o uso de um volume criptografado, usando o cryptsetup, pode ser uma forma segura para guardar dados pessoais/confidenciais.

Se você ficou interessado mas usa Windows (Vista ou XP), vale a pena dar uma olhada no TrueCrypt. 

Com suporte aos algoritmos AES-256, Serpent e Twofish, além da criptografia de partições e de dispositivos de armazenamento, é possivel a criação de discos virtuais criptografados de forma bem simples.

No blog do Vinícius Serafim tem uma breve introdução do TrueCrypt no Windows.

Extension Methods

Posted on March 26th, 2008

Umas das novidades do C# 3.0 é a possibilidade de adicionar comportamento a uma classe sem a necessidade da criação de uma subclasse ou da recompilação do código original.

Essa funcionalidade é chamada de Extension Methods.

Criando um Extension Method

Imagine que você precisa validar se uma string é um e-mail válido. A solução mais comum é a definição de um método de validação (estático) em uma classe utilitária (estática).

static class Program
{
  static void Main(string[] args)
  {
    string emailCliente = System.Console.ReadLine();

    if (!Utilidades.IsEmailValido(emailCliente))
      System.Console.WriteLine("E-mail informado inválido.");
  }
}

Usando um Extension Method a solução é parecida, mas a utilização é mais elegante.

if (!emailCliente.IsEmailValido())
  System.Console.WriteLine("E-mail informado inválido.");

A criação do Extension Method se resume a definição de uma classe estática com um método estático.

namespace Utilidades
  public static class Extensoes
  {
    public static bool IsEmailValido(this string email)
    {
      return Regex.IsMatch(email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
    }
  }
}

Notem o keyword this antes da declaração do primeiro parâmetro. Ele é responsável por passar ao compilador que o método IsEmailValido é aplicável a todos os objetos do tipo string.

E para utilizar o extension method basta importar o namespace que contém a classe estática usando o statement using. Sendo que não é necessária a importação caso as classes estejam dentro do mesmo namespace.

using Utilidades;

Passando parâmetros para o Extension Method

namespace Utilidades
  public static class Extensoes
  {
    public static bool IsMaiorQue(this string s, int tamanho)
    {
      return s.Length > tamanho;
    }
  }
}

string nome = "Joao da Silva";

if (nome.IsMaiorQue(10))
  System.Console.WriteLn("Nome só pode ter 10 caracteres");

Com essa introdução dá para ter uma pequena idéia das possibilidades. Vale lembrar que também é possível criar extension methods para interfaces e generics.

Abaixo três boas referências que valem à pena dar uma lida.

Um pouco de mágica

Posted on March 3rd, 2008

A minha idéia inicial era botar em prática o que tinha visto no screencast do Fábio Akita sobre o plugin resource_controller. Mas já que estava fazendo um dry up no código dos controles fiquei pensando se não conseguia fazer fazer o mesmo com os modelos usando a gem Magic Models do Dr Nic’s.

“A gem Magic Models estende o ActiveRecord permitindo que ele consiga gerar os relacionamentos (belongs e has_many) e validações (presence, length, numericality, inclusion e uniqueless) dos modelos automáticamente a partir da estrutura da base de dados.”

Você pode ver o código no Pastie ou baixar o projeto.

NetBeans interface language

Posted on February 22nd, 2008

Por padrão o NetBeans usa a linguagem definida no Windows como a padrão para a sua interface.

Uso o Windows XP Professional English com a localidade e configurações regionais definidas para as brasileiras mas a interface do NetBeans sempre ficou em inglês.

Mas depois de ter atualizado ele ontem algumas opções começaram a aparecer em português. De menus até a estrutura do projeto Rails na aba Projects.

Como prefiro a IDE em inglês isso começou a me irritar. Por sorte a solução é bem simples.

Basta editar o arquivo “netbeans.conf”, por padrão em C:\Program Files\NetBeans 6.0.1\etc, e na opção “netbeans_default_options” adicionar ao final da string os parâmetros abaixo:

-J-Duser.language=en -J-Duser.region=US

Referência: http://blogs.sun.com/tao/entry/set_netbeans_user_interface_language

Brincando com o TinyRails

Posted on February 21st, 2008

Assim que o Fabio Akita postou sobre o TinyRails fui testar o código. E claro que quebrei a cara já que o thin ainda não roda no Windows.

Como queria testar a idéia e estava com preguiça de instalar o Ubuntu em uma máquina virtual acabei reescrevendo um pedaço do código e mudando do thin para a dupla Mongrel / WEBrick.

Aproveitei o embalo e montei um “SQLite3 resource scaffold”.

Como ainda não configurei direito o Wordpress para postagem de código, coloquei os scripts no Pastie.

http://pastie.caboo.se/155367

UPDATE: Onde tudo começou: Single file Rails Application


Copyright © 2007 Algumas Idéias. All rights reserved.