본문 바로가기
반응형

분류 전체보기96

Config data resource ... via location ... does not exist 배경 멀티 모듈 환경에서 신규 모듈을 추가 해당 신규 모듈에 property 파일을 추가 에러 신규 모듈의 property 파일을 다른 모듈에서 import 를 하니, 아래와 같은 에러가 발생 해결 방안 시도 1. 잘못 적은 부분이 있는지 확인하기 신규 모듈의 property 파일의 파일명과 import 하는 곳에 작성된 파일명이 동일한지 확인하기 보통 잘못 적었을 확률이 큰데 (e.g., 스펠링 오류), 이렇게 했는데도 안되면 시도 2를 해보자. spring: config: import: - 'classpath:xxx-yyy-zzz.yml' // 스페이스가 있으면 안됨 참고로 classpath: 하고 한칸 띄어쓰기를 했는데, 작동이 안되었다. 스페이스가 있으면 안되나보다. 시도 2. build.grad.. 2023. 3. 8.
[코틀린] 삼항연산자 사용하기 자바에서 프로그래밍을 할 때 삼항연산자를 즐겨 사용했습니다. 그 이유는 간단한 if-else 에 대해서는 one-line 에 작성할 수 있어서 가독성도 괜찮다고 생각하기 때문입니다. 최근에 코틀린을 사용하면서 자바처럼 삼항연산자를 사용하려고 했는데, 코틀린에서는 제공이 안된다는 사실을 알게 되었습니다. 코틀린에서는 어떻게 대체해서 사용할 수 있을지 알아보려고 합니다. 방법 1. if-else 사용하기 if 문구에 조건문을 입력하고, 참일 때의 값, 거짓일 때의 값을 입력한다. 괄호를 사용하여 표현식을 작성할 수도 있다. fun isCoffee(drinkType: String): Boolean { return if(drinkType.equals("COFFEE")) true else false } val d.. 2023. 3. 7.
[독서정산] Effective Java 2/E - 1부. 객체의 생성과 삭제 규칙 1. 생성자 대신 정적 팩토리 메소드를 고려해보자 정적 메소드에는 이름이 존재한다. 정적 팩토리 메소드에는 이름이 존재하기 때문에 생성자보다 반환될 객체의 특성을 더 잘 설명할 수 있다. 생산성을 높여주고 가독성을 높인다는 부분에서 공감한다. 대신 메소드의 이름을 잘 작명해야 하겠지? 아래 예시에서 reviewA 와 reviewC 는 단순히 생성자만을 활용했다. 파라미터의 개수가 작아서 관리하기 쉬울 수 있지만 파라미터 개수가 많아진다면? reviewB 와 reviewD 가 생성된 것처럼 정적 메소드를 활용하면 좀 더 이해하기 쉽게 표현할 수 있다. public static void main(String[] args) { Review reviewA = new Review("배송 굳", 5); // .. 2023. 3. 6.
[스프링] @ConstructorProperties 활용하기 (feat. Jackson 라이브러리) POST 형식의 REST API 를 작성할 때, 요청 값을 주로 JSON 형태로 전달받는다. 이 데이터를 내부에서 사용할 수 있도록 맵핑 DTO 가 필요하고 주로 @RequestBody 어노테이션을 활용하여 전달받게 된다. 다음과 같이 코드를 작성할 수 있다. @Getter public class SampleRequestBody { private final String sampleName; private final Long sampleNumber; public SampleRequestBody(String sampleName, Long sampleNumber) { this.sampleName = sampleName; this.sampleNumber = sampleNumber; } } @PostMapping.. 2023. 3. 5.
[프로젝트] 생각보다 쉽지 않았던 API 교체하기 MSA 환경에서는 주로 API 호출을 통해 타 서비스와 통신을 주고 받습니다. 타 서비스에서 제공하는 API 의 스펙이 변경되면 이 API 에 의존하고 있는 내부 서비스도 맞춰서 변경을 해주어야 합니다. 단순히 생각하면 기존 API 로의 호출을 끊고, 버전업이 된 API 로 호출하기만 하면 될 것 같습니다. 아래 그림처럼요. 하지만 이렇게 단순하지는 않았고, 좀 더 복잡했습니다. API 를 교체하는 방법에 대해 한번 정리해보고자 합니다. 들어가기에 앞서 용어 정리를 먼저 하려고 한다. 외부 서비스에서 제공되던 기존 API 는 "API v1" 외부 서비스에서 제공될 신규, 버전업된 API 는 "API v2" 상황에 대한 이해 API 를 교체해야 했던 당시 상황은 다음과 같다. 상황 1. API v1 의 D.. 2023. 3. 4.
[자바] 인터페이스와 추상 클래스 (feat. ChatGPT) 신입 개발자 단골 면접 질문이 있습니다. 자바의 인터페이스와 추상 클래스를 어떻게 활용할 수 있는지 예시와 함께 설명해보라는 것인데요. 저는 여태 개발을 하면서 인터페이스는 자주 사용했지만 추상 클래스는 자주 사용하지 않아 (거의 없었던 것 같습니다) 예시와 함께 한번 정리해보고자 합니다. 적합한 예시는 많겠지만 제가 좋아하는 "라면"을 가지고 예시를 들어볼게요. 그리고 요즘 유행하는 ChatGPT 의 도움도 살짝 받아보겠습니다. ChatGPT, 추상 클래스를 알려줘 ChatGPT 가 알려주는 추상 클래스는 하나 이상의 추상 메소드를 포함하는 클래스이다. 추상 메소드는 구현되지 않은 메소드로 자식 클래스에서 구현해야 한다. 자세한 내용은 ChatGPT 를 참고.. 결국 클래스의 종류인데, 하나 이상의 추.. 2023. 3. 3.
[독서정산] 함께 자라기 - 애자일로 가는 길 다른 분의 블로그를 보다가 우연히 "함께 자라기 - 애자일로 가는 길" 이라는 책에 대해 알게 되었고, 그 분께서 작성하신 책 리뷰를 읽게 되었습니다. 개발자로 성장함에 있어 어떤 방식으로 생각해 나가야 하는지에 대해 알 수 있을 것 같아 책을 구매하여 읽기 시작했습니다. 아래는 요약본과 저의 개인적인 느낀점, 생각이 포함되어 있습니다. 짧은 요약 무엇보다도 개발자의 실력이 중요하다. (경력 연차의 함정에 빠지지 말자.) 자신이 부족한 부분에 대해 꾸준히, 지속적으로 학습을 해나가야 한다. 뛰어난 개발자는 커뮤니케이션과 협력에 많은 시간을 투자한다. 애자일은 매일 고객에게 가치를 전하는 업무 프로세스이다. 1. 자라기 "스스로 생각하는 훈련을 해나가야 한다." "학교 학습과는 반대 되는 개념으로 야생 학.. 2023. 3. 1.
[컨퍼런스] Deview 2023 - Keynote 힘들게 예약했던 Deview 2023 Day 1 에 다녀왔습니다. 인상 깊었던 Keynote 강연에 대해 정리해두고자 합니다. Deview 2023 의 전체적인 주제는 AI 였다. 40분간 진행되었던 Keynote 는 AI 의 경쟁력과 네이버에서는 AI 를 어떻게 활용하고 발전시키고 있는지에 대해 공유되었다. 대부분의 시간을 하이퍼클로바X 를 홍보하는데 사용되었다고 생각한다. Keynote 는 김유원 네이버클라우드 대표의 발표를 시작으로 성낙호 네이버클라우드 하이퍼스케일AI 기술 총괄, 곽용재 네이버클라우드 CTO, 김용범 네이버서치 Chief Scientist 순으로 강연이 이어갔다. 모두 AI 와 관련된 주제로 소개를 해주셨다. 전체적인 내용은 초대규모AI 서비스를 제공할 수 있는 하이퍼클로바X 가 .. 2023. 2. 28.
반응형