Javascript/Typescript
3 posts
Node.js 이벤트 루프(Event Loop) 샅샅이 분석하기

글에 들어가기에 앞서 Node.js의 이벤트 루프의 경우 공식 문서에 설명이 부족하고 이에 따라 여러 사람들이 각자 나름대로 분석한 글이 많아 무엇이 이벤트 루프의 정확한 동작인지 알기 힘듭니다. 혼자 이벤트 루프를 공부해보면서 여러 글들, 공식 문서, 그리고 Node.js의 소스 코드를 참고하면서 내용들을 정리해놓았지만 여전히 이 글에도 틀린 내용이 존재할 수 있습니다. 만약 그런 부분이 보인다면 댓글로 달아주시면 감사하겠습니다. Node.js Event Loop 흔히 Node.js를 싱글 스레드 논 블로킹이라고 한다. Node.js는 하나의 스레드로 동작하지만 I/O 작업이 발생한 경우 이를 비동기적으로 처리할 수 있다. 분명 하나의 스레드는 하나의 실행 흐름만을 가지고 있고 파일 읽기와 같이 기다려야 하는 작업을 실행하면 그 작업이 끝나기 전에는 아무것도 할 수 없어야만 한다. 그러나 Node.js는 하나의 스레드만으로 여러 비동기 작업들을 블로킹 없이 수행할 수 있고 그 …

October 12, 2021
Javascript/Typescript
delete 대신 구조 분해 할당을 사용해서 프로퍼티 지우기

프로퍼티 지우기 우리는 보통 delete 키워드를 사용해서 오브젝트의 프로퍼티를 지운다. delete의 문제는 이 동작이 객체를 수정한다는 것이다. 즉, 원본 객체를 바꿔버리며 이는 원하지 않는 사이드 이펙트가 생길 수도 있다. 우리에게 익숙한 delete 대신 구조 분해 할당을 사용하면 같은 효과를 얻으면서도 부작용을 막을 수 있다. 구조 분해 할당 구조 분해 할당은 우리가 변수를 선언할 때 사용할 수 있는 일종의 Syntatic Sugar다. 일반적으로 아래와 같이 사용한다. 자세한 설명은 여기를 참고하자. 이 구조 분해 할당이 rest parameter와 함께 사용되면 아래와 같은 동작이 가능하다. ... 연산자는 우리가 원하는 값을 제외하고 남은 값들을 얻어내는데 사용될 수 있다. 다르게 말하면, 우리가 원하는 값을 제외한 객체를 얻어낼 수 있다. 웹 사이트에 사용자 정보를 보여주기 위해서 user 객체를 반환해야 된다고 생각해보자. 당연히 우리는 password 프로퍼티를…

August 27, 2021
Javascript/Typescript
ERESOLVE unable to resolve dependency tree 해결하기

상황 블로그를 만들기 위해 Gatsby Starter 메뉴얼에 따라서 아래 명령어를 실행했다. 공식 문서에서 제공하는 설치 방법임에도 불구하고 아래와 같은 오류가 발생했다. 자세히 오류를 살펴보면 아래와 같이 해석할 수 있다. @tryghost/helpers-gatsby@1.0.56 모듈을 설치하던 중 react@"^16.9.0" 에 의존하는 것을 발견했다. 그러나 root project에서 발견된 react는 17.0.2 버전이라 react@"^16.9.0" 의존성을 해결하지 못했다. 그 아래에 해결책 또한 제공하고 있다. npm install 할 때 --force 또는 --legacy-peer-deps와 함께 실행하라는 것이다. 즉, npm install --legacy-peer-deps 를 실행하면 위 의존성 문제를 해결할 수 있다. npm의 의존성 관리 조금 더 자세한 설명은 아래와 같다. npm은 아래 5가지 종류의 의존성을 제공하고 있다. dependencies 프로젝트…

August 26, 2021
Javascript/Typescript