Automatizando tarefas e gerando um script Ruby executável

28 10 2010

Ruby é uma linguagem muito prática, e a montanha de gems disponíveis para as mais diversas tarefas torna a escolha perfeita para automatizar tarefas repetitivas (o famoso CornoJob).

Temos um aplicativo web aqui no trabalho com formulários gigantescos que têm que ser preenchidos em uma ordem específica. Eu perdi muito tempo procurando plugins para browser, ferramentas de automatização, mas nenhuma me permitia customizar o suficiente para atender minha necessidade.

Foi então que conheci o Watir.

Instalei a gem, fiz o script que preenche o formulário, valida os dados no BD, entre outras coisas que tomavam um tempo muito grande e eram chatos pra caramba de se fazer. Um trabalho puramente manual e sujeito a falhas de digitação.

Outro script automatiza a criação de sites no IIS, configura um aplicativo PHP para gerenciamento de arquivos remotamente.

Esse segundo me fez procurar um modo de gerar executáveis (.exe) dos meus scripts já que eu não quero instalar o ruby no servidor.

Encontrei então essa a gem OCRA que resolve o problema perfeitamente. Ela embute o interpretador, gems, dlls e arquivos que seu script usa, gerando um executável comprimido.

Desse modo, posso distribuir meus scripts sem que a máquina que vai rodar tenha que instalar o interpretador, e principalmente, sem que eu tenha que trocar de linguagem 😀

Anúncios




Aprendendo VIM

10 08 2010

Quando comecei a estudar Ruby on Rails, a primeira coisa que procurei foi uma IDE.

Anos trabalhando no Visual Studio tornaram inconcebível a idéia de desenvolver sistemas sem ter um ambiente integrado com debug, editor visual e de código, wizards, integração com controle de versão etc.

Antes trabalhar com .NET eu tinha longos anos trabalhando somente com editores de texto, tanto em PHP quanto em ASP e PL/SQL. Voltar a usar um simples editor me parecia um retrocesso. Procurando por uma experiência no mínimo semelhante ao VS, encontrei o RubyMine que foi o que me fez sentir mais “em casa”. Fiz muito dos meus aplicativos de estudo nele, e não tinha do que reclamar. O autocomplete estava lá, debug, integração com controle de versão, code highlight…

Mas os desenvolvedores ROR mais famosos não o usavam. Estavam todos divididos entre o TextMate e o (G/Mac)VIM. Li um pouco sobre o TextMate e os bundles não me empolgaram, não havia nada de novo ali para mim. O TextMate faz o que a maioria dos editores avançados faz (até onde minha pesquisa chegou, pelo menos), e a obrigatoriedade de usar o OSX matou qualquer possibilidade de usá-lo.

Já o VIM, era um velho conhecido. Sabe aquele cara que você encontra todo dia no trabalho e cumprimenta, mas não sabe nem o nome e nem em que trabalha? Esse era o VIM pra mim. Nos encontramos no Linux, no Solaris e no BSD mas sempre foram encontros rápidos. Nada além de abrir um arquivo, apertar “i”, editar algumas linhas, ESC, :wq! e adeus editor bizarro. Instalar o nano, quando possível era o que eu fazia, afinal era um editor normal que eu conseguia usar naturalmente. Porém, todo post que eu lia sobre o VIM falava maravilhas. O ganho de produtividade era imenso, as tarefas mais complexas eram triviais.

O Akita fez um post onde ensinava a deixar o VIM pronto para o desenvolvimento em Rails que eu decidi seguir e….

… realmente o bicho ficou bonitinho! Mas continuava bizarro. Ficar alternando entre modos não era nada natural e eu mais uma vez, desencanei.

Continuei meus estudos e num dia falando com o Leo, pedi para ele mostrar o uso do VIM. Puxamos a config dele do github, configuramos e realmente, algumas coisas pareciam amigáveis e sem dúvidas muito inteligentes. Havia muito pra aprender, muitas funcionalidades estavam em plugins e integrações com outras ferramentas.

Passei a usá-lo como editor principal, não só em Rails, e procurando na internet, no livro free tudo que não sabia fazer fui aprendendo a me virar. A curva de aprendizado é grande. Grande não, imensa! No início, tudo parece disperdício e perda de tempo. São muitos comandos para fazer tarefas simples, que num editor comum seriam triviais. Afinal, você está acostumado a apertar uma tecla, e a letra aparecer na tela.

Eu não sou nenhum pioneiro na migração para Rails. Muitas pessoas que eu acompanho dos tempos de .net também estão no mesmo caminho, muitos também começaram a usar o VIM como editor principal. Um caso em especial, é o do Rob Conery, um cara que eu sempre admirei pelo modo de pensar e pela qualidade do código. Em alguns posts recentes, ele falam sobre a experiência com o VIM. A comparação do VIM com cerveja é genial!

Enfim, o investimento tem se pagado, tenho me tornado cada dia mais produtivo. Passo então a ser mais um dos que diz: Cerveja é uma delícia! (leia o post do Conery!) Eu sei que você acha amarga e acha bizarro que eu e um monte de gente tome com tanto prazer.

Talvez provando você também possa entender os motivos. Eu vou compartilhar em alguns posts curtos a solução de alguns problemas que for encontrando no dia a dia (Com VIM, não com cerveja) e espero que sejam de alguma utilidade.

Seguem algumas fontes para pesquisa/estudo:

Vim 101 (dicas)
http://twitter.com/vim101

VimCasts
http://vimcasts.org/

PeepCode
http://peepcode.com/products/smash-into-vim-i
http://peepcode.com/products/smash-into-vim-ii

vimbook (Livro sobre o Vim em português)
http://code.google.com/p/vimbook/

Vim Tips Wiki
http://vim.wikia.com/wiki/Vim_Tips_Wiki





Gráficos em Silverlight – Free!

29 10 2008

Componentes para criação de gráficos em silverligh, free, opensouce ( dual license, na verdade), com suporte a diversas linguagens.

Vale a pena visitar o site: Visifire





Cavalgando Cavalos Mortos

23 10 2008

Dakota tribal wisdom says that when you discover you are riding a
dead horse, the best strategy is to dismount. However, in business
we often try other strategies with dead horses, including the
following:

Buying a stronger whip.
Changing riders.
Say things like, "This is the way we have always ridden this horse."
Appointing a committee to study the horse.
Arranging to visit other sites to see how they ride dead horses.
Increasing the standards to ride dead horses.
Appointing a tiger team to revive the dead horse.
Creating a training session to increase our riding ability.
Comparing the state of dead horses in todays environment.
Change the requirements declaring that "This horse is not dead."
Hire contractors to ride the dead horse.
Harnessing several dead horses together for increased speed.
Declaring that "No horse is too dead to beat."
Providing additional funding to increase the horse’s performance.
Do a Cost Analysis study to see if contractors can ride it cheaper.
Purchase a product to make dead horses run faster.
Declare the horse is "better, faster and cheaper" dead.
Form a quality circle to find uses for dead horses.
Revisit the performance requirements for horses.
Say this horse was procured with cost as an independent variable.
Promote the dead horse to a supervisory position.

http://dotnet.org.za/armand/archive/2007/01/25/DeadHorses.aspx