Tags do Post ‘Ruby’
Cloud Crowd: A primeira action
Postado por: Rafael Biriba em Ruby em 08/02/2010
Cloud Crowd é um controlador de filas para processamento paralelo, desenvolvido em ruby. Pode ser utilizado em Encoding de video, migração de arquivos e bancos de dados, redimensionamento de imagens e etc…
Uma explicação rápida: Em uma máquina você levanta o server, onde é gerenciado a fila (criação, exclusão, status das tarefas e etc…). Em outras máquinas você levanta o node, onde as terefas serão recebidas e executadas. Ao terminar, o node informa ao server, liberando-se para receber outra tarefa.
Essa semana comecei a desvendar os benefícios do Cloud Crowd, principalmente para encoding paralelo de vídeo. Mas antes, tive que entender como ele funciona e o que tem para nos oferecer.
Então, acompanhando o “tutorial” em http://wiki.github.com/documentcloud/cloud-crowd/writing-an-action, escrevi uma pequena action:
class HelloWorld < CloudCrowd::Action def process Thin::Logging.log("HelloWorld :: -- criando arquivo #{input}!") `touch #{input}` 0 end end
Você passa um nome qualquer, e o script cria um arquivo em branco. Simples !?, Mas serviu bem para meus primeiros testes.
Também aproveitei e usei o log do Thin que é o servidor que o Cloud Crowd levanta, para registrar o evento de dentro da action… Isso significa que as mensagens de log da minha action foram registradas no arquivo de log do node que a executou… Se preferir você pode utilizar o Logger do Rails. Como foi apenas um experimento, utilizei o do Thin mesmo.
Cadastrando tarefas:
Para começar a utilizar sua action, você precisa postar um JSON com as informações necessárias no server, para cadastrar uma tarefa. (Não preciso lembrar que o server e algum node deve estar rodando, certo ?)
Para isso, crie um script ruby, ou rode pelo irb os comandos*:
require 'rubygems' require 'restclient' require 'json' RestClient.post('http://localhost:9173/jobs',{:job => { 'action' => 'hello_world' , 'inputs' => ['/home/rafael/arquivo_teste1', '/home/rafael/arquivo_teste2']}.to_json})
Considerando que o server está rodando na máquina que rodou o script. Caso contrário, altere o localhost pelo ip do Server. E os arquivos são criados (pelo comando “touch”) na máquina que roda o Node. Para fins de teste e desenvolvimento, é possível rodar o server e o node na mesma máquina, já que eles sobem em portas diferentes…
Então é isso… Você já pode paralelizar qualquer tarefa. Basta escrever suas próprias actions…
Evento recomendado: Dev in Rio 2009
Postado por: Rafael Biriba em Carreira, Eventos em 25/08/2009

http://www.devinrio.com.br/
O evento (www.devinrio.com.br) que acontece no dia 14 de setembro, traz excelentes conteúdos para a área de tecnologia.
De acordo com o blog de um dos organizadores (Guilherme Chapiewski), a programação conta com três palestrantes nacionais e três internacionais falando sobre Open Source, Java, Ruby on Rails, Django e desenvolvimento ágil de software.
A inscrição está saindo por R$ 65,00 e pode ser feitas através deste link: http://devinrio.com.br/inscricoes_bra.php. Se você acha caro, dê uma analisada no conteúdo do evento e verá que vale a pena o investimento. Dá para pagar em até 15x no cartão de crédito.
Abaixo segue uma mini-agenda do evento. A agenda completa pode ser conferifa no site do evento (www.devinrio.com.br)
Agenda:
08:30 h: Credenciamento e visita aos estandes
09:30 h: Abertura Oficial (Guilherme Chapiewski e Henrique Bastos)
10:00 h: … Comunidades do Joomla! e Open Source estão mudando o mundo! … (Ryan Ozimek)
11:00 h: O Java está morto? (Guilherme Silveira e Nico Steppat)
12:00 h: Intervalo para almoço
13:30 h: Ecossistema Ruby on Rails (Fabio Akita)
14:30 h: Django: o framework web para perfeccionistas com prazos (Jacob Kaplan-Moss)
15:30 h: Intervalo
16:00 h: Desenvolvimento ágil e iterativo de produtos - a confirmar (Jeff Patton)
17:00 h: Bate-papo com os participantes! (Vinicius Manhães Teles)
18:00 h: Encerramento e #Horaextra
Se você trabalha/estuda na área de tecnologia, está mais do que convidado à participar do evento.
Não esqueça de chamar seus amigos.
De acordo com o Guilherme, as vagas estão sendo preenchidas mais rápido do que o planejado, então corra e garanta logo a sua.
Vejo vocês lá !
Ruby: Alternativas para require ‘rubygems’
Postado por: Rafael Biriba em Desenvolvimento, Ruby em 29/04/2009

