2019-01-01から1年間の記事一覧

Ruby技術者認定試験【Gold】模擬問題

Ruby技術者認定試験【Gold】模擬問題(11~20)|CTC教育サービス 研修/トレーニング ここの問題を解いて躓いたところ。CTCすごいな。 問20 -d オプションはデバッグモード 問26 pop, shif, unshift, pushどれが破壊的メソッドでどれが破壊的メソッドではない…

REx模擬試験誤答一覧 その6と7

第六回目は88点 第七回目は86点でした。 1回目 (12/7実施) 問17: Refinement Refinement#usingはメソッドの中では呼び出せない。クラス内だけ。 問18: include時の定数探索 includeが行われたとしても、それはそのクラスのレキシカルスコープに属したことに…

Ruby Gold模擬試験誤答一覧 その2

2週目なのに、なんだかんだ七問も間違えてしまって、なんだか雲行きが怪しくなってきた。 問6: Threadオブジェクトの新規作成 start fork new が使える。再開は run wakeup 但し、wakeupとrunには仕様に多少の違いがあり、runが即座にそのスレッドの処理を開…

REx模擬試験誤答一覧 その5

82点。 徐々に点数も安定してきた。 問5: class M::C ここに質問を投げてみた。 Ruby - class A::Bとクラス定義を行ったとき、クラスBはクラスAのネストの中にあると考えて良いのか。|teratail 結論は コンパクト記法class A::Bでクラスを指定しても、定義…

添付ライブラリ: 開発ツール

Test Unit 普段から使っているので特に目新しいものはないが、flunkとassert_raiseだけは普段使っていないので、参考になった。 assert_errorはクラスを指定せず、raiseだけさせておくとRuntime errorになってしまうので、Standard Errorであることを明示し…

REx模擬試験誤答一覧 その4

80点。ここから点数が安定してほしいな... 問7: クラス変数のスコープと定数のスコープ おそらくクラス変数のスコープと定数のスコープの知識がごちゃ混ぜになっている。 クラスで定義された定数は特異クラスから参照することは出来ない。 但し、レキシカル…

REx模擬試験誤答一覧 その3

三回目。62点と前回より大幅に点数を落とした。 lazy 最初に演算

REx模擬試験誤答一覧 その2

70点まで点数を伸ばした... あと12日間全力で頑張れば...という希望が見えてきた。 問4: Rubyの実行オプション Rubyの実行オプションは教科書に載っているもので以下の通り、 -v (version) -h (help) -c (check syntax, dry run) -e (execute, ワンライナー…

Ruby Gold模擬試験誤答一覧

あと試験日まで17日にして52/100点というものすごい点数をたたき出しているorz それでも前回の40/100点よりよくなっているのか.... それにしてもRExの問題は模擬試験よりだいぶ難しく作られているように感じる。 問題2: Float, Rational, Complex同士の計算 …

添付ライブラリ: Date/DateTime

Siverの出題範囲で既にTimeクラスを扱っているが、DateTimeクラスはDateクラスを継承して拡張するとともに、Timeクラスの拡張も提供している。 DateもDateTimeもユリウス日からの経過日数をRationalで保持し、その小数部で時間を表している。Rational同士の…

組み込みクラス: Marshal

このクラスに関してはそれほど内容は濃くはない。 Rubyのオブジェクトは条件付きで文字列化することが出来る。ただし条件はかなり限られていて、 名前のついていないクラスやモジュール File, Dir, IOなどシステムがオブジェクトの状態を保持するもの MatchD…

組み込みクラス: Thread

Threadの作成は例にあるnewの他startとforkが使える。 t = Thread.new{sleep 0.5} p t.status # "run" sleep 1 p t.status # "false" 正常終了済みの意味 p t.alive? # "false" Thread.stopでスレッドを停止させることが出来る。 これにより、ステータスはsl…

Ruby Gold基礎力確認問題 誤答一覧

問6: ブロック引数と引数の書き方 ブロック引数で{ }を使った書き方をする場合は、ブロックに送る引数に()を省略することは出来ない。 これは、普段コードに見慣れているとなんとなくわかるが、 do..endでブロック引数を書く場合、ブロックに送る引数は()を…

REx模擬試験誤答一覧 その1

100点中40点しか取れなかった....orz 問1: Enumerator::Lazy class p (1..10).lazy.map{|num| num * 2 }.take(3).inject(0, &:+) このQuitaの記事が非常に参考になる。 EnumeratorとEnumerator::Lazyの違い - Qiita lazyを付けている以上、評価は後に続くメ…

添付ライブラリ: FileUtils編

FileUtilsは「添付ライブラリ」を称しつつ、モジュールとして実装されているので、includeで呼び出すか、もしくはクラスメソッドのように、FileUtnils.XXXのように呼び出す必要がある。 はずなんだけど、なぜかrequireでしか呼び出せず、リファレンスにもそ…

添付ライブラリ: yaml & json & csv

yamlはハッシュと配列を表現するためのフォーマットで、rubyスクリプト上でも文字列として扱うことが出来る。 8] pry(main)> yaml_data = <<-DATA [8] pry(main)* - red [8] pry(main)* - green [8] pry(main)* - yello [8] pry(main)* DATA => "- red\n- gr…

