delta’s diary

プログラミングとか

db migration toolどうやって選ぶ?

db migration toolは世の中にたくさんあるので使いたいものを使えばいいと思うが、自分が選ぶとしたらこんな基準があるかなというやつ。

migration toolって何ができたら嬉しいか

検討ポイント 理由 優先度
checksumを確認している DBが壊れるのは絶対に避けたい。おかしいデータを入れさせない。 high
生のSQLで記述する (好み)使っているtoolがもし更新されなくなった時に変えが効くように。学習コストもDSL記述より低い。 high
コマンドライン実行できる アプリに統合した形(railsなど)だと、そのwebアプリを捨てることが一生できなくなってしまうのでできれば避けたい。 high
金額 無料の方が嬉しい(当たり前)。flywayとかはライセンス料が意外と高い。 middle
dryrunができる 気軽にロールバックできるようにすればいいのでそこまで問題ではない。 low
rollbackができる rollbackをmigration toolに任せてしまうと意図から外れた変更が起こりかねないので慎重にやるためにも手運用で十分。 low

なので自分はflyway(free)をコマンドラインで使うのが好き。

勿論寿命が短いアプリとか、それぞれ適材適所あると思うのでその時にあった物を使うのが一番大事。

こういうdb migration toolいいよとかあったら教えてください。

node環境を作ったけどあってるかわからない

nodeのversion管理にnodenvを使う。

$ brew install nodenv

lts版のnodeをinstallする

$ nodenv install 10.15.3
$ nodenv global 10.15.3

.zshrcにPATHとinitを追加する。

export PATH="$HOME/.nodenv/bin:$PATH"
eval "$(nodenv init -)"

yarnをインストールする。公式のページを見るとnvm関係を使ってる人は以下のコマンドを実行してください、と書いてあるのでコピペした。

$ brew install yarn --ignore-dependencies
Updating Homebrew...
Warning: --ignore-dependencies is an unsupported Homebrew developer flag!
Adjust your PATH to put any preferred versions of applications earlier in the
PATH rather than using this unsupported flag!

==> Downloading https://yarnpkg.com/downloads/1.16.0/yarn-v1.16.0.tar.gz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws
######################################################################## 100.0%
🍺  /usr/local/Cellar/yarn/1.16.0: 14 files, 4.7MB, built in 6 seconds

なんか依存関係が不安。。。ダメそうだったらやり直そう。

macのlsコマンドに色付けする

macに入ってるlsはBBD系でlsコマンドの--color=autoが使えない。

ls -Gを使えば色は着くけどrun controlファイルを他でも使いまわしたいので、GNUのlsを使うようにしたい。

brewcoreutilsを入れるとGNU/linuxのlsが使えるので入れる。

$ brew install coreutils

あとはrun controlに以下を追記すればlsが多少見やすくなる

alias ls="gls --color=auto"

mac OSのlocaleの話

大抵のmac userはitermなり元々macに入っているターミナルを使ってると思う。

そしてlocaleが自動で設定されるようなオプションも大概の人はオンになってると思う。

f:id:deltama:20190523230323p:plain
iterm2の設定画面

ある案件でmacタイムゾーンを変えたくなって色々いじった時にmacがおかしくなってることに気づいた。

別のマシンにsshすると-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directoryの文字が。

どうやらlocaleの返り値がいつの間にか別のものになってたみたいだった。

$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

色々調べたら言語と地域の地域をアメリカ合衆国にしてるせいだった。。

f:id:deltama:20190523232154p:plain
言語と地域

日本に戻したら

$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=

ちゃんと戻った。sshも問題なし。

gitlab apiでハマった

gitlabのアサインをapi経由で行ったところ一人だけどうしてもアサインできないユーザがいた。

どれだけapi叩いてもアサイン変わらないし、apiの返り値は普通に200なので????

色々調べたところ、そのユーザだけ同じ名前で二つアカウントが存在してて、一度も使っていないユーザはアサインができないみたいだった。

(エラーはいてほしみ。。。)

githubの設定をする

パソコンを新しくしたせいでgithubへのアクセスもできなくなってた。

設定した。

$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa
$ cat id_rsa.pub | pbcopy

クリップボードにコピーした公開鍵をgithubのSettings ->SSH and GPG keys -> new SSH key。

Titleに適当な識別名、Keyに公開鍵登録する。

~/.ssh/configに以下を書く

Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
  User git

あとは

$ ssh -T git@github.com

で接続確認しておしまい。