저번 포스팅에서 봤듯이 작업한 코드들을 병합하다보면 충돌이 나는 경우가 있다. 여러 사람이 작업하다보면 충돌이 아예 없을 수는 없다. 하지만 적어도 최소화는 할 수 있다. 이번 포스팅에서는 충돌을 최소화하는 방법에 대해 알아보고자 한다.
무슨 대단한 방법이 있나 싶지만 사실 그리 대단한 방법은 아니다. 작업하는 브랜치에서 master 브랜치의 내용을 받아온 다음 작업을 하는 것이다. 이 idea는 어차피 최종적으로는 작업 브랜치를 master 브랜치에 병합한다는 것에서 나온 것이다. 쉽게 말해 master 환경에서 작업 브랜치로 작업을 한다는 개념이라고 생각하면 된다.
이해하기 쉽게 그림으로 표현해보면
이번엔 간단한 Python 에러에 대해 포스팅하려고 한다. 필자가 코딩을 하다가 자주 낸 에러인데 자꾸 같은 실수를 반복해서 포스팅해본다.
작업한 코드들을 병합하는 과정에서 충돌이 나는 경우가 있다. 이는 주로 같은 부분을 서로 다른 브랜치에서 작업하다가 병합했을 시에 발생하는데 그 이유는 git 입장에서 병합할 때 어떤 브랜치를 우선 순위로 할지 모르기 때문이다. 지금 이렇게 말만 들으면 잘 모를 수 있는데 예제를 보면 이게 무슨 말인지 이해할 것이다.
좀 보기 쉽게 이번 포스팅에서는 간단한 html 예제로 포스팅을 진행하려고 한다.
Python을 쓰다보니 날짜나 시간을 나타내야 하는 경우가 상당히 많았고 10초 전, 20분 뒤, 3시간 뒤 등 다양하게 시간을 조작해야 했다. 물론 검색하면 너무나도 많이 나오지만 이 기회에 나도 간단하게나마 정리해보고자 한다.
방법은 간단하다. Python에서 제공하는 기본 모듈인 datetime을 이용해주면 된다. 그래서, 사용할 때 반드시 import datetime을 해줘야 한다.
이전 포스팅에서는 브랜치를 따는 방법에 대해 알아보았다. 이번 포스팅에서는 딴 브랜치를 master 브랜치에 병합시키는 방법에 대해 알아보자. 지금은 한 프로젝트에 여러 명이 붙는 협업의 개념이 아닌 혼자서 작업하는 경우이다. 협업할 때의 상황은 추후에 따로 다룰 예정이다.
이번 포스팅에서는 저번 포스팅 때 만들었던 EC2 인스턴스에 SSH로 접속해보자. 인스턴스에서 마우스 오른쪽 클릭 후 ‘연결’ 부분을 클릭한다.
이번 포스팅에서는 AWS(Amazon Web Service)에 대해 알아보고자 한다. AWS란 아마존(Amazon)에서 제공하는 클라우드 서비스로 네트워킹을 기반으로 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스를 제공하고 현재 법인(회사) 및 개인을 포함한 다양한 사용자들이 이용하고 있다.
Amazon 회원 가입은 검색하면 나와있으니 생략하겠다.
로그인을 해서 서비스 메뉴를 누르면 이런 화면이 나온다. 여러 서비스들이 있는데 필자는 EC2를 선택할 것이다. EC2란 Elastic Compute Cloud의 약자로 아마존 웹서비스의 심장에 해당하는 서비스다. 쉽게 말해서 컴퓨터를 임대해주는 것이라고 생각하면 된다. 여기에 필요한 운영체제를 설치하고, 웹 서비스를 위한 프로그램들(웹서버, 데이터베이스 등)을 설치하면 된다. AWS에서는 인터넷을 통해서 이 컴퓨터로 접속할 수 있는 URL(Public DNS)을 제공하는데, 이 URL을 통해서 웹서비스를 하거나, 자신이 구입한 도메인을 붙여서 서비스 할 수도 있다. 주문하면 빠른 시간 내에 생성되고, 삭제 즉시 제거된다. 초기 구입비가 전혀 없고, 사용한 만큼 비용을 지불하면 된다. 물론, 실제 컴퓨터와 EC2는 중요한 차이가 있다. 바로 인터넷을 통해서만 접속할 수 있다는 것이다.
오른쪽 맨 위를 보게 되면 지역이 뜨는데 이 지역이 인스턴스를 제공해주는 지역이다. 즉, 현재 필자는 미국 동부(오하이오)에서 서비스를 받는 것이다. 이 곳은 지정해주고 싶은 지역을 지정해주면 된다.
왼쪽에 인스턴스를 누르면 이런 화면이 나온다. 우리는 인스턴스를 생성할 것이므로 인스턴스 시작 버튼을 누른다.
이미지를 선택하는 과정으로 어떤 운영체제를 사용할 것인지 선택하는 부분이다. 필자는 Ubuntu 18.04 LTS를 선택했지만 자신의 상황에 필요한 운영체제를 선택해주면 된다. 또한 왼쪽을 보면 프리 티어가 사용가능한 운영체제를 볼 수 있게 체크 버튼도 있다. 어쨌든 선택버튼을 누르면
이런 화면이 나오는데, 필자는 1년 프리 티어를 이용할 것이므로 프리 티어 사용 가능한 인스턴스 유형을 선택했다. 선택한 후 ‘다음 : 인스턴스 세부 정보 구성’ 버튼을 클릭한다.
인스턴스는 1개만 만들 것이므로 1개로 지정했고 나머지 부분은 다 기본값으로 설정했다. ‘다음 : 스토리지 추가’ 버튼을 누르면
스토리지를 지정하는 부분이 나온다. 필자는 8G를 주었다. ‘다음 : 태그 추가’ 버튼을 누른다.
이는 쉽게 말해서 컴퓨터의 이름을 지정해주는 부분이라고 생각해주면 된다. 파란색 글씨(Name 태그를 추가하려면 클릭합니다)를 누른 후 이름을 정해준다.
이름을 지정했으면 ‘다음 : 보안 그룹 구성’ 버튼을 누른다.
다음은 보안 그룹을 생성하는 단계이다. SSH를 생성한다던지 특정 IP만 접근 가능하게 지정한다던지 등의 보안 설정을 할 수 있다. 추가하고 싶은 것이 있으면 ‘규칙 추가’ 버튼을 눌러서 다른 유형의 옵션들을 추가해줄 수 있다. 다 설정했으면 ‘검토 및 시작’ 버튼을 누른다.
이 부분은 여태까지 설정했던 것들을 보여주는 부분이다(검토). 맞으면 ‘시작하기’ 버튼을 눌러주자. ‘시작하기’ 버튼을 누르면 이런 창이 뜬다.
SSH를 통해 안전하게 인스턴스에 접속하기 위해 키 페어를 만들어주면 된다. 우리는 기존 키 페어가 없기 때문에 삼각형 표시를 눌러 ‘새 키 페어 생성’을 선택한 후 키 페어 이름을 지정해준다.
키 페어 이름을 지정한 후 ‘키 페어 다운로드’ 버튼을 눌러주면 프라이빗(private) 키 파일인 pem파일이 컴퓨터에 저장된다. 필자의 경우 키 페어 이름을 pooh_server라고 지정해서 pooh_server.pem 파일을 다운받았다. 이 pem 파일로 방금 만든 인스턴스에 접속하면 된다. pem 파일을 받았으면 이제 ‘인스턴스 시작’ 버튼을 눌러주자.
이제 인스턴스가 생성되고 있는 것이다. 인스턴스에 대해서 좀 더 자세히 보려면 스크롤을 내려보면 ‘인스턴스 보기’ 버튼이 있다.
이 버튼을 눌러주면
현재 인스턴스 상태가 running이라고 뜬다. 즉, 이제 컴퓨터를 하나 사용할 수 있게 된 것이다. 이를 제어하고 싶으면 해당 인스턴스에서 마우스 오른쪽 버튼을 클릭하면 이런 메뉴창이 나온다.
여기서 재부팅이나 종료도 할 수 있고 그 외에 다른 작업들도 할 수 있다.
(참고 : 프리티어는 월 최대 750시간(즉, 24시간씩 31일이면 744시간)까지 1년간 무료로 사용할 수 있는데, 인스턴스의 갯수가 늘어날수록 사용시간은 갯수의 배가 되기 때문에 프리티어로 과금되는 일이 없도록 주의해야 한다. 예를 들어, 인스턴스 3대를 같이 1시간 돌린다고 하면 사용시간이 1시간이 아니라 3시간이 된다는 말이다.)
다음 포스팅에서는 방금까지 만든 인스턴스에 접속해보겠다.
참고 블로그 :
리눅스를 사용하다보면 다양한 이유로 다른 서버의 파일들을 가져와야 할 경우가 발생한다. 리눅스에서는 어떻게 파일을 다운로드하는지에 대해 알아보자.
인터넷의 파일을 다운로드받는 리눅스 명령어
사용법은 간단하다.
wget [파일 주소]
한 예로 이미지 파일을 다운로드 받아보자.
필자의 블로그에 이미지 사진이 하나 있다(127.0.0.1 부분이 빨간색으로 되어 있는데 이는 다른 포스팅 내용이므로 신경 안 쓰시면 됩니다). 이 이미지를 리눅스로 wget을 사용하여 다운받아보려고 한다. 이미지가 있는 주소를 [파일 주소]에 입력해주면 끝이다. 이미지의 주소는 해당 이미지에서 마우스로 오른쪽 클릭 후 ‘이미지 주소 복사’를 클릭해주면 주소가 복사된다. 그 다음 wget을 이용하면
이렇게 해당 이미지가 saved, 즉, 다운받아서 저장이 되었다는 메시지가 뜬다. ls -al로 확인해보면
이미지가 잘 받아졌음을 확인할 수 있다.
[파일 주소]는 실제 해당 [파일 주소]를 입력했을 때 파일이 있는 위치를 말한다. 방금 필자가 다운로드받은 [파일 주소]를 URL창에 입력해보면
이렇게 해당 파일이 있다. 이렇게 파일이 있는 주소여야만 wget으로 다운로드가 가능하다. 방금은 그냥 wget만 사용했지만 wget에는 여러 옵션들이 많다. wget –help 명령어를 입력하면 해당 옵션에 대한 설명들을 확인할 수 있다.
이에 대한 옵션을 한글로 정리해 준 분이 계셔서 링크를 공유한다(https://hooeni.tistory.com/166).
필자는 이 중에서 몇 가지 유용하게 쓰일 수 있는 옵션에 대해서만 다루고자 한다.
(1) 다운로드 받은 파일을 다른 이름으로 저장
위처럼 아무 옵션없이 wget으로만 다운받다보니 해당 서버에 저장된 이름으로 다운로드된다. 이러면 나중에 이게 어떤 파일인지 구분하기 어려워질 수 있기 때문에 나만의 방식으로 구분하기 위해 이름을 짓고 싶다. 그런 경우는 -O 옵션을 이용해주면 된다.
wget -O [내가 지을 파일 이름][파일 주소]
-O는 반드시 대문자여야 한다. 소문자 -o 옵션은 다운로드 받은 파일의 로그를 남겨주는 옵션이기 때문이다. 방금 받았던 파일을 -O 옵션으로 다시 받아보자.
필자는 pooh.jpg라는 이름으로 이미지를 다운받으려고 저렇게 이름을 지어줬다. ‘pooh.jpg’ saved라는 메시지가 뜬 것으로 보아 잘 다운받아졌음을 알 수 있다. 또한 ls -al로 확인해보면
pooh.jpg라는 이름의 이미지로 이미지가 잘 다운받아졌음을 확인할 수 있다. 위의 14.JPG?raw=true 는 아까 wget으로 받고 나서 삭제를 하지 않았기 때문에 남아있는 것이다.
서버를 운영하다 보면 대역폭 관리가 중요하다. 만약 한 계정의 이용자가 큰 파일을 다운로드하면서 서버 회선의 대역을 다 써버리면 다른 계정의 이용자들은 서버 응답이 느려진다던지 전송속도가 느려지는 불편함을 겪을 수 밖에 없다. 왜냐하면 보통 wget으로 파일을 다운받을 때 따로 옵션을 주지 않으면 가능한 최대 속도로 다운을 받기 때문이다. 이러한 경우를 대비해 wget은 다운로드를 제한하는 옵션을 제공하고 있다.
wget –limit-rate=[지정할 속도] [파일 주소]
[지정할 속도]의 단위는 Bps(Byte per second = B/s)이고, 예를 들어, wget –limit-rate=5k [파일 주소]라고 하면 해당 서버의 전체 대역 중 5KBps(5KB/s)만을 사용해서 데이터를 다운받는 것이다. 좀 더 쉽게 말하면, 다운로드 속도가 5KB/s로 제한된다는 얘기다.
–limit-rate를 5k로 지정했더니 5.00KB/s로 파일을 다운로드 받는 것을 확인할 수 있다.
wget으로 다운을 받으면 백그라운드(back ground)가 아닌 포그라운드(fore ground)로 실행이 되기 때문에 다른 작업을 할 수가 없다. 다른 작업을 하려면 터미널을 하나 더 켜거나 다운이 끝날 때까지 기다려야만 한다. 이러한 문제점을 해결해주기 위해 wget은 백그라운드에서 다운받을 수 있는 옵션을 제공하고 있다.
wget -b [파일 주소]
-b는 back ground를 의미한다. 이렇게 해주면 다운은 백그라운드에서 받고 나는 다른 작업을 할 수 있다.
Continuing in background, 백그라운드에서 진행한다는 메시지와 함께 Output(출력화면)이 wget-log에 쓰여진다는 메시지가 있다. 쉽게 말하면 아까 포그라운드에서 다운받을 때 나오는 출력화면이 wget-log에 기록된다는 뜻이다. 또한 아까와는 다르게 이렇게 백그라운드에서 다운로드받게 하고 필자는 다른 작업한다는 것을 가정해서 txt 파일 만드는 작업을 진행했다. 그러고 나서, ls -al로 확인해보면 다운로드 받은 14.JPG?raw=true가 있고 방금 만든 pooh.txt도 있으며 wget-log도 있다. wget-log 파일을 열어보면
포그라운드로 다운받을 때 나왔던 메시지들이다. 이 말은 백그라운드로 다운로드 중인 내역이 다 wget-log 파일에 기록된다는 말이고 파일의 용량이 큰 경우 다운로드가 오래 걸릴 때 wget-log 파일을 통해 현재 어느 정도 다운로드 받아졌는지도 확인할 수 있다. 이 때 명령어는
tail -f wget-log
를 사용하면 된다.
그럼 만약에 백그라운드로 파일을 다운로드 받다가 취소해야 하는 경우는 어떻게 해야할까? 포그라운드는 Ctrl + C 로 취소할 수 있지만 백그라운드는 Ctrl + C 가 먹히지 않는다. 백그라운드의 경우는 아까 wget에 -b 옵션을 줄 때 pid를 알려주는데, 이 pid는 wget 프로세스를 의미한다(필자의 경우 pid가 39401이었기 때문에 “ps -e | grep 39401” 이라고 입력하면 wget 프로세스가 나온다). 즉, 저 wget 프로세스를 죽이면 된다. |
pkill -9 wget
이렇게 명령을 주면 백그라운드에서 wget으로 다운받더라도 다운로드를 중간에 종료할 수 있다.
파일을 다운로드받다가 갑자기 오류 혹은 실수로 Ctrl + C 를 눌러 종료시켜버린 경우 다시 wget으로 파일을 다운받으면 처음부터 다시 받아야 한다. 이러한 경우를 대비해 wget은 이어받기 옵션을 제공한다.
wget -c [파일 주소]
이렇게 다운로드받다가 실수로 Ctrl + C를 눌러 종료를 시켜버렸다. 다시 wget으로 다운받으면 0%부터 다시 시작하게 된다. 하지만 -c 옵션을 주게 되면 25%부터 이어서 다운로드받는다.
그래서 25%까지가 ++++++(파란색)로 표시되어 있고 ===>(초록색)가 현재 이어서 다운로드 되고 있는 부분이다. 이 역시 용량이 큰 파일이어서 오래 걸릴 때 실수했을 경우 유용하게 쓰일 수 있다. 처음부터 -c 옵션을 주는 게 아니라 실수로 종료되고 다운로드를 이어받고자 할 때 -c 옵션을 주면 된다.
여태 배운 옵션들을 한 번에 적용시킬 수도 있다. 필자는 (1), (2), (4)를 한 번에 적용시켜보겠다.
다운로드 속도는 5KB/s이고 다운받은 파일의 이름은 pooh.jpg로 지정했으며 -c 옵션을 통해 실수로 다운로드 중에 종료시키더라도 이어받을 수 있도록 할 것이다(물론 처음에 다운로드받을때는 -c 옵션 사용 X). 그 다음 실수했다고 가정하고 종료를 시켰다(Ctrl + C = 화면의 ^C).
이전 명령어에다가 -c 옵션만 추가해서 다시 입력해주게 되면 pooh.jpg라는 이름으로 5KB/s 속도로 이어서 받는다. 아까 (4) 이어받기 에서 봤지만 이전까지 다운로드된 것들은 ++++++로 표시된다. 다운로드가 잘 됐는지 ls -al로 확인해보면
pooh.jpg라는 이름으로 잘 다운로드 된 것을 확인할 수 있다.
참고 블로그 :