분류 전체보기 22

세션 로그인 VS JWT 로그인

최근 스프링 시큐리티를 제대로 알고 구현하고 싶어서 유데미에서 관련한 강의를 듣고 있다.싸피 프로젝트를 하면서는 막연하게 JWT를 팀원들이 쓰자고 해서 썼기 때문에, 이번 기회를 통해서 왜 JWT를 많이 쓰는지에 대해 알아보고자 한다.   인증&인가 과정에서의 토큰의 역할토큰의 형태UUID(범용 고유 식별자) 형식의 일반 문자열JWT(Json Web Token)일반적으로 로그인 중 사용자가 처음 인증할 때 생성됨CSRF 토큰CSRF 공격으로부터 애플리케이션 보호JSESSIONIDSpring Security에서 기본적으로 생성해주는 토큰으로, 매번 백엔드에 자격 증명을 공유하지 않도록 도와줌. 토큰의 작동 과정제한된 리소스에 대한 모든 요청에서 클라이언트는 쿼리 문자열 또는 Authorization 헤더에..

CS 2024.08.24

[Java Springboot] gradle 종속성 인식 오류 케이스 정리

김영한의 스프링 핵심 원리 - 고급편 강의 파일을 상당히 오랜만에 켰다.그런데, 잘 작동하던 파일이 아래와 같이 오류가 뜬 것이다.   인텔리제이를 켜서 오류를 확인해보니 위와 같은 소리가 나온다. 분명 잘 됐단 말이지?  그래서 위의 Add 'spring-boot-starter-web' to classpath를 클릭하니까왜 갑자기 Maven Repository에서 라이브러리를 다운받아야 한다고 뜨는 것이다. 참고로 빌드 시 gradle로 빌드했고, dependencies를 봐도 잘 설정되어 있었다.  그래서 일단 gradle를 다시 새로고침을 눌러 주었더니, 멀쩡하게 잘 된다.사실 맞왜틀?도 아니고 틀왜맞?같은 상황인데... 왜 그런지는 모르겠다... 싶어서 구글링을 통해서 찾아보았다. 내 경우는, 인..

Backend 2024.08.13

[Java] StringBuilder vs System.out.println() 성능 비교

메인 언어로 파이썬을 쓰지만코테는 파이썬이 최고, 자바만 됐던 코테또토에버를 경험하고 나서는 자바로도 코테 연습을 조금씩 하고 있습니다.사실 StringBuilder를 생활화 하라는 이야기를 듣기만 했지, 아직까지는 sout이 편해서 System.out.println()을 도배하면서 썼습니다. 그러나, 최근 풀었던 문제에서 sout로 도배했더니 시간초과가 났습니다. 코드는 아래에 첨부하겠습니다.   풀이한 문제https://www.acmicpc.net/problem/15651 시간초과 난 코드import java.util.*;import java.io.*;public class Main { static int result[]; public static void main(String[] args..

Language/Java 2024.08.06

[Java Springboot] 이메일 API 테스트 코드 만들기(시행착오 중)

2024.07.23 - [Backend] - [Java Springboot] 이메일 발송 API 코드 리팩토링개요SSAFY 자율프로젝트에서 이메일 발송 API를 제작했는데, 이전 글에서도 언급했다시피 코드를 작업하면서 별 문제가 발생하지 않았다. 정말 다행이다 SSAFY에서 프로젝트를 진행해 봤으면 알겠지만 기능 구현만 하기도 매우 벅찬 시간이라 테스트코드? 코드리뷰? 이런건 정말 사치다. 그래서 당시에는 테스트코드를 짜볼 생각조차도 들지 않았는데, 싸피가 끝났고 부족한 부분을 하나씩 채우는 과정에서 테스트코드를 짜보려고 한다.   이메일 테스트코드를 짜는 여러 가지 방법지금은 지워진 글인데, 해당 글을 보니 이메일 테스트 할 때 실제로 이메일이 발송되는 경우가 있어서 Mockito를 이용해서 테스트를 ..

Backend 2024.08.03

[Java Springboot] 이메일 발송 API 코드 리팩토링

2024.07.12 - [Backend] - [Java Springboot] 이메일 발송 API 만들기 [Java Springboot] 이메일 발송 API 만들기SSAFY에서 프로젝트를 하면서 1:1 문의를 이메일로 받을 수 있게끔 처리했다.그 API를 작업하려고 한다.난이도는 크게 어렵지 않다. 금방 할 수 있는 수준. 사전에 필요한 것(Backend)1. 최소한의 Javamanjyuv.tistory.com 이전 글을 작성하고 나서 제 글을 보셨던 분께서 카톡으로 개선하는 것이 어떻냐는 연락을 주셨다. 사실 개선을 할 생각을 굳이 안 하고 있었는데, 이 채팅방에서 나온 이야기들 + 친구 코드의 도움을 받아서 리팩토링을 시도해 보았다. 내가 작업했던 이메일 발송 API의 경우에는 로그인이 필요없는 항목이..

Backend 2024.07.24

