TIL 0312, 0주차 미니 프로젝트 #3
일과 시작 전
결국엔 노력하는것도 결과물이 유의미해야 인정된다고 했다.
방향성이 다른 상황에서 밤을 새서 진도를 나간다면 그것도 유의미한 결과물일까? 두 상황을 모두 겪고 있는 느낌이다.
09:30 일과 시작
얼추 구현이 끝난 상황에서 기술 스택을 유지하고 기능을 추가하는 안을 생각했다.
다른 팀원 분들 중 한 분이 캠퍼스 건물을 다루는 내용이니 당연히 정글의 고유 색깔인 살짝 민트계열 초록, 검정, 흰색으로 가야하지 않겠냐면서 맛깔난 디자인 로고를 제시하는 동시에 전체적인 색감도 비슷하게 바뀌었다. Bulma gud.
초안, 뒷 배경이 흰색이라서 그렇지 투톤 느낌을 주려고 했던 로고이다.
수정안, 전체적으로 핀트를 잘 강조 할 수 있게 되었다.
어쨌든 오늘 배운 것, 할 일 종합적으로 써본다면..
- 각 문제마다 힌트를 댓글처럼 작성 할 수 있게 하기
- comments 저장 할 수 있는 컬렉션(mongoDB에서는 테이블을 이렇게 부른다)를 추가한 다음 기본적인 읽기 추가 삭제 정도 할 수 있는 내용을 추가했다. 기존 코드를 바꾸는 형태에서 진행하였기 때문에 특별히 어려운 부분은 없었지만 어려워질 뻔한 내용을 정리하면
Problems.html 에서는 idName을 jinja2에서 주로 활용하는 양식을 통해 가져 올 수 있다. 근데 이걸 직접 활용 할 수는 없고 {{ idName }} 이런 식으로 이용 할 수 있다고 한다. 그럼 JS 상에서 앞에서 언급한 변수가 필요 할때는 아래와 같이 값을 옮겨서 활용 할 수 있다.
let variableA = {{ idName }};
어차피 Flask 에서 출발한 idName 인 만큼 idName을 직접 수정한다고 해서 Flask에 돌아간다음 뭐 값을 조정하고..
이런 일은 다른 구현 방법이 존재한다.
pull 받을 때 계속 진행하던 내용이 개박살 나는 경우가 있었다. 이 경우가 잦게 일어나니 계속 짜증이 나서 해결책을 강구해야 했다.
git에 대한 별의 별 짓을 다 해봤는데 제일 의미 있었던 것은 바로 전 단계로 되돌아가는 rollback, 작성한걸 따로 빼놓고 clone 받아서 새롭게 진행한 느낌이다.
댓글 기능까지 추가된 JX를 결과적으로 완성해냈다!
- JWT에 기반한 로그인 시스템을 구현하면 token을 클라이언트가 가지고 움직이게 되는데 쿠키-세션은 반대로 token을 서버에 저장한다. 한 두건의 로그인 상황은 별 의미가 없지만 몇십만건의 처리에 대해선 클라이언트가 로그인 상황에 대한 token을 들고있게끔 함으로써 서버의 리소스 사용을 절약 할 수 있다고 한다. 서버는 사용자 상태를 갖고 있을 이유가 없으니 갖고 있어야 하는 상황과 비교 했을 때 서버가 다중 서버 환경에서의 유연성을 가질 수 있다고 요약이 가능하다.
- 무의식적으로 시간이 많이 걸릴만한 것들을 쳐내서 그런 것인지 기술적으로 얻어가는게 많았던 것 같지는 않다. 아무래도 배우는 자세, 대하는 자세를 갖추는 방법을 위한 시간이 많지 않았나라고 느낀다. 두 마리 토끼를 잡는게 만점이었다면 나는 한 마리 토끼로 오마카세를 대접 받은 셈이라고 생각하려고 한다.
- KeyError가 나오는 상황인데 코드가 별달리 이상이 없어 보인다면 분명 문제가 있다. 내가 이 오류를 봤을 때, 오류가 있다고 가리킨 코드의 세 줄 아래에서 실제 문제가 있는 코드가 있었다. DB가 생성되지 않은 column을 참조하려고 할 때 이 오류를 보게 되었다.
- DB의 내용을 수시로 정정해나가다보니 제대로 column 생성이 안된 상황에서 생성이 이미 됐다고 판단하고 참조하려고 했을 때 이 오류가 발생했다. 따라서 KeyError에 관한 일이 있다면 전체적으로 코드를 다 틀어막고 작동 여부를 확인해야한다.
- 내가 만든 DB는 id, hashed_pw, questStatus[20], questCnt 등의 내용을 담고있다. 그리고 새로운 column으로 questLv를 추가 했다. 하지만 DB에 새로운 정보는 기입되지 않은 상태다. 그래서 기존 DB 기준으로 생성된 모든 records는 questLv의 값이 없다는 게 된다. 수정된 DB 기준으로 새로운 record를 생성해야만 questLv을 백엔드 코드 영역에서 다룰 수 있다는 이야기를 좀 길게 썼다.
- 특히나 이번 기술 스택에 고려된 MongoDB는 스키마가 고정되지 않은 NoSQL 데이터베이스라고 파일럿 코가 설명한다. 따라서 새로운 필드가 추가된 경우 데이터를 갱신해야한다. 이 부분에 대해서는 서비스가 더 확장 될 때 자동화 하거나 보다 안정적인 작업을 할 수 있도록 고려해야 할 부분이 되겠다.