2013 January 13, 18:50 h
Atualização 30/01: Em sequência às brecha que publiquei anteriormente tivemos mais uma sequência, novamente envolvendo parsers, desta vez foi com o parser JSON padrão usado no Rails. A brecha foi identificada como CVE-2013-0333 e afeta as versões de Rails 2.3.x, 3.0.x mas felizmente não afeta as versões 3.1.x, 3.2.x ou se seu parser JSON for o yajl. De qualquer forma, se não puder atualizar a versão da gem do Rails, crie um arquivo como config/initializers/json_parser_replacement.rb e coloque este conteúdo:
1 |
ActiveSupport::JSON.backend = "JSONGem" |
Se estiver usando Ruby 1.8 lembre de instalar a gem 'json' ou a 'json_pure' e reinicie a aplicação. Esta brecha de segurança é altamente crítica, para se ter uma idéia, hoje (30/01) o site Rubygems.org, o repositório canônico de todas as gems que usamos foi comprometido por esta brecha. Eles estão auditando todas as gems para saber se alguma foi comprometida:
TL;DR - Halt your deploys until give an all clear on @rubygems_status. We're double-checking all gems to ensure they have not been tampered.
— Nick Quaranto (@qrush) January 30, 2013
O Nick Quaranto e diversos voluntários que se reuniram via IRC no canal #rubygems e outros sub-canais fizeram uma grande intervenção e aproveitaram para modernizar a infraestrutura toda do rubygems.org, movendo dos servidores da Rackspace - possivelmente, embora improvavelmente, vítima de rootkit - para AWS, automatizando tudo com Chef. Acompanhem todo o histórico aqui.
Esta semana (13/01) tivemos as maiores brechas de segurança da história do Ruby on Rails. Elas foram classificadas com os codinomes CVE-2013-0156 e CVE-2013-0155. Antes de ir mais longe, se você é responsável por uma aplicação Rails em produção e não sabia disso não perca tempo e faça o seguinte imediatamente:
Crie um arquivo config/initializers/disable_parsers.rb com o conteúdo:
Para aplicações Rails versões 3.2, 3.1, 3.0:
1 2 3 |
ActionDispatch::ParamsParser::DEFAULT_PARSERS.delete(Mime::XML) ActiveSupport::XmlMini::PARSING.delete("symbol") ActiveSupport::XmlMini::PARSING.delete("yaml") |
Para aplicações Rails versões 2.3:
1 2 3 |
ActionController::Base.param_parsers.delete(Mime::XML) ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('symbol') ActiveSupport::CoreExtensions::Hash::Conversions::XML_PARSING.delete('yaml') |
Agora cheque seu arquivo Gemfile.lock, se encontrar a gem multi_xml em versão abaixo da 0.5.2 modifique seu arquivo Gemfile para ter a linha:
1 |
gem "multi_xml", "0.5.2" |
Execute bundle update multi_xml e recheque seu Gemfile.lock para ter certeza que ela tem somente esta versão. Caso alguma outra gem dependa exclusivamente de uma versão menor do que essa leia este Gist e crie o arquivo initializer que ele sugere para colocar na sua aplicação. Normalmente você não procura por essa gem explicitamente, mas se você usa o HttpParty, então ela virá como dependência.
Não estou brincando, é sério: atualize imediatamente!!
2013 January 07, 17:38 h
Atualização 18/1: O LSM mudou de endereço graças a entrada de um novo patrocinador. O evento será na Telefonica agora. Rua Martiniano de Carvalho, 851 - Bela Vista - São Paulo/SP
Nos dias 1, 2 e 3 de Fevereiro no Brooklin, São Paulo, estarei colaborando como mentor na Lean Startup Machine. Se estiver interessado não esqueça de se inscrever
Sobre o Lean Startup Machine
O Lean Startup Machine acontece em um fim de semana de muita informação e trabalho prático, pois trata-se de um evento de...
2012 July 25, 11:08 h
Atualização 5/8: dica sobre Gatekeeper, veja seção ao fim do artigo.
Atualização 27/7: mais algumas dicas para instalar Rubies antigos. Veja última seção.
Atualização (17h): resolvi investigar mais um pouco os problemas que eu documentei no final do artigo e cheguei a uma solução para meus problemas. Veja no fim do artigo como eu fiz.
Se você é usuário de Mac, a atualização para o recém-lançado Mountain Lion é basicamente algo que você nem precisa pensar muito. $19.99 é praticamente um preço simbólico. A atualização sobre o Lion é limpa, rápida e sem dor de cabeça, da mesma forma como foi do Snow Leopard para o Lion e assim por diante.
Quem ainda está iniciando com Macs, não deixe de ler meu artigo Comprei meu Primeiro Mac, e Agora?, que desde 2009 é um dos meu artigos mais lidos.
2012 July 23, 23:54 h
Hoje alguns sites ficaram inacessíveis porque o provedor de DNS Zerigo sofreu um ataque de Denial of Service (DDoS). Levaram várias horas para estabilizar.

