development

[Java] CompletableFuture

지난 포스팅에 이어 CompletableFuture 에 대해 포스팅을 하려고 합니다.

이전 포스팅을 한번씩 읽고 오시면 CompletableFuture 를 왜 학습하게 되었는지 배경지식을 이해할 수 있을 것으로 보여집니다.

@Async 로 시작되었던 비동기 프로그래밍의 마지막 포스팅이 되지 않을까 싶습니다.

[Spring] @Async 사용 방법과 주의사항
[Spring] ThreadPoolTaskExecutor 에 대한 짧은 지식
[Java] ExecutorService, Executors

8 min read

[Java] ExecutorService, Executors

요즘 비동기관련 포스팅을 자주하게 되는 것 같습니다. 그동안 실무적으로 비동기 로직을 적용해 본적이 없었는데, 보다 보니 볼게 참 많은 것 같네요.

스프링에서 제공하는 @Async 를 이용한 비동기 방식과 ThreadPoolTaskExecutor 에 대한 짧은 포스팅에 이어, 오늘은 Java 에서 제공하는 ExecutorService 와 Executors 에 대해 알아보겠습니다.

[Spring] @Async 사용 방법과 주의사항
[Spring] ThreadPoolTaskExecutor 에 대한 짧은 지식

4 min read

@RequiredArgsConstructor 와 @Qualifier 사용시 주의점

팀 자체 개선 프로젝트 진행 중 트러블슈팅을 하면서 알게된 내용을 포스팅 하고자 합니다.

이론상으로는 아무 문제 없이 구현이 되었어야할 이슈로 이틀간 삽질을 하여, 저 같은 삽질을 하지 않았으면 하는 마음에 포스팅을 합니다.

3 min read

kotlin 을 이용한 DynamoDB 조회 방법

작년 한해 동안 만든 자체 프로젝트 언어를 Java 에서 Kotlin 으로 변환하기로 하여, 샘플 코드를 만들면서 삽질한 내용을 포스팅 해봅니다.

Kotlin 의 새로운 문법에 대한 적응도 쉽지 않은 상태에서, DynamoDB 조회 로직을 구현하면서 겪은 내용이며, 저와 같은 삽질의 시간을 보내지 않았으면 하는 마음에 기록을 남겨두니 많은 도움이 되면 좋겠습니다.

5 min read

[Test Code] thenReturn vs doReturn 차이점

요즘 팀 자체 개선 프로젝트에 테스트 코드를 작성하느라 이것저것 검색하며 하던 중 알게된 내용을 포스팅 하고자 합니다.

단위 테스트 코드 작성을 위해서 mocking 이 필수적으로 사용됩니다. 특정 클래스를 mocking 하고, 해당 클래스의 메소드 실행시 저희가 예상하는 값을 리턴 하도록 설정을 많이 하게 되는데요.

이때 사용하는 문법이 when(클래스.메소드(파라미터)).thenReturn(응답값) 을 주로 사용해왔습니다.

~1 min read

[Test Code] Json 에서 ElasticSearch SearchResponse 객체 변환하기

TDD는 아니지만 팀 자체 개선 프로젝트에 테스트 코드를 넣으면서 엄청 삽질한 내용을 포스팅 하고자 합니다.

현재 진행 중인 프로젝트에서 2가지 DB를 사용하는데요, 하나는 DynamoDB 와 나머지는 ElasticSearch 를 사용 중에 있습니다.

단위 테스트 코드를 작성 하다보니 ES 의 응답을 mocking 해야 하는 케이스가 발생하였고, 일반적인 방법으로 mocking 이 되지 않는 다는 것을 알게 되었습니다.

1 min read

[IntelliJ] execution failed for task ‘ test’. no tests found for given includes (–tests filter)

오늘은 IntelliJ 로 Gradle 프로젝트 생성 후 테스트 코드 실행 시 발생한 오류와 해당 오류를 해결한 내용을 포스팅 하고자 합니다.

팀 자체 개선 프로젝트에 테스트 코드 작성을 위해 PowerMock 이라는 라이브러리가 필요해 신규 프로젝트 생성하여, 몇가지 확인을 해보고자 하였습니다.

하지만 테스트 코드 실행시 아래와 같은 에러가 발생 하였습니다.

~1 min read

[ES] Aggregation 사용시 default size

오늘은 Elastic Search Aggregation 기능 사용간 겪었던 이슈와 그를 해결한 내용을 포스팅 하고자 합니다.

팀내 자체 개선 취지로 작은 프로젝트를 진행하는 과정에 겪은 트러블 슈팅 내용에 대해 자세히 적도록 하겠습니다.

2 min read

자바 자원 해제(close) 간단하게 하는 방법

