본문 바로가기

분류 전체보기100

TIL #18) Transaction Today I Learned 트랜잭션이란 작업의 완전성을 보장해주기 위해 사용되는 개념이다. 특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해준다. 작업의 단위를 하나의 쿼리에 종속하는것이 아닌, 여러개의 작업(쿼리)을 묶어 하나의 작업단위로 그룹화하여 처리하는 작업을 뜻한다. 대부분의 데이터베이스가 트랜잭션의 특징을 이용하고 있으며, MySQL뿐 아니라 AWS dynamoDB, MongoDB, CockroachDB 등 다양한 데이터베이스에서도 트랜잭션의 개념을 확인 할 수있다. 1) A 고객의 계좌에서 1000원을 차감한다. 2) B 고객의 계좌에 1000원을 추가한다. 다음과 같은 기능은 반드시 트랜잭션이 필요하다. 만약 1번과정 후 2번 과정에서 오류가 발생했다면, A .. 2024. 1. 30.
TIL #17) ORM, Prisma 파먹기 Today I Learned 무작정 강의를 따라듣다보니 기본적인 개념이 궁금해져 공부해보려 한다. ORM(Object-relational maping) : DB데이터를 객체로 매핑해주는것. 모델링 된 객체와 관계를 바탕으로 SQL을 자동으로 생성해주는 도구. 기존 ORM들이 겪는 많은 문제들을 겪지 않을 수 있게 한다고 프리즈마 공식 문서에서는 말한다. Prisma의 구성: Prisma Schema, Prisma introspect, Prisma migration, Prisma client, Prisma studio 1. Prisma Schema 프리즈마 v1에서는 graphQL을 통해 모델을 정의했다면, 프리즈마 v2에 와서는 PSL(Prisma Schema Language)를 통해 모델을 정의한다. .. 2024. 1. 27.
TIL #16) CPU 구성요소 Today I Learned 스탠다드 특강에서 CPU 구성요소에 대해 배웠다. 오늘은 그 내용을 간략하게 정리해보려 한다. CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치이다. 내부에는 1.ALU 2.제어장치 3.레지스터 라는 구성요소가 있다. 1. ALU - 계산기 예를 들어 1과 2를 더하라는 계산을 하라하면 '1'과 '2'는 피연산자, '더하기'라는 수행할 연산이라고 할 수 있다. 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다. ALU는 레지스터와 제어장치로부터 받아들인 피연산자와 제어신호를 이용해 산술연산, 논리연산 등 다양한 연산을 수행한다. ALU가 내보내는 정보로는 특정 숫자나 문자가 될수도 있고, 메모리 주소가 될 수도 .. 2024. 1. 26.
프로그래머스 JavaScript - 문자열 다루기 기본 문제 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. s return "a234" false "1234" true 문제풀이 function solution(s) { var answer = true; if(typeof s !== Number){ answer= false }else if(s.length !==4 || s.length !== 6){ answer= false } return answer; } 간단한 문제라 생각하고 처.. 2024. 1. 26.
프로그래머스 JavaScript - 약수의 개수와 덧셈 문제 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 1 ≤ left ≤ right ≤ 1,000 left right result 13 17 43 24 27 52 문제풀이 1. 약수의 개수 구하기 function aa(num){ let sum = 0 for(let i =0; i 2024. 1. 25.
TIL #15) SQL 외래키 제약조건 Today I Learned 외래키(Foreign Key) 제약조건은 테이블과 다른 테이블간의 관계를 맺을 때 사용하는 제약 조건이다. 연관관계는 대표적으로 3가지의 형태로 표현가능하다. 1:1 - 1명의 사용자는 1개의 사용자정보를 가질 수 있다. 1:N - 1명의 사용자는 여러개의 주문을 할 수 있다. N:M - 여러명의 학생은 여러개의 학원을 등록할 수 있다. CREATE TABLE 테이블명 FOREIGN KEY (컬럼명) REFERENCES 참조_테이블명 (참조_컬럼명) ON DELETE [연계 참조 제약 조건] ON UPDATE [연계 참조 제약 조건] ); 기본적으로 외래 키 제약조건은 create table 문을 이용해 테이블을 생성함과 동시에 정의한다. 연계 참조 무결성 제약 조건의 종류 .. 2024. 1. 24.
TIL #14) 개인프로젝트를 하며 새로 배운것(nvm, git bash, 트러블 슈팅) #1 - NVM을 이용해 원하는 버전의 node.js 다운받기 우분투를 통해 프로젝트를 git clone 하여 최종적으로는 pe2를 통해 서버를 여는 법을 배웠다. package-lock.json 파일로 node_modules를 설치해야하는데 자꾸 node 버전이 낮아 yarn 을 사용할수 없다는 오류가 발생했다. 이런저런 명령어를 입력했으나 되지 않았고.. 결국은 nvm이라는 node 버전 매니저를 이용해 해결할 수 있었다. 참고로 우분투 22.04 버전은 Node.js 18.x 버전까지 지원한다. 실제로 최신버전(20.x)를 설치하려하니 오류가 났다. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash sour.. 2024. 1. 23.
TIL #13) 개인프로젝트 진행 중 발생 오류 오늘의 오류 catch (error) { console.error(error); if (error.name === "ValidationError") { //조이에서 에러가 발생한다면 return res.status(400).json({ errorMessage: error.Message }); } return res .status(500) .json({ errorMessage: "서버에서 에러가 발생했습니다..!" }); } try catch 문을 이용해 조이에서 에러가 발생한다면 원인 에러를 400 state 메시지로 띄우는 코드를 작성했다. 그러나 insomnia 창에서 확인해보니 400 상태로 서버를 띄워주기는 하나 json 안에는 아무것도 없었다. 확인해보니 json({ errorMessage: e.. 2024. 1. 22.
프로그래머스 JavaScript - 제일 작은 수 제거하기 문제 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. arr return [4,3,2,1] [4,3,2] [10] [-1] 문제풀이 function solution(arr) { var answer = []; //배열에서 가장 작은수 찾기 let arrr = [...arr].sort((a,b) => { return a-b }) let min = arrr.. 2024. 1. 19.