반응형

분류 전체보기 424

운영체제의 기초 (CPU 스케줄링, 메모리 관리, 디스크 스케줄링)

운영체제의 기초(Foundation of Operating System) 비전공자로 개발 업무를 하며 CS(Computer Science) 전공지식에 대해 공부가 필요하다는 생각을 항상 가지고 있었는데요. KOCW(kocw.net)을 통해 대학교 강좌를 무료로 접할 수 있다는 소식을 알게 되었고, 해당 포스팅은 KOCW에서 제공되는 이화여자대학교 반효경 교수님의 운영체제 강의를 참고하여 정리한 내용입니다. 운영체제란? '운영체제'는 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층으로, 모든 컴퓨터 시스템의 필수적인 부분입니다. 운영체제는 다른 소프트웨어들과는 다르게 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행함으로써 컴퓨터 시스템을 편리하..

MySQL 날짜, 시간 더하고 빼기 및 타임존 변경(DATE_ADD, DATE_SUB, CONVERT_TZ)

MySQL 날짜, 시간 더하고 빼기 및 타임존 변경 mysql에서 날짜 또는 시간을 더하고 빼는 함수인 'DATA_ADD', 'DATA_SUB'와 타임존을 변경할 때 사용되는 'CONVERT_TZ' 함수에 대한 사용법을 정리한 내용입니다. 0. time zone 확인 SELECT @@time_zone, @@system_time_zone; 먼저 위 쿼리를 통해 mysql에 설정된 time_zone 정보를 조회하였습니다. time_zone이 SYSTEM으로 설정되어 있다는 것은 별도의 타임존이 설정되어 있지 않다는 것이며, 시스템의 타임존을 사용하겠다는 것인데요. 해당 테스트 환경에 설정된 mysql의 time zone은 KST(Korea Standard Time)이라는 것을 알 수 있습니다. 1. DATA..

Programming/MySQL 2023.04.07

Spring Security + OAuth2 + JWT 소셜 인증 구현(google, kakao, naver)