오늘은 자바에서 파일 등을 읽을때 자원 해제(close)를 해줘야 하는데, 매번 finally 절에 일일히 기입할 필요 없이, 간편하게 해주는 코드를 살펴 보도록 하겠습니다.

1 min read

JOIN 시 USING 과 ON의 차이

오늘은 두 테이블간 JOIN 시 사용되는 두가지 키워드 (USING, ON) 의 차이에 대해 간단히 포스팅 해보도록 하겠습니다.

~1 min read

DynamoDB 페이징 처리 방법

오늘은 DynamoDB 페이징 처리하는 방법에 대해서 간단하게 작성을 해보려고 합니다.

각 DB 마다 페이징처리를 위한 다양한 방법을 제공하는데, DynamoDB 역시 별도의 페이징 처리 방법을 가지고 있었습니다.

1 min read

AWS Credentials Spring 설정 방법

오늘은 새로운 프로젝트 코드 베이스 세팅을 하면서, DynamoDB 연동을 위해 AWS Credentials 설정 하면서 알게된 방법에 대해 간단히 포스팅 하고자 합니다.

1 min read

HTTP GET 메소드와 Body Request

현재 진행 중인 프로젝트를 하면서 여러가지 API 를 개발하고 있던 중 한가지 알게된 사실에 대해 기록을 하고자 포스팅을 합니다.

다름 아닌, GET Method API 사용 시 Body Request 로 Json 요청 값을 넣은 API 에 대한 이야기 입니다.

1 min read

Spring Boot 외부 설정파일 우선순위

Spring Boot 외부 설정파일에 대한 우선순위에 대해 팀원의 저에게 낸 퀴즈 정답을 까먹지 않게 기록해두려고 작성합니다.

1 min read

Intellij properties 파일 한글 깨짐 현상

이클립스를 쓰다가 IntelliJ 로 전환 후 properties 파일의 한글 깨짐 현상이 발생하여, 해당 내용 조치 방법을 간단히 적어 두고자 합니다.

(맨날 까먹어서..🤣)

~1 min read

UriComponentBuilder를 이용하여 쉽게 URI 만드는 법

회사에서 작업 중 URI 를 Map 의 Key, Value 로 동적으로 구성하는 코드를 작성하게 되었습니다.

별 생각없이 String 또는 StringBuffer 를 이용하여 코드를 작성 하였으나, 동료 개발자분의 코드 리뷰 후 깔끔해진 제 코드를 보고

내가 모르는 다양한 클래스들이 유용한 기능을 제공 해주고 있다는걸 또 한번 깨닫고 되도록 기록하기 위해 포스팅을 올립니다.

2 min read

Annotation 사용시 주의할 것들

개발자의 불필요한 코드 작성을 줄여주기도 하고, 개발자의 퍼포먼스를 높혀주는 다양한 어노테이션이 있습니다.

이런 장점 때문에 어노테이션의 정확한 의미를 모르고 사용하다 보면, 오히려 예상치 못한 오류를 만들어 내는 경우가 있습니다.

저도 최근에 알게된 몇가지 어노테이션의 주의점에 대해 간략히 적어 보고자 합니다.

3 min read

Elasticsearch Query DSL

이직 후 2달이 지난 지금 시점에서야 데이터 조회 방법을 학습 해보기로 마음 먹었습니다..😅

현재 직장에서는 3가지의 종류(MySQL, DynamoDB, Elasticsearch)의 데이터 저장소를 사용하는데, 저희 모듈 메인 DB인 DynamoDB 보다 먼저 ES(Elasticsearch) 의 데이터 조회 방법을 알아 보고자 합니다.

5 min read

IntelliJ IDEA(인텔리제이) 꿀 단축키 🍯

오늘은 현재 사용 중인 IDE인 IntellJ 의 단축키에 대해 포스팅을 해보려고 합니다.

IDE 란?
Integrated Development Environment 의 약어로 개발자에 사용하는 툴을 말합니다.

과거 군대에서 행정병으로 근무한 경험 때문인지, 개인적으로 개발 업무뿐 아니라 컴퓨터 작업(문서 등)을 할 때 단축키를 많이 알고 잘 사용하면 남들보다 손이 빠르다는 얘기를 듣게 되는 거 같더라구요.

물론 작업 속도도 빨라지겠죠? 마우스를 욺직이고 클릭을 몇 번 할 때 단축키 한방으로 샤샥!⚡️

얼마 전 팀 막내(부럽..😔)분이 알려준 너무 좋은 단축키를 듣고 반성을 하며 앞으로 이 포스팅을 계속 업데이트해보려 합니다.

1 min read

Dynamo DB

저에겐 너무나 생소하지만, 현재 맡은 모듈에서 사용 중인 DB인 Dynamo DB에 대해 학습한 내용을 간단히 포스팅 해보려고 합니다.

