백엔드 11

NestJS Lifecycle (생명주기) 개념

🤷‍♂️ 본론에 앞서 Nest JS 개념?Nest JS는 Node JS 기반으로 한 서버 어플리케이션 프레임워크 입니다. 자바스크립트는 상당히 오랫동안 Express 기반으로 서버 어플리케이션 개발에서 압도적인 점유율을 차지한다.많이 사용하는 이유중에 빠르게 서버 구축과 API 구성할 수 있다는 장점이 있다. Express가 경량화된 프레임워크여서 핵심적인 기능과 빠르게 서버를 구성해서 API 구축하는데 큰 문제가 없지만 서비스 규모가 확장되고 볼륨이 커지는 프로젝트에서 불편함이 많다. 이런 문제를 해결하기 위해서 Nest JS 프레임워크가 등장하며 기업용 어플리케이션을 개발하고 내장하고 있는 플러그인을 통해서 쉽게 확장도 할 수 있다. OOP(객체 지향 프로그래밍), DI(의존성 주입), AOP(과점..

Nest.js 2024.05.07

[문제해결] You are using safe update mode

에러현상 mysql 워크벤치를 사용할때 저런 에러현상이 나올떄가 있습니다. 이러한 에러 현상을 리턴합니다 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 이러한 현상이유는 테이블에서 키값을 이용한 UPDATE나 DELETE만을 허용하도록 되어 있는데, 그렇지 않게 좀더 넓은 범위의 SQL을 적용하려고 할떄 WORKBENCH에서 경고를 주는것입니다 다수에 쿼리 사용할떄 저런 에러 현상이 발생 합..

Sql개발자 2021.10.20

관계형 데이터베이스 집합연산과 관계연산 & SQL 종류

SQL개발자 study 10일차 회사는 다니면서 병행하느라고 공부를 제대로 하지 못하고 있네요 ㅠㅠㅠㅠ 그래도 오늘은 아침일찍 출근해서 30분정도 끄적여본 공부를 다시 복습합니다 관계형 데이터베이스의 특징은 릴레이션을 사용해서 집합 연산과 관계 연산을 할 수 있다. 집합 연산 집한 연산 설명 합집합(UNION) - 두 개의 릴레이션을 하나로 합하는 것이다 차집합(DIFFERENCE) 본래 릴레이션에는 존재하지만 다른 릴레이션에는 존재하지 않는 것을 조회한다 교집합(INTERSECTION) 두 개의 릴레이션 간에 공통된 것을 조회한다 곱집합(CARTESIAN PRODUCT) 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산한다 관계 연산 관계 연산 설명 선택 연산 릴레이션에서 조건에 맞는 행 만을 조회한..

Sql개발자 2021.10.19

오늘은 디버깅 으로 문제 해결

Sequelize 기반으로한 프로젝트 이고 저는 백엔드에서 데이터를 가공해서 프론트에 뿌려 주는 작업을 하고 있었습니다 프론트에서 데이터를 잘 가지고 오는데 데이터가 UNDIFIND가 자꾸떠서 계속 해서 삽질중 이였지만ㅎㅎ 이럴때는 백엔드 데이터도 디버깅을 하는 방법을 배웠습니다 sequelize.query() 저런식으로 가공해서 console.log()를 찍어보면 이런식으로 찍힙니다 배열안에 배열로 묶여있는 현상입니다 저는 저것을 파악 못하고 계속 해서 다르게 데이터를 넘겨주고 있었습니다 저런식으로 데이터를 뿌릴려면 한번더 배열에 묶어 줘야지 원하는 값이 나왔습니다. 반대로 sequelize.query()에 replacements를 보내준다면 이렇게 배열안에 바로 값이 떨어져서 제가 원하는값을 가공할수..

MySql 구조 분석

회사 DATABASE TABLE 패턴과 자주쓰는 컬럼들을 정리했습니다. 저희 회사는 MYSQL 사용합니다 자주 사용하는 Data Type Char (문자형 데이터 타입) 고정 길이 데이터 타입 255byte (255자 까지) 지정된 길이보다 짧은 데이터를 입력될시 나머지 공간을 공백으로 채워진다 Varchar (문자형 데이터 타입) 가변 길이 데이터 타입 지정된 길이 보다 짧은 데이터를 입력될시 빈 공백을 채우지 않는다 Text (문자형 데이터 타입) 문자열 데이터 타입으로 장문에 글을 넣어야될때 사용된다 Int 정수형 데이터 타입 3byte로 unsigned 사용시에 음수값을 저장하지않는다 또한 INTEGER 라고도 사용한다 CHAR 와 VARCHAR 차이? char 와 varchar 차이 char는 ..

Sql개발자 2021.10.14

Node.js JWT 기반으로 사용자 인증 알아보기

1. JWT(Json Web Token) 많은 웹 서비스들은 사용자 인증을 구현하기 위해서 쿠키와 세션을 이용해왔습니다. 그런데 쿠키와 세션에는 여러 문제(보안 등등)들이 있어서, 최근에는 OAuth와 JWT 같은 토큰 기반으로 사용자 인증 방식을 사용합니다. OAuth 에 대해서? OAuth는 쉽게 말해서 Facebook , Google 같이 다른 어플리케이션으로 사용자 인증을 인가한 것. JWT 에 대해서? JWT는 사용자 정보를 JSON객체에 담아 이를 암호화하고 해싱 작업을 거쳐 문자열 토큰을 생성하는 기술입니다. 클라이언트는 이 토큰을 HTTP Header에 추가하여 요청을 보냄으로써 사용자 인증을 얻게 됩니다. JWT는 서버에 저장되지 않기 떄문에 서버 부하를 일으키지 않으면 , 해싱작업을 통..

SQL 정규화(Normalization) 와 반정규화(De-Normalizat)

SQLD Study 4일차 정규화란? 1. 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다 2. 정규화는 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다 3. 정규화된 모델은 테이블로 분해되고 , Join을 수행하며 하나의 합집합으로 만들수 있다 정규화 절차 (저는 시험문제로 제출될수 있는 BCNF 까지만 공부를 했습니다) 정규화 절차 설명 제1정규화 속성(Attribute)의 원자성을 확보한다 중복값을 제거한다 기본키를 설정한다 제2정규화 기본키의 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거 한다 제 3정규화 기본키를 제외한 칼럼 간에 종속성을 제거한다 즉 , 이행 함수 종속성을 제거한다 BCNF..

Sql개발자 2021.10.08

엔터티(Entity) 종류

SQLD 시험준비 2일차 엔터티(Entity) 종류 엔터티의 종류는 유형과 무형에 따른 종류, 엔터티가 발생하는 시점에 따른 종류로 나누어 진다 엔터티를 유형과 무형으로 분류하는 기준은 물리적 형태의 존재 여부이다 1. 유형과 무형에 따른 엔터티의 종류 유형 엔터티 업무에서 도출되며 지속적으로 사용되는 엔터티이다 개념 엔터티 유형엔터티는 물리적 형태이지만, 개념 엔터티는 물리적 형태가 없다 사건 엔터티 비즈니스 프로세스를 실행하면서 생성되는 엔터티 이다 2. 발생 시점에 따른 엔터티 종류 기본 엔터티 (basic) 키 엔터티 중심 엔터티 (Main) 기본엔터티와 행위 엔터티 중간에 있는것 행위 엔터티 (Actice) 2개 이상의 엔터티로부터 발생된다 3. 속성의 특징과 종류 1. 속정의 특징 = 속성은 ..

Sql개발자 2021.10.06

[SQLD] 데이터 모델링의 이해

1. 데이터 모델링의 특징 현실세계를 DB로 표현하기 위한 추상화 고객이 쉽게 이해할 수 있도록 단순화 복잡하지 않게 이해할수 있도록 명확성 추상화 Abstraction 단순화 Simplification 명확성 Clarity - 현실세계를 DB로 표현하기 위한 추상화 - 누구나 쉽게 이해 가능 - 복잡함 no - 모호하지 않고 , 명확하게 - 한가지의 의미를 가집 2. 데이터 모델링의 단계 1.개념적 모델링 2. 논리적 모델링 3. 물리적 모델링 개념적 모델링 논리적 모델링 물리적 모델링 - 업무 전체의 데이터 모델 정의를 수행하고 복잡하게 표현하지 않는다 - 업무적 용어는 가급적 피한다 - 개념적 모델링을 논리적 모델링 으로 변환하는 작업 - 정규화를 수행해서 데이터 모델의 독립성을 확보한다 - 데이터..

Sql개발자 2021.10.05

NODE.JS ORM 과 Sequelize & Sequelize-cli 대해서

저희 회사에 프로젝트는 NODE.JS ORM방식을 활용하고 있기 때문에 저는 첨으로 ORM을 공부하게 되었습니다. ORM란? ORM(Object Relational Mappings)이란 프로그램 상의 객체(Object)와 DB의 테이블(Relation)이 일대일 대응하는 관계를 맺는것(Mappings)을 의미합니다. ORM을 이용하면 query가 아닌 메서드로서 데이터를 조작할 수 있다는 것이 큰 장점입니다. 예를 들면 USER 테이블을 조회 하기 위해서 MySql SELECT * FROM 테이블명 이렇게 USER 테이블을 조회할수 있다 하지만 ORM 활용하면 ORM USER맵핑 테이블에 USER.findAll() 로 USER테이블을 조회할수있다 이렇게 ORM에서는 테이블과 맵핑되는 객체의 메서드를 통해..

카테고리 없음 2021.09.25

JavaScript Foreach 알아보자!

안녕하세요!오늘은 Foreach 대해서 알아보겠습니다! ForEach 메서드는 무엇인가? forEach는 배열에 활용이 가능한 메서드로, 파라미터로 주어진 값을 배열요소로 각각에 대해 값을 출력하는 형태입니다!forEach는 return 하는 값을 따로 모아서 어떤 처리를 하는 과정이 없기 때문에 변수에 할당하기 보다는 if , 반복문으로 바로 호출되는것이 일반적입니다!!   이해를 하기위해서 코드를 짜보았습니다! vs 켜주시고! 첫번쨰로배열을 만들고 ForEach 메서드를 사용 해보겠습니다! 그리고 나서 결과를 보면!!! 하나더 추가한다면!! 결과를보면 이렇게 name 값만 가져올수 있습니다 ㅎㅎ  부족한 정보지만 감사합니다~^^

JavaScript 2021.07.07