반응형

프로그래밍 설계를 할 때 문제점들을 해결 하기 위해 사용되는 패턴

  1. 싱글톤 패턴 : 한 Class는 하나의 인스턴스만 가지는 패턴 - DB 모듈에 많이 씀
    장점 : 메모리 낭비를 막음(생성비용), 데이터 공유가 쉬움
    단점 : 의존성이 높아짐(DI로 해결), 테스트가 어려워짐(단위 테스트때 어려움)
    의존성 주입(DI) : 메인 모듈이 직접 의존성을 주는것이 아닌 의존성 주입자를 이용 메인 모듈이 '간접'적으로 의존성을 주입
    장점: 모듈을 쉽게 교체, 테스트 쉬워짐
    단점 : 더 많은 모듈이 만들어져서 복잡해짐
  2. 팩토리 패턴
반응형

'취업전 끄적 > 내가 다시 보기 위한 공부내용' 카테고리의 다른 글

Ioc, DI  (0) 2023.04.24
인터프리터 , 컴파일러 언어 - 더 공부 필요  (0) 2023.04.13
보안  (0) 2023.04.12
배포  (0) 2023.04.12
mongoose  (0) 2023.04.11
반응형

xss : Cross-Site Scripting Attack -> web application에 script를 주입해서 정보를 빼냄

리액트는 자체로 어느정도 막아는줌

로컬 저장소에 중요한 내용을 넣으면 안됨 -> 근본적인 문제 해결

1. In memory : 로그인을 계속 해야

2. Cookies httpOnly 설정 : 웹에서만 작동이 된다, CSRF에 취약함

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials

반응형

'취업전 끄적 > 내가 다시 보기 위한 공부내용' 카테고리의 다른 글

인터프리터 , 컴파일러 언어 - 더 공부 필요  (0) 2023.04.13
디자인 패턴  (0) 2023.04.12
배포  (0) 2023.04.12
mongoose  (0) 2023.04.11
Database  (0) 2023.04.10
반응형

배포전 확인 할것

코드안에 중요한 정보들이 들어있는지 -> 환경변수

Log 및 결과 출력에 불필요한게 있는지 -> 비밀번호등

API limit Rate를 설정해야 한다. -> 주기적, 반복적 접근을 방지해야한다.

호스팅 고르는 법

요구사항에 맞는 호스팅을 골라야 한다.

1. 웹서버 or Static Hosting

2. 어떤 DB를 쓸지

3. CDN이 필요한지

4. 서버의 file 시스템에 접근해서 읽어와야 하는지

5. TLS가 필요한지

6. 어떤 위치에 있는 서버가 필요한지

어떻게 운영할지에 맞는 서버를 

DIY <--------------------> Fully managed

내가 전부 설정                          알아서 관리

DIY : google cloud, aws, azure등 클라우드 시스템

Fully managed : heroku, netlify, platform.sh

-> AWS EC2를 기본으로 알고 넘어가야겠다.

 

 

배포 너무 어렵다.......

반응형

'취업전 끄적 > 내가 다시 보기 위한 공부내용' 카테고리의 다른 글

디자인 패턴  (0) 2023.04.12
보안  (0) 2023.04.12
mongoose  (0) 2023.04.11
Database  (0) 2023.04.10
Web Socket  (0) 2023.04.10
반응형

mongoose는 schema를 이용해서 mongoDB의 데이터 안정성을 지켜주는 역활은 해준다. 사용이 쉬워진다.

mongoose는 Schema가 중요 -> 매핑해줌 mongoose는 _id가 없으면 에러가 난다.

virtual은 가상 변수를 설정할 수 있다. -> 포스트맨에서 "__v" : 0 다음 virtual 값이 나온다.

진짜 저장되는 값은 아님 오직 읽기용?

toObject를 통해 POJO로 변환해야 된다고함 -> Document와 POJO가 다른 형태라고 함...

toJSON은 toObject와 비슷

 

