위클리 페이퍼 - 테스트 주도 개발, 로드 테스트, 스트레스 테스트
·
코드잇
테스트 주도 개발(TDD)이 무엇인지 설명해 주세요. 웹 개발에서 로드 테스트와 스트레스 테스트란 무엇인지 설명해 주세요.테스트 주도 개발은 Test Driven Development의 약자로 코드를 작성하기 전에 테스트 코드를 먼저 작성하는 소프트웨어 개발 방법론이다.기능 구현보다 설계를 고민하는 개발 방식이다.구현하고자 하는 기능의 단위 테스트들을 작성하고 해당 테스트를 수행할 기능들을 구현한다. 테스트 주도 개발은 red, green, blue 3단계로 이루어진다.red 단계에서는 일단 실패하는 테스트 코드를 작성한다.구현하고자 하는 기능의 기대되는 결과에 대한 명확한 테스트를 먼저 작성하면서 좀 더 정확하게 기능 코드를 작성하게 된다. green 단계에서는 red 단계에서 작성한 테스트를 통과할..
위클리 페이퍼 - 관계형 데이터베이스
·
코드잇
관계형 데이터베이스에서 무결성이 무엇인지 설명해 주세요. 관계형 데이터베이스에서 마이그레이션이란 무엇인지 설명해 주세요.데이터베이스 무결성은 데이터의 정확성, 일관성, 유효성을 보장하기 위한 규칙과 제약 조건의 집합이다.데이터베이스에 잘못된 데이터나 모순된 데이터가 저장되는 것을 방지하는 개념이다. 관계형 데이터베이스에서 무결성은 크게 개체 무결성, 참조 무결성, 도메인 무결성이 있다. 먼저 개체 무결성(Entity Integrity)는 테이블의 기본 키에 대한 무결성 조건이다.기본 키는 null값을 가질 수 없으며 항상 고유한 값을 가져야 한다는 내용이다. 참조 무결성(Referential Integrity)는 테이블의 외래 키에 대한 무결성 조건이다.외래 키의 값은 참조하는 테이블의 기본 키 값이거나..
클라우드 서비스를 활용한 여러가지 이미지 업로드 방식
·
웹 개발/Node.js
백엔드 프로젝트를 진행하면서 이미지 파일처리에 관한 부분을 구현하게 되었다. 먼저 기본적인 개념으로 이미지는 request body 부분에 multipart/form-data 라는 형식으로 전송된다. 그러면 백엔드에서 일반적으로 multer라는 라이브러리를 사용해 이미지를 처리한다. multer는 body의 multipart/form-data형식의 데이터를 파싱해서 지정된 경로(dest 혹은 storage)에 파일을 업로드하고 해당 파일의 메타데이터를 req.file 이라는 필드에 저장해서 사용자가 처리할 수 있게 해준다. 처음 이 기능을 우선 구현해야겠다 생각하고 구현 방식을 찾아보았다.node 환경에서 multer는 많이 사용되기 때문에 어렵지 않게 구현 방법을 알 수 있었다. 현재 프로젝트의 스태틱..
위클리 페이퍼 - 미들웨어, 이미지 업로드
·
코드잇
Express.js에서 미들웨어란 무엇인지 설명해 주세요. 백엔드 서버에서 이미지 업로드를 구현하는 다양한 방식에 대해 설명해 주세요.미들웨어는 express에서 핵심적인 요소 중 하나이다.요청과 응답 사이에서 실행되는 함수들을 의미한다. 미들웨어는 일반적으로 req, res, next를 매개변수로 가지고 다양한 기능을 수행한다.또한 express 객체에 use를 통해 작성한 미들웨어 함수를 사용할 수 있다.사용자는 요청의 경로에 따라 순서에 따라 적절하게 미들웨어를 배치하면서 프로그램을 작성해나갈 수 있다. 미들웨어는 로깅처럼 서버로 들어오는 모든 요청에 대해 특정한 기능을 수행하거나 req나 res 객체에 새로운 속성을 추가하거나 값을 변경할 수 도 있다.또한 실행 흐름을 제어할 수 도 있다. 에러 ..
Prisma 쿼리 메소드들 정리 - 기본 CRUD
·
데이터베이스/ORM
prisma 공식 문서를 기반으로 쿼리메소드들을 한번씩 살펴보고 정리하려고 한다.Prisma Client Queries | Prisma Documentation Prisma Client Queries | Prisma DocumentationLearn about the database queries you can send with Prisma Client.www.prisma.io기본 CRUDCREATE먼저 create는 create(), createMany(), createManyAndReturn() 이 있다.prisma로 코드를 작성할때 일반적으로 prisma.모델명.쿼리메소드 로 작성하게 되고 아래는 한 튜플을 create 하는 코드의 예시이다.const user = await prisma.user.c..
Prisma의 개념과 내용 정리
·
데이터베이스/ORM
프로젝트에 사용할 ORM으로 Prisma를 배웠다. ORM의 개념은 알고있었지만 Prisma는 처음 배우게 되어서 문법들이나 사용법이 생소하다. Prisma 만의 규칙들을 잘 정리해서 익혀야 할 것 같아서 처음부터 개념들을 정리하면서 공부하려고 한다. Prisma의 개념Prisma는 postgresql을 사용할 때 주로 많이 사용하는 ORM이다. postgresql 말고도 다른 DB도 연동이 가능한 것 같지만 주로 postgresql에 사용하는 것 같다.개발 생산성과 타입 안정성을 극대화 해준다고 한다.설치 방법 및 초기화// prisma 설치npm install @prisma/client// prisma 초기화npx prisma initprisma를 설치하고 초기화 하면 해당 설치 위치 폴더에 pris..
[JavaScript] Number()와 parseInt()의 차이
·
웹 개발/Node.js
Number()와 parseInt()자바스크립트에서는 수를 표현하는 원시 타입이 Number다.그래서 문자열로 되어있는 수를 숫자로서 변환하기 위해서 Number() 함수를 사용한다. 자바스크립트에서는 애초에 자료형이 크게 비중있지는 않지만 orm을 배우면서 많이 사용하게 되었다. 그런데 자바스크립트에는 Number() 함수 외에도 parseInt, parseFloat이 있다.일단 직관적으로 보면 parseFloat은 정수 외에도 실수형을 표현하기 위해 있는 것 같고 parseInt가 의문이었다. mdn web docs를 보면 먼저 Number는 숫자를 표현하고 다룰 때 사용하는 원시 래퍼 객체라고 나와있고 parseInt는 문자열 인자를 파싱하여 특정 진수의 정수를 반환한다고 되어있다. 그래서 par..
JavaScript 비동기 프로그래밍 알아보기
·
웹 개발/Node.js
비동기 프로그래밍에 대해 공부하고 내용을 정리한다. 먼저 동기(Synchronous)란 작업이 순차적으로 진행되는 것을 말한다.특정한 작업이 진행중이면 그 작업이 끝날 때까지 다른 작업이 기다려야 한다. 실행 흐름이 직관적이고 간단하지만 작업이 끝날 때까지 기다리는 동안 시간이 소요되어 전체 프로세스의 성능이 저하된다.또한 한 작업의 실행이 지연되면 다른 작업들도 줄줄이 밀리게 된다. 비동기(Asynchronous)란 작업이 독립적으로 실행되는 것을 말한다.비동기 방식은 작업의 종료를 기다리지 않고 다음 작업을 진행한다.자바스크립트 기준으로 여러개의 비동기 콜백들이 있을 경우 비동기 콜백들 끼리는 동기적으로 실행된다.네트워크 통신에 많이 사용된다. 실행흐름이 복잡하지만 전체 프로세스의 성능이 향상된다.이..