shonen.hateblo.jp

やったこと,しらべたことを書く.

文字列・シンボルからクラスインスタンスを取得する

こういうコードがあるとする。

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))

android端末を無くして焦った(Googleデバイスを探す)

最近あんまりコードが書けてない辛みと、新しいなにかを勉強しないといけないという焦りと、結局何も出来ていないという事実が炎上気味

概要

盗まれたと思ったら盗まれてなかった

android端末を探す

android 探す」でGoogle検索を掛けると端末のGPSがONになっている場合、位置を特定することが出来る。

また、遠隔で端末をロックしたり、消去することもできる。

なぜ盗まれたかと思ったか

  • 端末を保護の説明文:…ロック画面にメッセージや電話番号を表示できます。ロック後も引き続き端末の位置特定が可能です。

引き続き端末の位置特定が可能って書いてあるけど、可能じゃなかった。 そもそもこの操作はGoogleアカウントからログアウトするので、アカウントと端末が紐付いておらず、音を鳴らすことも位置を把握することも出来ない。

ここで、「拾った人が気づいて電源を落とした」と勝手に勘違いした。

「ロック後も引き続き端末の位置特定が可能」ってどういう意味なんだろう。

思ったこと

手が届かない範囲もちゃんと整理整頓をしましょう🙄

まつもとゆきひろさんの特別講演まとめ(2019/07 若手エンジニアの生存戦略 )

イベント概要

supporterzcolab.com

動機

実は去年?も視聴しようとしていたのですが、ゆるっと見逃してしまった。

今年は手の届く場所に住んでいたので、動画配信ではなく、直接参加することに。

続きを読む