분류 전체보기
-
[Spring Boot] Apple OAuth 적용하기스터디 & 프로젝트/Mineme 프로젝트 2023. 2. 26. 16:00
지금까지 Github, Google, 카카오에서 제공하는 OAuth API를 사용했었다. 하지만 별도로 진행하는 사이드 프로젝트에서 Apple 인가를 사용하기로 결정났고 내 파트로 정해졌다. 다른 API 벤더에 비해서 더 많은 로직을 요구하긴 한다. 하지만 그래도 천천히 따라해보면 크게 어렵진 않다. 우선 iOS 앱에서 최초 인가 이후 Access Token과 Authorization Code(인가 코드)가 함께 API로 넘어온다. 우리가 아는 일반적인 리디렉션과 콜백을 통한 OAuth 프로토콜 동작 플로우는 여기까지는 동일하다. 공개키를 통한 검증 API 요청으로 받은 액세스 토큰과 인가 코드를 통해서 액세스 토큰의 유효성을 검증해야 한다. 보통 내가 확인할 때에는 다른 벤더의 경우 OAuth API를..
-
[Swagger] NullPointerException 잡기스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 2. 23. 00:43
오류 발생 java.lang.NullPointerException: null at springfox.documentation.builders.ParameterMerger.lambda$mergedParameters$2(ParameterMerger.java:87) ~[springfox-core-3.0.0.jar!/:3.0.0] at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[na:na] at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(Unknown Source) ~[na:na] 스프링 부트 프로젝트를 빌드하고 실행하니 앱 런타임 시점에서 NPE가 발생했..
-
[오브젝트] 객체지향 프로그래밍개발/프로그래밍 2023. 2. 20. 23:19
객체 지향 객체 지향은 말 그대로 객체를 지향하는 것이다. 우리가 OOP를 통해서 개발할 때 클래스를 우선적으로 고려하지만 OOP의 본질은 "객체"가 주된 요소가 되는 것이다. 이 프로그래밍 패러다임을 위해서는 객체와 객체 사이의 관계를 파악해야 한다. 이를 기반으로 객체를 추상화하여 클래스를 만들고 그 사이 관계를 정의하는 것이 시작이다. 도메인 우리는 SW를 개발할 때 기능 등을 통해서 비즈니스 로직을 분류한다. 이때 로직이 특정 역할을 기준으로 나뉘게 되는데 이 로직을 위해 데이터가 어떠한 역할을 수행하고 그 범위는 어떻게 되는지를 결정하는 것이 도메인이다. 객체지향 프로그래밍 패러다임에서 도메인 또한 마찬가지로 객체, 클래스와 그 관계로 표현된다. 객체지향이 가지는 장점은 SW를 설계할 때 객체의..
-
[Softeer] Java - 통근버스 출발 순서 검증하기메모/알고리즘 2023. 2. 16. 22:28
Softeer 문제에서 주어진 조건을 만족하는 서로 다른 (i, j, k) 순서쌍의 개수를 출력한다. 첫 번째 위치에는 2번 버스, 두 번째 위치에는 3번 버스, 그리고 세 번째 위치에는 1번 버스가 기다 softeer.ai 너무 허탈하고 열 받아서 오랜만에 알고리즘 포스팅 한다... 문제 문제 설명은 위 링크에서 자세하게 확인할 수 있지만 간단하게 요약하면 "스택 정렬을 만들 수 없는 원인의 개수를 찾아라." 이다. 예를 들어서 6, 7, 5 과 같은 순서로 숫자가 있다. 이런 3개의 숫자가 쌍을 이뤘을 때, 가운데 수가 제일 크고 첫 번째 수가 두 번째로 크면 스택 정렬을 할 수 없다. 위와 같은 경우의 수의 개수를 찾는 문제다. 물론 각 숫자는 늘 연속적으로 존재하지는 않는다. 풀이 솔직히 보자마자..
-
[Azure] Spring Boot 프로젝트를 App Service에 배포하기스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 2. 15. 18:09
개요 프로젝트를 진행하면서 외부에 인가 서버를 하나 노출시켜야 할 일이 생겼다. 서비스 로직을 위한 API 서버는 DB와 함께 도커라이징 되어 로컬호스트 환경이던 SaaS로 서비스 되던 배포 예정이었다. 다만, 일부 비즈니스 로직이 요구하는 기능이 인가를 받아서 해당 외부 Github API에서 데이터를 긁어온 후 처리해야 했다. 여기서 고민한 점이 있다. 기존에 Docker-compose로 관리하던 솔루션에 함께 묶어 배포할 것인가? 아니라면 클라우드에 SaaS 형태로 배포할 것인가? 전자의 경우, 인가에 필요한 클라이언트 비밀 값을 함께 묶어서 배포해야 했다. 이 부분이 제일 맘에 들지 않았다. 후자의 경우, 무조건 아웃바운드로 외부망을 타야 했다. 선택 여기서 후자를 선택하게 되었는데 그 이유는 다..