전체 글

전체 글

    [Git] 깃 커밋 메시지 작성법(git commit message)

    커밋 메시지란? working dir(작업중인 로컬 디렉터리)에서 git add를 하게되면 변경된 파일의 목록이 index(stage)에 추가가 되는데 이 파일의 목록들을 HEAD(확정본)에 반영을 시킬 때 git commit을 쓰게 된다 commit message는 쉽게 말하면 HEAD에 어떤 변화가 반영이 되었는지 설명하기 위한 글이다 규칙에 맞는 좋은 커밋메시지를 작성해야 하는 이유는? 팀원과의 소통 편리한 과거의 기록 추적 Commit Options m 커밋 메시지를 작성 git add file git commit -m "FIX 블라블라" a or --all 모든 파일을 자동으로 Commit(될 수 있으면 쓰지 않는 것을 추천) git commit -a -m "ADD 블라블라" -amend 원격 ..

    @Bean VS @Component

    @Bean vs @Component @Bean 과 @Component 사용하는 이유? IoC Container는 @Configuration, @Bean, @Component, @Repository, @Service, @Controller가 달린 클래스를 감지하며 빈을 가져오기 위해 빈 스캐닝을 합니다. 대표적으로 빈으로 사용 할 수 있도록 해주는 어노테이션으로 @Bean과 @Component이 있다. (@Configuration은 구성클래스를 만들 때 사용, @Repository, @Service, @Controller는 @Component에 속해있다.) 👉 @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리를 사용할 때 사용한다. @Configuration을 선언한 클래스 내부에서 사..

    Springboot exception (@ControllerAdvise, @ExceptionHandler)

    Springboot Exception 처리 @ControllerAdvise @ControllerAdvice는 모든 @Controller 즉, 전역에서 발생할 수 있는 예외를 잡아 처리해주는 annotation이다. @RestControllerAdvice public class GlobalControllerAdvice { @ExceptionHandler(value = Exception.class) public ResponseEntity exception(Exception e) { System.out.println(e.getClass().getName()); System.out.println(e.getLocalizedMessage()); return ResponseEntity.status(HttpStatus..

    [Design Pattern] 8. Strategy Pattern

    전략 패턴 ( Strategy Pattern ) 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말합니다. 간단히 말해서 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴입니다. 1. 전략 패턴 사용 이유 예를 들어, 기차( Train )와 버스( Bus ) 클래스가 있고, 이 두 클래스는 Movable 인터페이스를 구현했다고 가정하겠습니다. 그리고 Train과 Bus 객체를 사용하는 Client도 있습니다. 이..

    [Design Pattern] 7. Facade Pattern

    퍼사드 패턴 (Facade Pattern) Facade는 "건물의 정면"을 의미하는 단어로 어떤 소프트웨어의 다른 커다란 코드 부분에 대하여 간략화된 인터페이스를 제공해주는 디자인 패턴을 의미합니다. 퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고, 복잡한 소프트웨어를 사용 할 수 있게 간단한 인터페이스를 제공해줍니다. 동기 어떤 사람이 영화를 보고자 합니다. 영화를 보기 위해서는 다음과 같은 과정을 거치게 됩니다. 음료를 준비한다 -> TV를 켠다 -> 영화를 검색한다 -> 영화를 결제한다 -> 영화를 재생한다. public void view() { Beverage beverage = new Beverage("콜라"); Remote_Control r..

    Filter vs Interceptor vs AOP

    👋 들어가기 전 Filter Interceptor AOP 세가지 기능이 모두 비슷한 기능을 하는데, 이들이 필요한 이유는 프로그램을 만들거나 작업을 할 때 공통되는 부분이 굉장히 많다. 예를 들어, 인증 처리라던지, XSS로부터 보안 처리, 로깅 처리, 페이지 인코딩도 포함될 것이다. 이렇게 프로그램 내에서 자주 사용되는 기능을 소스 여러 군데에 사용되고 있으면 소스 양도 늘어날 것이고, 프로젝트 단위가 커질수록 서버에 대한 부하, 유지보수에 어려움을 겪을 수 있다! 쉽게 말해서 공통되는 부분은 빼서 관리하는게 좋다. 위와 같이 공통되는 기능을 처리해주는 기능을 Spring이 제공한다. 위 세가지 기능에 대해 알아보고, 차이점들을 알아보자! Filter, Interceptor, AOP의 흐름 서버를 실행..

    [Design Pattern] 6. Adapter Pattern

    Adapter Pattern **Structural Pattern** 프로그램 구조에 관련된 패턴들 프로그램 내의 자료구조나 인터페이스 구조 등 프로그램의 구조를 설계하는데 활용할 수 있는 패턴들 어댑터 패턴이란? 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 어댑터 패턴 호출 과정 클라이언트에서는 Target Interface 를 호출하는 것 처럼 보인다. 하지만 클라이언트의 요청을 전달받은 (Target Interface 를 구현한) Adapter 는 자신이 감싸고 있는 Adaptee 에게 실질적인 처리를 위임한다. Adapter 가 Adaptee 를 감싸고 있는 것..

    [프로그래머스/JAVA] 상호 평가 (위클리 2주차)

    문제 설명 대학 교수인 당신은, 상호평가를 통하여 학생들이 제출한 과제물에 학점을 부여하려고 합니다. 아래는 0번부터 4번까지 번호가 매겨진 5명의 학생들이 자신과 다른 학생의 과제를 평가한 점수표입니다. 위의 점수표에서, i행 j열의 값은 i번 학생이 평가한 j번 학생의 과제 점수입니다. 0번 학생이 평가한 점수는 0번 행에담긴 [100, 90, 98, 88, 65]입니다. 0번 학생은 자기 자신에게 100점, 1번 학생에게 90점, 2번 학생에게 98점, 3번 학생에게 88점, 4번 학생에게 65점을 부여했습니다. 2번 학생이 평가한 점수는 2번 행에담긴 [47, 88, 95, 80, 67]입니다. 2번 학생은 0번 학생에게 47점, 1번 학생에게 88점, 자기 자신에게 95점, 3번 학생에게 80점..

    [프로그래머스/JAVA] 부족한 요금 계산하기 (위클리 1주차)

    문제 설명 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수 놀이기구의 이용 횟수 c..