될때까지

((과제1)) 프리온보딩 DAY 3 본문

프로젝트/프리온보딩

((과제1)) 프리온보딩 DAY 3

랖니 2022. 10. 6. 19:37
728x90

지난 포스팅에 이어서 작성합니다 =>프리온보딩 DAY2

 

((과제1)) 프리온보딩 DAY 2

지난 포스팅에 이어서 작성합니다 ➡️ 프리온보딩 DAY1 ((과제1)) 프리온보딩 DAY 1 # 1 : URL 생성 특정 회원에 대한 측정 기록과 측정 데이터를 생성하는 기능을 만들고 있다. 처음 생각했던 URL은 /u

i-c-a-n-d-o.tistory.com

 

화,수,목 3일중에 2틀을 기능 하나에 다썼다 ㅠ_ㅠ 나.. 이거 할수있겠지..?.???

 

# 특정 회원의 측정 기록들(목록) 가져오기

유저가 몸무게를 측정하면, '측정 기록 테이블'에 측정 날짜와 함께 데이터가 생성된다.
해당 측정 기록 ID를 외래키로 연결해서 손목 가동성/어깨 굴곡/어깨 신전/보행/호흡의 데이터 값이 '측정 데이터 테이블'에 생성된다.

[특정 회원에 대한 측정 기록 가져오는 기능]을 구현하는데 데이터를 어떻게 보내야 깔끔할까를 고민했고, 
아래와 같이 1개의 측정 데이터 타입, 데이터 값을 객체로 만들어서 배열로 만들기로 정했다.

{
    "id": 2,
    "name": "Leecoder",
    "height": "161.0",
    "weight": "52.1",
    "measurement_data": [
        {
            "data": 160,
            "data_type_id": 2,
            "data_type_name": "shoulder flexion"
        },
        {
            "data": -52,
            "data_type_id": 3,
            "data_type_name": "shoulder extension"
        }
    ]
}

데이터를 위처럼 가져오기 위해 총 4개의 테이블을 JOIN으로 연결했고, 아래 기능을 사용해 구현했다.

  • JSON_ARRAYAGG : aggregation(집합)의 결과물을 JSON 배열로 만든다.
  • JSON_OBJECT : 키:값 쌍을 사용해 JSON 객체를 생성한다.

SQL문을 어떻게 작성하냐에 따라 데이터가 요리조리 변해서 나오는 게 재밌네 😍

 

# 정규식

프로젝트 하면서 한두번은 꼭 사용하게 되는 정규표현식
작성한 표현식을 테스트 할 수 있어서 유용한 사이트 링크 첨부 => regex101

 

# 포스트맨으로 API Docs 만들기

위코드에서는 API Docs를 노션페이지에 수기로 작성했었다.
이번 원티드 프리온보딩에서는 위코드가 아닌 다른 부트캠프 분들과 팀 프로젝트를 진행하게 됐는데,
포스트맨으로도 API Docs를 만들 수 있다고 알려주셨다!!

DB diagram으로도 기본 SQL 뼈대문 작성도 가능했다지 ^_^
우물안의 위코더야 나아가라 한 걸음 앞으로 

참고 사이트 => 포스트맨으로 API Docs

 

# conflict 해결법

팀 프로젝트를 하면서 오랜만에 컨플릭트를 만났다. 
해결하는 법을 잊지 않도록 다시 정리해두고 넘어갑니당

git checkout main

git pull origin main

git checkout 컨플릭트발생한브랜치

git merge main // 그러면 충돌 발생

// 충돌 해결 후

git add .

git commit -m "커밋메세지 작성"

git push origin 브랜치명

 

# Number vs parseInt

const year = '2022년 10월 6일'

console.log(Number(year))   // NaN
console.log(parseInt(year)) // 2022

const decimal = '123.123'

console.log(parseInt(decimal))  // 123
console.log(parseFloat(decimal)) // 123.123

Number는 문자열 전체를 숫자로 변환하려 하기 때문에 NaN, falsy한 값을 반환한다.
parseInt는 숫자만 인식해서 반환하며 첫글자가 문자인 경우에는 NaN을 반환한다.

팀원분이 Number를 사용해서 요청 url에 숫자(ex /3)가 아닌 문자열(ex /abcd)이 들어온 경우에 대한 에러처리를 하셨다.
위와 같은 결과값 때문에 해당 코드가 제대로 작동하는 것이였군 👍

참고 사이트 => number vs parseint

 

# 프로젝트 마무리

프리온보딩 일정 이렇게 빡센지 몰랐는데 너무 너무 빡세다. 익숙하지 않은 노드로 진행한 1차 팀 프로젝트라서 그런거겠지?
맡은 기능을 구현하기 위해서 자바스크립트 개념도 부족하고 SQL문도 찾아봐야하고 모르는 게 너무 많았다.
그래서 스트레스 때문에 4시에 취침하고 6시에 일어나서 토마려운 걸 참아가며 작성한 내 주옥같은 코드 ㅋㅋㅋㅋㅋ.
내가 맡은 기능 구현이 제일 어려운 부분이였다면 좋겠다. ^^... 

1차 프로젝트를 마무리하면서 느낀점은 이제까지 해왔던 클론 코딩과는 급이 달라서 너무 재밌다.
데이터 모델링부터 모든 걸 우리끼리 생각해서 의견을 조율해 만들어나가는 재미가 훨씬 크구나 느꼈다.

코드를 무작정 치기보다, 맡은 기능을 구현하기 위해 어떤 데이터가 필요하고 어떤 로직이 요구되는 지 밑그림을 그린 다음에 시작해야겠다고 느꼈다. 안그랬더니 코드를 뒤엎고 너무 힘들었다...!

위코드에서는 하다가 모르겠으면 멘토님께 여쭤보고, 옆자리 짝궁한테 물어보며 도움을 받았는데 이번에는 혼자 계속 고민하고 작성하고 지우고 다시 작성하고 또 지우고.. 혼자서 고통받는 시간이 커서 힘들었다. 하지만 고통이 길었던 만큼 해결했을 때의 희열이 너무 컸다.

힘들긴 해도 프리온보딩 하길 잘했다.

이제 바로 2차 프로젝트 하러 가보자.... 

728x90