[React.js] 입력창 입력 시 Focus가 풀리는 현상 해결하기

이 문제는 사실 단순한 문제입다. 그러나 프로젝트 당시에는 이해하지 못했던 부분이라서 다시는 이런 실수를 하지 않기 위해 적었습니다.  1. 서론SSAFY 첫 번째 프로젝트를 하던 도중, 한 글자 한 글자 입력할 때마다 focus가 풀리는 현상이 발생하였습니다.당시 수많은 챗 지피티와 구글링을 통해서 해결방안을 찾으려고 애썼지만 찾지 못했습니다... 처음에는 다른 (좀 더 친분이 있는) 백엔드 전문 코치님께 여쭤봤는데, 다른 캠퍼스 코치님이다 보니 본인 반 프로젝트를 신경쓰는데 바쁘시기도 했고, 백엔드가 아닌 프론트엔드라 즉각적인 답변이 어려웠습니다.그 때 그래도 이게 focus가 풀리는 현상이구나... 정도는 알려주셨습니다. 감사합니다 그리고 나서도 해결이 되지 않아 프론트 코치님께 여쭤봤습니다.   ..

Frontend 2024.07.22

[Java Springboot] 이메일 발송 API 만들기

SSAFY에서 프로젝트를 하면서 1:1 문의를 이메일로 받을 수 있게끔 처리했다.그 API를 작업하려고 한다.난이도는 크게 어렵지 않다. 금방 할 수 있는 수준. 사전에 필요한 것(Backend)1. 최소한의 Java및 Springboot 사용 지식2. Intellij Ultimate 개발 버전Java 17Springboot 3.3.0   1. Backend 작업1) 의존성 설치 Spring Boot Starter Mail을 이용하였다.여러 방법이 있겠지만, Gmail의 SMTP 서버를 활용하여 이메일을 발송하는 방법을 이용해보고자 한다.관련 의존성을 build.gradle 파일에 잘 넣어서 gradle을 reload 시켜주면 된다.implementation 'org.springframework.boot..

Backend 2024.07.15

lombok.Value vs org.springframework.beans.factory.annotation.Value

내용 설명에 있어서 틀린 부분이 있을 수 있습니다. 김영한 스프링 MVC 2편 마지막 섹션인 파일 업로드 편을 듣던 중, 아래와 같은 오류가 발생했다. 해당 섹션은 파일 업로드를 직접 구현해보는 ServletUploadControllerV1.java, ServletUploadControllerV2.java 파일과 스프링에서 제공하는 기능들을 이용하는 SpringUploadController.java 파일로 구성되어 있다.이전의 2가지 과정 중에서는 오류 없이 잘 넘어갔는데, 새로 작업하는 SpringUploadController.java 파일에서는 계속 file.dir을 가져오지 못하는 오류가 발생하였다. 원인을 보니 import 오류였다. 이전 파일에서는 오류가 전혀 나지 않았는데 새로운 파일에서만 오..

Backend 2024.07.08

운영체제 공룡책 강의 정리 - 섹션 2 Chapter 2. Process(1)

프로세스의 이해프로세스란운영체제의 작업 단위운영체제가 해야 될 기본적인 일: 프로세스 관리작업을 수행하기 위해서는 특정 리소스(CPU 타임, 메모리, 파일, I/O 디바이스) 등이 필요하다.싱글 스레드(한번에 한가지 일)에서 실행된다프로세스의 메모리 레이아웃텍스트 섹션과 데이터 섹션은 정적 할당 영역(크기 고정됨), 힙 섹션과 스택 영역은 동적 할당 영역.텍스트 섹션executable code기계어로 이루어진 명령어가 저장된다.읽기 전용 공간데이터 섹션잠깐 썼다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간전역 변수힙 섹션malloc(C언어), new(자바) 같은 것들이 쭉 쌓이는 영역프로그래머가 직접 할당할 수 있는 저장 공간메모리 공간을 반환한다더 이상 해당 메모리 공간..

CS 2024.07.03

운영체제 공룡책 강의 정리 - 섹션 1. Chapter 1-2. Introduction & O/S Structures

더 공부하는대로 조금씩 더 수정 예정입니다.섹션 1. Chapter 1-2. Introduction & O/S Structures운영체제컴퓨터에서 항상 실행 중인 프로그램시스템 서비스를 애플리케이션 프로그램에게 제공프로세스, 리소스, 유저 인터페이스 등을 관리함컴퓨터 시스템을 운영하는 소프트웨어, 하드웨어 디바이스들을 제어할 수 있는 운영체제가 있고 인터페이스들을 관리해줌.부트스트랩 프로그램파워온 되자마자 동작하는 프로그램(ROM에 저장)이 메모리에다가 운영체제를 로딩하는 일을 담당함interruptcpu 가 있고 메모리가 있고 인스트럭션을 실행하고 패치하고 실행하고 패치하는 것을 쭉 하는데 io 디바이스들이 쭉 있음A라는 문자를 눌렀다는 것을 CPU한테 알려줘야 함이걸 알려주는 방식이 interrupt..

CS 2024.06.28