ワーパパエンジニアの学び手帳

ワーパパエンジニアの業務外での学びとかガジェットネタとか

PostgreSQLのALTER TABLEに苦戦

PlayframeworkではDDLを予め用意しておくことでアプリケーションの起動時にDDLを実行してテーブルを自動生成してくれます(evolutions)。
Java版だとModelからDDLを自動生成してくれますが、Scala版だとDDLは自分で書く必要があります(という認識)。

自作アプリケーション作成時に、ローカルではH2、本番(Heroku)ではPostgreSQLを使用しています。
ところが、ローカルでは実行できていたDDLがHerokuではコケるという事象が。
PostgreSQLのエラーログがいまいちわかりづらくてなかなか原因が把握しづらかったのですが、どうやら以下の通りらしい。

H2とPostgreSQLではALTER TABLEの文法が異なる

今回コケたのはALTER TABLE文で、カラムの型変更をしようとしてました。

/* H2 */
alter table TABLE1 alter column COLUMN1 (DATATYPE); 
/* PostgreSQL */
alter table TABLE1 alter column COLUMN1 [SET DATA] TYPE (DATATYPE);

(DATATYPE)は変更後の型、[]内の有無は任意です。

さらに、今回カラムの型変更と同時にデフォルト値の設定をしようとしたのですが、H2では1文で実行できる一方、PostgreSQLでは2文に分けないと実行できないようです。

/* H2 */
alter table TABLE1 alter column COLUMN1 TIMESTAMP SET DEFAULT CURRENT_TIMESTAMP;
/* PostgreSQL */
alter table TABLE1 alter column COLUMN1 [SET DATA] TYPE TIMESTAMP;
alter table TABLE1 alter column COLUMN1 SET DEFAULT CURRENT_TIMESTAMP;

この例ではTIMESTAMP型に変更し、デフォルト値に実行時のTIMESTAMPを指定しています。

データベースによりSQLの文法が変わってくるので、環境間で異なるデータベースを使うのは極力避けましょうってことですね。

参考

[H2] http://www.h2database.com/html/grammar.html#alter_table_add
[PostgreSQL] https://www.postgresql.jp/document/9.4/html/sql-altertable.html

Kindle(無印)が3,980円という衝撃(4/2まで)

いやはや、久々の衝動買いですわ。。

Amazonが現在タイムセール中(明日4/2まで!)なのですが、なんとKindle(無印)が5,000円引きで3,980円というのです。
※プライム会員限定です。

Amazon.co.jp: Kindleクーポンキャンペーン: Kindleストア

Kindleには他にもPaperwhiteなど上位機種があるのですが、比較検討も程々にポチってしまいました。
私はiPdaAir2も所持しており、KindleアプリはiPhoneやiPadAir2で利用しているので特に新しいことができるわけでもないのですが。

Kindleオーナーライブラリで月1冊無料で読める

Kindle端末を持つことで新たにできることといえば、Kindleオーナーライブラリが利用できるということ。
これもプライム会員であることが条件になりますが、Kindle端末上で月1冊無料で読むことができるのです。
端末代3,980円ならこれだけで元が取れるというもの。

タイムセールは明日4/2までなので、迷ってる方はお早めに!

Kindle Paperwhite Wi-Fi、ブラック

Kindle Paperwhite Wi-Fi、ブラック

Paperwhiteは5,800円引きの8,480円。

Paperwhiteのマンガモデルは6,300円引きの9,980円。

Linux Mintでキーバインド変更(変換キーのみ)

今回はLinux Mintキーバインドを変更する方法について書こうと思います。
ただし、今回の内容は「変換キー(日本語⇔アルファベットの入力切換)」についてのみ触れます。

こちらの記事を参考にしました。

viva-linux.jp

なお、Linux Mint 18はインストール時に日本語環境を選択しておくとfcitx-mozcという日本語入力メソッド?がインストールされてきます。(この辺はあんま意識せずにインストールしていたためあまりよくわかってません。。)

  1. メニューから「Fcitx設定」を選択。 f:id:us_key:20170313235844p:plain

  2. なにやらワーニングが出ますが、気にせず「OK」を選択。 (上記のリンクではGUIで設定ができていますが、このあと設定ファイルの直接編集となります。。ワーニングが出る原因は不明。)
    f:id:us_key:20170314000736p:plain

  3. ファイルがテキストエディタで開くので、赤枠箇所の設定内容を確認。
    デフォルトでは入力メソッドのOn/Off(日本語⇔アルファベットの入力切替)に「Ctrl+Space」、「全角半角」キーが割り当てられています。
    f:id:us_key:20170314001910p:plain

  4. 設定したい内容に編集し、ファイルを保存。 今回は「無変換」、「ひらがなカタカナ」キーを割り当てました。試しに3つ以上指定してみましたが、先頭2つのみ有効になるようです。
    各キーに対してどのようにファイルに入力すればいいかは、まあ色々設定してみて効くかどうか試してみてください(投げやり
    f:id:us_key:20170314002906p:plain

先日までMacを使っていたため、とりあえず変換キーだけMacに近づけようと思いこの設定にしたのですが、
どちらを押しても日本語⇔アルファベットの切り替えとなってしまい、英数キー、ひらがな・カタカナキーと言った割当は(少なくともこの方法では)できないようです。
(できる方法があったら教えてください)
Windowsではそういった設定ができるのでWin10も会社のWin7もそのように設定しています。

今日はここまでです。

新しいLinuxの教科書

新しいLinuxの教科書