shonen.hateblo.jp

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

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

JavaのHelperクラスって何

概要

Javaの本でたまに見かけるのがHogeHelperとかのHelperと付いたクラス。

デザインパターンの一種なのか、適当につけたものなのか、なにか背景があるのか、結局クラス名や機能を見て理解できなかったので調べた。

wikipedia

英語版wikipediaに記事があった。信用性はいまいちだけれど。

en.wikipedia.org

クラスの主目的とはズレるメソッドを定義したい場合にHelperを使うっぽい。

さらに、Helperはメンバ変数を伴うもの、Utilityはメンバ変数を伴わず静的メソッドだけで記述されるものとある。

具体例

HelperとUtilityの違いは分かったが、主目的に一致するかどうかの判断が微妙(必要だから実装するんじゃないの?)なので、具体例を見てみる。

そもそも僕がHelperを見かけたのは、Androidsqliteへのアクセスに使われていた所。SQLiteOpenHelper。

SQLiteOpenHelper自体はabstract classで、ユーザがSQLiteOpenHelperを継承したクラスを作って、そのクラスインスタンスを介してsqliteにアクセスする。

developer.android.com

You create a subclass implementing onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) and optionally onOpen(SQLiteDatabase), and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary.

このHelper抽象クラスに実装すべきものは、「テーブルが無いなら作る」「更新が必要なら更新する」といった機能らしい。

確かに、この機能はデータベースの機能ではないし、モデルの機能とも違う…?。

いやわかんないですねやっぱり。でもAndroid Dev.でテーブルが無い・重複した問題を避けてあげるためのフレームを用意しているのは好感がありますね?

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

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

概要

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

android端末を探す

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

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

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

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

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

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

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

思ったこと

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

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

イベント概要

supporterzcolab.com

動機

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

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

続きを読む