ようへいの日々精進XP

よかろうもん

2018 年 07 月 30 日 (月)

ジョギング

  • 香椎浜 x 2 周
  • 引き続き, 左足太もも前あたりに突っ張るような痛みは少しやわらいだ感
  • 全体的に体がバッキバキ

日課

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

台風一過

ちょっと涼しい感じがした.

頭痛とか肩こりとか

  • 朝からキツイ

今日のるびぃ ~ Ruby 技術者認定試験合格教本 (Silver/Gold 対応) Ruby 公式資格教科書 模擬試験 (20) 標準添付ライブラリ (3) ~

irb に動作確認環境は以下の通り.

$ ruby --version
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux]
$ irb --version
irb 0.9.6(09/06/30)

標準添付ライブラリ (12)

Q36. DateTime クラスのオブジェクトに 1 を加算するとどうなるか.

以下, 解答.

  1. 一日後の時刻を表す

以下, irb にて確認.

# 一日後の時刻を表す
irb(main):001:0> require 'date'
=> true
irb(main):002:0> d1 = DateTime.now
=> #<DateTime: 2018-07-15T18:37:23+09:00 ((2458315j,34643s,965591997n),+32400s,2299161j)>
# 一日後
irb(main):003:0> d1 + 1
=> #<DateTime: 2018-07-16T18:37:23+09:00 ((2458316j,34643s,965591997n),+32400s,2299161j)>
# 一ヶ月後
irb(main):004:0> d1 >> 1
=> #<DateTime: 2018-08-15T18:37:23+09:00 ((2458346j,34643s,965591997n),+32400s,2299161j)>
# 一ヶ月前
irb(main):005:0> d1 << 1
=> #<DateTime: 2018-06-15T18:37:23+09:00 ((2458285j,34643s,965591997n),+32400s,2299161j)>
# 一日前
irb(main):006:0> d1 - 1
=> #<DateTime: 2018-07-14T18:37:23+09:00 ((2458314j,34643s,965591997n),+32400s,2299161j)>

以下, 解説より抜粋.

  • DateTime クラスのオブジェクトに 1 を加算すると, 1 日後の時刻を示す
  • Date クラスでも同様に 1 日後の時刻を示す
  • Time クラスの場合には 1 秒後の時刻を示す

以下, 諸々確認.

irb(main):009:0> d2 = Date.new(2018, 07, 15)
=> #<Date: 2018-07-15 ((2458315j,0s,0n),+0s,2299161j)>
irb(main):010:0> d2 + 1
=> #<Date: 2018-07-16 ((2458316j,0s,0n),+0s,2299161j)>
irb(main):011:0> d2 >> 1
=> #<Date: 2018-08-15 ((2458346j,0s,0n),+0s,2299161j)>
irb(main):012:0> d2 << 1
=> #<Date: 2018-06-15 ((2458285j,0s,0n),+0s,2299161j)>
irb(main):013:0> d2 - 1
=> #<Date: 2018-07-14 ((2458314j,0s,0n),+0s,2299161j)>
irb(main):014:0> t1 = Time.now
=> 2018-07-15 18:42:01 +0900
irb(main):015:0> t1 + 1
=> 2018-07-15 18:42:02 +0900
irb(main):016:0> t1 - 1
=> 2018-07-15 18:42:00 +0900

標準添付ライブラリ (13)

Q39. rdoc コメントのマークアップとして適切な記述を全て選べ.

以下, 解答.

  1. *word* で太文字
  2. * で番号無しリスト

以下, Rdoc のサンプル.

class Foo
  CONST = [:const1, :const2, :const3] # :nodoc:

  # Foo オブジェクトの作成
  # === 引数
  # * +arg+ - ただの引数
  # === memo
  # * *memo* - 太文字 (日本語やスペースは無視される)
  # * _memo_ - 斜体 (日本語やスペースは無視される)
  # * +memo+ - 等幅フォント (日本語やスペースは無視される)
  # * <b>メモ</b> - 太文字 (日本語が利用可能)
  # * <em>メモ</em> - 斜体 (日本語が利用可能)
  # * <tt>メモ</tt> - 等幅フォント (日本語が利用可能)
  def initialize(arg)
    @arg0 = arg
  end
...

標準添付ライブラリ (14)

Q41. 以下のコードを実行すると何が表示されるか.

d1 = Time.new
d2 = Time.new
p (d2 - d1).class

以下, 解答.

  1. Float

以下, irb にて確認.

irb(main):001:0> d1 = Time.new
=> 2018-07-15 23:42:33 +0900
irb(main):002:0> d2 = Time.new
=> 2018-07-15 23:42:33 +0900
irb(main):003:0> p (d2 - d1).class
Float
=> Float

以下, 解説より抜粋.

  • Time クラス同士の演算結果は Float 型になる
  • DateTime クラス同士の演算結果は Rational 型になる
irb(main):005:0> require 'date'
=> true
irb(main):006:0> d1 = DateTime.now
=> #<DateTime: 2018-07-15T23:43:54+09:00 ((2458315j,53034s,566531787n),+32400s,2299161j)>
irb(main):007:0> d2 = DateTime.now
=> #<DateTime: 2018-07-15T23:44:00+09:00 ((2458315j,53040s,755208242n),+32400s,2299161j)>
irb(main):008:0> (d2 - d1).class
=> Rational

標準添付ライブラリ (15)

Q48. 以下の実行結果になるように, [ x ] に記述する適切なコードを全て選べ.

# コード
require 'json'

h = {'a' => 1, 'b' => 2}
puts [ x ]

# 実行結果
{"a": 1, "b": 2}

以下, 解答.

  1. h.to_json
  2. JSON.dump(h)

以下, irb にて確認.

irb(main):009:0> require 'json'
=> true
irb(main):010:0> 
irb(main):011:0* h = {'a' => 1, 'b' => 2}
=> {"a"=>1, "b"=>2}
irb(main):012:0> puts h.to_json
{"a":1,"b":2}
=> nil
irb(main):013:0> puts JSON.dump(h)
{"a":1,"b":2}
=> nil
irb(main):015:0> puts JSON.generate(h)
{"a":1,"b":2}

以下, 解説より抜粋.

  • json ライブラリは Hash クラスに JSON 文字列を生成する to_json メソッドを追加する
  • JSON.dump メソッドでも同様の JSON 文字列を生成する
  • JSON.dump は与えられたオブジェクトを引数として JSON.#generate を呼び出している

フムフム.