MySQL(50)
-
[뉴스피드] 와이어 프레임의 중요성
프로젝트 발제 이후 팀원들과 회의를 통해 팀 노션을 작성하고 프로젝트에 사용할 API 명세서 및 ERD 를 작성했다. 하지만 '와이어 프레임' 의 경우 모두 "작업을 하다보면 나오겠지" 라는 말을 하며 작성을 하지않고 주말에 각자 맡은 파트를 구현했다. 하지만 나의 경우 막상 구현을 하려니 고민되는 사항이 너무 많았는데, 그 원인은 바로 '기획' 의 부재였다. 그렇다 과제로 요구사항이 주어졌으나 이를 따로 정리하지 않았고 또한 와이어 프레임을 작성하지 않았기에 팀원간 공통적으로 정해진 것이 없어 구현에 애를 먹은 것이었다. 곧장 손으로 와이어 프레임을 그려보고 이를 토대로 오늘 아침회의에 팀원들에게 의견을 제시했다. 급하게 작성한 터라 조잡하긴 했지만 팀원들에게 필요성을 느낀 이유를 담아 이야기했더니 고..
2024.10.21 -
[SQL] 모든 조합 만들기 - CROSS JOIN
SQL 문제를 풀던 도중 두 테이블의 각 컬럼 값으로 만들 수 있는 모든 조합이 필요한 경우가 있었다. 해당 문제를 CROSS JOIN 을 활용해 해결하게 되면서 이렇게 기록하게 되었다. 1. 기본 문법SELECT a.columName(s), b.columnName(s)FROM tableA AS a CROSS JOIN tableB AS b 게시글 제목이나 위에 작성한 내용만 보면 "조합을 어떻게 만든다는 거지?" 라는 생각이 든다. 정확하게 말하면 두 테이블 A, B 가 있다고 했을 때 A 의 각 행(레코드)에 B 의 각 행(레코드)를 모두 JOIN 하는 것이다. 그 후 SELECT 문에 작성한 내용을 통해 원하는 컬럼들을 결과 테이블에 추가해 반환하게 된다. 한 마디로 두 테이블의 각 행(레코드)으로..
2024.10.17 -
[일정 관리 앱] 리팩토링(5)
마지막으로 댓글 관련 CRUD 를 리팩토링을 진행해 보려 한다. 댓글의 경우 댓글에 관련된 모든 요청에 인증이 필요하다. 하지만 그 외 요구사항에 크게 없어 스스로 판단해 반영한 내용이 다수 존재한다. 이번에 리팩토링한 코드는 여기서 확인이 가능하다. 0. Comment 엔티티 필드 변경 기존에는 작성자명(String author)을 사용했지만 이제는 작성자 ID(Long authorId) 를 저장하도록 수정하였다. 이렇게 변경한 이유는 댓글 삭제 및 수정시 대상 댓글을 작성한 회원만이 해당 댓글을 삭제/수정 할 수 있게 구현하다 보니 작성 회원이 맞는지 '검증' 이 필요했다. '검증' 에는 댓글 작성자의 'id' 와 요청 회원의 'id' 를 비교하는 방식을 사용하는 것이 적절하다 생각 필드를 수정하게 ..
2024.10.16 -
[일정 관리 앱] 리팩토링(4)
이번에는 '일정' 에 해당하는 CRUD 에 해당하는 로직들을 리팩토링 해보려 한다. '도전 기능' 요구사항을 반영하였기에 '일정' 에 '날씨' 필드가 추가해야 하고, 필터에서 인증/인가가 수행되므로 더 이상 요청시 쿼리 파라미터로 작성자(회원)의 'id' 값을 전달 받을 필요가 없어졌다. 이번 리팩토링으로 수정된 코드는 여기서 확인이 가능하다. 참고로 일정에 관련된 모든 요청은 '인증' 이 필요하고, '일정 수정, 삭제' 요청의 경우 '인가' 가 필요하다. 요구사항에 "일정의 수정 및 삭제의 경우 관리자 권한이 필요합니다" 라는 내용이 명시되어 있기 때문이다. 1. 일정 생성 일정 생성시 더 이상 쿼리 파라미터로 작성자의 정보(id)를 전달 받을 필요가 없다. 필터에서 '인증/인가' 를 수행후 요청 사용..
2024.10.16 -
[일정 관리 앱] 리팩토링(3)
원래라면 JWT 를 프로젝트에 반영하면서 부터 구현했어야 하는 것이 맞지만 이후 요구사항 반영을 위해 미루어 왔던 'Access Token' 재발급에 대한 내용과 '관리자(ADMIN)' 권한을 가진 관리자 계정에 대한 부분을 해당 게시글에 기록하고자 한다. 이번에 프로젝트에 반영된 내용은 여기서 확인이 가능하다. 1. Access Token 재발급 이전 게시물에서도 몇 번 언급했지만 과제에 주어진 요구사항에는 'Access Token' 에 대한 내용만 있을 뿐 'Refresh Token' 에 대한 내용은 없다. 하지만 이번 기회에 'Refresh Token' 또한 활용해보고 싶었기에 개인적으로 추가한 상태이다. Access Token 의 사용목적은 '인증/인가' 이며, Refresh Token 의 사용목..
2024.10.15 -
[일정 관리 앱] 리팩토링(2)
이번에는 '유저(멤버)' 엔티티를 다루는 요청에 대한 모든 부분을 하나씩 확인하며 수정해 보려한다. 수정은 요청시 '인증 필요' 의 유무로 구분지어 나누어 진행했다. 이번 리팩토링을 통해 수정된 코드는 여기서 확인 가능하다.인증 불필요 : 회원 가입, 로그인인증 필요 : 그 외 모든 기능과제의 요구사항에 따라 위와 같이 구분짓게 되었다. 1. 인증이 불필요한 요청 아래의 요청들은 필터에서 인증/인가를 수행하지 않고 곧장 'MemberController' 에 'ServletRequest, ServletResponse' 를 전달하게 된다. 1-1. 회원 가입 '회원 가입' 에는 회원(유저)의 '이름, 이메일(계정 ID), 비밀번호(계정 비밀번호)' 정보를 전달 받아야 한다. 전달받은 정보로 새로운 회원에 대..
2024.10.15