Normalmente nunca nos preocupamos com DNS porque se existe um serviço que atualmente é praticamente transparente é DNS, mas esse ataque nos relembra da importância de redundância e backup.
2012 July 22, 07:11 h
Desde o dia 15 de julho decidi que já tinha passado da hora de mudar um pouco meu blog. Sinceramente faz tanto tempo que coloquei o tema anterior que nem me lembro mais quando foi. Historicamente, entre 2006 e 2008, se não me engano, eu usei os sistemas de blog Typo3 e Mephisto. Depois pulei para o mais simples Enki, do Xavier Shay. Com o Enki este blog já passou por dois redesigns, o último deles foi basicamente um tema de Wordpress de licença aberta que eu retirei as entranhas PHP, claro, e adaptei ao Enki.

Mas agora resolvi brincar um pouco mais. E para ser “hipster” nada melhor do que abusar um pouco do Twitter Bootstrap.
2011 October 31, 16:02 h
Atualização 01/11: O Santiago Pastorino pediu para incluir uma dica sobre o ruby-debug, veja no fim do artigo.
Como todos devem ter visto a versão stable Ruby 1.9.3-p0 foi lançado ontem. Para quem já usava 1.9.2 esta é uma versão de atualização sem grandes quebras de compatibilidade. Vejam na RubyInside o que há de novo.
Quem usa RVM pode atualizar facilmente desta forma:
1 2 3 |
rvm get head rvm reload rvm install 1.9.3-p0 |
Ou no meu caso, que estava acompanhando o 1.9.3 no head do repositório, pode fazer um upgrade:
1 |
rvm upgrade 1.9.3-head 1.9.3-p0 |
Uma das novidades mais bem vindas é o novo esquema de require que tem potencial de deixar a carga de grandes frameworks com muitas dependências, como o Rails 3, até 36% mais rápida (ou mais!). Novamente, a RubyInside já havia descrito esse patch e muitos já estavam usando o 1.9.2 com o patch aplicado ou 1.9.3-head por causa dessa melhoria.
2011 October 05, 13:05 h
Acontecerá em São Paulo nos dias 21 e 22 de outubro a 2a edição do noSQL Brasil, principal conferência da América Latina sobre o tema. Este ano o evento conta com uma grade ainda mais rica, abordando não só as tecnologias noSQL, mas também newSQL e Cloud Computing. Serão dois dias intensos onde teremos 12 palestras e 6 Lightning Talks. Alguns palestrantes internacionais de destaque: Alistair Jones, Software Engineer da Neo Technology – empresa responsável pelo Neo4j
Frank Weigel, Diretor de ...
2011 September 19, 01:27 h
A Fase 4 acabou durando exatamente 1 ano. Ingressei na Gonow em agosto de 2010. Em um ano tornamos a Gonow de uma consultoria praticamente desconhecida em um nome que a maioria da comunidade de desenvolvimento de software brasileiro reconhece. Agora é hora do meu próximo Level Up, iniciando minha fase 5 finalmente fundando minha própria consultoria de serviços, chamada Codeminer 42 (logotipo ainda provisório). Iniciei há poucos dias e a idéia é criar uma pequena boutique de software com uma b...
2011 July 11, 00:26 h
Vocês devem ter notado que estou blogando bem pouco ultimamente, é só uma fase, estou bastante atarefado na Gonow, que está consumindo todo meu tempo. Mas estamos fazendo mudanças para que eu consiga retornar às minhas atividade aqui também.
Algo que veio meio por acaso é minha viagem para Tokyo. Desde o ano passado eu estava pensando que já estava na hora de ir ao Japão. Não só por causa do Ruby, mas também porque eu sou japonês e também tenho essa “vontade” de conhecer um pouco das minhas raízes.
Conversei na Gonow e eles concordaram em me mandar para a RubyKaigi. Por causa da correria dos projetos acabei decidindo ir meio em cima da hora. Mandei um email para o Akira Matsuda que é committer do Rails e evangelista de Rails no Japão. Ele me respondeu dizendo que, por coincidência, um dos palestrantes disse que não poderia mais ir e por isso havia um slot de palestra vago, de 30 min, e me perguntou se eu não gostaria de participar. Relutante, concordei. Daí foi uma correria porque fui ao consulado segunda-feira passada (dia 4), felizmente meu visto saiu dois dias depois. Já tenho hotel reservado, passagens compradas, e a menos que Murphy esteja muito entediado, terça-feira, dia 12/7 parto de São Paulo e no dia 14/7 aterrisso no Narita International Airport.
2011 July 05, 23:56 h
Este ano participarei da TDC 2011, organizado pela GlobalCode, na trilha de Ruby organizada pelo Felipe Rodrigues. Estou atrasado na divulgação, mas antes tarde do que nunca.
O TDC 2011 será um evento para unir diversas comunidades de desenvolvimento. São ao todo 30 trilhas além de atividades paralelas durante 5 dias de evento. Devem comparecer cerca de 1.800 pessoas participando de palestras, painéis e workshops. No TDC 2011 ainda acontecerá o lançamento mundial do JDK 7. Na Trilha de Ruby,...
2011 April 17, 15:26 h
Alguns dias atrás, o bom e velho @dhh começou uma controvérsia na comunidade. Eu diria até que foi uma discussão saudável. Leia a cobertura do acontecido na RubyInside mas em resumo ele fez a seguinte sequência de tweets:
“Pergunta: que framework de teste vocês usam na 37signals? Resposta: Test::Unit com uso ocasional do mocha. (Isso é tudo que você precisa para bons testes.)”
“Eu respeito os caras por trás disso e sou totalmente a favor de experimentação, mas a proliferação de rSpec e Cucumber me deixa triste.”
“RSpec me ofende esteticamente com nenhum benefício discernível pela sua complexidade adicionada sobre Test::Unit.”
“Cucumber não faz sentido a menos que você tenha clientes lendo os testes. Por que você construiria um parser específico de testes para inglês?”
“A coisa importante, é claro, é que consigamos fazer as pessoas testarem, então ferramentas não deveriam importar muito. Mas a complexidade extra ainda me chateia.”
Sendo sincero, eu também compartilho da mesma opinião do @dhh. E não, não é cargo cult, antes que algum engraçadinho faça o comentário: lembro de 1 ou 2 anos atrás onde eu e o Carlos Brando estávamos conversando justamente como voltar pra Test::Unit era até um alívio. Também lembro de discutir o assunto do Cucumber com o Daniel V. Lopes, que pelo menos na época preferia Steak justamente porque nenhum cliente iria ler os testes escritos em inglês e portanto isso era redundante.
Só para adiantar a conclusão: se alguém estava levando a discussão para o nível de qual sintaxe é “melhor”, ou qual é mais “elegante”, ou qual é mais “suscinta”, você está indo na direção errada e vai tirar conclusões sem nenhum fundamento também. Então vamos com calma que, pra variar, a leitura será longa.
2011 April 16, 18:31 h
Para quem não está acompanhando, esta semana rolou uma pequena controvérsia acerca de uma nova decisão na linha de desenvolvimento para o futuro Rails 3.1 (atualmente estamos na 3.0.6). A partir dessa versão, o framework trará como dependência as bibliotecas CoffeeScript, SASS e Sprockets, além da mudança que já havia sido anunciada antes de trocar a instalação padrão do framework Javascript, Prototype + Scriptaculous, por jQuery.
A maioria dessas mudanças foram bem recebidas e até em alguns casos, aplaudida, no estilo “já não era sem tempo!” (caso do jQuery).
Porém, a escolha de colocar o CoffeeScript como padrão causou um grande furor, diversas trocas de hostilidades, piadas de humor negro, sarcasmo e também muita gente que simplesmente gosta de fazer barulho sem motivo algum (tem tempo sobrando, eu diria).
O pessoal do Rails Core Team acha que é a melhor decisão. Uma parcela barulhenta da comunidade acha que foi uma grande bobagem. E agora, o que isso significa?
2011 April 16, 01:57 h
Estava esperando ter um tempinho para falar sobre isso. Se você presta atenção já deve ter visto posts de blog, tweets e tudo mais falando sobre um post recente do próprio Twitter explicando sobre a migração dos seus front-ends feitos em Ruby on Rails para uma solução que eles mesmo fizeram, chamada Blender, que é construída com Java. Com isso eles reduziram o tempo de requisição de 800ms para 250ms e conseguiram fazer suas máquinas terem 10 vezes mais capacidade.
Este é o resumo que você vai ler em todas os canais de comunicação que noticiaram o ocorrido. E, claro, os mais atrevidos e sem noção não se inibiram de novamente dizer “Ruby é muito lento, por isso compensa usar Java mesmo”. Como faz algum tempo que não falo sobre o assunto, acho que vale a pena repetir. Sim, todos nós rubistas sabemos que Ruby é uma das linguagens mais lentas que existem em uso hoje. E nenhum de nós faz nenhum esforço para esconder esse fato. Isso não é novidade, nunca foi. E aí eu pergunto: “e daí?” E a resposta continua: “oras, por isso mesmo não compensa usar Ruby e devemos todos continuar com Java, que é muitas vezes mais rápido, afinal se o Twitter disse é porque deve ser verdade.”
2011 March 08, 14:04 h
Existe um padrão de desenvolvimento no mundo Ruby on Rails que ainda não foi bem ajustado: Componentes. Por exemplo, digamos que seu site seja parecido com o exemplo seguinte:

