반응형

node.js 13

pkg 모듈 실행 시 "(0, assert_1.default)(!this.bar)" 에러 발생하는 경우

발생문제 Node.js를 v14에서 v16으로 버전업 후 pkg 모듈을 통해 실행파일을 생성하려고 하면 아래와 같은 에러가 발생할 수 있습니다. > pkg@5.7.0 > Fetching base Node.js binaries to PKG_CACHE_PATH fetched-v16.15.0-win-x64 [ ] 0%> Not found in remote cache: {"tag":"v3.4","name":"node-v16.15.0-win-x64"} > Building base binary from source: built-v16.15.0-win-x64 > Fetching Node.js source archive from nodejs.org... > Error! AssertionError [ERR_ASSERTI..

JavaScript로 interface 모사하기

소개 JavaScript에는 class만 존재하고, interface가 없습니다. 따라서, interface를 이용한 아키텍처를 불완전하게 적용할 수 밖에 없습니다. class만으로 interface와 비슷한 기능을 하도록 모사하는 방법을 제안합니다. Step 1. interface base 생성 프로젝트에서 소스 폴더 내에 interfaces 폴더를 생성하고, 그 안에 base.interface.js 파일을 만들어 다음과 같이 작성합니다. /** * 인터페이스 정의 헬퍼 함수 * * @template T * @param {T} newInterface * @returns {T} */ function defineInterface(newInterface){ const NOT_IMPLEMENTED = "thr..

Node.js - async_hooks 소개

프롤로그 클라이언트-서버 모델에서 클라이언트는 서버에게 다양한 요청을 보냅니다. 일반적으로 서버는 클라이언트의 요청 정보를 식별하기 위해 클라이언트가 적재하는 헤더의 식별 정보를 사용합니다. 예를 들어, HTTP 통신에서 클라이언트는 헤더 ‘[x-request-id]’에 요청 고유 식별자를 적재하여 서버에 보냅니다. 일반적으로 서버는 여러 클라이언트가 보내는 동시다발적인 요청을 시간 순서에 따라 로그에 기록합니다. 이때, 서버는 각 요청에서 발생한 로그에 헤더 ‘x-request-id’를 함께 기록해두는데, 이는 나중에 특정 요청에 대한 로그 내역을 찾기 위해 요청의 고유 식별자인 ‘x-request-id’로 필터링을 걸면 해당 요청 로그만 손쉽게 열람할 수 있습니다. async_hooks가 생긴 이유 ..

윈도우에서 NVM 설치 및 사용하기

NVM (Node Version Manager) Node.js의 여러 버전을 직접 다운로드 및 설치할 필요없이 터미널에서 명령어만 입력하여 손쉽게 버전을 변경할 수 있도록 지원하는 서비스입니다. 오리지널 nvm은 오직 Mac과 리눅스 전용으로 만들어졌습니다. 그렇기 때문에 윈도우 사용자는 NVM 서비스를 사용할 수 없었습니다. 하지만, 윈도우 사용자를 위한 NVM이 제공되면서 이제 윈도우에서도 사용할 수 있습니다. NVM for Windows 다운로드 https://github.com/coreybutler/nvm-windows/ GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically writ..

심플 웹 서버 언어 별 성능 비교 (Go, Rust, Node.js)

테스트 환경 이름 설명 CPU AMD Ryzen 7 1700 Memory DDR4 32GB 테스트 툴 autocannon autocannon Fast HTTP benchmarking tool written in Node.js www.npmjs.com 옵션 동시요청 : 2500 요청시간 : 30초 파이프라이닝 : 4 > autocannon -c 2500 -d 30 -p 4 127.0.0.1:8081 테스트 대상 (Node.js) express (Node.js) hyper-express Go Rust 테스트 방법 각 웹서버는 '/' path 만 구현되어 있으며, 요청 수신 시 Hello를 응답한다. 각 웹 서버 별 30초 동안 요청 처리 개수를 측정한다. 결과 예상대로, express가 가장 낮은 성능을 보..

Node.js에서 기본 정렬 / 합병정렬 / 퀵정렬 속도 비교

실험환경 값의 범위 : 0~1억 데이터 개수 : 천만개 ~ 3천만개 반복횟수 : 3회 Note : 합병정렬은 기본 배열의 두배 크기로 메모리 공간을 사용합니다. 실험결과 1000만 1500만 2000만 2500만 3000만 기본정렬 4.16초 6.845초 9.142초 11.421초 14.021초 합병정렬 2.632초 3.881초 5.225초 6.589초 8.358초 퀵정렬 2.129초 3.172초 4.261초 5.487초 6.557초 /** INFO: 파라미터 만큼 배열을 생성하고 랜덤값 입력 */ function generateRandomArray(numData){ let arr = new Array(numData).fill(0); for(let i=0;i= high){ //INFO: 한개밖에 없으면 ..

Node.js 이벤트 루프 정리

[용어정의] REPL (Read-Eval-Print Loop) : 단일 사용자의 입력을 취하고 이를 평가 (실행)하고 결과를 사용자에게 반환시키는 단순한 상호작용 컴퓨터 프로그래밍 환경을 말한다. (예: 주피터 노트북) Polling : IT에서 클라이언트가 서버에게 주기적으로 요청을 보내는 방식을 말한다. [개요] 이벤트 루프가 각 단계에 진입하면 해당 단계에 한정된 작업을 수행하고 큐를 모두 소진하거나 콜백의 최대 개수를 실행하면 다음 단계로 넘어간다. [이벤트 루프 단계 요약] 타이머 (timers) : setTimeout()과 setInterval()로 스케줄링한 콜백을 실행한다. 대기콜백 (pending callbacks) : 다음 루프 반복으로 연기된 I/O 콜백들을 실행한다. 준비 (idle..

이미지 대표 색상 추출 프로그램 개발

회사 업무 중 썸네일 정도의 이미지 데이터가 주어졌을 때, 해당 이미지의 대표 색상과 그 확률을 추출하는 기능이 필요해서 Node.js를 이용하여 해당 앱을 작성해보았습니다. 사용자는 앱 실행 시 이미지 파일 경로를 전달해주면 앱은 이미지를 분석하여 대표 색상과 그 확률을 반환합니다. 아래 이미지는 "car03.png" 이미지 파일입니다. 아래와 같이 입력하면 결과는 GREEN에 확률은 34%로 출력됩니다. 색상은 총 일곱 가지로 구성됩니다. RED YELLOW GREEN BLUE PURPLE WHITE BLACK 관련 소스코드는 Github를 참조하시면 됩니다.

컴퓨터 공학 2021.02.23

값에 따른 isNaN() 결과 정리

undefined 타입undefined ⇒ trueobject 타입null ⇒ false{} ⇒ truenumber 타입1 ⇒ falseNaN ⇒ truenew Date() ⇒ falsestring 타입'37' ⇒ false ('37'은 숫자 37로 변환됨'37.37.' ⇒ false ('37.37'은 숫자 37.37로 변환됨'123abc' ⇒ true'' ⇒ false (빈 문자열은 0으로 변환됨)' ' ⇒ false (공백이 있는 문자열은 0으로 변환됨)new Date().toString() ⇒ trueboolean 타입true ⇒ falsefalse ⇒ false

데이터 타입에 따른 Boolean 형변환 결과 정리

undefined 타입 undefined ⇒ false object 타입 null ⇒ false {} ⇒ true string 타입 '' ⇒ false (문자열 값이 하나라도 없으면 false) 'a' ⇒ true (문자열 값이 하나라도 있으면 true) number 타입 0 ⇒ false 1 ⇒ true -1 ⇒ true NaN ⇒ false (0과 같지 않음) boolean 타입 true ⇒ true false ⇒ false 특이사항 null 값을 가진 변수의 타입을 조회해보면 항상 object 타입임. 이에 따라, null은 object 타입에서만 사용된다고 볼 수 있음

반응형