til

    2021-12-23 TIL

    Facts (사실, 객관) 엘리스 SW트랙 1차 프로젝트 진행 중 이벤트 처리 리팩토링, AWS-S3 연동 Feelings (느낌, 주관) 이제 백엔드 업무는 빌드와 배포 정도만 남았다. 빌드를 하면서 겪게 될 시행착오가 염려되긴 해도 이번 프로젝트에서 백엔드를 지원한 것은 잘한 일인 것 같다. 특히 API와 DB에 관련된 일을 자주 경험하게 되면서 몰랐던 사실을 많이 알게 되었다. 간만에 운동을 다녀왔다. 집에 도착해보니 바지 주머니에 락커룸 키가 남아 있었다. Findings (배운 점) beforeunload 이벤트 발생을 통해 사용자의 이탈을 감지할 수 있다. 다른 페이지로 이동하거나 브라우저가 종료될 때 혹은 새로고침을 하게 되면 이벤트를 감지하고 특정 로직을 실행할 수 있다. 다만 완전히 브라..

    2021-12-22 TIL

    Facts (사실, 객관) 엘리스 SW트랙 1차 프로젝트 진행 중 검색 기능 구현 Feelings (느낌, 주관) 코딩을 하다보면 언제나 예상치 못한 곳에서 에러를 발견하게 된다. 대부분의 경우 그 에러는 아주 작은 실수에서 발생한다. 개발이란 해결해야 하는 문제를 명확하게 설정하고 논리적 사고의 흐름에 따라 그것을 해결하는 일이란 생각이 들었다. Findings (배운 점) mongodb에서 $or 연산자를 활용하여 여러 조건을 탐색할 수 있다. mongodb에서 $regex 연산자를 활용하여 정규표현식을 사용할 수 있다. $options에 'i'를 설정하면 대소문자를 구분하지 않는다. Things to do (해야 할 것들) 검색 기능 확장 프로젝트 빌드 Affirmation(자기 선언) 원하는 것을..

    2021-12-20 TIL

    Facts (사실, 객관) 엘리스 SW트랙 1차 프로젝트 진행 중 코드 리뷰 내용 반영 게시글 관련 API 작성 Feelings (느낌, 주관) 코치님들의 코드 리뷰를 통해 중간 평가를 받았다. 백엔드의 경우 중복 제거와 예외 처리에 관한 피드백이 대부분이었다. 미들웨어를 적용함으로써 반복적으로 작성된 예외처리의 중복을 제거하고, RESTful하지 않은 상태 코드 반환도 수정해주었다. 낮잠을 자는 바람에 결국 패턴이 다시 꼬이기 시작했다. 이런 저런 핑계로 운동을 하지 않았다. 백엔드 코치님이 언급해주신 swagger를 활용하여 API 문서를 작성해보고자 했으나, 개발 의존성도 추가해줘야 하고 여러모로 사용에 익숙해질 시간이 필요해 보였다. 대신에 수업시간에 배운 postman을 활용하여 API문서를 작..

    2021-12-18 TIL

    Facts (사실, 객관) 엘리스 SW트랙 1차 프로젝트 진행 중 API 로직 구현 Feelings (느낌, 주관) mongoDB 특정 컬렉션의 데이터를 바꾸기 위해선 관계(참조)하고 있는 다른 컬렉션의 필드(?)도 함께 수정해줘야 한다. 일일이 대상을 찾아 바꾸는 게 과연 옳은 방식일지 의구심이 들었다. 다른 방법을 고민하던 차에, 함께 백엔드를 담당하고 있는 동료님이 SQL에선 cascade라는 개념이 있다고 알려주셨다. mongoDB cascade라고 검색하니 mongoose middleware 작성을 통해 cascade와 유사한(?) 작업을 할 수 있음을 알게 되었다. 다만 스키마에서 미들웨어를 정의하는 부분에서 다른 모델을 참조하기 위해 import하는 부분과 미들웨어의 내부 로직을 좀 더 고민..

    2021-12-17 TIL

    Facts (사실, 객관) 엘리스 SW트랙 1차 프로젝트 진행 중 댓글 및 대댓글 API 기본 로직 구현 Feelings (느낌, 주관) 더 좋은 프로젝트 설계를 위한 다양한 주제로 대화가 오고 갔던 하루였다. DB를 다루는 방법, 댓글 수정/삭제 요청에 관한 로직, CSR과 SSR 등 여러 흥미로운 이야기들을 나누면서 어떤 선택이 좋을지 고민해 볼 수 있는 시간이었다. 내 자신이 부족한 점을 파악하기에 좋았고 약간 아리송했던 내용이 좀 더 선명해지는 것을 느꼈다. Findings (배운 점) 무언가를 말 하기 위해선 좀 더 잘 정리해서 준비해야 한다. Things to do (해야 할 것들) 알고리즘 한 문제라도 풀기 Affirmation(자기 선언) 코드를 좀 더 살펴보고 모르는 것이 없게 하자.

    2021-12-16 TIL

    Facts (사실, 객관) 엘리스 SW엔지니어 트랙 - 팀 프로젝트 진행 게시글, 댓글 관련 API 로직 작성 Feelings (느낌, 주관) 백엔드 코치님과 첫 미팅을 진행했다. 프로젝트 규모에 따라 어떤 디자인 패턴을 가져가야 하는지 고민해 볼만한 단서를 제공해 주셨다. mongodb나 express와 같은 특정 tool에 의존하지 않도록 고려한 설계도 있지만, 프로젝트 규모에 걸맞지 않은 과한 설계로 오버 프로그래밍을 하는 것도 좋지 않을 수 있다고 조언해주셨다. 댓글 생성 로직을 구현하고 테스트하는 과정에서, 댓글 컬렉션에서 댓글을 삭제하더라도 댓글을 참조하는 게시글 데이터에는 여전히 댓글이 남아있는 것을 확인했다. 삭제 요청이 들어오면 두 컬렉션에서 모두 삭제될 수 있도록 로직을 구현했다. 좀 ..

    2021-12-15 TIL

    Facts (사실, 객관) 엘리스 SW엔지니어 트랙 - 팀 프로젝트 진행 MongoDB Atlas 연동 및 라우터 로직 구현 Feelings (느낌, 주관) 오늘 MongoDB 클라우드에 연결하는 과정에서 발생한 에러 원인을 찾지 못해서 오랜 시간을 소모했다. Atlas에 각각의 컬렉션이 생성되는 것까지는 구현이 되었는데, mongoose 메서드를 사용하면 undefined 오류가 발생했다. 나중에 알고 보니 라우터 로직에서 유저 모델이 아닌 스키마를 불러오도록 경로 설정을 잘못해서 생긴 문제였다. 다소 허탈하긴 했지만 CRUD가 잘 되는 것을 확인하고 나니 조금은 뿌듯했다. 구현한 API의 CRUD를 테스트하면서 postman보다 httpie가 더 편리하다고 느꼈다. 터미널에서 한 줄의 명령어로 다양한..

    2021-12-14 TIL

    Facts (사실, 객관) 엘리스 SW엔지니어 트랙 팀 프로젝트 시작 기초 개발환경 설정 및 서버, DB 코드 작성 Feelings (느낌, 주관) 엘리스에서 첫 팀 프로젝트를 진행하게 되었다. 프로젝트 기간만이라도 기록을 남기면 의미가 있을 듯하여, 간만에 회고를 꾸준히 작성해 보려 한다. 오전에 프로젝트에 대한 간단한 안내와 함께 애자일 방법론에 대한 강의를 들었다. 작은 목표를 짧은 주기로 체크하며 프로젝트를 관리하는 스크럼, 1~4주 정도의 기간 동안 집중하여 결과를 만들어 내고 리뷰와 함께 회고를 진행하는 스프린트 등 대표적인 애자일 방법론에 대해 알게 되었다. 최근 읽고 있는 김창준님의 책 '함께 자라기'에서는 애자일에 대해 이렇게 소개하기도 한다. 애자일은 불확실성이 높은 프로젝트에 더 적합..

    2021-11-04 TIL

    Facts (사실, 객관) 코드숨 최종 프로젝트 리팩토링 Feelings (느낌, 주관) 자고 일어났더니 아파트가 단수 중인 상태였다. 물탱크를 청소한다나... 씻지도 못한 채로 최대한 단정함을 갖추고 외출을 했다. 근처에서 쌀국수를 먹고 스터디 카페에 갔다. 국비 부트캠프 과정을 수강하고 있다. 벌써 2주차인데 기존에 학습했던 내용을 다시 봐야 하는 부분이 많아서 아직까지는 효용성을 느끼지 못하고 있다. 처음에는 기초를 다지는 데 도움이 될 것이라 생각했지만, 내용을 깊이있게 다루기 보다는 처음 접하는 사람들을 대상으로 하는 수업처럼 운영이 되고 있어서 강의를 켜놓고 다른 짓을 할 때가 많다. 앞으로 진행될 팀프로젝트와 알고리즘 스터디, 취업연계 등에 거는 기대가 있지만, 득보다 실이 크게 되는건 아닐..