2011 March 01, 12:52 h

Mais uma vez o Gmail perdeu os e-mails de muita gente por causa de um problema técnico. Rumores indicam que pelo menos 150 mil contas foram afetadas, muitos deles parece que estão sendo resolvidos mas alguns vão ficar a ver navios.
O problema aqui é lembrar o seguinte: isso não é um problema exclusivo do Google, todo sistema está suscetível a problemas, não importa quanto cuidado os administradores de sistema tomem. A realidade é que software dá problema, hardware falha, e procedimentos sempre estão fadados a falhas humanas. Falha é inerente ao sistema. Mesmo um sistema de produção de altíssima qualidade Six Sigma, com 99.99966% de segurança, ainda significa 3.4 falhas por milhão.
Parece pouco?
Atualização: Parece que o Google conseguiu recuperar uma boa parte dos dados que perdeu.
2011 January 08, 17:58 h
Upgrade: There have been some confusion because of the faulty way I wrote the conclusion. If you read it you will get under the impression that I ran the tests using Rails’ development mode, which is known to not be used for testing and profiling. I know that, of course. When I say “production environment”, I mean my VPS machine where my application is hosted. And when I say “development environment”, I mean my Macbook Pro, that I use for development. That’s the confusion :-)
This is not news but I tried to do a small test with my own Enki-modified blog upgraded to Rails 3.0.3 made compatible with both Ruby Enterprise Edition (REE) 1.8.7 2010.02 and Ruby 1.9.2-p136.
Many micro-benchmarks show that Ruby 1.9.2 eats 1.8.7 for lunch. But the reality of a full featured Rails 3 application may be different.
I tested both using the Passenger 3 Standalone and simple local httperf. This is not an optimum environment for benchmarking but we can have a broad idea.
In terms of memory usage, 1.9.2 is a bit lighter. passenger-memory-stats shows that each Ruby process is consuming an average of 74MB of RAM. The REE version consumes around 106MB. So 1.9.2 is doing a better job in memory consumption.
2010 December 31, 18:47 h
Esta é a última compilação para o último dia do ano. Foi mais um grande ano para Ruby no mundo todo. Este ano eu publiquei poucas retrospectivas, somente a número #8 (Janeiro a Abril) e #9 (Maio a Setembro). Agora é a vez de cobrir algumas das notícias de Outubro até Dezembro. Vamos ver se ano que vem eu consigo publicar com mais frequências.
Este também deve ser meu último post de 2010. Espero que todos tenham um bom reveillon e Feliz Ano Novo. Nos vemos em 2011!
2010 December 26, 22:33 h
Semana passada visitei a Abril para conversar sobre um projeto de codenome Alexandria. Sempre me perguntam sobre cases nacionais de Ruby, e este é sem dúvida um bom case para se discutir. Os arquitetos de sistema David Lojudice Sobrinho (à direita na foto) e Júlio César (à esquerda na foto) me guiaram nessa história e agora quero dividir com vocês do que se trata esse projeto.
Acredito que todos já consumiram algum produto da Abril mas talvez nem todos conheçam suas dimensões. Segundo sua página institucional, ela emprega hoje mais de 7 mil colaboradores. Citando a mesma página, temos:
A Abril publicou 370 títulos em 2009 e é líder em 21 dos 25 segmentos em que atua. Suas publicações tiveram ao longo do ano uma circulação de 188,5 milhões de exemplares, em um universo de quase 28 milhões de leitores e 4,1 milhões de assinaturas. Sete das dez revistas mais lidas do país são da Abril, sendo Veja a terceira maior revista semanal de informação do mundo e a maior fora dos Estados Unidos.
A Abril também detém a liderança do mercado brasileiro de livros escolares com a Abril Educação, que publicou mais de 3.000 títulos e detém 29% do mercado brasileiro de livros escolares. Em 2009, produziu 38 milhões de livros.
(…) Na internet, a Abril tem mais de 80 sites e portais com suas marcas e conteúdos. Em 1991, lançou no país a primeira operação de televisão por assinatura, a TVA.
2010 December 26, 19:24 h
Em Agosto de 2010, o grande Felipe Coury perguntou se eu não estaria interessado em hospedar meu blog no WebbyNode, um serviço que ele fundou.
Porém foi justamente em Agosto quando ingressei na Gonow e desde então ando bastante sobrecarregado. Com isso acabei deixando esta tarefa de lado por algum tempo. Finalmente arranjei um respiro para fazer isso com calma – agora, no Natal!
2010 December 22, 08:51 h
Estamos quase fechando o ano então nada como a tradicional lista dos artigos mais lidos deste ano. Aqui vão os Top 20:
2010 December 05, 15:55 h
Faz tempo que estou devendo um artigo sobre esta aplicação. O Mailee é um sistema de email marketing todo feito em Ruby on Rails e desenvolvido pelo pessoal da Softa, um excelente Rails shop de Porto Alegre, RS. Eles prestam serviço de desenvolvimento de sistemas web com Ruby, desenvolvem produtos como o Mailee e também organizam o evento RS on Rails, que pude participar este ano. Enfim, são muito ativos na comunidade gaúcha.

Eu não sou um usuário de e-mail marketing, então não poderei dar muitos detalhes quanto ao uso mais pesado da ferramenta nem comparação com outras ferramentas. Se você faz uso de e-mail marketing, não deixe de comentar neste artigo sobre o Mailee ou outras opções. Feedback sempre é útil para quem presta os serviços.
Se você tem um e-commerce ou uma loja, aproveite o fim de ano para tentar dar um boost nas suas vendas, usando ferramentas como o Mailee para atingir seus clientes. Logo na homepage do site, você pode assistir um video screencast para se familiarizar com as funcionalidades: