일일 회고록 - Hee-Jae/RacerPortfolio GitHub Wiki

8월 16일

  1. 프로젝트 생성
  2. 디렉토리 구조, 컨벤션 정하기
  3. 데이터베이스 스키마 설계
  4. 기술 스택 정하기
  5. 웹 구조 설계

8월 17일

전날 완료한 것

  1. 프로젝트 생성
  2. 디렉토리 구조 만들기
  3. 데이터베이스 스키마 설계
  4. 기술 스택 정하기
  5. 웹 구조(컴포넌트) 설계
  6. Redux 를 이용한 로그인 상태 관리
  7. NavBar 만들기

회고

데이터베이스 스키마를 3차 수정해야할 필요를 느꼈다. 이정규님의 스키마를 보니까 나에게 있는 Portfolio 테이블이 굳이 따로 필요하지 않겠다는 생각을 했다. 처음엔 한 유저당 여러 개의 포트폴리오가 존재할 수 있다는 생각에 테이블을 분리 시켜놨는데, 포트폴리오가 여러 개 존재한다...? 다시 생각해보니 이상하다. 한 유저당 포트폴리오는 한 개가 맞는 것 같다.

오늘 할일

  1. 데이터베이스 스키마 수정하기
  2. ORM 모델 생성
  3. URI 설계하기
  4. 포트폴리오를 구성하는 컴포넌트 구현하기

일단 해보고 시간 남으면 더 해야겠다.
오늘은 어떤 커피와 함께 버텨볼까 ~


8월 18일

전날 완료한 것

  1. 데이터베이스 스키마 수정하기
  2. ORM 모델 생성
  3. Migrate 적용
  4. 로그인 기능 만들어 보기
  5. 회원가입 기능 만들어 보기
  6. 컴포넌트 코드 대충 작성 해놓기

회고

어제 꽤나 많은걸 한 것 같았는데 적고보니 별로 없다. 오늘은 더 열심히 해보자. 어제 구글 로그인 기능을 서버에서 구현하려고 했는데 아무래도 클라이언트 측에서 구글 로그인 하고 계정 정보를 서버에 넘겨주는게 더 좋을 것 같다.

오늘 할일

  1. 구글 로그인 기능 완성하기
  2. 포트폴리오 작성 기능 만들기

8월 19일

전날 한 일

  1. 구글 로그인 기능 마무리하기
  2. Redux-Persist를 이용한 로그인 상태관리
  3. 데이터베이스 속성 타입 Text -> Varchar로 수정
  4. JWT 발급, 인증 절차 다시 설계하기
  5. 간단한 CSS 적용

회고

형준님께서 JWT가 조금 이상하다고 말씀하셔서 다시 알아봤다. 내가 만들었던 JWT는 그저 JWT 모양을 갖춘 토큰을 생성해내는 것 이었는데, flask_jwt_extended라는 라이브러리를 사용하면 JWT 만료시간, 헤더로 넘어온 JWT 검증 등 다양한 기능을 구현할 수 있다는 것을 알았다. 이따 다시 검사 받으러 가야지

오늘 할 일

  1. 포트폴리오 작성 기능 만들기

오늘 저거 하나만 해도 시간 뚝딱 지나갈 듯...


8월 20일

전날 한 일

  1. 학력 수정 기능

회고

포트폴리오 내용 작성하는 기능을 어제 만들기 시작했다. 테스트용으로 학력 부분만 만들어봤는데 이거 하나 만드는데만 하루종일 걸렸다. 학력이 여러 개가 있을 때 각 학력의 항목마다 수정 버튼이 있는게 아니라 학력 전체를 수정하고 수정완료 버튼을 누르면 학력 내용이 한번에 바뀌어야 하기 때문에 서버에 어떤 데이터를 어떻게 요청해서 쿼리를 날려야하는지 감이 안잡혔다. 머릿속에 떠오를 때마다 코드 수정하고, 다시 생각해보니 잘못 만든 것 같아서 코드 갈아엎기를 여러번 반복했다.

오늘 할 일

  1. 포트폴리오 작성 기능 만들기

오늘은 성과가 있었으면 좋겠다


8월 21일

전날 한 일

  1. 프로필 이름, 한줄 소개 수정 기능
  2. 학력, 수상이력 CRUD

회고

프로젝트, 자격증의 이력을 작성하는데 날짜 포맷 문제 때문에 애먹었다. 나중에 이 부분은 따로 정리를 해봐야겠다.

오늘 할 일

  1. 프로필 사진 등록 기능
  2. 네트워크 검색 기능

힘내자...


8월 23일

전날 한 일

  1. 피드백 적용
  2. 비밀번호, 비밀번호확인 비교
  3. 회원가입 시 빈칸 여부 확인
  4. Main, Network 페이지 access_token 만료시 refresh_token을 이용해 재발급
  5. 코드 리팩토링
  • 클라이언트에서 포트폴리오 항목(프로필, 학력, 수상이력, 프로젝트, 자격증)을 각각 state로 가지고 있던 것을 하나의 객체로 관리
  • request header를 utils에 따로 저장 후 import 하여 사용

