MacのDockerもVersion 18.06.0-ceになってdocker buildが改善
7/18に先行してリリースされていたDockerの18.06.0-ceですが、 for Macにも対応されました。
今回の改善でかなりbuild速度が改善されているということで今後もDockerがコンテナ技術を引っ張っていきそうですね。
Docker Meetup Tokyo #24 (DockerCon 2018報告会) に参加してきたのですが、
www.slideshare.net
ここにまとめてくださっています。 簡単にまとめると
- docker buildの速度が大幅に改善されている
- 並列化された
- キャッシュが使えるようになった
- BuildKit を使うことでいろいろ多機能になったのと今後の拡張性が展開される予定
今後はリリースタイミングは半年ペースに落ち着くのですが、目が離せない技術ですね。
orderで特定の文字列順に並び替える
数字順で昇順、降順で並び替えるのはよくありますが、 カラムに文字列を設定してしまっていると、並び替えたくなったときにすこし不便ですね。 そんなときにはfieldを使うとうまく並び替えれます。
select id, name from items order by field(items.size, 'XL', 'LL', 'L', 'M', 'S', 'SS', 'XS')
なようなことができます。
Railsで使う場合もscopeに登録しておくと便利そうです。
scope :order_size, -> { order("field(items.size, 'XL', 'LL', 'L', 'M', 'S', 'SS', 'XS')") }
G Suite の最新便利機能 がかなり便利そう
cloudonair.withgoogle.com G Suiteを使うことで社内ミーティングの調整が楽になったり、 簡易チャットですばやく打ち合わせできたり、 動画の音声をCloud Searchを使って検索できるのはかなりの効率化ができそうで未来を感じますね。
WWDCがあったけどこのタイミングで新しいMacBookProが発表されたよ
サプライズ!?なのかこのタイミングで新しいMacBookProが発表になりましたね。 私としてはスペックが上がって嬉しいところではあるものの価格とキーボードが気になるところです。
私のほしいスペックで見積もり見てみたのですが、税別で27万5800円なので、30万近くになってしまいます。
高い買い物になるので、なかなか悩みどころですね。
13inchで32G詰めると嬉しいところなんですがね。。
Railsのmigrationでchange_columnを利用する
change_column
Railsのmigrationでカラムの情報を変更したい場合によく使うchange_columnですが、
change_column(table_name, column_name, type, options = {})
と変更したいtypeを設定してoptionsを設定すればいいので、add_columnなどとインターフェイスが変わらず設定できます。
change_column_null
NULLのtrue/falseを切り替えたいだけの場合は change_column_nullが便利ですね。
change_column_null(:users, :nickname, false)
このように設定できます。
change_column_comment
カラムに設定するコメントのみを変更する場合はchange_column_commentですね。 nilを入れることで設定しているコメントを削除することもできます。
change_column_comment(:users, :id, 'comment') change_column_comment(:users, :nickname, nil)
change_column_default
最後にカラムのデフォルト値を変更するchange_column_defaultなのですが、 このメソッドは引数にHashで:from と :to で設定することで可逆的な設定がすることができます。
change_column_default(:posts, :state, from: nil, to: "draft")
これは便利ですね。 テストで作ったけど戻したい等の場合はとても役に立ちます。
mysqldumpでテーブルを対象、対象外にする
mysqldumpを定期的にするのですが、 対象外にしたいテーブルが複数でてきたときの対応方法をメモしておきます。
ダンプファイルと取るときには直接テーブル名を選択すればいいケースもあります。 以下のコマンドですと一番上を選択してデータベースを指定して登録したいテーブル名を後ろに列挙するといいですね。
shell> mysqldump [options] db_name [tbl_name ...] shell> mysqldump [options] --databases db_name ... shell> mysqldump [options] --all-databases
MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.4 mysqldump — データベースバックアッププログラム
オプションはいろいろあるので見てもらうとして、対象外にしたい場合は--ignore-table
をつければ良さそうです。
ただ複数テーブル対象外にしたい場合は少し厄介で、--ignore-table=db_name.table_name
をたくさん作らないといけなくなります。
shellで書くとすると以下みたいにつくります。
db_host=hogehoge_host db_name=hogehoge_db db_user=hogehoge_user ignore_tables=("tests" "users" "accounts") ignore_option_str="" for tab in $ignore_tables[@]; do ignore_option_str=$ignore_option_str" --ignore-table=$db_name.$tab" done mysqldump --single-transaction $ignore_option_str -h $db_host -u $db_user -p $db_name
対象のテーブル名の方が少ない場合はテーブル名を列挙して取るのが早そうなので、ケースによって判断して取得するのがいいですかね。
Ruby2.6が早くもpreveiw2をリリース
今年のRubyKaigiは少し大きめのリリースがあったので残念ながら会社でお仕事してました。
preview2がリリースされたということで早速インストールしてみました。
brewからruby-buildを入れているので以下のように設定して置きました。
➜ ~ brew upgrade ruby-build
➜ ~ rbenv install --list | grep 2.6.0 2.6.0-dev 2.6.0-preview1 2.6.0-preview2
➜ ~ rbenv install 2.6.0-preview2
➜ ~ rbenv global 2.6.0-preview2
➜ ~ ruby -v ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-darwin17]
これでしばらくruby2.6.0-preview2で生活してみます。