profile
주니어 백엔드 개발자입니다.

[Algorithm] BOJ 1654 - 랜선 자르기

백준 1654 - 랜선 자르기이분 탐색 알고리즘을 사용해야 하며, 만들 수 있는 랜선의 최대 길이를 구해야 하기 때문에 Upper Bound(상한) 방식을 사용해야 한다.

2023년 4월 23일
·
0개의 댓글
·
post-thumbnail

[Project] Github Actions를 통한 CI 환경 구축하기

협업 시 코드의 안정성은 가장 중요한 요소 중 하나이다.여러 사람이 코드를 수정하기 때문에 다른 사람이 수정한 코드로 인해 테스트에 실패할 수 있다. 또한 내가 작성한 코드가 테스트를 통과하는지 다른 사람은 알 수 없다. 신뢰도, 안정성이 보장되지 않은 상태로 merg

2023년 3월 15일
·
0개의 댓글
·
post-thumbnail

[Project] Git Submodule 적용기

Git Submodule 적용 계기 application.yml과 같은 설정 파일에는 DB 접속 정보, secret key 등 민감한 정보가 들어있기 때문에, 일반적으로 .gitignore를 통해 repository에 올라가지 않도록 한다.

2023년 3월 10일
·
0개의 댓글
·
post-thumbnail

nGrinder 성능 테스트 도중 만난 에러들

