Weekly I Learned 1주차

2022. 9. 26. 01:06Weekly I Learned (WIL)

728x90
SMALL

[기간]

- 9월 19일 ~ 9월 24일

 

 

[Weekly I Learned (후기)]

항해99를 시작한 첫 주이다.

시작하기 전에 많은 후기들을 보고 과연 내가 할 수 있을까라는 생각이 먼저 들었던 것은 사실이다.

하지만, 다시 생각해보니 기존에 아무런 지식이 없었던 풋내기 대학생 시절에도 과감히 국비지원교육을 신청하여 이수했던 과거를 생각하면 그때보단 훨씬 낫지 않을까라고 생각되면서 한결 마음의 짐을 덜었다.

 

공지된 내용대로 오전 9시부터 시작하게 되었다. 회사를 다녔었던 나에게는 별 일 아니었다.....

라고 말하고 싶지만 퇴사한지 5개월 정도 되었고 그사이에 하고싶었던 일들을 하며 살았기 때문에 초반에 적응이 매우 싶진 않았던 것이 사실이다 ㅎㅎ...

 

+ 9월 19일 (월요일)

첫 날부터 미니프로젝트를 진행하게 되었다. 우리 팀의 주제는  처음에 세가지의 주제가 나왔다.

'축구 순위 및 정보를 보여줄 수 있는 홈페이지'

'동네 혹은 넷상에서 생성된 동호회를 소개하는 커뮤니티 형 홈페이지'

'네이버 쇼핑 페이지를 모티브로 하는 쇼핑몰 홈페이지' .

 

그 중에서 동호회 커뮤니티 홈페이지를 선택했다.

이유인 즉슨, 우리가 사전스터디에서 배웠던 내용을 가장 적용하기에 알맞은 주제였기 때문이다.

소모임이라는 커뮤니티와 같이 훌륭한 표본도 있었기에 더욱 알맞은 주제라고 생각되었다.

 

주제는 정해졌으니 이제 본격적인 프로그래밍 세팅을 할 시간이다.

세팅한 내용은 아래와 같다.

 

- 코딩 플랫폼 : 파이참

- 주요 라이브러리 : flask, request, pymongo, jwt, hashlib

- 사용 언어 : HTML, python, javascript

- 협업 플랫폼 : 소스트리

