체단실 - Data

이제일·2021년 7월 18일
0

체단실

목록 보기
6/9
post-thumbnail

이미 프로젝트는 끝난 시점이다.

Data

해당 프로젝트의 정체성을 갖추기 위해서는 운동 정보, 식단 정보가 필요했다.




Workout Data

공공 데이터를 가져와 원하는 만큼 가공하기에 무리가 있다고 판단되어 (관련 데이터 자체가 거의 없다)
알고 있는 지식 + 보디빌딩 책을 참고하여 직접 JSON 형식으로 데이터를 만들었다.
생각보다 많이 힘들었다...

형식

다음 사진과 같이 명칭, 관련 운동, 주동근, 도구, 사진 url 등등을 json 파일로 media로 제공한다.

사진

운동 자세를 보여줄 만한 이미지를 구글링으로 찾다가 유튜브에서 많이 본 그림체가 보였다.
출처를 따라가보니 노다지였다.모두 해당 사이트에 있는 이미지로 바꿨다.

출처도 명확히 써놨고 어떤 영리 목적도 없기에 저작권은 문제없길 바라고 있다.

용량문제

배포할 서버가 용량이 적은게 불안해서 아예 필요한 이미지를 github에 저장해서 url로 연결했다.

사용처

먼저 운동 정보들을 모아놓은 information 페이지와
맞춤형으로 운동 추천을 위해 데이터를 조합하여 mypage-feedback페이지에 사용되었다.

알고리즘

분할 수에 따라 해당 요일에 운동하는 부위를 정해주고 해당 부위를 사용하는 운동을 랜덤으로 추천해주는 방식이다.
어느 한 가지 방식으로 고정하면 안되지만 능력 부족으로 다양성을 제한해서 구현했다.

아래는 등, 가슴, 어깨 3분할을 설정했을 경우이다.

아쉬운 점

너무 빈약하다.
데이터를 만들다가 귀찮아서 대충대충 했던게 너무 눈에 보인다.
또한 진행 중 필요에 의한 수정이 조금 잦았다.

다듬고 싶지만 생각보다 고려해야 할 점이 많아서 시간이 좀 많이 걸릴 것 같다.




Food Data

몸을 만들기 위해선 운동, 영양, 휴식이 모두 잘맞아야한다.
하지만 이부분은 관심도 없었어서 작업시 고통받았다.

군인

생각해보니 홈페이지 이름도 '체단실'이며 처음 생각했던 컨셉도 군인을 위한거였다.
그러나 많은 제한사항이 있는 군대이지 않은가 그래서 병영식 이외의 영양은 PX 물품, 프로틴으로 제한했다.

PX 물품

인터넷 및 직접 PX를 방문하여 단백질 있어보이는 식품을 위주로 영양 성분을 조사해봤다.
조사 완료된 종류는 참치크래커,마시는 오트밀 퀘이커, 사조 스노우 크랩킹, 감동란, 정통 불고기 참치, 살코기 동원참치(100g), 크림우동, 프로틴이다.
냉동 식품의 경우 영양 성분은 대부분 안적혀있었다.

병영식

병영 식단 데이터의 경우 국방부 공공 데이터 포탈에서 받아왔다.
군대 답게 노후된 환경에 의해 시간이 많이 소요됐다.

민간인

영양과 관련되어서는 생각보다 다양한 관점이 있어서 조사하는데 애를 먹었다.
그래서 음식 종류에 관해서는 다이어트, 벌크업에 좋다는 식품과 일반식을 몇 가지 선정하여 진행했다.
이 또한 모든 음식을 고려하기엔 데이터가 부족하여 직접 찾아가며 타이핑했다..

영양 성분

각 음식마다 들어있는 영양분은 모두 조금씩 달라 영양 관련 앱의 사이트를 이용해서 통일 했다.

영양분 조절

권장하는 영양분 섭취량은 알아 볼수록 상이하여 책과 신빙성 있는 유튜브 채널을 적당히 타협해서 정했다.
기초 대사량과 각 목적(다이어트, 벌크업, 커팅)에 따라 초기 값을 설정하고 칼로리 설정을 변환 할 수 있게 했다.

기초 대사량

 def cal_metabolism(sex, height, weight, age):
        if(not sex): # 남성
            return int(66 + 13.8 * weight + 5 * height - 6.8 * age)
        else:
            return int(655 + 9.6 * weight + 1.8 * height - 4.7 * age)

칼로리

권장 칼로리 설정의 경우 기초 대사량metabolism에서 비율을 목적에 따라 다르게 설정했다.

	if(target == 1)// 벌크업
            kcal = parseInt(metabolism*0.55);
        else if(target == 2)//커팅
            kcal = parseInt(metabolism*0.4);
        else if(target == 3)//다이어트
            kcal = parseInt(metabolism*0.25);

알고리즘

각 끼니에 어울리는 음식들 중
어느정도 칼로리 및 탄단지의 비율을 맞출 때까지 랜덤으로 음식을 정한다.
또한 확률적(약 10%)으로 과일류를 추가한다.
그래서 메뉴가 중구난방이다.

profile
세상 제일 이제일

0개의 댓글