REST(Representation State Transfer, 자원의 상태 전달) - 웹에 존재하는 모든 자원을 고유이름(URI, Uniform Resource Identifier)으로 구분하여 해당 자원의 상태를 주고받는 모든것 - 자원(Resource - URI), 행위(Verb - HTTP Method), 표현(Representation) - Web Site의 text, image 등과 같은 모든 자원에 고유한 ID(HTTP URI)를 부여 - Json을 통하여 데이터를 주고받는것이 일반적이다. - Web의 기존기술, HTTP를 그대로 활용하는 Architecture - Client ↔ Server 간 통신 방식 중 하나이다. - CURD ▪ Create : 생성(POST) ▪ Read : 조회(..

Greedy - 탐욕스러운, 욕심 많은 그리디 알고리즘은 이름 그대로 선택의 순간이 될때마다 당장 눈앞의 최적의 상황만을 선택하여 최종적인 답에 도달하는 방법이다. 최적의 상황이란? 최적의 상황의 예시를 들어보자 루트노드에서 가장 깊은 레벨의 노드까지의 최대합을 구하는 경로를 구해본다고 생각해보자. 여기서 탐욕스러운 방법을 이용한다면 1부터 시작해서 12보다 큰 23을 선택한다 그리고 36 37 중 더 큰 37을 선택하여 잘못된 값을 선택하게 될것이다. 그래서 실제로 그리디 알고리즘을 활용할 경우는 이러하게 간단히 선택할 수 없다. 그리디 알고리즘으로 문제를 해결하는 방법은 다음과 같다. 선택 : 현재 상태에서 최적의 해답을 고른다. 적절성 검사 : 선택된 해가 문제의 조건을 만족하는지 검사한다. 해답 ..

Redux redux는 인기있었던 전역 상태관리 라이브러리이다. https://kmj24.tistory.com/43 Redux 리덕스 리덕스는 상태(State)를 관리 라이브러리이다. 상태(State) 란? 컴포넌트 내 mutable 데이터 저장소이다. mutable하다는 의미는 상태값을 변경할 수 있다는 것이고 뷰(render)에서 상태를 이용하고, kmj24.tistory.com redux의 주요 규칙을 다시 짚어보자 1. Action 상태에 변화가 필요할 때 action을 발생시켜서 redux에 dispatch 2. Reducer 상태를 변화시키는 함수 reducer는 순수함수이며, state, action 2가지 파라미터를 가지도록 한다. 순수함수 - 이전 상태를 변경하지 않고, 새로운 상태 객체..

이전에 알아본 React reconciliation (heuristic) 알고리즘은 재귀적으로 동작하므로 도중에 멈출수가 없다. 만약 알고리즘 실행 작업이 오래 걸린다면 화면이 끊기는 현상이 발생할것이다. 페이스북에서 이러한 불합리적인 알고리즘을 개선하기위해 2년 넘게 연구한 결과 react v16부터 fiber알고리즘을 도입하였다. Recursion 간단한 재귀호출 함수이다. function recursion(num: number): number { if (num > 10) return number; return recursion(num + 1); } recursion(0); 재귀호출함수가 실행 될 때 Call stack에 차례대로 쌓이게 된다. reconciliation 알고리즘은 재귀 알고리즘으로,..

Smart diffing algorithm 랜더링 되어 사용되고 있는 Real DOM Tree와 React에서 쓰는 in-memory에 있는 Virtual DOM Tree를 비교하는 알고리즘이다. 최소한의 연산으로 수정작업이 요구되는 실제 DOM object를 찾아서 수정 및 변경작업을 한다. 이 알고리즘의 Time Complexity는 O(n)으로써 상당히 빠른편이다. 옛날에 포스팅한 virtual dom에 대한 내용 https://kmj24.tistory.com/124 브라우저, DOM과 Virtual DOM 브라우저는 가장 많이 사용하는 SW프로그램일 것이다. 브라우저의 종류로는 IE, Chrome, Safari, Firefox, Opera, Edge 등이 있다. 브라우저의 기능 우리는 브라우를 통..
매크로 매크로는 다른 코드를 작성하는 코드이다. 이 개념은 메타 프로그래밍으로 잘 알려져 있다. 코드의 내용을 출력해주는 print!와 Vector배열을 정의하는 vec!도 매크로이다. 이 모든 매크로들은 수동으로 코드를 작성하지 않고도 많은 코드를 생산할 수 있다. 메타프로그래밍은 함수와 비슷하게 작성해야 할 코드의 양을 줄여주지만, 함수가 할 수 없는 일도 할 수 있다. 함수 시그니처는 해당 함수가 갖는 parameter와 갯수 타입을 선언해야 하는 반면, 매크로는 parameter의 개수를 가변적으로 처리할 수 있다. // ex println!("hello"); println!("{}", hello); 함수와 매크로의 또다른 차이는, 매크로 정의는 함수와 달리 모듈의 "네임스페이스에 소속되지 않는다..

nodejs는 node.js는 Chrome V8 javascript엔진으로 빌드된 브라우저 밖에서 javascript를 실행하도록 해주는 javascript run time 환경이다. Event Driven, Non-Blocking I/O 모델을 사용하여 가볍고 성능이 뛰어나서 Server side 개발할 때 Nodejs를 많이 선택한다고 한다. PM2 (Nodejs Process Manager) PM2 설치 및 실습 npm 명령어를 통해 global 설치를 진행한다 npm install -g pm2 PM2로 무중단 서비스 제공 만약 어떤 서비스를 배포하여 서비스하고 있다고 하자. 배포된 서비스의 평균 동시접속 유저의 숫자가 5000명이다. 근데 어떠한 이유(처리하지 못한 예외사항)등으로 배포된 프로그램..

Docker란? Container 기반 오픈소스 가상화 플랫폼이다. 다양한 프로그램의 실행환경을 Container로 추상화 하여 동일한 interface로 프로그램의 배포, 관리를 해준다. Container 각각 S/W의 실행환경을 독립적으로 실행하도록 하는 OS수준의 격리 Docker 설치 Docker를 설치하기 앞서 ubuntu를 설치해야 된다. 간편하게 Microsoft Store에서 ubnutu를 검색하여 설치할 수 있다. ubuntu는 20.04 LTS로 설치했다. ubuntu 설치가 완료되면 ubuntu를 실행한다 그러면 계정과 비밀번호를 등록하라고 나오는데 등록해주면 된다. 계정 등록이 완료되면 Docker를 설치하자. 난 window 10을 사용하기 때문에 Docker 사이트에 접속하여 W..