Baseado no comentário de Guilherme Chapiewski encontrado em http://www.rafaelbiriba.com/2009/04/13/ruby-require-rubygems.html, resolvi postar alternativas para suprir essa necessidade do require ‘rubygems’ e porque é errado utilizá-lo !
Primeiramente, vamos para a pergunta que originou este post:
O que há de errado em utilizar require ‘rubygems’ no meu script ?
Bom, analisando o exemplo que eu dei no post do require rubygems, transcrito logo abaixo, onde se você quiser utilizar o pacote “hpricot”, instalado pelo comando gem install hpricot, o código não irá rodar, retornando um erro referente ao rubygems. Usando o require ‘rubygems’ o problema é resolvido, mas não está correto. O motivo é bem simples. Primeiro vamos ver o código em questão:
require 'hpricot' require 'open-uri' meuXml = Hpricot.XML(open("http://www.exemplo.com/exemplo.xml"))
Concordam comigo que o código acima, é uma simples aplicação em ruby ? O que eu quero dizer é que você pode instalar o hpricot de várias maneiras diferentes ! Por exemplo, acessando o link: http://wiki.github.com/why/hpricot/installing-hpricot, você pode observar que o Hpricot pode ser instalado sem o Rubygems. Sendo assim, ao usar o require “rubygems” em um máquina que não tem o rubygems instalado, vai dar problema na execução !
Então o que fazer se eu instalei o Hpricot pelo rubygems ? Simples…
Você pode facilmente rodar o seu script incluindo -rubygems na linha de comando, conforme o exemplo abaixo:
ruby -rubygems meu_script.rb
Isso fará rodar o pacote rubygems antes de executar sua aplicação meu_script.rb
Fonte: http://gist.github.com/54177
Ruby: require ‘rubygems’
Postado por: Rafael Biriba em Desenvolvimento, Ruby em 13/04/2009

Essa semana estive escrevendo alguns códigos usando Ruby on Rails, e encontrei um problema, que demorei um pouco para descobrir sua solução, mas no fim se tratava de algo muito simples e lógico.
Ao instalar o Rails e qualquer outro pacote pelo rubygems ( gem install hpricot, por exemplo), para importar esse pacote no código, é necessário importar a biblioteca do rubygems primeiro.
Manual do RubyGems ( http://docs.rubygems.org/read/book/1 ).
Na prática, eu estava utilizando o código abaixo:
require 'hpricot' require 'open-uri' meuXml = Hpricot.XML(open("http://www.exemplo.com/exemplo.xml"))
Este codigo abre uma URL, captura seu XML e armazena o conteúdo em uma variável ( string ).
Porém, isso só é possível se incluir a biblioteca do rubygems. Verifique o código abaixo, desta vez, funcionando:
require 'rubygems' require 'hpricot' require 'open-uri' meuXml = Hpricot.XML(open("http://www.exemplo.com/exemplo.xml"))
Bom, então é isso !
—————–
Baseado no comentário recebido depois da publicação deste Post, visite também:
http://www.rafaelbiriba.com/2009/04/29/ruby-require-rubygems-alternativas.html
Ruby: Aprenda a programar
Postado por: Rafael Biriba em Desenvolvimento, Ruby em 04/04/2009

Nas últimas semanas estive empenhado para aprender Ruby on Rails. Procurei aqui e ali na internet, juntei conteúdo de todas as partes e blogs, para aprender cada vez mais.
Para quem não sabe, Ruby on Rails é um framework para desenvolvimento Web, bem mais fácil de trabalhar comparando com outras linguagens Web.
Como diz no site do Rails, “Mostre, não fale: Ver é acreditar !”, visite o link abaixo e veja alguns exemplos de Rails na prática:
http://www.rubyonrails.pro.br/apresentacoes
Depois de vários dias, descobri um site ótimo para quem quer aprender a programar: ( Pena não ter encontrado ele antes )
http://aprendaaprogramar.rubyonrails.pro.br/
O site apresenta capitulos divididos em 11 links. A didática é ótima, e diz o autor que os exemplos encontrados no site são realmente “executados” , ou seja, o resultado do exemplo que você vê no site, realmente é executado. Isso é apenas um dos benefícios de usar o Ruby on Rails.
Eu recomendo tanto o site, quanto a linguagem para todos os programadores/desenvolvedores. Inclusive eu recomendo também para os futuros programadores. Quem tem pouco conhecimento na área, vai facilmente aprender a lógica de programação e a linguagem de maneira simplificada.
Em falar nisso, eu achei extremamente fácil de aprender e entender. Pra quem quer começar, visite o site abaixo para baixar a última distribuição do ruby:
http://www.ruby-lang.org/pt/downloads/
Ou então visite direto o site do Ruby on Rails, utilizem seus links para o download tanto do ruby quanto do rails*:
http://www.rubyonrails.pro.br/down
Neste mesmo link ainda exemplos de como criar sua primeira aplicação em Rails.
* Instalação do Rails e muitos outros pacotes, serão efetuadas pelo gerenciador RubyGems.
Bom, espero que se divirtam… =)



