WIL - 20220925

맛김·2022년 9월 25일
1

WIL

목록 보기
1/1
post-thumbnail

🚢항해99에 승선

👉부트캠프의 첫 시작,,,

2개월간의 무료한 백수 끝에(물론 마냥 놀진 않음^^) 드디어 부트캠프가 시작됬다 ! 맨날 혼자 공부하면서 이게 맞나 고민할 바에 빨리 부캠 시작해서 이것저것 많이 배우고싶다고 생각했었기 때문에 설레는 마음으로 9월 19일 월요일 아침에 지각했다

👉1주차 - 우당탕탕 미니 프로젝트(a.k.a.HELL)

부트캠프가 시작 전에 사전 강의로 풀스택강의를 미리 제공했어서 시간이 남아 돌았던 나는 4회 완강과 함께 부수적인 다른 강의들까지 같이 들으면서 공부했었다.(✌️)
이 정도면 충분히 예습은 했으니까 "부캠 시작하면 내 여력을 보여주겠다!" 라는 포부를 갖고 첫 주차를 맡이했는데 파이썬 문법이나 조금 알던 상태로 다짜고짜 대망의 첫 프로젝트가 시작됬다.

이 때까지는 몰랐다. 내가 그렇게 잠이 없는사람이라는 것을...

💻첫 미니 프로젝트

🌮요리조리 프로젝트

처음 시작하는 날 팀 배정이 되어서 나 포함 4명이서 함께 기획부터 서버에 배포까지 해서 제출해야하는 첫 팀 프로젝트를 하게 됬다.

근데 부트캠프 시작하면서 새로 제공한 강의에서 배우는 JWT를 활용한 로그인 및 회원가입 기능Jinja2 템플릿을 이용한 서버 사이드렌더링, 그리고 AWS EC2에 업로드하고 도메인을 붙여 제출하는 것이 필수로 들어가야 했다.

근데 이게 그냥 들으면 그래그래 하겠는데
상황이 어땠냐면 진짜 핑계가 아니라

  • 월요일에 첫 시작 및 반배정과 OT
  • 그 다음 바로 당일 미니 프로젝트 기획 및 S.A 제출
  • 당일 저녁 기술 매니저님의 기획서 피드백
  • 월요일 저녁부터 시작해서 목요일 저녁까지 저 위 모든 내용을 포함한 프로젝트 제출

정리하면 4일동안 처음 본 분들과 프로젝트 기획, 4주치 강의, 프로젝트 구현, Git 공부 인데 이게 말이 쉬운 것 같았는데 제로베이스인 입장으로써는 자다가 물벼락 맞는 기분이였다.

저 때 퇴근 전에 찍은거고 마지막 찍힌 시간 21시간,,,물론 하루^^

처음 써보는 기술 공부하랴, 기능 구현하랴, 개인 공부하랴
백수여서 시간 남아 도는 줄 알았는데 진짜 눈 붙일 시간이 없더라,, 근데 저 말고도 팀원들도 그렇고 다른 팀들도 다 똑같았습니다,,

어쨌든 여차저차 기한 내에 제출까지는 완료했지만 처음 구상했던 것들 중에서 구현해내지 못한 기술들도 있었고 프로젝트 진행 기간동안 진짜 온갖 에러들을 마주했었기 때문에 몸도 마음도 너덜너덜,,,🥺

그나마 진짜 팀원들이 너무 좋았어서 버틴거지 아니였음 탈주했을수도 있었다 진짜루진짜루진짜루

그래도 결과물을 보니까 뭔가 다 같이 오물조물 해서 뭐 하나 이렇게 만들어봤구나 라는 그 뿌듯함과 성취감은 이루 말할 수 없

🎯Trouble shooting

✓mongoDB AWS 서버에 설치x

분명히 설치가 됬던걸로 기억하고 서버에 run.py올려서 다같이 기분좋게 한번 열어봅시다! 하고 들어갔는데 웬걸,
DB가 불려오질 않았다. 분명 로컬에서는 잘 됬었는데 서버에 올라가서 보는 순간 로그인도 안되고 회원가입 기능도 되질않았다.

AWS EC2서버에 pymongo 설치하는 방법 해서 온갖 구글링을 돌려서 하라는 방법은 다 해본 것 같은데 설치가 안되었다.

그러다가 mongoDB 사이트 안에 커뮤니티에서 한 글을 보는데 나와 같은 상황에 있는 외국인의 질문글에 mongoDB 측 같이 보이는 분의 답글에서 해답을 얻었다.

답글 내용은 현재 ubuntu22.04버전이 나온지 얼마 되지 않아서 기존의 pymongo가 대응을 못하는 것 같으니 전 버전을 사용해봐라 는 내용이였다.

