文字列・シンボルからクラスインスタンスを取得する
こういうコードがあるとする。
class Hoge def initialize puts 'init Hoge' end end c = Hoge c.new
c = Hoge
しているんだけれども、Hogeというのをコードに直接書くのではなく、
Hogeという文字列やシンボルからHogeクラスのインスタンスを取りたい。
eval 使えば済むんだけど、ちょっと抵抗あるよね。
sym = :Hoge c = eval(sym.to_s) c.new
Hoge がクラス名ではなく、ただの定数であることに気づくと、Module#const_get
を使えば良いことが分かる。
自身のクラスインスタンスを取得するメソッドは Object#class
だから、
sym = :Hoge c = class.const_get(sym) c.new
としたい所だけれども、classはキーワードなので、syntax errorとなる。 selfを噛ませると回避できた。
sym = :Hoge c = self.class.const_get(sym) c.new
Procを受けるところにメソッドを与える
やりたいこと
def f(x) x+2 end p [1,2,4,8].map{|e| f(e)}
を効率よく書きたい。
Object#method を使う
Object#method を使うことでmethodのオブジェクトが取れる。
def f(x) x+2 end p [1,2,4,8].map(&method(:f))
モジュールの場合
モジュールをmethodメソッドのレシーバとすれば出来る。
module M def self.f(x) x+2 end end p [1,2,4,8].map(&M.method(:f))
jenkinsのghithub連携
仕組みを理解せず説明文眺めながら適当に触ったらやっぱり動かなかったので、メモ。
目標
こんな感じのジョブを作る。
- masterにpushされたら
npm run build
して- commitしてpushする
android端末を無くして焦った(Googleデバイスを探す)
最近あんまりコードが書けてない辛みと、新しいなにかを勉強しないといけないという焦りと、結局何も出来ていないという事実が炎上気味
概要
盗まれたと思ったら盗まれてなかった
android端末を探す
「android 探す」でGoogle検索を掛けると端末のGPSがONになっている場合、位置を特定することが出来る。
また、遠隔で端末をロックしたり、消去することもできる。
なぜ盗まれたかと思ったか
- 端末を保護の説明文:…ロック画面にメッセージや電話番号を表示できます。ロック後も引き続き端末の位置特定が可能です。
引き続き端末の位置特定が可能って書いてあるけど、可能じゃなかった。 そもそもこの操作はGoogleアカウントからログアウトするので、アカウントと端末が紐付いておらず、音を鳴らすことも位置を把握することも出来ない。
ここで、「拾った人が気づいて電源を落とした」と勝手に勘違いした。
「ロック後も引き続き端末の位置特定が可能」ってどういう意味なんだろう。
思ったこと
手が届かない範囲もちゃんと整理整頓をしましょう🙄