본문 바로가기

728x90

전체 글

[Git] You have not concluded your merge (MERGE_HEAD exists). hint: Please, commit your changes before merging. Exiting because of unfinished merge. 이 메시지는 Git에서 병합(Merge) 작업을 완료하지 않고 중단한 상태라는 의미입니다. 즉, 이전에 git merge를 실행했는데 충돌(conflict)이 발생하거나 커밋을 완료하지 않아서 Git이 다음 병합을 막고 있는 것입니다. ✅ 1. 병합 상태 확인 git status✅ 2. 충돌 해결 (충돌이 있을 경우)충돌이 있는 파일을 직접 열어 충돌을 해결하고, 수정 내용을 저장한 뒤: git add ✅ 3. 병합 커밋 완료충돌을 해결하고 스테이징한 후: git commit✅ 4. 병합 다시 시도 (필요할 경우)이제 병합이 완료되었으므로 원래 하려던 병합 명령어를 다시 시도해도 됩니다:git merge ❗ 병합을 취소하고 싶다면? git merge --abort   정신 차리고 머지하십시오. 더보기
[MySQL] GET_LOCK()을 활용한 동시성 제어 — Spring Boot에서 안전한 주문 번호 생성하기 동시성이 중요한 시스템에서는 "동시에 들어온 요청이 같은 값을 쓰면 안 되는" 상황이 자주 발생합니다. 특히 주문 번호(billNo)를 생성할 때 순서를 보장해야 하는 경우, 단순한 카운트 기반 로직은 예상치 못한 중복 문제를 일으킬 수 있습니다.이번 글에서는 Spring Boot + MySQL 환경에서 GET_LOCK()을 이용해 이러한 문제를 간단하게 해결하는 방법을 소개합니다.💥 문제 상황예를 들어, 아래와 같이 특정 일자의 주문 건수를 카운트해서 billNo를 생성한다고 가정해봅시다: int orderCount = orderRepository.count(storeNo, regDate);int billNo = orderCount + 1;✅ 해결 방법: MySQL GET_LOCK() 사용MySQL은.. 더보기
GitLab CI/CD를 이용한 자동 배포 설정 가이드 🔧 GitLab CI/CD란?GitLab CI/CD는 GitLab에서 제공하는 지속적 통합(CI) 및 지속적 배포(CD) 도구입니다.코드를 푸시하면 자동으로 테스트, 빌드, 배포까지 실행할 수 있어 배포 자동화를 간편하게 구성할 수 있습니다.🚀 자동 배포 흐름개발자가 GitLab 저장소에 코드 푸시.gitlab-ci.yml 파일에 정의된 파이프라인 실행빌드/테스트 후 서버로 코드 배포(선택) 성공 알림, 슬랙 메시지 등 후처리📁 기본 파일 구조자동 배포를 위해 가장 중요한 파일은 루트에 있는 .gitlab-ci.yml 입니다.이 파일에 어떤 작업(단계, script 등)을 어떤 조건에서 실행할지 정의합니다.🧪 예시: Node.js 프로젝트를 EC2에 자동 배포stages: - build - d.. 더보기
[SQL] MySQL Slow Query Log 설정과 활용법 MySQL에서 성능 저하를 유발하는 느린 쿼리(Slow Query)를 파악하고 최적화하기 위해 Slow Query Log를 활용합니다. 이 글에서는 Slow Query Log를 활성화하고 관리하는 방법에 대해 알아보겠습니다.1. Slow Query Log란?MySQL에서 Slow Query Log는 특정 시간 이상 실행된 느린 쿼리를 기록하는 로그입니다. 성능 문제를 진단하고 최적화할 수 있는 중요한 자료로 활용됩니다.Slow Query Log의 필요성데이터베이스 성능 저하를 사전에 파악할 수 있음느린 쿼리의 개선점을 확인 가능성능 최적화와 모니터링에 유용2. Slow Query Log 확인 방법Slow Query Log와 관련된 변수를 확인하려면 아래 명령어를 사용합니다.SHOW VARIABLES LI.. 더보기
[Server] 무중단 배포 중 동일 프로세스 중복 문제 해결하기 무중단 배포를 진행하는 과정에서 동일한 Java 애플리케이션 프로세스가 두 개 떠서 충돌하는 경우가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 불필요한 프로세스를 종료하는 방법에 대해 알아보겠습니다.🛑 문제 상황무중단 배포 시 새로운 애플리케이션 인스턴스를 실행하다가 기존 인스턴스가 종료되지 않아 두 개의 프로세스가 동시에 떠 있는 상황이 발생할 수 있습니다. 이러한 경우 서비스 장애를 유발할 수 있으므로 빠르게 하나의 프로세스를 종료해야 합니다.🔍 프로세스 확인하기먼저 현재 실행 중인 Java 프로세스를 확인합니다.ps -ef | grep java결과 예시user 12345 1 0 15:10 pts/0 00:01:23 java -jar myapp-1.0.jaruser 12346.. 더보기
[JAVA] HikariCP VS SimpleDriverDataSource HikariCP를 사용하는 이유와 SimpleDriverDataSource 비교💡 왜 HikariCP를 사용할까?대규모 애플리케이션에서 데이터베이스와의 연결을 관리하는 것은 매우 중요합니다. Java 애플리케이션에서는 이러한 연결을 관리하기 위해 커넥션 풀(Connection Pool)을 사용합니다. HikariCP는 Java 생태계에서 가장 널리 사용되는 커넥션 풀 라이브러리로, 특히 Spring Boot와 같은 프레임워크와 함께 많이 사용됩니다.이 글에서는 HikariCP를 사용하는 이유와 SimpleDriverDataSource와의 비교를 통해 그 필요성을 명확하게 이해해 보겠습니다.💡 SimpleDriverDataSource와 HikariCP 비교특징SimpleDriverDataSourceHi.. 더보기
[Nuxt.js] page 별로 layout 다르게 적용하는 방법 퍼블분께서. . . 모든 페이지마다 header/contents/footer 영역을 모두 추가해두셨다.  탭1 탭2 탭3 ... ... ...  오 마이 갓 ~~~  처음엔 한두페이지 뿐이었던 관리자 화면이어서 그냥 뒀는데, 일이 커지기 전에 고쳐본다.   1. definePageMeta란?Nuxt 3에서는 definePageMeta를 사용하여 페이지의 메타 데이터를 설정할 수 있다. 이 메타 데이터에는 레이아웃(layout), 미들웨어(middleware), 캐시 설정(cache) 등 여러 설정이 포함될 수 있다.✅ 기본 .. 더보기
[Git] 프로젝트 수정 중 깃 원격 저장소 주소 변경 시 ! 와아아아 개발 중 회사 gitlab 서버가 이전되었다.  간단하게 새 주소로 push 하는 방법.   인텔리제이에서 터미널을 열어주고 ~ 최신 버전으로 PULL 받으면 준비 ~~  #1 기존 서버 원격 저장소 삭제git remote remove origin  #2 새 서버의 GitLab 프로젝트를 새로운 원격 저장소로 추가git remote add origin https://gitlab.your-new-server.com/group/project.git  #3 변경되었는지 확인 !git remote -v    간단하쥬위처럼 새로운 주소가 뜨면 그냥 끝이다. fetch 한번 하고 하던대로 push 하면 끝. 더보기