애플 소셜 로그인 (with. Spring)
·
TIL
앱스토어에 등록하기 위해서, 반드시 구현을 해야 하는 애플 로그인.공식 문서를 열심히 읽으면서 적용한 과정, 그리고 우여곡절한 경험을 글로 남기고자 합니다. 1. 인증 과정    2. Apple 서버에 로그인 권한 요청https://developer.apple.com/documentation/sign_in_with_apple/request_an_authorization_to_the_sign_in_with_apple_server 사용자가 '애플 로그인' 버튼을 클릭할 때 나타나는 로그인 페이지 url을 만드는 것부터 중요하다.특히 scope와 response_mode에 따라서 프론트와 서버에서의 구현이 달라질 수 있다. [Request]https://appleid.apple.com/auth/authoriz..
OAuth 2.0 개념, 동작 과정 이해
·
TIL
소셜 로그인을 진행하기 앞서, 기본이 되는 OAuth 프로토콜을 알아보고 정리하는 시간을 갖기 위해 포스트를 작성하였습니다. 개념을 한 줄 요약하자면 "OAuth는 서비스에서 '인증'을 분리하는 방식입니다." 1. OAuth 란?  우선 OAuth는 Open Authorization의 약자로, 이를 직역해보면 "권한 열기" 라는 의미를 가집니다. 실제 개발을 하며 사용되는 의미로는 다음과 같이 이해할 수 있습니다. 구글, 애플, 카카오톡과 같은 여러 플랫폼의 사용자 데이터에 접근하기 위해, 제 3자 클라이언트(우리의 서비스)가 사용자의 접근 권한을 위임받을 수 있는 표준 프로토콜이다.  plus. 지금 글을 작성하고 있는 tistory도 카카오 OAuth를 사용하고 있다.      등장배경OAuth 이..
SCC(Strongly Connected Component) 알고리즘
·
Algorithm
알고리즘 스터디를 하다가, 스터디원 한 분이 선정하신 문제를 풀다가 알게 된 유형이다.처음에는 union-find 문제인 줄 알았으나, 알고보니 새로운 유형의 문제였다.!! 착각했던 만큼이나 알고리즘의 글로서의 개념은 매우 비슷하다.union-find는 무향 그래프에서의 노드 간의 연결을, 동일한 부모 원소로 두면서 각 집합으로 표현을 한다.SCC는 유향 그래프에서의 노드 간의 명확한 연결만을, 동일한 부모 원소로 두면서 각 컴포넌트(집합)으로 표현을 한다.(그래서 `강한 결합 알고리즘` 알고리즘이라고 부른다.) 여기에서 "명확한 연결"이란 "두 노드 간의 자유로운 이동"을 뜻한다.무향 그래프에서는 간선에 방향성이 없어 자연스럽게 자유로운 이동이 가능했지만,유향 그래프에서는 간선에 방향성이 있어 a → ..
[MySQL] View Processing Alogrighms (MERGE vs. TEMPTABLE)
·
DB
view 테이블을 활용한 업무 중 문득 아래와 같은 의문이 들었다. 가정. view 쿼리 결과가 1000만 건일 경우1) view 쿼리가 실행될 때 where 절도 함께 실행되어 단일 쿼리처럼 동작할까?2) 1000만 건을 모두 조회한 후 where 절이 추가로 실행될까? 1번처럼 동작한다면 문제가 없겠지만, 2번처럼 동작한다면 조회 시 바라생하는 비용이 클 것이고, view를 사용하기 위한 명확한 이유가 필요할 것이다. 그럼 아래에서 이 문제에 대해 "view는 어떤 식으로 동작하는지?"와 "view를 사용하는 것이 정말 효율적인지?"에 대한 답을 찾아보며, "나는 view를 올바르게 사용하고 있을까?"에 대해서 생각해보는 시간을 가져보자.  우선 MySQL에서 뷰를 생성할 때 사용할 수 있는 `ME..
Stack 알고리즘
·
Algorithm
Stack, Queue은 자료구조를 시작했을 때, 가장 처음 만나는 자료구조이다. 하지만.. 알고리즘에서 Stack 유형 알고리즘을 풀 때에는 번번히 어려움을 마주한다..😂먼저 Stack 유형이라는 것을 파악하기에도 힘들고(DP / Greedy로 우선 접근), 파악한다고 하더라도 응용 문제에서는 자체 테스트케이스에서 틀리는 경우가 많다. 물론 지금까지 Stack 문제를 많이 풀지 않아서 그런 것 같기도 하지만..무언가 정답 코드에 테스트 예제를 디버깅하면서 추적하면 이해가 잘 되지만, 그 전에는 확 와닿지 않는 느낌이랄까 그렇지만 Stack 문제를 풀 때마다 새롭고, 재밌다🤩일반 구현에 비해 직관적(눈은 직관적이지만, 머리는 복잡한..)이고, 시간복잡도 측면에서도 대부분 O(N)으로 효율적이게 해결할..
Jenkins CI/CD 구축하기 2편 (with. Docker)
·
DevOps/CI-CD
1편에서 Jenkins를 구축하는 것까지 해보았으니, 2편에서는 본격적으로 Jenkins에서 'Item / Script / Plugin / Credential' 을 작성해보면서 CI/CD를 구축해보자. 1. Jenkins의 Item Jenkins에서 하나의 CI/CD 프로젝트를 구축하기 위해서는 Item을 생성해야 한다. Freestyle- GUI로 쉽게 작업을 설정할 수 있다.- 단일 빌드 작업에 많이 사용된다. Pipeline- 하나의 스크립트 파일(Jenkinsfile)을 통해 파이프라인을 코드로 정의할 수 있다. (버전 관리 가능)- 빌드, 테스트, 배포 등 여러 단계를 하나의 스크립트 파일로 쉽게 정의하여 작업에 대한 흐름을 파악하기 쉽다.- FreeStyle과 다르게 스크립트를 작성해야 하는..