IDEA Note

  • 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 
    

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

  • mysql のコンテナをすぐに使う

    何も考えず mysql をすぐに用意する方法

    docker run --name instant-mysql -v ${PWD}/data:/var/lib/mysql \
    -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e TZ=Asia/Tokyo \
    -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    

    接続方法は以下の通り

    mysql -u root -ppassword -h 127.0.0.1
    

  • Mac に php8 インストールする手順

    前準備

    まずは berw を最新にする

    brew update
    git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow
    

    インストール

    php 8 が brew コマンドでインストールできることを確認

    brew search php@8
    

    mac に php 8 をインストール

    brew install php@8.0
    

    パスを通す

    vi ~/.zshrc

    export PATH=$PATH:/usr/local/opt/php@8.0/bin:/usr/local/opt/php@8.0/sbin
    

    source ~/.zshrc

    バージョン確認

    php -v

    composer install

    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    composer -V
    
    
  • Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

    Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 83886080 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleSet.php on line 90
    
    Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.
    

    PHP のメモリーが少ないためのエラー

    composer の場合、COMPOSER_MEMORY_LIMIT を先頭につけることで回避可能。

    `COMPOSER_MEMORY_LIMIT=-1 composer require auth0/auth0-php`

  • gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed

    Mac の docker の version が低い可能性がある。

    version up することで問題は解消された。

    update 方法は以下のブログにあるファイルをダウンロードし、展開するだけ

    https://docs.docker.com/desktop/mac/release-notes/

  • Fatal error: Allowed memory size of 1610612736 bytes exhausted

    現在の PHP の memory_limit を確認

    php -r "echo ini_get('memory_limit').PHP_EOL;"
    
    128M
    

    php.ini を確認する

    環境によっては複数の php の version が入っていることもある。

    % sudo find / -name php.ini 
    /usr/local/etc/php/7.2/php.ini
    /usr/local/etc/php/7.3/php.ini
    /usr/local/etc/php/7.4/php.ini
    /usr/local/etc/php/8.0/php.ini
    
    

    php の version を確認し、あたりをつける。

    % php -v
    PHP 7.3.11 (cli) (built: Jun  5 2020 23:50:40) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
    

    php 7.3 のようなので、設定ファイルは

    /usr/local/etc/php/7.3/php.ini ではないかと推測

    設定を確認すると、128M ということを確認できた。

    上限を取り除くには

    memory_limit = -1
    

    に変更する。

    composer の場合

    COMPOSER_MEMORY_LIMIT=-1

    を先頭に追加してコマンドを実行することで回避できる

    COMPOSER_MEMORY_LIMIT=-1 laravel new sample-project