99件ヒット
[1-99件を表示]
(0.099秒)
ライブラリ
- ビルトイン (11)
- fiddle (22)
-
fiddle
/ import (11) - monitor (11)
-
rdoc
/ include (11) -
rinda
/ tuplespace (11) -
webrick
/ httpauth / htdigest (11) -
webrick
/ httpauth / htpasswd (11)
キーワード
- BlockCaller (11)
- CStruct (11)
- Closure (11)
- Htdigest (11)
- Htpasswd (11)
- Monitor (11)
- Range (11)
- TupleSpace (11)
検索結果
-
RDoc
:: Include (24017.0) -
includeされるファイルを表現します。
...includeされるファイルを表現します。
ライブラリの内部で使用します。... -
Monitor (6007.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
...onitorMixin を include し、いくつかの別名を定義したクラスです。
=== 例
//emlist[消費者、生産者問題の例][ruby]{
require 'monitor'
buf = []
mon = Monitor.new
empty_cond = mon.new_cond
# consumer
Thread.start do
loop do
mon.synchronize do
empty_cond.wait......hile { buf.empty? }
print buf.shift
end
end
end
# producer
while line = ARGF.gets
mon.synchronize do
buf.push(line)
empty_cond.signal
end
end
//}
2回ロックしてもデッドロックにならない例です。
//emlist[デッドロックにならない例][ruby]{
requi......re 'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}
Thread::Mutex ではデッドロックになります。
//emlist[Mutex でデッドロックになる例][ruby]{
mx = Mutex.new
mx.synchronize {
mx.synchronize {
}
}
# => deadlock; recursive locking (ThreadError)
/... -
WEBrick
:: HTTPAuth :: Htdigest (6007.0) -
Apache の htdigest 互換のクラス。
...Apache の htdigest 互換のクラス。
例
require 'webrick'
include WEBrick
htd = HTTPAuth::Htdigest.new('dot.htdigest')
htd.set_passwd('realm', 'username', 'supersecretpass')
htd.flush
htd2 = HTTPAuth::Htdigest.new('dot.htdigest')
p htd2.get_passwd('realm', 'username', false) == '65fe0... -
Fiddle
:: Closure (3025.0) -
コールバック関数を表すクラスです。
...スです。
FFI の closure の wrapper です。
利用法としては、このクラスのサブクラスを作って
そのサブクラスに call メソッドを定義し、
new でオブジェクトを生成することで利用します。
require 'fiddle'
include Fiddle # TYPE_* を......使うために include する
class Compare < Fiddle::Closure
# qsort の比較関数は 型が int(*)(void*, void*) であるため、
# このメソッドには DL::CPtr オブジェクトが渡される。
# そのポインタが指す先は比較している文字なので、......end
libc = DL.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"],
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP],
TYPE_VOID)
s = "7x0cba(Uq)"
qs.call(s, s.size, 1, Compare.new(TYPE_INT, [TYPE_VOIDP, TYPE_VOIDP]))
p s... -
Fiddle
:: CStruct (3007.0) -
C の構造体を表すクラスです。
...C の構造体を表すクラスです。
このクラスは直接は使わず、Fiddle::Importer#struct を用いて
このクラスを継承したクラスを生成し、それを利用します。
Fiddle::Importer#struct が生成するクラスには
構造体の各メンバへのアクセサ......ます。
例えば
require 'fiddle/import'
include Fiddle::Importer
S = struct(["long foo", "void* bar"])
とすると、 S#foo, S#foo= というアクセサが Integer とやりとり
するように定義され、 S#bar, S#bar= というアクセサが Fiddle::Pointer
でやりとりする......に定義されます。
このクラスは実際にはこのドキュメントに書かれているメソッドを保持していません。
Fiddle::Importer#struct によって動的にメソッドが定義されます。
このドキュメントは説明の便宜のためだと考えてくだ... -
Fiddle
:: Closure :: BlockCaller (3007.0) -
Ruby のブロックをラップしたコールバック関数を表すクラスです。
...require 'fiddle'
include Fiddle
libc = Fiddle.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"],
[TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP],
TYPE_VOID)
compare = Fiddle::Closure::BlockCaller.new(TYPE_INT, [TYPE_VOIDP,......TYPE_VOIDP]){|x, y|
# qsort の比較関数は 型が int(*)(void*, void*) であるため、
# このブロックには DL::CPtr オブジェクトが渡される。
# そのポインタが指す先は比較している文字なので、
# DL::CPtr#to_s で1文字の文字列に変......換している
x.to_s(1) <=> y.to_s(1)
}
s = "7x0cba(Uq)"
qs.call(s, s.size, 1, compare)
p s # => "()07Uabcqx"... -
Rinda
:: TupleSpace (3007.0) -
Tuple Space を表すクラスです。
...る側は
DRb::DRbObject.new_with_uri などでこのオブジェクトのリモートオブジェクトを
取得し、Rinda::TupleSpaceProxy をかぶせることで利用します。
===[a:renewer] タプルの寿命と renewer
タプルを Rinda::TupleSpace#write などで追加するときに......に追加してからその秒数過ぎるとタプルは削除されます。
ただし、指定秒数を過ぎてもすぐには削除されず、Rinda::TupleSpace.new の
引数で指定した秒数ごとに「掃除用スレッド」が動き、それによって
cancel されたタプルや期......enew はタプルの有効期限が
切れていない場合のみ呼び出されます(有効期限切れのタプルは削除されます)。
Rinda::SimpleRenewer はシンプルな renewer で renewer のサンプル実装でも
あります。このクラスはデフォルトで寿命を180秒... -
WEBrick
:: HTTPAuth :: Htpasswd (3007.0) -
Apache の htpasswd 互換のクラスです。 .htpasswd ファイルを新しく作成することも出来ます。 htpasswd -m (MD5) や -s (SHA) で作成された .htpasswd ファイルには対応していません。
...対応していません。
例
require 'webrick'
include WEBrick
htpd = HTTPAuth::Htpasswd.new('dot.htpasswd')
htpd.set_passwd(nil, 'username', 'supersecretpass')
htpd.flush
htpd2 = HTTPAuth::Htpasswd.new('dot.htpasswd')
pass = htpd2.get_passwd(nil, 'username', false)
p pass == 'supersec... -
Range (31.0)
-
範囲オブジェクトのクラス。 範囲オブジェクトは文字どおり何らかの意味での範囲を表します。数の範囲はもちろん、 日付の範囲や、「"a" から "z" まで」といった文字列の範囲を表すこともできます。
...`..' または `...')を
用いた d:spec/operator#range で生成できます。
いずれの方法でも始端と終端を与えます。
//emlist[範囲オブジェクトの例][ruby]{
Range.new(1, 5) # 1 以上 5 以下
1..5 # 同上
1...5 # 1 以上 5 未満
//}
この......るので、基本的な機能として「ある値がその範囲に
含まれるか否かを判定する」ということがあります。
//emlist[値が範囲に含まれるかどうかを判定][ruby]{
p (1..5).cover?(6) # => false
p (1..5).cover?(5) # => true
p (1...5).cover?(5) # => fals......nil 以外を返す)必要が
あります。
範囲オブジェクトのもう一つの基本的機能は繰り返しの範囲を表すことです。
//emlist[繰り返しの範囲を範囲オブジェクトで表す][ruby]{
(3..5).each{ |i| p i }
# => 3
# 4
# 5
(3...5).each{ |i| p i }......らは、終端に nil を与えることで「終端を持たない範囲オブジェクト」
を作ることができるようになりました。
//emlist[終端を持たない範囲オブジェクト][ruby]{
p Range.new(1, nil) # 1 以上(上限無し)を表す
p(1..nil) # 同.......7.0 では始端に nil を与えることで「始端を持たない範囲オブジェクト」
を作ることもできるようになりました。
//emlist[始端を持たない範囲オブジェクト][ruby]{
p Range.new(nil, 5) # 5 以下(下限無し)を表す
p(nil..5) # 同...