31 agosto 2011

Enquete

Esse ano tem sido um pouco conturbado para mim. Tentei iniciar projetos próprios que foram por água abaixo, tentei ressuscitar um projeto antigo, tentei uma parceria que não deu certo, um que está dando certo, aprendi Ruby e Rails (a meta de aprender uma linguagem por ano está dando certo), abandonei Java por uns meses, voltei a programar em Java e finalmente encontrei um emprego em uma boa empresa (essa aqui). Nem tudo exatamente nessa mesma ordem...

Depois de tudo isso cheguei a conclusão de que deve dar um tempo em projetos pessoais, principalmente por não ver mais sentido neles. Mas pretendo voltar a desenvolver um projeto pessoal e mantê-lo como um passatempo e base para aprendizado, para tanto decidi fazer uma enquete aqui no blog sobre qual sistema web seria mais interessante/útil para as pessoas. Irei trabalhar no sistema mais votado dessa enquete.

As opções são (com mais detalhes):

  • Um sistema de controle de manutenção para veículos - É o e-Karros que já apresentei aqui, mas será reescrito e melhorado caso seja escolhido;
  • Um sistema de controle financeiro para casais (conta conjunta) - Seria uma evolução do Econodin, preparado para facilitar a vida dos casais que querem controlar cada um seu dinheiro, mas querem também controlar juntos as finanças do casal;
  • Uma rádio online com playlists pessoais e recursos sociais - Cansado de ouvir rádios que só tocam as músicas da moda? Quer ouvir novos sons, músicas recomendadas por outras pessoas? Quer criar playlists facilmente e mantê-la em sua conta para ouvir a hora que quiser? Tentaremos resolver esses problemas com uma nova rádio online;
  • Um sistema onde você pode registrar suas viagens pelo smartphone - Você registra suas viagens traçando uma rota através do GPS do smartphone, adiciona fotos (e talvez vídeos curtos) dos lugares que você visitou diretamente do smartphone com a geolocalização da foto e com os devidos comentários, e poderá compartilhar a viagem com os amigos através de um sistema web.
Todos com opções de contas gratuitas para utilização. Votem ai ao lado. Sugestões e perguntas são sempre benvindas.

14 abril 2011

Rails - Formatando data para exibição

Dica para formatar data e hora para exibição no Rails.

No arquivo /config/environment.rb crie entradas de acordo com a formatação que você precisa, como por exemplo;
Time::DATE_FORMATS[:data_br] = "%d/%m/%Y"
Time::DATE_FORMATS[:dia_semana] = "%A"
Time::DATE_FORMATS[:hora] = "%H:%M horas"
Feito isso, agora podemos utilizar a formatação chamando o método to_s para a data em questão passando como parâmetro o símbolo definido, como por exemplo:
<%= @objeto.data.to_s(:dia_semana) %> 
O resultado é o dia da semana escrito por extenso.

Rails - Exibindo conteúdo HTML gravado no banco de dados

As vezes precisamos salvar algum conteúdo HTML (gerado por um editor HTML por exemplo) no banco de dados e depois recuperá-lo e exibir em uma página web. Nos projetos Rails que tenho trabalhado ultimamente tenho essa necessidade, porém quando ia exibir esse conteúdo, o mesmo era exibido como texto puro mostrando todas as tags HTML.

A solução para isso foi utilizar o helper "raw" do Rails, o qual faz com que as tags HTML sejam corretamente interpretadas. Para utilizar pasta fazer o seguinte:

<%= raw @objeto.texto_html %>

Trabalhando com SVG e JavaScript

No projeto que estou trabalhando atualmente tenho a necessidade de criar um editor de capas para livros online. Como não encontrei nada que me servisse já pronto, acabei por criando um editor simples do zero.

Pelas características do editor, cheguei a conclusão de que o melhor seria criá-lo utilizando SVG, e optei pela biblioteca Raphaël JS para trabalhar com SVG via JavaScript.

Utilizar a biblioteca é simples, tem bastante recursos, e o que não está descrito na documentação pode ser encontrado com uma pesquisa no Google e uma boa lida na especificação do SVG.

Uma coisa muito interessante no Raphaël JS é a possibilidade de se utilizar plugins, e um plugin muito interessante que precisei utilizar é o raphael.serialize, que tem a função de exportar para json os dados SVG do trabalho feito com a biblioteca, e também de importar os dados em formato json novamente para a biblioteca Raphaël JS.

31 março 2011

Devise: Atualizando dados do usuário sem informar a senha

No projeto Rails que estou trabalhando estou utilizando o Devise para autenticação, e tive a necessidade de deixar o usuário alterar seus dados sem precisar informar sua senha.

Após testar algumas opções do how-to do Devise, a melhor forma de fazer isso foi sobrescrever o método update_with_password, adicionando ao model o seguinte método:

  def update_with_password(params={}) 
    if params[:password].blank? 
      params.delete(:password) 
      params.delete(:password_confirmation) if params[:password_confirmation].blank? 
    end 
    update_attributes(params) 
  end

Feito isso, está pronto. Agora os usuário poderão alterar seus dados sem precisar informar a senha, e para alterar a senha basta informar a nova senha e a confirmação da nova senha.

22 março 2011

Utilizando o form Select do Ruby on Rails - dica1

Ótima dica de como se utilizar o form Select do Rails com preenchimento manual das opções.
Utilizando o form Select do Ruby on Rails - dica1

Jquery-rails - Problema ao cancelar uma confirmação

No projeto que estou desenvolvendo agora me deparei com o seguinte problema: ao clicar em um link para excluir um registro, clicando em cancelar no diálogo de confirmação a exclusão era executada.

Solução: Substituir o arquivo rails.js pelo arquivo mais recente https://github.com/rails/jquery-ujs/blob/master/src/rails.js.

01 março 2011

Brazilian Rails

Acabo de encontrar um projeto muito interessante para programadores Ruby brasileiros. O projeto Brazilian Rails "é um conjunto de gems para serem usadas com Ruby e com o Ruby on Rails e tem como objetivo unir alguns recursos úteis para os desenvolvedores brasileiros".

Muito útil.

Traduzindo o will_paginate

Continuando com as dicas so Ruby on Rails, segue o link com a dica de como fazer a tradução do will_paginate utilizando o suporte a i18n.

http://blog.areacriacoes.com.br/2008/12/1/dica-traduzindo-will_paginate

24 fevereiro 2011

Aplicando localização pt-BR no Ruby on Rails

Desde pouco mais de um mês para cá decidi aprender Ruby on Rails. Ainda estou no início da aprendizagem, mas já pude notar que a diferença de produtividade frente a Java é gritante. Outra coisa que posso dizer é que é muito gostoso desenvolver com RoR.

Estou desenvolvendo uma pequena aplicação para aprender melhor, e a ideia é postar aqui algumas coisas que vou aprendendo sobre a linguagem e o framework. A primeira dica é sobre a localização da aplicação Rails para pt-BR, que contém a tradução das mensagens e rótulos das interfaces também (definição simplista).

O primeiro passo é pegar o arquivo de localização pt-BR.yml em https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale e colocá-lo no diretório config/locales de sua aplicação.

Em seguida deve-se definir qual a localização padrão da aplicação. Para isso, no arquivo config/application.rb deve-se adicionar a linha

config.i18n.default_locale = "pt-BR"

Pronto! Agora é só conferir. Caso queria alguma personalização, é só editar o arquivo config/locales/pt-BR.yml.

Para outras localizações é a mesma coisa.