ようへいの日々精進XP

よかろうもん

2018 年 04 月 06 日(金)

ジョギング

  • お休み

日課

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

両親, 鹿児島に帰る

9 時過ぎに両親が鹿児島に帰っていった. 今回はバタバタで両親がゆっくり出来たか分からないけど, 奥さんが頑張って動いてくれたので本当に助かった. ありがとう.

エンジニアの価値

とある会社のエンジニアの方とお話させて頂く機会があり, 色々と参考になる部分, 今後の自分のエンジニアとしての市場価値みたいなものについて改めて考えなおす必要があるなと感じた.

Linux Performance

先日の SRE 本輪読会で話題になった壁紙の件.

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

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

Q19. 組み込みライブラリ

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

x = ['abc', 'defgk', 'lopq']
p x.sort {|a, b| [ x ]}

以下, 実行結果.

['abc', 'lopq', 'defgk']
  1. a.size <=> b.size
  2. a.size - b.size

以下, irb での実行結果.

irb(main):002:0> p x.sort {|a, b| a.size <=> b.size }
["abc", "lopq", "defgk"]
=> ["abc", "lopq", "defgk"

x = ['abc', 'defgk', 'lopq']
p x.sort {|a, b| a.size - b.size }

irb(main):003:0> p x.sort {|a, b| a.size - b.size }
["abc", "lopq", "defgk"]
=> ["abc", "lopq", "defgk"]

以下, 正答以外で, 怪しいと思った選択肢.

irb(main):004:0> p x.sort {|a, b| a <=> b }
["abc", "defgk", "lopq"]
=> ["abc", "defgk", "lopq"]

以下, 解答より抜粋.

  • sort は, ブロック引数内に比較のアルゴリズムを記述する
  • 演算子 <=> は両オペランドの大小を比較する
  • 左辺が右辺より小さい場合は -1, 等しい場合は 0, 左辺より右辺が大きい場合は 1 を返す

Q20. 文法

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

tag = -> {|t, msg|
  print "<#{t}>#{mgs}</#{t}>"
}
tag.[ x ](:p, 'Hello, World')

実行結果.

Hello, World
  1. call

以下, irb による実行結果.

irb(main):001:0> tag = ->(t, msg){
irb(main):002:1*   print "<#{t}>#{msg}</#{t}>"
irb(main):003:1> }
=> #<Proc:0x005626818d5358@(irb):1 (lambda)>
irb(main):004:0> tag.call(:p, 'Hello, World')
<p>Hello, World</p>=> ni

上記のように, 設問の lambda 記法や実行結果は誤りのような気がする...

Q21. 標準ライブラリ

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

require 'yaml'

dir = <<EOY
file1:
  name: app.rb
  data: ruby
EOY

p YAML.load(dir)
  1. {"file1" => {"name" => "app.rb", "data" => "ruby"}}

以下, irb による実行結果.

irb(main):010:0> require 'yaml'
=> false
irb(main):011:0> 
irb(main):012:0* dir = <<EOY
irb(main):013:0" file1:
irb(main):014:0"   name: app.rb
irb(main):015:0"   data: ruby
irb(main):016:0" EOY
=> "file1:\n  name: app.rb\n  data: ruby\n"
irb(main):017:0> 
irb(main):018:0* p YAML.load(dir)
{"file1"=>{"name"=>"app.rb", "data"=>"ruby"}}
=> {"file1"=>{"name"=>"app.rb", "data"=>"ruby"}}

以下, 解説より抜粋.

  • YAML 形式のデータは Hash として読み込まれる

フムフム