月: 2022年1月

  • Makefile make: `test’ is up to date.

    以下のように Makefile のあるディレクトリに ファイルもしくはディレクトリが存在する場合がある。

    % tree
    .
    ├── Makefile
    └── test
    
    

    このような環境の場合、同名のコマンドが Makefile に記載がある場合は `test’ is up to date. というエラーが表示され Make ファイルが実行されない。

    test:
    	echo hogehoge
    

    これを対処するには、.PHONY を宣言することにより回避可能となる

    .PHONY: test
    test:
    	echo hogehoge
    

    以上。

  • snowflake でテーブル定義を確認する

    mysql であれば show create table コマンドでDDLを確認することができるが、

    snowflake ではこのコマンドを使うことができない。

    snowflake では以下のコマンドを使うことでDDL を確認することができる。

    select GET_DDL ('TABLE', 'テーブル名');
    

    結果は以下の通り

    >select GET_DDL ('TABLE', 'TEST');
    +----------------------------------------+                                      
    | GET_DDL ('TABLE', 'TEST')      |
    |----------------------------------------|
    | create or replace TABLE TEST ( |
    | 	ID NUMBER(18,0),                                                                                 |
    | 	TARGET_DATE DATE,                                                                                 |
    | 	CREATION_DATE TIMESTAMP_NTZ(9) NOT NULL                                                                                 |
    | );                                     |
    
  • python3 でディレクトリがなければ作る

    exist_ok を使うことで 1行にまとめることができる

    os.makedirs("作りたいディレクトリ", exist_ok=True)
    

    例えば以下の通り

    os.makedirs("~/.ssh/", exist_ok=True)
    

  • Error: Unknown command: cask brew cask コマンドができない問題

    % brew cask install snowflake-snowsql
    Error: Unknown command: cask
    

    cask コマンドは install コマンドのオプションになったそうだ

    今は、

    brew install --cask snowflake-snowsql 
    

    を叩くことでインストールできる。

    参考情報

    https://qiita.com/horit/items/03e6ae6599253afcd75c

  • [git cherry-pick]他ブランチ変更を自分のブランチに取り込む

    チーム開発をしていると、他の人のブランチでが変更された内容を自分のブランチに取り込みたい場合がある

    その対処法を紹介。

    解決方法のひとつに git cherry-pick を使うというものがある。

    Apply the changes introduced by some existing commits

    https://git-scm.com/docs/git-cherry-pick

    とあるように、コミットを元に変更を適用してくれる。

    使い方は以下の通り

    git cherry-pick 4b0774ffe といったように、commit hash を後ろに加える。

    $ git cherry-pick 4b0774ffe
    [feature/hoge3d0e697] change date
     Author: sumito.tsukada <sumito.tsukada@hoge.com>
     Date: Wed Jan 12 11:07:04 2022 +0900
     1 file changed, 2 insertions(+), 2 deletions(-)
    

    覚えておくとなにかと便利。

  • Makefile から パラメータストア(SSM) を呼んで docker-compose に渡す

    Makefile 内で環境変数を docker-compose に渡そうとしてもうまく環境変数が展開されなかった。

    Makefile の冒頭で SSM を呼び出す定義を書き、

    make run

    実行すると同時に呼び出し処理を呼ばせるような作りをすることによって実現できた。

    
    set-env := export AWSSSMPARAM1=$(shell aws ssm get-parameters --names "AWSSSMPARAM1" --with-decryption --region ap-northeast-1 --query "Parameters[].Value" --output text) ;\
    	export AWSSSMPARAM2=$(shell aws ssm get-parameters --names "AWSSSMPARAM2" --with-decryption --region ap-northeast-1 --query "Parameters[].Value" --output text)
    
    run:
    	$(set-env) && docker-compose up -d 
    

    セキュアな情報をローカルで持ちたくない場合はあると思うし、使える場面ば多そうだ。