https://colinch4.github.io/2020-12-03/README.mongoose-01_Schemas/

https://velog.io/@modolee/mongodb-document-to-javascript-object

 

MongoDB - Document를 JavaScript Object로 변환하기

MongoDB + Mongoose를 이용해 API 개발 시 Mongoose Document를 Plain Old JavaScript Object로 변환하는 방법을 소개합니다.

velog.io

_id는 자동으로 생김 이것을 코드상에서 사용하려고 하기만하면됨

반응형

'취업전 끄적 > 내가 다시 보기 위한 공부내용' 카테고리의 다른 글

보안  (0) 2023.04.12
배포  (0) 2023.04.12
Database  (0) 2023.04.10
Web Socket  (0) 2023.04.10
기술면접 대비 - 자료구조  (0) 2023.04.06
반응형

Flat-File Database 파일에 데이터를 저장하는 방식 : 단점이 많음 -> 해결을 위해 DBMS 사용

DBMS : Database Mangaement System 데이터베이스를 관리해 주는 엔진

DBMS 종류

1974년 SQL [Structured Query Language] (RDBMS)  : 구조적인 질의응답을 할 수 있는 언어 

1998년 NoSQL : BigData, json 형태 데이터를 관계형으로 정리하기 어려워짐

RDBMS(RelationDBMS) 관계형 

스키마(SCHEMA)를 이용해서 데이터 정리, 타입 정의 가능, 관계 맺을 수 있음 관계를 읽고 쓸때 SQL을 사용함

Data integrity를 보장함 -> 데이터가 틀리지 않는다.

PK : 고유 식별자, FK : 관계를 정의해 줌

SQL : select 무엇을 선택할지 from 어떤 테이블에서 가져올지 where 조건

종류 : MySQL(가장 기본), PostgresSQL(가장 최근, MySQL에 비해 조금 복잡 + 쿼리가 미묘하게 다름), SQLite(가장 심플)

NoSQL No schema

왜? : object를 그냥 저장 할 수 있지 않을까? 

schema-less, Non-relation, 용도에 따라 저장 형태가 다름

key-value(Redis), document(MongoDB), wide-Column(Cloud Bigtable), Graph(neo4j) 형태가 있음

몽고DB : document 형태, document를 묶는 collections가 존재, 유저 collections, 상품 collections로 관계없이 저장

관계가 없어서 데이터를 중복해서 저장. 정보의 일관성은 코드에서 해결 -> 개별적으로 데이터 저장

 

ORM / ODM

ORM (Object Relational Mapping)

코드 와 DB 사이의 연결의 번거로움을 해결해주는 프로그램 -> 코드에서 스키마를 정의하면 ORM이 자동으로 DB에 테이블을 만들고 DB에 저장해줌 (추상화해줌)

장 : 비즈니스로직에 집중가능, 반복되는 쿼리를 줄여줌, DB가 달라져도 적용됨, 마이그레이션 도움

단 : ORM만으로는 상세한 쿼리 불가-> 복잡한 내용은 직접 쿼리를 사용, 최적화에는 맞지 않음

종류 : TypeORM, Sequelize, Prisma

ODM (Object Document Mapper)

object를 document로 매핑해줌

 

그럼 SQL과 NoSQL 선택은?

1. 어떤 데이터 타입을 저장 할지

2. 사용자와 데이터 량

3. 서로 관계가 필요한지

하이브리드 approach - 같은 소프트웨어라도 부분적으로 SQL,NoSQL을 섞어서 사용

 

반응형

'취업전 끄적 > 내가 다시 보기 위한 공부내용' 카테고리의 다른 글

보안  (0) 2023.04.12
배포  (0) 2023.04.12
mongoose  (0) 2023.04.11
Web Socket  (0) 2023.04.10
기술면접 대비 - 자료구조  (0) 2023.04.06
반응형

HTTP 통신은 브라우저에서 요청이 서버로 왔을 때만 서버에서 응답을 해줄 수 있다.

