반응형

분류 전체보기 406

LocalDate 해당 월의 마지막 날짜 구하는 방법

JDK1.8부터 기존의 Calendar 클래스와 Date 클래스를 보안하기 위해 java.time 패키지가 등장했고, 해당 패키지에는 날짜와 시간을 나타내는 클래스들이 있는데요. 그중에서 날짜 정보를 나타내는 LocalDate를 사용할 때 해당 월의 마지막 날짜를 구해야 하는 경우가 있는데, 해당 방법을 정리한 내용입니다. //기준일자 LocalDate date = LocalDate.parse("2022-09-04"); //해당 월의 첫째 날 LocalDate firstDate = date.withDayOfMonth(1); // 2022-09-01 //해당 월의 마지막 날 LocalDate lastDate = date.withDayOfMonth(date.lengthOfMonth()); // 2022-09..

Programming/Java 2022.09.04

BCrypt 동작원리 파헤치기(BCryptPasswordEncoder)

BCrypt 암호화를 사용하면서 내부적으로 랜덤 한 salt가 생기고, 그에 따른 결과 해시 값이 매번 바뀌는 것을 확인하며 동작 원리가 궁금해서 찾아본 내용입니다. BCrypt 암호화는 무엇인지? 동작원리는 무엇인지? Java 코드를 통해 살펴보겠습니다. BCrypt란? BCrypt는 블로피시(Blowfish) 암호에 기반을 둔 암호화 해시 함수로 현재까지 사용 중인 가장 강력한 해시 메커니즘 중 하나이며, 1999년 USENIX에서 발표되었습니다. BCrypt는 패스워드를 해싱할 때 내부적으로 랜덤 한 salt를 생성하기 때문에 같은 문자열에 대해서 매번 다른 해싱 결과를 반환하는데요. (하지만 해싱 결과로 반환되는 String의 길이는 매번 60으로 동일합니다.) 이처럼 salt가 통합된 형식으로 ..

Programming/Web 2022.09.04

Querydsl 서브쿼리 사용하는 방법(select절, where절)

