전체 글
TIL 230122 - SvelteKit에서 환경변수 사용법
SvelteKit에서 환경변수 사용법 SvelteKit에서 환경변수를 사용하는 방법은 여러 가지가 있다. JS기반으로 라이브러리를 사용할 수도 있고, Vite에 있는 기능이나 dotenv 등을 사용할 수도 있다. 그러나 SvelteKit에는 자체적으로 제공하는 환경변수 기능이 있다. 이를 사용하면 보안 등에서 이점이 있다. SvelteKit에는 2가지 기준으로 분류해 4가지의 환경변수 기능을 지원한다. Static / Dynamic값인지, Public / Private 한지를 따져 4가지 방식으로 사용할 수 있다. 우선 환경변수 저장파일인 .env를 프로젝트 루트에 생성해 준다. 아래에 Private Key와 Public Key를 예시로 작성했다. # .env # Private SECRET_API_KEY..
BOJ 2263 트리의 순회(풀이, C++)
2263번 트리의 순회 문제는 이진 트리의 순회에 관한 문제로, 이진 트리의 중위 순회(In-order traversal)와 후위 순회(Post-order traversal)를 받아 전위 순회(Pre-order traversal)를 출력하는 문제입니다. 풀이 이해를 돕기 위해 위의 이진 트리를 보겠습니다. 해당 트리의 순회 순서는 다음과 같습니다. 중위 순회: 8 -> 4 -> 2 -> 9 -> 5 -> 10 -> 1 -> 11 -> 6 -> 3 -> 12 -> 7 후위 순회: 8 -> 4 -> 9 -> 10 -> 5 -> 2 -> 11 -> 6 -> 12 -> 7 -> 3 -> 1 전위 순회: 1 -> 2 -> 4 -> 8 -> 5 -> 9 -> 10 -> 3 -> 6 -> 11 -> 7 -> 12 우..
이진 트리(Binary tree)의 순회 순서
이진 트리는 노드들이 최대 2개의 자식 노드를 가지는 트리를 말합니다. 이러한 이진 트리를 순회하는 방법에는 전위 순회, 중위 순회, 후위 순회가 있습니다. 전위 순회 (Pre-order traversal) : 루트 노드부터 시작하여, 루트를 방문하고 왼쪽 서브 트리를 순회하고, 오른쪽 서브 트리를 순회합니다. 순서는 루트 -> 왼쪽 -> 오른쪽입니다. (예시: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8) 중위 순회 (In-order traversal) : 왼쪽 서브 트리부터 시작하여, 왼쪽 서브 트리를 순회하고, 루트를 방문하고, 오른쪽 서브 트리를 순회합니다. 순서는 왼쪽 -> 루트 -> 오른쪽입니다. (예시: 3 -> 2 -> 5 -> 4 -> 6 -> 1 -> 8 -> 7)..
Django AbstractUser 불필요한 필드 지우는 방법
Django의 유저 모델들 Django에서는 기본적으로 유저 모델 django.contrib.auth.models의 User를 제공하고, 이를 통해 간편하게 인증 등을 처리할 수 있다. 또한 기본제공되는 유저모델을 확장할 수 있게 다음과 같은 다양한 방법이 있다. User에 기반한 Proxy Model 생성하기 1:1 로 User에 연결된 모델 만들기 AbstractUser 상속받아 커스텀 유저 모델 만들기 AbstractBaseUser 상속받아 커스텀 유저 모델 만들기 AbstractUser 모델 기본적으로 제공하는 django.contrib.auth.models의 User을 사용하더라도, 이후에 유저 모델을 수정할 일이 생길수있다. 그런데 이후에 이를 수정한다면 그 과정이 매우 힘들기에, 기본적으로 ..
클라우드 서비스(Azure, AWS, GCP, Oracle) Freetier 비교
대표적인 클라우드 Azure, AWS, GCP, Oracle에서 제공하는 프리티어 서비스를 비교해 보았습니다. 지속적으로 추가 중입니다.일반 FreetierAzure은 아래 외에도 30일간 USD200 토큰을 지급합니다.GCP는 아래 외에도 90일간 USD300 토큰을 지급합니다.Oracle의 1oCPU는 1개의 실제 물리적 코어를 의미하며, x86에서는 1oCPU = 2vCPU, Arm에서는 1oCPU = 1vCPU가 됩니다. AzureAWSGCPOracleComputeAzure Virtual MachineAmazon EC2Compute EngineComputeB1s(1vCPU, 1GiB) Linux, Window용 각각 월 750시간 제공(12개월)t3.micro(0.2vCPU, 1GiB) 또는 t2..
Svelte에서 NetworkError when attempting to fetch resource. 오류
오늘 Svelte 튜토리얼을 보며 Await 응용을 해보고 있었다. async function getRandomNumber() { const res = await fetch(`/tutorial/random-number`); const text = await res.text(); if (res.ok) { return text; } else { throw new Error(text); } } let promise = getRandomNumber(); {#await promise} ...waiting {:then number} The number is {number} {:catch error} {error.message} {/await} Svelte에서는 위와 같이 간단한 방식으로 비동기적으로 fetch할 수..
시맨틱 버저닝(Semantic Versioning) 정리
npm을 사용하거나 패키지들을 관리할 때 2.9.9, 0.4.1 이런 식의 세 부분으로 나뉜 버전을 보신 적이 있을 겁니다. 사실 이런 버전들은 임의로 정해진 것이 아니라, 규칙에 따라 정해진 것입니다. 이 규칙을 시맨틱 버저닝(Semantic Versioning)이라 합니다. 시맨틱 버저닝의 구성 시맨틱 버저닝은 Major, Minor, Patch의 3 부분으로 나뉘어 있습니다. Major.Minor.Patch 각각의 버전이 올라가는 기준은 다음과 같습니다. Major version: 하위 버전과 호환되지 않는 API 변경 시 Minor version: 하위 호환이 가능한 기능 추가 Patch version: 하위 호환이 가능한 버그 수정 그리고 다음과 같은 규칙이 있습니다. Major version이..
VSCode로 Poetry 사용시 interpreter 인식 시키는 방법
VSCode에서 바로 Poetry로 만든 가상 환경에서 작업 시에는 Poetry의 가상 환경 virtualenv가 인식이 되지 않는 문제가 있다. 이는 바로 Poetry가 작업 환경이 아닌 다른 로컬 폴더에 가상 환경을 저장하기 때문인데, 이를 수정하기 위해서는 작업 환경으로 가상 환경 폴더를 이동시켜주면 된다. poetry config virtualenvs.in-project true poetry config virtualenvs.path "./.venv" poetry install 위의 명령어로 가상 환경의 이동이 끝났다면, VSCode를 재시작 해주면 자동으로 인식하여 인터프리터를 잡아 준다. 이상태에서도 게속 제대로 환경을 잡지 못한다면, Cmd + Shift + P(Ctrl + Shift + P..
파이썬 가상 환경, 패키지 매니저 정리(venv, poetry, pipvenv...)
파이썬은 node.js의 npm, yarn과 같은 패키지 매니저와 package.json처럼 표준화된 형식이 없다. 이에 파이썬의 다양한 가상 환경, 패키지 매니저를 정리하였습니다. 추천하는 것은 간단하게 사용한다면, pip + venv를 사용하는 것을 추천하고 아니면 poetry 또는 pipenv를 추천합니다. pip 패키지 매니저 파이썬에서 기본적으로 제공하는 패키지 매니저다. pip freeze > requirements.txt # 현재 설치된 패키지 목록을 저장한다 pip install -r requirements.txt # 패키지 목록에 있는 패키지를 설치한다 위와 같은 방식으로 패키지를 관리할 수 있다. 패키지 의존성을 확인하기 어렵다 https://github.com/pypa/pip GitH..