Today
-
Yesterday
-
Total
-
  • 우아한테크캠프 1주차 회고
    Activity/우아한테크캠프 4기 2021. 8. 8. 15:18

    세번째 프로젝트가 다 끝난 후에서야 1주차 회고를 하게 되었다.
    조금 늦은 감이 있지만 '당시의 생각과 느낌을 정리하는 것일 뿐인데 뭐 어때..!' 하는 자기 합리화를 하며 노트북을 열었다.

    만나서 다들 반가워요! 하지만 앞으로 만나기는 힘들것 같아요...

    앗.... 드디어 감격스러운 첫 날...! 설레는 마음으로 삼성생명빌딩에 위치한 작은집에 방문헸다. 작년에는 교육생이 30명이라고 했는데 올 해는 그 것보다 더 많아 보였다. 줄을 서서 교육 기간동안 사용할 맥북Pro와 다양한 선물들을 받고 자리에 착석했다. 굉장히 쭈뼛 거리면서도 설레는 시간이었다. 아마 다른 교육생들도 나와 같지 않았을까?

    약속의 오후 1시가 되자, 
    매니저님이 첫 마디를 열었다. 첫 OT 전날 코로나 확진자가 증가하는 바람에 추 후 모든 활동은 오프라인으로 진행하게 될 것이라고 하셨다. (방이동에 방을 구했는데... 정말 아쉽게 되었다) 우테캠 기간동안 가장 기대한 부분 중 하나인 네트워킹이 상황 상 많이 어렵게 된 것이다. 하지만 Gather라는 아주 귀여운 비대면 화상 미팅 앱을 활용해 수업을 진행하게 되면서 그런 걱정은 많이 덜게 되었다!

    오히려 게더에서 새벽까지 만나서 떠들면서 친해지고 서로 모르는게 있으면 마음껏 질문 할 수 있었다.C

    CTO님의 연설

    영상 매체로만 뵙던 송재하 CTO님이 무대앞에 서셨다. 저번 기수에서 아주 훌륭한 인재분들을 많이 만날 수 있었고, 이번 기수에 거시는 기대도 크다고 하셨다. 이 우테캠은 우리에게 아마 엄청난 열과 압력을 가하게 될 것이고, 석탄인 우리를 다이아몬드로 바꿀 수 있는 멋진 기회가 될 것이라고 장담하셨다. (엄청 힘들지만 잘 이겨낸다면 크게 성장할 것이라고 말씀하셨다) 아무래도 힘들것이라는 말씀을 계속 반복 하시는 것을 보니 정말 정신 바짝 차려야 겠다는 생각이 들었다.

    그리고  열심히 하는 것 다음으로 중요한 것이, 시간 계획을 잘 짜보라고 하셨다. 계획한 것을 잘 실천하고 있는지, 그게 안된다면 무엇때문일지 한번씩 생각을 해보고 시간관리를 잘 하는 프로그래머가 되기를 강조하셨다.

    아마 매일마다 학습일지(daily-time-plan)을 쓰게 되어있는데, CTO님이 말씀하신 시간관리를 잘하기 위한 첫 걸음이 아닐까 싶다.

    종호님과의 첫 만남!

    간단한 OT를 마치고, 각자의 집으로 흩어졌다. 그리고 몇시간 후, 우테캠에서 첫 팀이 꾸려졌다. 내 첫 팀원은 OT에서 내 바로 앞자리에 앉으셨던  '박종호'님이었다..! 종호님도 나처럼 스타트업 경험이 있다고 하셨고, 여행이 취미라고 했다. 그 얘기를 듣는 순간 '어라..!? 우리 자소서를 보고 취향이 비슷한 사람끼리 팀을 매칭 시켜주셨나?' 싶었다. 취미와 취향이 너무나도 잘 맞아서 일하는 내내 즐거웠다!

    이걸 3일만에 하라고??

    대망의 첫 과제가 주어졌다. 로그인 페이지를 구현하는 것이라 생각보다 간단하겠는걸? 이라고 생각했지만 첫 날에는 팀 룰을 짜고, 마지막 날은 데모라서 사실상 실제 프로젝트 참여 시간은 3일밖에 없었다.

    포크를 뜬다구요? PR은 뭔가요...  Stash는 또 뭐죠...

    와.... 내가 Git에 대해 너무 무지했구나 싶었다... 처음 프로젝트를 시작하는데 Git에 대해 모르는 것 투성이었다. 다행히 종호님이 이런 답답한 나를 천천히 다독여 가며 하나씩 천천히 알려주셨다. 간단하게 정리해 보자면 다음과 같다.

    Fork
    포크는 다른 사람의 Github 레포를 복제해서 내 Github 레포로 복제하는 기능이다. 이 때, 원본의 repo와 연동이 되는데 연동이라고 한다면 원래의 레포에서 새로운 커밋이 일어난다면 내가 복제한 레포에서 그것을 fetch 받을 수 있다는 뜻이다. 반대로 내 레포에서 원본 레포로 push를 날리려면 Pull Request라는 요청을 보내야 한다.
    포크를 통해서 내게 권한이 없거나 마음대로 건드리면 안되는 레포를 복제 해서 내가 생각하는 기능을 넣은 뒤 원작자에게 pull 요청을 보내는 것이다.
    Pull Request (PR)
    풀 리퀘스트는 사실 기본중의 기본 용어다. 포크를 따거나, 브랜치를 만들었을 때 메인 브렌치에 내 작업 내용을 merge 할 수 있도록 요청을 날리는 것이다. 이 때, 프로젝트에 참가하는 사람들이 코드 리뷰를 달아줄 수 있고, 어떤 내용이 바뀌었는지 볼 수 있다!

    누가 Approve해주기 전까지는 Merge가 되지 않는다. (심지어 Reject 할수도 있다.)

    Stash
    아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어이다. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리할 수 있다. 여기서 중요한 내용은 stack에 저장한다는 점인데, 여러번 스태쉬에 저장할 수 있고, git stash pop 이라는 명령어로 가장 최근에 stash에 저장한 내용부터 차례로 불러올 수 있다는 것이다.
    stash 작업은 주로, 메인 브렌치에서 fetch 된 내용을 모두 받고 내 작업물을 합칠 때 사용한다!
    (git stash > git merge origin/main > git stash pop)

     

    뷰 엔진은 또 뭘까요...?

    이번 첫 주차에는 뷰 엔진을 가지고 페이지를 만들라고 하셨다. 뷰 엔진....? 정말이지 처음 들어보는 것 투성이었다. 혼자서 공부할 때에는 내가 하고 있는 방향이 옳은건지 고민을 많이 했었는데, 이번 기회로 기본적인 지식들을 잘 배울 수 있게 되어서 역시 우테캠에 오길 잘했다는 생각이 들었다!

    나는 주로 공부를 할 때 CRA(클라이언트 사이드 렌더링 앱) 위주로 공부를 했었는데, 이번 뷰 엔진은 서버사이드렌더링에 사용되는 기술이었다. 뷰엔진은 서버에서 처리한 데이터 결과값을 정적인 페이지에 편리하게 출력해주기 위해 사용되는 도구다.
    이 뷰엔진을 사용하면 특정 데이터에 따라 다른 뷰를 나타내는 데에도 용이하고, 마크업 안에 변수들을 아주 편리하게 출력할 수 있다!

    d우리가 뷰 엔진 중 하나인 PUG를 사용해서 만든 index.pug 중 일부분이다. if 를 이용해서 user의 데이터가 있는지 없는지에 따라 나타나는 내부 구조를 다르게 표현하고, user.nickname이라는 변수도 편하게 출력을 한다!

    그 외에도 반복문 등 마크업을 편리하게 내타내기 위한 다양한 문법이 있다!

    Session 기반 로그인!

    이번 백엔드의 핵심 과제 중 하나인 로그인 시스템 구현...! 우리팀은 다음과 같은 방법으로 session 기반 로그인을 구현했다 😀

    1. 유저의 id와 pw를 POST요청의 body로 받아온다.
    2. pw는 Hash 암호화 라이브러리 bcrypt로 통해 hasing 처리를 하고 id와 함께 DB에 저장한다.
    3. 로그인 시에, DB에 저장된 hashed pw와 유저가 입력한 pw를 bcrypt의 compareSync 함수를 이용해서 비교 후, 일치하다면 해당 session에 user값을 넣어준다.
    4. 유저가 페이지에 접속할 때 마다 session에 user 데이터가 있는지 없는지를 체크한다.
       (user가 없으면 비로그인 상태, 있으면 로그인 상태)
    5. 만약 로그아웃을 한다면 session의 user값을 null값으로 초기화 해준다.

    그래서 결과물은요...!

    내가 맡았던 부분은 회원가입 페이지다! 변경되는 입력값마다 validation 체크를 해 주는 detail에 신경을 많이 썼다~!

    배포 링크!!

     

    첫번째 결과물의 깃 링크다! 5주가 지난 지금 보니 부족한점이 엄청 많이보인다. 그만큼 내가 성장했다는 뜻이겠지?

     

    GitHub - woowa-techcamp-2021/baemin-19: Cloning "baemin.com" authentication system to learn how auth system works

    Cloning "baemin.com" authentication system to learn how auth system works - GitHub - woowa-techcamp-2021/baemin-19: Cloning "baemin.com" authentication system to learn how auth ...

    github.com

     

     

    첫 번째 프로젝트를 마치며...

    첫 프로젝트라 어수선한 느낌이 많이 들었다. 그리고 처음 들어보는 용어들이 수두룩했다. 하지만 이거야 말로 내가 우테캠을 온 이유라고 생각한다. 이번 과정을 통해 단순 응용기술 뿐만이 아니라 기본기가 탄탄해지고, 협업의 능력도 많이 길러졌으면 좋겠다!

    종호님과의 프로젝트가 너무 짧아서 정말 아쉬웠다...
    다음에 기회가 된다면 (우아한 형제들에서..!?) 다시 한번 협업할 수 있는 기회가 있었으면 좋곘다 ☺️

    댓글