[WIL] 220110 ~ 220115 _항해 1주차

박민우·2022년 1월 18일
0

항해

목록 보기
2/33


새로운 시작이, 시작되었다.
하루하루가 어떻게 흐르는지 모를 정도로 매우 바쁜 시간들을 보냈다.
배우기에 힘썼고, 최선을 다하려고 노력했다.
항해는 다른 사람들과의 치열한 경쟁이 아니다.
끊임없이 협업을 배우고, 다른 사람들에게 배우고, 그렇게 앞으로 나아가는 것이다.

표류가 아닌 항해가 되기 위해.
방향을 분명히 정해두고 나아가야 한다.
목적지, 곧 방향은 어떤 직장을 향하는 것이 아니라
이 일로 부르신 이의 뜻을 깨닫고 그 안에서 그의 뜻대로 나아갈 수 있도록
충분히 쓰임 받을만하고 다른 사람들에게 유익이 될 수 있도록 나아가는 것이다.

단순히 다른 사람들보다 잘하고자 노력하지 말자.
그러한 시선 싸움에서 승리하고 매일매일 거친 파도를 잘 헤쳐나가도록 하자.


1. 미니프로젝트(1/10 ~ 1/13)

프로젝트 정보

제목 : Findog (Find dog)
팀 : 6조
역할 : 팀원
결과 홈페이지 : http://15.165.205.8/
기획 문서(진행사항 및 결과에 대한 회고 포함)
: https://www.notion.so/Findog-53851f362d364590a65f249108d56661


프로젝트를 통한 배움과 고민

협업

  1. 함께 일하기
    혼자 했던 토이 프로젝트도, 사전 준비 기간에 했던 토이 프로젝트도 개별적으로 페이지 작업을 하며 책임 할당을 하였다. 그리고 나 역시도 이전에 일할 때에 항상 사용하던 방식이었다. 그런데 이번 프로젝트를 하며, 처음부터 끝까지 모든 것을 함께 하였다. 처음에는 효율이 안 난다는 생각도 했었지만 머리를 맞대었을 뿐이고 일을 나누지 않았는데 시간은 딱 맞아 떨어진 것 같다. (물론 늦게까지 잠을 포기해가며 머리를 맞대긴 하였지만)
    항상 일을 나눠야만 시간 맞춰 일할 수 있고, 그것이 효율적이라고 생각하던 나의 생각을 과감히 깨뜨릴 수 있는 시간이 아니었나 싶다. 실전 프로젝트로 가면 분명히 나누어 일을 해야 할 부분들이 있겠지만, 이번에 모든 문제 앞에서 다 함께 코드를 하나 하나 살피고 의견을 나누며 진행했던 것은 분명히 앞으로의 협업에 큰 도움이 될 것이라고 생각한다 !

  2. Git 다루기
    역시나 어려웠다. 함께한 팀원들이 전공자, 복수전공, 현역에서 일하던 사람도 있었지만 우리에게 Git은 만만한 존재가 아니었다. Git에 올리다가 날릴 뻔 하기도 하고. 환경설정 등으로 인하여 결국 나는 하드코딩으로 진행했지만 터미널을 이용하고 Git의 명령어를 이용해서 작업하는 등 여러 가지를 경험해볼 수 있었다. 그리고 기술 매니저님께 Git에 대한 질문도 충분히 하면서 실전 프로젝트 때는 처음부터 환경을 잘 맞추고, Git을 잘 이용하는 것이 효과적이겠다는 생각을 했다.

  3. 무엇보다 찾고, 듣기
    에러 메세지 조차 안 뜨는 문제에 봉착했을 때, 우리는 수많은 논의를 했다. 구글링이 안 되는 문제 앞에서 괄호를 하나씩 바꿔보기도 했다. 그런데 묵묵히 찾고 우리를 구해준 팀원이 있었다.
    물론 내가 생각하는 방식을 시도도 해보고, 다른 사람들의 이야기도 많이 듣지만. 무엇보다 더 깊이 찾고, 또 다른 사람들의 이야기를 열심히 듣는 것이 협업이라는 것을 다시 한 번 배우게 된다.
    (6조 모두들 감사합니다 !)

jinja

  • 앞으로 주특기 때 spring으로 넘어가면 언제 다시 만날 지 모르지만, jinja는 정말 편리했다.
    무엇보다 개인적으로 사전에 토이 프로젝트할 때 서버까지 닿는 시간이 오래 걸리는 것을 많이 느꼈었다. 배운대로 충실히 했었기에, NoSQL인 mongoDB로 게시판을 만들 때 ajax 만으로 함수 안에, 함수를 만들며 html 한 페이지를 계속 불러왔어야 했기 때문이다. (심지어 다른 DB까지 거쳐, 댓글을 불러오는데 시간이 초과되어 한 번에 잘 안 불러지는 상태로 짧은 시간의 토이 프로젝트를 마무리 지었었다)
    그런 수고를 모두 덜어준 것이 바로 jinja였다. SSR의 특징으로 나 혼자 겪었던 로딩 시간의 문제들을 해결할 수 있었고, (비록 문법이 익숙하지 않아서 html 화면에서 출력하려고 할 때 우리의 어설픈 실수들이 있었지만) 결국에는 기능들을 구현할 수 있었기에 무척 기뻤고 만족한다.

