ようへいの日々精進XP

よかろうもん

2018 年 03 月 28 日(水)

ジョギング

  • 香椎浜 x 2 周
  • 左足の甲から足底筋の痛さが取れない...

日課

  • (腕立て x 50 + 腹筋 x 50) x 3

夕飯

  • 奥さんのナムルが毎回美味しい

今日のるびぃ ~ Ruby 技術者認定試験 Gold 演習問題を解いていく (11) ~

もう何度か解いているけど, Ruby 技術者認定試験合格教本 の演習問題と模擬試験を数問ずつ解いていく. ポイントは, 問題が何について問われているかがちゃんと理解出来ていること.

Q29. 標準添付ライブラリ

以下の記述で適切なものを全て選ぶ.

  • StringIO は IO と同じインターフェースを持つ
  • Float オブジェクトと Rational オブジェクトの演算結果は, Float オブジェクトになる
  • DateTime オブジェクトに 1 を加算すると, 翌日のデータとなる

以下, irb で確認する.

irb(main):006:0> sio = StringIO.new("hoge", 'r+')
=> #<StringIO:0x00561107cc9bb0>
irb(main):007:0> sio.read
=> "hoge"
irb(main):008:0> sio.read(1)
=> nil
irb(main):009:0> sio.rewind
=> 0
irb(main):010:0> sio.read(1)
=> "h"

irb(main):002:0> (1.0 + 1r).class
=> Float

irb(main):001:0> require 'date'
=> true
irb(main):002:0> date = DateTime.now
=> #<DateTime: 2018-03-27T06:25:07+09:00 ((2458204j,77107s,92880575n),+32400s,2299161j)>
irb(main):003:0> date + 1
=> #<DateTime: 2018-03-28T06:25:07+09:00 ((2458205j,77107s,92880575n),+32400s,2299161j)

以下, 解説より抜粋.

  • rdoc の * は番号なしリストを生成する
  • Thread クラスには run メソッドは存在しない

Q30. 標準添付ライブラリ

以下のコードは HTTP でダウンロードしたデータを表示するコードである. [ x ] に記述する適切なコードを選ぶ.

require 'open-uri'

[ x ]('http://docs.ruby-lang.org/ja/2.1.0/doc/index.html') do |f|
  print f.read
end

[ x ] には open が入るはずなので, irb で試してみる.

irb(main):001:0> require 'open-uri'
=> true
irb(main):002:0> open('https://docs.ruby-lang.org/ja/2.1.0/doc/index.html') do |f|
irb(main):003:1*   f.read.match(/Ruby 2.1.0/)
irb(main):004:1> end
=> #<MatchData "Ruby 2.1.0">
irb(main):005:0> 

open で URL を開いて, 取得したコンテンツを match メソッドで指定した文字列が存在していることを確認している図.

以下, 解説より抜粋.

  • open-uri は Kernel モジュールの open を再定義し, HTTP で指定したファイルを取得する
  • ファイルオブジェクトは StringIO 又は Tempfile
  • OpenURI::Meta モジュールで拡張されていて, メタ情報を獲得するメソッドが利用可能

フムフム