JSMask – Máscara em campo texto

Como anunciei no twitter, hoje a tarde criei um plugin para resolver alguns problemas que tínhamos com datas. Basicamente, precisávamos que os campos de datas do sistema tivessem uma máscara.

Já vinha utilizando, em um outro projeto, alguns javascripts. O grande problema que eles são “gordos” e tem muita coisa implementada de forma “estranha”.

Então resolvi criar um javascript para resolver o problema. Então surgiu o JSMask 0.1, baseado no LowPro e no Xaprb.InputMask.

Em partes resolvia meu problema, mais não era integrado com Rails. Então mais alguns códigos e surgiu o Plugin JSMask 0.1.

Para demonstrar as funcionalidades do plugin, fiz um pequeno tutorial. Vamos testar ?

Preparando o ambiente

Este tutorial foi baseado no Rails 2.0, então a primeira coisa é verificar se você está utilizando a versão correta:

$ rails -v
Rails 2.0.2

Tudo certo então vamos criar nossa aplicação para demonstração:
$ rails jsmask_demo

As configurações de banco de dados ficam por conta de vocês. Vamos criar o banco:
$ rake db:create:all

Vamos gerar nosso scaffold:
$ script/generate scaffold Schedule begin:date end:date

Isto vai gerar os Controller, Helper, Model, Migration e os testes. Agora é só executar os migrations:
$ rake db:migrate

Já temos nossa aplicação, com a inserção de datas no padrão do rails:
js_mask_01

Instalando o plugin

O plugin está no github e para instalar:

$ git clone git://github.com/ozeias/js_mask.git vendor/plugins

Para o Edge Rails (>= 2.1)
$ script/plugin install git://github.com/ozeias/js_mask.git

Utilizando o Plugin

Agora é simples, vamos alterar nossas views geradas pelo scaffold e testar o plugin:

Vamos criar um partial para ficar DRY e nele inserir a funcionalidade do plugin:

E o resultado:
js_mask_02

Os formatos de máscara suportados são:

  • date_iso: 2008-05-23
  • date_br: 21/05/2008
  • time: 10:46:55
  • phone: (00)0000-0000
  • ssn: 000-00-0000
  • visa: 0000-0000-0000-0000

A primeira versão é muito básica, vou fazer alguns ajustes e adicionar novas funcionalidades em breve. Sugestões, dicas e críticas são bem-vindas.
Source code: http://github.com/ozeias/js_mask/tree/master

Exemplo: jsmask_demo.tar.gz

Se o plugin estiver sendo útil para você, não se esqueça de me recomendar no working with rails.

Novo endereço do feed

rss

Resolvi dar mais uma arrumada na casa e alterar meus feed’s para o FeedBurner. Com isto terei mais controle sobre os assinantes e se trocar o endereço do site, a galera que assina não vai ter problemas.

Para assinar:
Todos: http://feeds.feedburner.com/osantana
Comentários: http://feeds.feedburner.com/osantana-comments

Para os atuais assinantes deixarei o antigo ativo por mais um tempo.

Em breve mais novidades!!!

Removendo o Firefox 3 do Ubuntu

Firefox

O novo ubuntu 8.04 LTS vem com muitas modificações interessantes e alguns programas que ainda são betas. Um deles é o Firefox, na versão 3.0 b5, que ainda está muito longe de ficar estável. Eu uso browser o dia inteiro, meu trabalho é web e, por isto, preciso que funcione. Não quero dizer que o novo Firefox é ruim, apenas não esta pronto para produção.

O grande problema é que os caras da Canonical deixaram como navegador principal esta versão beta. Até tem a 2.0.14, mais pra fazer funcionar meu deu dor de cabeça.

A primeira coisa a se fazer é instalar a versão 2.0.14:
sudo apt-get install firefox-2
O problema agora é que os Add-ons e os themes estão desativados, e você não consegue utiliza-los. Podemos resolver de duas maneiras:

Primeira opção:
firefox-2 - P

E agora é só criar um novo perfil, instalar todos os add-ons e themas novamente. Como é um perfil novo, você perdeu também suas configurações, histórico, etc…

A segunda opção:
rm -f ~/.mozilla/firefox/teu-profile.default/extensions.rdf

Pronto, resolvido o problema. Para chamar o Firefox sem ser via console, altere os atalhos para:
firefox-2

Vale lembrar que se for aberto o Firefox 3 novamente ele cria o arquivo e você terá que apaga-lo.

Mini Curso de Rails

