docker コマンド チートシート
自分用メモです。
コンテナ系
コンテナ一覧を表示
# 起動中のコンテナのみ $ docker ps # 停止中のコンテナも含む $ docker ps -a # コンテナIDだけ列挙 $ docker ps -q
コンテナを起動
$ docker start <コンテナID or NAME>
コンテナを停止
$ docker stop <コンテナID or NAME>
イメージ系
イメージを列挙
$ docker images
イメージを削除
docker rmi <イメージID>
Unityでの設計について考える
Unityでコーディングしてると、依存性解決のためにUnityのGUIエディタつかって手動でポチポチしたり、
シングルトンパターンが多発するみたいなことありがち。
あとScene初期化のたびにFindObjectでシーン上のGameObject探してきたりとか、
バグが混入しそうな実装にいつも悶々としていた。
そんな私に一筋の心地よい風が吹いた。Zenjectである。
www.slideshare.net
大変よさげ。
UniRx + Zenject で結構設計きれいになるんでは?
おまけ
gitでリモートのブランチをローカルに持ってくる
git でリモートの他の人のブランチを持ってきて作業したい時ってありますよね。
今まで自分はこれやりたい時、ネットで検索して出てきた以下のコマンドでやってました。
$ git fetch $ git checkout -b branch_name origin/branch_name
しかし、こんな長ったらしいコマンドではなく、以下でよいということに気づきました。
お恥ずかしい限り。
$ git fetch $ git checkout branch_name
【iOS】フェードで切り替わるContainer ViewController メモ
iOS (or macOS) でアプリを作る際、ログイン中なら普通の画面、未ログインの場合はログイン画面を表示、という処理は頻発すると思います。
モーダルでログイン画面を出すという方法もありますが、色々面倒なのでApple公式で「Container View Controller」と呼ばれている手法で VC1 in VC2 という構造にして、VC1はずっと生きていて、その中の子であるVC2を切り替える、とするのが一般的だと思います。
iOS View Controllerプログラミングガイド: Container View Controller を実装する
Storyboardでは「ContainerView」というパーツがObject Libraryに用意されていますが (実体はUIViewのようです)
コードで実現する場合は気にすることがちょいちょいあって、忘れがちなので自分用のメモです。
switchToメソッドでViewControllerを切り替えます。
遷移時のエフェクトはシンプルなクロスフェードです。
class MainViewController: UIViewController { private var currentVC: UIViewController! func switchTo(_ newVC: UIViewController) { guard let oldVC = currentVC else { show(newVC) return } newVC.view.alpha = 0.0 addChildViewController(newVC) oldVC.willMove(toParentViewController: nil) transition(from: oldVC, to: newVC, duration: 0.5, options: UIViewAnimationOptions.transitionCrossDissolve, animations: { oldVC.view.alpha = 0.0 newVC.view.alpha = 1.0 }, completion: { [weak self] _ in self?.currentVC = newVC }) } private func show(_ vc: UIViewController) { currentVC = vc addChildViewController(vc) view.addSubview(vc.view) vc.didMove(toParentViewController: self) } }
参考
www.slideshare.net
App Kitで自動フルスクリーン
NSWindowのtoggleFullScreenメソッドを使う。
import Cocoa class ViewController: NSViewController { override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear() { super.viewDidAppear() view.window?.collectionBehavior = NSWindow.CollectionBehavior.fullScreenPrimary view.window?.toggleFullScreen(nil) } override var representedObject: Any? { didSet { // Update the view, if already loaded. } } }
App Kit でバッテリーの状態を取得
WWDC 2018でiOS アプリをMacに移行できるようにする方針が発表されました。
Apple は AppKitをUIKitっぽく作り直して発表するはず、という噂はかなり前から囁かれていましたが、
UIKitがMacOSでも動くようにしてる、という理解が正しそうです。
おそらく、UIKitだけでMacアプリが作れるというよりは、AppKitも使用しながら、UIKitで書かれた部分もまるっと持ってこれるようになる感じ?
ですのでMacアプリを作りたいならどのみちApp Kitの勉強も必要。
自分はバッテリー状況や加速度センサーの値に応じていろいろ起こるアプリを作りたいと思ってます。
バッテリーはIOKitを使えばできそう。
IOPowerSources.h | Apple Developer Documentation
しかし、加速度センサーの値はmacOSアプリだと取得できなさそう?
ぬーん。
reduxのreselectについて調べた
reselectは主にreduxで利用される、計算結果のメモ化を担うライブラリ。
とはいえreduxに依存しているわけではないので、単体でも使える。
使い方はざっくりこんな感じ。
createSelector 関数で、メモ化selectorをつくる。
input-selectors の値が変わるような Redux ステートツリーの 変更があると、transform function が呼ばれる。 (transform functionの引数はinput-selectorの実行結果)
input-selectorsの値が前回呼ばれた時と一緒なら、 transoform function を実行せずに、前回計算された値を返す。