~1 min read

CORS

신규 입사한 회사 공통 라이브러리 소스를 보다 CorsRegistry를 통해서 CORS 설정하는 소스를 보고 CORS에 대해 자세히 모르는거 같아서 오전내내 읽어본 내용을 포스팅으로 옮겨 봅니다.

3 min read

성능 개선 🐢 🔜 🐇

전 직장에 입사 후 다양한 신규 서비스 개발과 운영 업무를 진행하였지만, 당시 가장 큰 목표는 성능 개선이었습니다.

입사 당시 카톡플친 발송만 되어도 제니퍼가 불바다가 되는 상황이었기에 다양한 방법을 통한 성능 개선이 필요했었죠.

제니퍼의 x-view 가 아래와 같이 되는 상황을 겪어본 사람만이 그 공포감을 알 것입니다. 🤯🤬

x-view

그 과정에서 제가 경험한 간단한 성능 개선 방법들을 정리해보려고 합니다.

2 min read
Back to Top ↑

book

[책] 만들면서 배우는 클린 아키텍처 - 1,2,3,4장

오늘은 클린 아키텍처 관련 책인 만들면서 배우는 클린 아키텍처 를 읽고 정리해둔 내용을 포스팅하려고 합니다.

해당 책은 얇아서 진입장벽이 낮았던 책이었고, 예제 코드를 통해 헥사고날 아키텍처를 간접적으로 접해볼 수 있는 기회가 되었다고 생각합니다.

만들면서 배우는 클린 아키텍처

이번 포스팅에서는 1,2,3,4장 내용을 다루고자 합니다.

01장 계층형 아키텍처의 문제는 무엇일까?
02장 의존성 역전하기
03장 코드 구성하기
04장 유스케이스 구현하기

5 min read

[책] 도메인 주도 개발 시작하기 - Chapter 1,2

오늘은 우아콘2024 관련 유튜브 영상 DDD 그거 그렇게 하는 거 아닌데 를 보다 팀에서 같이 스터디를 하며 읽었던 최범균님의 도메인 주도 개발 시작하기 책이 생각나서 스터디 하면서 정리해둔 내용을 포스팅으로 옮겨두면 좋겠다 싶어서 포스팅을 하려고 합니다. 도메인 주도 개발 시작하기

이번 포스팅에서는 챕터 1,2 내용을 다루고자 합니다.

chapter 1. 도메인 모델 시작하기
chapter 2. 아키텍처 개요

8 min read

[책] 읽기 좋은 코드가 좋은 코드다 - 1,2장

계속 읽던 책을 마무리 하지 못 하고 다른 책을 펼치게 되는것 같네요.

이번에는 ‘읽기 좋은 코드가 좋은 코드다’ 라는 책을 읽으며 내용을 정리 해보려고 합니다.

이번에는 반드시 완독 할 수 있기를 🤣

책 정보
책 링크

3 min read

[책] 객체지향의 사실과 오해 - 1장

객체 지향의 사실과 오해라는 책을 읽으며, 메모한 내용을 간단히 옮겨두려고 합니다.

다소 이해되지 않는 내용이 있더라도 단순 메모 정도로 생각해 주시면 감사하겠습니다.

책 정보
책 링크

3 min read
Back to Top ↑

lecture

[강의]Practical Testing: 실용적인 테스트 가이드 - 1

오늘은 새로 이직한 회사에서 다행히(?) 테스트 코드를 많이 활용하고 있어, 그간 소홀히 했던 테스트 코드에 대해 공부를 좀 해보자는 마음에 새로 신청한 강의 내용을 간단히 정리해 보고자 합니다.

유트브 채널 개발바닥의 ‘배달의민족 합격한 신입 개발자 이력서 공개합니다.’ 라는 영상으로 유명한 박우빈님의 인프런 강의 Practical Testing: 실용적인 테스트 가이드 를 듣고 내용을 정리한 것이니 참고 부탁드립니다.

테스트 코드에 대해 실무적으로 경험이 적은 저 같은 개발자나 신입 개발자 분들을 위한 실무 중심의 강의라고 하니 많은 관심 부탁드립니다.

2 min read

[강의]아파치 카프카 애플리케이션 프로그래밍 3편

