분류 전체보기

· Spring-boot
최근 프로젝트를 진행하는 과정에서 겪었던 사소한 이슈인데 JPA의 기본이기도 하면서 절대 실수를 범하면 안되는 부분이기에 소개하려한다. 엔티티의 생명주기 우선 JPA에서는 엔티티의 생명주기를 크게 4가지로 관리한다. 비영속(new/transient) 영속(managed) 준영속(detached) 삭제(remove) 비영속 비영속 상태는 객체를 새로 생성하였을 때 시점으로 영속성 컨텍스트에 의해 관리되지 않는 상태를 뜻한다. JPA와는 관계없이 객체만 생성한 상태를 말한다. Timer timer=new Timer(1L,"11:06:48"); 영속상태가 아니므로 1차캐시에 포함되지 않으며, 변경감지등의 기능이 적용되지 않는다. 영속 영속성 컨테스트에 의해 관리되는 상태. 생성한 객체를EntityManager..
· Spring-boot
소개 배경 우리는 흔히 Spring 프로젝트를 공인 IP상에 띄우기 위해 EC2와 같은 환경을 이용하며 DB 또한 RDB를 사용한다는 가정하에 RDS와 같은 서비스를 이용하여 DB를 네트워크 상에 배포하게된다. 이때 네트워크를 통해 데이터베이스에 접근하는 시간 비용은 애플리케이션 서버에서 내부 메모리에 접근하는 시간 비용보다 수만에서 수십만 배 이상 비싸다. 따라서 조회한 데이터를 메모리에 캐시 해서 데이터베이스 접근 횟수를 줄이면 애플리케이션 성능을 획기적으로 개선할 수 있다. 1차캐시와 2차 캐시 우리는 Spring Data Jpa와 같은 작업을 통해 DB에 쿼리 작업을 수행할 경우 모든 작업은 영속성 컨텍스트에 엔티티를 저장하게된다. 이때 영속성 컨테스트 내부에 엔티티를 영구적으로 보관하는 장소를 ..
· Spring-boot
작성배경 이번 프로젝트에서 OAuth2.0을 사용하여 인가처리를 사용하였는데 Github의 경우 OAuth Developer 문서를 읽어보면 SpringSecurity에서 제공하는 OAuth API를 사용하기 보다는 직접 API를 호출하는 방식을 권고하고 있다. 물론 방식의 차이일뿐 같은 결과를 가져오지만 인가처리는 SpringSecurity의 Oauth2.0을 사용하였으나 logout을 구현하기 위해 외부 API를 호출해야하는 작업이 필요해졌다. Github의 logout주소는 아래와 같다 https://api.github.com/applications/{client_id}/token 이 API로 요청을 보내면서 Header에는 client_id와 client_secret을 Body에는 authToke..
· Spring-boot
현재 진행중인 프로젝트에서 인가 보안전략으로 JWT Token을 사용하던 도중만나게 된 에러로 분석을 해보자면 JWT 보안에 사용되는 서명이 일치하지 않을 경우에 발생하는 에러이다. 에러 분석 여기서 서명이 일치하지 않다는 것이 어떤 뜻인지 부터 설명을 해보자. 우리가 흔히알고 있는 JWT의 구조를 생각해보자 아마 위의 사진과 비슷한 구조를 많이 보았을 것이다. 여기서 서명부분은 우리가 SecretKey, 즉 암호화 키값을 가지고 HMA512 또는 BASE 64와 같은 알고리즘을 사용하여 암호화를 진행시킨다. 이는 서버의 인가 자원인 Token을 암호화하기 위해 반드시 거쳐야하는 작업으로 메세지가 조작되지 않았다는 무결성을 보장하기 위한 작업이기도 하다. 그렇기에 해당 에러를 맞닥뜨렸을 경우 이 서명 쪽..
· 대외활동
이번 글은 개발이나 전공관련 글이 아닌 그냥 개발자로서의 이성호라는 사람의 고찰이 담겨있는 글이다. 바로 어제인 1월4일 오후에 DND 8기 결과가 나왔다. 결과는 희망적인 탈락이였다. 사실 이전에 나는 수 많은 동아리와 테크코스에 지원하였고 인턴십도 더러 존재했다. DDD,MashUp,Yapp,Nexters,디프만,DND,Fun.d,우아한테크코스 위의 이 수많은 이름들은 내가 지원 후 떨어진 곳이다. 근 1년이라는 기간동안 정말 많이 떨어지며 배우고,성장하였고,깨달았다. 처음에는 자기합리화였다. '아직 시간이 더있으니까', '아직 공부한지 얼마되지 않았으니까' 그렇게 생각한 나는 다음은 실패가 아니길 바라며 공부하고 공부했다. 솔직히 말하여 열심히 살았나? 라고 누가 물어본다면 그건아닌것 같다. 정말 ..
이터레이터 패턴 행위 패턴에 속하며 이터레이터를 사용하여 컬렉션 프레임워크에 접근하는 디자인 패턴 이터레이터 : 모든 컬렉션 프레임워크에 공통으로 사용가능하며 값의 수정 및 삭제 추가연산 등을 이용할 수 있다. 컬렉션 프레임워크 : Java에서 정의하는 List,Set,Map,Queue와 같은 자료구조 이터레이터 패턴 정의 컬렉션 구현 방법을 노출시키지 않으면서 모든 항목에 관하여 접근할 수 있게해주는 방법을 제공해주는 패턴 객체들을 배열, 스택, 해시테이블 등의 컬렉션에 넣어서 보관할 수 있다. 그런데 클라이언트가 해당 객체들에게 일일이 접근하는 작업을 원할 수 있을 경우 사용한다. 이터레이터 패턴을 사용하면 동작원리는 모른채 사용한다. 객체를 저장하는 방식은 보여주지 않으면서도 클라이언트가 객체들에게..
· GitHub
Invalid Error라는 문구가 뜨며 해당 에러를 마주한 사람들은 매우 당혹할 것이다. 왜냐하면 내가 그랬으니까.. 최근 스터디를 진행하며 스터디원들에게 주차별 과제를 PR로 받고 있었고 그를 리더인 내가 확인하고 Merge하는 방식으로 스터디를 진행하고 있었다. 하지만 파일명을 제대로 확인하지 못하고 Merge를 한후 git pull을 origin/main으로 시도하자 다음과 같은 에러를 만나게 되었다. error: invalid path 'Javascript/week3/Siby1lA/?IIFE.md' 해당 에러 문구를 보면 파일의 위치를 찾을 수 없는 것 같은데 이게 무엇일까? 우선 Javascript라는 패키지안에 week3-Siby1lA로 이어지는 패키지 구조이기에 혹시라도 Main에 해당 패..
디자인 패턴 디자인 패턴은 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계등을 이용하여 해결할 수 있도록 하나의 규약 형태로 만들어 놓은것 표준은 아니지만 표준적인 해법과 작명법을 제시한 도서가 GoF의 이라는 책이며 현재 수 많은 디자인 패턴의 학습의 기준이 되는 책이다. GoF에서는 크게 패턴을 생성, 구조, 동작 패턴으로 정의하며 이외에도 동시성, 아키텍처,기타 패턴등으로 분리되며 동시성은 크게 동기화에 대해 다루며 아키텍처의 경우 대표적으로 MVC 모델 패턴이 존재한다. 싱글톤 패턴 싱글톤 패턴의 정의 싱글톤 패턴은 생성패턴에 속하며 하나의 클래스에 하나의 인스턴스만을 가지는 패턴이다. 하나의 클래스를 기반으로 여러개의 개별적인 인스턴스 생성이 가능하지만 하나만의 인스터를 만들어 이..
LEE티씨
'분류 전체보기' 카테고리의 글 목록 (7 Page)