반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • nextjs
  • 나의 해방일지
  • 삼성SDS
  • GraphQL
  • 티스토리챌린지
  • 백준
  • 오블완
  • C++
  • 언어
  • 전공 요약 #운영체제
  • Next.js #graphql #tailwind.css
  • 기계식키보드 #nuphy
  • A형
  • 전공 요약 #네트워크
  • 전공 요약 #데이터베이스
  • 공간복잡도
  • 삼성SW역량테스트
  • 면접
  • 전공요약
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

개발자 이야기

2022.09.11 개발자 이야기 (8월은 재정비의 달)

2022. 9. 11. 18:29
728x90
반응형

7월 말 라이브 배포를 끝마치고, 8월은 공식적으로 재정비에 들어가는 달이었습니다. 

일도 쉬엄쉬엄하고 몸도 마음도 회복하는 시기었죠.

 

운동

저는 7월 24일부터 아침 헬스를 시작하였고, 거의 일주일에 5~6번은 꾸준히 나가고 있습니다.

몸과 마음이 지치고 생각이 복잡할때 운동만한 것이 없더군요.

운동할 때만큼은 잡생각을 하지 않고 지금 이순간의 운동에만 집중할 수 있어서 참 좋은 것 같습니다.

끝나고 나면 정말 개운하기도 하고 성취감도 있고요.

이제 겨우 1달 하고도 조금 더 했는데 걸을 때나 계단 올라갈때 훨씬 힘이 나네요. 몸도 건강하고 좋아지니 더 당당해진 기분입니다.

 

운동은 3분할로 쪼개서 밀기/당기기/하체를 돌아가면서 하고 있고, 운동 기록이나 메모는 번핏 어플로 기록하고 있습니다.

저는 엄살이 심해서 운동 사이의 휴식 시간 타이머를 사용하지 않으면 안되는 스타일이라서 어플이 참 도움이 됩니다.

 

모임

그리고 소모임 어플 통해서 개발자 모임도 새로 등록했습니다.

아무래도 동일 업종 내 네트워킹을 무시할 수가 없기 때문이죠. 서울에서 친구도 만들고 싶기도 하고요.

사실 오프라인 모임에서 프론트엔드 분들과 모여서 같이 이야기 나누고 싶은데 왜이렇게 프론트엔드 분들은 오프라인 활동을 안나오시는지 모르겠네요😅 백엔드 사람들이 외부 활동에 훨씬 더 적극적인 것 같습니다. ㅠㅠ

 

그 외에도 한 번도 해본 적 없었던 독서 모임이나 영화 모임 등에도 나가보았습니다.
최근 들어서 다른 사람들의 생각을 좀 들어보고 싶고 이야기도 나눠보고 싶은 생각이 많이 들더라고요. 너무 일만 하다보니 내향성이 

문토라는 모임 어플을 사용했는데 이용자 수도 꽤 많고 모임도 다양해서 좋았고, 당근마켓 처럼 매너 온도가 있어서 영 이상한 사람을 경계하고 피할 수 있어서 좋았습니다. (광고아니에요 ㅋㅋ)

 

코딩의 질을 한 단계 업그레이드

마냥 쉬기만 할 수 없으니 쉬어가는 기간동안 코딩의 질을 한 단계 업그레이드 하는 시간을 가졌습니다.

완전 새로운 기능을 만드는게 아니라 기존에 만들어둔 것을 혁신적으로 개선해보려고 노력해보았습니다.

 

1. URL 기반의 서브페이지 관리 체계 도입 

https://11001.tistory.com/195

 

리액트 URL Hash기반의 서브페이지 관리 체계 도입

우연히 서핏에서 리액트 관련 블로그 글을 보다가 NHN의 TOAST 기술 블로그에서 Jotai 라이브러리에 있는 atomWithHash 로 모달 상태를 URL과 동기적으로 관리하는 방법에 대해 소개하는 글을 보았습니

11001.tistory.com

 

2. 모듈 조립식 라우터 도입

별도로 포스팅하기엔 내용이 좀 적어서 고민중이긴한데 여기에 간단히 소개해보겠습니다.

라우터별로 Main, SideBar, Header, Footer 등 레이아웃 별로 원하는 컴포넌트를 children 으로 넣어서 조립하는 방식입니다.

 

이렇게 만들게 된 이유는 간단합니다.

기존에는 라우터별로 한 컴포넌트 안에 필요한 컴포넌트들이 우겨넣어진 상태로 사용했었습니다.

문제는 거의 똑같은 코드를 사용하는 파일이 2개가 있는데 나중에 내용이 달라질 것을 생각하니 하나로 합치지도 못하고, 그대로 두기에는 매번 변경사항을 두 파일에 적용하기엔 귀찮고, 심지어 한쪽을 업데이트 안해줘서 이원화 되어버리기도 하는 문제가 있었기 때문입니다.

 