스프링 부트 security + oauth2 + jwt 소셜 인증 구현 코드 문득 security, oauth2를 사용한 소셜 인증을 제대로 구현해 본 적이 없다는 생각이 들어 구현하며 정리한 내용입니다. 소셜 인증의 경우 많은 애플리케이션에서 사용되는 기능이기 때문에 내용을 잘 파악해 두면 좋다고 생각되는데요. 기능을 구현하며 oauth에 대한 개념 및 oauth2-client의 내부적인 동작 원리에 대한 부분도 궁금하여 포스팅으로 정리해 보았으며, 하나의 포스팅에 모든 내용을 담기는 사실상 어렵기 때문에 아래 포스팅을 참고하시어 해당 코드를 보면 조금 더 이해하기 쉬울 것으로 생각됩니다. (oauth2에 대한 내용으로 대부분 구성되어 있으며 jwt에 대한 내용도 생략되었습니다. jwt에 관련 내용도 ..

스프링 부트 멀티 모듈 프로젝트 생성(gradle)

Spring Boot Multi-Module Project(Gradle) 지난번 spring boot multi-module project 생성하기(maven)에 이어 이번에는 'gradle'을 사용한 멀티 모듈 프로젝트 생성 방법에 대해서 살펴보겠습니다. multi module project를 적용하는 가장 큰 이유는 하나로 운영하던 서비스가 클라이언트 서비스와 운영 시스템 등, 여러 개로 나뉘는 경우가 발생했을 때 각각의 프로그램에 있는 domain의 동일성을 보장하기 위한 것인데요. 멀티 모듈 프로젝트는 무엇인지, 멀티 모듈 프로젝트를 적용하는 이유와 장점에 대한 내용은 아래 포스팅을 참고해 주시면 좋을 것 같습니다. (maven 빌드툴로 구성된 프로젝트에서 multi module project를 ..

Java Enum 타입 데이터베이스 저장 형식은 뭐가 좋을까? (enum, varchar, tinyint)

Java Enum Type 데이터 DB 저장 형식 (enum, varchar, tinyint) 해당 내용은 데이터베이스 설계 과정에서 Java Enum 타입의 데이터는 어떤 형식으로 저장되는 것이 좋은가에 대해 고민하며 정리한 내용입니다. 실제로는 'varchar'와 'tinyint' 사이에서 고민했으나, mysql의 경우에는 'enum' 타입도 존재하기 때문에 mysql enum 타입에 대해서도 함께 비교하였습니다. enum을 함께 비교하기는 하였지만 mysql의 enum 타입은 여러 이유로 인해 많이 쓰이지는 않는데요. 아래 내용에서는 mysql enum 타입의 특징과 쓰이지 않는 이유에 대해 간단하게 살펴보고 이어서 enum, varchar, tinyint 각각의 타입에 대해 실제 데이터를 넣고 조..

리눅스 서버 시간 확인 및 설정 방법 (linux timedatectl 명령어)

linux timedatectl 명령어를 통한 리눅스 서버 시간 확인 및 설정 리눅스 서버에서 시스템 시간 및 해당 설정을 확인하고 변경해야 할 일이 있어 찾아보며 정리한 내용입니다. linux에서는 timedatectl 명령을 사용하여 현재 시간, 날짜 및 시간대(timezone) 설정을 확인 및 변경할 수 있는데요. 아래 내용을 통해 사용되는 명령어들에 대해서 살펴보겠습니다. (timedatectl 명령어는 CentOS 7부터 사용할 수 있습니다.) 1. 서버 시간 및 설정 확인 # timedatectl # timedatectl status timedatectl 또는 timedatectl status 명령어를 통해 시스템에 설정된 시간 및 시간 설정을 확인할 수 있습니다. 여기서 Local time의..

Programming/Linux 2023.03.30

Spring Boot OAuth2-Client 내부적인 동작 과정

스프링 부트 OAuth2-Client 내부적인 동작 과정 스프링 부트 2.x 버전으로 올라오며 oauth를 연동하는 방법이 크게 변경되었는데요. 아래 내용은 spring-boot-starter-oauth2-client 라이브러리를 적용하여 소셜 로그인(google, naver, kakao)을 구현하는 과정에서 내부적인 동작 과정에 대한 궁금증으로 찾아본 내용입니다. /* 기존(1.5 버전)에서는 'org.springframework.security.oauth:spring-security-oauth2' 라이브러리를 사용하였다면, 2.x 버전부터는 'org.springframework.boot:spring-boot-starter-oauth2-client' 라이브러리를 사용합니다. */ OAuth 2.0의 경..

OAuth, OAuth2 개념과 동작 방식 정리

OAuth, OAuth2 개념과 동작 방식 정리 Spring Security + OAuth2를 통한 소셜 로그인을 구현하던 중, oauth의 개념과 이론적인 동작 방식에 대해서 자세하게 알고 싶어 정리한 내용입니다. 1. OAuth, OAuth2.0 이란? 위키백과에 따르면 'OAuth(Open Authorization)'는 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준인데요. 사용자의 아이디와 비밀번호 없이 접근 권한을 위임받을 수 있다는 것은, 로그인 및 개인정보 관리 책임을 'Third-Party Application(google, kakao, n..

Programming/Web 2023.03.22

Spring Event, @TransactionalEventListener 사용하기

@TransactionalEventListener 사용하기 및 propagation.REQUIRES_NEW spring framework 4.2부터 스프링 이벤트의 사용이 간편해졌는데요. 지난 포스팅에서 spring event를 사용하는 이유와 @EventListener를 통한 기본적인 이벤트 처리 방법에 대해서 살펴본 것에 이어, 이번 포스팅에서는 더 향상된 기능인 @TransactionalEventListener에 대해서 살펴볼 예정입니다. 2022.12.23 - [Programming/Spring Boot] - spring 이벤트 사용하기(event publisher, event listener) (이전 포스팅 내용으로 spring event에 대한 기본적인 처리 방법이 궁금하시다면 참고하시면 좋을..

(Spring Security + JWT) Refresh Token을 통한 토큰 재발급에 대해서

Spring Security + JWT / Refresh Token을 통한 토큰 재발급 방식 spring security + jwt를 사용한 인증 방식을 구현할 때, 토큰 재발급은 어떤 방식으로 이루어지는 게 좋을지에 대해 생각해 보며 정리한 내용입니다. * 토큰 재발급의 경우 다양한 방식으로 구현될 수 있으며, 해당 포스팅에서 구현된 방식은 여러 방식 중 하나라는 점 참고 부탁드립니다. Refresh Token을 사용하는 이유 access token은 발급된 이후, 서버에 저장되지 않고 토큰 자체로 검정을 하며 사용자 권한을 인증한다는 stateless(무상태)라는 특징이 있는데요. 때문에 access token이 탈취되면 토큰이 만료되기 전까지 토큰을 가진 사람은 누구나 권한 인증이 가능해진다는 문제..

반응형