WebSocket은 클라이언트와 서버에 connection을 만들어 놓으면 양방향에서 서로 필요할때 주고 받을 수 있다.

Node에서는 Socket.io 라이브러리를 이용해서 쉽게 구현 할 수 있다. (브라우저간의 호환, 버전간의 호환에 유리)

서버 

1. npm i socket.Io 설치

socket.io 기본 연결

http서버를 socket.io를 이용 socket.io 서버로 진화, new Server(server, {옵션}) 옵션에는 다양한 것을 넣을 수 있다 연결확인, 몇초 간격으로 확인 할지, cors 허용등 다양하게 있다.

socketIO.on으로 클라이언트가 서버에 접속을 했을 때 connection 이벤트를 발생 

emit으로 메세지를 전송하는데 받는 대상을 정할 수 있다. -> 인터넷에 많음

https://velog.io/@hyex/socket.io-%EC%82%AC%EC%9A%A9%ED%95%A0-Client-API

Auth

socket.handshake.auth.token으로 token을 이용가능

반응형

'취업전 끄적 > 내가 다시 보기 위한 공부내용' 카테고리의 다른 글

보안  (0) 2023.04.12
배포  (0) 2023.04.12
mongoose  (0) 2023.04.11
Database  (0) 2023.04.10
기술면접 대비 - 자료구조  (0) 2023.04.06
반응형

1. 시간 복잡도와 공간복잡도 -> 알고리즘이 효율적인지를 판단하는 척도

시간복잡도

알고리즘을 수행하는 데 연산들이 몇 번 이루어지는 지를 표기한 것 -> 입력을 기준으로 할 때 필요한 연산의 수

공간복잡도

프로그램 실행과 완료에 얼마나 많은 공간(메모리)가 필요한지 -> 고정공간(알고리즘과 무관한 공간), 가변공간(알고리즘과 밀접한 공간)

- 빅오 표기법 : 복잡도를 표기하는 방법 '빅오엔'

2. 스택,큐

스택

차곡차곡 쌓아 올린 형태의 자료구조, 후입선출(LIFO) 구조 -> 한 곳(TOP)을 통해서 삽입, 삭제가 이루어지는 자료구조

시간복잡도 : 삽입/삭제 O(1) - 맨 위에서 이루어지기에 , 검색 O(n) - 특정데이터를 찾을 때까지 수행함으로

줄을 서서 기다리는 것, 선입선출(FIFO) 구조 -> 한쪽 끝에서는 삽입 작업, 한쪽 끝에서는 삭제 작업만 이루어지는 자료구조

시간 복잡도 : 삽입/삭제 O(1) - 삽입은 front에서만 삭제는 rear에서만 이루어져서 , 검색 O(n) - 특정데이터를 찾을 때까지 수행함으로

3. 배열, 링크드리스트

배열

입력된 데이터들이 메모리 공간에서 연속적으로 저장되어 있는 자료구조 -> Index를 통한 접근이 용이하다.

시간복잡도 : 검색: O(1)-원하는 인덱스를 알 때, 순차검색: O(n) 삽입/삭제 : 배열 처음, 중간 O(n), 배열의 끝 O(n)

링크드리스트

여러 개의 노드들이 순차적으로 연결된 형태를 갖는 자료구조 

시간복잡도 : 검색 O(n), 삽입, 삭제 처음: O(1) , 중간과 끝에는 탐색시간으로 O(n)이 추가로 발생한다.

둘의 비교

배열 : index를 통한 빠른 접근, 삽입/삭제가 오래 걸림

링크드리스트 : 처음부터 탐색을 진행해야 함, 삽입. 삭제가 용이하다.

반응형

'취업전 끄적 > 내가 다시 보기 위한 공부내용' 카테고리의 다른 글

보안  (0) 2023.04.12
배포  (0) 2023.04.12
mongoose  (0) 2023.04.11
Database  (0) 2023.04.10
Web Socket  (0) 2023.04.10

+ Recent posts