66件ヒット
[1-66件を表示]
(0.030秒)
キーワード
- cgi (11)
- drb (11)
-
drb
/ extservm (11) -
drb
/ gw (11) -
rinda
/ rinda (11) - tsort (11)
検索結果
先頭5件
-
cgi (133.0)
-
CGI プログラムの支援ライブラリです。
...) Version 1.1
* https://www.w3.org/CGI/
=== 使用例
==== フォームフィールドの値を得る
//emlist[][ruby]{
require "cgi"
cgi = CGI.new
values = cgi['field_name'] # <== 'field_name' の配列
# 'field_name' が指定されていなかったら、 ""を返す。
fields = cgi.keys......gi = CGI.new
params = cgi.params
//}
また CGI#params は毎回同じ Hash オブジェクトを返すので
以下のような使いかたもできます。
//emlist[][ruby]{
cgi.params['new_field_name'] = ["value"] # 新しいパラメータを加える
cgi.params['field_name'] = ["new_value"]......e を使うのが最も簡単です。
//emlist[][ruby]{
# 保存
require 'pstore'
db = PStore.new("query.db")
db.transaction do
db["params"] = cgi.params
end
# 復帰
require 'pstore'
db = PStore.new("query.db")
db.transaction do
cgi.params = db["params"]
end
//}
ただし、PStore は Ruby... -
drb
/ gw (73.0) -
drb 通信を中継するゲートウェイ(DRb::GW)と、 中継に必要なオブジェクト識別子変換クラス(DRb::GWIdConv)、 および DRb::DRbObject への拡張が含まれています。
..._id_conv(DRb::GWIdConv.new)
front = DRb::GW.new
s1 = DRb::DRbServer.new('drbunix:/tmp/gw_b_a', front)
s2 = DRb::DRbServer.new('drbunix:/tmp/gw_b_c', front)
s1.thread.join
s2.thread.join
gw_a.rb
require 'drb/unix'
require_relative 'foo'
obj = Foo.new('a')
DRb.start_serv......gw_a", obj)
robj = DRbObject.new_with_uri('drbunix:/tmp/gw_b_a')
robj[:a] = obj
DRb.thread.join
gw_c.rb
require 'drb/unix'
require_relative 'foo'
foo = Foo.new('c', nil)
DRb.start_service("drbunix:/tmp/gw_c", nil)
robj = DRbObject.new_with_uri("drbunix:/tmp/gw_b_c")......puts "c->b"
a = robj[:a]
sleep 2
a.ping(foo)
DRb.thread.join
これを、gw_b, gw_a, gw_c の順に起動すると、gw_b を経由して
gw_a と gw_c が通信します。... -
drb
/ extservm (55.0) -
DRb::ExtServManager を定義しているライブラリ。
...ェクトを生成して
# drb の front object に指定する
s = DRb::ExtServManager.new
DRb.start_service("druby://localhost:10234", s)
# drb のプロセスの終了を待つ
DRb.thread.join
service.rb:
require 'drb/drb'
require 'drb/extserv'
# サービスを表すクラ......指定した引数が渡される
front = Service.new(ARGV[0])
# 通信のため drb を起動する
# ポート番号に 0 を指定すると ephemeral port から適当なポート番号が
# 選ばれる
server = DRb::DRbServer.new("druby://localhost:0", front)
# ARGV の最後......セスにサービスの
# 窓口となる ExtServ オブジェクトを渡す
es = DRb::ExtServ.new(ARGV[1], ARGV[2], server)
# サーバスレッドの停止を待つ
DRb.thread.join
# サービスを DRb::ExtServ#stop_service で止めると、サーバスレッドが
# 終了す... -
rinda
/ rinda (37.0) -
Rubyで実装されたタプルスペース(Tuple Space)を扱うためのライブラリです。
...leSpace.new)
puts DRb.uri
DRb.thread.join
# rindas.rb
require 'drb/drb'
require 'rinda/rinda'
def do_it(v)
puts "do_it(#{v})"
v + v
end
uri = ARGV.shift || raise("usage: #{$0} <server_uri>")
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, u......drb'
require 'rinda/rinda'
uri = ARGV.shift || raise("usage: #{$0} <server_uri>")
DRb.start_service
ts = Rinda::TupleSpaceProxy.new(DRbObject.new(nil, uri))
(1..10).each do |n|
ts.write(['sum', DRb.uri, n])
end
(1..10).each do |n|
ans = ts.take(['ans', DRb.uri, n, n... -
drb (25.0)
-
分散オブジェクトプログラミングのためのライブラリです。
...意の Ruby のコードを実行できて
しまいます。例えば以下のようなことができます。
# !! 危険 !!
ro = DRbObject.new_with_uri("druby://your.server.com:8989")
class << ro
# リモートオブジェクトの instance_eval を呼ぶため
# ローカルオ......トを受け付けるオブジェクト
FRONT_OBJECT=TimeServer.new
# サーバを起動する
DRb.start_service(SERVER_URI, FRONT_OBJECT, :safe_level => 1)
# DRb のスレッドが終了するのを待つ
DRb.thread.join
==== クライアント側コード
require 'drb/drb'
#......ブジェクト以外の
# リモートオブジェクトのメソッドを呼び出す時には必要
DRb.start_service
# リモートオブジェクトの取得
timeserver = DRbObject.new_with_uri(SERVER_URI)
# リモートメソッドの呼び出し
puts timeserver.get_current_time... -
tsort (19.0)
-
tsort はトポロジカルソートと強連結成分に関するモジュールを提供します。
...nnected_component_from(target) {|ns|
if ns.length != 1
fs = ns.delete_if {|n| Array === n}
raise TSort::Cyclic.new("cyclic dependencies: #{fs.join ', '}")
end
n = ns.first
if Array === n
outputs, inputs, block = n
inputs_time = inputs.map {|f|......tsort_each_child(node, &block)
@dep[node].each(&block)
end
include TSort
end
def command(arg)
print arg, "\n"
system arg
end
m = Make.new
m.rule(%w[t1]) { command 'date > t1' }
m.rule(%w[t2]) { command 'date > t2' }
m.rule(%w[t3]) { command 'date > t3' }
m.rule(%w[t4], %w[t1 t3]) { co...