본문 바로가기

분류 전체보기226

Node.js Sequelize 모델에서 외래키 지정하는 방법 Node.js Sequelize 모델에서 외래키 지정하는 방법 Sequelize를 사용하여 데이터베이스 모델을 정의하고 관계를 설정할 때, 외래 키(Foreign Key)의 지정은 중요한 부분입니다. 이 외래 키를 정확하게 설정하면 데이터베이스 간의 관계를 효과적으로 구성할 수 있습니다. 아래 글은 코드 수정한 과정을 담은 내용입니다. Sequelize에서 외래키 지정하는 방법 왜 외래키가 필요한가? 관계형 데이터베이스에서는 여러 테이블 간에 관계를 형성하고 유지하기 위해 외래 키가 사용됩니다. Sequelize에서도 모델 간의 관계를 설정하면서 외래 키를 명시적으로 지정할 수 있습니다. 원래 코드 class Contents extends Model { static associate(models) { /.. 2023. 11. 25.
데이터베이스 모델링에서의 인덱스, 클러스터형과 비클러스터형 비교 데이터베이스 모델링에서의 인덱스, 클러스터형과 비클러스터형의 비교 데이터베이스는 빠르고 효율적인 데이터 검색을 위해 핵심적인 도구인 인덱스를 활용합니다. 이번 글에서는 클러스터형과 비클러스터형 인덱스에 대한 이해를 바탕으로 데이터베이스 모델링에 필수적인 개념들을 자세히 살펴보겠습니다. 클러스터형 인덱스, 정렬의 미학 클러스터형 인덱스는 마치 정돈된 도서관의 책장과 같습니다. 데이터를 탐색 키 값으로 사용하며, 정렬된 데이터 row들을 가지고 있습니다. 이는 검색 시 뛰어난 성능을 자랑하지만, 그 만큼 데이터의 정렬이라는 전제조건을 따라야 합니다. 이로 인해 삽입, 수정, 삭제 시에는 약간의 성능 저하가 발생할 수 있습니다. 특히, 이미 데이터가 많이 보유된 테이블에 클러스터형 인덱스를 추가할 때는 전체 .. 2023. 11. 24.
JavaScript 배열 메소드 map() 쉽게 배우기 - 예시 코드 제공 JavaScript 배열 메소드 map() 쉽게 배우기 - 예시 코드 제공 JavaScript의 배열 메소드 중 map()은 배열의 각 요소를 변환하고 새로운 배열을 반환하는 데 사용되는 강력한 도구입니다. 이 글에서는 map() 메소드의 사용 방법과 예시 코드를 통해 이해해보겠습니다. map() 메소드란? map() 메소드는 배열의 각 요소에 대해 지정된 함수를 호출하고, 각 함수 호출의 결과를 모아서 새로운 배열을 생성합니다. 이 메소드는 원본 배열을 변경하지 않고, 각 요소를 변환할 때 주로 사용됩니다. // 기본 문법 const newArray = array.map(function(currentValue, index, array) { // 각 요소를 변환한 결과를 반환 return transfor.. 2023. 11. 23.
프로그래머스 부족한 금액 계산하기 해설, 문제풀이 과정 프로그래머스 부족한 금액 계산하기 해설, 문제풀이 과정 프로그래머스 내적 문제 소개와 해설, 필자의 문제풀이 과정과 가장 인기 있던 문제풀이에 대해 소개하겠습니다. 아래 풀이 과정을 보면서 코딩에 있어서 유익한 인사이트를 얻길 바랍니다. 프로그래머스 부족한 금액 계산하기 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 알고리즘 문제는 새로운 놀이기구의 이용료가 매번 높아지는 상황에서, 특정 횟수만큼 놀이기구를 이용하려고 할 때 필요한 금액과 현재 소지금 사이의 차이를 계산하는 문제입니다. 주어진 가격, 소지금, 이용 횟수에 따라 필요한 금액을 계.. 2023. 11. 22.
GitHub Readme 마크다운 사용법 (체크리스트, 이모티콘, 코드블럭, 폰트, 링크) GitHub Readme 마크다운 사용법 (체크리스트, 이모티콘, 코드블럭, 폰트, 링크) GitHub에서의 마크다운 작성법을 익히면 문서를 보다 간편하게 편집할 수 있습니다. 체크리스트, 이모티콘, 코드 블록, 폰트 스타일, 링크, 이미지 등 다양한 기능을 활용하여 가독성 높은 문서를 만들어보세요. 이 글에서는 GitHub 마크다운의 기본 사용법과 예시 코드를 알려드리겠습니다. GitHub 마크다운 사용법 1. 체크리스트 사용하기 GitHub 마크다운에서는 편리한 체크리스트를 만들 수 있습니다. 아래는 예시입니다. - [ ] task1 - [x] task2 위 마크다운 코드를 사용하면 체크박스를 통해 간단한 작업 목록을 만들 수 있습니다. 2. 이모티콘 활용하기 GitHub 마크다운에서는 이모티콘을 사.. 2023. 11. 21.
내일배움캠프 개인 과제 피드백 - validate 구문은 리소스가 적게드는 로직부터 검사하기 내일배움캠프 개인 과제 피드백 - validate 구문은 리소스가 적게 드는 로직부터 검사 내일배움캠프 주특기 입문 개인 과제를 마쳤습니다. 끝나고 개인별로 피드백을 주셨는데 그 중 필자가 받은 피드백을 소개하려 합니다. GitHub - lemon-table/spa_node_blog Contribute to lemon-table/spa_node_blog development by creating an account on GitHub. github.com 위의 작성한 코드 중 상품 등록 API의 코드를 살펴보고, 피드백 받은 부분에 대해 설명하겠습니다. validate 구문은 리소스가 적게 드는 로직부터 이러한 피드백을 받은 부분은 바로 아래의 소스에서 입니다. // 상품 등록 router.post("/p.. 2023. 11. 20.
JavaScript 배열 메소드 forEach() 쉽게 배우기 - 예시 코드 제공 JavaScript 배열 메소드 forEach() 쉽게 배우기- 예시 코드 제공 JavaScript는 다양한 배열 메소드를 제공하여 배열의 요소를 조작하고 처리할 수 있게 해줍니다. 이번 글에서는 그 중에서도 forEach() 메소드에 대해 알아보겠습니다. forEach()는 배열의 각 요소를 반복하며 지정한 함수를 실행하는 강력한 도구입니다. forEach() 메소드란? javascript 변수 선언 방법 3가지 특징, 비교 (var, let, const) javascript 변수 선언 방법 3가지 특징, 비교 (var, let, const) 자바스크립트에서 변수를 선언하는 방법은 크게 세 가지가 있습니다. var, let, 그리고 const. 이들 각각의 특징과 사용법에 대해 알아보겠습 lemonlo.. 2023. 11. 19.
pm2 기초 사용법, Node.js 애플리케이션 관리를 간편하게 PM2 기초 사용법, Node.js 애플리케이션 관리를 간편하게 PM2는 Node.js 애플리케이션을 관리하는 프로세스 매니저로, 애플리케이션을 실행하고 모니터링하는 등 다양한 기능을 제공합니다. 이 글에서는 PM2의 기초적인 사용법 (설치, 모니터링, 로그 확인) 및 알아두면 유용한 명령어를 소개하겠습니다. PM2 기초 사용법 1. PM2 설치 먼저 PM2를 설치합니다. npm install -g pm2 2. 애플리케이션 실행 및 관리 PM2를 이용해 애플리케이션 실행하기 아래 명령으로 app.js 파일을 PM2를 통해 실행합니다. pm2 start app.js 실행 중인 애플리케이션 목록 확인하기 pm2 list 명령을 통해 현재 실행 중인 애플리케이션의 목록을 확인할 수 있습니다. pm2 list .. 2023. 11. 18.
Git, 실수로 삭제한 파일 복구하는 방법 Git, 실수로 삭제한 파일 복구하는 방법 Git은 협업과 버전 관리를 위한 강력한 도구입니다. 그러나 가끔 실수로 파일을 삭제하거나 잘못된 pull로 인해 문제가 발생할 수 있습니다. 이런 상황에서 어떻게 복구할 수 있는지 알아봅시다. 변경 이전 커밋 시점으로 되돌리는 방법 먼저, 변경 전의 커밋 시점으로 되돌려 파일을 복구할 수 있습니다. # 커밋 로그 확인 git reflog # 또는 git log -g # 원하는 커밋 시점으로 되돌리기 git reset --hard [commit_id] 이제 변경 이전의 상태로 돌아가면서 삭제된 파일을 복구할 수 있습니다. 파일을 실수로 삭제했을 때 복구하는 방법 만약 파일을 실수로 삭제했다면, 아래의 방법으로 복구할 수 있습니다. 특정 파일 복구하기 # 삭제된 .. 2023. 11. 17.