공부31 JWT - 1 오늘 면접에서 JWT관련해서 질문을 받았는데 어디에 사용되는지 라던가 하는 부분은 알아도 정확하게 어떻게 구성되고 어떤식으로 작동하는지에 대한 답변이 부족했다고 생각이 들어서 JWT에 대해서 정리해보려고 한다. 일단 첫번째 포스팅에서는 JWT 자체에 대해서 알아보고 다음 포스팅에서 직접 사용하는 방법을 정리하면 좋을 것 같다. JWT? JSON Web Token의 두문자어로서 JSON 포맷을 통해서 데이터를 저장하는 웹 토큰이다. JWT는 사용자 인증의 과정에서 보편적으로 사용되는 토큰이다. 토큰 자체에 정보가 저장되는 Self-Contained 라는 특성을 가진다. JWT의 구성 JWT는 Header, Payload, Signature의 총 3가지 부분으로 구성된다. 최종적으로 생성된 토큰에서는 '.'.. 2022. 3. 2. Django - Admin(Search, Filtering) 최근 내가 Django에 대해서 어느정도 알고 있는지도 확인하고 부족한 부분, 모르는 부분을 좀 보완하고자 인프런에서 강의를 듣고 있다. 아직 초반부임에도 불구하고 몰랐던 내용들이 줄줄이 나와서 좀 당황스러웠음;;; 지금까지 내가 알고 쓰던 기능들은 API 개발을 하기위한 최소 단위였다고 볼 수 있을 것 같다. 지금까지 내가 Django를 사용하면서 크게 신경쓰지 않았던 부분이 바로 Admin 페이지일 것이다. 전에 회사에 다닐때도 관리페이지를 따로 만들어서 사용했었기 때문에 Admin 페이지에 대해서 알아볼 생각을 못한 것도 있긴한데, 어쨋든 Admin 페이지에 대해서 별 생각을 안했던 것은 사실이다. DB에 저장된 데이터를 빠르게 수정할 필요가 있을 때나, Shell 통해서 데이터 관리하는 게 조금 .. 2022. 2. 4. 자주 쓰는 psql 명령어 정리 psql 은 텍스트 기반의 PostgreSQL 관리 툴이다. PgAdmin을 쓸 수도 있지만 나는 터미널 환경에서 뭘 하는걸 좋아하다보니 psql을 사용하는 편이다. 보통 psql을 사용할 때에는 DB 인스턴스를 생성하거나 생성한 인스턴스에 저장된 데이터들을 확인하기 위한 목적으로 사용하고 있다. 실무에서는 AWS의 RDS서비스에 PostgreSQL을 올려서 사용하다보니 psql에서 DB 인스턴스를 만드는 과정은 그냥 넘기면 됐지만 로컬에서 실습 목적으로 프로젝트를 진행하다보니 인스턴스 생성 과정이 꼭 필요했다. 그리고 굳이 초기 세팅 단계가 아니더라도 인스턴스 선택이나 인스턴스의 정보 확인을 위해서 psql을 사용할 때마다 이전에 사용했던 명령어를 기억을 못해서 항상 찾아보고 난 후에 사용했었다. 그래.. 2021. 10. 8. Django - Redis 캐싱 위코드 기간중에 진행했던 프로젝트 중에서 데이터 로딩 속도 확보를 위해서 Redis를 통한 캐싱을 적용했던 적이 있다. 상품 데이터 로딩 속도가 너무 느려서 로딩 속도를 빠르게 해 볼 생각만 가지고 캐싱을 적용해봤던 거라서 어떤 상황에서 캐싱을 적용하면 좋을지 정확하게는 모르겠다. 일단은 전에 적용했던 방식을 간단하게 정리해서 혹시라도 나중에 사용할 일이 있으면 참고하려고 한다. 캐싱이란 내가 전부터 알던 캐싱이라는 단어는 CPU의 캐시 메모리를 기반으로 한다. 사용이 잦은 데이터의 경우 매번 기억장치 간 이동으로 인한 시간 손실을 피하기 위해서 CPU 내부의 크기는 작지만 접근 속도가 압도적으로 빠른 캐시 메모리에 저장해 놓고 사용하는 방식 WAS에서의 캐싱 또한 비슷한 개념으로 이해했다. 특히나 데이.. 2021. 9. 27. 그레이들 프로젝트 기반으로 스프링 부트 프로젝트 생성 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 라는 책을 통해서 스프링 부트를 공부하고 있다. 이 책에서는 프로젝트 초기 세팅으로 스프링 이니셜라이저가 아닌 직접 설정을 입력하는 방식으로 초기 세팅을 진행하는데 까먹기 쉬운 방식인지라 초기 세팅 절차를 간단하게 정리해도 좋을 것 같다. IDE는 IntelliJ IDEA Community 2020.2.2 기준으로 진행하였다. 프로젝트 생성 책에서는 그레이들 프로젝트(Gradle) 세팅을 기준으로 진행한다. 따라서 인텔리제이에서 일단 그레이들 프로젝트를 생성한다. Next를 누르면 프로젝트 이름등을 설정하게 된다. GroupId의 경우 프로젝트 패키지의 이름, ArtifactId는 프로젝트 이름으로 설정된다. Finish를 눌러 완료하면 그레이들 프로젝트가.. 2020. 9. 28. Java - 제네릭 (2) Java의 제네릭에 대해서 남은 개념들에 대한 22강이었다. 와일드카드라는 기능에 대한 설명이 길게 진행되었는데, 확실히 쉽게 이해하기는 힘들었다. 지금도 조금씩 헷갈리는 데, 복습을 확실히 해야겠다. 제네릭 클래스의 상속 제네릭 클래스 인스턴스와 참조변수간의 관계는 기본적인 상속 관계와 동일하게 작동한다. 단, 키워드로 감싸진 타입 매개변수가 동일해야 함 class Box { protected T ob; public void set(T o) { ob = o; } public T get() { return ob; } } class PaperBox extends Box { public PaperBox(T o) { ob = o; } } Box iBox = new PaperBox;//참조 가능 Box sBox.. 2020. 9. 27. Java - 제네릭 (1) 스프링 예제 코드들 보면서 이게 뭐지 싶었던 문법인 제네릭에 대한 21강이었다. 다음 강의에는 제네릭을 좀 더 심화해서 다룬다는데 중요한 개념인 것 같으니 확실하게 정리하고 넘어가자. 제네릭이란? 자료형을 정하지 않고 클래스의 형태만 갖추어 놓는 것. 필요할 때에 해당 클래스의 자료형을 결정하는 방식 클래스의 경우는 인스턴스 선언시, 자료형 결정 메소드의 경우는 메소드 호출시, 자료형 결정 왜 제네릭이 등장했는가? 제네릭 이전 여러 타입의 데이터를 다루기 위해 일반적으로 Object 클래스를 사용한 클래스를 만들고, 명시적 형변환을 이용했다. 명시적 형변환을 다수 사용하면서 코드 안정성이 저하되고, 코드 에러를 컴파일 레벨에서 잡아내기 어려웠다. 무엇보다도 일일이 명시적 형변환을 지정하는 것이 굉장히 번.. 2020. 9. 22. Ubuntu 20.04에서 IntelliJ IDEA 설치 스프링을 시작하면서 당연히 개발환경 잡기는 기본이다. 현재 사용중인 우분투 20.04버전에서 스프링 개발을 위한 인텔리제이 아이디어 커뮤니티 버전을 설치해보자. IntelliJ IDEA 다운로드 및 설치 www.jetbrains.com/ko-kr/idea/download/#section=linux 다운로드 IntelliJ IDEA: JetBrains가 만든 전문 개발자용 Java IDE 최신 버전 다운로드: IntelliJ IDEA (Windows, macOS, Linux) www.jetbrains.com 링크에서 Community 버전을 다운받는다. 다운받은 tar 파일을 /opt 디렉토리 또는 관리가 가능한 디렉토리로 옮긴다. 나는 /opt 디렉토리를 사용하지 않고, 따로 디렉토리를 생성한 곳으로 옮.. 2020. 9. 21. 위코드 Foundation - 인증과 인가 인증과 인가 인증과 인가는 API에서 가장 자주 구현하는 기능이다. Private한 API는 물론이고, Public한 API에서도 기본적인 인증과 인가 과정을 요구 인증(Authentication) 인증이란 사용자의 Identification을 확인하는 일련의 절차 로그인 절차가 인증과정에 해당된다. 유저의 아이디와 비밀번호를 만든다. 만든 아이디와 비밀번호를 DB에 저장하는데 이때 비밀번호의 경우 암호화를 진행한 후 저장한다. 이후 유저가 로그인을 위해서 아이디와 비밀번호를 입력한다. 입력된 아이디와 비밀번호를 DB에 저장된 데이터와 비교, 이때에도 입력받은 비밀번호는 암호화 후 비교 일치하면 로그인 성공으로 판단 클라이언트로 Access Token을 전달 유저는 로그인에 성공한 이후에는 Access .. 2020. 8. 11. 이전 1 2 3 4 다음