본문 바로가기
반응형

전체 글
반응형
127

[JWT] Spring Boot 환경에서 JWT(Json Web Token)생성 하기 첫번째의 JWT는 JWT에 대한 간단한 설명을 정리했고 2번째는 Spring Boot 환경에서 JWT를 직접 생성해보고자 한다. 사실 JWT 생성은 https://jwt.io/ JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 해당 홈페이지에서 직접 PayLoad값을 넣어가며 생성할 수 있다. 하지만 실무 백엔드에서 JWT를 활용할 수 있는 간단한 JWT 생성코드를 정리해 보고자한다. 생성에는 jjwt 플러그인을 활용하였다. 1. build.gradle 설정에 io.jsonwebtoken:jjwt 플러그인을 추가한다. im.. 2021. 10. 26.
[Kafka] 카프카란 무엇인가 실무 프로젝트에서 MSA 아키텍처를 활용하여 진행되고 있다. 비동기방식으로 Apache Kafka를 채택하여 개발을 하고 있는데 Kafka를 단순히 메시지를 주고 받고 DTO에 매핑하여 DB에 저장이 아닌 Kafka에 대해 좀 자세히 알고 싶어 카프카 책을 구입했고 이를 정리하고자 한다. https://digital.kyobobook.co.kr/digital/ebook/ebookDetail.ink?selectedLargeCategory=001&barcode=4801196203727&orderClick=LEH&Kc= 카프카, 데이터 플랫폼의 최강자 데이터 플랫폼의 핵심 컴포넌트로 각광받고 있는, 이벤트 기반 비동기 아키텍처를 위한 고가용성 실시간 분산 스트리밍 솔루션 카프카(Kafka)의 모든 것! 국내 .. 2021. 10. 21.
[C++] cout cin namespace overloading 접해보기 예전에 C++ 언어에 대해 정리했던 것을 다시 복습겸 정리 해보려한다. 1. cout cin 익히기 cout은 표준 출력 객체로 like printf( C언어) cin 은 표준 입력 객체로 >> 연산자 함수와 같이 사용한다.. -> like scanf( C언어) 예를 들어 코드를 한번 살펴 보자. #include //C언어에서 stdio.h using namespace std; int main() { int number = 25; double d_number = 17.5; char str[20] = "Hello World"; cout 2021. 10. 16.
[JWT] JSON Web Token? 실무 개발 최적화를 위한 고민을 계속 하던 중 하나의 방법으로 Spring Session에 대해서 자세히 알아보고 정리를 하였다. 그리고 혼자 생각하기 보다 내 개발 멘토이자 친한 친구인 상원님에게 실무에서의 고민을 공유하였는데 JWT를 사용하는 것도 고민해보라고 이야기 해주었다. 그저 듣기만 했던 JWT에 대해 정리해보고자 한다. 서버 개발 같은 경우 주로 프론트와 데이터를 주고 받거나 API 서비스 호출을 통하여 데이터를 주고 받는다. 대부분 XML과 JSON의 데이터 포맷을 가지고 통신하게 되는데 각각의 장단점이 있지만 내가 생각하는 JSON의 큰 장점인 객체에 바로 매핑된다는 점은 많은 프로그래밍에서 XML보다는 JSON 형태를 많이 사용하는 것 같다. 1) JSON Web Token? Json .. 2021. 10. 14.
[JWT] 서명을 위한 알고리즘 HS256과 RS256 JWT를 정리하다보니 JWT에 주로 사용되는 암호화 알고리즘 HS256과 RS256에 대해 언급이 필요할 것 같아 정리를 한다. 암호화 알고리즘 내 자세하고 복잡한 암호화 로직이 있지만 그 부분은 다음,, 언젠가 글로 남기기로 하고 지금은 2가지 알고리즘이 어떠한 프로세스를 가지고 있는지 정리하고자 한다. 1. HS256 (HMAC with SHA-256) 우선 클라이언트와 서버간 또는 서버 대 서버간 메시지를 주고 받았을 때 변조여부를 확인해야 한다. 원본 메시지와 공유된 메시지를 비교하여 변조 여부를 확인하는 것이 MAC(Message Authentication Code)이다. 여기서 HS256의 HMAC의 의미는 다음과 같다. HMAC (Hash based Message Authentication .. 2021. 10. 11.
[DB] Left Join on과 Where의 차이 실무 프로젝트에서 백엔드 개발을 본격적으로 진행하면서 데이터 조회 간 Table간의 연관 관계 및 Join에 대한 쿼리를 작성하며 개발을 진행하였다. 하나의 SPRINT가 끝난 후 데이터의 정합성을 맞추고 쿼리 속도를 빠르게 개선하고자 기개발되어 있는 Table Join쿼리를 다시 점검하는 시간이 있었다. 그 중 무분별하게 적용되어 있는 Left Join을 Inner Join으로 바꾸고 Left Join의 On과 Where를 혼합해서 사용하다보니 DB 조인에 대해 정리하고 다시 되돌아보는 시간이 필요하다고 느꼈다. 그래서 1편에 이은 2편으로 이번에 정리할 내용은 다음과 같다. Left Join On과 Where의 결과 차이 각설 하고 실제 DB 조회를 진행해보자. 지난번 예시 Table을 다시 활용해보.. 2021. 10. 10.
[DB] Table간 Join시 Inner Join과 Left Join 후 where의 차이 실무에서 데이터 조회 시 Spring JPA 및 QueryDSL을 활용하고 있는데 조회 성능이 좋게 나오지 않아 조금 더 나은 조회 성능을 위해 (이를 최적화라 부르기에는 민망했다...) QueryDSL 코드를 이것 저것 뜯어가보면서 수정을 했다. 특히 코드를 수정하고 테스트를 진행하던 중 수정 하기 전에는 데이터가 잘 나왔던 것이 수정 한 후에는 데이터가 나오지 않아 어디가 잘못 된 것인지 고민하고 끙끙 거리고 있었는데 파트원들의 집단 지성으로 문제점을 발견하였다. 지금 생각해보면 별 것 아닌 문제였는데 그 때는 왜 안보였는지 모르겠지만 조회했을 때 원인은 조회 시 Table 조인을 할 때 Table Join on이었던 것이 Table Join where로 수정되어 있었던 문제였다. 그래서 이번 포스팅.. 2021. 10. 2.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 04 2021.09.24 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 2021.09.23 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Fra.. erjuer.tistory.com 이어서 이번 포스팅은 Session을 set하고 get하는 API를 하나 뚫어놓고 redi.. 2021. 9. 26.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 03 2021.09.23 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개.. erjuer.tistory.com 이어서 Spring Boot Framework에 설정은 다 완료했고 실제 redis를 조회하기 위한 redis.. 2021. 9. 24.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 02 2021.09.22 - [개발 지식/Spring Framework] - [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 [Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개발을 진행하던 중 로그인 사용자(고객센터 또는 대리점 혹은 대리점 직원)의 정보를 바탕으로 권한을 체크하는 로직이 필요하게 되었다. 전체적인 아키텍쳐 erjuer.tistory.com 이어서 우선 Spring session으로 redis를 활용하기 위해서 프로젝트의 pom.xml 또는 build.gradle에 의존성을 추가한다. // pom.xml org.springframework.session spring-.. 2021. 9. 23.
[Redis Session] Spring Boot에서 Redis Session 활용하기 - 01 회사 프로젝트 내 맡은 파트에서 개발을 진행하던 중 로그인 사용자(고객센터 또는 대리점 혹은 대리점 직원)의 정보를 바탕으로 권한을 체크하는 로직이 필요하게 되었다. 전체적인 아키텍쳐가 MSA로 구성되어 있다보니 각각의 서비스별로 데이터를 관리해야 했고 내가 맡은 서비스 내에서 매번 고객 데이터 조회시 로그인 유저의 권한을 바탕으로 필터링을 해야 했다. 유저의 데이터는 타 서비스의 API 호출을 통해 얻을 수 있었는데 매번 고객 데이터 조회 시 유저 데이터의 API 호출 하는 것은 그 호출 시간 또한 전체 고객 데이터 조회하는 시간에 추가 되어 아주 바람직하지 못한 방법이라 생각했다. 그래서 효과적인 방법을 고민하다가 유저 데이터값들을 session에 보관하고 필요할 때 꺼내쓰는 방법을 생각했다. pac.. 2021. 9. 22.
[JPA] 1. JPA 공부를 시작해보자 약 4개월만에 블로그에 글을 쓰는 것 같다. 작년 12월 LG유플러스 개발자로 입사한 후 프로젝트 투입을 위해 인프런 교육을 신청해서 받았는데 말로만 들었던 JPA에 대해 배울 수 있었다. JPA 기초부터 JPQL, queryDSL 그리고 실제 API 적용 관련해서 정리를 해보고자 한다. 사실 대부분 회사 그리고 전 회사 같은 경우에는 Java Spring Framework와 DB간의 연결을 Mybatis를 이용하여 연동을 진행하였는데 SQL 쿼리 짜는 것에 상당한 리소스가 쓰였고 xml파일에 쓰다보니 약간의 오타가 있을 경우에도 바로 캐치하지 못하고 실행 후 DB 연결하여 조회했을 때 에러 부분(빨간..)을 찾을 수 있었다. 하지만 JPA을 이용하면 개발자가 객체 형태로만 개발을 진행하고 나머지는 JP.. 2021. 6. 21.
[Flutter] Mac Flutter 설치 및 환경 변수 정리하기 올해 목표로 잡은 것이 하나 있다. 토이프로젝트 완성 어떠한 서비스를 만들 것인지는 머리속으로 구상 중에 있고 Front와 Back 모두 공부겸 해보기로 했다. APP 서비스를 생각했기 때문에 Front와 Back 모두 어떤 언어와 프레임워크를 써야할지 고민했고 Front는 Flutter를 사용해보려고 한다. 이렇게 Flutter 첫번째 게시글로는 Mac에 Flutter 설치 및 환경 변수 정리하기라는 제목으로 적어볼 것이다. 1. Flutter 설치하기 flutter-ko.dev/docs/get-started/install/macos#update-your-path 맥OS에서 설치 flutter-ko.dev Flutter 홈페이지에서 호환되는 Flutter를 다운 받는다. Flutter - SDK를 다운.. 2021. 2. 2.
[취업] 4. 2020년 하반기 LG유플러스 경력 이직 후기 (최종 면접) - 끝 https://erjuer.tistory.com/72?category=949327 [취업] 3. 2020년 하반기 LG유플러스 경력 이직 후기 (실무 면접) https://erjuer.tistory.com/71 [취업] 2. 2020년 하반기 LG유플러스 경력 이직 후기 (실무테스트) https://erjuer.tistory.com/70?category=949327 [취업] 1. 2020년 하반기 LG유플러스 경력 이직 후기 (서류) 20.. erjuer.tistory.com 실무면접 썰에 이어 이번에는 최종(임원)면접 썰을 푸려고 한다. 진짜 길고 길었던 실무면접 합격 통보를 뒤로 한 채 최종면접을 준비하게 되었다. 그런데 준비할 것이 없었다. 실무면접에서 말했던 모든 것들이 그대로 최종면접 때 이야기.. 2020. 12. 5.
[취업] 3. 2020년 하반기 LG유플러스 경력 이직 후기 (실무 면접) https://erjuer.tistory.com/71 [취업] 2. 2020년 하반기 LG유플러스 경력 이직 후기 (실무테스트) https://erjuer.tistory.com/70?category=949327 [취업] 1. 2020년 하반기 LG유플러스 경력 이직 후기 (서류) 2017년 12월에 이어 오랜만에 취업 관련하여 이렇게 글을 남긴다. 2018년 2월 롯데정보통신 입사 이후.. erjuer.tistory.com ​ 실무 테스트에 이어서 실무 면접 썰을 풀어보자. 실무 테스트 이후 2주 후 정도에 발표 난 것 같다. 9월달에 일어난 일이라 정확한 차이는 가물가물하다. 암튼 예상치 못한 실무 테스트 합격 후 면접 준비에 들어갔다. 친절한건지는 모르겠으나 LG유플러스 면접 안내문에서 실무 면접 대.. 2020. 12. 5.
[취업] 2. 2020년 하반기 LG유플러스 경력 이직 후기 (실무테스트) https://erjuer.tistory.com/70?category=949327 [취업] 1. 2020년 하반기 LG유플러스 경력 이직 후기 (서류) 2017년 12월에 이어 오랜만에 취업 관련하여 이렇게 글을 남긴다. 2018년 2월 롯데정보통신 입사 이후 사실 2018년 상/하반기, 2019년 상/하반기 2020년 상/하반기까지 신입 지원을 했던 것 같다. 중간중 erjuer.tistory.com 서류편에 이어 이번에는 실무 테스트 썰을 풀어보자. 코로나 19 2.5단계 이유로 기존 실무테스트 일정보다 더 늦게 테스트를 보게 되었다. 특히 테스트에 알고리즘 뿐만 아니라 IT 지식 특히 SQL 쪽은 너무 자신이 없었다. SQL 공부는 다행히 학부시절 저장해 놓은 오라클 강의 PDF 파일로 하며 친구에.. 2020. 12. 5.
[취업] 1. 2020년 하반기 LG유플러스 경력 이직 후기 (서류) 2017년 12월에 이어 오랜만에 취업 관련하여 이렇게 글을 남긴다. 2018년 2월 롯데정보통신 입사 이후 사실 2018년 상/하반기, 2019년 상/하반기 2020년 상/하반기까지 신입 지원을 했던 것 같다. 중간중간 경력 이직도 지원해봤었고 그 중 코테 통과하여 면접까지 진행한 네카라쿠배도 있었다. 물론 최종에서 미끄러지긴 했지만... 사실 학부시절부터 통신사를 가고 싶어했다 SKT, KT, LGU+, 그 이유는 과가 정보통신공학과로 통신쪽에 관심이 있어 공학 수학이나 관련 과목을 듣는 것이 매우 좋았고 또 통신사라는게 내가 생각하기에는 진짜 탑 분야의 기업이기도 했다. 하지만 2015년 앱 개발 헤커톤 이후에 소프트웨어 개발자라는 목표를 가지게 되어 컴퓨터 공학을 복수전공하게 되었고 지금 롯데정보.. 2020. 12. 5.
[취업] 2. 2017년 하반기 롯데정보통신 스펙태클 최종 합격 후기(면접) 1을 이어서 https://erjuer.tistory.com/68 [취업] 1. 2017년 하반기 롯데정보통신 스펙태클 최종합격 후기(서류) 이 글은 나중에 2018년 상반기, 하반기 더 나아가 모든 롯데 스펙태클을 준비하시는 분에게 참고가 되고자 적는 것이는 개뿔이고 그동안 취업 준비했던 것을 생각하며 내 일기처럼 적어보려고 합 erjuer.tistory.com 스펙태클의 면접은 이틀로 이루어져 있다. 하루는 실무 과제를 하고 그다음 날은 과제 결과물을 바탕으로 역량면접, 인성면접이다. 첫째 날에는 실무과제로 총 3개의 주제 중 하나를 선택하여 하게 되어 10시부터 18시까지 진행하도록 하였다. 그 주제를 여기다가 올려도 되는지 몰라 올리지는 못하지만 쪽지나 댓글 남겨주시면 알려드릴 수도..? 암튼 간.. 2020. 12. 5.
[취업] 1. 2017년 하반기 롯데정보통신 스펙태클 최종합격 후기(서류) 이 글은 나중에 2018년 상반기, 하반기 더 나아가 모든 롯데 스펙태클을 준비하시는 분에게 참고가 되고자 적는 것이는 개뿔이고 그동안 취업 준비했던 것을 생각하며 내 일기처럼 적어보려고 합니다. 그래도 혹시 방문하셔서 읽어보시고 궁금한 점이 있으면 댓글 남겨주세요! 최대한 아는 것에 한해서 답변드리겠습니다. 여러 기업에 자기소개서를 쓰고 몇 개는 통과되어 인적성까지 봤지만 탈락이라는 결과를 받고 있을 때 눈에 띄는 공고가 있었다. 롯데 그룹의 스펙태클 즉 블라인드 채용으로 순수한 실력으로 지원자를 체크하겠다는 것인데 사실 스스로 내가 가진 역량을 낮게 평가하고 있어 지원하는데 주저했었다. 게다가 스펙태클이라는 기사를 찾아봤을 때 롯데의 인재개발원의 담당자가 현업 4~5년 차 정도의 실력을 가진 인재를 .. 2020. 12. 5.
[프로그래머스] 가장 먼 노드 https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solutio.. 2020. 10. 9.
[프로그래머스] 소수 찾기 https://programmers.co.kr/learn/courses/30/lessons/42839# 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 � programmers.co.kr 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이.. 2020. 9. 20.
[티스토리 블로그 수정] Book Club 스킨 수정 (가로 넓이, 한 줄 갯수, 코드블럭) 내 생각으로는 개발자분들이 타 블로그보다 티스토리 블로그를 선호하는 이유는 자기자신만의 스킨이나 폰트 등으로 커스텀 가능하다는 점이라고 생각한다. 이에 따라 나 또한 기존 스킨을 사용하면서 조금 바꿨으면 하는 점이 몇개 있었는데 1) 코드 블럭 Font 변경 : D2coding 2) 게시글 max-width 값 변경 3) Book Club 스킨 홈 화면 가로 한 줄 배치 게시글 수 변경 4) 전체 Font-family 변경 4개 정도 되었다. 1) 코드 블럭 Font 변경 : D2coding 가장 우선으로 한 것은 1번, 코드 블럭 폰트를 D2coding로 변경하는 것 이었다. 더 자신만의 커스텀을 좋아하는 개발자들은 따로 JS를 만들어 사용했는데 난 그냥 간단하게 div, dl, dt, dd, ul, .. 2020. 9. 19.
[프로그래머스 7daySQL 챌린지] 6일차 -2 보호소에서 중성화한 동물 https://programmers.co.kr/learn/courses/30/lessons/59045 코딩테스트 연습 - 보호소에서 중성화한 동물 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME.. 2020. 9. 19.
[프로그래머스 7daySQL 챌린지] 6일차 -1 오랜 기간 보호한 동물(1) https://programmers.co.kr/learn/courses/30/lessons/59044 코딩테스트 연습 - 오랜 기간 보호한 동물(1) ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NA.. 2020. 9. 19.