오늘은 지난 포스팅에 이어 데브원영님의 [아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지! 강의의 마지막 포스팅이 될 것 같습니다.

지난번 포스팅은 아래 링크 참고 부탁드립니다.

[강의]아파치 카프카 애플리케이션 프로그래밍 1편
[강의]아파치 카프카 애플리케이션 프로그래밍 2편

7 min read

[강의]아파치 카프카 애플리케이션 프로그래밍 2편

지난번 포스팅에 이어 인프런에 있는 데브원영님의 [아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지! 학습한 내용을 간단하게 정리해 두고자 포스팅을 합니다.

지난번 포스팅은 아래 링크 참고 부탁드립니다.

[강의]아파치 카프카 애플리케이션 프로그래밍 1편

8 min read

[강의] Vue.js 시작하기 - Age of Vue.js

이번엔 인프런이라는 교육 사이트 중 (장기효)캡틴판교님Vue.js 시작하기 - Age of Vue.js 를 듣고 메모한 내용을 포스팅 해봅니다.

현재 Back-End 개발 업무를 맡고 있어, Vue 소스를 직접 개발할 일은 많지 않지만, 팀내 Front-End 개발 파트가 같이 존재하고, Vue 소스를 볼 수 있는 권한이 있어 공부를 해둬서 나쁠게 없을 것 같다는 생각에 공부를 하게 되었습니다.

읽기 좋게 풀어쓴 글이 아니라 단순히 메모를 옮겨 두워 핵심 키워드 정도만 파악할 수 있는 점 참고 부탁드립니다.

2 min read

[강의] Node.js - 4 Day

이번 수업에 들은 ‘모던 자바스크립트 살펴보기’에 대한 내용입니다.

이런 정보를 찾아보며 개발을 한다는 사실이 저에겐 흥미로웠습니다.

4 min read

[강의] Node.js - 3 Day

이번 수업에 들은 ‘Javascript 기초 이론’ 중 Closure 와 Prototype 에 대한 내용을 간략히 기입하고자 합니다.

Closure 는 몇번을 들어도 잘 이해가 안되는 개념 중에 하나죠.. 오늘은 이해를 할 수 있을지..😂

1 min read

[강의] Node.js - 2 Day

지난번에 이어 ‘초격차 패키지 : 한 번에 끝내는 Node.js 웹 프로그래밍’라는 fastcampus 프로그래밍 강의 내용 정리 차 기록합니다.

외부 강의는 처음인데, 기존에 상세히 알지 못한 것과 대충 넘어간 것까지 꼼꼼히 집어줘서 좋은 강의라고 생각합니다.

이번 수업에 들은 ‘든든한 개발 환경 설정’, ‘Javascript 기초 이론’에 대한 내용입니다.

3 min read

[강의] Node.js - 1 Day

사내 교육 시스템을 통해 1월 부터 ‘초격차 패키지 : 한 번에 끝내는 Node.js 웹 프로그래밍’ 라는 fastcampus 프로그래밍 강의를 듣게 되어 관련 내용을 정리하여 기록 해두려고 합니다.

Node.js 를 선택한 이유는 현재 외부 업체를 통해 프로젝트 중 인 시스템이 Node.js 로 되어 있고, 해당 시스템을 곧 인수인계 받아 운영을 해야했기 때문입니다.

그리고 해당 강의에 Front-End 관련 주제도 깊이 있게 다루는거 같아서 선택하게 되었습니다.

첫날 들은 수업은 ‘Javascript 생태계와 Node의 역사’, ‘Node.js 특징과 강점, 약점’ 에 대해 정리 해보겠습니다.

1 min read
Back to Top ↑

blog

블로그에 댓글 기능 넣기

추석 연휴가 끝나고 Djay 의 추천을 받아 저의 블로그에도 댓글 기능을 넣어 보기로 결심했습니다.

사실.. 댓글 기능을 넣어도 저 외에 들어오는 사람이 없는 거 같아 의미가 없다 생각하지만..

혹시 모르니 넣어 보려고 합니다.

~1 min read

jekyll + github 블로그 삽질기

어제 부터 Djay 님의 추천으로 Jekyll 과 GitHub 을 이용한 블로그 만드는 재미에 빠져, 여러 테마로 블로그를 만들어 보았습니다.

이미 Jekyll + GitHub 을 이용한 블로그 만드는 과정은 구글링을 통해 많이 찾을 수 있는 관계로 생략하고(귀찮..🤢), 그 과정 중 겪은 삽질들과 그걸 해결한 방법에 대해 간단하게 정리를 하려고 합니다.

3 min read

드디어 시작하는 블로그

개발자로써 자사 서비스를 하는 IT기업에 이직을 희망하며, 항상 느끼던 게 있었다.

바로 개발 지식에 대한 학습과 그 기록을 남기는 블로그의 필요성

~1 min read
Back to Top ↑

etc

맥북에서 윈도우 부팅 USB 만들기

집에서 쓰던 오래된 윈도우 노트북이 블루스크린이 계속 떠서 정말 오랜만에 포맷을 하기로 마음 먹었습니다.

하지만 해당 노트북 외에는 집에 윈도우가 설치된 PC도 윈도우 설치용 USB도 없는 상황이라 좌절을 하고 있었습니다.🤦🏻‍♂️

1 min read
Back to Top ↑