🐛이슈- 발생한 오류 copy & paste- 오류가 발생한 상황 간략히 설명프로젝트 기초 세팅을 끝내고 깃허브 리포지토리에 git push를 하려고 했다. 아래 명령어를 순서대로 입력해서 원격 저장소와 연동하고, git pull을 받은 뒤 git push를 해서 진행하고 있었다.$ git init$ git remote add origin {리포지토리 주소}$ git add .$ git commit -m "git init"$ git pull origin main$ git push origin main 그런데 git pull까진 정상적으로 작동했지만, git push에서 아래 오류가 발생했다.kej43@DESKTOP-HPA6R33 MINGW64 ~/HyThon (main)$ git push origin ..
첫 해커톤에서 CI/CD 파이프 라인을 구축하느라 애썼던 기억이 있어서 참고용으로 UMC 6th 워크북을 다시 보면서 정리해두려고 한다. AWS에 대한 자세한 내용은 나중에 따로 공부하면서 추가해야겠다. [해커톤] 6th UMC HACKATHON Seoul6th UMC HACKATHON Seoul7월 4일 낮부터 5일 낮까지 첫 해커톤에 참여했다. 신청은 6월 중순쯤 받았는데 워크북도 거의 끝나가고 있던 터라 7월쯤 되면 해커톤에 참여할 역량이 있을 거라고 생각했고, 선dev-meung.tistory.com CI/CDCI(Continuous Integration) - 지속적 통합CI는 코드가 수정될 때마다 지속적으로 편하게 통합되어 빌드, 테스트를 하는 과정을 말한다.UMC에선 테스트까진 다루지 않고 지..
프로젝트를 진행할 때, API 구현이 끝나면 로컬 환경에서 swagger로 테스트해 보고 git push 한 뒤 PR을 올리기로 했었다. PR이 승인되면 develop 브랜치에 머지하고, 배포(개발) 환경에서 잘 돌아가는지 확인하고 나서야 안심했던 기억이 있다. 로컬 환경에서 테스트할 때나 PR을 올리기 전 매번 application.yml을 수정해야 했는데, 이게 참 간단하면서도 번거로웠다. 아래에 application.yml의 일부를 가져와 봤다. spring.datasource.url(username, password) 부분에서 로컬 환경과 배포(개발) 환경의 값을 다르게 설정해야 정상적으로 테스트할 수 있다.spring: # 로컬 datasource: url: jdbc:mysql://loc..
1. 부트스트랩 적용하기부트스트랩(Bootstrap)간단한 웹 페이지를 만들기 위해 프로젝트를 생성한 뒤, HTML을 편리하게 개발하기 위해 부트스트랩을 적용했다.부트스트랩(Bootstrap)은 웹 사이트를 쉽게 만들 수 있도록 도와주는 HTML, CSS, JS 프레임워크다. 하나의 CSS로 휴대폰, 태블릿, 데스크탑까지 다양한 기기에서 작동한다. 또, 다양한 기능을 통해 웹 사이트를 제작, 유지, 보수할 수 있다.3학년 1학기 웹프레임워크개발 강의에서 Django를 배울 때 함께 배운 적이 있는데, 이걸 사용하면 백엔드(?)스러운 딱딱한 화면도 그럴싸하게 변한다. CSS 말고 JS도 적용할 수 있어 간단하게 움직이는 웹 페이지를 만들 수 있다. 부트스트랩 공식 사이트에서 파일을 다운받고 압축을 풀어 사..
https://www.acmicpc.net/problem/29704다양한 난이도의 문제 N개가 주어지고, 앞으로 T일의 제출 기한이 남아있다. 제출 기한 내에 문제를 제출하지 못하면 문제마다 정해진 벌금을 내야 한다. 혜민이는 하루에 한 문제만 해결할 수 있고, 가능한 적은 금액의 벌금을 내려고 한다. 문제를 해결하는 데 소요되는 일수와 그 문제를 제출 기한 내에 해결하지 못할 경우 내야 하는 벌금이 주어질 때, 혜민이가 내야 하는 벌금의 최소 금액을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복..
1. HTTP 응답스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지로 나눌 수 있다.정적 리소스ex. 웹 브라우저에 정적인 HTML, CSS, JS를 제공할 때 사용한다.뷰 템플릿 사용ex. 웹 브라우저에 동적인 HTML을 제공할 때 사용한다.HTTP 메시지 사용HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 아래에서 하나씩 알아보자. 정적 리소스스프링 부트는 classpath의 다음 디렉토리에 있는 정적 리소스를 제공한다./static, /public, /resources, /META-INF/resources src/main/resources는 리소스를 보관하는 곳이면서 classpath의 시..
1. HTTP 요청기본, 헤더 조회RequestMappingRequestHandler가 동작하는 애노테이션 기반의 스프링 Controller는 다양한 파라미터를 지원한다. 기본값과 헤더값을 꺼내는 방법을 알아보자.Locale우선순위가 가장 높은 Locale 정보(현재 시스템에 설정된 국가 및 언어 설정)를 조회한다.우선순위나 처리 방법은 LocaleResolver 참고@RequestHeader MultiValueMap headerMap모든 HTTP header를 MultiValueMap 형식으로 조회한다.@RequestHeader("host") String host특정 HTTP 헤더를 조회한다.속성필수 값 여부: required / 기본 값 속성: defaultValue@CookieValue(value ..
https://www.acmicpc.net/problem/23978효석이는 영일 코인을 매도해 K원 이상을 현금화하려고 한다. 효석이는 자신이 정한 N개의 날짜에 코인의 가격을 급상승시키고, 처음 코인의 가격이 오른 날부터 매일 한 개씩 매도할 계획이다. 효석이가 정한 날짜에 영일 코인은 X원으로 오르고, 그 후 0원이 될 때까지 하루에 1원씩 가격이 낮아진다. 코인의 가격이 너무 크게 오르면 의심을 살 수 있기 때문에 최소 금액으로 상승시켜 현금화를 하려고 한다. 마지막 가격 상승 이후 코인의 가격이 0이 될 때까지, K원 이상 현금화할 수 있는 가장 작은 정수 X를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 ..
저번 섹션까지 서블릿과 관련한 프로젝트는 마무리됐다. 이후 스프링 MVC를 집중적으로 학습하기 위해 새로운 스프링 프로젝트를 생성한다. 1. 프로젝트 생성 및 기초 작업이때 뷰 템플릿 엔진으로 JSP 대신 Thymeleaf를 사용하기 때문에 Packaging을 War 대신 Jar로 선택해야 한다.Jar를 사용하면 항상 내장 서버(톰캣 등)를 사용하고, webapp 경로도 사용하지 않는다. 내장 서버 사용에 최적화돼 있는 기능이라, 최근에는 스프링 부트 사용 시 주로 이 방식을 사용한다.War는 WAS를 별도로 설치하고, 그곳에 빌드된 파일을 넣을 때 사용한다. 물론 내장 서버도 사용 가능하지만, 주로 외부 서버에 배포하는 목적으로 사용한다. Welcome 페이지 만들기스프링 부트에 Jar를 사용하면 스..
🐛이슈- 발생한 오류 copy & paste- 오류가 발생한 상황 간략히 설명오늘 하루 예산을 조회하는 API와 오늘부터 말일까지의 날짜별 하루 예산을 조회하는 API에서 오류가 생겼었다.구체적인 오류8월 12일에 배포 서버의 swagger에서 테스트한 결과, 원래대로면 12일부터 31일까지의 하루 예산만 나와야 했지만, 10일과 11일의 하루 예산까지 조회되는 문제가 발생했다.로컬 서버의 swagger 테스트 결과는 정상적으로 나오는 것까지 확인했다.상황CICD 파이프라인이 돌아간 마지막 날짜는 8월 10일이었다. 날짜가 수상하게 들어맞는다는 생각이 들어서, DayBudgetService가 스프링 빈으로 등록될 때 or 배포가 진행될 때 날짜가 고정돼버려서 생긴 문제가 아닐지 의심하게 됐고, 해당 코..