shadowmaru.org

Vai tomar café

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[bb] para Rails[bb], 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 (1)

Ú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 (2)

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 (0)

Rails Summit 2009

by Ricardo Yasuda on September 21, 2009 22:29

Rails Summit 2009

Seguindo o grande sucesso de 2008, que eu relatei no blog em 3 posts (Dia 1, Dia 2 e a Experiência Pessoal) teremos mais uma vez o Rails Summit Latin America, que será realizado nos dias 13 e 14 de outubro de 2009, no Auditório Elis Regina do Centro de Convenções do Anhembi.

O Rails Summit Latin America, para quem não conhece, é um conferência internacional de Ruby e Rails que reúne toda a comunidade brasileira e mais alguns desenvolvedores dos demais países da América Latina. É uma grande oportunidade para aprender e conhecer outros desenvolvedores, e por que não, conseguir um emprego na área.

Eu estarei presente, cobrindo o evento para a InfoQ Brasil, onde colaboro com traduções de notícias, entrevistas e artigos. A Fratech gentilmente cedeu cortesias através de sorteio aos seus editores e eu fui um dos vencedores. Agradeço a organização do Rails Summit e a Fratech por isso.

Este ano teremos palestras de nomes consagrados da comunidade Ruby/Rails nacional e internacional. Vejam a lista de palestrantes:

Palestrantes nacionais

  • Arthur Zapparoli (Arthurgeek)
  • Bruno Miranda
  • Carlos Brando
  • Carlos Villela
  • Fabio Kung
  • José Valim
  • Leonardo Borges
  • Marcos Tapajós
  • Nando Vieira
  • Vinícius Telles

Palestrantes internacionais

  • Bryan Lyles (TATFT)
  • Chad Fowler
  • David Chelimsky
  • Glenn Vanderburg
  • Gregg Pollack
  • Ilya Grigorik
  • Jason Seifer
  • Matt Aimonetti
  • Obie Fernandez
  • Pratik Naik
  • Richard Kilmer

Se você for, deixe um comentário, nos encontramos por lá.

Posted in Eventos, Rails, Ruby | Tags railssummit, rails, ruby, event, infoq | Comments (1)

Formate melhor seu console do Rails ou irb com Hirb

by Ricardo Yasuda on September 16, 2009 02:54

Geralmente quando quero testar alguma coisa no ActiveRecord do Rails eu abro um console, usando o script/console. O problema é que a formatação dele (e consequentemente do irb, que é a engine por trás do console) é muito ruim, mostrando os resultados em forma de Hash.

Entra Hirb. Ele é, segundo o autor, Gabriel Horner, ‘um miniframework de visualização para console/irb’. As melhorias incluem formatação em tabelas de Arrays e Hashes, paginação, visualização em árvore e menu.

Para instalar,

sudo gem install cldwalker-hirb --source http://gems.github.com

e para usar, entre no irb/console, faça o require e ative

$ script/console
Loading development environment (Rails 2.3.4)
>> require 'hirb'
=> []
>> Hirb.enable
=> nil

Se quiser que o Hirb sempre esteja habilitado, crie ou edite o arquivo ~/.irbrc

if ENV['RAILS_ENV']
  require 'rubygems'
  require 'hirb'
  Hirb.enable
end

Vamos ver um exemplo com ActiveRecord:

>> Post.all :limit => 5
+----+---------------+---------------+---------------+---------------+---------+---------------+---------------+-----------+---------------+
| id | name          | body          | published_at  | permalink     | user_id | created_at    | updated_at    | published | comments_c... |
+----+---------------+---------------+---------------+---------------+---------+---------------+---------------+-----------+---------------+
| 74 | Manipuland... | Uma das d?... | 2009-06-09... | manipuland... | 1       | 2009-06-09... | 2009-08-11... | true      | 3             |
| 73 | Limpando o... | !/system/a... | 2009-04-22... | limpando-o... | 1       | 2009-04-22... | 2009-08-11... | true      | 0             |
| 72 | Why's (poi... | <img src="... | 2009-04-09... | why-s-poig... | 1       | 2009-04-09... | 2009-08-11... | true      | 0             |
| 70 | Evento: Ru... | No dia 4 d... | 2009-03-10... | evento-rub... | 1       | 2009-03-10... | 2009-08-10... | true      | 1             |
| 68 | Dica rápi... | O <a href=... | 2009-03-06... | dica-rapid... | 1       | 2009-03-06... | 2009-03-06... | true      | 1             | 
+----+---------------+---------------+---------------+---------------+---------+---------------+---------------+-----------+---------------+
5 rows in set

Repare que na linha que tem um acento ele recua um caractere, deve ser um problema ainda a ser resolvido com caracteres especiais.

Uma outra coisa legal é a visualização em árvore. Digamos que você tenha um model Page com acts_as_tree, ou seja, uma instância de Page tem um parent_id, e pode ter filhas.

>> extend Hirb::Console
=> main

>> view Page.find_by_name('About Us'), :class => :parent_child_tree, :type => :directory
About Us
|-- Contact
|-- Our History
|-- Mission
|-- Privacy Policy
`-- Terms of Use
=> true

Prático, não? Isso é só uma parte do que o Hirb pode fazer, recomendo olhar o projeto no github e a documentação, tem muita coisa interessante.

Posted in Rails, Ruby | Tags gem, ruby, rails, console, irb, hirb, format | Comments (0)

Google Analytics Alternative