shadowmaru.org

Vai tomar café

O que eu levo na minha messenger bag

by Ricardo Yasuda on July 26, 2010 13:29

Este post é uma participação no concurso do Efetividade.net, com o título "O que você carrega na sua mochila (ou bolsa…) de trabalho?" Bom, eu na verdade uso uma messenger bag, parecida com a dos bike messengers de Nova York, por isso o título do post.

A messenger bag é da marca Timbuk2, original de San Francisco, e eles são especializados nesse tipo de bolsa, embora fabriquem outros modelos, como mochilas e bolsas para mulher. A minha é uma Coder, que tem espaço e proteção para notebooks.

Como vou de bicicleta para o trabalho, prefiro não carregar muito peso nas costas, portanto a lista é pequena. O resto vai numa bolsa de guidão (ferramentas), num alforge (roupas e compras) e nos bolsos (carteira, celular, iPod).

Segue a lista:

  • Notebook de 13"
  • Capa sleeve para o notebook
  • Carregador do notebook
  • Cabo do iPod
  • Mouse
  • Mini Moleskine
  • Caneta uni pin 0.005
  • Adaptador de video para monitor externo
  • Livro “Descubra seus pontos fortes”
  • Trident
  • Toalha para enxugar o suor na chegada :)
  • Óculos escuros
  • Ecobag para não pegar sacos plásticos no supermercado
  • Molho de chaves

Posted in Productivity | Tags produtividade, messenger bag, notebook | Comments

Migrando senhas com Authlogic

by Ricardo Yasuda on March 22, 2010 23:57

Estou no processo de migração de uma aplicação de Rails 1.2.6 (!!) para Rails 2.3.5. Como muita coisa mudou, estou refazendo do zero. Só que um dos problemas é a base legada, com muitos usuários. Na época, os sistemas de autenticação como restful_authentication, Authlogic e Devise nem existiam, então a autenticação foi feita na mão.

O desafio era migrar tudo para Authlogic. Seria difícil, se não fosse uma feature pouco conhecida do Authlogic: transition_from_crypto_providers

Essa configuração faz com que quando um usuário fizer login, o Authlogic compare a senha com a encriptação normal dele, se não funcionar ele tenta as outras que você define assim:

acts_as_authentic do |c|
   c.transition_from_crypto_providers = [UserPasswordCryptSHA, UserPasswordCryptMD5]
end

Neste exemplo, configuramos dois métodos de encriptação legados. Quando o Authlogic validar a senha com um desses métodos, ele automaticamente encripta a senha novamente usando o método novo. Isso acontece também para registros novos. E para configurar um método legado, é só criar um arquivo na lib:

class UserPasswordCryptMD5
     def self.encrypt(*tokens)
          Digest::MD5.hexdigest(*tokens)
     end

  def self.matches?(crypted_password, *tokens)
    encrypt(*tokens) == crypted_password
  end

     def self.type
          "MD5"
     end
end

O Authlogic pede somente dois métodos, encrypt e matches?. Não preciso explicar, né?

Posted in Rails, Ruby | Tags rails, ruby, authlogic, password, encryption | Comments

Redirecionando rotas antigas com Apache e Nginx

by Ricardo Yasuda on February 22, 2010 22:04

Aqui na Bio Ritmo recentemente migramos o site da SmartFit de PHP para Rails, e com isso muitas páginas que estavam indexadas pelo Google ficaram com endereços diferentes. Pensando no SEO, e para não perder as visitas por causa dessa migração, fizemos um redirecionamento permanente (301) com o Apache, usando .htaccess:

Redirect /atendimento.php http://www.smartfit.com.br/atendimento
Redirect /unidades.php http://www.smartfit.com.br/unidades
Redirect /franquias.php http://www.smartfit.com.br/franchises/new

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/a-smartfit.php$
RewriteCond %{QUERY_STRING} ^idUnidade=1$
RewriteRule ^.*$ http://www.smartfit.com.br/unidades/brasilia? [L,R=301]
RewriteCond %{REQUEST_URI} ^/a-smartfit.php$
RewriteCond %{QUERY_STRING} ^idUnidade=2$
RewriteRule ^.*$ http://www.smartfit.com.br/unidades/morumbi? [L,R=301]
RewriteCond %{REQUEST_URI} ^/a-smartfit.php$
RewriteCond %{QUERY_STRING} ^idUnidade=3$
RewriteRule ^.*$ http://www.smartfit.com.br/unidades/porto-alegre? [L,R=301]
RewriteCond %{REQUEST_URI} ^/a-smartfit.php$
RewriteCond %{QUERY_STRING} ^idUnidade=4$
RewriteRule ^.*$ http://www.smartfit.com.br/unidades/copacabana-i? [L,R=301]
RewriteCond %{REQUEST_URI} ^/a-smartfit.php$
RewriteCond %{QUERY_STRING} ^idUnidade=5$
RewriteRule ^.*$ http://www.smartfit.com.br/unidades/copacabana-ii? [L,R=301]
RewriteCond %{REQUEST_URI} ^/a-smartfit.php$
RewriteCond %{QUERY_STRING} ^idUnidade=6$
RewriteRule ^.*$ http://www.smartfit.com.br/unidades/botafogo? [L,R=301]

