Programador ou Desenvolvedor?

A diferença entre um programador e um desenvolvedor de software é muito grande, mas quase sempre ignorada.

Presa à um paradigma completamente equivocado, a “indústria” do software busca imitar a indústria “convencional”, baseada no trabalho manual, seguindo muitas das idéias de Taylor e Adam Smith.

Essas idéias e princípios funcionam muito bem no chamado trabalho manual, que, em geral, atinge sua máxima eficiência quando organizado na forma de linha de montagem, com alta especialização e divisão de tarefas. Mais uma vez: desenvolvimento de software não funciona como linha de montagem.

Leia o artigo completo

Auto-escaping de HTML em sua aplicação Rails

Um ataque muito comum contra aplicações Web ultimamente é o cross-site scripting (XSS).

Uma das formas de executar esse ataque é aproveitar campos que aceitam a entrada de HTML para inserir links para código malicioso, geralmente em JavaScript ou VBScript. Desta forma, o script de um domínio não confiável é executado no contexto de um site confiável.

Luke Francl, do Rail Spikes, desenvolveu o plugin xss_terminate, baseado no plugin acts_as_sanitized. Este plugin trata todos os campos dos modelos de sua aplicação Rails para evitar a inserção de código malicioso. Desta forma, o uso do método h() em suas views torna-se desnecessário. O plugin é configurável, permitindo que o desenvolvedor defina campos que não devem ser tratados.

No mesmo post, Luke ainda fala sobre o uso de Erubis para aumentar a segurança e aponta outras alternativas.

Code smells

Você sabe o que é um “code smell“? Bem, mesmo sem saber a definição, são muito grandes as chances de que você já tenha se deparado com um.

Code Smell é um sintoma de que algo no código pode estar errado. Geralmente indica a necessidade de um refactoring ou de alteração estrutural da aplicação.

Alguns code smells muito comuns são:

E você, o que já viu por aí?

Veja também:

Code smells taxonomy
Refactoring.com

Rubylearning: mais uma turma em Março

Satish Talim me informou hoje que a quarta turma para seu curso online gratuito de Ruby terá início em 1º de Março.

A última turma teve 2190 participantes, dos quais 35% eram brasileiros.

Se tiver interesse, faça sua inscrição aqui.

Erro ao instalar gem: undefined method `[]=’ for Gem::ConfigFile

Há alguns meses me deparei com este erro quando configurava o ambiente de desenvolvimento de Ruby on Rails no Ubuntu Linux em meu computador. Hoje, ao fazer o mesmo no computador que uso no trabalho, ocorreu a mesma coisa.

Em ambos os casos estava utilizando o pacote Ruby instalado via Synaptic (sudo apt-get ruby-full e sudo apt-get rubygems).

No meu computador pessoal, a solução foi editar o arquivo config_file.rb (localizado no diretório onde está instalado o rubygems, no meu caso é /usr/local/lib/site_ruby/1.8/rubygems) e adicionar o seguinte método:

def []=(key, value)
  @hash[key.to_s]=value
end

(encontrei essa solução aqui: Gems through the proxy (or the «undefined method `[]=’» error) )

Já no computador da empresa em que trabalho, apaguei todos os pacotes relacionados ao Ruby e instalei tudo (ruby e rubygems) manualmente a partir dos fontes.

Bom, que o Google indexe essa página e essa solução não fique tão escondida. Se você souber alguma outra solução, comente.

Entendendo sistemas distribuídos de controle de versão (Git, Mercurial etc)

dvcs

Você ouviu falar de Git e DVCS (Distributed Version Control System) mas ainda não entendeu bem o conceito? Bom, você não está sozinho.

Deixo aqui duas boas referências para aprender mais sobre o assunto:

Boa leitura.

Thin 0.5.3 “Purple Yogurt”

Na última sexta-feira, Marc-André Cournoyer anunciou o release da versão 0.5.3 do servidor Thin (codename Purple Yogurt).

Contando com mais dois desenvolvedores na equipe (Kevin Williams e James Golick), o Thin agora também é distribuído como gem pré-compilado para Windows.

EDIT: já saiu a versão 0.5.4.

Leia mais:
http://glauche.de/2008/01/14/how-many-thin-server-instances-are-best/
http://www.deze9.com/jp/blog/post?p=current-uptime-of-the-thin-server…
http://blog.rayngwf.com/2008/01/thin-ruby-web-server-that-is-really.html
http://glauche.de/2008/01/12/thin-nginx-with-rails/

Tradução - Produtividade do desenvolvedor: Média vs. Mediana

Neal Ford, da ThoughtWorks, foi muito gentil ao permitir que eu traduzisse seu artigo “Developer Productivity Mean vs. Median“.

O artigo fala sobre algumas falsas crenças da “indústria” do software: linguagens restritivas, economia na forma de contratação de desenvolvedores medíocres e tentativa de encurtamento de prazos de entrega através da adição de mais pessoas aos projetos, entre outras.

Boa leitura!

Veja o artigo completo…

Sun anuncia compra da MySQL AB

A Sun e a MySQL AB anunciaram um acordo de compra no valor de 1 bilhão de dólares.

Creio que isso ajudará na adoção do MySQL, pois muita gente só adere a novas tecnologias ou produtos quando há “grandes nomes” investindo.

E você, o que acha? É bom ou ruim?

Acertaram outra vez?

A Apple acaba de lançar o MacBook Air. Provando mais uma vez ser uma empresa com opinião, redefiniu muitos conceitos sobre equipamentos ultra-finos.

Enquanto outras empresas sacrificam usabilidade (telas muito pequenas, mini-teclados) e poder de hardware em busca de manter padrões de notebooks “normais” (diversas entradas, slots para cartões, drives de DVD), a Apple aposta na “era Wi-Fi”, dispensando conectores (o MacBook Air possui uma entrada USB 2.0, uma entrada para headphone e uma mini-DVI) e o drive óptico, mantendo a tela de 13.3 polegadas e um teclado completo.

Será que eles acertaram outra vez?

Next Page →