Go로 웹 어플리케이션을 만들기 위해 사용하는 web handler에 대해 알아보자 Go에서 HTTP 서버를 만들기 위해서는 net/http 패키지를 이용하곤 한다. http 패키지에는 다양한 메서드들이 존재하는데 이번 포스팅에서는 각각의 메서드의 역할에 대해 간단하게 알아보고자 한다. ListenAndServe() ListenAndServe(addr string, handler Handler) error 가장 먼저 기본이 되는 ListenAndServe()부터 알아보자. ListenAndServe() 메서드는 지정된 포트에 웹 서버를 열고 HTTP 연결을 받아 요청에 응답하는 역할을 한다. 해당 메서드에 handler를 등록하면 지정한 포트에 들어온 요청에 대해 handler에서 등록한 처리 방법에 따..
git pull을 하는데는 여러 옵션이 있다. 오늘은 git pull이 무엇이고, 어떤 방법들이 있는지 알아본다. git pull은 아마 깃을 사용할 때 가장 많이 사용하는 명령어 중 하나일텐데요. 해당 명령어가 원격 브랜치의 코드를 로컬로 가져오는 명령어라는 것은 아마 모두들 알고 계실 것 같습니다. 하지만 이 간단한 명령어에도 여러 옵션들이 숨겨져 있습니다. 같이 알아보도록 하죠. git pull 명령어 알아보기 원격 저장소에 있는 코드에 변경사항이 생겼는지 확인하는 방법은 크게 git fetch, git pull 두 가지로 나눌 수 있습니다. 먼저 git fetch는 원격 저장소에 변경사항이 있는지 "체크만" 합니다. 그리고 git pull은 변경사항 확인과 함께 실제로 로컬에 코드를 가져와 병합을..
비동기란? asyncio를 알기 전에 먼저 비동기에 대해서 먼저 알아야 한다. 사실 우리는 대부분 비동기적으로 행동하고 있다. 만약 요리와 세탁과 TV 시청을 한다고 해보자. 아마 대부분 세탁이 다 될 때까지 기다렸다가 세탁이 끝나면 요리를 하고, 요리가 끝나면 TV를 보는 비효율적인 인생을 살지 않을 것이다. 모든 사람들이 세탁기를 돌려놓고 요리를 하면서 TV를 볼 것이다. 바로 이것이 비동기의 핵심이다. 컴퓨터에서 비동기는 여러 작업을 동시에 하는 것과 같은 행동을 하는 것이다. asyncio란? asyncio는 이러한 비동기 방식을 파이썬에서 사용할 수 있도록 하는 라이브러리이다. asyncio는 기본적으로 이벤트 루프와 코루틴이라는 개념 위에서 동작하는데 이에 대해서 정확하게 알아야 asyncio..
"Conda로 가상환경 만들어서 주피터 커널에 띄워서 JupyterLab 환경에서 프로젝트 진행하시면 돼요" 새로 인턴을 시작한 회사에서 프로젝트를 위해 환경을 세팅하였다. 특히 데이터 탐색에 가장 필수적인 주피터 노트북을 로컬에 깔고 업무를 진행하였는데, 그렇게 진행하면 나중에 고생한다는 충고와 함께 위와 같이 설명해주셨다. 주피터 노트북으로 프로젝트를 꽤 해보았는데 저 정도 설명도 못알아듣는다는게 뭔가 굉장히 현.타가 왔다. 내가 정말 이 둘을 잘 모르고 썼구나라는 생각이 들었다. 그래서 이번 포스팅에서는 아나콘다와 주피터 노트북에 대해서 제대로 정리하는 글을 써보려고 한다. Anaconda란? 만약 서로 다른 프로젝트인데 각자에게 필요한 라이브러리가 한 공간에 모두 설치되어 있다면 어떨까? 이에 대..
❗에러 git checkout 시 발생하는 에러 📑에러 내용 error: Your local changes to the following files would be overwritten by checkout: ... Please commit your changes or stash them before you switch branches. Aborting ❓발생 이유 다른 브랜치로 이동하기 전 작업하고 있던 브랜치에서 변경사항이 있는데, 제대로 커밋(저장)하지 않아 발생하는 오류이다. 💡해결 방법 사실 오류 메시지에 해결 방법이 이미 나와있다. Please commit your changes or stash them before you switch branches. 해당 브랜치를 커밋(commit)하거나 ..
mysql이나 postgresql을 사용할 때 데이터베이스에 연결을 하기 위해서는 커넥터를 사용해야 한다. mysql에서는 pymysql, postgresql에서는 psycopg2가 대표적인 커넥터이다. 오늘은 이러한 파이썬 DB 커넥터의 간단한 사용방법과 그 과정에서 헷갈릴 수 있는 부분을 정리해보려 한다. 간단한 사용법 이 포스팅에서는 psycopg2를 이용하여 postgresql에 접근하는 방법에 대해 설명하려 한다. 그 동안 pymysql을 사용해보기는 했지만 postgresql을 사용해본 적이 없기도 하고, 글을 작성하면서 나 또한 postgresql과 psycopg2를 사용하는 방법을 숙지하려고 한다. 우선 psycopg2가 설치되어있다는 가정하에(설치는 간단하게 pip install psyc..
NFS Network File System. 네트워크 파일 시스템 NFS란 네트워크 상에서 다른 컴퓨터의 파일 시스템을 마운트해서 공유하는 것이다. 즉, 다른 컴퓨터의 파일 시스템을 마치 자기 것처럼 사용할 수 있는 것이다. 위 그림을 보면 더욱 이해가 쉬울 것이다. 그림 그대로 자신의 서버에 저장하는 것이 아니라 큰 용량을 가지고 있는 다른 서버에 데이터를 저장하는 것이다. NFS의 장단점 장점 여러 사용자들이 파일을 공유하는데 유용하게 사용된다. 예를 들어, 여러 명의 사용자가 한 프로젝트에 참여하고 있는 경우, (흔히 NFS 공유라고 알려진) NFS 파일 시스템의 공유 디렉토리를 사용하여 마운트된 /myproject 디렉토리 안에 프로젝트에 사용되는 파일을 저장하여 함께 사용 가능하다. 단점 아무래..
글 작성 배경 이번에 비트코인 관련 프로젝트를 하면서 API를 사용할 일이 생겼다. 이 과정에서 시세 데이터를 수신하는 API를 사용하려고 하였는데, REST와 Websocket 두 방식을 지원하고 있었다. 둘의 차이를 어렴풋이 알고는 있지만 개념을 확실히 하기 위해 둘의 차이를 비교해보려 한다. 가장 큰 차이 결론부터 말하자면 둘의 가장 큰 차이는 접속을 유지하는지이다. REST 작동방식 가장 많이 사용하는 API 방식이다. 브라우저로 웹사이트를 접속하는 것을 생각하면 쉽다. 주소를 입력하고 엔터를 치면(요청) 해당 주소의 서버가 응답하여 웹사이트 띄워준다. REST 방식의 특징은 한 번 요청하고 내용이 뜨면 그 내용이 변하지 않는다. 최신 정보를 받기 위해서는 계속해서 새로고침을 해야하는 것이다. 주..
어떻게 알게되었나 쿠버네티스를 배우면서 Vagrant(이하 베이그런트)를 통해 쿠버네티스 환경을 설정하였다. 베이그런트가 가상머신에 쿠버네티스 환경을 자동으로 한 번에 설치해주는 것까지는 알겠는데, 정확히 어떤 용도로 쓰이는 툴이며 무슨 역할을 담당하는지 호기심이 생겼다. 이번 포스팅에서는 베이그런트란 무엇인지, 구체적으로 어떤 용도로 쓰이는 지를 알아보려고 한다. Vagrant란 Vagrant는 단일 워크플로우에서 가상 시스템 환경을 구축하고 관리하기 위한 도구입니다. 사용하기 쉬운 워크플로우와 자동화에 중점을 둔 Vagrant는 개발 환경 셋업 시간을 단축하고 프로덕션 패리티를 높이며 "내 시스템에서 작업"을 과거의 것으로 간주합니다. 베이그런트 공식 홈페이지에서 베이그런트에 대한 설명은 위와 같다...