75件ヒット
[1-75件を表示]
(0.047秒)
別のキーワード
キーワード
-
fiddle
/ import (12) - profile (6)
-
rdoc
/ parser / c (12) - rss (12)
- set (9)
- tsort (12)
- yaml (12)
検索結果
-
yaml (277.0)
-
構造化されたデータを表現するフォーマットであるYAML (YAML Ain't Markup Language) を扱うためのライブラリです。
...造化された配列][ruby]{
require 'yaml'
data = ["Taro san", "Jiro san", "Saburo san"]
str_r = YAML.dump(data)
str_l = <<~YAML_EOT
---
- Taro san
- Jiro san
- Saburo san
YAML_EOT
p str_r == str_l # => true
//}
//emlist[例2: 構造化されたハッシュ][ruby]{
require 'yaml'
requ......] = {
"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)
---
time: 2008-02-25 17:03:12 +09:00
target: YAML
version: 4
log......=== タグの指定
!ruby/sym :foo などのようにタグを指定することで、読み込み時に記述した値
の型を指定できます。
//emlist[例][ruby]{
require 'yaml'
p YAML.load(<<~EOS)
---
!ruby/sym :foo
EOS
# => :foo
//}
yaml では、Ruby 向けに以下のローカ... -
rdoc
/ parser / c (61.0) -
C 言語で記述されたソースコードから組み込みクラス/モジュールのドキュメン トを解析するためのサブライブラリです。
...す。
例: Array#flatten の場合。rb_ary_flatten のコメントが解析されます。
/*
* Returns a new array that is a one-dimensional flattening of this
* array (recursively). That is, for every element that is an array,
* extract its elements into the new array.
*
*.........
void
Init_Array()
{
...
rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
上記の例の場合、rb_ary_flatten 関数と Init_Array 関数は同じファイルに記
述されている必要があります。
また、Ruby のソースコードとは別......にコメントには特別な命令を指定する事がで
きます。
: Document-class: name
記述する内容を name で指定した Ruby のクラスのものに指定します。同じ
.c ファイルに複数のクラス定義がある場合などのように、Init_xxx 関数の
x... -
profile (47.0)
-
Ruby プログラムのためのプロファイラです。 プロファイラとは効率改善のための調査に用いられるツールのことです。 profile ライブラリは各メソッドの実行時間に関する統計を出力します。
...Ruby プログラムのためのプロファイラです。
プロファイラとは効率改善のための調査に用いられるツールのことです。
profile ライブラリは各メソッドの実行時間に関する統計を出力します。
profile はそれ自身がオーバーヘ......ッド呼び出しあたりの処理時間がかなり遅くなります。
=== 使い方
以下のように、ruby に -r profile オプションを付けて実行します。
$ ruby -r profile foo.rb
foo.rb の実行が終わると標準エラー出力にプロファイルが出力されま......後者を正味時間と呼ぶことにします。
=== 出力の意味
プロファイルの結果は例えば次のようになります。
$ ruby -r profile sample/sieve.rb 1000
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 … 略 …
% cumulative self self... -
fiddle
/ import (31.0) -
fiddle ライブラリのための高レベルインターフェースを提供するライブラリです。
...の和を計算する関数
double sum(double *arry, int len);
があったとします。これを呼び出したい場合は以下のように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libsum.so'
extern 'double sum(double*, in......ように Array#pack を使用します。
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload './libstrfirst.so'
extern 'void first_char(char **, char *, int)'
end
buf = '111'
M.first_char(['Abc', 'Def', 'Ghi'].pack('p*'), buf, 3)
p buf #=> 'ADG'
==== Ruby のオブ......い
任意のクラスの Ruby オブジェクトをコールバックへ渡したい場合は Fiddle.#dlwrap を使って
ポインタ(整数)へ変換してから関数に渡し、コールバックの方で元に戻します。
例えば libc の qsort を使って Ruby の Time の配列をソ... -
rss (25.0)
-
RSS を扱うためのライブラリです。
...]要素; RSS::RDF::Item
3番目のitem要素にアクセスするには以下のようにします。省略さ
れなかったリーダの引数はArray#[]の引数と同じように扱われます。
rss = RSS::Parser.parse(rss_source)
rss.item(2) # => /rdf:RDF/item[3]要素; RSS::RDF::Item......,その配列に対して
Array#<<やArray#[]=などを用いて要素を設定します.
rss = RSS::Parser.parse(rss_source)
item = RSS::RDF::Item.new(rdf_about_value)
rss.items << item
rss.items.last == item # => true
注意: item=/set_itemなどはRubyっぽくないので使わな... -
tsort (25.0)
-
tsort はトポロジカルソートと強連結成分に関するモジュールを提供します。
...tsort はトポロジカルソートと強連結成分に関するモジュールを提供します。
=== Example
//emlist[][ruby]{
require 'tsort'
class Hash
include TSort
alias tsort_each_node each_key
def tsort_each_child(node, &block)
fetch(node).each(&block)
end
end
{1=>[2, 3],......4], [2, 3], [1]]
//}
=== より現実的な例
非常に単純な `make' に似たツールは以下のように実装できます。
//emlist[][ruby]{
require 'tsort'
class Make
def initialize
@dep = {}
@dep.default = []
end
def rule(outputs, inputs=[], &block)
triple = [outp......ed_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| File.... -
set (13.0)
-
集合を表す Set クラスと、取り出し順序を保証した SortedSet クラスを提供 します。
...、取り出し順序を保証した SortedSet クラスを提供
します。
集合とは重複のないオブジェクトの集まりです。
Array の持つ演算機能と Hash の高速な検索機能を合わせ持ちます。
Set および SortedSet は内部記憶として Hash を使う......情報は、
dupおよび clone メソッドによって複製された集合オブジェクトにもコピー
されます。
=== 例
//emlist[][ruby]{
require 'set'
set1 = Set.new ["foo", "bar", "baz", "foo"]
p set1 # => #<Set: {"foo", "bar", "baz"}>
p set1.include?("bar") #......集合を表す Set クラスを提供します。
集合とは重複のないオブジェクトの集まりです。
Array の持つ演算機能と Hash の高速な検索機能を合わせ持ちます。
Set は内部記憶として Hash を使うため、集合要素の等価性は
Object#eql?...