23.09.25 - 23.10.01
1. 개발 진행 및 완료 상황
- 팀 소개 및 개인소개 페이지를 만드는 Team Project를 시작(각 개인 블로그의 내용을 크롤링해서 웹 페이지에 띄우는 역할을 맡았다)
2. 업무, 개발 중 발생한 이슈/ 고민 또는 이를 해결한 내용
- (아래의 회고 참고- 너무 많음)
3. 오늘 새로 배운내용
- (아래의 회고 참고- 너무 많음)
4. 참고할 만한 레퍼런스들
- 파이썬으로 firebase에 넣기 https://blog.naver.com/PostView.naver?blogId=dsz08082&logNo=221992549793
- 파이썬으로 크롤링하기 https://www.youtube.com/watch?v=U1amkBqKF5g&list=PLNO7MWpu0eeUFdGMirV8_EkiLETqj8xA4&index=3
- 파이썬으로 동적 변수 생성하기(배열을 나누면서 변수를 여러개 생성할 수 있음)- 쓰진 않았지만 해보니까 나중에 언젠가는 쓸 것 같은? https://p00hp00h.tistory.com/28
- 파이썬의 내장함수 enumerate https://www.daleseo.com/python-enumerate/
- node.js로 크롤링하기 https://www.youtube.com/watch?v=xbehh8lWy_A&t=319s
- 이외에도 몇배는 더 많았지만 간략하게 추려봤다.
5. 특이사항(아이디어 메모)
6. 회고
너무 많은 신선한 충격을 받았고, 현재 머릿속에 정리도 안되고 그냥 두서 없이 적으려 한다.
- 저번 주는 알고리즘에서 충격을 받았다면 이번 주에는 저번주의 공부가 가소로워질 정도의 충격을 받았다. 팀소개 및 개인 소개 웹 페이지를 만드는 프로젝트를 진행하게 되었는데 크롤링 부분의 역할을 맡게 되었다. 현재의 내 상태를 표현하자면 이제 막 자바스크립트 문법 걸음마를 떼고 있는 정도였달까? 모던 자바스크립트에 들어오게 되면서 이제서야 조금씩 원시적인 코드 작성을 벗어나 현대적인 코드를 맛보고 있었다. 하지만 현재 주어진 일은 웹 페이지를 만드는 것. 웹 페이지의 구성에 대해서 이제야 조금씩 알게되었다고 생각했는데 웹 페이지 전체가 어떤식으로 구성되어있고 어떻게 만드는 건지는 전혀 모른채로 시작하게 되었다.(데이터는 어디에 저장되며 db는 뭐고 크롤링은 뭐고 그냥 전부 다 몰랐다. 하나부터 열까지)
우선 내가 맡은 역할은 크롤링이었기에 내가 맡은 부분에 최선을 다하기로 했다. 하지만 시작부터 난관이었다. 인터넷에 흩어져 있는 데이터를 어떻게 긁어오며 설령 긁어온다 하더라도 어디에 저장하며, 저장을 한다 치더라도 어떻게 다시 내가 작업하는 곳에 가져오는지 전혀 모르는 상태였다. firebase를 사용하라고 했지만 firebase는 스파르타 웹개발 강의 때 얼핏 들은 거 말고는 어떤 친구인지 전혀 알지 못했다. 또한 모듈이 뭔지도 전혀 몰랐다. 일단 유튜브와 구글에 데이터 크롤링에 대해 찾아보았다. 정말정말 많은 방법이 있었다. 지금 해결하고 나서 생각해봐도 너무 많고 너무 달랐다. 다른 방식으로 해보라고 하면 못할듯.. 다양한 방식으로 코드를 짜다보니 기본지식이 전무한 나로서는 응용도 불가능해서 파라미터 값 하나하나 바꿔보고 하나씩 지워보고 새로운 값 적용해보고 모든 걸 다 하나하나 하며 간략하게 나마 이해할 수 밖에 없었다.
어느정도 생략해서 적어보자면 node.js로 만들기, python으로 만들기(firebase-admin, pyrebase, flask, …다양한 모듈들)등이 있었는데 진짜 빠짐없이 다해본거 같다. 다시말하지만 node도 배워본적 없을 뿐더러 python또한 본적도 없는 친구이기에 그저 따라쳐보고 파라미터값, 변수값을 모든 경우의 수로 할당해볼 뿐이었다. 물론 그랬기 때문에 결과는 처참했다. 나름 생각해보고 넣어보았지만 python같은 경우엔 제일 아래단계의 기본 문법조차 몰랐고 파라미터값이 어떻게 들어가는지도 몰랐으며 변수를 할당할때는 어떤 형태로 넣어야하는지도 몰라 하나하나 다 찾아보면서 해야했다.(간단한 것을 예로들면 내이름:${name}같은 변수를 f”내이름: {name}”같은거? →쉬운예시로 들었지만 전부 찾아가며 하려니 어려웠다) node쪽도 마찬가지로 실습 내내 내장객체 메서드를만 쓰고 내가 배웠던 코딩은 5프로도 안썼던것 같다. async와 await도 나왔는데 거의 모르다 싶이 썼다. 내용이 진짜 진짜 많지만 너무 길어질 것 같아 이정도만 쓴다. 결국 firebase-admin으로 해냈다. 물론 여기서도 내가 직접 글자를 넣어서 firebase에 넣는 건 가능했지만 파이썬을 for문으로 돌리며 그에 따라 i라던가 변수들을 할당해야하는데 for문을 어떻게 쓰는지도 모를 뿐더러 변수를 어떻게 참조하는지, 할당하는지 (또 찾아보고 나서는 for문이 어디서 끝나는지, 전역변수인지 지역변수인지)도 몰라 엄청 애를 먹었다.
그래도 결국 성공! 3일정도 걸렸는데 진짜 속이 너무 답답해서 미치는 것 같았다. 그래도 성공하니까 이 기쁨은 주체하지 못하겠더라. 그래도 이 덕분에 다른 프로젝트를 진행함에 있어 firebase에 데이터를 저장하는 일이라던가 크롤링을 하는 부분은 무조건 할 수 있을 것 같다. 그리고 데이터가 어떻게 이동하는지 어떻게 전달되는지 어떤식으로 저장되는지 간략하게나마 알 수 있었다. 그리고 모듈이 어떤 친구인지도 정확하게는 모르지만 기능을 구현하는 함수들의 집합 정도로 알게되었고 파이썬 관련 문법도 기억에 많이 남을 것 같다. (변수 참조, for문, 데이터 저장하는 메서드)
7. To Do List
- 데이터 저장하기를 끝냈으니까 다음주는 파이썬으로 firebase에 저장한 데이터를 javascript로 가져와 팀 프로젝트의 웹 페이지에 넣는 것을 해봐야한다.