Marcio Trindade

Artigos

Rails carregando 36% mais rápido com Ruby 1.9.3

O Xavier Shay públicou a alguns dias um artigo mostrando um patch que ele fez alterando mais de 3000 linhas de código e 20 dependências do ruby 1.9.2 e conseguiu fazer o load do rails ficar aproximadamente 60% mais rápido. O que todos achavam estranho é o patch não ser aceito pelo core team, mas a de se entender que alterar tanta coisa como o que o Xavier fez é algo extremamente complicado. Porém 4 dias após este artigo o Masaya Tarui do core team do ruby fez um commit de 26 linhas na class load.c (o loader em c do ruby) e obteve uma performance até melhor do que o código do Xavier chegando a um ganho de até 64% em relação ao ruby 1.9.2.

Se tiver mais interesse neste assunto o Ruby Inside publicou um artigo contando toda esta história.


Problemas com timezone no ActiveRecord

Quando você esta usando o ActiveRecord você acaba aproveitando os campos mágicos createdat e updatedat do Rails, mas uma coisa que poucos sabem é como ele lida com estes.

Quando você inicia a aplicação o Rails seta o time zone de acordo com a sua configuração, seja ela no application.rb no rails 3.x ou enveronment.rb no rails 2.x, porém este time zone não é utilizado no ActiveRecord por uma questão de configuração também, sendo assim quando um registro é criado o Rails utiliza o Time.zone.utc como padrão e salva no banco a hora com time zone utc, e quando ele traz este registro de volta a mágica é feita novamente e altera esta hora para o seu time zone, porém quando você utiliza estes como condições a mágica já não acontece, então é preciso que você faça isso manalmente.


Coffee Script

Hoje eu dei uma olhada mais afundo na linguagem coffee Script. A linguagem é bem enxuta o que facilita a vida de quem precisa escrever muito código além de manter uma boa legibilidade para futuras manutenções mas é importante lembrar que coffee Script não é um Framework.

Eu não pretendo fazer deste artigo um mini-tutorial pra aprendizado, até por que já tem muita coisa no site oficial e o Fábio Akita já escreveu algo neste post o que pretendo abordar aqui são exemplos que não encontrei com muita facilidade.


Formtastic

O formtastic é uma gem mantida pelo Justin French que pode ser considerado com um conjuto de helper que utilizam semântica HTML e facilita a criação de formulários em projetos Rails.

A instalação é bem simples, basta adicionar a linha abaixo no arquivo environment.rb.


Galeria de Imagens com Objective-c

Seguindo o raciocínio do post anterior onde mostrei como adicionar uma subView vou mostrar agora como fazer uma galeria de imagens bem simples. Pra dar início coloquei dentro do diretório Resources do projeto criado no Xcode um outro diretório chamado images com arquivos de nome 1.jpg até 11.jpg.

Então com o código abaixo consegui montar um exemplo bem simples e funcional de uma galeria de imagens que utilizei como base pra adicionar em meu projeto iPad.


Inserir uma subView pelo controller

Eu costumo utilizar mais código do que o Interface Builder pra desenvolver com Objective-c então vou mostrar como adicionar uma subView.

Vou considerar que você já tenha o seu appDelegate adicionando uma view na janela.


Iniciando com Objective-c

Depois de muito tempo sem escrever nada aqui no Blog resolvi voltar a escrever, porém agora sobre objective-c que é a linguagem que estou mais utilizando ultimamente pra desenvolver um aplicativo que roda em iPad, pretendo abordar algumas dicas bem fáceis e simples por que infelizmente hoje em dia é muito difícil achar qualquer coisa sobre esta linguagem ainda mais em português.

Release

Objective-c assim como em C você aloca e precisa também liberar o trecho de memória pra sua aplicação, a Apple indica que sempre depois do release você sete a variavél pra null ficando o código assim.


Resource Controller com template scaffold

Pra quem não conhece o resource_controller é uma gem que facilita a criação de CRUD em seus controllers criando até os 7 métodos básicos pra você dinamicamente (index, show, new, create, edit, update e destroy), se assemelha um pouco ao que o ActiveRecord faz com o model.

Você pode saber mais através da documentação ou no ótimo material disponibilizado pelo autor no github além de encontrar muita coisa nos buscadores, por este motivo que não vou entrar em muito em detalhes sobre a gem ou como ela funciona, mas vou explicar uma implementação que utilizei para tentar diminuir o número de views em meus projetos.

Incomodado de ficar criando o arquivo new e edit a todo momento resolvi alterar o resource controller pra renderizar um template padrão caso não encontre o template da ação que segue a conveniência do Rails. Para isso eu criei um arquivo dentro no initializer que sobrescrevi o método response_for do resource_controller adicionando um rescue para na falta do template tentar renderizar o meu template padrão, veja como ficou:


Live Validations

Em meus últimos projetos utilizei o plugin live-validations que me facilitou trabalhar com as validações no lado do cliente. A lógica do plugin é passar a validação de seus models para js evitando assim posts desnecessários. Este funciona com jQuery ou Prototype No meu caso utilizei a jQuery e vou mostrar abaixo como é simples fazer isso.

jQuery - live-validations


Css Browser Selector

CSS Browser Selector Que atire a primeira pedra quem nunca usou um hack para acertar algum erro entre navegadores e é por este motivo que estou escrevendo este post.

Cansado de ficar fazendo sempre um css diferente para os navegadores resolvi facilitar a minha vida. Hoje quando desenvolvo acabo utilizando o safari como navegador principal, que ainda bem não tem muita diferença em relação ao Firefox, porém quando você passa para um navegador como o InternetExplorer a dor de cabeça aparece e o Rafael Lima resolveu dar uma mãozinha criando o script CSS Browser Selector escrito em javascript que é super simples e minimalista que adiciona algumas classes na tag html de acordo com o navegador, sistema operacional e engine que você está utilizando.