전체 글
-
[MariaDB] 인덱스로 성능 향상 체감하기스터디 & 프로젝트/Init Cloud 팀 프로젝트 2023. 3. 3. 22:40
이유 프로젝트로 백엔드 API를 만들고 있었다. 이미 기능은 모두 완성되었고 리팩토링이나 버그 수정 등등 만이 남았다. 예전부터 DB 성능 개선을 한번 해보고싶어서 해볼까 했다. 그래서 가장 많이 들어왔던 적절한 Index 적용을 통한 조회 성능 개선을 하고싶었다. 근데 문제는 DB 자체의 레코드가 많지 않다는 것이었다. 진행하는 프로젝트 특성 상 일반적인 웹 서비스처럼 Insert, Update 쿼리가 많이 발생하지는 않고 DB에 저장된 기본 데이터를 조회하는 로직이 많았다. 그래도 뭐 일단 진행해보기로 했다. 인덱스는 PK가 아닌 UNIQUE VARCHAR 필드에 지정했다. 최초 시도 정말 규모가 작은 DB이다보니 솔직히 성능 향상을 체감하기는 어려울 것이라 생각했다. 그도 그럴 것이 히스토리를 관리..
-
[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개의 숫자가 쌍을 이뤘을 때, 가운데 수가 제일 크고 첫 번째 수가 두 번째로 크면 스택 정렬을 할 수 없다. 위와 같은 경우의 수의 개수를 찾는 문제다. 물론 각 숫자는 늘 연속적으로 존재하지는 않는다. 풀이 솔직히 보자마자..