(내 블로그에 따로 적어놓은 SA 내용 : https://jindevelopetravel0919.tistory.com/2)

 

첫 날이니 본격적인 코딩보다는 세팅 위주로 시간을 보냈던것 같다.

코딩 플랫폼이나 라이브러리 설치, 사용 언어는 사전 스터디에 배웠던 내용을 토대로 빠르게 설정할 수 있었지만, 이놈의 협업 플랫폼 세팅이 문제였었다.

초기에 협업 플랫폼 국룰이라고 할 수 있는 github 를 사용하려고 했으나 팀 인원 모두 익숙하지 않았다.(혹은, 아예 모르거나) 또한,  Mac 환경에서 진행하는 팀원도 있는 반면 window 환경에서 진행하는 본인 포함 팀원들도 같이 있었는데, 설정이 꼬여서  시간이 반나절이 훌쩍 지나도록 제대로 세팅이 되지 않자 소스트리 플랫폼으로 옮겨 해결할 수 있었다.

협업 플랫폼 세팅마저 끝내니 비로소 첫날은 무사히 넘길 수 있었다.

 

 

+ 9월 20일 (화요일)

각자 구현할 페이지 및 기능을 분담하여 본격적으로 코딩을 진행하는 날이다.

팀원 1님은 로그인/회원가입 페이지, 팀원 2님은 로그인되어 동호회글이 바로 보여지는 메인 페이지, 팀장인 나는 글을 열람 하면 보이는 글 소개 페이지, 글을 작성할 수 있는 글 작성 페이지를 맡았다.

 

<글 열람 페이지>

- 동작 : 메인 페이지에 보이는 글을 클릭 -> 글 소개 페이지 이동 -> 작성자, 제목, 내용, 동호회에 대한 정보가 보여진다.

 

<코딩 순서>

1. HTML 언어를 활용하여 글 정보 페이지를 먼저 생성

ㄴ HTML은 기존에 알고있었던 언어여서 비교적 쉽게 코딩을 할 수 있었던 것 같다.

 

2. 메인 페이지에 카드로 만들어놓은 동호회글에 javascript 언어를 활용하여 글 정보 페이지로 이동하게 설정.

ㄴ HTML과 마찬가지로 javascript 언어도 익숙해서 비교적 수월하게 코딩할 수 있었다.

 

3. 글 정보 페이지에 pymongo 에 넣어둔 작성자, 제목, 동호회 정보들을 긁어와서 보여지게 뿌려준다.

ㄴ mongodb 라는 db가 존재하고 있었다는 것은 알고있었지만, 나는 이떄까지 mysql을 주로 사용했었기에 CRUD 기능이 어떤 것이라는 것인지는 확실히 인지 하고 있었지만 명령어가 익숙하지 않아 고생했던 것 같다.

 

이렇게 글 정보 페이지의 기능 구현 및 뷰 구현까지 70프로 정도 완성된 채로 끝났다.

 

 

+ 9월 21일 (수요일)

글 작성 페이지를 구현할 시간이다.

 

<글 작성 페이지>

- 동작 : 메인페이지에 글 작성이라는 버튼을 생성하여 클릭 -> 글 작성 페이지 이동 -> 이미지, 작성자, 글 제목, 내용, 동호회 위치를 작성할 수 있는 폼이 보여진다. -> 작성 완료 후 메인 페이지로 이동, 새로 넣은 정보까지 리스트업되어 보여진다.

 

<코딩 순서>

1. HTML 언어를 활용하여 글 소개 페이지를 먼저 생성

ㄴ HTML 언어를 활용하여 페이지 구성.

 

2. 로그인이 완료되면 메인페이지로 넘어가고 메인페이지에 생성된 글 작성 버튼을 누르면 작성 페이지로 이동하게끔 구현.

ㄴ javascript 언어로 이동 기능 구현

 

3. 이미지, 작성자, 글 제목, 내용, 동호회 위치를 작성할 수 있는 폼이 생성된다.

ㄴ HTML 로 작성 폼을 만들었다. 작성 폼에 정보를 기입하고 완료버튼을 누르면 mongodb에 정보들이 저장된다.

    

  그중에서 이미지가 문제였는데, 기존에 국비교육을 들었을 당시 무리없이 이미지 업로드 기능을 구현했었기에 원활하게 만들 수 있을 줄 알았으나, 이미지를 업로드 하게 되면 fakepath 라는 거짓된 경로가 나오면서 이미지가 업로드 되지 않았다. 알고보니 인터넷 상에서 보안 상의 이유로 경로를 보여지지 않게끔 되었다고 한다. 

그래서 결국 완성하지 못한....

 

4. 글 작성이 완료되고 정상적으로 db에 저장이 되면 메인페이지로 넘어가서 저장된 동호회 정보가 카드 형식으로 추가되어 리스트업되어 보여지게 된다.

 

이미지 기능 구현은 폼만 만들어내고 실질적으로 동작하지 않아 정해둔 기본이미지가 디폴트 값으로 들어가게끔 해놓았다.... 

그밖의 기입 정보들은 정상적으로 저장되게끔 구현해놓았다.

글 작성 페이지는 이 날 80프로 정도 완성되었던 것 같다.

 

(추가작업1) 팀원님이 만들어주신 로그인 기능은 jwt 라이브러리를 이용하여 토큰 및 쿠키로 로그인 되어 메인 페이지로 넘어갈 수 있게끔 하는 방식이였는데 정상적으로 운용이 되지 않아 jwt 라이브러리를 지우고 pyjwt를 설치하였더니 정상적으로 되어 문제를 해결해드렸다.

 

(추가작업2) : 로그인된 계정의 정보가 모든 페이지 안의 최상단에 붙어있었으면 해서 header.html을 따로 만들어 거기에 로그인된 계정의 정보를 넣어주어 모든 페이지에 해당 페이지를 jinja 언어를 활용하여 간단하게 인클루드 하게 만들어 보여지게끔 만들었다.

 

(추가작업3) : 메인 페이지의 header에는 동호회글을 직접 검색할 수 있게끔 만들어 놓았는데 동호회명을 정확히 입력해야만 검색될수 있게끔 만들었다. 시간이 좀 더 있었다면 일부 단어만 작성해도 해당되는 글들을 검색되게끔 할 수 있었겠지만 시간도 촉박하고, mongodb 에 대한 명령어를 잘 알지 못하여 하지 못했다.

 

 

+ 9월 22일 (목요일)

목요일은 프로젝트 완료일 및 발표일이다.

팀원분들께 죄송스럽게도 본인의 예비군 훈련날이어서 참석하지 못하였다.

발표가 어느 정도 진행된 후에야 참석할 수 있었다.

 

뒤늦게 참석하여 다른 팀들 중 일부 팀들밖에 발표를 못봣지만 다들 첫 프로젝트임에도 잘하신 것 같았다....

팀장인 내가 좀 더 빠릿빠릿하게 움직이고 도와드리고 주도했으면 더 잘했을 것 같은데 팀원들한테 너무 죄송했다...

 

 

+ 9월 23일 (금요일)

프로젝트가 끝난 여운을 팀원들과 느낄 새도 없이 바로 헤어지고 주특기에 따라 chapter 2 팀이 정해지고 프로그래머스 코딩 테스트를 이용한 코드 구현력 연습이 시작되었다. 

 

자신의 코딩 수준을 알고 있었기 때문에 풀때마다 틀릴 때마다 스트레스를 너무 받았던 것 같다...

다만, 예전의 나였다면 아예 풀지 못하고 검색하는데에 시간을 모두 빼앗겼을 것이다.

지금의 나는 그래도 테스트 채점 제출을 하게되면 모두 통과될 정도는 코딩을 할 수 있었다.

(그럼에도 시간이 오래 걸리는 것은 어쩔 수 없나 보다 ㅎㅎ...)

 

하루종일 코딩 문제를 붙들었던 하루였다.

 

 

+ 9월 24일 (토요일)

23일과 마찬가지로 코딩 문제를 하루종일 풀었다.

아침에 요가를 주제로 하는 유튜버 분을 초청하여 좀 더 상쾌하게 시작할 수 있었다.

 

오늘도 마찬가지로 많이 고민하고 테스트해보면서 문제를 풀어나갔다.

어제와 마찬가지로 테스테는 원활히 통과하는데 본격적인 채점 제출을 하게 되면 일부 채점 케이스에서 시간 초과되어 틀렸다고 나오는 부분이 많았다.

그럴 떄마다 "기능 구현은 정상적으로 되었는데 왜 시간이 초과되어서 실패로 간주하는거지? 화나네??"

솔직히 이런 생각이 많이 들었다.

 

코드를 얼마나 줄여야하길래 그러는지도 잘 모르겠고, 정해진 답대로만 해야한다면 왜 굳이 여러가지를 생각하면서 코딩을 해야하지? 라는 마음이 있었기 때문이다.

 

아무래도 계속 거의 쉼없이 문제를 풀어서 머리에 열이 나기 시작했기 때문에 휴식을 취해야하는데 고집부리면서 버텼기 때문이기도 한 것 같다.

 

휴식은 중요한 것 같다..

 

 

 

 

[일별 부족한 점 / 느낀 부분]

9월 19일 (월요일) 

= 지금은 소스트리로 대체해서 했지만 본격적으로 취업 및 실무에 투입될 때는 github에 대한 내용은 필수적이라고 생각한다.

 

+ 9월 20일 (화요일)

= mysql은 명령어를 길게 써야하는 불편함이 있지만 조건을 확실히 걸어서 여러 조건에 맞는 데이터를 뽑아올 수 있었지만, 아직 mongodb는 넣고 빼기밖에 못하므로 좀 더 공부해야할 필요가 있다고 느꼈다.

확실히 타입을 일일히 정해줘야하는 mysql과 다르게 mongodb는 그런걸 신경쓸 필요없이 바로 데이터를 넣어버리면 되서 편했던 것 같다.

 

= 글 수정 기능도 넣었어야했으나 미처 생각하지 못하여 만들지 못했다. 기본적으로 커뮤니티 페이지라 함은 

작성, 수정, 삭제 기능은 주요 기능이라 넣어줘야 한다고 생각하는데 이런식으로 잊은 상태로 프로젝트를 진행하면 안된다고 생각한다.

앞으로는 프로젝트가 시작하기 전에 주요기능들은 확실하게 생각하고 정리해놓아야겠다.

 

+ 9월 21일 (수요일)

= 위에서 말햇듯이 이미지 기능 구현을 못했는데, 프로젝트 발표회에서 다른 팀들이 구현을 한 것을 보면 그냥 내 의지 부족 및 구글링 실력이 부족해서 구현을 못한 것 같다...

구글링도 코딩 실력과 비슷하게 매우 중요한 부분이라 자주 검색해보면서 실력을 늘려야겠다...

 

+ 9월 22일 (목요일)

= 예비군...

 

+ 9월 23일 (금요일) / 9월 24일 (토요일)

= 코딩 문제를 풀 때 좀 더 침착하고 평정심을 가져야 한다고 생각한다.

   자꾸 왜 나는 이것도 못 풀지? 다른 사람들은 다 하는데 왜 나는 못하지? 라고 생각하는 버릇을 좀 버렸으면 좋겠다.

 

 

※ (추가) 부족한 점 / 느낀 점

1. get / post

- get, post 는 데이터를 전달하거나 단순히 정보를 가져와서 보여줄 때 사용한다는 것은 알고 있었으나, 명확하게 잘 알지 못하였다.

기존에 알고있었던 내용은 그냥 get은 url에 데이터 값이 보여져서 전달 및 이동되는 것, post는 그것들이 숨겨져서 전달 및 이동되는 것이라고 알고있었다.

이번에 새로 알게된 것은 get은 아작스에 데이터를 보내서 보여주는 것이 아닌 그냥 조건을 걸지 않고 그대로 정보를 보여주는 것 (get에서도 데이터를 넣어줄 순 있음.), post는 데이터를 아작스에 넣어서 조건을 걸어 원하는 값을 가져오는 것이라고 명확하게 알게되엇다.

 

2. python 과 html페이지 사이에 값 전달 및 url을 통한 이동

- 내가 이전에 spring 을 처음 접할 당시에는 자바 페이지를 따로 만들고 컨트롤러로 어노테이션 지정한뒤, js 페이지를 따로 만들어서 javascript 언어를 활용해서 이어주던가 해야했지만, 파이참에선 바로 app.route url을 통해 html에서 그냥 바로 넘어갈 수 있어서 쉬워서 좋았다.

페이지에 데이터를 전달하거나 이동시키는 것이 웹을 만들 때 가장 중요시하는 내용 중 하나라고 생각하기에 앞으로 확실히 공부할 필요가 있다.

 

3. 협업 플랫폼 미숙지 문제

- 이번 프로젝트를 진행하면서 매일 코딩하고 소스트리 커밋, 푸쉬, 패치, 풀을 할 때 충돌이 자주 일어났고, 브랜치를 잘 활용하지 못하고 메인에 바로 해버린것도 문제라고 생각한다.

때문에 작업 내용이 날아간 경우도 몇번 있었기 때문에 git 활용법은 확실히 알고 공부해 놓아야 할 것 같다.

 

 

4. 시간 분배

- 매번 프로젝트를 하면서 느꼈지만, 기능이 거의 완성되었다고 방심을 하다가 시간이 촉박한 적이 한두번이 아니다...

아니, 매번 그랬다.

팀장이니 좀 더 확실하게 계획하고 실행할 필요가 있다.

 

 

 

이번에 느낀 것들을 토대로 앞으로 조금씩 발전해 나가보자!

728x90
반응형
LIST

'Weekly I Learned (WIL)' 카테고리의 다른 글

Weekly I Learned 6주차  (0) 2022.10.30
Weekly I Learned 5주차  (0) 2022.10.23
Weekly I Learned 4주차  (0) 2022.10.17
Weekly I Learned 3주차  (0) 2022.10.03
Weekly I Learned 2주차  (0) 2022.09.27