武田哲也さんのRuby技術者認定試験受験記

さて、ええ加減今日の試験の総括(復習)をせねば…。補強せなあかんアイテムがかなりある。「お前それ140字ずつ書かんとブログにでもまとめろや!」という量になるだろう。(ブログはやってない)
2015-01-10 22:20:42
#RubyGold さて、今日の不合格の総括。まずクズな言い方をすれば「俺が落ちたのはどう考えても教科書が改訂されてないのが悪い」。1/3ぐらいわからん(初見の)問題が出てきた。帰って調べたら、ほとんどRuby2.0以降の機能だった!(公式教科書は1.8までのしか出てない)
2015-01-10 22:35:56
#RubyGold まず試験形式の感想から。IT系試験では初めてのCBT。14:30開始で申し込んでたので、控室みたいなとこで待つんかなと思ってたら、説明(おばちゃん暗記してそう)聞いて荷物しまったらすぐ始まった。心の準備が…!昼食べたばっかりやし…!と焦った。次から注意やな
2015-01-10 22:49:32
#RubyGold 試験全体としては、教科書の模試より一回り難しい感じ。模試みたいに一目でわかるような問題は少なく、それなりに高次元な(まさに2次元座標とか)、考えさせられるものが多かった。まあ相変わらずFooさんBarさんも頻出してたけど。
2015-01-10 22:52:20
#RubyGold 他にも書いてる人いたけど、せっかくコンピュータでやってるんやから、どの問題を間違えたか教えてくれたらいいのに。それにメモ用紙ぐらいは持ち込める(持ち帰れる)ようにしてほしいなー。
2015-01-10 22:56:59
#RubyGold 詳細は明日として。教科書への不満は書いたが、悪い試験ではないと思う。出題範囲は「Ruby2.1のこんな機能も知っといてほしい」という主催者側の意向だろう。「実力を出し切れなかった」みたいな後悔はない。勉強したところはほぼ正答できたと思うので、良かった。
2015-01-11 01:05:42
#RubyGold では以下、わからんかった(教科書に出てなくて知らなかった)問題や自信なかった問題の各論を書いていく。記憶から再現してるだけやからNDAは侵してないはず…
2015-01-11 09:32:36map/collect

#RubyGold map と collect は同じ。(mapしか使わないので自信なかった) magazine.rubyist.net/?0038-MapAndCo… map/reduce vs collect/inject という出自やったとは。図解もあってわかりやすい。勉強になるな~
2015-01-11 09:33:14Enumerator::Lazy

#RubyGold こんな感じのコードが出た。結果どうなる?と。 (1..Float::INFINITY).lazy.map {|i| i**2 }.take(3).inject(0) {|sum,i| sum += i }
2015-01-11 09:34:40
#RubyGold (続き)lazy も take も初めて見たが、lazyは遅延評価的なやつかな、やりたいのは「1~3の冪乗の合計」だろう、1+4+9=14 →正解。 これらはRuby2.0で導入された。 docs.ruby-lang.org/ja/2.1.0/class…
2015-01-11 09:35:03補足: Enumerator::Lazy は2.0からですが、 Enumerable#take は1.8.7から入っています。
http://ref.xaio.jp/ruby/classes/enumerable/take

#RubyGold Lazy の説明はここが丁寧で助かりました。 qiita.com/gam0022/items/… (最後の図、矢印はUMLじゃなくて「特化」の意味なので注意)
2015-01-11 10:21:03ENV

#RubyGold 環境変数 ENV は「文字列」がキー。かなり迷ったけど正解。 docs.ruby-lang.org/ja/2.1.0/class… ちなみに irb(main):001:0> ENV.class => Object IFを似せてあるってだけで、Hashそのものではないのね。
2015-01-11 09:40:03起動オプション

#RubyGold 起動時オプション、-I を聞かれた。 docs.ruby-lang.org/ja/2.1.0/doc/s… 「ファイルをロードするパスを指定(追加)します。」って、ロード言うたら -l と思うやんか… -l は「行末の自動処理」か。gcc とはだいぶ違うなあ
2015-01-11 09:41:50結合度

#RubyGold 結合順のやつ。最後のだけ文法エラーになる。 3.downto(0) {|i| puts i} 3.downto(0) do |i| puts i end 3.downto 0 do |i| puts i end 3.downto 0 {|i| puts i}
2015-01-11 09:46:45
#RubyGold (続き)こんな重箱の隅出すなよ~と思った。悩んだけど一応正解。 この解説が詳しいです。 qiita.com/riocampos/item… まあこういう思わぬバグにすぐ気づくためには必要な知識かな・・
2015-01-11 09:48:08