전체 글 99

[NestJS]

익스프레스의 단점, 한계 필요한 기능이 생길 때마다 미들웨어가 자꾸 추가되고 그러면 익혀야 할 것이 늘어나고 코드도 계속해서 수정해야 함 Nest.js의 장점 컨트롤러, 서비스, 미들웨어, 인터셉터, 모듈 등 웹 서버에 필요한 다양한 구성 요소를 커맨드로 정확하게 구현 가능 ex) nest g co posts -> Posts 컨트롤러 생성 가능 nest.js가 기계적으로 구성한 바탕 위에서는 오히려 실수하기가 힘들다! 때문에 코드의 생산성이 올라가 로직의 퀄리티를 올리는데 집중할 수 있음 컨트롤러 데코레이터를 통해 클래스가 컨트롤러 역할을 함 컨스트럭쳐 인자로 서비스 객체를 넘기면 멤머 변수에 서비스 객체가 주입 => DI (의존성 주입) 생성자를 통한 DI 컨트롤러는 고객(클라이언트)의 음식을 주문받고..

⌨️/Node.js 2024.04.11

최종프로젝트 오류

북마크 조회가 되지 않고 있음(서버 오류) -> 콘솔 에러메시지 보니까 NaN 문제라고 함 userId가 number로 받아와지지 않고 있는 것 같음 찾아보니 @Param('userId') 데코레이터로 매개변수를 추출하면 일반적으로 문자열로 나온다고 함 const userId = Number(user.id); const myBookmarkList = await this.collectionService.getBookmarkColList(userId); 이렇게 수정했는데 여전히 오류 -> 팀원분이 알아내심 @Get('bookmark') 이 코드가 @Get('/:collectionId') 이런 : 들어간 코드 아래에 있어서 그게 적용된거였음 결론: controller 파일을 한 번 더 분리했습니다

🪩/기타 2024.04.05

최종 프로젝트 트러블 슈팅

본격적인 트러블슈팅 포스트는 아니고 메모 형식으로 모아뒀다가 프로젝트가 끝나면 중요한 부분만 다듬어서 준비해두려고 한다. 우선 이 포스트를 매일매일 업데이트하는 것이 목표 1). 0402.화 const collection = await this.colRepository.findOne(collectionId); 여기서 findOne 부분이 자꾸 오류가 나서 찾아보니 typeORM 버전 관련 문제라고 함 https://stackoverflow.com/questions/71548592/nest-js-typeorm-cannot-use-findone-properly -> findOneBy({id: collectionId}); 으로 수정 2). 0403.수 테이블명을 한번 변경했고+그놈의 스네이크케이스때문에 db에..

💻/프로젝트 2024.04.04

컬렉션 상세 조회 관련 고민

나의 컬렉션 타 유저의 컬렉션(북마크 기능) 마이페이지에서 컬렉션을 조회할 수 있는 기능은 이렇게 둘로 나뉜다. 처음에는 getCollectionList처럼 하나의 엔드포인트를 둘까 생각했지만 둘을 따로 조회해야 한다는 점 때문에 getMyCollection / getBookmarkCollection으로 나누게 되었다. 저건 목록 조회 주소이고, 컬렉션 상세 조회는 저기서 /:id 값으로 들어가게 되는데, 문득 getBookmarkCollection/:나의 컬렉션의 id 값을 넣는 상황에 대해 고민을 하게 됐다.. my와 bookmark를 둘로 나누는 것 자체에 대한 고민이 다시 필요할 것 같다. 기능 구현이 어느정도 끝나고 이것에 대한 고민의 결론도 도출이 되었다면 글을 수정할 예정이다😵 일단은 구현해..

💻/프로젝트 2024.04.01

[백엔드 기술 면접 대비] RDBMS의 정규화, Primary Key, Foreign Key

내용 추가 예정 💡 3. RDBMS의 정규화에 대해 설명해주세요. RDBMS 정규화란? 관계형 데이터베이스의 설계에서 데이터를 중복 없이 효율적으로 저장하기 위한 과정 -> 중복을 최소화 왜 필요한가? 이상 현상이 발생할 수 있기 때문 이상현상이란? 정규화가 되지 않은 DB의 테이블에 어떠한 작업을 할 때 비합리적인 문제들이 발생하는 현상 테이블에 불필요한 데이터가 함께 들어가야 하는 삽입 이상, 테이블에서 삭제를 원치 않는 데이터도 함께 삭제가 되는 삭제 이상, 중복된 데이터에서 어떤 특정한 부분만 수정되어 값이 모순을 일으키는 갱신 이상이 있다. 이러한 이상 현상을 막기 위해 RDBMS의 정규화가 필요하다. 💡 4. Primary Key, Foreign Key에 대해 설명해주세요. Primary Ke..

[백엔드 기술 면접 대비] HTTP 메서드, GET, POST의 개념과 데이터 흐름

💡 5. HTTP 메서드에 대해 설명해주세요. HTTP 메서드는 요청과 응답에 관한 전송 방식을 말한다. 총 9가지가 있는데 보통 GET, POST, PUT, PATCH, DELETE를 많이 사용한다. GET: 리소스의 표시를 요청. 게시글의 목록을 조회하는 것 POST: 요청한 데이터를 처리. 게시글 작성 PUT: 리소스 전체 변경. 리퀘스트에서 모든 부분을 변경 PATCH: 리소스 부분 변경. 리퀘스트에서 일부만 변경해도 전체 처리 DELETE: 리소스 삭제. 게시글 삭제 💡 15. GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요. 추후 작성 예정

[DB] RDBMS, SQL, NoSQL

DBMS 데이터베이스 관리 시스템 데이터베이스를 조작하는 소프트웨어 데이터베이스를 구축하고 효율적으로 데이터 검색 및 저장 기능 제공 RDBMS 관계형 데이터베이스(관리 시스템) 키와 밸류의 관계를 테이블화 시킨 데이터베이스 SQL 관계형 데이터베이스를 관리하기 위해 설계된 프로그래밍 언어 MySQL sql을 사용하는 오픈소스의 관계형 데이터베이스 관리 시스템 NoSQL 기존의 관계형 데이터베이스보다 더 융통성 있는 데이터 모델, 데이터의 저장 및 검색에 특화 스키마가 필요없고 데이터 분산이 용이 단순 검색 및 추가 작업에 최적화된 기법 사용 -> 응답 속도나 처리 효율이 뛰어남!

🪩/기타 2024.03.29

[백엔드 기술 면접 대비] 프로세스, 쓰레드, 멀티 프로세스, 멀티 쓰레드

💡 23. 프로세스와 쓰레드에 대해서 설명하고 그 차이에 대해서 설명해주세요. 프로세스 이전에 프로그램이라는 개념을 먼저 알아야 할 것 같았다. 프로그램이란? 하드 디스크에 저장된 코드 실행 파일 저장 장치에 저장되어 있는 정적인 상태 프로세스란? 실행 중인 프로그램이자 작업의 단위 더 정확히 말하면 프로그램을 실행하면 파일에 있던 코드의 데이터가 메모리에 저장되어 프로세스로 동작한다. 실행되기 위해 메모리에 올라와있는 동적인 상태 스레드란? 프로그램, 특히 프로세스 내에서 실행되는 흐름의 단위 프로세스의 여러가지 상태 중에서도 CPU에 작업 요청을 하는 실행 단위가 스레드 -> 프로세스와 스레드의 차이 프로세스 스레드 실행시키는 주체 운영체제 CPU 독립성 각각의 프로세스는 서로에게 영향을 미치지 않음..