111件ヒット
[1-100件を表示]
(0.024秒)
ライブラリ
キーワード
- Application (1)
- ConditionVariable (11)
- Extension (11)
- Filter (11)
- Location (11)
- Monitor (11)
- OptionParser (11)
- SSLContext (11)
- Session (11)
- Thread (11)
-
WIN32OLE
_ EVENT (11)
検索結果
-
Thread
:: ConditionVariable (12007.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...の一つである状態変数を実現するクラスです。
以下も ConditionVariable を理解するのに参考になります。
https://ruby-doc.com/docs/ProgrammingRuby/html/tut_threads.html#UF
=== Condition Variable とは
あるスレッド A が排他領域で動いていたとし......がリソースの空きを
待っていても、いつまでも空くことはありません。
以上のような状況を解決するのが Condition Variable です。
スレッド a で条件(リソースが空いているかなど)が満たされるまで wait メソッドで
スレッド......合、
あるいは満タンになった場合に Condition Variable を使って wait しています。
require 'thread'
class TinyQueue
def initialize(max=2)
@max = max
@full = ConditionVariable.new
@empty = ConditionVariable.new
@mutex = Mutex.new
@q = []... -
OptionParser (6019.0)
-
コマンドラインのオプションを取り扱うためのクラスです。
...スです。
オプションが指定された時に呼ばれるブロックを
OptionParser#on メソッドで登録していきます。
つまり、OptionParser を使う場合、基本的には
(1) OptionParser オブジェクト opt を生成する。
(2) オプションを取り扱うブ......rogramConfig = Hash.new
opts = OptionParser.new
opts.on("-a"){|v| ProgramConfig[:a] = true } # オプション「-a」がコマンドラインで指定されていた場合の動作。
opts.parse!(ARGV) # 実際にコマンドラインの parse を行う。
//}
=== デフ......てから exit します。
: --version
OptionParser#ver を表示してから exit します。
OptionParser#ver が定義されていない場合は、そのようにエラーメッセージを出力して abort します。
オプション「--version」に「,」で区切られたクラス... -
Logger
:: Application (6013.0) -
ユーザ定義のアプリケーションにログ機能を簡単に追加することができます。
...ユーザ定義のアプリケーションにログ機能を簡単に追加することができます。
=== 使用方法
(1) このクラスのサブクラスとしてユーザ定義のアプリケーションのクラスを定義します。
(2) ユーザ定義のクラスでメイン処理......をインスタンス化して start メソッドを呼び出します。
例:
class FooApp < Application
def initialize(foo_app, application_specific, arguments)
super('FooApp') # Name of the application.
end
def run
...
log(WARN, 'warning', 'my_method1').......error('my_method2') { 'Error!' }
...
end
end
status = FooApp.new(....).start
=== 注意
このクラスは 2.2.0 で gem ライブラリとして切り離されました。2.2.0
以降ではそちらを利用してください。
* https://rubygems.org/gems/logger-application... -
OpenSSL
:: SSL :: Session (6013.0) -
SSL/TLS セッションを表すクラスです。
...ートに
依存します。
=== クライアント側のセッションキャッシュ
クライアント側では OpenSSL はキャッシュの保持、管理のための
機能を提供していません。コネクション確立後に
OpenSSL::SSL::SSLSocket#session でセッションを取り......::SSLSocket#connect によるハンドシェイク
前に OpenSSL::SSL::SSLSocket#session= で再利用するセッションを
設定してやることでセッションを再利用します。
=== サーバ側のセッションキャッシュ
サーバ側では OpenSSL::SSL::SSLContext によ......ョンキャッシュの保持および管理が行われます。
OpenSSL::SSL::SSLContext#session_cache_mode= で
キャッシュの挙動を設定します。
デフォルトで OpenSSL::SSL::SSLContext::SESSION_CACHE_SERVER
フラグが立っているため、サーバ側のセッションキ... -
Monitor (6007.0)
-
スレッドの同期機構としてのモニター機能を提供するクラスです。 また同じスレッドから何度も lock できる Mutex としての機能も提供します。
...MonitorMixin を 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.w......ne = ARGF.gets
mon.synchronize do
buf.push(line)
empty_cond.signal
end
end
//}
2回ロックしてもデッドロックにならない例です。
//emlist[デッドロックにならない例][ruby]{
require 'monitor'
mon = Monitor.new
mon.synchronize {
mon.synchronize {
}
}
//}......Thread::Mutex ではデッドロックになります。
//emlist[Mutex でデッドロックになる例][ruby]{
mx = Mutex.new
mx.synchronize {
mx.synchronize {
}
}
# => deadlock; recursive locking (ThreadError)
//}... -
OpenSSL
:: SSL :: SSLContext (6007.0) -
SSL コンテキストクラス。
...はなく、
この後もセッション管理機能によってオブジェクトのキャッシュ領域に
セッションを追加したり削除したりできます。
=== Constants
verify_mode= と options= で指定できる定数に関しては OpenSSL::SSL を参照してください。... -
OpenSSL
:: X509 :: Extension (6007.0) -
X.509 v3 証明書の拡張領域のためのクラスです。
...域を Extension オブジェクトの配列として保持し、
OpenSSL::X509::Certificate#extensions でその配列が得られます。
このクラスのインスタンス生成は OpenSSL::ASN1::ASN1Data を
取り扱う必要があり面倒です。
OpenSSL::X509::ExtensionFactory を用い......ることで
インスタンスの生成を簡便に行うことができます。
=== 参照
* 5280... -
Thread
:: Backtrace :: Location (6007.0) -
Ruby のフレームを表すクラスです。
...locations から生成されます。
//emlist[例1][ruby]{
# caller_locations.rb
def a(skip)
caller_locations(skip)
end
def b(skip)
a(skip)
end
def c(skip)
b(skip)
end
c(0..2).map do |call|
puts call.to_s
end
//}
例1の実行結果:
caller_locations.rb:2:in `a'
caller_locations.rb:......5:in `b'
caller_locations.rb:8:in `c'
//emlist[例2][ruby]{
# foo.rb
class Foo
attr_accessor :locations
def initialize(skip)
@locations = caller_locations(skip)
end
end
Foo.new(0..2).locations.map do |call|
puts call.to_s
end
//}
例2の実行結果:
init.rb:4:in `initialize'
i......nit.rb:8:in `new'
init.rb:8:in `<main>'
=== 参考
* Ruby VM アドベントカレンダー #4 vm_backtrace.c: https://www.atdot.net/~ko1/diary/201212.html#d4... -
Thread (55.0)
-
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。
...間を共有して同時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。
=== 実装
ネイティブスレッドを用いて実装されていますが、
現在の実装では Ruby VM は Giant VM lock (GVL) を有してお......拡張ライブラリは作成可能です。
=== スケジューリング
Ruby のスレッドスケジューリングはネイティブスレッドのそれを利用しています。
よって詳細はプラットフォームに依存します。
=== メインスレッド
プログラムの開......送られます。
=== スレッドの終了
スレッドの起動時に指定したブロックの実行が終了するとスレッドの実行も終
了します。ブロックの終了は正常な終了も例外などによる異常終了も含みます。
===[a:exception] 例外発生時の... -
Ripper
:: Filter (31.0) -
イベントドリブンスタイルで Ruby プログラムを加工するためのクラスです。
...し
ます。
=== 使用例
//emlist[][ruby]{
require 'ripper'
require 'cgi'
class Ruby2HTML < Ripper::Filter
def on_default(event, tok, f)
f << CGI.escapeHTML(tok)
end
def on_comment(tok, f)
f << %Q[<span class="comment">#{CGI.escapeHTML(tok)}</span>]
end
def on_tstring_beg(t......ok, f)
f << %Q[<span class="string">#{CGI.escapeHTML(tok)}]
end
def on_tstring_end(tok, f)
f << %Q[#{CGI.escapeHTML(tok)}</span>]
end
end
Ruby2HTML.new(ARGF).parse('')
//}
Ruby プログラムを解析して、Ripper::SCANNER_EVENTS にあるスキャナ
イベントを実行しま...