본문 바로가기

전체 글

(104)
스프링 인터셉터 스프링 인터셉터란?스프링 인터셉터는 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술이다. 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링 MVC가 제공하는 기술이다. 둘다 웹과 관련 된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다르다.  스프링 인터셉터 흐름 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러  스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출된다.스프링 인터셉터는 스프링 MVC가 제공하는 기능이기 때문에 결국 디스패처 서블릿 이후에 등장하게 된다.스프링 MVC의 시작점이 디스패처 서블릿이라고 생각해보면 이해가 될 것이다.스프링 인터셉터에도..
[SQL] 주문량이 많은 아이스크림들 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/133027 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [정답 코드]SELECT F.FLAVORFROM FIRST_HALF FJOIN(SELECT FLAVOR, SUM(TOTAL_ORDER) TOTAL_ORDERFROM JULYGROUP BY FLAVOR) JON F.FLAVOR=J.FLAVORORDER BY F.TOTAL_ORDER + J.TOTAL_ORDER DESC LIMIT 3;
타임리프(Thymeleaf) 란? 공식 사이트: https://www.thymeleaf.org/공식 메뉴얼 - 기본 기능: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html공식 메뉴얼 - 스프링 통합: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html Tutorial: Thymeleaf + SpringPreface This tutorial explains how Thymeleaf can be integrated with the Spring Framework, especially (but not only) Spring MVC. Note that Thymeleaf has integrations for both v..
세션 vs 쿠키 vs 캐시 쿠키 (Cookie) 정의 및 특징클라이언트 로컬에 저장되는 키와 값이 들어있는 데이터 파일유효한 시간 명시 가능, 브라우저가 종료되어도 인증이 유지됨클라이언트의 상태정보를 로컬(브라우저)에 저장 후 참조브라우저가 Request 시에 Request Header를 넣어 자동으로 서버에 전송 구성 요소Name (이름): 쿠키를 구별하는 데 사용되는 키 (중복될 수 없음)Value (값): 쿠키의 값Domain (도메인): 쿠키가 저장된 도메인Path (경로): 쿠키가 사용되는 경로Expires (만료기한): 쿠키의 만료기한 (만료기한 지나면 삭제) 동작 방식 클라이언트가 페이지 요청서버에서 쿠키 생성HTTP 헤더에 쿠키 포함시켜 응답클라이언트에 보관 (쿠키 만료 기간이 있다면 브라우저 종료되어도 유지)같은 ..
SQL - 우유와 요거트가 담긴 장바구니 https://school.programmers.co.kr/learn/courses/30/lessons/62284 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 답 1SELECT CART_IDFROM CART_PRODUCTSWHERE NAME IN ('Milk','Yogurt')GROUP BY CART_IDHAVING COUNT(DISTINCT NAME)=2  답 2SELECT CART_ID, NAMESFROM ( SELECT CART_ID, GROUP_CONCAT(NAME) AS NAMES FROM CART_PRODUCTS GROUP BY ..
Git 커밋 메시지를 수정하고 싶을 때 최근 커밋 메시지 변경커밋 메시지 변경git commit --amend 이 명령어를 실행하면 현재 브랜치의 가장 최근 커밋 메시지를 수정할 수 있는 편집기가 열린다. 원하는 메시지로 수정한 후 저장하고 종료하자. (ESC -> :wq 입력 후 엔터)    2. 수정된 커밋 강제로 푸시git push --force 수정된 커밋 메시지를 원격 저장소에 강제로 푸시한다. --force 옵션을 사용하면 원격 저장소의 커밋 기록을 덮어쓴다.  (+) 편집기를 열지 않고, 커밋 메시지를 명령줄에서 직접 입력할 수도 있다.git commit --amend -m "New commit message"  특정 커밋 메시지 변경 (최근 커밋이 아닌 경우)   1. 인터랙티브 리베이스 시작git rebase -i HEAD~n..
MVC 패턴 Model, View, Controller  컨트롤러HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로 직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다. 뷰모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. 여기서는 HTML을 생성하는 부분을 말한다.   컨트롤러에 비즈니스 로직을 둘 수도 있지만, 이렇게 되면 컨트롤러가 너무 많은 역할을 담당한다. 그래서 일반적으로 비즈니스 로직은 서비스(Service)라는 계층을 별도로 만들어서 처리한다. 그리고 컨트롤러는 비즈니스 로직이..
클린 코드 무분별하게 주석 달지 말기주석은 정책 사항 위주로!여기서 정책 사항은 기획서나 요구 사항에 적혀있는 항목으로써, 매번 바뀌는 전세법처럼 코드가 아닌 코드 외부의 정보나 지식이 있어야 알 수 있는 내용들을 말한다. 동작은 주석을 달 필요가 없는데, 메서드 이름에 그 목적을 담아 표현해서 전달하면 되기 때문이다. 코드가 아닌 한글로 대화하는 것은 지양해야 한다. 주석을 달 때는 정말 이 주석이 필요한지, 코드로 대체가 가능하지는 않은지 잘 고민하고 작성해야 한다. 코드 리뷰/리펙토링반복 개발 연습은 필수이다. 변수명 하나도 의도가 잘 전해지도록 신중하게 정해야 한다. Early Return성능면으로도, 가독성으로도 이득이 된다. SRP를 제대로 지키자. 여기서 단일 책임의 기준은 Actor, 즉 사용자이자 ..