그리디 알고리즘 그리디라는 이름에서 알 수 있듯이 탐욕적으로 현재 상황에서 지금 당장 좋은 것만 고르는 방법. 즉 매 단계(순회)마다 그 순간에 이용할 수 있는 정보를 바탕으로 문제를 풀 수 있는 실마리가 보이는 방법(최선의 방법)을 "고르려고" 한다. 사전 지식이 없어도 풀 수 있지만, 단순히 현재 가장 좋아보이는 것만을 선택해도 문제를 풀 수 있는지에 대한 고민이 필요하다. 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이므로 '가장 큰 순서대로', '가장 작은 순서대로'와 같이 기준을 제시해주거나 어느 정도 유추할 수 있다. 따라서 자주 정렬 문제와 짝을 이룬다. 그리디 알고리즘의 가장 중요한 점은 ①최소한의 아이디어를 떠올리고, ②이것이 정당한 지 검토할 수 있어야 한다. 처음에는 다양..
저번 포스팅 -알라딘 중고책 프로젝트 (1) - 알라딘 API 살펴보기 앞서 알라딘 API를 사용하는 방법을 간단하게 알아보았다. 이제 이 API를 이용하여 본격적으로 데이터를 추출하는 과정을 진행해보려 한다. 알라딘 API는 다른 API 보다 사용하기가 훨씬 간편하다. 엑세스 토큰이 필요하다던가(TTBKey가 있긴 하지만...) 헤더값을 보낸다거나 하는 귀찮은 작업이 필요없다. 각설하고 바로 데이터 추출 코드로 가보자! 데이터 추출 import requests import json book_lists = [] for i in range(1, 11): url = f"http://www.aladin.co.kr/ttb/api/ItemList.aspx?ttbkey={TTBKey}&QueryType=ItemNe..
저번 포스팅 - 알라딘 중고책 프로젝트 (0) - 프로젝트 개요 알라딘 API 본격적으로 프로젝트를 시작하기 전에 내가 사용할 알라딘 API에 대해서 알아보려고 한다. 우리나라 서점 중 유일하게 Open API를 제공하고 있고, 생각보다 다양한 데이터를 받을 수 있다. 알라딘 오픈 API 블로그로 들어가면 대략적인 사용방법과 매뉴얼이 제공된다. OPEN API 이용안내로 들어가면 API 이용절차가 다음과 같이 상세하게 나와있다. 알라딘 API를 이용하려면 먼저 TTB Key를 발급받아야 하는데, 안내문에도 나와있듯이 발급까지 대략 1~2일 정도가 걸리고, 하루에 쿼리가 5000건으로 제한된다. 나 같은 경우는 발급은 하루가 안 걸렸던 것 같고, 쿼리도 하루에 2번 밖에(많아야 4번) 안 날리기 때문에 충..
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 디렉토리 안에 프로젝트에 사용되는 파일을 저장하여 함께 사용 가능하다. 단점 아무래..
kubeflow를 배우기 전에 먼저 쿠버네티스 구축을 해야하는데, 스왑메모리를 꼭 끄라는 설명이 있어 왜 그런지 호기심이 생겼다. 이 궁금증을 해결하면서 스왑 메모리가 무엇인지도 제대로 알아보고 쿠버네티스와 스왑 메모리의 관계도 알아보려 한다. swap 메모리란 우선 swap 메모리가 무엇인지부터 간단하게 살펴보자. 스왑(swap)이란 물리 메모리(RAM)의 용량이 부족할 때 하드 디스크의 일부 공간을 메모리처럼 사용하는 것이다. 이러한 동작은 swap in과 swap out으로 구분할 수 있다. 현재 메모리에 최대 100개의 프로세스가 올라갈수 있는데 이때, 101번째 프로세스가 추가로 올라가야 할 경우를 생각해보자. swap out은 100개의 실행된 프로세스중 특정 프로세스를 잠시 Swap Part..
쿠버네티스를 사용하기 위해서 YAML을 아는 것은 필수적이다. 대충 어떤 느낌으로 돌아가는지 감은 잡고 있었는데, 쿠버네티스에서 YAML 파일을 직접 건드려보니 몰랐던 부분이 있어 우리가 잘 알고있는 JSON과 비교하여 정리해보려 한다. --- doe: "a deer, a female deer" ray: "a drop of golden sun" pi: 3.14159 xmas: true french-hens: 3 calling-birds: - huey - dewey - louie - fred xmas-fifth-day: calling-birds: four french-hens: 3 golden-rings: 5 partridges: count: 1 location: "a pear tree" turtle-do..
머신러닝 서비스를 어떻게 서빙하는지 궁금증이 생겨 여러 툴들을 찾아보니 kubeflow, mlflow, bentoml 등 정말 너무 다양한 서빙 도구들이 많았다. mlflow는 아주 잠깐 건드려 본 적이 있지만 kubeflow 같은 경우는 그 어려운 쿠버네티스를 잘 이해하지 못하면 하지 못할 것이라는 두려움에 차마 공부할 생각을 못했다. 이번 포스팅에서는 모델 서빙이 무엇인지 간단하게 알아보고 비슷하면서도 다른 kubeflow와 mlflow를 비교해보려고 한다. 먼저 모델 서빙이란? 서빙은 손님에게 음식을 가져다주는 행위를 말한다. 모델 서빙도 이와 같은 개념인데, 딥러닝이든 머신러닝이든 어떠한 모델이 예측한 예측값을 사용자에게 전달하는 것이다. 모델 서빙을 위해서는 여러 상황을 고려해야 하는데, 시간에..
글 작성 배경 이번에 비트코인 관련 프로젝트를 하면서 API를 사용할 일이 생겼다. 이 과정에서 시세 데이터를 수신하는 API를 사용하려고 하였는데, REST와 Websocket 두 방식을 지원하고 있었다. 둘의 차이를 어렴풋이 알고는 있지만 개념을 확실히 하기 위해 둘의 차이를 비교해보려 한다. 가장 큰 차이 결론부터 말하자면 둘의 가장 큰 차이는 접속을 유지하는지이다. REST 작동방식 가장 많이 사용하는 API 방식이다. 브라우저로 웹사이트를 접속하는 것을 생각하면 쉽다. 주소를 입력하고 엔터를 치면(요청) 해당 주소의 서버가 응답하여 웹사이트 띄워준다. REST 방식의 특징은 한 번 요청하고 내용이 뜨면 그 내용이 변하지 않는다. 최신 정보를 받기 위해서는 계속해서 새로고침을 해야하는 것이다. 주..
k8s의 마스터 노드와 워커 노드kubeadm이 무엇인지를 알려면 먼저 쿠버네티스가 기본적으로 마스터 노드와 워커 노드로 구성된다는 것을 알아야 한다. 마스터 노드는 워커 노드에 Pod를 할당하고 Pod 안에 컨테이너를 띄우게 하는 역할을 한다. 또한 쿠버네티스의 상태를 관리하고 여러 Pod 들의 스케줄링도 하는 등 쿠버네티스에서 중추적인 역할을 한다. 워커 노드는 마스터 노드와 통신하면서 Pod를 할당 받고 그 안에 컨테이너를 띄워 유지 및 관리하는 역할을 한다. 또한 네트워크나 볼륨에 대한 기능도 컨트롤한다. 쿠버네티스는 이러한 노드들이 모인 클러스터 환경을 통해 컨테이너를 오케스트레이션 하는 도구이다.kubeadm이 하는 역할쿠버네티스를 사용하려면 위에서 살펴보았듯 기본적으로 클러스터를 구성해야 한..