where all_month の罠

Rails (ActiveRecord) で月の集計を取りたい場合、all_month メソッドを使って、MyModel.where(created_at: time.all_month) のようにすると BETWEEN '2020-04-01 00:00:00' AND '2020-04-30 23:59:59.999999' のようなSQLになるので便利です。

ここで集計対象が DateTime なのに間違えて Date の all_month を使ってしまうと、SQLが BETWEEN '2020-04-01' AND '2020-04-30' となってしまい、月末が集計から漏れてしまうので注意!

ティマイオス/クリティアス

「国家」の後日のソクラテスさんたちの雑談。この世界や宇宙がどのようにでき、どのようなもので作られているのか、人の体がどのような仕組みなのか、などのお話。

海に沈んだアトランティス大陸の話が出てくる。

零戦 その誕生と栄光の記録

新型コロナ(COVID-19)で外出自粛要請で家で映画でも見ようと思ってジブリの「風立ちぬ」のDVDを買って観て主人公の堀越二郎に興味を持ったのでアマゾンで検索して買った本。

当時ボトルネックだったエンジン性能をカバーするための設計や製造における取組がすごかった。運動性能を上げるために防弾性能を犠牲にしていたという話だけ聞き齧ってたのだけど、それだけの単純な話ではなかった。技術者や操縦者たちの英知と努力の成果物だったんだなぁ。

零戦(ゼロセン)と呼ばれているけど「ゼロ」は英語で、当時の日本は英語使うのって禁止じゃなかったけ?と思っていたのだけど、戦時中は国内は存在そのものが伏せられていて、あまりに戦果を上げすぎて外国での認知度が高かったということらしい。国内で初めて公に零戦の存在が報道されたのは神風特攻隊が使った戦闘機としてとのこと。つらい。

Heroku Postgres のデータベースをローカルの開発環境にリストアする

Herokuの本番環境のデータベースをローカル環境にコピーして利用したい場合の手順。

データベースのバックアップを作成

heroku pg:backups capture --app app_name

コマンドを実行するとバックアップが実行される。しばらくしてバックアップが終了すると以下のように表示されるので、バックアップ名(b001の部分)を控えておく。

Backing up DATABASE to b001... done

バックアップをローカルにダウンロード

heroku pg:backups:download b001 --app app_name

先ほど控えておいたバックアップ名を指定してダウンロードする。カレントディレクトリに latest.dump という名前でダンプファイルが作成される。

データベースのリストア

pg_restore --verbose --clean --no-acl --no-owner -h localhost -U user_name -d database_name latest.dump