2021 14

WebFlux Log Tracing

WebFlux를 처음 사용해보면서 로깅하는데 며칠을 애먹었다. Spring MVC와는 다르게 레퍼런싱할 수 있는 자료들이 거의 없었다. 그래서 다른 분들의 시간을 단축시켜주고자 글을 적어본다. (좀 더 좋은 자료가 있는 곳이 있다면 댓글로 공유부탁드립니다 🙇) 결론부터 말하자면, WebFlux에서 MDC Context로 로깅을 '잘' 하려면 아래와 같이 HttpHandlerDecoratorFactory의 구현체를 하나 만들면 된다. package com.tistory.mjin1220.decorator; import org.slf4j.MDC; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.http..

2021/개발 2021.12.04

OAuth 2.0

OAuth란, OAuth는 인터넷 사용자등리 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용되는, 접근 위임을 위한 개방형 표준이다. 각 애플리케이션마다 다른 인증방식을 표준화한 것으로 OAuth 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. OAuth를 사용하면 특정 서비스에서 제공하는 서비스의 일부 기능을 사용할 수 있다. OAuth 2.0 OAuth2.0의 일반적인 요소는 Resource Owner, Client, Authorization Server, Resource Server로 구성된다. 구분 설명 Resource Owner Client가 제공하는 서비스를 이용하려는 사용자 Client ..

2021/개발 2021.10.10

리뷰 - 헬스 기록 앱 '번핏'

제가 5월부터 PT를 받으면서 운동 루틴을 기록하고 싶어서 이런 저런 앱을 다 사용해봤는데요! 제가 3개월 이상 꾸준히 사용한 앱을 하나 소개하고자 글을 적게 되었습니다. 바로 '번핏' 이라는 앱인데요! 앱 스토어에서 검색하면 아래와 같이 나옵니다! 처음에는 아이폰 앱으로만 있었는데, 안드로이드 앱으로도 나와서 공유를 하고 싶어졌어요 :) 이 어플을 선택한 이유는 쓰다가 보니까 더 많지만 몇 가지만 적어보자면... 휴식 타이머가 있어서 쉬는 시간을 관리하기 편하다. 운동 루틴을 기록하기 편하다. 등록되지 않은 운동을 등록하기 간편하다. 업데이트가 꾸준하게 되고 있다. (이게 가장 큰 장점인 것 같아요!) 광고가 없다. 지금도 꾸준히 사용하고 있어요. 식단 기록관련 기능을 추가해달라는 요청도 많은 것 같은..

2021/리뷰 2021.08.15

Spring Batch - 기본 프로젝트 만들기

Spring Batch 를 활용한 기본적인 프로젝트를 만들어서 돌려보자. (아래 작성한 소스코드는 여기에서 확인할 수 있다. 👉 github.com/mjin1220/spring-batch-project) 먼저 Spring Boot로 기본 프로젝트를 생성해본다. 자바 기본 프로젝트(with gradle)를 생성하고, 스프링 부트 공식 사이트에서 제공하는 build.gradle을 복사해서 적용한다. 복사한 설정 값 중에서 group, sourceCompatibility를 수정하고, 필요한 라이브러리가 있다면 더 추가한다. plugins { id 'org.springframework.boot' version '2.4.4' id 'io.spring.dependency-management' version '1.0..

2021/개발 2021.05.01

ELK - Elasticsearch 설치

ELK 환경을 구성하기 위해 Elasticsearch를 설치한다. (OS는 macOS) Elasticsearch를 설치하기 위해서 Elastic Homebrew repository를 탭한다. $ brew tap elastic/tap 탭하고 나면, brew install을 이용하여 elasticsearch를 설치할 수 있게 된다. $ brew install elastic/tap/elasticsearch-full (...생략...) ==> Caveats Data: /opt/homebrew/var/lib/elasticsearch/elasticsearch_mjin/ Logs: /opt/homebrew/var/log/elasticsearch/elasticsearch_mjin.log Plugins: /opt/hom..

2021/개발 2021.04.27

Spring Boot - An illegal reflective access operation has occurred

Mybatis 를 연동하는데, 아래와 같은 메세지가 뜨면서 경고를 주는 경우가 있다. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.ibatis.reflection.Reflector (file:/Users/mjin/.m2/repository/org/mybatis/mybatis/3.4.6/mybatis-3.4.6.jar) to method java.lang.Class.checkPackageAccess(java.lang.SecurityManager,java.lang.ClassLoader,boolean) WARNING: Please consider reporti..

2021/개발 2021.04.24

JWT(JSON Web Token)

JWT는 클라이언트와 서버, 서비스와 서비스 사이 통신 시 권한 인가(Authorization)를 위해 사용하는 토큰이다. URL에 대해 안전한 문자열로 구성되어 있기 때문에 HTTP 어디든 위치할 수 있다. 구조: [HEADER].[PAYLOAD].[SIGNATURE] => 각 부분은 Base64로 인코딩되어 표현됨 HEADER: JWT를 어떻게 검증하는가에 대한 내용을 포함(alg. typ) PAYLOAD: JWT의 내용, 페이로드에 있는 속성들을 '클레임 셋' 이라고 함 클레임은 3가지로 나뉜다. => Registered Claim, Public Claim, Priavate Claim SIGNATURE: 점(.)을 구분자로 해서 헤더와 페이로드를 합친 문자열을 서명한 값 생성된 토큰은 HTTP 통신..

2021/개발 2021.02.06

카카오 경력 이직 후기

본인 소개 나는 3년차 풀스택 주니어 개발자이다. 작년까지는 삼성전자에서, 2021년부터는 카카오에서 일을 하게 되었다. (풀스택 개발자라고 하기엔 아직 백앤드도 프론트앤드도 제대로 깊게, 푸근하게 파본적이 없는 것 같긴하다.) 이직을 하는 이유 카카오에 다니는 지인과의 지속적인 주입식(?) 대화를 통해 카카오 라는 회사에 대한 궁금증이 생겼다. 여러 커뮤니티나 뉴스에서 찾아봤을 때, 카카오라는 회사에 매력을 느끼게 되었다. 가장 크게 다가왔던 부분은 조직 문화라고 생각한다. 실제로 회사를 다니다보면 부서에 따라, 사람에 따라, 상황에 따라 달라질 수 있겠지만, 개발자들끼리의 자유로운 소통, 코드 리뷰, 개방적 문화 등에 호기심이 커져만 갔다. 하루는 빈 종이와 펜 하나를 들고 현재와 이직 후의 나를 비..

2021/개발자 2021.02.02

Docker Commands

docker run [OPTIONS] IMAGE[:TAG|DIGEST] [COMMAND] [ARG...] docker를 이용하여 이미지를 컨테이너를 생성한다. Operator exclusive options 이미지 개발자가 아니라 컨테이너를 생성하는 시점에만 줄 수 있는 옵션들 - Detached vs foreground - Detached (-d) - Foreground - Container identification - Name (--name) - PID equivalent - IPC settings (--ipc) - Network settings - Restart policies (--restart) - Clean up (--rm) - Runtime constraints on resources - ..

2021/개발 2021.01.06
반응형