TIL

· TIL
현재 제작중인 팀프로젝트 스왑스왑 정말 잘 만들고 있다!! 동적 쿼리(제목, 카테고리, 지역) 및 자신이 찜한 게시글 확인 (서브 쿼리) 찜 기능, 커서 기반 페이지네이션 근데 문제가 있었다!! 이러면 사용자 경험이 안좋아지는 것... 그래서 어떻게 할지 하다가 th:if 문을 알게 됐다! 현재 컨트롤러에서는 자신이 찜을 했는지 안했는지 알기 위해서 Member 를 매개변수로 받고 있다. @GetMapping("/posts/{postId}") public String getPost( @PathVariable Long postId, @AuthMember Member member, Model model ) { PostGetResponseDto responseDto = postService.getPost(po..
· TIL
CORS(Cross Origin Resouces Sharing)는 서버가 웹 브라우저에서 리소스를 로드할 때 다른 오리진을 통해 로드하지 못하게 하는 HTTP 헤더 기반 메커니즘입니다. 프론트엔드 개발 시 프론트엔드 서버를 만들어서 백엔드 서버와 통신할 때 주로 CORS 에러를 마주치는데, 이를 해결하기 위해 프론트엔드에서 프록시 서버를 만들기도 합니다. 💡 Origin이란 무엇일까요? 프로토콜과 호스트 이름, 포트의 조합을 말합니다. https://wonow.com:1515/test에서 Origin은 https://wonow.com:1515 까지가 Origin 입니다. 예를 들어 프론트에서 127.0.0.1:2000 으로 테스팅을 하는데 백엔드 서버는 127.0.0.1:4000 이라면 포트 번호가 다르..
· TIL
@Override public PostGetResponseDto findPostWithFavorite(Long postId, Member member) { return queryFactory.select( Projections.constructor(PostGetResponseDto.class, post.member.id.as("memberId"), post.member.nickname.as("author"), post.title, post.content, post.category, post.imageUrl, post.viewCnt, post.upCnt, favorite.post.count().as("favoriteCnt"), post.modifiedUpTime, favoriteStatus(member)...
· TIL
오프셋 기반 페이지네이션과 커서 기반 페이지네이션 오프셋 기반 SELECT * FROM table ORDER BY create_at DESC limit 10 offset 0 limit 와 offsey을 사용해서 조회 페이지 단위 구분 1. 오프셋 기반의 데이터 중복 문제 SELECT * FROM post ORDER BY modified_up_time DESC limit 1 offset 0 에서 한 페이지를 넘기면 SELECT * FROM post ORDER BY modified_up_time DESC limit 1 offset 1 으로 검색을 할텐데, 그 사이에 여기서 누군가가 새로운 글을 썼다고 가정했을 때 페이지를 넘겼는데도 똑같은 게시글이 조회가 되는 경우가 생긴다. 2. 오프셋 기반의 성능 저하 ..
· TIL
프록시 서버란? 프록시 서버(Proxy Server)는 서버와 클라이언트 사이에 클라리언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램을 가리킵니다. 프록시 서버로 쓰는 Nginx Nginx는 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버입니다. 주로 Node.js 앞단의 프록시 서버로 활용합니다. 익명 사용자가 직접적으로 서버에 접근하는 것을 차단하고, 간접적으로 한 단계를 더 거치게 만들어서 보안을 강화할 수 있습니다. 실제 포트를 숨길 수 있고, 정적 자원을 gzip 압축하거나, 메인 서버 앞단에서 로깅을 할 수도 있습니다.
· TIL
@Override @Transactional public void deletePost(Member member, Long postId) { Post post = findPost(postId); // repository에서 Post 찾기 checkPostWriter(member, post); // Post의 작성자가 Member가 일치하는 지 s3ImageServiceImplV1.deleteImageUrlList(post.getImageUrl()); // S3에서 이미지 객체 삭제 post.deletePost(); // Post isDeleted 컬럼 true로 바꾸기 } 내가 작성했던 코드다 해당 코드를 보면 Transactional 이 달려있고 S3에서 이미지를 삭제하는 메서드가 있다. 문제 Entit..
wonow_
'TIL' 카테고리의 글 목록 (7 Page)