📁 프로젝트 일지/👩🏫 공공 교육 서비스
-
🦮 스스로를 위한 리팩토링 일지 가이드 1️⃣ 리팩토링 이전 코드는 어떠했는가 2️⃣ 어떻게 리팩토링하였는가 3️⃣ 리팩토링 이후 코드는 어떻게 개선되었는가 1️⃣ 리팩토링 이전 코드는 어떠했는가 ✅ 문제점1 REST API를 처음 공부하고 사용해 보면서 나와 팀원이 설계 규칙을 제대로 지키지 못한 부분이 보였다. 또한 팀원과 각각 회원 관리, 댓글 기능에만 REST API를 적용하고 다른 부분에는 적용하지 않았는데, 이 부분이 통일성이 없어 코드 가독성을 저하한다. ✅ 문제점2 LoginChk 컨트롤러 클래스와 MemberController 클래스에서, 로그인/로그아웃 처리 메소드들은 MemberController 클래스에, 회원 가입/정보 수정/탈퇴 메소드들은 LoginChk 클래스에 적혀 있었다. ..
15.코드 리팩토링(2) - RESTful한 API 만들기(1) / 클래스 목적에 맞게 수정하기🦮 스스로를 위한 리팩토링 일지 가이드 1️⃣ 리팩토링 이전 코드는 어떠했는가 2️⃣ 어떻게 리팩토링하였는가 3️⃣ 리팩토링 이후 코드는 어떻게 개선되었는가 1️⃣ 리팩토링 이전 코드는 어떠했는가 ✅ 문제점1 REST API를 처음 공부하고 사용해 보면서 나와 팀원이 설계 규칙을 제대로 지키지 못한 부분이 보였다. 또한 팀원과 각각 회원 관리, 댓글 기능에만 REST API를 적용하고 다른 부분에는 적용하지 않았는데, 이 부분이 통일성이 없어 코드 가독성을 저하한다. ✅ 문제점2 LoginChk 컨트롤러 클래스와 MemberController 클래스에서, 로그인/로그아웃 처리 메소드들은 MemberController 클래스에, 회원 가입/정보 수정/탈퇴 메소드들은 LoginChk 클래스에 적혀 있었다. ..
2024.03.20 -
🦮 스스로를 위한 리팩토링 일지 가이드 1️⃣ 리팩토링 이전 코드는 어떠했는가 2️⃣ 어떻게 리팩토링하였는가 3️⃣ 리팩토링 이후 코드는 어떻게 개선되었는가 1️⃣ 리팩토링 이전 코드는 어떠했는가 지저분하고 가독성이 좋지 않은 코드의 가장 큰 이유 중 하나는 '꼭 필요하지 않은 부분' 때문이라고 생각한다. 프로젝트 코드를 몇 군데 살펴보니 기능 구현에 급급해 필요없는 부분을 정리하지 못한 부분이 많이 보였다. 따라서 다음과 같은 부분들을 우선 정리했다. 1.사용하지 않는 파일/클래스 2.사용하지 않는 주석 3.사용하지 않는 로직 2️⃣ 어떻게 리팩토링하였는가 ✅ 사용하지 않는 파일/클래스 전자정부 프레임워크에 처음 DB를 연동할 당시 테스트를 위해 만들어 놓았던 테스트 VO, mapper들 구조 파악에 ..
14.코드 리팩토링(1) - 불필요한 부분 삭제하기🦮 스스로를 위한 리팩토링 일지 가이드 1️⃣ 리팩토링 이전 코드는 어떠했는가 2️⃣ 어떻게 리팩토링하였는가 3️⃣ 리팩토링 이후 코드는 어떻게 개선되었는가 1️⃣ 리팩토링 이전 코드는 어떠했는가 지저분하고 가독성이 좋지 않은 코드의 가장 큰 이유 중 하나는 '꼭 필요하지 않은 부분' 때문이라고 생각한다. 프로젝트 코드를 몇 군데 살펴보니 기능 구현에 급급해 필요없는 부분을 정리하지 못한 부분이 많이 보였다. 따라서 다음과 같은 부분들을 우선 정리했다. 1.사용하지 않는 파일/클래스 2.사용하지 않는 주석 3.사용하지 않는 로직 2️⃣ 어떻게 리팩토링하였는가 ✅ 사용하지 않는 파일/클래스 전자정부 프레임워크에 처음 DB를 연동할 당시 테스트를 위해 만들어 놓았던 테스트 VO, mapper들 구조 파악에 ..
2024.03.19 -
🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 메인 화면 메인 화면 디자인은 팀원과 반씩 나눠서 했고 내가 튜닝한 부분은 위와 같다. 로고는 팀원이 찾아낸 '길벗'이라는 사이트에서 만들었다. 일단 내가 전체적인 홈페이지 틀과 슬라이드 쇼가 포함된 HTML 템플릿을 구글링하여 가져와 위 사진처럼 튜닝했고, 팀원은 틀 중에서 다른 부분을 마저 튜닝했다. 로그인 폼은 내가 따로 구글링해서 가져와 튜닝했다. 아이콘 메뉴 같은 경우 아이콘 사이트에서 가져왔고, 하단 배너의 경우 이미지를 하나씩 구해 버튼에 반영해 만들었다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 홈..
13.화면 디자인🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 메인 화면 메인 화면 디자인은 팀원과 반씩 나눠서 했고 내가 튜닝한 부분은 위와 같다. 로고는 팀원이 찾아낸 '길벗'이라는 사이트에서 만들었다. 일단 내가 전체적인 홈페이지 틀과 슬라이드 쇼가 포함된 HTML 템플릿을 구글링하여 가져와 위 사진처럼 튜닝했고, 팀원은 틀 중에서 다른 부분을 마저 튜닝했다. 로그인 폼은 내가 따로 구글링해서 가져와 튜닝했다. 아이콘 메뉴 같은 경우 아이콘 사이트에서 가져왔고, 하단 배너의 경우 이미지를 하나씩 구해 버튼에 반영해 만들었다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 홈..
2024.03.11 -
🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 회원 정보 수정 회원가입 시 회원 정보로 입력한 이름, 연락처, 비밀번호를 수정할 수 있도록 했다. 카카오 회원의 경우 비밀번호는 수정할 수 없게 했다. 수정 시 각 정보에 관해 실시간으로 안내 문구가 뜨고 최종적으로 수정 버튼을 누를 때도 유효성 검사를 진행했다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 회원가입이랑 비슷하게 조건을 만족한 데이터만 통과시켜 수정해야 했기 때문에 회원가입과 비슷하게 진행했다. 카카오 회원의 경우 임시 비밀번호로 통일했기 때문에 해당 비밀번호가 바뀌면 로그인이 안 되므로 수정하지 ..
12.기능 구현(9) - 회원 정보 수정🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 회원 정보 수정 회원가입 시 회원 정보로 입력한 이름, 연락처, 비밀번호를 수정할 수 있도록 했다. 카카오 회원의 경우 비밀번호는 수정할 수 없게 했다. 수정 시 각 정보에 관해 실시간으로 안내 문구가 뜨고 최종적으로 수정 버튼을 누를 때도 유효성 검사를 진행했다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 회원가입이랑 비슷하게 조건을 만족한 데이터만 통과시켜 수정해야 했기 때문에 회원가입과 비슷하게 진행했다. 카카오 회원의 경우 임시 비밀번호로 통일했기 때문에 해당 비밀번호가 바뀌면 로그인이 안 되므로 수정하지 ..
2024.03.09 -
🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 글번호 관리 수강 후기 게시판 목록 조회 구현 시 글번호를 원래는 후기 테이블에서 시퀀스로 설정하던 '리뷰 번호' 컬럼을 이용했다. 이후 DB 컬럼을 그대로 반영하는 방식보다 jsp 파일에서 자체적으로 번호를 만들어 반영했다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 시퀀스로 생성되는 컬럼의 문제는 중간 글, 예를 들어 1번과 3번 사이 2번 글이 삭제된다면 기존 3번이 2번으로 자동 정렬되지 않고 그대로 3번으로 남아있다는 것이다. 만약 중간 글들이 여러 개 삭제된다면 글 번호는 그야말로 개판이 된다. 이렇게 ..
11.기능 구현(8) - 수강 후기 게시판(글번호 관리, 아이디 마스킹, 페이징)🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 글번호 관리 수강 후기 게시판 목록 조회 구현 시 글번호를 원래는 후기 테이블에서 시퀀스로 설정하던 '리뷰 번호' 컬럼을 이용했다. 이후 DB 컬럼을 그대로 반영하는 방식보다 jsp 파일에서 자체적으로 번호를 만들어 반영했다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 시퀀스로 생성되는 컬럼의 문제는 중간 글, 예를 들어 1번과 3번 사이 2번 글이 삭제된다면 기존 3번이 2번으로 자동 정렬되지 않고 그대로 3번으로 남아있다는 것이다. 만약 중간 글들이 여러 개 삭제된다면 글 번호는 그야말로 개판이 된다. 이렇게 ..
2024.03.08 -
🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 파일 업로드 수강 후기 게시판 CRUD 구현 시 파일 업로드 기술을 사용했다. C드라이브의 임시 폴더를 경로로 설정해 파일이 저장되도록 하였고 저장되는 과정에서 파일명을 랜덤으로 변경해 저장했다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 파일명을 랜덤으로 생성하지 않으면 파일명이 중복되어 저장될 수 있기 때문이다. 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 파일 데이터를 처리하는 컨트롤러의 로직이 실행되어야 하는데 자꾸 안되는 오류가 발생했다. 어떤 부분에서 막히는지 디버깅해본 결과 VO에 아예 매핑이 안되..
10.기능 구현(7) - 수강 후기 게시판(파일 업로드/다운로드)🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 파일 업로드 수강 후기 게시판 CRUD 구현 시 파일 업로드 기술을 사용했다. C드라이브의 임시 폴더를 경로로 설정해 파일이 저장되도록 하였고 저장되는 과정에서 파일명을 랜덤으로 변경해 저장했다. 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 파일명을 랜덤으로 생성하지 않으면 파일명이 중복되어 저장될 수 있기 때문이다. 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 파일 데이터를 처리하는 컨트롤러의 로직이 실행되어야 하는데 자꾸 안되는 오류가 발생했다. 어떤 부분에서 막히는지 디버깅해본 결과 VO에 아예 매핑이 안되..
2024.03.06 -
🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ CRUD 수강 후기 게시판 CRUD 구현 시 다음과 같은 기술을 사용했다. 1.조인 2.뷰 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 수강 후기 작성 시 카테고리에 회원이 수강한 강좌의 정보를 띄우고 싶었다. 회원이 수강한 강좌 테이블인 mycourse에는 회원 아이디와 강좌 번호만 있기 때문에 강좌 정보를 띄우려면 course 테이블의 정보가 같이 필요했다. 그래서 두 테이블을 조인하여 정보를 불러왔는데, mapper에 적고 보니 쿼리가 4줄이 되어 불편하고 가독성도 좋지 않았다. 또한 다른 서비스 로직에서도 사..
9.기능 구현(6) - 수강 후기 게시판(작성, 수정, 삭제)🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ CRUD 수강 후기 게시판 CRUD 구현 시 다음과 같은 기술을 사용했다. 1.조인 2.뷰 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 수강 후기 작성 시 카테고리에 회원이 수강한 강좌의 정보를 띄우고 싶었다. 회원이 수강한 강좌 테이블인 mycourse에는 회원 아이디와 강좌 번호만 있기 때문에 강좌 정보를 띄우려면 course 테이블의 정보가 같이 필요했다. 그래서 두 테이블을 조인하여 정보를 불러왔는데, mapper에 적고 보니 쿼리가 4줄이 되어 불편하고 가독성도 좋지 않았다. 또한 다른 서비스 로직에서도 사..
2024.03.04 -
🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 유효성 체크 수강 후기 게시판에서 다음과 같은 기능을 구현하고 싶었다. 1.비회원은 수강 후기 조회만 가능, 작성 불가 2.회원 중 수강 강좌가 없는 회원은 후기 작성 불가 3.다른 회원의 후기는 수정, 삭제 불가 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 1.비회원은 강좌 신청을 못하니 당연히 수강한 강좌도 없어 후기를 적으면 안되지만 후기를 참고할 수 있어야 한다. 2.회원이라도 수강한 강좌가 있어야 후기를 적을 수 있어야 한다. 3.내가 쓴 글을 남이 수정, 삭제하면 안 된다. 2️⃣ 어떤 문제가 생겼고, 어..
8.기능 구현(5) - 수강 후기 게시판(유효성 체크)🦮 스스로를 위한 프로젝트 일지 가이드 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 2️⃣ 어떤 문제가 생겼고, 어떻게 해결하였는가 3️⃣ 프로젝트를 되짚어보며 개선할 점이 있는가 ✅ 유효성 체크 수강 후기 게시판에서 다음과 같은 기능을 구현하고 싶었다. 1.비회원은 수강 후기 조회만 가능, 작성 불가 2.회원 중 수강 강좌가 없는 회원은 후기 작성 불가 3.다른 회원의 후기는 수정, 삭제 불가 1️⃣ 프로젝트를 진행하며 '왜' 그렇게 했는가 1.비회원은 강좌 신청을 못하니 당연히 수강한 강좌도 없어 후기를 적으면 안되지만 후기를 참고할 수 있어야 한다. 2.회원이라도 수강한 강좌가 있어야 후기를 적을 수 있어야 한다. 3.내가 쓴 글을 남이 수정, 삭제하면 안 된다. 2️⃣ 어떤 문제가 생겼고, 어..
2024.03.01