목록Development (16)
JS Dev Blog
인증이란? 프론트엔드 관점 : 사용자의 로그인, 회원가입 등 사용자의 도입 부분 서버 관점 : 모든 API 요청에 대해 사용자를 확인하는 작업 인증은 왜 필요할까? 서버에 요청을 보내는 클라이언트는 각각 다른 정보를 가지고 있다. 그리고 이 정보를 보호하기 위해 서버는 요청하는 클라이언트가 누구인지 확인하고 이에 맞는 데이터를 줄 필요성이 있다. 이 과정을 인증이라고 한다. (보안 관점) 다양한 인증 방식들 1. Session 인증 방식 1. 사용자(Client)가 로그인 시도 2. 서버는 DB단에서 사용자 정보 확인, 3. 회원 정보를 담은 세션을 생성해서 세션 저장소에 저장. 4. 세션 ID를 발행 5. 서버는 사용자에게 응답으로 세션 ID를 줌 6. 사용자는 쿠키에 세션 ID를 저장. 데이터를 요청..
pviot(중심축)을 정하고 중심축 보다 작은 값들은 왼쪽으로, 큰 값들은 오른쪽으로 보낸다. 이렇게 재귀적으로 pivot을 정해서 왼쪽 오른쪽을 나눠서 부분 리스트의 합이 전체 리스트가 되게 하는 방법이다. Divde and Conquer 알고리즘에 속한다. big O O(nlogn) const quickSort = function (arr, transform =(item)=> item) { // TODO: 여기에 코드를 작성합니다. if(arr.length
MERN stack은 Javascript 생태계에서 인기 있는 프레임워크인 MongoDB, Express, React Node를 말한다. 이 중에서 Express.js는 Node.js 환경에서 웹 서버, 또는 API 서버를 제작하기 위해 사용되는 인기 있는 프레임워크이다. Express로 구현한 서버가 http 모듈로 작성한 서버와 다른 점 - 미들웨어 추가가 편리하다 - 자체 라우터를 제공한다. Express 설치 및 서버 만들기 공식 문서 링크 : https://expressjs.com/ko/ Express - Node.js 웹 애플리케이션 프레임워크 Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크 $ npm install express --save expressjs.com 순수 node...
삽입정렬은 한 번에 한 항목씩 정렬 된 배열을 작성한다. 시간 복잡도 O(N^2) 장점 안정적인 정렬 알고리즘 배열이 대부분 정렬되어 있는 경우 매우 효율적 단점 배열 안의 요소들의 이동이 많다. 배열이 큰 경우 비효율 적이다. 예제 코드 const insertionSort = function (arr) { // TODO: 여기에 코드를 작성합니다. for ( let i =0; iarr[index]){ let temp = arr[index-1]; arr[index-1] = arr[index]; arr[index]=temp; index--; } } return arr; ..
그래프의 탐색은 하나의 정점에서 시작해서 모든 정점들을 한 번씩 탐색하는 것이 목적이다. 대표적인 방법 BFS, DFS는 데이터를 탐색하는 순서만 다를 뿐, 모든 자료를 하나씩 확인해 본다는 점은 같다. 장단점이 분명하기 떄문에 상황에 맞는 탐색 방법을 사용해야 한다. BFS(Breadth-First Search) 너비우선탐색. 가까운 정점부터 탐색한다. 주로 두 정점 사이의 최단 경로를 찾을 때 사용한다. 만약 경로를 하나씩 전부 방문한다면 최약의 경우에는 모든 경로를 다 살펴봐야 한다. DFS(Depth-Frist Search) 깊이 우선 탐색. 하나의 경로를 끝까지 탐색한 후, 찾는 정점이 없다면 다음 경로로 넘어가 탐색한다. 하나의 경로를 끝까지 들어가서 확인하고 다음으로 넘어가기 때문에 운이 좋..
클로저는 함수와 함수가 선언된 어휘적 환경의 조합이다. function init() { var name = "Mozilla"; // name은 init에 의해 생성된 지역 변수이다. function displayName() { // displayName() 은 내부 함수이며, 클로저다. alert(name); // 부모 함수에서 선언된 변수를 사용한다. } displayName(); } init(); displayName()은 자신만의 지역 변수가 없다. 그런데 함수 내부에서 외부 함수에 변수에 접근할 수 있기 때문에 displayName() 역시 부모 함수 init()에서 선언된 변수 name에 접근할 수 있다. 이는 어휘적 범위 지정(Lexical scoping)의 예이다. 변수가 어디에서 사용 가능..