Jump to content

Ринда (язык программирования Ruby)

Rinda — это программная библиотека для создания модульных и распределенных взаимодействующих сервисов в Ruby с использованием пространства кортежей или Linda парадигмы распределенных вычислений .

Основан на исходном коде, первоначально опубликованном сообществом Ruby Масатоши СЭКИ в 2000 году. [ 1 ] Позже Ринда была поглощена основным распределенным модулем Ruby (DRb) Ruby . Rinda распространяется как часть основной библиотеки Ruby, начиная с Ruby 1.8.

Пример использования

[ редактировать ]

Rinda предоставляет структуру, с помощью которой несколько процессов Ruby (которые могут работать или не работать на одном компьютере) могут добавлять, получать доступ и изменять кортежи (упорядоченный список элементов), хранящиеся в общем репозитории данных (пространстве кортежей).

Например, следующая программа создает новое пространство кортежей Rinda и инициализирует службу DRb, которая ожидает запросов, поступающих по сети.

require 'rinda/tuplespace'

URI = "druby://localhost:61676"
DRb.start_service(URI, Rinda::TupleSpace.new)
DRb.thread.join

Используя Rinda, другие приложения могут опрашивать пространство кортежей на наличие кортежей, соответствующих определенным критериям.

Например, приведенная ниже программа подключается к службе Rinda и прослушивает любой кортеж, состоящий из арифметического оператора, следующего за двумя числами (например, последовательность «+ 2 4»). Когда такой кортеж обнаружен, программа вычисляет результат математической операции ( например, обработка «+ 2 4» в «6») и сохранение его в пространстве кортежей.

require 'rinda/rinda'

URI = "druby://localhost:61676"
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))
loop do
  ops, a, b = ts.take([ %r{^[-+/*]$}, Numeric, Numeric])
  ts.write(["result", a.send(ops, b)])
end

Наконец, приложения Rinda могут добавлять или удалять кортежи из пространства кортежей.

Например, следующая программа отправляет префиксные арифметические кортежи в пространство кортежей и считывает результат (отправленный программой выше).

require 'rinda/rinda'

URI = "druby://localhost:61676"
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, URI))
tuples = [["*", 2, 2 ], [ "+", 2, 5 ], [ "-", 9, 3 ]]
tuples.each do |t|
  ts.write(t)
  res = ts.take(["result", nil])
  puts "#{res[1]} = #{t[1]} #{t[0]} #{t[2]}"
end
  1. ^ «Туплспейс» . Архив приложений Ruby (RAA) . Проверено 26 октября 2011 г.
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 683f2fb1f3742d796bc2f3c9f0195518__1711029900
URL1:https://arc.ask3.ru/arc/aa/68/18/683f2fb1f3742d796bc2f3c9f0195518.html
Заголовок, (Title) документа по адресу, URL1:
Rinda (Ruby programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)