添付ライブラリ: テキスト編

StringIOと呼ばれるクラスは、インスタンスの生成時に与えられた文字列やputsで与えらた文字列を「バッファ(変数)」に格納し、またバッファに入った文字列をgetsやreadlineで読み込むことが出来る。 バッファと聞いて、特殊な仕組みが裏にあると思いきや、…

添付ライブラリ: ネットワーク

TCP Server Class これでTCP用の簡易アプリケーションサーバーを構築することが出来る。 require "socket" server = TCPServer.new 10080 while(true) do client = server.accept puts client.inspect client.puts "<p1>Hello Server</p1>" client.close end chromeだ…

特異メソッド

特異メソッドは、定義すれば滅多に使われないようにみえて、実は「クラスメソッド」という形で多用されている。 クラスメソッドは「Classクラス」にメソッドを定義して実装しない限り、すべて、「Classクラスのインスタンス」の特異メソッドである。 特異メ…

Class定義

指定したクラスのコンテキストでブロックを評価するclass_evalというメソッドがある。 これはクラスに新しいメソッドを追加したりするのに用いることが出来る。すでに全く同じようなメソッドinstance_evalも学習している。 instance_evalはブロックを使って…

Proc & Lambda & Method

ブロックは原則宣言したその場で評価が行われるが、この評価を後から実施したい場合があり、これが出来るのがProcやlambdaの利点となっている。 また、ブロックはyeildで、ブロックの渡し先で実行を行うことが出来るが、渡された先で更に別のメソッドにブロ…

ブロック

C#にはusingと呼ばれる構文が存在し、引数で受けたオブジェクトに対して処理を行ったあと、またはその処理の中で例外が発生したあと、必ずdisposeというメソッドを呼び出し、引数で受けたオブジェクトの廃棄を行う。 これをRuby風に書くと以下のようになる。…

動的ディスパッチ/メソッドの使い方

動的なメソッド生成は同じような役割を持つメソッドを少しづつ役割を変えて、動的に生成することが出来る。 class Computer def initialize(computer_id, data_source) @id = computer_id @data_source = data_source end def self.define_component(name) d…

メソッド探索の注意点

メタプログラミングRuby、「月曜日」の最後のクイズから。 module Printable def print p "Print in Printable Module!" end def prepare_cove p "Prepare Cover!" end end module Document def print_to_screen prepare_cove format_for_screen print end d…

Rubyの継承・生成関係を整理する。

まずは「メタプログラミングRuby」のクイズから Objectのクラスは何? Object自体がクラスであり、そしてクラス自体もClassクラスのインスタンスとして生成された。よってObjectクラスのクラスは「Classクラス」 Moduleのスーパークラスは何? Moduleも「modu…

組み込みクラス: IO編

Fileクラスのスーパークラスなので、IOクラスのメソッドの多くはFileクラスでも使用可能。 IOを開く Fileの時と同じく、openは第二引数でモードを指定しなければ、readモードとなる。 io = open("text.txt","r+"){ |io| io.write("HelloWorld from Ruby IO."…

組み込みクラス: Dir/File編

逃げ続けてきた範囲だが、大きな弱点になっている気がしたので、試験直前だが復習してみる。 Dir Class open/close openメソッドはブロックをとることが出来、ブロックを閉じたところで、自動的にcloseさせることが出来る。 また、ブロック内でDirクラスのイ…

Ruby silver模擬試験誤答一覧 その3

Hashでblockを使うと ブロック内部では各要素が配列(1つ目にキー、2つ目に値)の形で渡される。 irb(main):005:0> h.each {|p| p p } [:a, 100] [:b, 200] => {:a=>100, :b=>200} Integer#step では、ループの中で自分自身を含む。 (例:1.step(5,1)という…

組み込みクラス: 数値型クラス編

ceil 破壊的なし 大きいほうへ切り上げ(ただし、自身が整数ならそのまま)。型自体も変更されるので、破壊的なメソッドはない。「2.0」のようにはならない。 floor 小さいほうへ切り下げ(ただし、自身が整数ならそのまま)。型自体も変更されるので破壊的…

Ruby silver模擬試験誤答一覧 その2

可変長引数は2つ以上なければよい。 可変長引数は先頭か末端になければならないと錯覚していたので、これは発見だった。 def method(ichi,ni,*san,shi,go) p ichi p ni p san p shi p go end method(1,2,3,4,5,6,7,8,9,0) pyons@LAPTOP-SF87NLCB:/mnt/c/User…