Ontem foi realizado o segundo mini – curso de Rails aqui em Toledo. No ano passado dei uma introdução a linguagem Ruby, mais este ano foquei no framework, e foi interessante. Tivemos um bom número de participantes e o mais importante foi saber que a galera gostou.

Foi um curso nos moldes de um blog em 15 minutos, falamos um pouco sobre o que é o Rails, desenvolvemos um mini blog e falamos sobre a melhor comunidade que já encontrei, a comunidade Rails.

Assim que tiver as fotos do evento vou postar aqui. Abaixo segue os slides da curso e o mini blog para download. Obrigado a todos que participaram.

Agora vamos tentar organizar um Paraná On Rails, já conversei com o Fábio Akita e com o Carlos Brando. O Júlio Monteiro já se dispôs a dar uma palestra e também ofereceu o Treina Tom para o evento. Tem tudo para ser um sucesso.

Agradecimentos:

Rails 2.1 RC1

O DHH acabou de fazer um pequeno anúncio no twitter sobre o lançamento do Rails 2.1 RC1. Segundo ele as gems já estão no servidor beta.

Rails 2.1 RC1 has been tagged, the gems are on the beta server, official announcement shortly. But no need holding you back from trying it

Para acompanhar as novidades acessem o blog do Calos Brando e sua série Edge Rails. Boas novidades estão chegado, vamos testar.

UPDATE:

Para instalar o Rails 2.1 RC1 do servidor beta, basta executar:
$ sudo gem install rails –source http://gems.rubyonrails.com/
Ou:
$ git clone git://github.com/rails/rails.git
$ git pull
$ git checkout v2.1.0_RC1
$ git checkout master
$ rake rails:update
$ script/dbconsole

Hoje de manhã saiu um novo episódio do Railscast com o procedimento de atualização.

TweetWheel – Descubra a sua rede de amigos

tweetwheel

Estou começando a usar o twitter, mais por curiosidade e, pra ser sincero, também não entendi muito para que serve. Andei dando uma olhada em addons para o firefox e widget/badge em gerais.

Uma das coisas que eu achei foi o TweetWheel, uma aplicação que gera um gráfico com os teus contatos. Me parece um mapeamento dos teus contatos e contatos em comum.

Dicas ?

Rails escala?

Fábio Akita

A duas semanas voltou a tona a discussão de que Rails não escala. Tudo porque alguém ouviu falar que não sei quem tinha falada que o Twitter iriá mudar de Rails para qualquer outra coisa que tenha escalabilidade.

Mais que diabo é escalabilidade? O que torna uma linguagem escalável? Por que de tanto bafafá por causa de um framework?

Eu trabalho quase que 100% em Rails hoje e gosto disto. Apanhei muito das macacas de auditório e ainda hoje escuto muito, mais nada me deixa tão indignado quando falam de escalabilidade. Meu professor de Engenharia de Software, muito competente por sinal, sempre enfatizou que tudo pode escalar, depende somente de como você irá fazê-lo.

Quase sempre será possível adicionar mais hardware ou mais servidores web. A questão então não é se Rails escala, mais sim quantos servidores você irá precisar para um sistema de grande porte, quanto você vai precisar de arquitetura de rede e quantos analista cuidará de tudo isto. Pronto, você acabou de escalar.

Na entrevista (ou besteirol) do Alex Payne, ele salienta o seguinte:

The problem is that more instances of Rails (running as part of a Mongrel cluster, in our case) means more requests to your database. At this point in time there’s no facility in Rails to talk to more than one database at a time.

Na realidade o grande problema são os desenvolvedores deles, os Twitter’s estão mais ligados em publicidade e marketing do que em tecnologia. Uma boa pesquisada no Google e vão ver que é possível fazer com que um cluster conecte ao mais de banco. O resto é balela.

Portanto, o grande problema é que tem muita gente que só quer falar mal, não só de Ruby, mais de tudo que é novo e tem um futuro promissor. Um bando de incompetentes que se escondem atrás de certificações e diplomas comprados.

Assim, Ruby ou qualquer outra linguagem escala basta ser competente.

Update:
Acabei de colocar a foto do Akita dando uma palestra no FISL 2008. Detalhe: juro que não sabia desta foto quando escrevi este post. A foto original está aqui e a dica foi dada pelo Leonardo Torres.

ImageScience e suas dependências

Final de semana aproveitei para atualizar meu blog para o mephisto 0.8, e dar uma ‘arrumada na casa’. Segui os procedimentos de instalação e tudo ocorria muito bem quando ele reclamou a não existia da biblioteca do ‘FreeImage.h’.