JWT

  • JWT 기반 인증 방식은 이러하다.
    1. 유저가 로그인 한다.
    2. 서버측에서 인증을 검증한다.
    3. 성공한다면, 유저에게 'signed 토큰'을 발급한다.
    4. 클라이언트는 해당 토큰을 저장해 두고, 서버에 요청할 때마다 토큰을 함께 전달한다.
    5. 서버는 request와 함께 온 토큰을 검증하고, 검증 결과 여부에 따라 요청에 응답한다.
  • JWT에는 이러한 장점들이 있다.
    1. 서버에서 관리하던 쿠키 세션의 경우
      예를 들어 세션을 관리하기 위해 서버의 메모리를 사용할 경우, 서버의 성능에 영향을 준다
      세션에는 추가적인 정보들을 저장하는 것 또한 가능하다. 관리해야 할 사용자가 늘어날 수록, 메모리 사용량이 기하급수적으로 늘어날 수 있다.
    2. 확장성
      세션을 사용하는 경우, 서버에서 state를 관리하다보니, 확장을 하는데 있어 많은 것을 고려해야 한다.
      반면 JWT의 경우, 클라이언트 사이드에 저장하고 있기에 서버 확장에 있어 용이하다.

API

  • 개인적으로 개발을 시작하면서 혼자서 작은 게시판을 만들었을 때 가장 재미있었던 것이 바로 이 api였다. 그래서 더 백엔드를 하고 싶다는 생각을 하게 된 것 같다. 처음 만들었던 게시판에서도 러프하게 완성한 후에, 다시 페이지의 호출에 대해 고민하고, 다음 반응에 대해서 고민하면서 api를 반복해서 수정했었다.
    이번 프로젝트 역시도 페이지를 만들면서 하나의 기능을 생각할 때마다 api 호출이 있어야만 했다. 단순히 페이지를 여러 개 만들어서 이동시키는 것은 소모적이라 생각해 효율적인 방법들을 생각하면서 페이지를 출력할 수 있도록 노력하였다. 그 중에서 가장 뿌듯했던 두가지 순간이 있었던 것 같다.
  1. ID 값을 이용한 페이지 출력
    전체 강아지에 대한 카드가 메인페이지에 출력되는데 이를 클릭했을 때 해당 강아지에 대한 정보를 출력하는 페이지로 이동해야 했다. 그래서 ID 값을 주고 이동하는 방식으로 구현하기로 했다. 처음에는 단순하게 파라미터로 넘겨주어 이동하는 것만 생각했는데, 이후 이동한 페이지에서도 여러 가지 기능들을 사용하기 위해서는 함수에 함수로 넘어가는 복잡한 함수가 되고 페이지를 출력하는데에도 버벅이는 현상이 일어날 수 있었다. 그래서 redirect로 ID 값을 페이지에서 받아서 넘어갈 수 있도록 하였다. 우리가 매번 방문하는 사이트들이 ?= 뒤에 넘버를 붙이는 형식과 유사하게 말이다. 이후 페이지에서 필요한 Data를 사용할 때 이 ID 값은 매우 유용하였다.
  2. Map API
    네이버 지도를 이용하여 사용자가 위치를 마커로 찍어 저장하고, 해당 좌표를 DB에 가지고 있다가 메인 페이지에서 잃어버린 강아지들의 위치를 전체 출력할 수 있도록 구상하였다. 네이버 Map API를 사용하였는데, 이미 네이버에서 만들어놓은 API를 이용한 것이라 분해하고 사용하는데 시간이 걸렸다. 좌표 값이 console 에는 나오는데 이를 어떻게 DB에 저장하지? 고민을 하며, 결국에는 화면에 띄우고 그 부분을 display none 값으로 숨기며 DB에 잘 저장하고 불러올 수 있었다. 간단하게 표현하였지만 x, y 값을 넣는 것은 쉽지 않았다. 쉽지 않은 이 모든 기능들을 잘 구현할 수 있어서 정말 만족 스럽고 기쁘다.

2. Algorithm (1/14 ~ 1/15)

Python

알고리즘 주차가 바로 시작 되었다. 파이썬에 대해 좀 더 공부해 놓을 걸 하는 아쉬움이 있었다.
하지만 어쩌겠는가, 지금부터 따라가야지.
무척 두껍고 (설명이 불친절한) '파이썬 알고리즘 인터뷰' 책과 함께 공부를 이어나가야 한다.

팀원과 함께

알고리즘 공부 주차에도 팀은 존재한다. 팀원들과 협력해서 공부를 해나가야 한다.
혼자서 조금은 손을 댔던 공부라 재미있을 것이라 생각했지만,
사실 첫 날부터 어려움에 좌절을 맛보기도 했다.
더 기본부터, 더 충실하게. 공부를 이어나가야 하지 않을까 생각한다.
우리 팀은 항해에서 제공하는 강의 뿐 아니라 따로 스터디 형식으로 진행하기로 했다.
많은 것들을 우리 안에서 채워나갈 수 있는 시간이 되길 바라본다.


다음주

  • 알고리즘에 알고리즘.
  • 어떻게든 알고리즘에 익숙해지기.
  • 파이썬과 친해지고, 문제 형식들과 친해지기.
  • 무엇보다 잠을 잘 자고, 장기전에 돌입하기 !!!!!!!!!!!!!!!!

한 주가 지났다. 그리고 계속 항해는 이어진다.
알고리즘 주차에는 특별히 배운 것들을 정리하는 TIL을 조금이나마 적으려고 노력해봐야겠다.
나만의 방식으로 이해하는 것을 익혀야 한다!
화이팅 !!!!!!!

profile
KingdomOfGod newPerson = new KingdomOfGod();

0개의 댓글