전체 글 73

node.js 에서 Swagger 사용하기 - 기본

Swagger 란? 먼저 위키백과에서는 스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다. 스마트베어 소프트웨어의 후원을 받는 스웨거는 오픈 소스 소프트웨어의 튼실한 후원자이며 널리 채택되고 있다. 라고 말하고 있다. 결국엔 REST API를 설계도 할 수 있고, 빌드하고, 문서화 해서 소비까지 할 수 있는 종합선물 셋트 같은 오픈 소스 소프트웨어 프레임워크이다. 우리는 그 Swagger 를 좀 더 편하고 쉽게 볼 수 있는 Swagger UI..

TIL 2022.06.04

[ Database ] DB 인덱스

인덱스란 인덱스란 데이터베이스 테이블의 대한 검색 성능의 속도를 높여주는 자료구조이다. 마치 책의 목차와도 같은 역활을 한다. 특정 칼럼의 인덱스를 생성하면, 해당 칼럼은 데이터들을 정렬하여 별도의 메모리 저장 공간에 데이터의 물리적 장소의 주소와 함께 저장된 다. 인덱스를 타게 되면 먼저 인덱스에 저장되어 있는 물리적 장소의 주소로 가서 데이터를 조회 후 가져오는 식으로 검색 성능을 향상 시킬 수 있다. 그리고 인덱스는 오름 차순으로 정렬되기 때문에 정렬된 주소 체계라고 표현할 수 있다. 인덱스의 장점 1 . 조건 검색 where 절의 효율성 테이블에 데이터가 점점 쌓이게 될때 테이블의 레코드에 데이터를 어떠한 순서도 없이 뒤죽박죽으로 들어오는 족족 저장하게 된다. 그리고 어떠한 상황에 where를 통..

TIL 2022.04.29

[ DataBase ] Atrribute (속성)

Atrribute 란? - 인스턴스로 관리하고자 의미상 더이상 분리 되지 않는 최소의 데이터 단위로 정의 할 수 있다. Atrribute 의 특징 - 업무에 필요하고 관리되어야 하는 대상 - 하나의 속성엔 하나의 값만 - 다양하게 있는 인스턴스 중에서 식별할 수 있는 주 식별자로 구별 할 수 있어야한다. 엔터티, 인스턴스, 속성, 속성값의 관계 - 한개의 엔터티에는 두개 이상의 인스턴스의 집합 - 한개의 엔터티는 두개 이상의 속성을 지닌다. - 한개의 속성에는 한개 이상의 속성의 값을 가진다. Atrribute 분류 속성 특징에 따른 분류 - 기본 속성 업무 분석을 통해 바로 정의한 속성을 기본속성이라고 부른다. 엔터티에 있어서 가장 일반적이고 많은 속성을 차지한다. 코드성 속성, 엔터티를 식별하기 위해..

TIL 2022.04.21

[DataBase ] Entity

Entity 란?? 간단하게 요약 하자면 - 데이터의 집합 - 개념, 장소, 사건 등을 의미한다. - 무형 또는 유형의 데이터를 의미한다. - 업무상 관리되고 저장되어야 하는 데이터 이다. Entity 의 특징 - 엔터티가 사용되는 곳의 업무에서 필요하며 관리되어야 하는 정보 - 유일한 식별자를 가지고 있어야한다. - 다른 엔터티와 최소 한개 이상의 관계를 가지고 있어야한다. - 2개이상의 인스터스의 조합이어야 한다. - 반드시 속성을 지녀야 한다. 모든 엔터티가 이러한 특징을 가지고 있는 것은 아니나 일반적으로 이러한 특징을 가지고 있지 않다면 잘못된 엔터티일 활률이 높다. Entity 의 분류 1) 유무형의 따른 분류 - 유형 엔터티 물리적인 형태를 지닌 엔터티. 안정적이고 지속적으로 활용이 가능한 ..

TIL 2022.04.19

[기술면접준비] Node.js 란 무엇인가

Node.js Node.js 는 Crome V8 엔지으로 빌드된 Javascript 런타임이다. 특징으로는 넷플릭스와 같이 빈번한 I/O 데이터 처리가 용이 하고, 서버 확장성, 그리고 Javascript 한 언어로 프론트엔드, 백엔드 모두 작성이 가능 하다는 큰 장점을 가지고 있다. Node.js 의 특징에 대해 자세히 알아보자 논 블록킹 I/O 블록킹 I/O 와 논 블록킹 I/O의 차이점 부터 알아보자 먼저 블록킹 I/O 란 CPU의 가장 기본적은 I/O 모델로 리눅스의 모든 소켓 통신은 기본 블록킹으로 동작한다. I/O 작업이 진행 되는 동안 유저 프로세서는 작동하지 않고 I/O 작업이 끝날때 까지 대기하며 기다린다. 이게 블럭킹 I/O 모델이다. 예시 그림을 살펴보자 1. 유저가 커널에게 read..