O problema não é só para quem vai atualizar o mephisto, mais para todos que usam o gem ImageScience, uma alternativa muito

rápida ao RMagick. Vale lembrar que não é um problema do mesmo, a biblioteca freeimage é uma dependência dele, e não é exigida na instalação.

Mais vamos a resolução:

Para distros derivados do Debian

$ sudo gem install libfreeimage3 libfreeimage-dev

Para demais distros

$ cd /usr/local/src
$ sudo wget http://ftp.cica.es/ubuntu/ubuntu/pool/universe/f/freeimage/freeimage_3.9.3.orig.tar.gz
$ sudo tar -xvf freeimage_3.9.3.orig.tar.gz
$ cd freeimage-3.9.3.repacked/FreeImage
$ make
$ sudo make install

Depois é só instalar os gems:
$ sudo gem install rubyinline image_science

Simples não ?!

Gerando PDF com o RTeX no Rails

RTeX é uma biblioteca ruby usado para gerar documentos pdf usando LaTeX.

Instalando o LaTeX

O processo de instalação é muito básico, mais para quem está começando pode complicar com um pouco. Para inicio de conversa precisamos instalar a biblioteca LaTeX no seu sistema. Em sistemas linux (testei no ubuntu):
$ sudo apt-get install tetex-base tetex-bin texlive-base-bin

Instalando o RTeX

A maneira mais fácil de instalar o RTeX é usando o Rubygems:
$ sudo gem install rtex

Instalando o Plugin na sua aplicação

Para usar o RTeX na sua aplicação Rails basta executar o seguinte comando:
$ rtex --install /caminho/da/sua/aplicação
Este comando instalará o plugin na sua aplicação (aplicação/vendor/plugins/rtex).

Usando o RTeX

Vamos criar os arquivos:

  • app/views/layouts/application.pdf.rtex
  • controllers/index.pdf.rtex
  • controllers/_seller.pdf.rtex

Nos arquivos:

UPDATE 24/05/2008:
Precisei fazer um novo projeto usando o rtex e me retornou o seguinte erro:
Template is missing
Missing layout layouts/application.pdf.erb in view path ~/myapp/app/views

Acontece que neste tutorial eu esqueci de instalar o rtex no projeto, então basta usar o comando:
rtex -i .

Fonte:

Vamos todos impedir a regulamentação da profissão de analista de sistemas

Vamos falar um pouco sobre o assunto mais badalado nas empresas de TI e na blogosfera. Regulamentação da Profissão de Analista de sistemas.

Eu teria aqui motivos para apoiar a lei, estou me formando, já trabalho na área e não teria que me preocupar com nada. O problema é que não suporte “filhinho de papai” com canudo na mão e “político safado”.

Não vou nem falar aqui do projeto. Quem quiser ler na integra é só acessar aqui.

Sempre questionei “profissionais” que diziam para mim que tinha certificações x, y, ou z. Pra mim certificações e cursos superior não dá ao individuo a capacidade de atuar na área de formação. Conheço ótimos programadores formados em contabilidade, matemática e até mesmo em filosofia, assim como, conheço caras que se formaram em Ciências da Computação ou Sistemas de Informação que nunca trabalharam na área.

Canudo não vai fazer do cara um bom profissional. Tem cara que conheço, formado com “grandes honras” que não entregam um sistema bem feito, é cheio de gambiarras e mais um monte de m… que só acaba com o sistema. Um bando de cabeças de repolhos, que querem acima de tudo defender um status de bom profissional porque são formados. Estes caras, na maioria das vezes, são um bando de filhinhos de papai que vão na faculdade para jogar Counter Strike (O Joguinho caro!!!) e agora vão ser beneficiados por mais uma lei porca deste país.

Como diz o Akita:“Grandes programadores não são formados. Grandes programadores se formam”. Caras bons correm atrás de conhecimento, são “nerds”, querem sempre mais, não vivem nas custas dos outros.

Outra coisa que me deixa irritado é a política brasileira. É difícil sair, quase um milagre, uma lei que beneficia a massa da sociedade, sempre tem alguém enchendo o bolso por trás. Desta vez não será diferente, conselhos e mais conselhos para burocratizar o setor, tirar gente muito boa do mercado e encher o “colchão” de verbas.

Tem coisas que só acontecem no Brasil mesmo.

Recomendo dar uma lida em: