Posts Tagged ‘localhost’

Ruby usando DRb (Distributed Ruby)

Postado em 18 jun 2009
Categoria(s) Ruby

DRb permite programas em Ruby se comunicar uns com os outros na mesma máquina ou através de uma rede, aplicação cliente/servidor. DRb utiliza o método de invocação remota (RMI) para transmitir comandos e dados entre os processos.

Nesse post vamos criar dois programas, o servidor e o cliente usando DRb.

Construíndo o servidor (server.rb):

1
2
3
4
5
6
7
8
9
10
11
require 'drb'
 
class Server
  def hello
    "Hello, This is a Distributed Ruby (DRb) Example"
  end
end
 
server_object = Server.new
DRb.start_service('druby://localhost:9000', server_object)
DRb.thread.join

Entendendo o código do servidor:

require 'drb'

A linha acima apenas requere a biblioteca DRb, essa biblioteca que a responsável por fazer a comunicação remota. Você pode encontrar mais informações a seu respeito em: http://www.ruby-doc.org/stdlib/libdoc/drb/rdoc/index.html.

class Server
  def hello
    "Hello, This is a Distributed Ruby (DRb) Example"
  end
end

O código acima apena cria uma classe e o método hello, que imprime uma mensagem.

server_object = Server.new
DRb.start_service('druby://localhost:9000', server_object)
DRb.thread.join

Essas três linhas acima que fazem o servidor funcionar, a primeira linha apenas faz a instância da classe Server, a segunda linha inicia o serviço remoto no endereço druby://localhost:9000 disponibilizando o objeto server_object, a terceira linha inicia uma thread no servidor para aceitar requisições remotas.

Construíndo o cliente (client.rb):

1
2
3
4
5
6
require 'drb'
 
DRb.start_service
obj = DRbObject.new(nil, 'druby://localhost:9000')
 
puts obj.hello

Entendendo o código do cliente:

require 'drb'

A linha acima apenas requere a biblioteca DRb, essa biblioteca que a responsável por fazer a comunicação remota. Você pode encontrar mais informações a seu respeito em: http://www.ruby-doc.org/stdlib/libdoc/drb/rdoc/index.html.

DRb.start_service
obj = DRbObject.new(nil, 'druby://localhost:9000')

As suas linhas acima inicia o serviço remoto com o servidor, a primeira inicializa o serviço e a segunda estabelece conexão com o servidor no endereço druby://localhost:9000 obtendo o objeto Server.

puts obj.hello

Essa linha acima invoca o método hello do objeto remoto Server.

Rodando o servidor:

Para inicializar o servidor digite na linha de comando:

ruby server.rb

Não será exibida nenhuma mensagem, o servidor apenas ficará esperando novas requisições remotas.

Rodando o cliente:

ruby client.rb

Quando você rodar o cliente terá como retorno a mensagem:

Hello, This is a Distributed Ruby (DRb) Example

Pronto! Esse recurso é muito interessante. ;-)

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Construindo a primeira aplicação no Google App Engine

Postado em 02 jul 2008
Categoria(s) Google App Engine, Python

Vou fazer uma aplicação “Hello, world!” usando Google App Engine.

A primeira coisa a se fazer é ir para a página: http://code.google.com/intl/pt-BR/appengine/

Você precisa fazer o cadastro e informar o seu número de telefone, depois disso o Google irá enviar uma mensagem para o seu celular com o código de acesso para ativação da conta.

Feito o cadastro é preciso baixar o SDK, o SDK é o ambiente de desenvolvimento do Google App Engine, está disponível para ambientes Windows, MAC OS e Linux.

Eu uso a distribuição Ubuntu do Linux, vou mostrar como rodar no Linux, para baixar o SDK visite: http://code.google.com/intl/pt-BR/appengine/downloads.html ou http://googleappengine.googlecode.com/files/google_appengine_1.1.0.zip

Feito do download descompacte em algum diretório no seu home.

O Google App Engine usa a linguagem de programação Python, desta forma você precisa ter o Python 2.5 instalado em sua distribuição.

Instalando o Python 2.5

No terminal digite:

1
2
 
sudo apt-get install python2.5 python2.5-dbg python2.5-dev python2.5-doc python2.5-examples idle-python2.5 apache2

Feito isso já podemos brincar com o Google App Engine.

No raiz do diretório google_appengine existe dois arquivos em Python:

  • appcfg.py – Esse arquivo tem a função de publicar sua aplicação nos servidores do Google.
  • dev_appserver.py – Esse arquivo tem a função de testar sua aplicação localmente.

Dentro do diretório google_appengine crie um diretório chamado helloworld.

Dentro do diretório helloworld crie o arquivo chamado helloworld.py com o seguinte conteúdo:

1
2
3
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

Esse arquivo apenas define o conteúdo da página como texto e imprime a mensagem “Hello, world!”.

Agora precisamos criar o arquivo de configuração da aplicação.

O Google App Engine usa um arquivo no formato YAML para armazenar as configurações, visto que o formato XML é muito poluído e o YAML é bem mais limpo e leve.

Dentro do diretório helloworld crie o arquivo app.yaml com o seguinte conteúdo:

1
2
3
4
5
6
7
application: helloworld
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
  script: helloworld.py

Esse arquivo define:

  • A identificação da aplicação, com o nome helloworld.
  • A versão da aplicação, o esquema de versão é importante, pois o Google App Engine permite voltar versões das aplicações depois de publicado.
  • Diz que a linguagem é Python, futuramente o Google App Engine irá dar suporte a outras linguagens de programação.
  • Define qual a url que responde pela requisição, no caso existe uma expressão regular /.* que diz que é tudo da home.

Testando a aplicação localmente

Agora vem uma mágica legal do Google App Engine, gostei disso.

Para rodar a aplicação você precisa estar dentro do diretório google_appengine e dar o seguinte comando:

1
2
 
python dev_appserver.py helloworld/

Onde helloworld é o nome da aplicação.

Se você visitar o endereço: http://localhost:8080 você poderá testar a aplicação que você acabou de fazer, nesse exemplo simples irá aparecer na tela “Hello, world!”.

Pronto! ;-)

  • Share/Bookmark