바로 AWS로 뛰어가서 인스턴스 새로 만들 때 ubuntu20.04로 설정해서 만들고 설치과정을 다시 시도했더니 언제 그랬냐는듯 너무 잘되더라. 사실 어떻게 보면 별거 아닌 문제이기도 한데 강의로 본 개발세상이 전부인 개린이에겐 정말 살벌했던 기억이였다. 뭐든 다시 깔라고 하던가 처음부터 해야된다고 하면 우리 피땀눈물 못잃어,,,

✓flask Blueprint

첫 날에 기술매니저님께 기획서 피드백을 받던 중에 하신 말이 있었다.

"보니까 기능이 적지는 않은데 blueprint라는 걸 이용하면 이런 거 나눠서 잘 관리할 수 있는데... 나중에 시간되시면 구글에 검색해보세요~"

저 때는 저 말이 그냥 이런게 있으니 한번 알아봐라 정도였는데 왜였는지 나에겐 저걸 꼭 써봐라 라고 들렸던 것 같다.

강의에서도 전부 app.py에 라우팅함수들을 때려넣었기 때문에 이 강의를 모티브로 프로젝트를 하는 수강생들 사이에서 보면 저 기능을 쓴다면 뭔가 엄청난 유니크한 프로젝트가 될 수도 있겠다라며 잠시나마 설렜던 것 같다.^^

바로 구글링해서 알아보니

플라스크의 블루프린트를 이용하면 라우팅 함수를 체계적으로 관리할 수 있다. 블루프린트(blueprint)는 보통 객체지향 프로그래밍에서 "청사진"을 뜻하는 용어인데 플라스크에서는 URL과 함수의 매핑을 관리하기 위해 사용하는 도구(클래스)이다.
점프 투 플라스크

내가 이해한 건 app.py에 들어가는 다양한 라우팅 함수들을 기능별로 묶어서 각 기능별.py로 따로 관리할 수 있다는 것이다.

보통 app.py에 각 기능에 필요한 라이브러리부터 시작해서 엄청 import를 하는데 그게 각 파일마다 있는게 아니라 __init__.py에서 전체 라이브러리를 관리하고 blueprint로 각 기능별.py들을 메인에서 import해서 서로를 연결해주는 것이다.

그럼 협업 때도 다같이 app.py하나에 우르르 모여서 작업하고 컨플릭날일도 적을 것이고 프로젝트 파일도 뭔가 명확하게 나뉘어지기 때문에 유지보수에도 훨씬 수월하겠다 라는 매력에 냉큼 시작했다.

하지만 기존의 폴더 구조가 아니고 프로젝트 명의 폴더를 만들어서 그 안에 __init__.pystatic폴더, templates폴더, 그리고 나머지 기능으로 나뉘어진 feature.py들이 들어가고 그 폴더 밖에 얘네들을 묶어서 실행할 run.py가 있다.

프로젝트 명의 폴더가 객체가 되어서 그 안에 있는 각 파일들을 __init__.py에서 blueprint로 연결해 준다.
그리고 프로젝트 내에서 필요한 라이브러리를 여기서 전부 import한다.

또 각 feature.py에서 사용할 url들을 url_prefix를 이용해서 지정해 줄 수 있다.

아무튼 정말 멋진 기능인데 지금이야 이 때 직접 해보고 시행착오를 겪으며 해봤으니 이렇게라도 말하지 처음에는 정말 뭐가 뭔지 몰랐다.
사실 지금도 내가 무슨말을 하고있는 건지 모르겠

무튼 내가 사용해보지 않은 기술을 공부하며 프로젝트에 대입해보는 경험은 정말 너무 힘들어서 던질 뻔 했지만 정말정말 즐거웠다

폴더 구조는 깃 주소로 👇

🌮요리조리 프로젝트

Input 창에서 <script>문 실행시 실행 되는 문제

이건 누군가가 임의로 <script>문을 이용해 브라우저 내에 있는 cookie에 접근해서 개인 사용자의 token값을 가지고 악용할 수 있는 상황이 생길 수 있으니 서버로 데이터를 전달하는 저런 input창 같은 곳에는 특정 내용을 필터링 해주는 코드를 작성해놔야 한다는 내용을 들었었다.

아, 들었는데 아직 못알아봤다. 당장 이번 주차도 죽고있다...

✓Kakao map API가 서버에 업로드 후 실행x

로컬에서 분명히 다 잘 되는것을 확인하고 AWS에 올리고 확인해보니 지도는 잘 로딩이 되지만 현재 내 좌표를 가지고 지도에 띄우지를 못했다.

아, 이것도 아직 못알아봤다. 당장 이번 주차 읍읍

profile
재밌어서 공부하는 개발자

0개의 댓글