WIL, 0607-0612, 2021

syk·2021년 6월 13일

WIL

목록 보기
1/6

이번 주 한 것

항해99 chapter 1 마무리 - 드디어 항해 시작

첫 주부터 미니프로젝트 하나 끝냈다. 사전에 풀렸던 강의와, 좀 더 나아가 CRUD 구현/JWT 이용한 로그인기능 구현/서버사이드 렌더링으로 웹사이트 구축하는 강의 내용을 활용하여 간단한 웹페이지 만드는 과제였고, 좋은 팀원분들 만나 재미있게 작업하였다. 얼렁뚱땅 만들었지만 완전히 마무리를 해 보았다는 게 매우 뿌듯.

미니프로젝트: 맡았던 작업 기록

회원가입/로그인 이후에 이용할 수 있는, 펜션 정보를 목록으로 만들어 보고 즐겨찾기에 담아 볼 수 있는 간단한 사이트. python flask, jquery 이용하였다.

  • Selenium - 데이터 스크래핑
    • beautiful soup으로 못가져오는, 비동기로 바뀌는 페이지의 데이터까지 필요했기 때문에 selenium 사용
    • 무한스크롤로 데이터가 추가가 되는 부분 스크래핑이 필요했는데,
      • 강의내용 기반으로 다른 사이트에 적용했을 땐 문제 없이 가져올 수 있었으나
      • 정작 내가 필요한 사이트에서는 가져 올 수 없어서 거의 한나절 소요.
      • 지역별 페이지 별로 가져오는 걸로 타협을 보았다.(쓸 수 있는 데이터는 이쪽이 많기도 했고)
      • 아마도 DOM 트리 추출하며 문제가 있었지 않았나 추측 중.
    • 야놀자 사이트의 robots.txt 확인했다.
      • 펜션 지역과 이름, 이미지 주소, 평점, 가격정보 데이터만 추출했다.
  • flask / jinja2 template - 목록 페이지 렌더
    • for문 블록 이용해서, 리스트 만들어주었다. 써도 써도 신기함.
    • escaping을 어떻게 사용해야 할지는 아직 모르겠다. 강의에 아마 내용이 나오지 않을까? / 참조: jinja2 Doc
  • flask / jinja2 template - 상세 페이지 렌더
    • 동적라우팅: 각 펜션 상세정보 페이지마다 페이지를 만들 수 없으므로, db에 저장된 id값을 변수로 만들어 라우팅 주소로 만들었다. 해당 id 값의 데이터 키/값 역시 변수로 가져와 해당 페이지에 들어가도록 했다.
  • jquery - 즐겨찾기 추가 및 삭제 기능 구현
    • 상세페이지 내 즐겨찾기 버튼을 누르면 ajax로 해당 페이지의 펜션 id값을 서버로 보내게끔 하였다.
    • 버튼은 토글 버튼으로. 클래스를 지정하여 on/off 클래스를 다르게 줌.
      • off 상태일 경우 클릭했을 때 즐겨찾기 추가가 되도록, 버튼은 on상태로 바뀌도록 하였다.
      • on 상태일 경우 클릭했을 때 즐겨찾기 삭제가 되도록, 버튼은 off상태로 바뀌도록 하였다.
    • 추가 기능
      • 로그인된 사용자의 암호화된 토큰을 받아 디코딩 하여 해당 사용자의 고유 id를 얻고, 펜션 고유 id와 함께 데이터베이스에 저장했다.
      • mongodb update시 upsert 속성 true로 주면, 기존 해당 데이터가 있을 경우 데이터 내 update, 없을 경우 insert.
      • 기존 해당 데이터 중 이미 저장해 둔 id가 있을 경우는 중복저장 되지 않도록 저장을 시키지 않았다.
    • 삭제 기능
      • 위와 동일하게 로그인된 사용자 확인 후 해당 데이터리스트에서 삭제. mongodb update ; pull
  • flask / jinja2 template - 즐겨찾기 페이지 렌더
    • 즐겨찾기 db의 데이터를 가져와 페이지를 만들었다.
      • 현재 접속한 사용자의 토큰이 이번에도 또 필요했다. 해당 사용자의 즐겨찾기 데이터를 가져왔고
      • 펜션 db 내에 일치하는 데이터 리스트를 변수에 담아 템플릿과 함께 렌더하였다.
      • 목록 페이지와 구조 동일.
  • 각 페이지 부트스트랩 css / js 적용

이전 작업땐 session 방식으로 로그인을 구현했는데, token을 쓰는 방식은 처음이었다. 내가 맡은 부분이 아니다보니 강의도 참고하고, 프로젝트 코드도 참고하는 게 좋겠다.

chapter 2 알고리즘 공부 시작

엊그제부터 알고리즘 주간이 시작되었다. 이틀 안에 정렬, 자료구조와 DFS/BFS 개념까지 꾸역꾸역 강의 들으며 집어넣고 있는데, 기본기가 부실한 것이 적나라하게 드러나고 있다. 일단 내가 느낀 문제점은 다음과 같다:

  • 내가 생각하는 결과를 도출하기 위해, 코드를 짜고 테스트하는데 시간이 너--무 걸린다. 구문을 알고 쓴다고는 하지만, 제대로 아는 게 아니라고 말할 수도 있겠다.
  • 문제를 풀기 위해 어떻게 접근해야 할지 감조차 못 잡고 있다. 강의를 듣고 알고리즘에 대한 기초지식을 쌓아서 -> 활용으로 넘어가야 하는데 이게 안 되는 건 앞서 말한 문제와도 맞닿아있음.

강의 듣는 건 일정대로 마무리하고 부족한 건 계속 복습하고 자료를 찾아봐야 할 것이다. 들으면서 훑고 지나갔던 문제들과 풀이방식을 다시 봐야겠다. 일단 어떤 방식으로 문제를 읽고 접근해야 하는지, 이런 경우에는 이런 방법을 쓴다든지에 대한 이해가 좀 되고 나서야 가닥이 잡힐 것 같다.

긴 고민 끝에 개발 공부를 제대로 해 보자 결심하고, 깃허브 가입 후 첫 리포지토리를 만든 날짜가 지난 3월 9일이다. 지금 힘에 부치는 건 어찌 보면 당연한 일. for문 처음 공부하며 멘붕했던 날을 기억하자.😂 지금 이해가 안되는 것들은 미래의 내가 이해하게 되는 것 같다, 꾸준히 공부 하기만 한다면.

생각해 보기 / 하기

  • 원노트에 공부한 건 정리해서 남기고 있는데, 여기로도 옮겨둬야 할까 고민 중. 튜터 멘토링 중에 github의 저장소를 이용하여 TIL 남기는 걸 봤는데, 이것도 굉장히 좋은 방법 같다.
  • 운동하기. 1주일만에 체력이 급격히 떨어지는 걸 느낀다. 쉴 때 쉬고, 운동하기. 꼭!
  • 낮은 난이도의 문제들부터, 어떤 알고리즘을 그리고 짜야할지 충분히 고민해보기로 하자. 이렇게 하면 되지 않을까? 하는 마음으로 코드부터 적지 말자. 당연히 안 된다.
  • 그와 동시에 너무 오랜 시간을 고민하며 붙잡고있지는 (아직은)말도록 하자. 내가 봤을때 아직 고민해서 답이 나오는 단계가 아니고 말 그대로 노답임. 도움을 구하자.
profile
열심히 항해 중

0개의 댓글