Medium に移行します
こちらのはてなブログですが、今後 Medium に移行します。
iTerm2 v2.9 で、docker tool box が動かない問題の対処法
Docker Toolbox が起動しない
環境
- Mac OSX El Capitan 10.11.4
- iTerm2 Build 2.9.20160313
再現手順
- Docker Toolbox をダウンロード
- 初回起動時に、iTerm2 を選択
- docker 系のコマンドを叩くと下記のエラー
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
解決法
source /Applications/Docker/Docker\ Quickstart\ Terminal.app/Contents/Resources/Scripts/start.sh
Swift で NSObject を継承したクラスに Hashable プロトコルを適応したい
Objective-C のライブラリを Bridging Header を使って、swift から使っている時の話です。
状況
- NSObject を継承したクラスを継承している
- そのクラスに
Hashable
プロトコルを適応しようとする
エラー
Redundant conformance of 'Marker' to protocol 'Hashable'
このエラーは、すでに使用しているプロトコルを、再度継承しようとした時に起こります。
つまり、GMSMarker
はすでに Equatable
か、Hashable
を継承している、ということになる
ただし、Swift のコードを見る限り、継承はしていない。
原因
NSObject
が、Hashable
の機能を最初から持っている
解決策
Objective-C の実装を使用する
class Marker: GMSMarker { // MARK: Hashable objective-c implementation override var hashValue: Int { get { return userData.hashValue } } override func isEqual(object: AnyObject?) -> Bool { guard let marker: Marker = object as? Marker else { return false } return userData == marker.userData } }
userData
で hashValue
を計算していることに深い意味はありません、適当に重複しなさそうな計算式を当ててください。
UIButton の imageView と titleLabel を縦に並べる
こういうボタンを作りたいことがあった。
@IBDesignable と @IBInspectable を使って、 xib に反映できる形での実装。 それぞれの中心で alignment を取るようになってる
参考
要点で学ぶ、デザインの法則150
ビー・エヌ・エヌ新社 (2015-10-16)
売り上げランキング: 35,795
読んだ。
チュートリルとかではなく、図鑑のようなイメージ。
見開き左側に解説、右側に写真や絵を使った使った具体例が載ってる。
すぐに使えるようになるテクニックもあれば、そうでないのも多々載っているので、一度流し読みして、頭の片隅においたあとに、なんとなく思い出してもう一度読む感じで使うといいかもしれない。