목록전체 글 (76)
ㅇ.ㅇ

나는 회사 솔루션을 Docker 이미지로 만들어 배포하고 관리해 본 경험이 있지만, 그동안 너무 아는 것만 써왔다는 생각이 들었다. 특히 누군가에게 개념을 설명하려는 순간에 나 스스로도 명확하게 개념을 모르고 있다는 걸 깨달았고, 그래서 이번에 제대로 정리해 보고자 강의를 듣기 시작했다.앞으로 정리해나갈 강의는 박재성님의 "비전공자도 이해할 수 있는 Docker 입문/실전"이다. 우선 첫 번째 정리는 Docker 기본 개념이다. Docker란?Docker는 각각의 프로그램을 분리된 환경(컨테이너)에서 실행 및 관리할 수 있게 도와주는 툴이다.쉽게 말해, 하나의 컴퓨터 안에서 여러 개의 '미니 컴퓨터 환경'을 만들어서, 그 안에서 각각 독립적으로 프로그램을 돌릴 수 있도록 해준다. 도커 컨테이너란?하나..

에러 내용프론트에서 POST 방식으로 서버에 JSON 데이터를 전송했을 때, 아래와 같은 에러 메시지가 발생했다.was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')” 에러 파악이 에러는 서버가 JSON 데이터를 받겠다고 선언해 뒀지만, 실제로는 비어 있거나 형식이 잘못된 본문(body)이 들어왔을 때 발생한다. 주로 아래와 같은 상황에서 발생할 수 있다.1. 요청 본문이 비어 있음서버 측 컨트롤러가 @RequestBody로 JSON 데이터를 받게 되어 있을 때, 요청 본문이 비어 있으면 json 파서가 파싱 할 수 없어서 위 에러가 발생한다.2. 본문이 JSON 형식이 아님Content-Type은 app..

1. 기본 rebase 명령어git rebase rebase는 브랜치의 커밋들을 다른 브랜치의 최신 상태 위에 다시 쌓는 명령어. 쉽게 말해, 내 작업을 최신 상태 기준으로 정리해서 얹는 작업이다. git rebase 브랜치명현재 브랜치의 커밋들을 '지정한 브랜치'의 최신 커밋 뒤로 재배치한다. 주로 feature 브랜치를 최신 main 브랜치 기준으로 정리할 때 사용한다.git checkout featuregit rebase main// 실행 전main: A---B---C \feature: D---E---F// 실행 후main: A---B---C \feature: D'--E'--F' 2. 왜 re..

curl이란?curl은 'Client URL'의 줄임말로, 다양한 프로토콜(HTTP, HTTPS, FTP 등)을 이용해 데이터를 전송할 수 있는 커맨드라인 기반 도구이다. 주로 서버와의 통신 테스트, API 호출, 파일 다운로드 등에 사용된다. HTTP 요청을 빠르게 테스트하거나, 스크립트 안에서 네트워크 요청을 자동화해야 할 때 아주 유용하게 쓰인다. 언제 사용하면 좋을까?백엔드 API를 빠르게 테스트하고 싶을 때Postman 없이 CLI에서 바로 API 요청을 보내고 싶을 때서버 상태를 확인하고 싶을 때 (GET 요청 등)파일 업로드/다운로드를 자동화하고 싶을 때CI/CD 파이프라인에서 외부 API를 호출할 때서버의 응답 헤더 및 바디를 확인하고 싶을 때 기본 명령어curl [옵션] [URL]// 예..

분명 war 파일을 압축해제했을 시 /META-INF/ 안에 MANIFEST.MF 파일만 존재했는데, tomcat을 사용시에는 war-tracker라는 이름의 파일이 생기는 경우를 발견했다! 그래서 찾아서 정리해보았다, 그 파일의 정체가 무엇인지... 1. war-tracker 파일의 정체war-tracker는 Tomcat이 .war 파일을 자동 배포(autoDeploy)할 때 생성하는 내부 추적 파일이다. 이 파일은 .war 파일의 변경 여부를 감지하고, 필요한 경우 자동으로 다시 압축 해제하여 애플리케이션을 재배포하는 역할을 한다.생성 위치webapps/ ├── myapp.war ├── myapp/ ├── META-INF/ └── MANIFEST.MF └─..

stash 기능은 전에도 자주 사용해 보았는데, 이번에도 기능개발 중에 stash를 사용하다가 몇 가지 몰랐던 명령어들을 알게 되어 정리를 해보려고 한다. 1. 기본 Stash 명령어git stash현재 작업 중인 변경 사항을 저장(stash)하고, 작업 디렉토리를 깨끗한 상태로 되돌린다.git stash추적된(tracked) 파일의 변경 사항을 저장하고, 작업 디렉토리를 마지막 커밋 상태로 초기화한다.새로운 파일(추적되지 않은 파일, untracked)이나 무시된 파일(ignored)은 기본적으로 stash에 포함되지 않는다. git stash push보다 명확하게 stash를 저장하는 방법. 메시지와 함께 저장할 수도 있다.git stash push -m "메시지"-m 옵션을 사용하면 특정 메시지를 ..

상황컴파일하는 과정에서 생소한 Warning이 나왔다. 에러 내용[WARNING] non-varargs call of varargs method with inexact argument type for last parameter; cast to java.lang.Object for a varargs call cast to java.lang.Object[] for a non-varargs call and to suppress this warning 문제 원인가변 인자(varargs) 메서드를 호출할 때, 마지막 인자가 정확한 타입이 아니라서 문제가 발생하고 있다. 해결책으로 Object나 Object[]로 캐스팅하라는 제안이 포함되어 있다. // 문제가 되는 코드GlobalContext.getMessag..

Java 애플리케이션을 배포할 때, JAR, WAR 같은 패키징 파일 내부에는 META-INF 디렉토리와 MANIFEST.MF 파일이 포함된다. 도대체 얘네는 어디에서 나오는걸까? 궁금해서 찾아보며 간단히 정리를 해보았다. 1. META-INF 디렉토리란?META-INF 디렉토리는 JAR, WAR 파일 내부에서 해당 패키지(아카이브)와 관련된 설정 정보를 저장하는 디렉토리다.META-INF의 주요 역할메타데이터 저장 : 패키지의 버전, 개발자 정보 등 포함보안 관련 정보 저장 : 디지털 서명, 암호화 키 등이 위치서비스 로딩 : 특정 인터페이스의 구현체를 자동으로 검색하는 기능 제공MANIFEST.MF 파일 포함 : JAR, WAR의 속성을 정의하는 주요 파일META-INF 디렉토리의 위치JAR 또는 ..