TIL 2022.04.06

[Git Error] remote: Internal Server Error

개인 프로젝트로 진행중이던 폴더를 Git에 올려놓으려고 했다. 레포를 만들고 리모트를 하고서 git push를 할때 에러가 났다. 그래서 pull 을 한뒤에 다시 push 하고 자 했으나 remote: Internal Server Error 에러가 발생했다. 구글링을 해서 해결방법을 찾아보니 git remote prune origin git gc --auto 순서대로 터미널에 입력하고 서 다시 pull 하면 잘 받아와 진다. 출처 - https://devyongsik.tistory.com/670

Error 2022.03.25

[React] React에서 Typescript 사용하기(1) - React Component를 TypeScript로 작성해보기

먼저 나는 왜 React로 Typescript를 사용하는 지 얘기해보자면.. 개인프로젝트를 진행하려고 하는데 요즘 TypeScript를 사용하는 회사가 많아지는 거 같아 Nest.js 와 TypeScript 를 공부하고 싶어졌고 겸사겸사 개인프로젝트에 적용시켜서 프로젝트와 기술 공부를 한번에 하고 자 했다. 그런데 React를 사용해야 하는데 React에서도 TypeScript 가 사용 가능 할까? 라는 의문감에 구글링을 했고 React 레퍼런스에 Tpyescript 사용법이 나와있어 공부하며 정리 해본다. 1. React Component를 TypeScript로 작성해보기 먼저 React 프로젝트를 생성해본다. npx create-react-app ts-react-tutorial --template t..

TIL 2022.03.25

[node.js] Bcrypt 를 이용한 비밀번호 암호화

Bcrypt란 레인보우 테이블 공격 방지를 위해 Salt(솔트)를 통합한 적응형 함수의 하나이다. 기존 SHA 종류의 암호화가 GPU연상에 유리한 32비트 놀리 및 산술 연산만 사용하기에, 공격자가 빠른 연산으로 공격할 수 있다. 그래서 Bcrypt 설계자들은 이런 문제로 SHA가 아닌 Blowfish*를 이용해 구현하였다.Bcrypt는 키 스트레칭* 를 이용해 좀 더 보안성을 높였다 *Blowfish - 데이터 암호화 표준(DES)과 국제 데이터 암호화 알고리듬(IDEA)을 대신하여 사용되는 암호화 알고리듬. 키의 길이가 32~448비트인 가변 길이 키를 사용하는 비밀 키 블록 암호이다. * 키 스트레칭 - 해쉬 함수를 통해 나온 다이제스트를 다시 해쉬 함수에 넣어 다이제스트 하는 방법. Bcrypt ..

TIL 2022.03.18

코드스테이츠 수료

2021.06.14일 시작한 첫 수업 나름 생활코딩을 통해 선행학습 해왔다고 자부하면서 호기롭게 시작한 부트캠프 가면 갈 수록 처참하게 깨지는 나의 멘탈. 첫 HA때 느낀 좌절감 깨져가는 멘탈 섹션마다 느껴지는 학습의 벽.. 매번 구글링을 하면서 늘어가는 독해력.. 그리고 구글링 실력.. 장장 9개월을 함께한 코드스테이츠... 한번에 통과 못한 HA 덕에 3개월이 연장 되면서 수료도 이제야 하게 되었다. 첫 시작은 32기였는데 어느새 35기가 되어버렸다. 포기 하고 싶기도 했다. 재능이 없는거 같았다. 맞다 아직도 재능이 있다고 말 할 수는 없을거 같다. 그렇지만 나에대해 하나 알게된 점은 실패에도 좌절함에도 도전하고 포기하지 않는 끈기력인거 같다. 파이널 프로젝트가 끝나고 난뒤 JOB 서칭을 하며 와 ..

CodeState 2022.03.17

Final Project 회고록

길다면 길고 짧다면 짧은 4주간의 final project 가 끝이 났다. 이번에도 팀장이라는 직함을 달고 시작했지만 팀장으로써 역활을 다 하진 못한거 같다. 중간에 오미크론 바이러스가 내 가족 주변에 여기저기 터지며 나 또한 그 영향을 받기도 했다. PCR 검사를 받고 집에만 있어야 했고 공부하던 장소도 코로나로 인해 문을 닫아 스터디 카페나 카페를 돌아다니며 작업을 해야만 했다. 집에서는 도저히 능률이 오르지 않아 밖으로 나가서 작업을 했다. 이번 프로젝트에서도 난 Back-end 포지션을 맡았다. 사실 Front-end가 해보고 싶었으나 지원자가 많아 한발짝 물러나 양보를 했다. 이번 프로젝트의 이름은 HoloSulo 라는 프로젝트다. 혼술을 하는 사람들이 외롭지 않게 음악을 들려주고 술을 마시고 ..

CodeState 2022.03.08