ジョギング
- 香椎浜 x 2 周
- かるーく
- 左ひざの内側あたりがずっと痛いんだが, 新しい靴で走り始めると痛くなっている気がする
日課
- お休み
裕美生誕祭
今日は奥さんの生誕祭なので、仕事はほどほどに準備に勤しむ予定です。
— Yohei Kawahara(かっぱ) (@inokara) 2018年3月15日
- 奥さんの 42 回目の誕生日で, 少しだけサプライズを用意して祝った
- いつも, 寂しい思いをさせてしまっているけど, これからも二人で仲良く過ごしていきたい
- おめでとう, 色々と悩みの続く毎日だけど, 体だけには気をつけて
- 今年, 一年が素敵な年になりますように
今日のるびぃ ~ Ruby技術者認定試験【Gold】模擬問題を解いてみる (14) ~
Q.59 組み込みモジュール (Marshal)
Marshal モジュールの説明として正しいものを選択してください.
IOオブジェクトや特異メソッドを持つオブジェクトはシリアライズすることができない
ドキュメントより抜粋.
- Ruby オブジェクトをファイル(または文字列)に書き出したり, 読み戻したりする機能を提供するモジュール
- 大部分のクラスのインスタンスを書き出す事ができるが、書き出しの不可能なクラスも存在する (以下, 参照)
以下, 書き出し不可能なクラス.
- 名前のついてない Class/Module オブジェクト
- この場合は, 例外 ArgumentError が発生する
- システムがオブジェクトの状態を保持するもの
- 具体的には Dir, File::Stat, IO とそのサブクラス File, Socket など
- MatchData, Data, Method, UnboundMethod, Proc, Thread, ThreadGroup, Continuation のインスタンス
- 特異メソッドを定義したオブジェクト
以下, 実行例.
# 書き出せるパターン [1] pry(main)> class Foo; end => nil [2] pry(main)> f = Foo.new => #<Foo:0x00005610e93b7dd8> [3] pry(main)> Marshal.dump(f) => "\x04\bo:\bFoo\x00" [4] pry(main)> Marshal.load("\x04\bo:\bFoo\x00") => #<Foo:0x00005610e92d53e8> # 書き出せないパターン [1] pry(main)> f = File.open('index.html') => #<File:index.html> [2] pry(main)> Marshal.dump(f) TypeError: can't dump File from (pry):2:in `dump' [3] pry(main)
Q.60 ライブラリ
標準添付ライブラリによって提供されていないクラスを選択してください.
Swap
標準添付ライブラリによって提供されているクラス.
- TCPSocket
[3] pry(main)> require "socket" => true [4] pry(main)> TCPSocket.ancestors => [TCPSocket, IPSocket, BasicSocket, IO, File::Constants, Enumerable, Object, PP::ObjectMixin, Kernel, BasicObject]
- Thread
[6] pry(main)> Thread.ancestors => [Thread, Object, PP::ObjectMixin, Kernel, BasicObject]
- Test::Unit
以下, 実行例. 事前に test-unit
を gem install
しておく必要がある.
# テストされるコード $ cat foo.rb def foo "foo" end def bar "bar" end # テストコード $ cat test_foo.rb require 'test/unit' require './foo' class Test_Foo < Test::Unit::TestCase def test_foo assert_equal("foo", foo) end def test_bar assert_equal("bar", bar) end end # テスト実行 $ bundle exec ruby test_foo.rb Loaded suite test_foo Started .. Finished in 0.000554063 seconds. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 tests, 2 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 100% passed ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3609.70 tests/s, 3609.70 assertions/s
ふむふむ.