본문 바로가기

분류 전체보기

(13)
Web Socket(웹 소켓)과 HTTP NestJS로 웹 프로젝트를 진행하면서 실시간 채팅 기능을 구현하기 위해 WebSocket(웹 소켓)을 사용하였다. 웹 소켓은 실시간 통신이 필요할 때 사용되는 기술인 것은 알고 있었지만, 프로젝트를 진행하면서 웹 소켓에 대해서 좀 더 이해하고 싶어서 공부를 하게 되었다.Web Socket 개념과 배경Web Socket 이전웹 소켓은 실시간 통신이 필요할 때 사용되는 프로토콜이다. 웹 소켓이 등장하기 전에는 HTTP 프로토콜을 사용하여 인터넷 통신을 하였다. HTTP 통신이란 클라이언트가 요청을 하면 서버가 응답을 하는 반이중 통신 방식이다. 즉, HTTP는 클라이언트의 요청이 있어야만 서버가 클라이언트에게 데이터를 전달할 수 있는 구조이다. 만약 HTTP로 실시간 기능을 구현해야 한다면 어떻게 해야할까..
순환 참조 문제 해결(NestJS) NestJS 프레임워크를 공부하기 위해서 개인 프로젝트 개발에 도전하였다. 가볍게 대중적인 게시판 만들기부터 시작하였다. 이 게시판 개인 프로젝트에서 articles 모듈과, users 모듈 사이에 순환 참조 문제가 발생하여 어떻게 해결할지 고민했던 과거를 공유하고자 글을 작성하게 되었다.기존 프로젝트 모듈 구조개인 프로젝트에서 처음에는 크게 3가지 모듈을 나누어 작업을 하였다. 모듈은 다음과 같은 기능을 한다 :AuthModule : JWT 인증을 위한 모듈. 회원가입, 로그인을 담당함. 회원가입 시에 @Post('/register') 엔드포인트에서 UsersModule에 접근하여 User 객체 생성.UsersModule : 직접적으로 User 객체를 생성. Repository 디자인 패턴을 이용함.A..
Leetcode 2677. Chunk Array, slice 함수 맨날 알고리즘 문제를 파이썬 또는 자바로만 풀다가 처음 leetcode에서 자바스크립트를 통해서 풀게 되었다. 2677. Chunk Array, slice 함수 문제는 배열을 원하는 크기 만큼 분할하여 배열에 저장하는 문제인데, 처음에는 slice() 라는 함수의 존재 여부도 모르고 문제를 풀었다. 다른 사람들의 풀이를 보다가 slice() 라는 메서드의 존재 여부를 알게되었다. 따라서 이번 글에서는 이 문제의 풀이와 slice() 메서드의 작동방식을 비슷하게 구현해볼 것이다.문제문제는 여기(Leetcode 2677)에서 확인할 수 있다. 이 문제는 앞서 언급했듯이 배열을 원하는 크기 만큼 분할하여 배열에 저장하는 문제이다. 예를 들어 설명하자면 배열과 분할 할 때 원하는 크기를 다음과 같이 입력 받았다..
Database, AWS 란? NestJS 프레임워크로 웹 개발을 공부하면서 데이터베이스에 대해서 공부하기 시작했다. 이때 MongoDB, MySQL, AWS 등 갑자기 많은 용어들이 나오고, 이 프로그램에 대한 자세한 설명없이 따라만 하게 되는 수업 영상들이 많은 것 같아서, 이 것들에 대해 자세히 공부할 필요성을 느꼈다.Database란?데이터베이스는 구조화된 정보 또는 데이터의 조직화된 모음으로서 일반적으로 컴퓨터 시스템에 전자적으로 저장됩니다 데이터베이스는 일반적으로 데이터베이스 관리 시스템(DBMS)에 의해 제어됩니다. 연결된 애플리케이션과 함께 데이터와 DBMS를 하나로 묶어 데이터베이스 시스템이라고 하며 단축하여 데이터베이스라고도 합니다.오늘날 운영되고 있는 가장 일반적인 유형의 데이터베이스에서 데이터는 일반적으로 처리 ..
비동기 함수(async function), Promise 란? 자바스크립트를 공부하다 보면 비동기함수, Promise 라는 단어를 많이 들어봤을 것이다. 나는 NestJS를 공부하면서 비동기 함수를 접하게 되었는 되었는데, 이때 "백그라운드에서 실행되는 메서드" 라는 간단한 개념만 인지한채로 공부하였다.그러다가 DB에서 데이터를 요청하는 repository 파일에 코드를 작성하던 중 async existsByEmail(email: string): Promise ~ 와 같은 비동기 함수를 많이 접하게 되었다. 이때부터 비동기 함수와 이 함수를 따라다니는 Promise가 무엇인지 제대로 파악할 필요를 느꼈다.비동기란?비동기에 대해 알기 전에 "동기"의 뜻을 먼저 설명하자면, 동기란 프로그램이 직렬적으로 수행되는 과정이라고 보면 된다. 요청이 오면 요청에 대한 응답을 받..