목록분류 전체보기 (62)
상똥이의 Back-End 공부방
1. class- 클래스의 역할: 인스턴스 만들기- constructor: 생성자class Person { nameC: string; ageC: number; constructor(name: string, age: number) { this.nameC = name; this.ageC = age; }}const admin = new Person("sanghee", 27); 2. 프로토타입- 객체를 상속하기 위해 사용하는 방식- 모든 객체는 메소드와 속성을 상속받기 위한 템플릿으로써 프로토타입 객체를 가짐- 프로토타입 객체 또한 상위 프로토타입 객체를 가지며, 그 상위 프로토타입 객체도 상위 프로토타입 객체를 가짐- 이를 프로토타입 체인이라고 함- 상속되는 속성과 메서드들은 각 객체가 아닌..
[1. 인터페이스]1. 인터페이스란- 반복되는 타입을 동일한 규칙으로 정해둘 수 있음interface User { first_name: string; last_name: string; age: number;} - 변수에 인터페이스 활용const sanghee: User { first_name: 'Park'; last_name: 'Sanghee'; age: 27;}const junhee: User { first_name: 'Lee'; last_name: 'Junhee'; age: 27;}const hyein: User { first_name: 'Jung'; last_name: 'Hyein'; age: 27;} - 함수에 인터페이스 활용func..
1. 기본 타입- 문자형: string- 숫자형: number- 진위값: booleanconst name: string = '박상희';const age: number = 17;const married: boolean = false; 2. 배열- Array 또는 타입[]cosnt array1: Array = [1, 2, 3];const array2: Array = ['a', 'b', 'c'];const array3: number[] = [1, 2, 3];cosnt array4: string[] = ['a', 'b', 'c']; 3. 튜플- 두 가지 이상의 데이터 타입을 적용할 수 있음const address: [string, number] = ['Seoul', 100];cosnt any: string|bo..
1. 타입스크립트란?- 데이터 타입을 부여한 자바스크립트, 자바스크립트의 슈퍼셋- 변수의 선언과 동시에 데이터 타입을 지정- 자바스크립트와 달리 브라우저에서 실행하기 위해 컴파일(파일 변환) 과정이 필요//javascriptfunction sum(a, b) { return a+b;}sum(1, 2);//typescriptfunction sum(a: number, b: number):number { return a+b;}sum(1, 2); 2. 자바스크립트와의 차이- 자바스크립트 = 인터프리터 언어 / 타입스크립트 = 컴파일언어- 인터프리터 언어: 소스코드를 한 줄씩 읽어가며 바로 실행해 빠른 편- 컴파일 언어: 언어 변환과 명령 실행이 따로 이루어짐. 런타임 상황에서는 모든 소스코드가 변환되어 있어 ..
목표- 백엔드에서 페이지네이션을 위한 로직을 구현한다- n번째 페이지에 보여줄 데이터 수(limit)를 설정할 수 있다- 데이터는 생성된 시간을 기준으로 내림차순 정렬한다 목차0. 초기 설정 (데이터베이스, 초기 데이터, 데이터 타입)1. 기능 구현2. 포스트맨으로 확인 [0. 초기 설정]1. 데이터베이스- 예시로 댓글 타입을 활용했다- 프리즈마를 사용해 간단히 구현한다- 댓글 id(자동생성, 정수타입), 닉네임, 내용, 생성일자model Comment { id Int @id @default(autoincrement()) nickname String content String createdAt DateTime @default(now())} 2. 초기 데이터- 총 42개의..
목차0. 사전 준비 : 내 애플리케이션 등록 1. 카카오 로그인 로직 설명 2. 로직 구현 1 - 인가 코드 받아오기 3. 로직 구현 2 - 토큰 받아오기 4. 로직 구현 3 - 회원가입 및 프로필 생성 5. 전체 코드[0. 사전 준비 : 내 애플리케이션 등록]1. 실제 사업자 등록은 필요 없고 대충 작성만 하면 됨 2. https://developers.kakao.com/ 에 들어가서 로그인 3. 상단 목록 중 '내 애플리케이션'으로 이동 4. '내 애플리케이션 추가하기' 클릭 5. 앱 이름, 사업자 명, 카테고리 작성 및 동의사항 체크 후 저장 누르면 생성됨 6. 생성된 애플리케이션을 클릭하고, 제품 설정 > 카카오 로그인 으로 들어가 환경설정 - '활성화 설정'의 상태를 ON으로 바꾸기 - 'Ope..
목표- 서버에서 이미지를 업로드하면- 이미지를 AWS S3에 업로드하고 저장한다- AWS S3에서 이미지를 조회할 수 있도록 한다 목차0. S3 버켓을 사용하는 이유1. S3 버켓 생성 및 사용자 생성2. S3를 사용하기 위한 로직 구현3. 이미지 업로드 로직 구현4. 이미지 업로드 후 AWS에서 이미지 확인 0. S3 버켓을 사용하는 이유- 데이터베이스의 성능 저하 : 이미지를 데이터베이스에 저장하면, 데이터베이스의 성능이 크게 영향을 받음 / 이미지 파일은 일반적으로 큰 용량을 차지하므로, 데이터베이스가 많은 이미지 데이터를 처리하려면 상당한 디스크 공간과 I/O 성능이 필요 / 이로 인해 데이터베이스의 쿼리 성능이 저하되고, 전체 시스템의 응답 속도가 느려짐- 보안 취약성 : 서버의 public 디..
1. describe- dto 테스트 시, 여러 개의 dto가 존재할 수 있는데 각각의 dto에 대해 다양한 테스트를 진행하는 경우 describe로 구분한다- dto가 아래와 같은 경우export class CreateDto { ... }export class UpdateDto { ... }- 테스트 코드는 아래와 같이 작성한다describe('CreateDto', () => { test('성공하는 케이스', () => {}) test('실패하는 케이스', () => {}) ...});describe('UpdateDto', () => { test('성공하는 케이스', () => {}) test('실패하는 케이스', () => {}) ...}); 2. 테스트를 위한 임..
[Jest 환경 세팅]1. jest 설치하기- nest의 경우 이미 설치가 되어있지만, express 등은 설치가 필요하다- 테스팅은 개발 환경에서만 진행할 것이므로, -D 옵션을 사용한다npm i -D jest 2. jest-mock 설치하기- 인터페이스나 객체를 복사하기 위해 jest-mock-extended를 설치한다npm i jest-mock-extended --save-dev ※ mock객체를 사용하는 이유 ↓1) 격리된 테스트 환경 제공 : mock을 사용하면 외부 서비스나 데이터베이스같은 실제 환경에 의존하지 않고 테스틀를 수행할 수 있음 → 이로 인해 테스트가 더 빠르고 예측 가능하며 안정적으로 실행됨2) 상태 제어와 예측 : mock객체는 특정 메소드 호출에 대해 사전에 정의된 반응을 ..