맥북에서 Docker Desktop으로 GitLab 실행하기
·
노빠꾸 개발일지/GIT
이번 포스트에서는 Apple Silicon(M4) 기반 맥북에서 Docker Desktop을 이용해 **GitLab Community Edition(GitLab CE)**을 실행하는 방법을 소개합니다.docker-compose.yml 파일을 활용해 손쉽게 GitLab 컨테이너를 구성하고, 초기 설정까지 완료해보겠습니다. 1. docker-compose.yml 파일 생성먼저 GitLab 컨테이너를 정의하는 docker-compose.yml 파일을 생성합니다.M1, M2, M3, M4 맥북은 ARM 아키텍처 기반이기 때문에, platform: linux/amd64 설정을 명시해줘야 정상적으로 GitLab이 실행됩니다.version: '3.6'services: gitlab: image: gitlab/g..
Java에서 싱글톤 패턴 제대로 이해하기: 구현부터 주의점까지
·
노빠꾸 개발일지/Design Patterns
싱글톤 패턴이란?싱글톤 패턴이란 객체를 오직 하나만 생성하도록 보장하는 디자인 패턴이다. 주로 메모리 사용 최적화, 상태 공유, 공통 리소스 관리를 위해 사용된다. 예를 들어, 로그 시스템, 설정 정보 관리, DB 커넥션 풀 등에서 활용된다. 싱글톤 패턴의 문제점싱글톤 패턴의 기본 구현은 멀티스레드 환경에서 동시성 이슈를 발생시킬 수 있다.public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); ..
@RequestParam 와 @RequestBody 알아보기
·
노빠꾸 개발일지/SPRING
1. @RequestParma : URL 또는 폼 데이터 바인딩동작 : 서블릿 API가 합쳐 둔 request parameter map에서 값을 꺼내어 메서드 인자로 주입한다. 단순 타입, 배열, List, Map 모두 지원한다.GET, POST 구분 없음 : x-www-form-unlencoded POST도 동일하게 처리하므로 검색, 필터, 로그인 폼 모두 활용 가능하다.멀티파트 파일 : 파일 자체는 @RequestPart / MultipartFile을 쓰지만 파일명 같은 메타데이터는 @RequestParam으로 함께 받을 수 있다.@GetMapping("/books")public List list( @RequestParam(defaultValue = "0") int page, @Reques..
[GitLab] 맥북M4에서 Docker GitLab 설치해보기
·
노빠꾸 개발일지/GIT
이번 피드에서는 도커에서 GitLab을 설치해서 구동하는 방법을 정리해보겠습니다. 먼저 도커에 깃랩을 설치하기위해 도커 이미지를 찾아봅니다. GitLab이미지를 찾아보면 gitlab-ce, gitlab-ee가 있다.- gitlab-ce : community Edition- gitlab-ee : Enterprise Edition   이번 피드에서는 gitlab-ce 이미지를 이용해서 진행해보겠습니다. 1. 이미지 다운로드1) gitlab-ce 이미지 다운로드 docker pull gitlab/gitlab-ce:latest 2) gitlab-ce 컨테이너 실행docker run --detach \ --hostname gitlab.example.com \ --publish 80:80 --publis..
[Github Copilot] 깃허브 코파일럿 플랜 정리
·
노빠꾸 개발일지/GIT
이번 피드에서는 최근 AI코딩 어시스던트에 관심이 많아져서, 깃허브 코파일럿을 사용해보기 위해 Pro플랜을 신청해보려고 하는데, 관련 내용들은 간단히 남겨보겠습니다. 최근 AI를 이용한 코딩이 인기가 많아 ChatGTP, GitHub Copilot 등등의 여러 AI서비스들이 개발에 이용되고 있는데, 얼마전 GitHub Copilot의 무료플랜이 출시되어 사용해보고, 괜찮다고 생각하여, Pro버전을 신청해서 더 사용해보려고 합니다. https://github.com/features/copilot GitHub Copilot · Your AI pair programmerGitHub Copilot works alongside you directly in your editor, suggesting whole li..
[Intelij] 멀티모듈 프로젝트 구성해보기
·
노빠꾸 개발일지/JAVA
이번 피드에서는 멀티모듈 프로젝트를 구성해보겠습니다. 먼저 멀티모듈에 대해 간단히 알아보겠습니다. 멀티모듈 프로젝트는 하나의 Root 프로젝트 아래에 여러개의 독립적인 서브모듈(SubModule)로 구성된 프로젝트 구조를 의미합니다. 여기에서, 각 서브모듈은 독립적인 코드베이스, 설정, 빌드스크립트를 가질 수 있습니다.  1. ROOT 프로젝트 생성우선 기본이 될, Root 프로젝트를 생성해줍니다. 프로젝트 생성은 어렵지 않아 넘어가겠습니다. 프로젝트는 Gradle, Maven 기반의 Java프로젝트로 생성하면 됩니다. Root프로젝트에서는 별도의 코드없이 하위 모듈만 관리할 것이기 때문에, 생성이 완료된 프로젝트에서 src폴더는 삭제합니다.  여기까지 완료가 되면, Root프로젝트의 기본 구성이 완료입..
[Vue3] 프로젝트 ESLint, Prettier 설정해보기
·
노빠꾸 개발일지/Vue
이번 피드에서는 ESLint와 Prettier를 세팅하는 내용을 정리해보겠습니다. 우선 ESLint와 Prettier에 대해 간단히 정리해보겠습니다. 자세한 내용은 추가로 찾아보시길 바랍니다. ESLint : 코드의 문법 오류를 검사하고, 잠재적인 문제를 찾아내며, 코드 스타일 규칙을 적용하여 일관성을 유지한다.Prettier : 코드를 읽기 쉽게 자동으로 포맷하여 일관된 스타일을 제공한다. ESLint와 함계 사용해서 코드 스타일 및 문법 검사를 모두 처리한다. IDE는 Intelij로 진행하여, 프로젝트 생성부터 ESLint와 Prettier를 세팅해보겠습니다.  프로젝트 생성 및 기본 세팅프로젝트생성은 IDE나 터미널 중에 마음에 드시는 걸로 진행하시면 됩니다. 저는 아래와같이 Intelij를 이용..
[Github] 깃허브 Repository생성하여 프로젝트 올리기(public, private)
·
노빠꾸 개발일지/GIT
이번 피드에서는 Github에서 Repository를 생성하고, 해당 Repository에 프로젝트까지 올려보는 작업을 정리해 보겠습니다. 우선 깃허브 Repository를 생성해줍니다. 저장소를 만들었으면, 프로젝트를 생성해줍니다. 저는 Intelij를 이용해서 프로젝트를 생성하였습니다. 프로젝트 생성단계는 건너뛰도록 하겠습니다. 프로젝트 생성이 완료되었으면, 터미널로 프로젝트의 루트로 이동하여 git 명령어를 통해 작업을 진행해 주면 됩니다.  1. 깃 초기화프로젝트 루트디렉토리에서 git 저장소를 초기화해준다.git init  2. 저장소 연결Github 저장소와 연결해준다.git remote add origin (저장소 주소)  3. 파일 커밋생성한 프로젝트에 파일들을 커밋해준다.git add ..
[GitHub Copilot] 인텔리제이 깃허브 코파일럿 설치
·
노빠꾸 개발일지/GIT
이번 피드에서는 최근에 깃허브 코파일럿에 무료플랜이 추가된것을 알게되어 깃허브 코파일럿을 한번 사용해보려고 하는데, 저는 인텔리제이 IDE를 사용하고있어서, 인텔리제이에서 깃허브 코파일럿을 사용하는 방법을 간단히 정리해보겠습니다. 최근에 위와같이 깃허브 코파일럿에 무료플랜이 추가되었습니다. 무료플랜을 살펴보면 사용횟수의 제한이 있는것 같습니다. 우선 찍먹으로 무료로 사용해보고 마음에 든다 싶으면 그때 유료플랜을 이용해도 될 것 같습니다. 인텔리제이에서는 위와같이 Plugin메뉴에서 github copiot을 검색해주면, 깃허브 코파일럿 플러그인이 검색됩니다. 해당 플러그인을 설치 후, IDE를 재시작해주면 설치가 완료됩니다.  인텔리제이가 재시작되면 우측메뉴바에 위와같이 깃허브 코파일럿아이콘이 생기고, ..
[스프링 트랜잭션] 스프링 트랜잭션 기본
·
노빠꾸 개발일지/SPRING
스프링 트랜잭션은 데이터베이스에서 수행되는 여러 작업들을 하나의 작업단위로 묶어서 관리하는 기능이다. 트랜잭션 내의 모든 작업이 성공하면 커밋하고, 하나라도 실패를 하게되면 작업을 롤백시킬 수 있다. 스프링은 PlatformTransactionManager라는 인터페이스를 통해 트랜잭션을 추상화 한다.public interface PlatformTransactionManager extends TransactionManager { TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus status) throws..