はじめに
2019年の目標の1つに掲げているRuby技術者認定資格のSilver取得に向けての学習ログです。 最近、AtCoderの過去問を解くのが楽しくて、本資格の勉強を全くしていなかった ので、そろそろ集中して学習して取得してしまうことにしました。
2019年の目標
目標資格
まずは、Ruby Association Certified Ruby Programmer Silver version 2.1 の取得を目指します。
学習教材
本来は公式問題集を買って学習するのが王道だと思いますが、今回はGithubで公開されている公式問題50問から解くことにしました。
PDFで提供されていたものが、今はGithubに変わっているようです。
https://www.ruby.or.jp/assets/images/ja/certification/examination/exam_prep_jp.pdf
以下、気になった問題の整理とまとめです。
問題37
File.open("foo.txt") do |io| io.write(Time.now.strftime("%Y/%m/%d")) end
foo.txt
が同一ディレクトリにない場合
$ ruby 37.rb 37.rb:1:in `initialize': No such file or directory @ rb_sysopen - foo.txt (Errno::ENOENT) from 37.rb:1:in `open' from 37.rb:1:in `<main>'
foo.txt
が同一ディレクトリにある場合
- モードを明示的に指定していないため、 読み取りモードで起動している
$ ruby 37.rb 37.rb:2:in `write': not opened for writing (IOError) from 37.rb:2:in `block in <main>' from 37.rb:1:in `open' from 37.rb:1:in `<main>'
正常に動くコード
mode_enc = "w"
で明示的にファイルを書き込みモードでオープンする。
File.open("foo.txt", mode_enc = "w") do |io| io.write(Time.now.strftime("%Y/%m/%d")) end
foo.txt
にも時刻が書き込まれる。
2019/06/10
問題38
Dir
クラスのクラスメソッドではないものを選ぶ問題
Dir.rmdir
メソッド
- ディレクトリの削除を行う
delete
メソッドでもOK
$ mkdir -p tmp/hoge $ pwd /home/ubuntu/workspace/ruby_silver
Dir.rmdir("/home/ubuntu/workspace/ruby_silver/tmp/hoge")
- 上記のプログラムを実行するとディレクトリが削除される。
$ ruby 38.rb $ cd /home/ubuntu/workspace/ruby_silver/tmp/hoge bash: cd: /home/ubuntu/workspace/ruby_silver/tmp/hoge: No such file or directory
Dir.pwd
メソッド
- カレントディレクトリのフルパスを文字列で返す
p Dir.pwd
$ ruby 38.rb "/home/ubuntu/workspace/ruby_silver"
Dir.getwd
メソッド
Dir.pwd
と同じ
p Dir.pwd p Dir.getwd
$ ruby 38.rb "/home/ubuntu/workspace/ruby_silver" "/home/ubuntu/workspace/ruby_silver"
問題39
String#delete
メソッドに関する問題
puts "0123456789".delete("0-58-")
delete("0-5")
は、012345
を削除delete("8-")
は、8
を削除
$ ruby 39.rb 679
まとめ
公式問題の50問が解き終わったため、次は合格教本の問題を解いていきたいと思います。
[改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応)Ruby公式資格教科書
- 作者: 牧俊男,小川伸一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2017/08/05
- メディア: Kindle版
- この商品を含むブログを見る