분류 전체보기 31

numble 챌린지 중간 회고

나는 numble에서 실전 가이드 프로젝트_Kubernetes로 모니터링 시스템 구축하기를 진행하고 있다. 사이드프로젝트를 해야겠다는 생각과 쿠버네티스에 대한 공부를 하고 싶다는 생각을 하고 있던 참이었는데 우연히 이 두 가지를 충족시킬 수 있는 프로그램을 발견하게 돼서, 심지어 가격도 해볼 만해서 바로 결제했다. ㅋㅅㅋ 특히 여기에 혹했다. ㅎ 프로젝트는 팀을 이루어 진행하지만 결과물은 각자 제출해야 된다. 각자 제출이다 보니 팀원 스케줄에 너무 얽매이지도 않고 처음부터 끝까지 다 해볼 수 있다는 장점이 있다.! 우리팀은 카톡방을 하나 파서 모르는 것을 질문하며 진행 중이다. (아직까지는 순항중..!) 나는 쿠버네티스 지식이 전무한 상태에서 시작했기 때문에 노드, 파드 등 개념부터 argoCD, kib..

프로젝트/기타 2023.04.25

[쿠버네티스 세팅하기] 1. 쿠버네티스 구성 살펴보기

쿠버네티스는 공식 문서가 매우 잘 되어있다. 다만, 많은 내용을 담고 있어 쿠버네티스 구성에 대한 내용을 간략하게 정리해 보았다. https://kubernetes.io/ko/docs/concepts/overview/ 쿠버네티스란 무엇인가? 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하 kubernetes.io 쿠버네티스란 컨테이너화된 애플리케이션을 배포, 확장 및 관리해주는 시스템이다. 규모가 큰 서비스들은 여러개의 서버에 여러개의 애플리케이션을 띄워놓고 운영하는데, 서버 하나하나씩 독립적으로 관리한다면 같은 일을 여러번 관리하는 등의 번거로운 점이 발생한다. 이런 불..

Django ALLOWED_HOST, CORS_ORIGIN_WHITELIST

ALLOWED_HOST 서버로 요청하는 Host에 대한 Allowed 리스트. DEBUG=True라면 기본값으로 ['.localhost', '127.0.0.1', '[::1]'] 로 설정된다. 📝 참고 : [::1] 는 로컬의 IPV6을 의미한다. IPV4에서 localhost와 같은 역할.! CORS_ORIGIN_WHITELIST Origin 헤더에 대한 Allowed 리스트. Origin 헤더는 fetch가 시작되는 위치로, GET 요청을 제외하고 포함된다. django-cors-headers 라이브러리에서 제공하는 기능이다. 아래와 같이 INSTALLED_APP과 MIDDLEWARE에서 추가 후, CORS_ORIGIN_WHITELIST를 정의할 수 있다. INSTALLED_APPS = [ ..., ..

개발계발/Python 2022.12.09

DynamoDB 톺아보기

Dynamo(다이나모) DB가 NoSQL이라 key-value 구조로 데이터를 저장한다는 것만 알고 있었는데, 이번에 처음 도입해 보니 생각보다 알아야 할 게 많았다. 여기저기 문서를 참고하며 배운 내용을 기록해보자. DynamoDB란? AWS 에서 제공하는 NoSQL 기반 데이터베이스 서비스로, 데이터 읽고 쓰기, 인덱싱, 샤딩과 백업 등을 지원한다. 필드가 고정이 아니다. RDB와 달리 필드가 고정이 아니다. 아래의 People 테이블에서 보듯이 Address와 FavoriteColor가 없는 row도 가능하다. 여기서 없다는 것은 null이 아닌 키조차도 없음을 의미한다. People { "PersonID": 101, "LastName": "Smith", "FirstName": "Fred", "Ph..

python Lint툴 적용하기(flake8, black)

파이썬은 PEP8이라고 하는 파이썬 코드 작성 규칙이 있다. 이 작성 규칙을 지키지 않아도 스크립트를 실행하는데 문제가 없지만 코드의 일관성과 용이한 유지보수를 위해, 그리고 당신의 코드를 읽을 또 다른 동료를 위해 규칙을 지켜주어야 한다. 하지만 이 규칙을 모두 기억하기란 어려운 일이다. 이 때 린트툴을 사용하면 내가 작성한 코드를 읽고 코드 규칙에 어긋나는 부분을 알려준다. 심지어 직접 고쳐주기도 한다. 파이썬의 기본 린트툴로는 pylint가 있으며 유명한 flake8이나 black 패키지로 대체할 수 있다. 하나씩 사용해보자. flake8 설치 pip install flake8 실행 # 패키지 전체 검사 flake8 # 특정 경로 및 파일 검사 flake8 your_script.py 결과 ./lib..

개발계발/Python 2022.09.25

[2293] 동전1

백준 2293번 동전1 n, k = map(int, input().split()) c = [] dp = [0 for i in range(k + 1)] dp[0] = 1 for i in range(n): c.append(int(input())) for i in c: for j in range(1, k + 1): if j - i >= 0: dp[j] += dp[j - i] print(dp[k]) 핵심 아이디어 k길이의 배열을 만들고, 각 원소 별 경우의 수를 계산하여 k가 되는 경우의 수를 구한다. 설명 dp 배열에서 원소를 dp[key] = value 라고 한다면, key : 1, 2, 3, ... k value : key를 만들 수 있는 경우의 수 예를 들어 [1, 2, 5] coin을 가지고 k = 4..

[17729] 오등큰수 #python

백준 17299번 오등큰수 import sys num = int(input()) a = list(map(int, input().split(" "))) result = ["-1" for _ in range(num)] stack = [0] count = dict() for i in a: try: count[i] += 1 except: count[i] = 1 for i in range(num): while stack and count[a[stack[-1]]] < count[a[i]]: result[stack[-1]] = str(a[i]) stack.pop() stack.append(i) i+=1 print(" ".join(result)) [17298]오큰수와 같은 유형의 문제이다. 다만, 오등큰수는 각 원소 ..

[Tip] 백준 시간 초과 에러

로직의 이슈가 없는데도 시간 초과가 난다면, input() 대신 아래와 같이 sys 모듈을 사용하자. python 이외의 언어는 빠른 A+B를 참고하세요. import sys #num = int(input()) 대신 아래의 코드를 쓰자. num = int(sys.stdin.readline()) 하지만 우리는 코딩할 때, input()으로 코드를 짜기 때문에 이를 일일히 sys.stdin.readline() 바꾸기가 번거롭다. 그럴 때는 sys.stdin.readline 를 input 으로 덮어쓰면 조금 더 간편해진다. import sys input = sys.stdin.readline #기존의 코드를 수정할 필요가 없어진다. num = int(input()) 참고로, sys.stdin.readline()..