Retrospective

[WIL] 6주 차 회고

msmn 2021. 4. 11. 21:09
728x90

프로그래머스: programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

클론 코딩한 사이트(AWS 비용 문제로 서버가 닫힐 수 있습니다): http://programmers99.shop/

 

클론코딩 | 프로그래머스

 

programmers99.shop

시연 동영상: https://youtu.be/Ejoa31jhNrc

 

배운 점

  • 프로그래머스 사이트 클론 코딩을 하며 front-end와 back-end의 협업 경험을 쌓았다.
  • DB에 저장하기 위해 스크래핑을 할 때, 자바의 JSOUP 라이브러리로 진행하다 상세 문제 api접근이 막혀있어서 selenium을 활용했다.
  • 스크래핑을 하면서 html을 보기 위해 개발자 도구를 자주 활용하게 되었고 셀레니움을 잘 활용할 수 있도록 학습했다.
  • DB에 저장한 데이터를 api로 프론트에 넘겨주기 위해 스프링부트로 개발했다.
  • 상세 문제 필터링하는 부분의 알고리즘을 구현하며 해시맵과 유사한 방법으로 필터링 기능을 구현하게 되었다.
  • 문제 필터링과 페이징 기능을 합치는 과정에서 어려움이 있었는데, 전체 문제들 중 필터링한 문제들만 하나의 임시 DB 테이블에 저장한 후 그 테이블에서 페이징을 하는 방식으로 해결했다.
  • 쿼리문을 사용하지 않고 스프링 내에서 DB 쿼리 처리를 해주는 Spring data JPA의 편의성을 깨닫게 되었다.
  • DB 테이블 join과 many to one (다대일) 방식에 대해 알게 되었다.

느낀 점

  • 매일 새벽까지 팀원과 서로의 의견을 자유롭게 이야기하며 스크린 쉐어로 같이 코딩을 했었고, 그로인해 이전과는 또 다른 느낌의 가파른 성장을 하게 된 한주였다.
  • 그동안 학습한 것을 웹 개발에 적용해보니 실제 웹사이트에서 API가 어떻게 필요하고 어떤 방식으로 구현하는 것이 효율적인지 알게 된 좋은 경험이었다.
  • 초반 2일 정도 동안 스크래핑을 하느라 고생을 했었는데 JSOUP으로 해결되지 않던 문제를 셀레니움 방식으로 해결하여, 결국 페이지 별 모든 문제와 난이도 별 모든 문제를 자동화 크롤링이 되도록 구현해서 뿌듯했었다.
  • 문제 다중 필터링 기능이 생각보다 굉장히 어려워서 애를 먹었는데 알고리즘 시간 복잡도까지 고려하여 지금 수준에서 최선의 방식으로 구현하게 되어서 신기했다.
  • 물론 개발에 답이 정해져 있진 않지만 쿼리문, JPA를 잘 활용하지 못해서 아쉬움이 있고 정석적인 방법이 어떤 것일지에 대한 고민은 아직 남아있다.
  • DB와 쿼리에 대한 공부 필요성을 절감한 한 주였고, 앞으로도 꼼꼼히 그리고 꾸준하게 실력을 쌓아야겠다고 생각한다.
728x90

'Retrospective' 카테고리의 다른 글

[WIL] 7주 차 회고  (0) 2021.04.18
[WIL] 5주 차 회고  (0) 2021.04.04
[WIL] 4주 차 회고  (0) 2021.03.28
[WIL] 3주 차 회고  (0) 2021.03.21
[WIL] 2주 차 회고  (0) 2021.03.14