개발을 처음 시작할 때 Homebrew를 설치하는데 1시간이 넘게 걸렸던 기억이 있다 당장 필요하지 않지만 나중을 위해 기록 MacOS (M1) 1. homebrew package manger 설치 설치 과정 중 macOs 계정과 비번을 물어봄 2. 설치 완료시 뜨는 안내 메시지 3. 경로 설정 4. 설치 확인 5. 버전 확인 NVM(Node ...
Node.js module system module == 레고 조각 여러 모듈을 조합하여 하나의 소프트웨어 만듦 코드를 잘 모듈화 함 유지보수 쉬움 재사용성 높임 확장성 높임 => 결과적으로, 비용 감소 & 생산성 증대 모듈의 종류 Built-in module : 기본적으로 내장되어 있는 모듈 Custom module : Node.js CommonJS...
1. HTTP server 객체 생성 (1) http 모듈을 require()로 불러오기 (2) createServer는 두가지 파라미터를 선택적으로 받는다 > createServer([options], requestListener) options : 클라이언트와 얼만큼 연결을 유지할 것인가 결정하는 keepAliveTimeout 옵션 등 reques...
Endpoint : API 서버가 제공하는 통신 채널 혹은 접점 클라이언트가 백엔드 API 서버와 통신 할 때, 엔드포인트에 접속하는 형태로 통신 각 엔드포인트는 고유의 URL 주소를 가짐, 이 주소를 통해 해당 엔드포인트에 요청 보내기 가능 /ping endpoint 구현 (1) 코드 request 객체에서 url와 http_method 정보를 추출하...
nodemon Node에서는 코드에서 수정이 일어났을 때, 코드 수정 사항이 서버에 자동으로 반영되지 않음 **코드 수정하고나면 서버를 계속 다시 켜줘야 함.. 이를 해결하기 위해 nodemon 이라는 패키지 이용** -g 를 통해 global 변수로 nodemon을 설치할 수 있음 이는 CLI 에서 실행 가능하고, 프로젝트 전역에 걸쳐서 재사용 가능 =...
ORM Object-relational mapping 객체지향 프로그래밍(Object-Oriented-Programming)과 관계형 데이터베이스(Relational-Database)사이의 호환되지 않는 데이터를 변환하는 기술 > ORM은 이렇게 서로 다른 객체와 관계형 데이터 시스템(RDBMS)을 연결해주는 중간 매개체 TypeORM은 ORM 서비스 중...
req - 요청 객체 (Request) Request 객체에 존재하는 다양한 메소드 req.params : 이름 요청시 넘겨져 온 path 파라미터 담음 req.query : GET 방식으로 넘어오는 query string 파라미터 담음 req.body : POST 방식으로 넘어오는 파라미터 담음 req.headers : HTTP의 Header 정보...
1. 데이터베이스 테이블 생성 2. CRUD API작성 create / read / update / delete 1) 정보 생성 엔드포인트 구현 (POST) (1) /books 의도한 자원이 '책', path 매개변수 자리이기 때문에 (2) const { title, description, coverImage} = req.body req, res 객...
Bcrypt 비밀번호 암호화 (1) bcyrpt module import (2) 암호화 할 평문 (3) Cost Factor (4) hash() method로 암호화 첫번째 인자 - 암호화하고 싶은 평문 두번째 인자 - Cost Factor Bcrypt 검증 (1) compare() method로 평문과 암호화 된 값 비교 첫번째 인자 - 평문 ...
1. Error Handling 사용자가 서비스를 이용하는 동안 발생할 수 있는 에러를 미리 사전에 예측하고 알려서, 이용자의 사용 흐름이 막히지 않도록 유도해야 한다 1) 에러 핸들링(Error Handling) 컴퓨터가 내는 에러 2) 예외 핸들링(Exception Handling) 개발자가 의도적으로 발생시키는 에러 언어가 실행되는 과정에는 문제가...
1. Throw 동기함수에서 에러 던지기 someParam이 특정한 값을 가지고 있지 않으면 throw error 비동기함수에서 에러 던지기 동기함수와 에러를 던지는 건 같음 하지만, 비동기함수의 throw는 Promise Rejection 발생시키기 때문에 에러를 잡아내는 곳에선 다른 방식 이용 이러한 비동기식 에러를 해결하기 위해 await을 사...
지금까지 서버 가동에 필요한 모든 코드를 app.js에 포함했다면, 이제는 app.js와 server.js로 분리하여 관리한다 app.js router, middleware 관련 코드만 남겨두고 app을 리턴하는 createApp 함수 생성 server.js app은 app.js에서 만들어 놓은 createApp 함수 활용 AppDataSource.in...
가상화 이전의 운영방식 하나의 컴퓨터 - 하나의 OS 이렇게 운영할 경우, 해당 OS가 컴퓨터의 모든 자원을 full로 사용하기 어렵기 때문에 idle(유휴)상태로 낭비될 수 있음 *idle, 유휴상태 : 어떤 프로그램에 의해서 사용되지 않는 상태 > **낭비되는 서버 자원을 사용하기 위해서 & 인프라 확장을 쉽게 하기 위해 => 하이퍼바이저 가상화 기술...
_Docker 컨테이너 가상화 기술을 기반으로 하는 오픈소스 플랫폼 _ 1. Docker의 구조 Docker의 엔진 = Client-Server Architecture > 클라이언트가 명령어를 서버에 전달, 서버가 전달받은 명령어 실행 (1) 클라이언트, Client 사용자가 Docker 오브젝트를 관리하기 위해 사용하는 가장 근본적인 수단 CL...
1. 컨테이너, 이미지 출력 실행 중인 컨테이너 리스트 출력 실행 종료된 것을 포함하여 모든 컨테이너 리스트 출력 생성 혹은 다운로드 된 이미지 리스트 출력 2. 컨테이너, 이미지 삭제 모든 컨테이너 삭제 모든 이미지 삭제 이미지 빌드(생성) - M1 컨테이너 실행 백그라운드에서 컨테이너 실행 실행 중인 컨테이너에 쉘(shell) 접속 -...