목록전체 글 (400)
Just Do IT!

Protected Route 란?해당 페이지로 이동하기 전에 조건을 명시해주고, 이 조건을 만족했을 때 해당 페이지로 이동가능하고,조건을 만족 못한다면 특정 페이지로 돌아가게 할 수 있다. react-router-dom을 설치한 후 route를 사용할 때 적용할 수 있다. 이번 프로젝트에서는,로그인 여부에 따라 접근 불가능한 곳이 있기 때문에 Protected Route를 이용해서 해주었다. react-router-dom 설치npm install react-router-dom 우선은 당연히 react-router-dom을 설치해야 route를 사용할 수 있으니까 설치한다.나는 기존에 이미 route 설정을 해주었기 때문에 생략한다. ProtectedRouter 설정const Prote..

Remote Dictionary Server의 약자로,빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다. 키(key) - 값(value) 쌍의 해시 맵과 같은 구조를 가진 비관계형(NoSQL) 데이터베이스 관리 시스템(DBMS)이며, 오픈 소스 기반으로 인-메모리 데이터 구조 저장소로 메모리에 데이터를 저장한다. 기존 DB가 있는데 Redis를 왜 사용하는가?DB는 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있어 캐시 서버를 도입하여 사용하는 것이 좋다. 이 캐시 서버로 이용할 수 있는 것이 바로 Redis이다. 같은 요청이 여러 번 들어올 때 Redis를 사용함으로써 매번 DB를 거치지 않고 캐시 서버에서 저장했던 값을 바로 가져와 DB의 부..
저번주에 백엔드 기능을 거의 구현했다고 했는데,프론트랑 연동하면서 수정할 부분을 발견해서 중간중간 수정하는 부분이 많았다.확실히 백엔드와 프론트를 다함께 진행하는 프로젝트 자체가 어렵다는 걸 알게 되는...그런 주간이었다. 1. 백엔드 버그 수정팀원 분이 알려주신 버그인데, 확실히 db와 연관된 걸 조금 더 배워야 하고 공부할 게 많다는 걸 느낀 날이었다.우리 프로젝트에서 연관된 DB가 많은데, 만약에 상위 DB의 data를 삭제하면 하위 DB의 data들도 모두 삭제되어야 했다. 내가 맡은 부분으로 예를 들어보자면,문제집 삭제 → 문제집 댓글 삭제 → 댓글 좋아요 삭제 → 북마크 삭제 → 문제집의 문제 삭제 → 스터디에 추가한..
이번 프로젝트에서는 소셜 로그인이 있기 때문에 쿠키에서 id를 받아와서 로그인 여부를 판단하고 있다.그런데 한 가지 문제점이 생겼다.header에 유저 정보를 가져와야 한다 (유저 프로필)문제집/스터디 페이지에서 유저 정보를 가져와서 생성한 사람과 비교해야 한다. 이런 문제점이 생기는데 콘솔에 찍어보면 쿠키를 통해 가져올 수 있는 정보는 id밖에 없기 때문에백엔드 response, request를 아예 갈아엎어야 하던지 아니면 쿠키에 username을 받아와야 했다.그런데 쿠키에 username을 받아오지 않고 id로만 받아와야만 했기 때문에 (username이 unique key가 아님)그냥 프론트쪽에서 전역적으로 유저 정보를 받아와서 사용할 수 있도록 했다. useContext?react..

공식 문서https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-windows/ Install Redis on WindowsUse Redis on Windows for developmentredis.io 내 노트북은 window라 window에서 설치하기 부분을 찾아봤는데, window에서는 공식적으로 지원되지 않는다.Windows에 Redis를 설치하려면 가이드에 나온 것 처럼 WSL2 (Linux용 Windows 하위 시스템) 를 설치해야 한다. 설치하기1. wsl 설치wsl --install cmd(명령 프롬포트)에서 위의 명령어를 입력해서 wsl을 설치한다.설치 후 다시 노트북을..

프로젝트를 진행하는데,특정 엔티티를 삭제할 때 연관된 엔티티를 전부 삭제하도록 해야 하는데 제대로 되지 않았다. 이 부분을 팀원분이 해결해주셨고, 나는 그걸 참고해서 내가 맡은 문제집 쪽 삭제 로직을 수정하였다. https://daydream-sy.tistory.com/358 JPA Cascade 알아보기Cascade란? 부모 엔티티가 영속화될 때 자식 엔티티도 같이 영속화되고, 부모 엔티티가 삭제될 때 자식 엔티티도 삭제되는 등 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태daydream-sy.tistory.com 여기서 정리했던 CascadeType.ALL과 orphanRemoval=true 옵션을 사용했고다른 로직도 일부 수정하면서 테스트 해본 결과 한번에 삭제되는 걸 알 수 ..

Cascade란? 부모 엔티티가 영속화될 때 자식 엔티티도 같이 영속화되고, 부모 엔티티가 삭제될 때 자식 엔티티도 삭제되는 등 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 전이되는 것을 의미한다. JPA에서는 영속성 전이를 Cascade 옵션을 통해 설정하고 관리할 수 있다.JPA Cascade를 활용하면 ‘어떤 엔티티와 다른 엔티티가 밀접한 연관성이 있을 때’에 대한 관리가 매우 수월해진다. 예를 들어,문제와 문제에 대한 댓글이 있다고 가정해보자.문제와 댓글은 연관 관계에 있는 것이다. 이 두 연관 관계의 관리를 하는 데 cascade가 유용하게 사용된다. Cascade 옵션ALLPERSISTMERGEREMOVEREFRESHDETACHcascade는 여섯 가지 옵션..
벌써 4주차라니 믿기지 않는다...이번주는 백엔드 기능 구현으로 바쁜 주간이었다. 1. 소셜 로그인 연동 완료프론트엔드에서 오류가 났던 소셜 로그인 연동을 끝냈다.사실 저번주 주말에 모각코하면서 다 끝내려고 했는데 백엔드 로직을 수정해야 한다고 해서 잠시 멈추었다가 진행했다.일반 로그인을 안해서 다행이라는 생각을 했다...ㅋㅋ소셜 로그인 연동하는 것도 이렇게 오래 걸렸는데..확실히 로그인은 어렵다. 2. 전역 예외 처리지난 주에 어떤 다른 프로젝트의 깃허브를 구경하다가 전역적으로 예외 처리한 걸 발견했다.enum type으로 직접 하나하나 예외를 작성해주고 status까지 지정해놓은 걸 보니 복잡해보이지만 우리 프로젝트에도 적용해볼 수 있겠다는 생각이 들어 이번주에 완료했다. http..

PageModule$WarningLoggingModifier : Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure! For a stable JSON structure, please use Spring Data's PagedModel (globally via @EnableSpringDataWebSupport(pageSerializationMode = VIA_DTO)) or Spring HATEOAS and Spring Data's PagedResourcesAssembler as documented in h..

문제집 댓글 조회 기능을 구현하던 중 이렇게 긴 오류가 나왔다.잘려서 잘 안보이지만 메모장으로 옮겨두고 분석해보니 엄청나게 길었다. 그 중 오류를 구글에 검색해봤는데 Unsatisfied dependency expressed through constructor parameter 0 이런 오류가 발생했던 것이었다.빈 생성시 필요한 것이 빠졌거니 잘못 생성했으니 고치라는 의미였다. 나는 controller, service, repository 다 들어가봤는데 도무지 나오지 않았는데 시간이 좀 지난 다음에야 찾을 수 있었다.BookCommentLikeRepository에서 countByBookCommentId 메서드를 정의할 때, BookCommentLike 엔티티에 bookCommentId라는 속성이 없어서..