君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

ruby

rbenvによって定められるバージョンはどこに保持されているのか(global, local)

globalの場合 $ rbenv versions * 2.3.0 (set by /home/vagrant/.rbenv/version) 2.3.1 2.4.1 /home/vagrant/.rbenv/version で指定されているらしい。確かめてみる。 $ cat /home/vagrant/.rbenv/version 2.3.0 確かにversionファイルに記述されている。 試…

rbenv install --listをしたときに、installしたいバージョンが無い時の対処法

rbenvで特定のrubyバージョンをinstallしようとした ruby 2.4.1が欲しかった。 $ rbenv install --list ... 2.3.4 2.3.5 2.4.0-dev 2.4.0-preview1 2.4.0-preview2 2.4.0-preview3 2.4.0-rc1 2.4.0 2.5.0-dev ... 無い。 原因 ruby-buildのバージョンが低い…

Rubyの配列を集合として扱った時の操作がとてもわかりやすい(共通集合・和集合・集合の差)

配列の準備 ary1 = %w(a b c) # ["a","b","c"] ary2 = %w(b c d) # ["b","c","d"] %wというのはパーセント記法と言うやつです。 これを使うと配列の定義が簡単にできます。 今回の場合は文字列を要素に持つ配列を作成しています。 共通集合 p (ary1 & ary2) …

Rubyのmoduleとmodule_functionについて

moduleを定義する module MyModule def hello puts 'hello' end end MyModule.hello #=> undefined method `hello' for MyModule:Module (NoMethodError) これだけだと使えない。 moduleを定義 + module_functionを定義 module MyModule def hello puts 'hel…

Rubyのmoduleを使って定義したmethodは、インスタンスmethod内で使える。クラスmethod内では使えない。

include先のクラスにて、インスタンスメソッド内で使う module Hoge def hello puts 'hello' end end class Fuga include Hoge def call_mod_method # インスタンスメソッド hello end end fuga = Fuga.new fuga.call_mod_method Hoge moduleをincludeしてFu…

Rubyのselfが微妙に意味がわからなかったので、様々な文脈(トップレベル、class定義内、method定義内、module定義内)で出力してみた

Rubyのselfが微妙にわからん Rubyのselfが使う割にきちんと理解できていない気がしたので、 いろんな文脈で出力してみた。 トップレベルの文脈でのself コード p self 結果 main トップレベルではmainというオブジェクトがmethodを実行しているらしい。 へぇ…

Rubyのprivate methodはサブクラスからも呼び出せる

PHPとRubyのprivate methodを比較してみる 子クラスから親クラスのprivate methodが呼び出せるか、 確かめてみます。 PHPの場合 実行コード

劇的ビフォ◯アフターで学ぶデザインパターン(strategy編:after)

前回のソースコードをstrategyパターンを使用して書き換えていく 前回のソースコードから、戦略に関する部分についてクラスで切り出します。 戦略クラス(特定戦略時の振る舞いを持ったクラス)を作成 # ガンガン行こうぜのとき class StrategyGangan def se…

劇的ビフォ◯アフターで学ぶデザインパターン(strategy編:before)

このシリーズについて このシリーズでは、 デザインパターンを使う場合 デザインパターンを使わなかった場合 について、 「仕様変更があった時、既存コードの書き換えがどれくらい発生するか?」 という観点で比較し、デザインパターンのメリットをより感じ…

劇的ビフォ◯アフターで学ぶデザインパターン(state編:after)

前回のソースコードをstateパターンを使用して書き換えていく 前回のソースコードを見てみると、 状態と、その状態の時の振る舞いが描かれていることがわかります。 図の例なら、「HAPPY」「HAPPY時の振る舞い(hello, goodbye)」です。 これを状態クラスと…

劇的ビフォ◯アフターで学ぶデザインパターン(state編:before)

デザインパターンのメリットについて今一度確認したい 業務で使ったり使わなかったりするデザインパターンですが、 なかなかメリットについてつきつめて考えたことがない。 「なんとなくソースコードがきれいになった気がする。。。」で頭がとまってしまって…