전체 글

지금까지 짠 코드를 확인하면 같은 코드가 반복되는 부분이 존재한다. 이렇게 같은 코드가 반복하면 이후에 수적이 필요할 때 모든 부분을 하나씩 찾아가며 수정해야 하므로 유지보수성이 떨어진다. 바로 세션값을 가져오는 부분이 개선할만한 가치가 있다. SessionUser user = (SessionUser) httpSession.getAttribute("user"); 이제 이 부분을 메소드 인자로 세션값을 바로 받을 수 있게 만들 것이다. @LoginUser 만들기 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface LoginUser { } @Target(ElementType.PARAMETER) 이 어노테이션이..
스프링 시큐리티는 막강한 인증과 인가 기능을 가진 프레임워크이다. 스프링은 인터셉터, 필터 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 적극 권장하고 있다. 이번 프로젝트에서는 프로젝트 자체 로그인을 구현하는 것이 아닌 OAuth2.0을 이용해 로그인을 구현해 볼 것이다. 이 책에서는 스프링 부트 2.0을 기준으로 구현했다. 하지만 나는 스프링 부트 3.0을 기준으로 구현할려고 한다. 스프링 부트 1.5 VS 스프링 부트 2.0 OAuth2 연동 방법이 1.5에 비해 2.0에서 많이 달라졌다고 한다. 내가 설계한 프로젝트의 스프링 부트 버전은 3.0이다. 2.0과 OAuth2 에서는 크게 변경되지는 않았지만 SecurityConfig를 다르는 부분이 달라졌다. 만약 스프링 부..
https://school.programmers.co.kr/learn/courses/30/lessons/81303 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 "D 2"를 실행한 뒤 "C"를 실행할 경우 "U 3"을 실행한 뒤 "C"를 실행할 경우 "D 4"를 수행한 다음 "C"를 실행할 경우 "U 2"를 실행할 경우 "Z"를 실행할 경우 "Z"를 실행할 경우 결과는 처음과 비교해서 없어진 것은 X표시로 처리한다. 문제에 대한 아이디어 및 구현 제일 처음 문제를 풀 때는 HashMap을 이용해 풀었다. 하지만 위치인 k를 변경하는데에서 마음대..
https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 각 노드에 가면 그 위치에 있는 양이나 늑대가 따라옴 양의 수가 늑대의 수가 같거나 늑대의 수가 더 많아지면 늑대가 양을 다 잡아먹음 최대 한 많은 수의 양을 모아서 다시 루트 노드로 돌아오는 방법을 구해라!! 제일 처음 0을 갔다가 1을 갔다가 4를가면 양이 2마리 늑대가 1마리를 가지고 있다. 그리고 2 ,3 ,6 으로 가면 늑대가 2마리 양이 2마리이므로 접근이 불가능하다. 그러므..
게시글 수정 화면 만들기 게시글 수정 API는 저번에 이미 만들었다. @Transactional public Long update(Long id, PostsUpdateRequestDto requestDto){ Posts posts = postsRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("해당 게시글이 없습니다. id="+ id)); posts.update(requestDto.getTitle(), requestDto.getContent()); return id; } 그러므로 API 요청만 잘 하면된다. posts-update.mustache {{>layout/header}} 게시글 수정 글 번호 제목 작성자 내용 {{po..
게시글 등록 화면 만들기 이 책은 오픈소스인 부트스트랩을 이용하여 화면을 만들었다. 부트스트랩, 제이쿼리 등 프론트엔드 라이브러리를 사용할 수 있는 방법은 크게 2가지가 있다. 외부 CDN을 사용하기 직접 라이브러리를 받아서 사용하기 이 책은 외부 CDN을 사용한다. 이 프로젝트는 직접 내려받아 사용할 필요도 없고, 사용 방법도 HTML/JSP/Mustache에 코드만 한 줄 추가하면 되니 굉장히 간단하다. 실제 서비스에서는 외부 CDN 방법을 잘 사용하지 않는다. 외부 서비스에 의존하게 돼버려서, CDN을 서비스하는 곳에 문제가 생기면 덩달아 같이 문제가 생기기 때문이다. 부트스트랩, 제이쿼리 추가하기 index.mustache에 추가해줘야 한다. 레이아웃 방식으로 추가한다. 레이아웃 방식이란 공통 영..
서버 템플릿 엔진과 머스테치 소개 템플릿 엔진이란? 지정된 템플릿 양식과 데이터가 합쳐져 HTML문서를 출력하는 소프트웨어를 이야기한다. 템플릿 엔진은 서버 템플릿 엔진(JSP, Freemarker)과 클라이언트 템플릿 엔진(React, Vue)으로 나뉜다. 서버 사이드 템플릿 엔진은 서버에서 DB 혹은 API에서 가져온 데이터를 미리 정의된 템플릿(Template)에 넣어 HTML 문서를 만들어 클라이언트에 전달해주는 역할을 한다. 즉, 서버에서 구동된다. 클라이언트 사이드 템플릿 엔진은 HTML 형태로 코드를 작성할 수 있으며 동적으로 DOM을 그리게 해주는 역할을 한다. 즉, 데이터를 받아 DOM 객체에 동적으로 그려주는 프로세스를 담당한다. 즉, 브라우저 위에서 작동된다. 머스테치란? 머스테치는 ..
https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 격자의 바깥으로 나갈 수 없다. (x,y) 에서 (r,c) 까지 이동하는 거리가 총 k 여야 한다. (x,y) 와 (r,c) 격자를 포함해, 같은 격자를 두 번 이상 방문해도 된다. 미로에서 탈출한 경로를 문자열로 나타냈을 때, 문자열이 사전 순으로 가장 빠른 경로로 탈출해야 한다. 사전순으로 했을 때, dllrl이 제일 빠르므로 답은 dllrl이다. 만약 k 안에 E지점까지 갈 수 ..
Wooooong!!
취준생의 공부