'Querydsl 서브 쿼리 사용법'에 대해 간단하게 정리한 내용입니다. Querydsl이 나오게 된 배경을 살펴보고 이어서 subquery를 적용하는 코드 예시가 있는데요. Querydsl의 경우 다른 것 보다 사용하기 위한 설정이 조금 번거로울 수 있는데, 환경설정 및 DTO 조회 방법, 페이징 처리 등의 추가적인 내용이 담긴 글 또한 해당 포스팅 맨 하단에 링크되어 있으니 필요시 참고해주시면 될 것 같습니다. Querydsl이 나오게 된 배경 Spring Data JPA에서 기본적으로 제공해주는 CRUD 쿼리 메서드로 해결하지 못하는 복잡한 쿼리나 동적 쿼리를 처리하기 위해서 JPQL을 작성하게 되는데요. /* JPQP(Java Persistence Query Language) JPQL은 테이블이 ..

Java - BigDecimal 사용하는 이유 (feat.부동소수점의 부정확성)

Java 기반 프로그램에서 소수점에 대한 정확한 계산이 필요하거나 화폐 단위를 다룰 때는 BigDecimal을 사용하는데요. 자바에서 숫자를 표현하는 데이터 타입에 대해서 간단하게 살펴보고, 이어서 BigDecimal을 사용해야 하는 이유는 무엇인지 살펴보겠습니다. Java에서 숫자를 표현하기 위한 데이터 타입 자바에서 숫자를 표현하기 위해 사용하는 데이터 타입은 크게 '정수형 데이터 타입'과 '실수형 데이터 타입'으로 나눠집니다. - 정수형 데이터 타입(Integer Types) 데이터 타입 (자료형) 크기 저장 가능한 값의 범휘 byte 1byte (8bit) -128 ~ +127 short 2byte (16bit) -32,768 ~ + 32,767 int 4byte (32bit) -2,147,483..

Programming/Java 2022.08.18

FeignClient 기본적인 사용법 (Spring Cloud OpenFeign)

기존 프로젝트에서는 서비스 간 통신에서 RestTemplate을 사용했는데 FeignClient를 통해 조금 더 편리하게 사용할 수 있다고 하여 적용해보며 정리한 내용입니다. 잘못된 부분은 댓글로 남겨주시면 확인하여 다시 공부하고 수정하겠습니다. 미리 감사드립니다. Spring Cloud OpenFeign FeignClient란 Netflix에서 최초로 개발된 선언적 HTTP 클라이언트인데요. 이때는 Spring Cloud Netflix Feign 였으나, 현재는 오픈소스 프로젝트인 OpenFeign로 변경되었는데, OpenFeign가 Spring Cloud OpenFeign에 통합되면서 SpringMVC 어노테이션에 대한 지원 및 HttpMessageConverters를 사용할 수 있게 되었습니다. F..

Java 위도 경도에 따른 거리 계산(내 주변 반경)

위도 경도에 따른 거리 계산 및 내 주변 일정 거리 이내에 있는 대상들을 판단하기 위해 작업된 코드 및 내용을 정리한 것입니다. 먼저 위도와 경도의 정의에 대해서 간단하게 살펴본 뒤 코드를 이어서 보겠습니다. (코드만 필요하신 분들은 윗부분은 살짝 스킵하셔도 될 것 같습니다.) 위도(latitude), 경도(longitude) '위도'는 적도를 기준으로 북위(N), 남위(S)로 나뉘며, 각각 0° ~ 90°로 표현합니다. 같은 위도를 연결한 가로선을 위선이라고 합니다. '경도'는 영국의 그리니치 천문대를 기준(0°)으로 하여 동쪽과 서쪽을 각각 180°로 표현합니다. 같은 경도를 연결한 세로선을 경선이라고 합니다. 우리나라의 위도와 경도 기준점은 경기도 수원에 있는 국토지리정보원이며, 이곳의 위도와 경도..

Programming/Java 2022.08.03

ExceptionTranslationFilter과 SecurityInterceptor

ExceptionTranslationFilter, FilterSecurityInterceptor, MethodSecurityInterceptor 해당 포스팅은 Spring Security에서 인증(Authentication)과 인가(Authorization)에 대한 예외 처리를 담당하는 ExceptionTranslationFilter과 해당 필터에 이어서 동작하며, 권한을 검사하는 FilterSecurityInterceptor, MethodSecurityInterceptor의 동작 과정에 대해서 살펴본 내용입니다. - ExceptionTranslationFilter 먼저 ExceptionTranslationFilter의 경우 스프링 시큐리티의 filter chain에서 인증과 인가에 대한 Exceptio..

GCP 인스턴스 SSH 접속하는 방법

앞전에 아래 포스팅의 과정을 통해 구글 클라우드 플랫폼 GCP 무료 서버를 생성했었는데요. 서버 생성 후 'SSH 키를 통해 해당 서버에 접속하는 방법'에 대해 정리한 내용입니다. 해당 과정대로 진행하면 생각보다 간단하게 서버에 접속할 수 있습니다. (로컬에서 ssh 키를 생성 -> gcp에 ssh 키 등록 -> 인스턴스 접속) 구글 클라우드 플랫폼 GCP 무료 서버 생성하기(22년 6월 기준) 구글 클라우드 플랫폼(Google Cloud Platform) 무료 서버 생성하는 방법에 대해서 알아보겠습니다. 구글링을 통해 GCP 무료 서버 구축 방법을 찾아보면 포스팅이 작성된 기간에 따라 서버 구축에 관련 wildeveloperetrain.tistory.com 1. SSH 키 생성하기 ssh 키를 통해 서..

Programming/Web 2022.07.29

데몬(daemon) 프로세스의 정의와 실행 방법

프로젝트의 개발서버 배포 과정에서 데몬을 사용하여 서비스의 배포와 관리를 자동화할 수 있다는 것을 알게 되었고, 실제 적용해보면서 정리한 내용입니다. 내용 참고하시고 잘못된 부분은 지적해주시면 확인하고 공부하여 다시 수정하겠습니다. 미리 감사드립니다. 프로세스란? (background, foreground) 데몬(daemon)에 대해서 이해하기 위해서 먼저 프로세스에 대해서 간단하게 살펴보겠습니다. 프로세스(process)는 연속으로 실행되고 있는 컴퓨터 프로그램(program)을 의미하는데요. 프로세스는 포그라운드(foreground) 프로세스와 백그라운드(background) 프로세스로 나눌 수 있습니다. 각각에 대해서 살펴보면 포그라운드 프로세스는 인터넷 브라우저, 인텔리제이, 카카오톡 등, 눈에 ..

Programming/Linux 2022.07.27

SSO(Single Sign-On) jwt 동작 이론 살펴보기

SSO란, SSO(Single Sign-On)은 하나의 시스템(인증 서버)에서 클라이언트에 대한 인증을 수행하고, 그 인증 정보를 가지고 추가적인 인증 없이 다른 서비스들도 사용할 수 있도록 하는 기능입니다. (통합 인증, 단일 인증, 단일 계정 로그인, 싱글 사인온 등으로 다양하게 불리고 있습니다.) Single Sign-On을 사용하면 여러 서비스에 대한 로그인 처리가 간소해지기 때문에 편리하다는 장점이 있는데요. 하지만 하나의 인증 정보로 여러 서비스를 사용하기 때문에 보안적인 부분에 대해 더욱 신경을 써야 하며, 결제, 개인정보 등 중요 요청의 경우에는 이중 인증 등의 절차를 추가하는 등의 과정이 필요합니다. SSO의 다양한 방식, SSO에서는 인증 서버를 거친 사용자의 인증 정보에 대한 유효성을..

Programming/Web 2022.07.24
반응형