본문 바로가기

전체 글43

[UMC 1기] 클라이언트, 서버, 서버의 구조, 웹서버와 WAS, 운영체제 Week1 2021.09.25 ~ 2021.10.02. 1. 클라이언트 - 서버 관계 & 서버의 구조 & 서버의 동작 방식과 순서 실생활에서의 예시 ex) 레스토랑, 손님 - 웨이터 - 요리사 - 냉장고 손님이 음식을 주문 웨이터가 주문을 접수, 전달 요리사가 전달받은 주문을 요리 필요한 재료가 있다면 냉장고에서 꺼내서 사용 요리사 - 웨이터 순으로 음식 전달 CS관점 client가 server에 request를 전달 server는 해당 request를 전달받은 후 back-end language로 전달 back-end language는 데이터를 적절히 가공 필요한 데이터가 있다면 database로부터 필요한 정보 가져오기 back-end language - server 순으로 response 전달 2... 2021. 9. 29.
[사용자 인증] 인증과 인가의 차이점, 세션과 토큰의 차이점 인증은 영어로 Authentication이며, 직관적으로 ‘로그인’을 떠올리면 된다. 특정 서비스에 일정 권한이 주어진 사용자임을 증명 받는 것이 ‘인증’이며, 말을 달리하여 ‘식별 가능한 정보로 서비스에 등록된 사용자의 신원을 입증하는 과정’을 ‘인증’이라고 한다. 인가는 영어로 Authorization이며, ‘인증’을 통해 확인을 받은 사용자가 이후 서비스의 여러 기능들을 사용할 때 내가 로그인이 되어있음을 알아보고 활동을 허가해주는 것, 즉 ‘인증된 사용자에 대한 자원 접근 권한 확인’을 의미한다. 인가가 필요한 활동의 예시로는 SNS에서 친구 목록을 보거나, 새로운 글을 작성하거나, 글에 좋아요/댓글을 달거나 하는 등 현재 내가 어떠한 권한을 가진 상태에서만 서버에 요청 가능한 활동들이 인가가 필.. 2021. 9. 6.
[백준 BOJ] 1992 : 쿼드 트리 (C++) https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 아이디어 흐름 1. 아이디어 구상 백준 1074번 Z 문제를 살펴본 후 이 문제를 접하여 분할정복 + 재귀를 이용하는 문제라는 것은 바로 직감이 왔다. 바킹독님 알고리즘 강의에서 본 풀이 순서를 그대로 따르려고 노력했다 함수의 정의 : func(int y, int x, int n), 어떠한 조건에 따라 분할을 하게될지는 모르지만, 좌표를 나타내는 y, x 와 분할한 정사각형의 크기인 .. 2021. 8. 16.
[백준 BOJ] 1074 : Z (C++) https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 www.acmicpc.net 어떻게 보면 그냥 구현이라고 볼 수 있을 것 같은데, 그래도 이 문제 같이 재귀가 핵심 아이디어인 문제들은 조금 다른 느낌이 있어서 재귀 카테고리로 따로 모은다 #include using namespace std; int func(int n, int r, int c) { // base condition if (n == 0) return 0; // 0, 1, 2, 3 section 중 어디에.. 2021. 8. 16.
[백준 BOJ] 4963 : 섬의 개수 (C++) https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 아이디어 흐름 1. 아이디어 구상 1. 해당 위치에서 주변으로 뻗어나가는 탐색이 필요 => DFS, BFS 모두 가능할 것 같다. 2. 가로, 세로, 대각선 모두 연결을 확인해야 하므로 탐색은 dx = { 1, 1, 0, -1, -1, -1, 0, 1 } dy = { 0, 1, 1, 1, 0, -1, -1, -1 } dx[i], dy[i] 인덱스를 이동시키는 방식으로 상하좌우 대각선 탐색 (.. 2021. 8. 14.
[Node.js] error handling, custom error message 등 팀프로젝트 중 사용자 인증, 허가 부분 백엔드 부분을 작성하게 되었는데, 비정상적인 입력 등 뭔가 예외적인 사항들을 프론트에서 처리하는 것인지 백엔드에서 처리하는 것인지 잘 몰라서 예외처리 부분을 알아보던 중, mongoose validation이라는 항목을 발견했다. 예외처리로 의미없는 false를 그냥 보내는 것보다는, 백엔드에서 뭐가 왜 잘못되었는지 메시지를 찍어서 json으로 보내주는 게 프론트분 입장에서도 편하실 것 같다는 생각이 들어 내가 작성하기로 했고, mongoose의 built in validator를 이용해서 cusmtom error message를 작성한 후 해당 message를 출력하는 error handling 방법에 대해 알아보았다. https://mongoosejs.com/d.. 2021. 8. 12.
[백준 BOJ] 1260 : DFS와 BFS(C++) https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net #include #include #include #include using namespace std; bool visited[1001]; vector graph[1001]; // 1. 방문처리 // 2. 현재 노드 출력 // 3. 현재 노드의 인접 노드 개수만큼 반복문 실행 // 4. 반복문에 의한 인접 노드가 방문되지 않았다면 dfs 재귀호출 void dfs.. 2021. 8. 10.
[백준 BOJ] 6588 : 골드바흐의 추측(C++) https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net 아이디어 흐름 1. 아이디어 구상 소수에 대한 문제가 크게 특정 범위 안의 소수를 알아야하는 경우, 해당 수가 소수인지 판별하는 경우 이렇게 두 가지가 있다고 생각하는데, 해당 문제는 1,000,000 까지의 소수를 알아야했으므로 에라토스테네스의 체를 이용하기로 했다. 또한 그렇게 소수를 판별하고, 소수만을 따로 모은 prime_arr 를 만들어서 int tmp = num .. 2021. 8. 5.
[JavaScript] 자바스크립트 동작 원리와 비동기 처리 방식 1. 브라우저가 자바스크립트를 실행하는 방식 자바스크립트는 단일 쓰레드 (single-thread) 방식으로 동작한다. 단일 쓰레드로 동작한다는 것은 하나의 작업만을 처리할 수 있다는 것을 의미한다. 하지만 우리가 웹 애플리케이션을 사용하다보면 동시에 여러 작업이 이뤄지는 것 같은 느낌을 받는데, 이렇게 자바스크립트의 동시성을 지원하는 것이 바로 이벤트 루프이다. 뭔가 아래 사진에서부터 처음보는 게 한가득이지만, 하나하나 어떤 역할인지 알아보고자 한다. 위 이미지에서 자바스크립트 엔진은 살구색으로 칠해진 저 두 부분만을 의미한다. 구글의 V8엔진을 비롯한 대부분의 자바스크립트 엔진은 크게 2개의 영역으로 나뉜다. Call Stack (호출 스택) 함수가 호출되면 호출된 함수는 call stack에 순차적.. 2021. 8. 3.