Tips
-
DependencyViolation: Network vpc-xxx has some mapped public address(es). Please unmap those public address(es) before detaching the gateway 에러Tips 2022. 12. 3. 19:40
VPC에 종속적으로 붙어있는 다른 네트워크 아이템이 있어 삭제되지 않는 문제이다. - Security Group - EIP - NAT Gateway - Subnet 등을 확인해야한다. AWS 공식문서를 확인하면 다음 방법을 통해 VPC의 종속성을 확인할 수 있다. 1. 쉘 스크립트 작성 (이름은 임의로 아무거나 해도 된다. 나는 check.sh로 했다) #!/bin/bash vpc="vpc-{에러메세지에 뜬 VPC#}" region="{리전 코드 e.g.ap-northeast-3}" aws ec2 describe-internet-gateways --region $region --filters 'Name=attachment.vpc-id,Values='$vpc | grep InternetGatewayId a..
-
파이썬 round 함수의 오류 (2.5가 2가되는 마법 - 사사오입과 오사오입)Tips 2022. 9. 30. 00:33
코드에 결과값이 이상하게 나와서 디버깅을 하다보니 round함수를 거치니 2.5가 2가되는 현상을 발견했다. 생각해보니 예전에도 이런 적이 있었는데 또 까먹고 이걸 쓰고 있는 내 자신을 보고 이번엔 궁금증을 해결한 흐름에 따라 글로 남겨보려고 한다. 왜 2.5의 반올림이 2가 되었는가? 결론부터 말하면 파이썬의 round함수는 오사오입(5미만이면 죽이고 5이상이면 올리는)방식을 채택하고 있기 때문이다. 영어로 Banker's Rounding이라고 한다. 이 방법을 따르면 소숫점이 0.5가 아닌 경우에는 일반적으로 우리가 알고 있는 반올림과 같은 방법으로 수행되지만, 소숫점이 0.5인 경우에는 정수 부분이 짝수인 경우 소숫점을 버린다. 즉, 2.5, 4.5, 14.5 ... 는 2,4,14가 된다. (원칙..
-
파이썬에서 psycopg2 사용하지 않고 Redshift 연결하는 법 (feat. Error: pg_config executable not found)Tips 2022. 7. 26. 00:50
Python에서 Postgresql 데이터베이스를 사용하려면 psycopgy2라이브러리를 사용해야한다. Redshift역시 postgresql 기반이므로 psycopg2를 많이 사용한다. Psycopg2 설치하면서 pg_config 에러는 한번씩은 다 마주쳐봤을 것이다. 보통 이 에러는 psycopgy-binary를 설치하여 해결할 수 있는데, 맥북 m1칩 + Big Sur이상이거나 python 3.6~3.9이외의 버전에서는 psycopg2-binary 설치시에도 동일한 에러가 뜬다는 것이다. 해결방법은 다음과 같이 여러가지가 있다 (에러메세지 길이에 비해 생각보다 간단해서 화남) Postgresql을 설치해준다 $brew install postgresql Python 3.6 ~ 3.9 사이로 버전을 맞..
-
파이썬 패키지 만들어서 Pypi에 배포하기 (+ README.md 홈 화면에 띄우기)Tips 2022. 7. 25. 23:57
DA분들 중에 Python을 사용하여 분석을하고자 하시는데 Redshift에서 데이터를 바로 불러오시지 못해 번거로운 과정을 거치고 계시는 걸 알게 되었다. Psycopgy2나 Boto3와 같은 라이브러리를 사용하시면 되지만 이런 필요성이 생길 때마다 여러 줄의 코드를 알려드리고 동작 방법에 대해서 설명드리기보다는 차라리 메소드 하나로 바로 Pandas frame으로 불러올 수 있는 패키지를 만드는 것이 빠르겠다는 판단이 들어 Python 패키지를 만들어 pypi에 배포했다. (처음에는 Pypi에 배포하지 않고 사내에만 공유하여 모듈 내부에 DB user 인증정보까지 넣어서 좀 더 간단하게 쓰실 수 있게 하려고 했는데 확장성을 위해 내부 회의 후 Pypi에 배포하고 계정 정보는 제외하는 것으로 결정했다...
-
Redshift에 CSV 데이터로 테이블 만들기Tips 2022. 6. 25. 00:09
CSV 데이터를 통째로 import해서 테이블로 만들어야 할 경우가 있을 때 개발 언어를 사용할 줄 아는 사람이라면 DBAPI 라이브러리를 사용해 (psycopg2 등) csv를 연 다음 insertmany나 for문+insertone을 날리면 되겠지만 redshift는 copy라는 좀 더 간단한 구문을 지원한다. 더불어 DBeaver와 같은 SQL client SW를 사용한다면 해당 소프트웨어에서 CSV import 기능을 제공해주고 있을 가능성이 높다. 그런데 예전에 DBeaver로 해봤을때는 CSV형 테이블?이라는 식으로 생성되어 쿼리가 안 날려졌던 기억이 있는데 아무튼 지원은 됐다. Client SW를 통해서 import를 하면 내가 테이블을 따로 생성할 필요없이 클릭 몇 번으로 소프트웨어가 자동..
-
Github 커밋 하나로 합치기 (전체, 선택)Tips 2022. 6. 20. 20:34
이것저것 개발을 하고 commit을 했는데 여태까지 커밋한 내역을 하나로 합쳐서 깔끔하게 남기고 싶은 경우 내역을 하나로 합칠 수 있다. 아래 과정을 따라가다가 중간에 마음에 안 드는 작업을 했거나 아차 싶은 경우 git rebase --abort를 수행하면 작업이 초기화된다. 1. 포인트를 rebase해준다. Rebase 해 주는 곳은 합칠 커밋의 바로 직전 커밋이다. $git rebase -i [포인트 할 커밋 번호 또는 HEAD~합칠 커밋의 수] a,b,c,d를 커밋했다고 가정했을 때, b,c,d의 커밋 내역을 하나로 합치고 싶을 경우 - git rebase -i [a의 커밋번호] - git rebase -i HEAD~2 로 수행할 수 있다. 두 명령어의 결과값은 같다. 전체 커밋 내역을 하나로 만..
-
파이썬으로 쉘 명령어 날리기 (부제: AWS CLI 에러 읽어오기)Tips 2022. 6. 16. 01:34
Python으로 쉘 명령어를 날리는 법 중 세 가지를 정리해본다. 1. os.system import os os.system('쉘 명령어') os.system은 쉘 명령어의 수행 결과값을 콘솔에 출력한다. 즉, 수행 결과값을 파이썬 내에서 사용할 수 없다. import os os.system('echo Hello') result = os.system('echo Hello') print(result) 위의 파이썬 파일을 실행하면 출력값은 Hello/Hello/0이다. 즉, 변수에 담는 코드 줄도 결과를 콘솔에 출력하고 result에는 0이 담긴다. 2. os.popen 출력 결과값을 변수에 담아서 사용하고 싶다면 os.popen을 사용할 수 있다. import os os.popen('쉘 명령어') os.p..