Problemas com o RedCloth

Posted by Fabiano França on March 31st, 2008

Usando o helper textilize notei que ele estava tendo um comportamento estranho quando o texto tinha quebras de linha.

Fuçando no wiki descobri que a versão 3.0.4 da gem RedCloth, utilizada pelo helper, tem um bug que não identifica corretamente as quebras de linha como parágrafos.

Como solução, é indicado o downgrade/atualização para as versões 3.0.3 ou 4.0 da gem (ainda em desenvolvimento) ou a utilização do patch abaixo no environment.rb.

class RedCloth
  # Patch for RedCloth.  Fixed in RedCloth r128 but _why hasn't released it yet.
  # http://code.whytheluckystiff.net/redcloth/changeset/128
  def hard_break( text )
    text.gsub!( /(.)\n(?!\n|\Z| *([#*=]+(\s|$)|[{|]))/, “\\1” ) if hard_breaks
  end
end

A receita do fracasso

Posted by Fabiano França on March 27th, 2008

Será que existe alguém que trabalhe com TI que nunca passou ou vivenciou uma situação parecida com essa?

Você planeja seus projetos, por menor que sejam? Um caso que deu MUITO errado.

Usando o Castle ActiveRecord

Posted by Fabiano França on March 27th, 2008

O Castle ActiveRecord é uma implementação do pattern Active Record desenvolvido em .NET em cima do NHibernate.

Ele faz parte do pacote de frameworks do projeto Castle Projet, e tem forte influencia da implementação do Active Record do framework Ruby On Rails.

Entre as muitas características dele vale destacar, a possibilidade de mapeamento de classes via atributos e não dos famigerados arquivos xml e um mecanismo de validação eficiente e flexível.

Read the rest of this entry »

Automatic Properties

Posted by Fabiano França on March 27th, 2008

No post anterior acabei usando um recurso disponível no C# 3.0 que ficou sem explicação.

O Automatic Properties.

public class Pessoa {
  public string Nome { get; set; }
  public string Email { get; set; }
}

Agora ao encontrar a declaração { get; set; }, o compilador gera automaticamente a variável privada e a implementação necessária para a propriedade.

Também é possível declarar uma propriedade como somente leitura usando o accessor private.

public class Pessoa {
  public int Id { get; private set; }
  public string Nome { get; set; }
  public string Email { get; set; }
}

E caso você precise usar atributos é necessário fazer a declaração da propriedade do modo tradicional.

Object e Collection Initializers

Posted by Fabiano França on March 27th, 2008

Mais uma novidade do C# 3.0 é a nova sintaxe para a inicialização de objetos e coleções.

Object Initializers

Agora podemos ao instanciar um objeto passar valores para as suas propriedades.

public class Pessoa {
  public string Nome { get; set; }
  public string Email { get; set; }
} 

Pessoa joao = new Pessoa() { Nome = "João", Email = "joao@gmail.com" };
Pessoa maria = new Pessoa() { Nome = "Maria", Email = "maria@gmail.com" };

No exemplo acima, são instanciados dois objetos do tipo Pessoa, chamando o construtor padrão, e em seguida setadas as propriedades Nome e Email.

Tudo em uma única linha de código.

Também é possível passar parâmetros para o construtor, conforme o exemplo a seguir:

public class Pessoa {
  public string Nome { get; set; }
  public string Email { get; set; }
  public int Idade { get; set; }
  public Pessoa(string nome)
  {
    this.Nome = nome;
  }
}
Pessoa pedro = new Pessoa("Pedro") {
  Email = "pedro@gmail.com",
  Idade = 20
};

Collection Initializers

Já nas coleções podemos passar um conjunto de objetos.

No exemplo abaixo a coleção pessoas é instanciada com os objetos joao, maria e pedro como os seus membros.

IList<Pessoa> pessoas = new List<Pessoa>() { joao, maria, pedro }

É aqui uma combinação das duas formas.

IList<Pessoa> pessoas = new List<Pessoa>() {
  joao, maria, pedro,
  new Pessoa() { Nome = "Jose", Email = "jose@gmail.com" }
}

Conclusão

Como vimos nesse segundo post, o C# 3.0 vem trazendo grandes melhorias para a implementação de um código mais legível e bonito.

Muitas dessas melhorias foram influenciadas por dois projetos da Microsoft Research, o F# e o .

Nesse post, Tomas Petricek detalha as novidades incorporadas no C# 3.0 vindas desses dois projetos.


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