キーワード
- bigdecimal (12)
-
bigdecimal
/ math (12) - drb (12)
-
drb
/ extservm (12) -
drb
/ gw (12) -
irb
/ xmp (12) -
net
/ http (12) -
net
/ imap (12) -
net
/ pop (12) - optparse (12)
- prettyprint (12)
- rake (12)
-
rdoc
/ markup / to _ ansi (12) -
rdoc
/ markup / to _ bs (12) -
rdoc
/ markup / to _ html (12) -
rinda
/ rinda (12) - rss (12)
- shell (6)
- tracer (12)
- yaml (12)
検索結果
先頭5件
-
optparse (37.0)
-
コマンドラインのオプションを取り扱うためのライブラリです。
...nParser.new
parser.on('-i') { puts "-i" }
parser.on('-o') { puts '-o' }
subparsers = Hash.new {|h,k|
$stderr.puts "no such subcommand: #{k}"
exit 1
}
subparsers['add'] = OptionParser.new.on('-i') { puts "add -i" }
subparsers['del'] = OptionParser.new.on('-i') { puts "del -i" }
subparsers['list'......] = OptionParser.new.on('-i') { puts "list -i" }
parser.order!(ARGV)
subparsers[ARGV.shift].parse!(ARGV) unless ARGV.empty?
//}
実行すると以下のようになります。
$ ruby subcom.rb -i add -i
-i
add -i
$ ruby subcom.rb list -i
list -i
OptionParser#order! がオ... -
rss (37.0)
-
RSS を扱うためのライブラリです。
....each do |fname|
feed = nil
begin
feed = RSS::Parser.parse(File.read(fname), false)
rescue RSS::Error
end
if feed.nil?
puts "#{fname}はRSS 0.9x/1.0/2.0, Atom 1.0のいずれでもありません。"
else
print_items(feed)
end
end
あとはprint_item......: /rss/channel/image要素
ここでは、itemsを使って各項目を表示します。
def print_items(feed)
feed.items.each do |item|
puts "#{item.title} : #{item.description}"
end
end
これは、RSSフィードに対してはうまく動きますが、Atomフィードに......omフィードもRSSフィードに変えて
扱うことにします。
def print_items(feed)
convert_to_rss10(feed).items.each do |item|
puts "#{item.title} : #{item.description}"
end
end
convert_to_rss10は以下のようになります。
def convert_to_rss10(feed)
fee... -
bigdecimal (31.0)
-
bigdecimal は浮動小数点数演算ライブラリです。 任意の精度で 10 進表現された浮動小数点数を扱えます。
...|
s = BigDecimal("0")
while line = file.gets
s = s + BigDecimal(line)
end
puts s # => 0.3e0
end
File::open("digits.txt", "r") do |file|
s = 0
while line = file.gets
s = s + line.to_f
end
puts s # => 0.30000000000000004
end
//}
2 進数で計算すると誤差が入る可......)
u = t.div(k,sig)
pi = pi + u
k = k + two
end
pi
end
if $0 == __FILE__
if ARGV.size == 1
puts "PI("+ARGV[0]+"):"
puts big_pi(ARGV[0].to_i)
else
puts "TRY: ruby pi.rb 1000"
end
end
//}
=== その他
以下のメソッド以外にも、(C ではない) Ruby... -
irb
/ xmp (31.0) -
Ruby のソースコードとその実行結果を、行ごとに交互に表示するためのライブ ラリです。irb を実行しなくても、使用することが出来ます。
...ブ
ラリです。irb を実行しなくても、使用することが出来ます。
実行結果を得るためには、Kernel#xmp と、XMP#puts を使った方
法があります。どちらの場合も XMP がコンテキスト情報を保持するため、
実行結果に差分はありま......ス(XMP#puts)を使って実行結果を得る
XMP#puts では、以下のように Ruby のソースコードを文字列として渡す
事で実行結果を標準出力に表示します。
$ cat t.rb
require "irb/xmp"
xmp = XMP.new
xmp.puts <<END
foo = 1
foo
END
xmp.puts <<END... -
net
/ pop (31.0) -
このライブラリは、POP3 (Post Office Protocol version 3) を 用いてPOPサーバからメールを受信する機能を提供するライブラリです。
...始
if pop.mails.empty?
$stderr.puts 'no mail.'
else
pop.mails.each_with_index do |m, idx| # 各メッセージにアクセスする
File.open("inbox/#{idx + 1}", 'w') {|f|
f.write m.pop
}
m.delete
end
$stderr.puts "#{pop.mails.size} mails popped."
en......word') {|pop|
if pop.mails.empty?
$stderr.puts 'no mail.'
else
pop.mails.each_with_index do |m, idx|
File.open("inbox/#{idx + 1}", 'w') {|f|
f.write m.pop
}
m.delete
end
$stderr.puts "#{pop.mails.size} mails popped."
end
}
Net:......net/pop'
Net::POP3.start('pop.example.com', 110,
'YourAccount', 'YourPassword') {|pop|
if pop.mails.empty?
$stderr.puts 'no mail.'
else
i = 0
pop.delete_all do |m|
File.open("inbox/#{i}", 'w') {|f|
f.write m.pop
}
i +... -
net
/ http (25.0) -
汎用データ転送プロトコル HTTP を扱うライブラリです。 実装は 2616 に基きます。
...('/index.html')
}
puts res.body
//}
//emlist[例4: 上の例よりさらに汎用的な例][ruby]{
require 'net/http'
url = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
//}
=......{'q'=>'ruby', 'max'=>'50'})
puts res.body
#例2: 認証付きで POST する
res = Net::HTTP.post_form(URI.parse('http://jack:pass@www.example.com/todo.cgi'),
{'from'=>'2005-01-01', 'to'=>'2005-03-31'})
puts res.body
#例3: より細かく制御する... -
drb
/ extservm (13.0) -
DRb::ExtServManager を定義しているライブラリ。
...def initialize(service_name)
@service_name = service_name
end
def hello
"You invoke #{@service_name}"
end
end
puts "Start #{ARGV[0]}"
# ARGV の最後2つを除いた部分は ExtServManager.command で
# 指定した引数が渡される
front = Servic......in
# サービスを DRb::ExtServ#stop_service で止めると、サーバスレッドが
# 終了するため、以下の行が実行される
puts "Stop #{ARGV[0]}"
client.rb:
require 'drb/drb'
DRb.start_service
s = DRbObject.new_with_uri("druby://localhost:10234")
# No1 と... -
drb
/ gw (13.0) -
drb 通信を中継するゲートウェイ(DRb::GW)と、 中継に必要なオブジェクト識別子変換クラス(DRb::GWIdConv)、 および DRb::DRbObject への拡張が含まれています。
...drb'
class Foo
include DRbUndumped
def initialize(name, peer=nil)
@name = name
@peer = peer
end
def ping(obj)
puts "#{@name}: ping: #{obj.inspect}"
@peer.ping(self) if @peer
end
end
gw_b.rb
require 'drb/drb'
require 'drb/gw'
require 'drb/u......ive '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 を経由し... -
rinda
/ rinda (13.0) -
Rubyで実装されたタプルスペース(Tuple Space)を扱うためのライブラリです。
...e 'rinda/tuplespace'
uri = 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>")...