전체 글
-
[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 형태로 배포할 것인가? 전자의 경우, 인가에 필요한 클라이언트 비밀 값을 함께 묶어서 배포해야 했다. 이 부분이 제일 맘에 들지 않았다. 후자의 경우, 무조건 아웃바운드로 외부망을 타야 했다. 선택 여기서 후자를 선택하게 되었는데 그 이유는 다..
-
[오브젝트] 객체, 설계개발/프로그래밍 2023. 2. 12. 21:46
모듈이 가져야 하는 기능 모듈은 제대로 동작해야 하고, 변경 용이성을 가지며 이해하기 쉬워야 한다. 일반적으로 코드로 구현되는 모듈이 기능적으로 문제가 있다면 코드의 로직을 바꾸면 된다. 하지만 다른 두 가지 이유에 충족하지 않는다면 어떻게 해야할까? public class Theater { private TicketSeller ticketSeller; public Theater(TicketSeller ticketSeller) { this.ticketSeller = ticketSeller; } public void enter(Audience audience) { if (audience.getBag().hasInvitation()) { Ticket ticket = ticketSeller.getTicketO..