-
TIL 2023.07.10내일배움캠프 2023. 7. 10. 21:50
드디어 최종프로젝트이 막이 내렸다.
4개월 넘게 달려온 마라톤이 마무리가 되었다.
하지만 이제부터가 시작이다.
취업
오늘 사전질문 받은 것을 정리한 걸 보자
1. 테스트 코드를 잘 작성해주셨는데 이로 인해 얻는 장점이 있을까요?
- 코드의 안정성 향상 테스트 코드를 작성하면 코드의 안정성이 향상됩니다. 테스트 코드를 작성하면 새로운 기능을 추가하거나 코드를 변경할 때, 기존 코드에 문제가 생겼는지 검증할 수 있습니다. 이를 통해 특정 기능이나 모듈이 제대로 작동하는지 확인할 수 있으며, 버그를 사전에 발견하여 코드의 안정성을 높일 수 있습니다.
- 코드 리팩토링 용이성 테스트 코드를 작성하면 코드 리팩토링이 용이해집니다. 코드 리팩토링은 기존 코드를 유지보수하거나 개선할 때 사용하는 기술로, 코드의 가독성을 높이고 유지보수를 쉽게 만들어 줍니다. 테스트 코드를 작성하면 리팩토링 후 코드의 기능이 변경되는지 여부를 확인할 수 있으므로, 코드 리팩토링이 쉬워집니다.
- 팀원 간 협업 향상 테스트 코드를 작성하면 팀원 간 협업이 원활해집니다. 테스트 코드를 작성하면 코드 자체의 동작을 이해하고, 코드 리뷰를 수월하게 할 수 있습니다. 또한, 테스트 코드를 작성하면 코드 변경 후에도 기능이 문제없이 동작하는지 확인할 수 있으므로, 팀원들 간의 신뢰도가 향상됩니다.
- 코드 품질 향상 테스트 코드를 작성하면 코드의 품질이 향상됩니다. 테스트 코드를 작성하면 코드의 가독성과 유지보수성이 높아지며, 버그 발생 확률도 낮아집니다. 이를 통해 코드의 품질을 높일 수 있습니다.
최종적으로, 테스트 코드를 작성하면 코드의 안정성, 유지보수성, 협업성, 품질 등이 향상되므로, 개발자로서 반드시 필요한 기술 중 하나입니다.
테스트 코드를 작성하면 코드가 어떻게 작동하는 지를 이해하고, 코드를 수정할 때 예상치 못한 부작용을 방지할 수 있습니다. 또한 테스트 코드는 개발자 간의 협업을 원활하게 하고, 코드를 유지 보수하는 데 필요한 문서화 작업을 줄일 수 있습니다.
테스트코드를 작성하면 안정성 향상, 리팩토링 용이성, 협업 향상, 코드 품질 향상 등 많은 이점있지만, 그 중에서도 저희 팀에서 겪은 경험을 예를 들면, AI 기능 테스트 코드를 작성하는 도중 AI 기능에서 발생하는 오류의 원인을 알게 되어 문제를 해결할 수 있었던 경험이 있습니다.
2. 지도 API를 활용하여 경로까지 표시해주는 기능을 보고 놀라웠습니다. 어떤 방식으로 동작을 하는지 설명해주실 수 있을까요?
선분을 표시해주는 기능은 createMarker라는 함수안에 들어있습니다. 해당 함수는 상세페이지 조회와 마커가 추가, 삭제 될 때마다 실행됩니다.
함수가 실행되면 처음에 markers와 lines라는 배열을 초기화 해주고 인자로 받은 positons라는 목적지 정보를 가진 배열에 for문으로 목적지를 하나씩 가져옵니다.
이때 해당 목적지의 좌표를 markerPosition이라는 변수에 저장합니다.
해당 목적지 좌표를 가지고 마커를 생성하고 markers라는 배열로 추가해주게 되는데 이 for문 안에서 markers 배열 속 마커가 2개 이상이라면 선분을 그어주는 조건문에 진입합니다.
linePath변수는 2개 마커의 위치정보를 담고있는데 하나는 markers 배열의 마지막에서 두번째로 추가된 마커의 위치정보, 그리고 현재 for문에서 만든 marker의 위치정보를 가져옵니다.
linePath를 가지고 Polyline이라는 카카오맵 함수를 이용해 선분의 모양새를 설정하고 선분을 그어주고 해당 선분 정보를 lines 배열에 추가해줍니다.
3. 프로젝트 기간 중에 기능을 구현하시는 도중에 어려웠던 점이 있을까요?
- 회원기능
- 구글, 카카오, 네이버의 회원 정보에서 별명, 나이, 연령대, 성별을 사용자 모델과 매핑하여 저장해야 하는데 데이터의 중복을 처리하고, 필요한 데이터만을 가져오는 작업이 어려웠습니다. 각 소셜 플랫폼의 API 문서를 참고해 해결할 수 있었습니다.
- 루트 공유
- 지도 기능을 처음 다루어보았기 때문에 해당 기능을 구현하기 전에 카카오맵 API에서 제시된 예시나 문서를 많이 읽어보았습니다. 지도 기능을 구현하기 위한 구조나 사용하는 함수들을 제 기능에 맞게 변경하기 위해 먼저 이해해야 했습니다. 지도에서 사용하는 구조나 함수들을 이해하기 위한 공부 과정이 가장 어려웠던 것 같습니다.
- 동료 모집
- 동료모집에 신청을 하는것 까지는 쉽게 구현을 했지만 이후 수락과 거절을 하는 과정에서 고민을 많이 하였습니다. 신청을 한 이후에 수락이나 거절을 했을 때 신청자 목록에서 신청자를 삭제를 하는 방법과 신청자 목록에 남겨두고 거절되었다고 표시를 하는 방법중에 고민을 하였습니다. 팀원분들과의 회의를 거쳐 신청 이후 상태를 나타내는 것이 좋을 것이라고 판단되어 신청자 목록에 남겨두면서 거절이나 수락이 되었다고 표기하는 것으로 구현하였습니다
- 리뷰
- 페이지네이션과 카테고리 동시 구현 시 방향을 잘못 잡아 조금 헤맸지만 팀원들과 튜터님의 도움으로 완성해서 기쁩니다. 헤매는 과정에서도 쿼리셋 부분을 오버라이딩 시도했던 경험이나 여러가지 페이지네이션 방법들을 검색해봤던게 다른 부분에서도 도움이 되었습니다.
- AI
- segmentation AI를 처음 다뤄보았는데, 어떻게 구현해야할지 감이 안왔습니다. 하지만 인터넷 검색을 통해 다양한 정보를 찾아 결국 구현하는 데 성공했습니다. 그러나 서버를 배포했을 때 예상치 못한 문제가 발생하여 해결이 어려웠습니다. 이 기능을 버리는 것이 좋을까 고민했지만 결국 문제를 잘 해결해 뿌듯합니다.
1. 여행 서비스는 보기만 해도 참 좋습니다! 갠트 차트를 활용해서 프로젝트를 관리하신 점이 참 인상적이었습니다. 팀원분들 모두가 블로그 작성을 잘해주신 점도 너무 좋았습니다. 프로젝트 관리 과정에 대해서 설명해주실 수 있나요?
갠트 차트를 활용해 팀원들의 목표 달성 여부를 체크할 수 있었고, 프로젝트를 원할하게 진행하기 위해, 하루에 세 번 현재 진행 상황을 공유하는 시간을 가졌습니다. 오전 9시에는 오늘 할 일에 대해 이야기하고, 오후 3시에 중간 진행 상황을 공유하며, 오후 8시에는 각자 오늘 한 일에 대해 이야기했습니다. 이러한 방식으로 팀원 간 진행 상황을 파악하고 동기부여를 받을 수 있었습니다. 또한, 오후 8시에는 Github에 보낸 PR을 기반으로 서로의 코드 리뷰도 진행하여, 서로의 코드를 보며 피드백을 주고 받았습니다.
2. 기술을 선택한 의사결정 과정에 공유하신 부분도 좋았습니다. 최종 선택 후에 사용하시고 나서 리뷰를 해보자면 의사결정에 대해서 어떤 평가를 하실수있으실까요?
- 토치비전
- 다른 선택지는 사정상 사용할 수 없어서 토치비전을 사용하게 되었습니다. 그래도 서버 용량과 리소스도 줄이고, 사용자들이 성능 별로 3가지 모델 중 선택할 수 있도록 함으로써, 사용자들이 모델을 바꿔가며 사용하는 것을 통해 사용자 경험에 더 재미를 더할 수 있지 않았을까 생각합니다.
- TourAPI
- 교과서에 나오는 유명한 문화 역사 관광지 정보만 있는 것도 아니고 동네 사람들만 아는 작은 가게까지 모든 정보가 다 있는 것도 아니고 여행에 관련해서 딱 적당한 양의 데이터를 갖고 있어서 아주 좋은 선택이었습니다. 관광지와 식당, 더 나아가 숙박, 쇼핑, 행사, 문화 시설 등 분류도 다양하고 체계적으로 잘 되어있어 추후에 더 확장하기 좋을 것 같습니다.
- allauth
- allauth는 Django와 통합되어 있어 간단한 설정만으로도 소셜로그인을 구현할 수 있었습니다. API키 및 비밀번호를 설정하고 몇 가지 URL 패턴을 추가하는 것으로 소셜로그인을 구현했습니다.
- t3a.medium
- t2.medium에서 t3a.medium으로 인스턴스 유형을 변경함으로써, 성능도 더욱 좋아지고 서버 비용도 줄일 수 있어서 단점이 전혀 없었습니다. 대만족
- 카카오맵
- 마커생성, 정보창 생성, 마커간 선분 연결 등 많은 예시들이 카카오맵 API사이트에 제시되어 있어 개발하는데 큰 도움이 되었습니다.
3. 사용자 피드백을 반영한 것이 좋았습니다! 사용자의 피드백을 반영하면서 어려웠던 점은 없으셨나요?
피드백을 초반에 가장 많이 받았는데, 그 때는 AI 관련 문제로 서버가 먹통이 되던 시점이었습니다. 그래서 당시 피드백은 서버가 정상 작동하지 않는다는 내용이 대부분이었습니다. 피드백을 가장 많이 받을 초반부에 서버가 작동이 안되어 제대로된 피드백을 못 받지 못한 게 아쉬웠습니다.
같은 주제인 로그인 방식, 평점 방식 등의 피드백이 서로 다른 의견이 나와서, 사용자마다 다르게 느껴지는 기능들을 선택하고 개선하는 것이 어려웠습니다.
'내일배움캠프' 카테고리의 다른 글
WIL 내일배움캠프 17주차 (0) 2023.07.07 TIL 2023.07.07 (0) 2023.07.07 TIL 2023.07.06 (1) 2023.07.06 TIL 2023.07.05 (0) 2023.07.05 WIL 내일배움캠프 16주차 (0) 2023.06.30