목록분류 전체보기 (718)
쌓고 쌓다
Lombok 사용시 이상하게 boolean isParent 필드의 getIsParent() 메서드가 생성이 안되는 것이다. @Entity @Data public class Comment { private boolean isParent; } boolean 타입인 경우 getter는 getXXX로 생성이 되는 것이 아니라. isXXX로 생성이 된다. boolean 타입은 getter를 관례상 isXXX로 작성하는 것이다. 아래와 같이 변경하여 사용해주자. Comment 컬럼명 변경 alter table comment CHANGE is_parent parent int; Comment 필드 변경 private boolean parent;
이제 카카오 로그인 도입으로 회원을 Member 클래스로 관리할 수 있게 되었다. 그럼 게시글 작성시 들어가는 작성자 정보도 Member로 바꿔보자. Poster 테이블 컬럼 변경 ALTER TABLE poster DROP writer; -- 기존 writer 필드 제거 ALTER TABLE poster ADD writer bigint; -- 외래 키를 위한 필드 생성 ALTER TABLE poster ADD FOREIGN KEY (writer) REFERENCES member(id); -- 외래 키 등록 기존 writer 필드(varchar)를 외래 키로 사용하기 위해 변경 과정이 필요하다. Poster 엔티티 변경 Poster - 변경 전 writer @Entity @Getter @Setter @To..
기존에 로그인 여부에 따라 헤더를 달리 바꾸기 위해서 Controller에서 아래와 같이 코드를 작성했다. @GetMapping("/") public String home(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) { if (loginMember == null) { model.addAttribute("isLogin", false); } else { model.addAttribute("isLogin", true); model.addAttribute("member", loginMember); } return "home"; } isLogin으로 로그인 여부를 관리했었다...
로그인 여부에 따라 html 파일의 일부 태그들이 변경되는 상황이다. 예를 들어 로그인하기 전에는 만 존재한다. 로그인한 후에는 위의 id="login"을 가지는 태그는 없어지고 만 가지게 된다. 그런 이유로 아래의 js 파일에서 문제가 발생했다. let loginButton = document.querySelector("#login"); let logoutButton = document.querySelector('#logout'); loginButton.addEventListener('click', () => { window.location = 'https://kauth.kakao.com' }) logoutButton.addEventListener('click', () => { window.locati..
기존 템플릿 조각을 불러와서불러와서 매번 조각을 부르는 코드를 작성하기에는 효율적이지 않다. 공통적인 영역을 사용하는데 매번 코드를 작성하는 것 보단. 공통적인 영역을 만들어 놓고. 바뀌는 부분(컨텐츠)에만 코드를 집어 넣는것이 좋은 방법이다. defaultLayout.html 헤더(navigation var) 레이아웃 컨텐츠 로그인 여부에 따라 헤더 부분만 달리하길 원하기에 헤더 부분의 코드는 템플릿 조각인 "headerFragment"를 가져오기로 작성했다. 또한 다른 페이지에서 보내온 컨텐츠는 content로 받아 replace를 한다. fragment와 replace 사용 방법에 대한 과정은 앞선 게시글에서 설명했으므로 과정에 대해서만 알아보자. 에 th:fragment 속성을 가진다. 이 def..
kakoButton.js를 수정했다. 그러나 자꾸 수정된 kakaoButton.js를 가져오지 않고 이전의 js 파일을 갖는것이다... 문제를 보니 메모리 캐시에서 자꾸 가져오고 있었다. 해당 js 파일을 우클릭하여 "Clear browser cache"를 눌러주자! 메모리 캐시와 디스크 캐시에 관해 공부를 좀 해봐야겠다.
목표 기능 html을 보여주는데 로그인 여부에 따라 일부 태그만 교체하길 원한다. 먼저 아래와 같이 세션을 통해 "LOGIN_MEMBER" 세션이 존재에 따라 상단 바를 달리하길 원한다. 로그인한 사람을 위한 상단 바를, 게스트라면 게스트 바를 replace 해보자. HomeController @GetMapping("/") public String home(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) { if (loginMember == null) { model.addAttribute("isLogin", false); } else { model.addAttribute..
https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 t의 문자열을 하나하나 반복문으로 돌며 p와 비교할 부분 문자열을 만든다. 현재 만들어진 부분 문자열의 길이가 p보다 작다면 부분 문자열에 t의 i번째 문자열을 붙인다. 현재 만들어진 부분 문자열의 길이가 p와 동일하다면 부분 문자열이 p보다 작거나 같은지 확인하여, 만족한다면 answer++ 해준다. 그리고 현재 반복문의 i를 가지고 t의 i번째 문자를 부분 문자열에 붙인다. 부분 ..