회고

주말에 푹 자고 오후 1시부터 작업을 시작했다. 매일 10시에 회고하다가 1시부터 시작을 하니까 회고하는걸 깜빡했다... 주말 안에 필수기능들은 모두 구현했다. 완벽히 해냈는지는 잘 모르겠다. 혼자 개발하는게 이런 점에서 안좋다. access_token을 재발급하는 방법만 몇시간을 고민했다. 기본적으로 데이터베이스를 사용하긴 하는데, 클라이언트가 refresh_token을 직접 들고있게 하고싶지 않았다. 사실 어제는 일주일간 매일 코딩하다보니 머리로 생각은 하면서 손이 쉽게 움직이지 않았다. 오늘은 좀 더 열심히 해봐야겠다.

오늘 할 일

  1. 이메일, 비밀번호, 이름 validation
  2. 포트폴리오 전 항목 validation
  3. 전 페이지 access_token 재발급 기능 적용

8월 24일

전날 한 일

  1. 로그인, 회원가입, 포트폴리오 수정 validation
  2. refresh_token 만료가 아닌 다른 에러에도 '세션 만료' 오류로 처리하던 버그 수정
  3. request 요청을 보내는 모든 곳에서 access_token 만료시 재발급 후 재요청
  4. 로그인, 회원가입 CSS 작업

회고

기능 구현 위주로 만들다보니 중복되는 코드가 많아졌다. 컴포넌트 내에서 useDispatch, useSelector 의 훅을 써야하는 코드인데 다 중복이다. 코드를 따로 빼서 외부로부터 import 해오는 방식으로 진행했어야 하는데, 훅 사용을 컴포넌트 내에서만 할 수 있기 때문에 방법이 꽤나 어려웠다. 그래서 일단 리팩토링은 나중에하고 기능부터 하고보자는 생각에 계속 만들다보니 어느새 리팩토링하려면 시간을 엄청 쏟아 부어야할 경지에 이르렀다. 아마도 전체 로직을 바꿔야할 것 같다. 이러한 점에서 상당히 아쉬운 마음이 든다. 다음부터는 설계에 좀 더 각별히 신경 써야겠다.

오늘 할 일

  1. CSS 작업

8월 25일

전날 한 일

  1. CSS 작업
  2. 구글 로그인 페이지가 별도로 존재하던 것을 없애고 로그인 페이지에 새로 적용
  3. 클라우드 스토리지를 이용한 이미지 업로드 작업

회고

CSS는 아무리 배워도 너무 어렵다. 어제 클라우드 스토리지에 대해 잠깐만 알아보고 작업은 다음날 하려고 했었는데 한번 손대기 시작하니까 자꾸 욕심이 생겨서 결국 어제 이미지 업로드 작업을 끝마쳤다. 대신 오늘 기상시간을 평소보다 1시간반 늦췄다.

오늘 할 일

  1. CSS 작업
  2. 디자인 개편
  3. 배포에 대해 알아보기
  4. 파이썬 import optimize 적용해보기

얼마 안남았다...


8월 26일

전날 한 일

  1. CSS 작업
  2. python import optimize 적용
  3. 배포

회고

어제 배포를 하는 과정에서 정말 좌절스러운 사고가 발생했다. 애저 가상머신에 서버 환경을 설치하는 중에 애저 스토리지를 연결하기 위해 사용했던 flask_azure_storage 가 더 이상 지원되지 않는다는 것이었다. azure_storage 를 설치해서 사용할 수 도 있지만 그렇게 하면 코드를 또 수정해야한다. 스토리지 연결할 때 정말 힘들었는데, 이걸 또 건드려야 한다는 사실에 너무 힘이 빠졌다... 결국 어떻게 잘 해결되긴 했다.

그런데 배포 후 생긴 한가지 문제점, 페이지를 새로고침하면 항상 404 에러가 뜬다. 또 도메인주소/main 처럼 경로를 직접 입력해서 들어가도 에러가 뜬다. 무조건 도메인주소만 입력해야 정상적으로 접속이 된다. 이 문제를 어떻게 해결해야할까...

오늘 할 일

  1. 페이지 새로고침시 404 문제 해결
  2. 프로젝트 정리

8월 27일

전날 한 일

  1. 페이지 새로고침시 404 문제 해결
  2. 프로젝트 정리

회고

드디어 프로젝트가 끝났다. 너무 급하게 달려와서 조금 아쉬운 점이 많았다. 프로젝트를 되돌아보며 정리해야하는 내용들은 좀 정리해야겠다.

오늘 할 일

  1. 발표 자료 만들기
  2. 프로젝트 정리

고생했다...