1. 오늘 뭐 해먹지? 프로젝트는
- 바쁜 현대인의 살림 도우미를 만들고자 시작한 프로젝트
- 냉장고에 있는 재료를 선택하기만 하면 매일 새로운 메뉴를 만들어 먹을 수 있어요
2. 사용한 기술 & 어려웠던 점
크롤링
- 처음에는 네이버 음식백과를 이용하려고 했으나, 재료 div가 명확하고 일정하게 정해져있지 않아서 실패
- 만개의 레시피 사이트로 변경!했는데 어떤 레시피는 재료탭이 하나, 어떤건 둘로 나뉘어져 있어서 일단 둘다 긁어서 하나로 합쳐보았음
- 근데 주재료랑 양념탭을 분리하면 좋을 것 같다! 해서 먼저 양념탭이 있는 레시피를 먼저 긁어와서 spices로 저장해서 나머지를 그 리스트와 비교하기로 함
- 사람들마다 재료 표기법이 다름. 어느정도 정제된 데이터만 사용하기 위해 딕셔너리로 count해서 15번? 이상 등장하는 애들만 db에 저장
- 미리 만들어 놓은 spices, ingredients db에 속하는 애들을 menus db에 메뉴 이름, url, og_image까지 함께 저장
프론트엔드
- 원래는 체크박스로 만들었었음. 근데 너무너무 안예뻤어ㅠ
- 안예쁜 체크박스 버튼형식으로 바꾸고, 눌렀을 때 색깔 다르게해서 확인할 수 있게 했음
백엔드
- db에 올려놓은 spices, ingredients 선택할 수 있게 보내주기.
- 일단 서버가 돌아가는 동안은 크롤링하면 안됨! 너무너무 느려지기 때문에. 필요한 데이터는 db에 미리 넣어놓아야 함. (ex. og_image)
- 재료가 너무 많으니까 스크롤을 내려야해서 불편해서 ㄱㄴㄷ 검색 탭 따로 만들었다! jamo 라이브러리 설치하고, 초성으로 분리해서 딕셔너리에 저장. 엄청 헤맸는데 역시 선생님 찬스..! 혼자 코딩할 땐 이런거 어디 물어보냐~!
- 선택한 재료 리스트를 인자로 받아서, 주재료를 하나 이상 포함하는 레시피 중 전체 항목을 가장 많이 포함하는 카드를 상위에 보여줄 수 있도록 정렬했다. 여기서도 딕셔너리로 count!
- 더 필요한 재료를 따로 보여주고, 클릭하면 바로 ssg.com에서 살 수 있도록 연결해주고 싶어서 a태그 붙이는 걸 프론트에서 열심히 해보았으나.. 실패하고 그냥 백에서 텍스트형식으로 여서 리턴해줬다. 이건 아직도 잘 모르겠지만, 되면 된거지 뭐,,
3. 8주간의 코딩 첫..걸음 후기
- 사실 배울때는 내가 뭘 배우고 있는지 뒤죽박죽 모래성 같았다. 머릿속에 뭐가 있는 것도 같고, 없는 것도 같고.
- 숙제하면서, 그리고 특히 내 프로젝트 하면서 모래성을 콘..크리..트..성으로..! 만들 수 있었음! 아니 나무..정도..
- 내 프로젝트에서 배운 걸 많이 써먹어보는 게 가장 중요한 것 같다. 더 어려운 걸 해도 좋겠지만, 배운 것부터 최대한 내 걸로 만들기! 그러면 뭔가 확실히 남긴 남는듯.
- 처음부터 끝까지, 프론트엔드부터 백엔드, 데이터베이스까지 전부 내 손으로 만들어 보는 게 진짜 의미있음. 면접 때 할 말 많아져서 좋다!