codestates

    [Server] OAuth 2.0

    코딩 공부하면서 가입해야하는 곳이 정말 많아서 귀찮을 수 있는데, 구글아이디 하나로 모든 것을 가입했습니다. 그래서 굉장히 편리하다고 느끼는데 그것에 관한 기술이 OAuth 2.0 기술입니다. 하지만 여전히 사용자 정보가 내 서버에 저장되는 것은 변함이 없습니다. OAuth는 인증(Authentication)을 다른 서비스에 맡길 뿐, 접근 권한 관리(Authorization)는 순전히 내 서버의 몫입니다. 그러므로, OAuth의 작동 방식을 알기 위해서는 기존 인증 방식에 대한 이해가 필수적입니다. 소셜 로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현됩니다. 전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과는 달리, OAuth는 인증을 중개해주는 메커니즘입니다. 보안된 리소스에 액세스하..

    [Server] 보안 인증 기초 (HTTPS/Hashing/cookie/CSRF)

    보안 기초적인 개념에 대해서 배웠다. 크게보면 굉장히 쉽고 재미있지만 들어가면 들어갈수록 참 복잡하다. 코딩공부를 하면서 뭐든 배울 때 그런 느낌을 많이 받았다. 오늘 배운 내용은 군생활 하면서 한번쯤은 들어본 내용이지만 자세할수록 머리가 아프다. 오늘 이에 관한 과제도 했지만 정리는 양이 많고 어려워 우선 패스해야겠다.. HTTPS (Hyper Text Transfer Protocol Secure Socket layer) HTTP 프로토콜 내용을 암호화 하여 보안성이 추가한 형태로, HTTP 요청을 하면 클라이언트와 서버 사이에서 그대로 볼 수 있었지만, HTTPS는 암호화를 사용하여 보안성을 높임 인증서(Certificate) 데이터 제공자 신원 보장, 도메인 종속 도메인이 같아야만 서버에서 정보를 ..

    Toy 문제 17

    문제 문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다. 다음 단계에 맞춰 함수를 작성해 보세요 괄호의 종류를 단 한가지로 한정합니다. 괄호의 종류를 늘려 모든 종류의 괄호에도 작동하도록 합니다. 괄호를 제외한 문자열이 포함된 경우에도 작동하도록 합니다. 주의사항 괄호의 종류는 (, )만 고려합니다. 괄호는 먼저 열리고((), 열린만큼만 닫혀야()) 합니다. 빈 문자열을 입력받은 경우, true를 리턴해야 합니다. Advanced 모든 종류의 괄호((, ), {, }, [, ])가 포함된 문자열을 입력빋아 모든 괄호의 짝이 맞는지 여부를 리턴해 보세요. 수도코드(해석) 종류가 6개만 있어서 각 종류에 대한 갯수를 세어서 같은지에 대해 확인 할 수 있지만, 어드벤스를 포함한 원..

    Toy 문제 16

    문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 주의사항 퀵 정렬을 구현해야 합니다. arr.sort 사용은 금지됩니다. (갑자기 든 생각이지만 왜 있는 함수를 쓰지 말라는건 왜 일까요.? 난이도를 조금만 올릴려고 그러는걸까요?) 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다. Advanced quickSort 함수의 두 번째 인자로 callback 함수를 받아서, 그 함수의 리턴값을 기준으로 요소들을 정렬해 보세요. 입출력 예시 let output = quickSort([3, 1, 21]); console.log(output); // --> [1, 3, 21] 수도코드(해석) 퀵정렬에 대해서 더보기 하나의 리스트를 피벗(pivot)을 기준으로 두 개의 비균등한 ..

    [DB] NoSQL MongoDB Basic

    NoSQL MongoDB Basic에 대해 공부를 하게 되었는데 거기에대한 배경지식은 이해가 되었지만 MongoDB CRUD 사용하는법, 즉 활용하는것에 대한것은 PPT파일로 보여주고 실습은 없어서 크게 와닿지 않아 감이 없다. 결국 공식문서에 개념을 실행 시키는 것 뿐이고 실습부분은 빠져서 아쉽다.. create, read update, 비교연산자 등 크게 어려운 부분은 아니지만 이 부분은 써야하거나 필요할 상황이 될 때 공부하는 것이 더 효율적이라 생각은 들었다.. 이 내용이 연계되어서 코스 도중에 나오면 힘드려나..? 라는 생각이 들지만 눈에만 익히고 넘어가서 공부가 필요하다 싶으면 그 때 뒤이어 작성 하면서 공부를 해야겠다. NoSQL Database NoSQL 데이터베이스에서는 데이터를 행과 열..

    Toy 문제 15

    문제 다음의 조건을 만족하면서 현재의 비밀번호('curPwd')를 새 비밀번호(newPwd)로 변경하는 데 필요한 최소 동작의 수를 리턴해야 합니다. 한 번에 한 개의 숫자만 변경가능하다. 4자리의 소수(prime)인 비밀번호로만 변경가능하다. 정리하면, 비밀번호가 계속 소수를 유지하도록 숫자 한 개씩을 바꿔갈 때 현재 비밀번호에서 새 비밀번호로 바꾸는 데 최소 몇 개의 숫자를 변경해야 하는지를 리턴해야 합니다. 주의사항 4자리인 소수는 1,000 이상의 소수를 말합니다.(0011, 0997 등은 제외) 입출력 예시 let output = primePassword(1033, 1033); console.log(output); // --> 0 output = primePassword(3733, 8779); ..

    [ORM] Sequelize 사용과제 (Node.js ORM)

    공식문서는 참으로 답답하다 기승전결 없이 기결만 있는 느낌이랄까.. 그냥 몰라서 그런 느낌이 든 것이 확실한것 같고. 조그마한 개념도 없이 읽을려고하니 읽히는게 없는게 당연할지도 모르겠습니다. App -> route -> controller -> model -> DB -> model -> controller (기본적인 흐름) Sequelize 공식 문서에 나온 sequelize라는 프로그램의 정의 Sequelize is a promise-based Node.js ORM for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server. It features solid transaction support, relations, eager and lazy loadi..

    [DB] ORM, MVC에 대해서

    처음 배웠을 때 느낌은 SQL에 겨우 적응해서인지 SQL이 편한데 그냥 쓰면안되나? 라는생각이 들었지만, 과제실습을 진행하면서 왜 이것을 써야하는가에 대해 생각하고 구글링해서 이유를 찾으니 배우는 개념에 대한 이해도 좀 더 잘되고 존재의 편리함을 이해 했다. 역시 아는만큼 보이는건가 싶다. 솔직히 코드스테이츠에서 나온 자료에서 이것을 왜 쓰는지에 대한 설명이 많이 부족하다고 느낀다. 그냥 일단 할 수도 있지만 내 성격은 그런게 안되나 보다.. 그래서 검색을 하고 이유를 알고 나니 한결 나아졌고 그 내용도 더 추가해서 글을 쓰게 되었다. MVC design pattern MVC MVC(Model-View-Controller)로 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한..

    [DB] SQL 정리

    https://www.w3schools.com/sql/default.asp w3schoos 사이트로 기본적인 내용이 전부 있습니다. DATABASE 명령어 설명 CREATE DATABASE database_name 데이터베이스 database_name를 생성 DROP DATABASE database_name 데이터베이스 database_name를 삭제 USE database_name 데이터베이스 database_name를 선택 TABLE 명령어 설명 CREATE TABLE table_name 해당 테이블 table_name을 생성 SHOW TABLES 선택한 데이터 베이스중 모든 테이블을 목록화 하여 보여줌 DESCRIBE table_name DESC table_name 해당 테이블을 보여줌 DESC 줄..

    Toy 문제 14

    문제 부분적으로 오름차순 정렬*된 정수의 배열(rotated)과 정수(target)를 입력받아 target의 인덱스를 리턴해야 합니다. 주의사항 rotated에 중복된 요소는 없습니다. target이 없는 경우, -1을 리턴해야 합니다. Advanced 단순히 처음부터 끝까지 찾아보는 방법(O(N)) 대신 다른 방법(O(logN))을 탐구해 보세요. 수도코드(해석) 삽입정렬 : 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 배열이 길어질수록 효율이 떨어집니다. 이 문제가 가장 원하는 점은 sort 메서드를 사용하지 않고 해당 인자가 몇번째에 위치하는지 구해야 합니다. 절반이 각각 오름차순으로 정렬되어 있기 때..