전체 글
[JavaScript] throw와 return의 차이
문득 다른사람의 코드를 보다가 에러처리하는 방법에 의구심이 생겼습니다. throw와 return 둘의 역할이 비슷한거 같은데 정확히 어떤 차이 때문에 구분해서 쓸까 궁금했습니다. 자료를 찾다보니 medium의 글이 있어서 참고하였습니다. const inner1 = () => { throw new Error('some error') } function main() { inner1() console.log('I am waiting') } main() 위는 throw로 에러처리를 한 경우입니다. 스레드가 멈추고 console이 실행되지 않습니다. 다음은 try catch를 추가하여 에러가 나와도 스레드를 계속 실행하도록하고 에러를 핸들링할 수 있게 했습니다. const inner1 = () => { throw..
[DataBase] typeORM find시 어떤 칼럼을 기준으로 찾아야 빠를까?
프로젝트로 nestJS 와 Mysql(TypeORM)을 사용했습니다. entity에서 find 혹은 findOne을 하는 경우 unique한 값인 id 값으로 찾아오는 경우가 있는데 다른 칼럼(예를 들면 email)도 unique할 수 있습니다. 따라서 email로 찾아도 값은 동일할 것입니다. 여기서 id값과 email의 차이는 id의 경우 auto increment로 설정되어있고 email은 그렇지 않다는 점입니다. 이 경우 email은 랜덤하기 때문에 시간이 오래 걸릴 것이고 id값은 정렬되어있기 때문에 빠르게 탐색할 것이다.라는게 저의 가정이었습니다. 하지만 검색 결과 DB는 B-Tree라는 다른 자료 구조를 가진다는 것을 알았습니다. B-Tree 자료구조는 2가지로 나뉘는데 선형 자료구조와 비선..
[부트캠프] 실전 프로젝트 정리
실전프로젝트 최종 제출을 완료하고 회고해보고자 합니다. 1. 피드(게시글) CRUD 저희가 만든 서비스에 퀘스트를 완수함에 있어서 3가지 타입의 퀘스트가 있습니다. 그 중 피드(게시글)를 작성하는 퀘스트가 있습니다. 지도에서 피드에 해당하는 퀘스트가 뜬 장소에 도착하여 피드를 작성할 수 있습니다. 피드 목록은 이웃 커뮤니티에 초점을 맞춰서 현재 위치의 동에서 생성된 피드만 볼 수 있습니다. 피드를 보여줄 때 최신순, 인기순, 거리순 세 카테고리로 정렬하여 보여줍니다. 2. 댓글 작성 위에서 작성한 피드에 댓글을 작성, 수정, 삭제할 수 있는 기능입니다. 댓글은 해당 피드가 작성된 위치가 아니어도 어디서든 자유롭게 작성할 수 있습니다. 3. 좋아요 자신의 동네에서 올라온 피드 목록을 보고 마음에 드는 피드..
[실전프로젝트] 메인서버와 채팅(socket)서버를 분리하는 이유
프로젝트를 하는 중 메인서버와 채팅서버를 분리했습니다. 처음엔 당연히 "다들 이렇게 하니깐" 이라고 넘겼습니다. 하지만 하나의 인스턴스에 넣고 로드밸런싱을 통해 서버가 자동적으로 증설되면 되는거 아닌가 라는 생각이 들었습니다. 이에 관해 멘토님께 질문을 드렸고 명확한 답변을 얻을 수 있었습니다. 답변 하나의 인스턴스에 넣고 서버를 올려도 됩니다. 하지만 채팅서비스의 트래픽으로 인해 서버가 자동적으로 추가될 때 채팅과 관련없는 메인서버까지 추가 되기 때문에 불필요한 자원이 추가됩니다. 채팅서비스의 트래픽이 증가된다면 채팅관련 서버만 추가 되는 것이 불필요한 자원이 추가되는 것을 막을 수 있습니다. 따라서 메인서버와 채팅서버를 나누고 각 서버의 트래픽이 증가하면 해당 서버만 증설되어야 하는 것입니다.
[Git] git commit history를 지우고 싶을 때
환경변수가 저장되어 있는 파일을 그대로 올린 경우 파일 삭제는 물론 git commit history역시 삭제해 주어야합니다. 다음과 같은 절차를 따라 하시면 됩니다. 가고자 하는 commit으로 $ git reset HEAD@{3} 다시 add 하고 commit 합니다. $ git add . $ git commit -m 'message' 강제로 push 합니다. $ git push --force