분류 전체보기
-
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..
-
세마포어 CI로 Github CI/CD 구축하기 - 2. 세마포어 프로젝트 생성하기Project/CICD 2022. 6. 16. 00:09
세마포어 CI(이하 세마포어)에 프로젝트를 생성하려면 Github에 Github app을 설치할 수 있는 권한이 있어야한다. 혹시나 특정 organization에 속한 repository에 파이프라인을 설치하고자하고, 본인이 해당 organization에서 Github app을 설치할 수 있는 권한이 없다면(=저요^_^) 조심스럽게 admin분께 프로젝트 생성을 요청해보자. 0. 세마포어 프로젝트 생성 전에 연결하고자하는 Github repository를 먼저 생성한다. 1. 세마포어 홈페이지 좌측 상단에 있는 Create new에 들어가서 자신감 넘치게 I know what I'm doing이라고 thumbs up을 날리고 있는 분 옆에 있는 Choose repository 클릭 2. Give acce..
-
AWS AccessDeniedException: user is not authorized to perform: iam:PassRole on resource 에러 해결 방법Tips 2022. 6. 15. 21:37
Boto3나 AWS CLI를 사용하여 Glue 명령어를 수행할 때 다음과 같은 에러메세지가 떴다. botocore.errorfactory.AccessDeniedException: An error occurred (AccessDeniedException) when calling the UpdateJob operation: UserL arn:aws:iam:***:user/{유저이름} is not authorized to perform: iam:PassRole on resource: arn:aws:iam:***:role/{역할이름} because no identity-based policy allows the iam:PassRole action 처음 봤을 때 일단 똑같은 말을 여러 번 하면서 쓸데없이 길게 뜬..
-
운영체제 7: 코드를 통한 프로세스 작동 방식의 이해CS기초/OS,HW 2022. 5. 30. 23:59
다음 C코드를 통해 코드를 실행하면 프로세스가 어떻게 동작하는지 이해해보자. //모듈 임포트 #include #include #include #include //main함수 시작 int main() { int fd: fd = open("data.txt".O_RDONLY): //Read only로 data.txt파일을 연 호출값을 fd라는 변수에 담음 if(fd == -1) //파일이 정상적으로 열리지 않았다면 { printf("Error: can not open file\n"); //다음 문장을 출력하고 함수 종료 return 1; } else { printf("File opened and now close_\n"); //다음 문장을 출력하고 파일을 닫은 뒤 함수 종료 close(fd); return (..
-
세마포어 CI로 Github CI/CD 구축하기 - 1.Intro & CI/CD 툴 비교Project/CICD 2022. 5. 25. 00:25
젠킨스로 시작한 CI/CD 프로젝트는 불가항력적인 이유로 마무리하지 못했다. 다행히 또 CI/CD 구축 업무를 맡게 되어 이번에는 툴 비교부터 시작해보았다 (그때는 돈 주고 할 정도의 중요한 프로젝트는 아니었기 때문에 그냥 젠킨스 + EC2 프리티어를 썼다). 일단 구축 목표는 데이터 엔지니어링 협업 platform을 구축하는 거다 (다른 회사들은 어떻게 구축했는지 궁금.. 혹시 보시는 분들 중 엔지니어 분 계시다면 댓글 달아주세요) 따라서 Github repository에 merge event가 발생했을 때 변경된 코드가 build, test되고 최종 서버에 배포되는 과정까지를 자동화하는 것이 이번 프로젝트의 목표이다. 나의 짧은 웹 개발 지식으로 생각했을 때 웹 개발 CI/CD와 특별히 다른 점이 있..