처음에는 정말 공통된 부분만 뽑아내고 서로 다른 부분은 각각의 하위 컴포넌트에 집어넣는 방법을 생각했었는데 또 다른 새로운 페이지를 추가해야 되었고, 다른 프로젝트의 컴포넌트를 가져와서 재활용 하는 상황을 고려하게 되면서, 차라리 최소 단위로 다 쪼개서 조립식으로 만들어보기로 결심했습니다.

 

결국엔 아래와 같이 공통프레임 내부에 필요한 컴포넌트를 레이아웃별로, (레이아웃에 관계없는 채팅 같은 것들은 별도로) 집어넣어서 조립시켰습니다. 

각 라우터 별로
<공통프레임>
    <채팅/>
    <사이드영역 title={'사이드바제목'}>
        <사이드영역 렌더링할것 />
    </사이드영역>
    <메인영역>
        <메인영역 렌더링할것 />
    </Galaxy>
</공통프레임>

 

3. 모듈별 ErrorBoundary & Suspense 도입

기존에는 데이터가 하나의 통합 API 로 받아온 뒤 여러 컴포넌트에 전달하는 방식이었고, 최상위 컴포넌트에 ErrorBoundary 를 설정해두어서 Error 발생하면 전체 화면의 에러 페이지를 보여주었습니다.

그런데 최근에는 통합 API를 각 모듈별 API로 쪼개는 작업을 진행하게 되면서 이제는 모듈별 ErrorBoundary를 도입할 때가 되었구나 싶었습니다.

 

이것 또한 시간되면 별도로 포스팅하게 될 것 같지만, 간단하게 과정을 작성해보겠습니다.

 

  • API 공용 axios instance 제작 하고 제네릭 타입을 받아서 data 를 반환하는 공용 함수 생성
    • res.data.data가 아니라 res.data 를 뱉는 버전도 있고, AccessToken 받아서 헤더에 넘기는 버전도 만들었음.
export const request = <T>(url: string, data?: AxiosRequestConfig) =>
  axiosInstance.request<{ data: T }>({ url, ...data }).then(res => res.data?.data)

 

  • API 파일 하나에 모든 API 를 정의하여 끌어다 쓸 수 있도록 개선 API 이름은 한글명 지어서 매우 직관적이게 만듬
  • 모듈 이름의 폴더 만들어서 필요한 파일을 아래에 모아서 정리
    • 모듈.tsx
    • 모듈Skeleton.tsx
    • styles.ts
  • 각 모듈 컴포넌트에서 React Query 를 통해 해당 모듈 API 호출하도록 변경. 캐싱 설정
  • 로딩 상태에서는 모듈Skeleton.tsx 파일을 렌더링
  • 에러 상태에서는 모듈 단위 ErrorBoundary 에서 Catch
    • 400 Error
      • 여러 모듈에서 Error 발생한 경우 한번에 새로고침 할 수 있도록 상위 컴포넌트로 에러를 throw 해주었습니다. 
      • 사용자 스스로 에러 상태에서 벗어날 수 있다고 가정하고, (상위 컴포넌트에) 새로고침 버튼을 주고, 페이지 새로고침 할 수 있게 하였습니다.
    • 500 Error
      • 사용자 스스로 에러 상태에서 벗어날 수 없다고 가정하고, 오류신고 버튼을 주었습니다. 현재는 구글 폼으로 연결되어 수동으로 에러 리포트를 작성해야하지만, 추후에는 자동 에러 리포트 전송되도록 개선 예정입니다.

대략 이런 과정들을 추가했고 이제 모듈들이 진정한 의미의 모듈이 되었습니다 ! 와 ! 다른 프로젝트에 가져가서 이식하기 정말 쉽겠네요!

 

그 외에도 자바스크립트->타입스크립트 마이그레이션 등을 꾸준히 진행하고 있기도 하구요

마음 같아선 빨리 타입스크립트 전환 끝내고 react18 도 도입해보고 싶습니다. 라이브러리 버전 문제로 머리아플것 같긴하지만요...

 

 

8월에 엄청 놀고 먹고 쉬었다고 생각했는데 되돌아보니 뭔가 많이 했네요.

반응형
저작자표시 비영리 동일조건

'개발자 이야기' 카테고리의 다른 글

2022.09.26 개발자 이야기 (블로그 리모델링, 사내 스터디)  (0) 2022.09.26
2022.09.18 개발자 이야기 (백엔드 스터디 시작, numble)  (0) 2022.09.18
2022.08.04 사는 이야기 (근황: 웹 프론트엔드 신입)  (0) 2022.08.04
2021.11.19 사는 이야기 (분노)  (0) 2021.11.19
2021.08.28 사는 이야기 (퇴근 후 공부하기)  (0) 2021.08.28
    '개발자 이야기' 카테고리의 다른 글
    • 2022.09.26 개발자 이야기 (블로그 리모델링, 사내 스터디)
    • 2022.09.18 개발자 이야기 (백엔드 스터디 시작, numble)
    • 2022.08.04 사는 이야기 (근황: 웹 프론트엔드 신입)
    • 2021.11.19 사는 이야기 (분노)
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바