전체 글

하루 한권 책으로 떠나는 개발여행
· MySQL
MySQL scheduled event 들어가며 프로젝트를 진행하던 중.... 비밀번호 찾기의 로직을 구현 중에 어떻게 해야 안전하게 비밀번호를 변경할 수 있을까 고민이 들게 되었다. 그래서 처음에는 static 변수에 선언해서 구현을 하는 도중.. 다른 사용자가 비밀번호 찾기 기능을 사용한다고 하면 이전사용자의 정보는 바뀌게 되어 사용할 수 없는 치명적인 오류가 발생하는 것이었다. 그래서 현재 프로젝트에서는 NoSQL을 사용하고 있지 않아서 MySQL에서 지원하는 event를 사용을 하도록 했다. 이번 포스팅에서는 어떻게 event를 사용하는지 알아보도록 하자 MySQL scheduled event란 MySQL에서의 이벤트는 일정한 주기나 특정한 시간에 자동으로 쿼리를 실행해주는 작업이라고 할 수 있습..
· 오류관련
Controller의 테스트가 안 되는 오류 오류 발생 팀 프로젝트를 진행하던 도중 JWT + Security를 사용해서 진행하고 있었다. 그 후에 컨트롤러단의 단위테스트를 진행하려고 했는데 @WebMvcTest를 통해서 해당 컨트롤러를 지정해 시작했지만... 다음과 같은 오류가 발생했습니다. Caused by 의 내용을 해석해 보면 securityConfig 파일에서 두 번째 빈인 JwtProvider을 찾아올 수 없다면서 해당오류가 발생했습니다.. 원인 파악 그럼 왜 이문제가 발생했을까 생각해 보니 현재 사용 중인 @WebMvcTest의 어노테이션읜 웹 계층만 단독적으로 사용하기 위해서 사용하기 때문에 @Configuration,@Serivce, @Repository 등의 스프링 컨테이너의 등록한 빈..
· 오류관련
오류발생 Ec2 서버에서 Jenkins를 사용해 ci/cd를 구축하던 도중에 다음과 같은 오류가 발생했다. 해당 오류의 내용은 마스터 노트에서 스케쥴링 및 빌드를 해주고 있는데 /tmp 디렉터리의 저장공간이 1.0 GiB 이상필요하지만 현재 626.12 MiB가 사용 중이기 때문에 마스터 노드가 사용할 수 없다고 오류가 발생하게 되면서 자동빌드를 할 수 없는 상항이 발생하게 되었습니다. 해결방법 해결 방법 1 노드의 알림 임계 값을 설정... 해당 필드의 값 들을 500Mib로 설정 하지만 당연히 실패 생각해보면 메모리가 부족하다고 경고가 뜬 거인데 메모리를 임계값을 설정해 봤자 당연히 오류가 뜨는 건 당연하다.. 왜 이 생각을 못했을까....... 실패.. 해결 방법 2 도커를 통해서 젠킨스를 실행중이..
덱 알고리즘을 이해하고 덱알고리즘을 사용한 문제를 풀어보자. 덱 알고리즘이란? 덱 알고리즘은 큐 알고리즘을 변형한 자료구조입니다. 큐알고리즘은 Front에서는 데이터를 꺼낼 수만 있고 Rear은 데이터를 삽입만 가능합니다. 하지만 덱은 Front와 Rear모두 데이터를 삽입, 추출이 가능한 알고리즘입니다. 다음은 데큐에서 Fornt와 Rear에서 인큐 데큐가 동작하는 예시입니다. 문제풀이 데큐또한 자바에서 지원하는 메서드가 존재합니다. 하지만 이번 풀이에서도 예시를 든 문제이기 때문에 직접 데큐 알고리즘을 작성해 해당 문제를 풀어보도록 하겠습니다. 문제에서 보면 총 8개의 데큐 메소드를 만들어야 하는 것을 볼 수 있습니다. 문제풀이방법 해당 문제도 간단하게 해결할 수 있습니다. 큐에서 사용한 놀리적인 위..
큐의 동작방식을 알아보고 문제를 풀어보자! 들어가며 큐의 개념과 기본적인 사용법을 알아보고, 백준의 문제를 통해 한번 풀어보도록 하겠습니다. 큐(Queue)란? 큐는 FIFO(First-in First-Out)의 원칙을 따르는 자료구조입니다. LIFO를 사용하는 스택과는 달리 큐는 먼저 들어간 데이터부터 먼저 꺼내는 특징을 가지고 있습니다. 큐에서 데이터를 넣을 때는 en-queue라고하며 데이터를 꺼낼 때에는 dequeue라고 부릅니다. 이제 {1,3,21}을 큐를 이용해 입출력을 한번 해보겠습니다. 위와 같이 먼저 들어온 데이터부터 출력되는 것을 볼 수 있습니다. 하지만 이와 같이 큐를 사용하게 된다면 1을 디큐 했을 때 배열[1], 배열[2]의 값을 한 칸식 앞으로 이동해야 하는 문제점이 생깁니다...
JWT토큰을 사용해서 로그인을 간단하게 구현해 보자! 들어가며 이전 포스팅까지 JWT토큰의 대해서 이론적으로 설명했습니다. 이번 포스팅에서는 이론적인 부분은 설명하지 않고 코드로만 JWT토큰을 사용해 간단하게 로그인 기능을 구현해 보도록 하겠습니다. 만약 이론적은 부분이 궁금하시다면 이전 포스팅을 참고해 주시면 감사하겠습니다. JWT(JSON Web Token) 토큰 [1] JWT(JSON Web Token) 토큰 [2] 프로젝트환경 springboot -version : 2.7.18 java -version : 17 DB : Mysql_8.0.33 IDE : IntelliJ _Ultimate 기본적인 SpringBoot, SpringSecurity, MySQL등과 같은 지식이 있다는 전재로 설명하도록 ..
스택이란? 들어가며 데이터를 일시적으로 보관하는 자료구조인 스택에 대해서 알아보도록 하겠습니다. 스택 이란? 스택은 자료를 일시적으로 보관해 두는 자료구조로써 후입선출(LIFO: Last In First Out)을 통해서 데이터를 일시적으로 보관합니다. LIFO는 영문자 그대로 나중에 들어간 데이터부터 가장 먼저 꺼내는 방법입니다. 스택에서는 데이터를 넣을때는 PUSH라고 부르며, 데이터를 꺼낼 때는 POP라고 부릅니다. 위그림과 같이 푸쉬와 팝과정을 나타내고 있다. psuh를 할 때에는 데이터를 차곡차곡 쌓아가다가 pop을 하면 제일 최근에 들어온 45 값을 pop며 LIFO 과정을 거치는 자료구조라고 볼 수 있다. 알고리즘 예제 알고리즘예제에는 백준의 28278번을 보고 풀어볼 예정입니다. 자바에서는..
JWT토큰이란? 들어가며 이전 포스팅에서는 JWT 토큰이 만들어지기 전에 왜 필요한지 간단히 살펴보았습니다. 이번 포스팅에서는 JWT가 무엇인지와 함께 JWT가 보안을 유지하는 데 어떤 알고리즘을 사용하는지에 대해 알아보겠습니다. 이전 포스팅을 한번 읽어보고 오시는 걸 추천드립니다. "JWT-등장배경" JWT JWT(JSON 웹 토큰) 는 당사자 간에 정보를 JSON 개체로 안전하게 전송하기 위한 간결하고 독립적인 방법을 정의하는 개방형 표준( RFC 7519 )입니다. 이 정보는 디지털 서명이 되어 있으므로 확인하고 신뢰할 수 있습니다. JWT는 비밀( HMAC 알고리즘 사용) 또는 RSA 또는 ECDSA를 사용하는 공개/개인 키 쌍을 사용하여 서명할 수 있습니다. JWT를 암호화하여 무결성을 증명하고..
코드기록사
A steady developer