ライブラリ
- ビルトイン (3)
- continuation (1)
- csv (1)
- logger (1)
-
net
/ http (1) -
net
/ imap (1) -
net
/ telnet (1) - optparse (1)
-
rexml
/ document (2) - thread (1)
-
webrick
/ httpstatus (1)
キーワード
- Application (1)
- CSV (1)
- ConditionVariable (1)
- ContentDisposition (1)
- Continuation (1)
- HTTPNonAuthoritativeInformation (1)
- Instruction (1)
- NonAuthoritativeInformation (1)
- NotationDecl (1)
- OptionParser (1)
- Options (1)
- Telnet (1)
- Thread (1)
- UndefinedConversionError (1)
検索結果
-
IO (115408.0)
-
基本的な入出力機能のためのクラスです。
基本的な入出力機能のためのクラスです。
File::Constants は、File から IO へ移動しました。
===[a:m17n] 多言語化と IO のエンコーディング
IO オブジェクトはエンコーディングを持ちます。
エンコーディングの影響を受けるメソッドと受けないメソッドがあります。
影響を受けるメソッドでは、IO のエンコーディングに従い読み込まれた文字列のエンコーディングが決定されます。
また IO のエンコーディングを適切に設定することにより、読み込み時・書き込み時に文字列のエンコーディングを
変換させることもできます。
==== エンコーディングの影響を受けるメ... -
Encoding
:: UndefinedConversionError (18346.0) -
エンコーディング変換後の文字が存在しない場合に発生する例外。
エンコーディング変換後の文字が存在しない場合に発生する例外。
UTF-8 にしかない文字を EUC-JP に変換しようとした場合などに発生します。
//emlist[例][ruby]{
"\u2603".encode(Encoding::EUC_JP)
#=> Encoding::UndefinedConversionError: U+2603 from UTF-8 to EUC-JP
//}
変換が多段階でなされ、その途中で例外が生じた場合は、
例外オブジェクトが保持するエラー情報はその中間のものになります。
//emlist[例][ruby]{
ec = Encoding::Co... -
REXML
:: NotationDecl (18292.0) -
DTD の記法宣言を表すクラスです。
DTD の記法宣言を表すクラスです。
//emlist[][ruby]{
require 'rexml/document'
doctype = REXML::Document.new(<<EOS).doctype
<!DOCTYPE foo [
<!NOTATION type-image-svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!NOTATION type-image-gif PUBLIC "image/gif">... -
REXML
:: Instruction (18094.0) -
XML 処理命令(XML Processing Instruction, XML PI)を表すクラス。
XML 処理命令(XML Processing Instruction, XML PI)を表すクラス。
XML 処理命令 とは XML 文書中の <? と ?> で挟まれた部分のことで、
アプリケーションへの指示を保持するために使われます。
XML 宣言(文書先頭の <?xml version=... ?>)はXML処理命令ではありませんが、
似た見た目を持っています。
//emlist[][ruby]{
require 'rexml/document'
doc = REXML::Document.new(<<EOS)
<?xml version="1.0" encoding="utf-... -
Continuation (18058.0)
-
継続を表すクラスです。
継続を表すクラスです。
Kernel.#callcc { |cont| ... } の呼び出し
は、直前の状態(ローカル変数の定義、スタックフレーム)を cont に記憶
してブロックを実行します。cont は、Continuation クラスのインスタ
ンスで、Continuation#call メソッドを実行するこ
とでいつでも記憶した状態を継続することができます。
C 言語の setjmp()/longjmp() がわかる人は
setjmp() == callcc {|c| }
longjmp() == c.call
と考えれば、わかりやすいかも知れません(ただし、callc... -
Thread
:: ConditionVariable (18058.0) -
スレッドの同期機構の一つである状態変数を実現するクラスです。
...が空になった場合、
あるいは満タンになった場合に Condition Variable を使って wait しています。
require 'thread'
class TinyQueue
def initialize(max=2)
@max = max
@full = ConditionVariable.new
@empty = ConditionVariable.new
@mutex = Mut... -
Net
:: HTTPNonAuthoritativeInformation (18052.0) -
HTTP レスポンス 203 (Non-Authoritative Information) を表現するクラスです。
HTTP レスポンス 203 (Non-Authoritative Information) を表現するクラスです。
詳しくは 7231 Section 6.3.4 を見てください。 -
Net
:: IMAP :: ContentDisposition (18052.0) -
1806, 2183 で定義されている MIME の Content-Disposition フィールドを表すクラスです。
1806, 2183 で定義されている MIME の
Content-Disposition フィールドを表すクラスです。 -
WEBrick
:: HTTPStatus :: NonAuthoritativeInformation (18052.0) -
HTTP のステータスコード 203 Non-Authoritative Information を表すクラスです。
HTTP のステータスコード 203 Non-Authoritative Information を表すクラスです。 -
OptionParser (18040.0)
-
コマンドラインのオプションを取り扱うためのクラスです。
コマンドラインのオプションを取り扱うためのクラスです。
オプションが指定された時に呼ばれるブロックを
OptionParser#on メソッドで登録していきます。
つまり、OptionParser を使う場合、基本的には
(1) OptionParser オブジェクト opt を生成する。
(2) オプションを取り扱うブロックを opt に登録する。
(3) opt.parse(ARGV) でコマンドラインを実際に parse する。
というような流れになります。
//emlist[][ruby]{
require "optparse"
ProgramConfig = Ha... -
Logger
:: Application (18022.0) -
ユーザ定義のアプリケーションにログ機能を簡単に追加することができます。
...行う run メソッドを定義します。
(3) そのクラスをインスタンス化して start メソッドを呼び出します。
例:
class FooApp < Application
def initialize(foo_app, application_specific, arguments)
super('FooApp') # Name of the application.
end... -
RDoc
:: Options (18022.0) -
rdoc コマンドのオプションを解析するためのクラスです。
...ンは必ず指定
する必要があります。rdoc --help を実行すると追加したオプションの一覧が
確認できます。
例:
class RDoc::Generator::Spellcheck
RDoc::RDoc.add_generator self
def self.setup_options rdoc_options
op = rdoc_options.option_parser... -
CSV (112.0)
-
このクラスは CSV ファイルやデータに対する完全なインターフェイスを提供します。
このクラスは CSV ファイルやデータに対する完全なインターフェイスを提供します。
=== 読み込み
//emlist[][ruby]{
require "csv"
csv_text = <<~CSV_TEXT
Ruby,1995
Rust,2010
CSV_TEXT
IO.write "sample.csv", csv_text
# ファイルから一行ずつ
CSV.foreach("sample.csv") do |row|
p row
end
# => ["Ruby", "1995"]
# ["Rust", "2010"]
# ファイルから一度に
p CSV.r... -
Net
:: Telnet (76.0) -
このクラスは telnet のクライアント機能を提供します。
このクラスは telnet のクライアント機能を提供します。
telnet でリモートホストにログインしてシェル経由で
コマンドを実行することを考えてみましょう。
これを Net::Telnet で実現するためには、
まず Net::Telnet.new に "Host" オプションを
与えてオブジェクトを作り、 Net::Telnet#login で
ユーザ名とパスワードを送ってログインし、
Net::Telnet#cmd でコマンドを
実行、最後に IO#close で接続を閉じます。
Net::Telnet#waitfor, Net::Telnet#print,
Net::Telne... -
Thread (40.0)
-
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。 Thread を使うことで並行プログラミングが可能になります。
スレッドを表すクラスです。スレッドとはメモリ空間を共有して同時に実行される制御の流れです。
Thread を使うことで並行プログラミングが可能になります。
=== 実装
ネイティブスレッドを用いて実装されていますが、
現在の実装では Ruby VM は Giant VM lock (GVL) を有しており、同時に実行される
ネイティブスレッドは常にひとつです。
ただし、IO 関連のブロックする可能性があるシステムコールを行う場合には
GVL を解放します。その場合にはスレッドは同時に実行され得ます。
また拡張ライブラリから GVL を操作できるので、複数のスレッドを
同時に実行するような拡...