일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- spring boot
- python
- @Component
- git
- 코테
- 구조체배열
- @Autowired
- C언어
- C++
- 스프링
- nestjs typeorm
- 카카오
- 코딩테스트
- 컴포넌트스캔
- TypeORM
- Spring
- AWS
- 파이썬
- nestjs auth
- 시스템호출
- thymeleaf
- 카카오 코테
- 프로그래머스
- Nodejs
- 해시
- 카카오 알고리즘
- OpenCV
- 알고리즘
- 가상면접사례로배우는대규모시스템설계기초
- nestJS
- Today
- Total
목록전체 (333)
공부 기록장 💻
이전 글에서 Nest JS 프레임워크 상에서 email(primary column)과 password(column) 두 필드를 이용해 user DTO를 생성하고, 회원가입 기능을 구현해 보았다. 이번에는 로그인 기능을 구현해보도록 하자. Auth Service auth.service.ts 에 다음과 같이 validateUser 함수를 추가로 작성하여 로그인하는 서비스를 등록하자. 먼저 userService의 findByFields 메소드가 email을 기준으로 데이터를 탐색하게 된다. 요청된 email과 동일한 email을 가진 데이터가 없거나, 탐색한 email을 가지느 유저의 password가 요청으로 들어온 password와 다른 경우 UnauthroizedException() 예외 처리를 하게 된..
아래는 https://typeorm.io/ 을 바탕으로, 공부하고 개발하는데 필요하다고 생각하는 일부분을 번역해보았다. TypeORM이란? TypeORM은 NodeJS, Browser, React Native, NativeScript 등의 플랫폼에서 실행되며, TypeScript와 JavaScript (ES5~ES8) 언어로 사용될 수 있는 ORM이다. ORM (Object-relational mapping) 이란, 객체지향 언어 (OOP) 의 객체 모델과 데이터베이스의 데이터 타입(테이블-칼럼)의 관계를 정의하고 매핑해주는 프로그래밍 기술을 의미한다. TypeORM의 목적은 최신 버전의 Javascript를 지원하며, 적은 개수의 테이블을 포함하는 작은 앱부터 다수의 데이터베으스들을 포함하는 대규모 기..
NodeJS 프레임워크인 NestJS에서 User Authentication 중 회원가입 기능 구현을 해보도록 하자. 우선 다음과 같이 nest를 위한 typeorm 모듈을 설치하도록 하자. $ npm i --save @nestjs/typeorm typeorm TypeORM에 대한 자세한 설명은 https://dream-and-develop.tistory.com/198 https://www.npmjs.com/package/@nestjs/typeorm (공식문서) 를 참고하자. 다음으로, auth 모듈, 컨트롤러, 서비스를 생성해준다. $ nest g module auth $ nest g controller auth $ nest g service auth User Entity 이후, auth 폴더 내에 e..
어떠한 사이트에 한 번 로그인을 하고 나면 사이트 내 여러 페이지들을 접속할 때 로그인이 유지되거나 혹은 ID, PW를 저장해두어 며칠 뒤 재 접속을 하더라도 다시 입력하지 않고 자동 로그인 되는 경우가 있다. 반대로 몇 분 정도 해당 사이트를 이용하지 않았는데 세션이 만료되었다는 페이지가 뜨며 로그인을 다시 해야하는 경우가 발생하기도 한다. 이는 사용자의 브라우저에 사용자의 정보를 저장하는 인증 방식인 세션, 쿠키의 개념과 관련이 되어 있다. 먼저 HTTP의 특성을 되짚어본 후에 세션과 쿠키가 무엇인지 살펴보자. HTTP의 특성 HTTP는 인터넷 상에서 데이터를 주고 받기 위한 서버-클라이언트 모델을 따르는 프로토콜이다. 클라이언트가 서버에게 요청(request)을 보내면 서버는 응답(response)..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
** 목표: 세션 방식의 기존 인증 방법과 토큰 인증 방법의 차이를 이해하고, 토큰 인증 방법의 하나인 JWT의 개념과 동작 원리, 장점에 대해 공부한 후, NestJS 프레임워크에서 JWT 인증 기능을 구현해보자 ! JWT의 기본 개념 - JWT란, Json Web Token의 약자로, 모바일이나 웹의 사용자 인증을 위해 사용되는 전자 서명된 URL-safe (URL로 이용할 수 있으며 문자로만 구성된) 암호화된 토큰을 의미한다. - 정보를 json 형태로 주고받기 위해 표준 규약에 따라 생성한 암호화된 토큰으로, 복잡하고 읽기 어려운 string 형태로 저장되어 있다. - 일반적으로 클라이언트와 서버 사이에서 통신할 때 권한(인증)을 위해 사용하는 토큰이며, JWT 정보를 request에 담아 권한이..
4. leetcode 64 minimum path sum 64. Minimum Path Sum Minimum Path Sum - LeetCode [Minimum Path Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com](https://leetcode.com/problems/minimum-path-sum/) 문제 Given a m x n grid filled with non-negative numbers, find a path from top left t..
BOJ 11726 2xn 타일링 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 예제 입력 1 2 예제 출력 1 2 예제 입력 2 9 예제 출력 2 55 💡나의 문제 풀이 문제 해결 아이디어 세로를 기준으로 다음과 같이 나타낼 수 있다. n=1 [1,2] 1개→ 1 n=2 [2,2] 2개→ 11 (가로1 2개) / 2 (가로 2 2개) n=3 [3,2] 3개 → 111 (가로1 3개) / 1 2 (가로1 1개, 가로2 2개)..
8. 프로그래머스 N으로 표현하기 코딩테스트 연습 - N으로 표현 문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5)12 = 55 / 5 + 5 / 512 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 ret..
9. BOJ 2110 공유기 설치 문제 2110번: 공유기 설치 문제 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오. 입력 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에..
8. BOJ 1654 랜선 자르기 문제 1654번: 랜선 자르기 문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정..
5. BOJ 2512 예산 문제 2512번: 예산 문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 예를 들어, 전체 국가예산이 485이고 4개 지방의 예산요청이 각각 120, 110, 140, 150이라고 하자. 이 경우, 상한액을 127..
7. BOJ 10989 수 정렬하기 3 10989번: 수 정렬하기 3 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 10 5 2 3 1 4 2 3 5 1 7 예제 출력 1 1 1 2 2 3 3 4 5 5 7 💡나의 문제 풀이 작성 코드 import sys n = int(sys.stdin.readline()) array = [int(sys.stdin.readline()) for _ in range(n)] ..
6. BOJ 2108 통계학 2108번: 통계학 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력..
4. 프로그래머스 가장 큰 수 문제 코딩테스트 연습 - 가장 큰 수 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 ret..
6. BOJ 2606 바이러스 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이..
5. BOJ 4673 셀프 넘버 4673번: 셀프 넘버 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 1..
13. BOJ 1931 회의실 배정 https://www.acmicpc.net/problem/1931 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작 시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백..
8. BOJ 10610 30 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. 예제 입력 1 30 예제 출력 1 30 예제 입력 2 102 예제 출력 2 210 예제 입력 3 2931 예제 출력 3 -1 예제 입력 4 80875542 예제 출력 4 887554..