스파르타내일배움캠프TIL 34

계층형 아키텍처 패턴 (Layered Architecture Pattern)

아키텍처 패턴은 소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대를 제시한다. 각각의 시스템들과 그 역할이 정의되어 있고, 여러 시스템 사이의 관계와 규칙 등이 포함된다. 그중에서 계층형 아키텍처 패턴이란, 시스템을 여러 계층으로 분리하여 관리하는 방법으로 현재 가장 많이 쓰인다고 한다. 목표는 각 계층을 명확하게 분리하여 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이다. 클라이언트가 서버에 요청 - 프레젠테이션 ⬇️ 서버는 해당 요청을 바탕으로 비즈니스 로직 처리 - 비즈니스 로직 ⬇️ 비즈니스 로직에서 데이터베이스가 필요하면 - 데이터베이스 ⬇️ 데이터베이스를 가져옴 컨트롤러: 클라이언트의 요청을 받고 응답 반환 서비스: 클라이언트의 요구사항 처리, DB정보가 필요하면 리..

🪩/기타 2024.02.21

클래스, 상속, 추상 클래스, 인터페이스

오늘은 객체지향에서 중요한 부분이라고 강조해주신 네가지를 내가 이해할 수 있는 정도로 정리해봤다. 객체지향 프로그래밍이란 정말 간단하게 압축해서 말하면 클래스로 코드를 짜는 것 클래스 이전 글 참고 상속 a 클래스의 속성과 메서드를 b 클래스가 물려받는 행위를 상속이라고 함 불필요한 코드 반복을 줄일 수 있음 extends 키워드를 사용하여 부모클래스(=슈퍼클래스)를 확장 상속 오버라이딩은 덮어 쓰는 행위를 뜻함 자식클래스가 부모클래스 함수의 동작을 새롭게 정의하는 것 서브타입 -> 슈퍼타입 : upcasting 슈퍼타입 -> 서브타입 : downcasting 추상 클래스 인스턴스화를 할수없는 클래스 상속을 통해 자식클래스에서 메서드를 강제로 제각각 구현하는 용도 abstract 를 사용하여 정의 (e..

🪩/기타 2024.02.20

[Node.js] bcrypt 함수로 암호화하기

bcrypt는 암호화 해시 함수의 한 종류이다. 레인보우 테이블에 대항하기 위해 해시 함수에 솔트를 함께 사용한 것이 비크립트라고 하는데 레인보우 테이블은 뭐고 솔트는 뭘까... rainbow table 은 해시 함수를 이용하여 나올 수 있는 모든 값을 전부 저장한 테이블이고, 이 값들을 하나하나 대조해서 찾아내는 방식으로 사용된다. salt는 찾아보니 암호학 용어라고 하는데, 비밀번호에 소금을 친다는 느낌으로 이해하면 된다고 하셨다. 나는 이번 프로젝트에서 회원가입시 사용자의 비밀번호를 받아와 암호화하는 용도로 사용했다. // npm npm install bcrypt // yarn yarn add bcrypt 먼저 터미널에서 비크립트를 설치한다. const hashedPassword = await bc..

⌨️/Node.js 2024.02.06

[Node.js] 개인 프로젝트: 이력서 백엔드 서버 만들기_2

회원가입 및 전체적인 유효성 검사 기존 유효성 검사는 딱 제시된 조건만 작성했기 때문에 기본적인 부분까지 넣어놨다. 앞으로도 이 부분 꼭 신경쓰기 로그인 이메일, 비밀번호 검증 어떤 문제가 있었냐면 회원가입은 잘 들어갔고 db에서도 확인이 되는데 로그인 과정에서는 검증에 걸리는 문제가 있었다. 로그인 검증 코드랑 스키마 파일만 들여다보다가 도저히 모르겠어서 튜터님께 질문드렸더니 아주 쉽게 찾아내셨다😱 기존의 코드는 where 절에 email, password가 함께 들어가 있는 것이 문제였다. 1. 나는 password에 암호화를 걸어놨기 때문에 기존에 사용자에게 최초로 받아온 비밀번호와 그 후에 암호화된 비밀번호가 달랐는데 2. user에 email, password를 함께 넣어놔서 3. 첫번째로 실행..

💻/프로젝트 2024.02.05

[Node.js] npx prisma db push

~오늘의 수강 과목~ 1. Node.js 숙련 2주차 (이용우 튜터님) 게시판 기능을 구현하는 중인데 api 테스트를 하다가 Posts 작성 부분에서 막혔다. 리퀘스트를 작성하고 send 버튼을 누르면 서버가 끊겼다. 터미널을 확인해보니 Argument `password` is missing. 이라는 메세지가 나왔다. schema.prisma 파일의 Posts model 부분에서는 password를 설정해놨는데, api 테스트를 할 때 리퀘스트 json 부분에 title, content만 적어서 보낸 것이 원인으로 보였다. 그래서 schema.prisma 파일의 Posts model 부분으로 가서 password를 삭제 후 저장했으나 계속 같은 상태였다. 다들 감이 오셨는지... schema.prisma..

⌨️/Node.js 2024.01.31

[SQL] 제약 조건 연습 문제

~오늘의 수강 과목~ 1. Node.js 숙련 1주차 (이용우 튜터님) _ SQL 제약 조건 1 : N -- 1 : n -- 1개의 출판사는 n개의 책이름을 가질 수 있다 CREATE TABLE Publisher ( publisherId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, publisherName varchar(255) NOT NULL, publisherAddress varchar(255) NOT NULL ); CREATE TABLE Books ( bookId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, publisherId int(11) NOT NULL, bookName varchar(255) NOT NULL, FOREIG..

🪩/기타 2024.01.29

[Node.js] MongoDB, Mongoose, schema, model 정리

~오늘의 수강 과목~ 1. Node.js 입문 1주차 (이용우 튜터님) _ express, module, router, req / res, api 2. Node.js 입문 2주차 (이용우 튜터님) _ MongoDB, schema, middleware MongoDB 실습하며 작성한 api는 인메모리 형식으로 저장 🤔 인메모리 형식이란? 메모리는 컴퓨터 껐다켜면 날아가서 보존해야하는 데이터는 보조기억장치에 저장을 해야함 아무튼 그 메모리에 저장이 되기 때문에 이 api도 컴퓨터 껐다 켜면 날아감 서버를 껐다 켤때마다 사용자의 데이터가 초기화되는건 문제가 큼 그래서 등장한 기술이 데이터베이스 데이터베이스는 어플리케이션이 종료된 후에도 데이터가 보존된다 데이터베이스는 실제 데이터가 저장되는 집합체라고 이해 데이..

⌨️/Node.js 2024.01.28

관계형, 비관계형 데이터베이스

~오늘의 수강 과목~ 1. Node.js 입문 1주차 (이용우 튜터님) _ express, module, router, req / res, api 2. Node.js 입문 2주차 (이용우 튜터님) _ MongoDB, schema, middleware 3. Node.js 숙련 1주차 (이용우 튜터님) 관계형 데이터베이스 RDB 데이터의 형식 지정 -> 특정 컬럼이 무조건 존재한다고 가정 때문에 정확성과 일관성을 강조함 은행, 공공기관 등에서 사용하기 적합 비관계형 데이터베이스 NoSQL 형식 지정x 유연하게 확장 가능 때문에 빠른 저장, 검색 등에 강함 다만 형식이 지정되지 않은 만큼 빠진 컬럼이 있을 수 있기 때문에 신뢰x sns, 빅데이터 분야에서 적합

🪩/기타 2024.01.28

[Node.js] express, module, router, req/res, api 정리

~오늘의 수강 과목~ 1. Node.js 입문 1주차 (이용우 튜터님) _ express, module, router, req / res, api 2. Node.js 입문 2주차 (이용우 튜터님) _ MongoDB, schema, middleware Express Node.js 코드를 쉽게 짤 수 있게 도와주는 라이브러리 터미널로 yarn add express를 실행하면 package.json 파일에 express 설치가 기록되고, node_modules 폴더가 생성되는데 여기에는 라이브러리에 필요한 파일들이 담겨있다. Module 자바스크립트를 파일 단위로 분리한 코드의 덩어리 a.js 파일에서 짠 코드를 b.js 파일에서도 사용할 수 있게 해준다. 코드를 재사용할 수 있기 때문에 구조적인 관리가 용이..

⌨️/Node.js 2024.01.26