Publicado por: Mário Marroquim em: Agosto 17, 2009
Motivado por este vídeo, eu resolvi escrever esse pequeno post sobre usabilidade. Tornar as coisas fáceis e divertidas para o usuário final é muito importante. A idéia de que “o funcionário não sabe o que quer” muitas vezes motiva o desenvolvedor a fazer boa parte das decições de design do projeto. Creio que realmente muitos usuários não têm idéia do que querem, mas outros têm. Devemos encontrá-los na empresa (talvez fazendo enquetes sobre qual tela é melhor ou que organização de campos ficou mais limpa). Saber aproveitar suas dicas sobre a interface do software é igualmente importante. Outra coisa: durante o desenvolvimento de um software, não deixe as conversas com o usuário final e preocupações com usabilidade para a fase final do projeto. Isso pode custar muito caro. Enquando você pensa na base de dados, logo no começo, ponha seus usuários finais para desenharem em um papel a “tela ideal para isso” e discutirem melhores formas de organizar o conteúdo. Ninguém sabe mais sobre o que o usuário quer do que ele mesmo.
Publicado por: Mário Marroquim em: Julho 11, 2009
Estou desenvolvendo um projeto pequeno, mas que considero muito relevante para muita gente. É o Fast Rails: uma aplicação Rails “blank” com autenticação, autorização de recursos, temas (incluíndo suporte ao Scaffold normal e ao ActiveScaffold), além de outras coisas. Criei um repositório no Github. Baixe uma cópia e ajude a testar!
Publicado por: Mário Marroquim em: Julho 6, 2009
Se algum dia você REALMENTE precisar desse dinheiro extra, certamente você poderá fazer um pequeno empréstimo de algum tipo. Os juros do cheque especial são geralmente bem mais altos do que os dos empréstimos. Segundo o site O Globo, a média dos juros para empréstimos é de 5.52% a.m. e a média para cheque especial é de 8.87% a.m.. Não faz muito sentido utilizar cheque especial.
Publicado por: Mário Marroquim em: Junho 30, 2009
Publicado por: Mário Marroquim em: Junho 11, 2009
Informo a todos que o meu serviço de vendas, Meu Feirão, foi descontinuado.
Publicado por: Mário Marroquim em: Junho 5, 2009
Lançado o blog dos Desunidos, o blog da equipe de desenvolvimento da Credishop. Não se preocupe, Desunidos significa Desenvolvedores Unidos!!!
Vamos colocar todo tipo de coisa relacionada a tecnologia, principalmente sobre desenvolvimento de software.
Publicado por: Mário Marroquim em: Junho 5, 2009
Fiz uma palestra o ERECOMPI 2009 junto com com o Constantino Neto, sobre Ruby on Rails na Credishop, onde nos trabalhandos. Aperreio danando mas tudo deu certo! Slides a seguir:
Publicado por: Mário Marroquim em: Junho 4, 2009
Achei esse template muito massa. Tudo arredondado e colorido! E agora coloquei minhas últimas “twitadas” e links do del.icio.us…
Publicado por: Mário Marroquim em: Junho 4, 2009
Faça parte da solução e não do problema. E pelo amor de Deus, só coloque conteúdo relevante na Internet (Twitter, blogs, etc). Chega de lixo.
Publicado por: Mário Marroquim em: Maio 29, 2009
Como muitos sabem, as versões mais recentes do Rails estão vindo com uma proteção muito bacana: Cross-Site Request Forgery. Basicamente, o Rails insere uma chave secreta, token, em cada formulário para validá-lo no servidor. Isso significa alguma proteção contra códigos de outros lugares que podem acessar sua aplicação Rails se passando por um formulário comum e confiável.
O problema é que isso interfere nas chamadas Ajax do plugin AutoComplete. Esse plugin faz chamadas Ajax afim de criar listas de opções filtradas de acordo com o que o usuário digita, como no campo de emails do GMail.
Para corrigir isso foi muito simples: no controller onde está a action para auto complete do campo, coloque:
class EmpresasController < AdministracaoController protect_from_forgery :except => [:auto_complete_for_record_cidade] active_scaffold do |config| config.columns = [:nome, :contato, :email, :telefone, :celular, :endereco, :bairro, :numero, :cidade, :ativo] config.list.columns = [:id, :nome, :contato, :email, :celular, :ativo] config.columns[:endereco].label = "Endereço" config.columns[:numero].label = "Número" config.actions.exclude :delete end def auto_complete_for_record_cidade @cidades = [] if not params[:record][:cidade].blank? and params[:record][:cidade].size>1 @cidades = Cidade.find(:all, :conditions =>["LOWER(descricao) LIKE ?","%#{params[:record][:cidade]}%"], :limit => 10,:order => "descricao ASC") end render :inline => "<%= auto_complete_result(@cidades,'descricao') %>" end end
O protect_from_forgery continua funcionando para todas as actions, com exceção da que é utilizada para o auto complete. Isso aí é bem melhor do que desabilitar de vez a proteção direto no seu application.rb…
Ah, quer saber como integrei o plugin AutoComplete com o ActiveScaffold para o campo cidade?
def cidade_form_column(registro, nome)
text_field_with_auto_complete :record,:cidade,{:class => "text-input"}
end
Bastou sobrescrever a geração automática do campo definindo o método para isso no helper do controller Empresa. O helper text_field_with_auto_complete aí substitui o text_field que o ActiveScaffold iria colocar por padrão!