만쥬의 개발일기
[Linux] - nohup 사용법과 다양한 활용 방법
🛠️TOOL/📄Linux 2023. 11. 29. 23:34

nohup이란? "no hangups"라는 의미로 리눅스, 유닉스에서 명령어나 쉘 스크립트 파일(*. sh)을 데몬 형태로 실행시키는 프로그램이다. 데몬 형태로 실행시킨다는 것은, UI 없이 시스템 백그라운드에서 동작하는 프로그램을 지칭한다. nohup을 사용하는 이유 nohup은 터미널이나 세션이 종료된 후에도 해당 프로세스가 종료되지 않고 지속적으로 동작하게 해준다. 즉 리소스를 끊지 않는 이상, (로컬의 컴퓨터를 종료하거나 인스턴스를 종료하거나 프로세스를 죽이거나 등등) 계속해서 프로세스는 동작하게 된다. 오랜 시간이 걸리는 스크립트나, 항상 켜두어야 하는 서버 등을 배포할 때 주로 사용한다. 사용방법은 프로그램 실행어 앞에 nohup을 붙여주면 되고, 실행 시 실행한 경로에 "nohup.out"이..

[git] - git pull 할 때 fatal: Need to specify how to reconcile divergent branches. 에러
🛠️TOOL/🐈‍⬛GIT 2023. 11. 29. 21:26

git pull을 할때 git 최신 버전의 경우 다음과 같이 merge 전략을 어떻게 해야할 지 설정해달라는 문구가 뜨곤 한다. hint: You have divergent branches and need to specify how to reconcile them. hint: You can do so by running one of the following commands sometime before hint: your next pull: hint: hint: git config pull.rebase false # merge hint: git config pull.rebase true # rebase hint: git config pull.ff only # fast-forward only hint: hi..

article thumbnail
[AWS] - EC2 프리티어 사용시 메모리 부족 현상 해결
🛠️TOOL/🔶AWS 2023. 11. 29. 21:19

개요 개발 연습을 할 때 EC2 프리티어 만큼 좋은게 없다. 구글 계정을 만들기는 쉬운데, 구글 계정을 만들 때마다 인스턴스를 하나씩 무료로 쓸 수 있기 때문이다. 그러나 메모리 때문에 아쉬울 때가 종종 있다. 일례로 이전에 리액트 웹 프로젝트를 배포할 때, 리액트를 빌드하지 못하고 서버가 멈춰 원인이 뭔지 엄청 헤맸던 기억이 있다.. 이번에도 스프링 부트 프로젝트를 진행하며 gradle을 통해 빌드를 시도했는데, 또 서버가 터져버리고 말았다. 그래서 리눅스의 SWAP 메모리를 통해 문제를 해결해보기로 하자. 일반적으로 SWAP Space는 다음과 같이 권장된다. 물리적 RAM의 양 권장 스왑 공간 RAM 2GB 이하 RAM 용량의 2배(최소 32MB) RAM 2GB 초과, 32GB 미만 4GB + (R..

[Spring] - @ResponseEntity의 이해와 사용 방법

ResponseEntity란?ResponseEntity를 설명하기 전에, 먼저 HttpEntity를 알아야한다.HttpEntity란 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.  그리고 HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다.  ResponseEntity의 생성자를 보면 this( )를 통해서 매개변수가 3개인 생성자를 호출해 결국엔 아래 보이는 매개변수가 3개인..

article thumbnail
[Spring] - @RestControllerAdvice를 이용해서 예외처리 AOP 처리하기

개발을 하다보면 예외처리는 필수 불가결 적이다. 그리고 예외처리는 한 곳에서만 하는 것이 아닌, 내 코드 모든 곳에서 발생하는 AOP이다. 따라서 공통적으로 처리해야만 하는데, 이를 도와주는 어노테이션이 있다. @ControllerAdvice vs @RestControllerAdvice @ControllerAdvice란 @ExceptionHandler, @ModelAttribute, @InitBinder 가 적용된 메서드들을 AOP를 적용해 컨트롤러 단에 적용하기 위해 고안된 어노테이션이다. 클래스에 선언하게 되면, 모든 @Controller에 대한 전역적으로 발생하는 예외를 처리 가능하다. 또한 내부적으로 @Component가 선언되어 있어 빈으로 관리된다. @RestControllerAdvice란 @..

article thumbnail
[Spring] - JPA 칼럼명 카멜케이스 적용하기

JPA를 사용하다보면 entity의 칼럼명에 있는 카멜케이스를 자동으로 스네이크 케이스로 변환하곤 한다. 정 카멜케이스를 쓰고 싶다 하면 다음 설정을 따라하면 된다. application.properties에 다음 내용을 저장한다. spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 정상적으로 couple_id가 아닌 coupleId로 저장된 모습이다. r..

article thumbnail
[Spring] - JPA DDL-Auto 사용 시 한글 설정 자동화

Spring의 JPA를 사용할 때 JPA는 테이블을 자동으로 생성해주는데, 기본적으로 한글 설정은 되어 있지 않다. 따라서 튜플에 한글 값을 넣게 되면 SQL Error: 1366, SQLState: HY000: incorrect string value 라는 에러가 발생하곤 한다. 첫번째 해결 방법 (급할 때) 이는 내가 만든 MySql 테이블의 언어가 UTF-8로 설정 되지 않아서 발생하는 문제인데, 바로 고치는 방법으로는 다음 명령어로 mysql 터미널에서 직접 한글입력이 가능하도록 변경해주는 방법이 있다. mysql > ALTER TABLE [테이블명] convert to charset utf8;그러나 모든 작업의 자동화는 개발자의 꿈이 아닌가?? 따라서 JPA가 자동으로 테이블을 만들때마다 위 설..

article thumbnail
[백엔드 기술 면접 대비] - 3.Nginx를 사용한 리버스 프록시는 왜 필요할까?
🖥️CS/📒백엔드 2023. 11. 21. 18:00

리버스 프록시란? 클라이언트 요청을 대신 받아 내부 서버로 전달해주는 것을 리버스 프록시(Reverse Proxy) 라고 한다. 그렇다면 프록시란? 프록시란 대리라는 의미로, 정보를 대신 전달해주는 주체라고 생각하면 되는데, 만약 이 프록시 없이 웹 서버를 운영한다고 가정해보자. localhost:3000 라고 하는 웹서버를 열어서 운영했을 때, 사용자가 갑자기 많아지거나, 웹서버가 그대로 노출되어 있기 때문에 보안적으로 위험성이 증가한다. nginx를 사용하면 로드 밸런싱으로 부하를 줄여줄 수 있고, 분산 처리 또한 가능하며 웹서버의 SSL 인증도 적용할 수 있다. (SSL이란?) 따라서 아래와 같이 사용자 -> nginx -> 웹서버로 구성해서 사용자의 요청을 nginx가 대신 웹서버로 전달해주도록 ..