キーワード
- drb (11)
-
drb
/ extservm (11) -
drb
/ gw (11) - irb (11)
-
net
/ imap (11) - resolv (11)
-
rinda
/ rinda (11) - yaml (11)
検索結果
-
drb
/ gw (73.0) -
drb 通信を中継するゲートウェイ(DRb::GW)と、 中継に必要なオブジェクト識別子変換クラス(DRb::GWIdConv)、 および DRb::DRbObject への拡張が含まれています。
...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_service("drbu......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 が通信します。... -
irb (67.0)
-
irb は Interactive Ruby の略です。 irb を使うと、Ruby の式を標準入力から簡単に入力・実行することができます。
...-d $DEBUG を true にする (ruby -d と同じ)
-w ruby -w と同じ
-W[level=2] ruby -W と同じ
-r library ruby -r と同じ
-I ruby -I と同じ
-U ruby -U と同じ
-E enc ruby -E と同じ
--ve......# サブirbの立ちあげ
irb#1(main):001:0> jobs # サブirbのリスト
#0->irb on main (#<Thread:0x400fb7e4> : stop)
#1->irb#1 on main (#<Thread:0x40125d64> : running)
nil
irb#1(main):002:0> fg 0 # jobのスイッチ
nil
irb(main):002:0>......チ
nil
irb(main):004:0> jobs # jobのリスト
#0->irb on main (#<Thread:0x400fb7e4> : running)
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
nil
irb(main):005:0> Foo.instance_methods # Foo#fooがちゃんと... -
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'
# サービスを表すク......def hello
"You invoke #{@service_name}"
end
end
puts "Start #{ARGV[0]}"
# ARGV の最後2つを除いた部分は ExtServManager.command で
# 指定した引数が渡される
front = Service.new(ARGV[0])
# 通信のため drb を起動する
# ポート番号に......DRb::DRbServer.new("druby://localhost:0", front)
# ARGV の最後の2つと DRbServer オブジェクトを ExtServ.new に渡す。
# これによってブローカープロセスにサービスの
# 窓口となる ExtServ オブジェクトを渡す
es = DRb::ExtServ.new(ARGV[1], ARGV[... -
net
/ imap (37.0) -
このライブラリは Internet Message Access Protocol (IMAP) の クライアントライブラリです。2060 を元に 実装されています。
...ボックス(INBOX)の送り元とサブジェクトを表示する。
require 'net/imap'
imap = Net::IMAP.new('mail.example.com')
imap.authenticate('LOGIN', 'joe_user', 'joes_password')
imap.examine('INBOX')
imap.search(["RECENT"]).each do |message_id|
envelope = imap.fetch(message_i......すべて Mail/sent-mail から "Mail/sent-apr03" へ移動させる
require 'net/imap'
imap = Net::IMAP.new('mail.example.com')
imap.authenticate('LOGIN', 'joe_user', 'joes_password')
imap.select('Mail/sent-mail')
if not imap.list('Mail/', 'sent-apr03')
imap.create('Mail/sent-apr03'......net/imap'
imap = Net::IMAP.new("imap.foo.net", "imap2")
imap.authenticate("cram-md5", "bar", "password")
imap.select("inbox")
fetch_thread = Thread.start { imap.fetch(1..-1, "UID") }
search_result = imap.search(["BODY", "hello"])
fetch_result = fetch_thread.value
imap.disconnect
と... -
rinda
/ rinda (37.0) -
Rubyで実装されたタプルスペース(Tuple Space)を扱うためのライブラリです。
...ARGV.shift
DRb.start_service(uri, Rinda::TupleSpace.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 = R......eSpaceProxy.new(DRbObject.new(nil, uri))
while true
r = ts.take(['sum', nil, nil])
v = do_it(r[2])
ts.write(['ans', r[1], r[2], v])
end
# rindac.rb
require 'drb/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, nil])
p [ans[2], ans[3]]
end
この例は ruby の配布物の sample/drb/rinda{_ts,s,c}.rb と同じもの... -
resolv (29.0)
-
DNSによる名前解決を行うライブラリです。 Ruby で書かれているため thread-aware であり、並列に多くのホスト名を解決することができます。
...DNSによる名前解決を行うライブラリです。 Ruby で書かれているため thread-aware であり、並列に多くのホスト名を解決することができます。
DNS モジュールを使うことで、さまざまなリソースを直接ルックアップできます。......esolv"
Resolv.getaddress("www.ruby-lang.org")
Resolv.getname("210.251.121.214").to_s
Resolv::DNS.new.getresources("www.ruby-lang.org", Resolv::DNS::Resource::IN::A).collect {|r| r.address}
Resolv::DNS.new.getresources("ruby-lang.org", Resolv::DNS::Resource::IN::MX).collect {|r| [r.exchange.to_s, r.p... -
drb (25.0)
-
分散オブジェクトプログラミングのためのライブラリです。
...意の Ruby のコードを実行できて
しまいます。例えば以下のようなことができます。
# !! 危険 !!
ro = DRbObject.new_with_uri("druby://your.server.com:8989")
class << ro
# リモートオブジェクトの instance_eval を呼ぶため
# ローカルオ......instance_eval("DANGEROUS RUBY CODE!")
このような instance_eval による危険性は $SAFE を 1
以上にすることで防げます。
DRb.#start_service の :safe_level オプションで
リモートからのメソッド呼び出しのコンテキストで指定されるセーフレベル......ストを受け付けるオブジェクト
FRONT_OBJECT=TimeServer.new
# サーバを起動する
DRb.start_service(SERVER_URI, FRONT_OBJECT, :safe_level => 1)
# DRb のスレッドが終了するのを待つ
DRb.thread.join
==== クライアント側コード
require 'drb/drb'......ro.instance_eval("DANGEROUS RUBY CODE!")
このような instance_eval による危険性は $SAFE を 1
にすることで防げます。
DRb.#start_service の :safe_level オプションで
リモートからのメソッド呼び出しのコンテキストで指定されるセーフレベル... -
yaml (25.0)
-
構造化されたデータを表現するフォーマットであるYAML (YAML Ain't Markup Language) を扱うためのライブラリです。
...35,
"birthday" => Date.new(1970, 1, 1)
}
str_r["Suzuki Suneo"] = {
"age" => 13,
"birthday" => Date.new(1992, 12, 21)
}
p str_r == YAML.load(str_l) # => true
//}
//emlist[例3: 構造化されたログ][ruby]{
require 'yaml'
require 'stringio'
strio_r = StringIO.new(<<~YAML_EOT)
---
tim......EOS
# => #<Foo::Bar:0xf73907b8>
//}
=== 注意
無名クラスを YAML 形式に変換すると TypeError が発生します。また、
IO や Thread オブジェクトなどはインスタンス変数がオブジェク
トの状態を保持していないため、変換はできますが、YAM...