오늘의 기록
[Spring] 스프링 설정하기, 스프링 컨테이너와 스프링 빈
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 앞서 회원주문관리프로그램을 객체 지향 원리에 기반하여 개발해 보았다. 순수 자바 코드로 개발을 진행했지만 다형성 + OCP, DIP를 만족하는 이미 좋은 프로그램인 것 같은데, 스프링을 왜 사용해야 할까? 스프링을 사용함으로써 얻는 이점은 무엇일까? 이에 대해 공부한 내용을 정리해 본다. IoC, DI, 그리고 컨테이너 스프링으로 진입하기 전, 먼저 기본 개념에 대해 알아보자. IoC..
git add error (warning: LF will be replaced by CRLF)
터미널에 git add 명령어를 입력할 때 다음과 같은 에러가 뜨는 경우가 있다. 이는 리눅스를 쓰는 개발자와 윈도우를 쓰는 개발자가 협업할 때 생기는 Whitesppace 에러다. 리눅스 시스템에서는 한줄의 끝이 LF로 이루어지는 반면, 윈도우에서는 CRLF로 이루어지기 때문이다. 윈도우를 사용하고 있다면 git config --global core.autocrlf true 리눅스를 사용하고 있다면 git config --global core.autocrlf true input 혹은 그냥 에러 메시지를 끄고 작업하고 싶은 경우는 git config --global core.safecrlf false 이렇게 해결할 수 있다.
[Spring] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 객체 지향 설계 앞서 개발한 회원 서비스에서 다형성을 활용하여, 인터페이스(역할)와 구현 객체(구현)를 분리했다. 그러나 OCP, DIP와 같은 객체 지향 설계 원칙을 충실히 준수하지는 못했다. 서비스 클라이언트는 인터페이스와 구현 클래스 둘 다 의존하고 있고 기능을 확장해서 변경하려면 클라이언트 코드에 영향을 주기 때문이다. 기대했던 의존관계 서비스 클라이언트는 할인 정책의 인터페이..
[Spring] 스프링 핵심 원리 이해 1 - 예제 만들기
스프링 핵심 원리 - 기본편 스프링 핵심 원리 - 기본편 - 인프런 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 초급 프레임워크 및 라이브러리 웹 개발 서버 개발 Back-End Spring 객체지향 온 www.inflearn.com 강의를 들으며 생각 정리 프로젝트 생성 https://start.spring.io 스프링 부트 스타터 사이트로 이동해서 스프링 프로젝트를 생성한다. Project : 일반적으로 Gradle Project를 사용한다. Project Metadata Group : 그룹 이름 Artifact : 프로젝트 이름 Spring Boot version, Java version 등은 현재 상황에 맞게 설정한다. 비즈니스 요..
git push, pull error (error: failed to push some refs to) (fatal: refusing to merge unrelated histories)
원격 저장소에(github..) push를 하면 다음과 같은 오류가 발생할 때가 있다. rejected : push가 거부되었다. master -> master : 로컬 저장소의 master 브랜치의 변경 사항을 원격 저장소의 master 브랜치에 반영하려 했는데 non-fast-forward : 원격 저장소의 master 브랜치가 로컬 저장소의 버전보다 이전 버전이 아니다. 라는 의미이다. 쉽게 말하면 로컬 저장소의 commit 목록과 원격 저장소의 commit 목록이 다르면 둘을 연결할 수 없다. 이 때, git pull 명령어로 원격 저장소의 마지막 commit을 로컬 저장소의 commit 로그에 받아오면 된다. 하지만 pull 명령어를 실행하면 아래와 같은 오류가 발생할 때가 있다. 에러 내용은 ..
프로그래머스 - 무지의 먹방 라이브
programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 문제 회전판에 먹어야 할 N 개의 음식이 있다. 각 음식에는 1부터 N 까지 번호가 붙어있으며, 각 음식을 섭취하는데 일정 시간이 소요된다. 무지는 다음과 같은 방법으로 음식을 섭취한다. 무지는 1번 음식부터 먹기 시작하며, 회전판은 번호가 증가하는 순서대로 음식을 무지 앞으로 가져다 놓는다. 마지막 번호의 음식을 섭취한 후에는 회전판에 의해 다시 1번 음식이 무지 앞으로 온다. 무지는 음식 하나를 1초 동안 섭취한 후 남은 음식은 그대로 두고, 다음 음식을 섭취한다. 다음 음식이란, 아직 남은 음식 중 다음으로 섭취해야 할 가장 가까운 번호의 음..
볼링공 고르기
문제 두 사람은 서로 무게가 다른 볼링공을 고르려고 한다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여된다. 또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주한다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재한다. N개의 공의 무게가 각각 주어질 때, 두 사람이 볼링공을 고르는 경우의 수를 구하라. 입력 첫 째줄 -> 볼링공의 개수 N(1 ~ 1000), 공의 최대 무게 M(1 ~ 10) 둘 째줄 -> 각 볼링공의 무게 K (1 ~ M) 출력 두 사람이 볼링공을 고르는 경우의 수 풀이 1. 각 무게 별로 볼링공의 수가 몇 개인지 count하는 배열을 만든다. ex) 볼링공 5개의 무게가 각각 [1 3 2 3 2]로 주어졌을..
만들 수 없는 금액
문제 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구한다. 입력 첫째 줄 -> N : 동전의 개수 (1 ~ 1,000) 둘째 줄 -> 동전의 화페 단위, N 개의 자연수 (1,000,000 이하) 출력 주어진 동전들로 만들 수 없는 양의 정수 금액 중 최솟값 풀이 1. 먼저 data를 정렬한다. 2. 처음에 금액 1을 만들 수 있는지 확인하기 위해 target=1로 설정한다. 3. 현재 data이 target을 만들 수 있으면 (data값target: break target+=x print(target)