python で開発をする場合、requirements.txt に install したいパッケージを書く事が多いが、その際 install するパッケージの version を知りたい場合がある。
(さらに…)投稿者: sumito.tsukada
-
ERROR 2026 (HY000): SSL connection error: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol
mysql
コマンドで接続しようとした際このエラーに陥った。原因はおそらく TLS の問題。
mysql command の場合
--ssl-mode=DISABLED
オプションをつけることで回避可能mysql -h10.10.0.1 -uuser -p --ssl-mode=DISABLED
-
boto3 でファイルをアップロードする
python 経由で s3 にファイルをアップロードしたくなる場合がある。
本記事はその際のメモ。
import boto3 # 書き込み先バケット BUCKET = 'output-bucket' INPUT= 'hoge.csv' OUTPUT = 'hoge.csv' # OUTPUT = 'DIR/DIR/hoge.csv' s3 = boto3.resource('s3') s3.Bucket(BUCKET).upload_file(Filename=INPUT, Key=OUTPUT)
ポイントとして、書き込み先の s3 のディレクトリに対し書き込むとき、存在しないディレクトリを対象にすると、存在しないディレクトリは一緒に作られる。これは、そもそも s3 にディレクトリという考えがないためである。
それについては以下の記事を参照
-
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
を叩くことでインストールできる。
参考情報
-
[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