[Git] GitHub Actions로 Pull Request Labeling 자동화하기
·
개발도구/Git
1. GitHub Actions에서 Workflow 생성하기리포지토리의 Actions 메뉴에서 set up a workflow yourself 버튼을 클릭하면 새로운 워크플로우 파일을 생성합니다. 오른쪽 사이드바의 GitHub Marketplace에서 "Auto Labeler"를 검색 후 선택합니다.검색 결과에서 View full Marketplace listing 버튼을 눌러 상세 설명을 확인합니다. 2. Workflow 코드 작성하기Marketplace 페이지에 있는 Create a Workflow 예시 코드를 복사하여 워크플로우 파일에 붙여 넣습니다. 작성한 코드를 저장하고 리포지토리에 커밋하면 GitHub Actions에 워크플로우가 등록됩니다. 3. labeler.yml 커스텀하기jimschub..
[Git] GitHub Actions로 Pull Request 자동 Assignees 지정하기
·
개발도구/Git
1. GitHub Actions에서 Workflow 생성하기리포지토리의 Actions 메뉴에서 set up a workflow yourself 버튼을 클릭하면 새로운 워크플로우 파일을 작성할 수 있습니다.이제 오른쪽에 있는 GitHub Marketplace에서 "Reviewer Assign action" 을 검색합니다.검색 결과에서 해당 액션을 클릭하고, View full Marketplace listing 버튼을 누르면 상세 설명을 확인할 수 있습니다. 2. Workflow 코드 작성하기 Marketplace 페이지에 있는 Usage 예시 코드를 그대로 복사한 뒤,reviewer 항목에 리뷰어로 등록할 팀원의 GitHub ID를 적어줍니다.(저는 reviewer 는 사용하지않으려고 주석처리했습니다.)..
[Back end] 네트워크 타임아웃(Timeout)
·
Back end
1. 네트워크 타임아웃이란?네트워크 타임아웃은 서버에 요청을 보냈지만 일정 시간 동안 응답을 받지 못하면 발생하는 에러입니다.타임아웃이 없다면 요청은 무한정 대기 상태에 빠져 서버 자원을 고갈시키고, 장애로 이어질 수 있습니다.즉, 타임아웃은 리소스를 보호하고 시스템 안정성을 유지하기 위한 안전장치입니다.2. 타임아웃의 종류✅ Connection Timeout정의: 클라이언트가 서버에 연결을 시도할 때, TCP 3-way handshake가 일정 시간 내에 완료되지 않으면 발생발생 지점: TCP 연결 수립 과정원인 예시: 방화벽 차단, 서버 다운, 잘못된 포트, 네트워크 단절실무 사례: 결제 API 연동 시, 클라이언트 방화벽에서 대상 서버의 IP/포트를 허용하지 않아 연결 실패할 경우 발생💡 (cc...
[Git] PR을 닫지 않고 Git 커밋 수정하기
·
개발도구/Git
개발을 하다 보면 이미 PR(Pull Request)을 생성했지만, 커밋 메시지를 수정하거나 작은 실수를 고쳐야 하는 경우가 있습니다.이때 PR을 닫고 다시 만드는 대신 기존 PR에서 커밋을 수정할 수 있습니다.오늘은 PR을 닫지 않고 커밋을 수정하는 Git 명령어를 소개합니다.1. 상황 예시PR을 생성하고 팀원에게 리뷰를 요청했는데, 커밋 메시지를 잘못 작성함또는 작은 코드 수정이 필요한데, 새로운 커밋을 추가하지 않고 기존 커밋에 반영하고 싶음이럴 때, 기존 PR을 그대로 유지하면서 커밋을 수정할 수 있습니다.2. 명령어 순서1️⃣ 최근 커밋을 소프트 리셋git reset --soft HEAD~1HEAD~1은 바로 이전 커밋을 의미합니다.--soft 옵션을 사용하면 파일 변경 사항은 그대로 스테이징 ..
[Spring] JPA - 프록시(Proxy)
·
Back end/Spring Project
1. em.find() vs em.getReference()엔티티를 조회할 때 JPA는 두 가지 방식을 제공합니다.em.find() ➡️ 즉시 로딩 데이터베이스를 통해 실제 엔티티 객체를 바로 조회합니다.즉시 쿼리가 실행됩니다.em.getReference() ➡️ 지연 로딩을 위한 가짜 객체(프록시) 반환 데이터베이스 조회를 미루는 프록시 객체를 반환합니다.필요할 때까지 쿼리가 실행되지 않고 대기합니다.2. 프록시란?프록시 객체는 JPA가 내부적으로 만들어 주는 가짜 객체입니다.하지만 실제 엔티티 클래스를 상속받아서 만들어지기 때문에 겉으로 보기에는 동일합니다.3. 프록시의 동작 원리프록시 객체는 내부적으로 실제 엔티티를 참조(target)로 보관합니다.프록시 객체를 호출하면 → 실제 엔티티의 메소드를 ..
[Spring] JPA - @MappedSuperclass
·
Back end/Spring Project
JPA를 사용하다 보면 여러 엔티티에서 공통으로 쓰이는 컬럼이 반복적으로 등장합니다.예를 들어, id, 생성일, 수정일, 작성자 같은 필드는 대부분의 엔티티에서 공통적으로 관리됩니다.이럴 때 JPA에서 제공하는 @MappedSuperclass를 사용하면 중복을 줄이고 깔끔하게 관리할 수 있습니다. 📖 @MappedSuperclass란?공통 매핑 정보를 모아두는 클래스엔티티가 아니며, 테이블과 직접 매핑되지 않음단순히 자식 엔티티에게 매핑 정보만 제공하는 역할따라서 em.find(BaseEntity) 같은 직접 조회는 불가능@MappedSuperclasspublic abstract class BaseEntity { @Id @GeneratedValue private Long id; p..
[Leetcode] 3. Longest Substring Without Repeating Characters
·
알고리즘/Java
✨ 문제 URLLeetCode 3. Longest Substring Without Repeating Characters✨ 문제 설명주어진 문자열 s에서 중복 문자가 없는 가장 긴 부분 문자열(substring)의 길이를 구하는 문제입니다.Substring: 문자열 내에서 연속된 문자들의 집합Subsequence(부분 수열)과는 달리 연속성이 보장되어야 합니다.📌 예시s = "abcabcbb" → 정답: 3 ("abc")s = "bbbbb" → 정답: 1 ("b")s = "pwwkew" → 정답: 3 ("wke")💡 접근 방법: Sliding Window + HashMap이 문제는 슬라이딩 윈도우(Sliding Window)와 해시맵(HashMap)을 활용해 효율적으로 풀 수 있습니다.윈도우(windo..
[Spring] JPA 양방향 연관관계와 연관관계의 주인
·
Back end/Spring Project
JPA에서 엔티티 간의 관계를 설정할 때 가장 중요한 개념 중 하나는양방향 연관관계와 연관관계의 주인(Owner) 입니다. 이는 데이터베이스 외래키(FK)를 누가 관리할지 결정하는 핵심 요소이므로 반드시 명확히 이해해야 합니다.🤔 연관관계의 주인이란?양방향 관계에서는 두 엔티티가 서로를 참조하지만,데이터베이스의 외래키는 단 한 곳에만 존재합니다. 따라서 JPA는 어떤 엔티티가 FK를 관리(등록·수정·삭제)할지 알아야 합니다.이 역할을 맡는 엔티티가 바로 연관관계의 주인(Owner) 입니다. 1:N 관계에서➡️ N(다) 쪽이 보통 외래키를 가지므로 주인이 됩니다.➡️ 1(일)은 mappedBy를 사용하여 자신이 주인이 아님을 명시해야 합니다.👉 즉, 1:N 관계에서는 항상 N 쪽이 주인이 됩니다.🤔 ..