Repare que as páginas que tinham parâmetros dinâmicos foram um pouco mais trabalhosas, pois precisamos usar mod_rewrite.

Só que nesta semana migramos o servidor para Nginx, e após muita pesquisa e experimentação, cheguei na seguinte configuração:

location /atendimento.php {
  rewrite /atendimento.php http://www.smartfit.com.br/atendimento permanent;
}

location /franquias.php {
  rewrite /franquias.php http://www.smartfit.com.br/franchises/new permanent;
}

location /unidades.php {
  rewrite /unidades.php http://www.smartfit.com.br/unidades permanent;
}

location /a-smartfit.php {
  if ($args ~ idUnidade=1) {
   rewrite ^ http://www.smartfit.com.br/unidades/brasilia? permanent;
  }
  if ($args ~ idUnidade=2) {
   rewrite ^ http://www.smartfit.com.br/unidades/morumbi? permanent;
  }
  if ($args ~ idUnidade=3) {
   rewrite ^ http://www.smartfit.com.br/unidades/porto-alegre? permanent;
  }
  if ($args ~ idUnidade=4) {
   rewrite ^ http://www.smartfit.com.br/unidades/copacabana-i? permanent;
  }
  if ($args ~ idUnidade=5) {
   rewrite ^ http://www.smartfit.com.br/unidades/copacabana-ii? permanent;
  }
  if ($args ~ idUnidade=6) {
   rewrite ^ http://www.smartfit.com.br/unidades/botafogo? permanent;
  }
}

Achei mais limpo que o Apache, funciona sem problemas, e sem perder page ranking.

Posted in SEO, Server | Tags apache, nginx, seo | Comments

Últimos eventos

by Ricardo Yasuda on November 10, 2009 14:33

Olá, sei que tenho negligenciado um pouco este blog, mas muita coisa está acontecendo ultimamente, profissionalmente e pessoalmente, o que não vem ao caso comentar.

Estou trabalhando agora na Bio Ritmo, mais precisamente cuidando dos sistemas da SmartFit, na companhia de outros talentosos desenvolvedores Rails[bb]. Foi muito bom meu período na DBurns Design, e agradeço muito ao Marcio Trindade pela oportunidade.

Lógico que estive no último Rails Summit, mas ainda não tive tempo de escrever sobre tudo. O que eu já escrevi vocês podem conferir na InfoQ Brasil, é só ver meu conteúdo publicado.

Ainda sobre eventos, no dia 28/11/2009 acontece o primeiro Dev In Sampa, e pretendo ir, se conseguir uma vaga :)

Posted in Eventos, Rails | Tags bioritmo, smartfit, railssummit, rails, devinsampa | Comments

6o Encontro do Guru-SP - Testes

by Ricardo Yasuda on September 25, 2009 16:08

O Guru-SP é o Grupo de Usuários Ruby de São Paulo, fundado no ano passado para discutir, promover eventos, e talvez futuramente elaborar um projeto, tudo relacionado a Ruby, e não necessariamente limitado a Rails.

Neste sábado (26/09/2009) acontecerá o 6o encontro do grupo. Faremos uma mesa de debates sobre um assunto que ainda nem todos dominam: testes. Fui gentilmente convidado para participar da mesa de debates, juntamente com Cássio Marques, Diego Carrion, Fabio Kung, Jorge Diz, Mauricio Aniche e Thiago Scalone.

O encontro acontecerá na Gonow que mais uma vez cederá suas dependências para um evento de Ruby, como no Rails Rumble.

Mais detalhes no RubyInside

Posted in Eventos, Rails, Ruby, Testes | Tags rails, ruby, tests, event, bdd, tdd, rspec, cucumber, shoulda, remarkable | Comments

Google Analytics Alternative