Please set `java.io.tmpdir` property like following. tmpdir should be different from the OS default tmpdir. `java -Djava.io.tmpdir=${NGRINDER_HOME}/li

2023년 2월 26일
·
0개의 댓글
·
post-thumbnail

[Project] Spring Event 기반 email 전송과 트랜잭션 관리

대부분의 서비스는 회원 가입 시 환영인사/서비스 소개 등의 정보가 포함된 이메일을 전송한다. 이때, 회원 가입과 이메일 전송 비즈니스 로직을 함께 관리하면 어떤 문제가 생길까?현재 구현하려는 로직에서 높은 결합이 생길 경우 발생할 수 있는 문제는 다음과 같다.기본적인

2023년 2월 25일
·
0개의 댓글
·
post-thumbnail

Spring Event 기반 email 전송과 여러가지 Image Embedding 방식

Inline Embedding inline embedding은 이미지를 Base64로 encode하고, 이를 img 태그에 입력하는 방식이다. 하지만 inline embedding은 용량이 커지며, 많은 email client에서 Base64 encoded 이미지

2023년 2월 25일
·
0개의 댓글
·
post-thumbnail

[Project] Spring Scheduler로 조회수 로직 캐싱 구현하기 (feat. Redis)

이전 포스팅 >Spring Cache 적용으로 읽기 성능 최적화하기 (2) 이번엔 게시글에 대한 캐싱이다. 게시글 캐싱의 경우 마이페이지에 비해 고려해야할 사항이 많았다. 조회수 증가 좋아요 추가 이 두가지 요청은 빈번하게 일어나며, 이에 따라 게시글의 상태는 변

2023년 2월 23일
·
0개의 댓글
·
post-thumbnail

[JPA] @Query를 사용한 Update 쿼리 에러

Update는 Spring Data JPA에서 메서드 명명법을 지원하지 않는다고 한다. Dirty Cheking이라는 편리한 기능을 제공하기 때문인 것 같다.따라서 다음 두가지 방법을 사용할 수 있다.Dirty Checking직접 쿼리대부분 1번 방식을 사용할 것이고,

2023년 2월 23일
·
0개의 댓글
·
post-thumbnail

[JPA] Fetch join + Paging 에러

Spring Data JPA를 사용하여 fetch join + paging을 시도하던 도중 다음과 같은 에러를 만났다.현재 Comment와 Member 테이블 (N:1)이 존재하고, Comment List 조회 시 Member(작성자) fetch join + pagin

2023년 2월 22일
·
0개의 댓글
·
post-thumbnail

Spring Redis 역직렬화 삽질기 (feat. RedisSerializer)

redis에 객체(dto)를 저장할 때 serializer를 통해 직렬화해주어야 한다.이 때, 선택할 수 있는 여러가지 직렬화 방법이 존재한다.Class Type을 지정해야 하며, redis에 객체를 저장할 때 class 값 대신 Classy Type 값을 JSON 형

2023년 2월 20일
·
0개의 댓글
·
post-thumbnail

[Spring] Cache 적용으로 읽기 성능 최적화하기 (2)

Cache 적용으로 읽기 성능 최적화하기 1편나는 마이페이지와 게시글에 캐싱을 적용할 생각이다. 이유는 다음과 같다.마이페이지 조회가 빈번하게 일어난다.내가 개발하고 있는 서비스의 특성 상(운동 기록 플랫폼), 마이 페이지에 운동 기록과 인증 뱃지 등이 존재하기 때문에

2023년 2월 19일
·
0개의 댓글
·
post-thumbnail

[Spring] Cache 적용으로 읽기 성능 최적화하기 (1)

캐시를 적용하면 읽기(조회) 성능을 향상시킬 수 있다.RDB의 경우, disk에 접근해야하기 때문에 상대적으로 연산 수행이 오래 걸린다. 반면 redis와 같은 캐시는 메모리에서 동작하기 때문에 상대적으로 빠르게 연산을 수행할 수 있다.일반적인 캐싱 동작 방식은 다음과

2023년 2월 19일
·
0개의 댓글
·
post-thumbnail

[JPA] @Transactional의 readOnly는 내부적으로 어떻게 성능 향상을 도와줄까?

조회 전용 트랜잭션에 readOnly = true 속성을 사용하면 성능을 높일 수 있으며, 불필요한/의도하지 않은 데이터의 변경을 예방할 수 있다.지금까지는 이 정도로만 알고 사용해왔지만, 내부적으로 어떻게 동작하는지는 몰랐다. JPA 기초 (영속성 컨텍스트와 dir

2023년 2월 14일
·
0개의 댓글
·
post-thumbnail

MySQL 잘 사용하기 - Lock, Transaction ...

InnoDBMyISAMMEMORY현재는 거의 모든 곳에서 InnoDB를 사용하며, DEFAULT 값이다.예전에 사용되던 MyISAM의 경우, 트랜잭션을 지원하지 않는다.MEMORY는 말 그대로 메모리 DB이다. (disk X)다른 스토리지 엔진을 사용하려면 테이블 생성

2023년 2월 10일
·
0개의 댓글
·
post-thumbnail

[Design Pattern] Facade Pattern (퍼사드 패턴)

퍼사드 패턴(Facade Pattern)은 구조 패턴(Structural Pattern)의 한 종류로써, 복잡한 서브 클래스들의 공통적인 기능을 정의하는 상위 수준의 인터페이스를 제공하는 패턴이다.퍼사드 객체(Facade Object)는 서브 클래스의 코드에 의존하는

2023년 2월 6일
·
0개의 댓글
·
post-thumbnail

Jenkins와 Docker로 CI/CD pipeline 구축하기 (2)

🚀 Pipeline 구축 Jenkins Item이란? >Jenkins에서 CI/CD 파이프라인은 Item을 통해 구성할 수 있다. Item을 여러개 생성해 여러개의 파이프라인을 생성할 수도 있으며, 각각의 파이프라인은 각각 작성된 pipeline script를

2023년 1월 30일
·
0개의 댓글
·
post-thumbnail

Jenkins와 Docker로 CI/CD pipeline 구축하기 (1)

Jenkins의 장점 https://docs.docker.com/engine/install/ubuntu/ 최초 비밀번호 입력 최초에는 Administrator password를 입력해야 한다. 이 password는 /var/jenkins_home/secrets

2023년 1월 29일
·
0개의 댓글
·
post-thumbnail

AWS EC2 연결 쉽게 하기 (for Mac OS)

EC2 인스턴스를 생성하고, 터미널로 ssh 접속 시 매번 ssh -i "keyfile.pem" ubuntu@ec2123-456.ap-northeast-2.compute.amazonaws.com 과 같은 명령어를 치는 번거로움을 해결하는 방법이 있다. .pem 파일

2023년 1월 20일
·
0개의 댓글
·
post-thumbnail

브라우저에 쿠키(Cookie)가 전달되지 않는 문제 해결

어느날, 함께 프로젝트를 진행했던 동료 개발자분이 CORS 설정을 모두 마쳤음에도 불구하고 쿠키가 전달되지 않는 문제를 겪고 계셨다. 정확히 말하면, application tab에서만 확인할 수 없었다.결론부터 말하자면, 쿠키의 domain이 client domain의

2023년 1월 16일
·
0개의 댓글
·
post-thumbnail

[Network] TCP/IP 송수신 구조

TCP protocol은 3-way handshaking을 통해 연결을 수립하고 4-way handshaking을 통해 해제한다.3-way handshaking : 세션을 수립하는 과정이며, 목적지와 수신지를 확실히 하여 데이터 전송의 신뢰성을 보장하기 위한 절차이다4

2023년 1월 9일
·
0개의 댓글
·