목록Nodejs (25)
만족
자바스크립트로 코딩 테스트를 볼 때 반드시 알아야 하는 String 관련 함수에 대해 알아보자 String.prototype.substring str.substring(indexStart[, indexEnd]) string에서 indexStart 부터 indexEnd-1까지를 포함하는 새로운 문자열을 반환한다. (indexEnd -1까지라는 점을 명심하자. indexEnd에 해당하는 문자는 포함되지 않는다) const str = 'Mozilla'; console.log(str.substring(1, 3)); // expected output: "oz" String.prototype.split str.split([separator[, limit]]) string을 separator를 기준으로 잘라 arra..
자바스크립트로 코딩 테스트를 볼 때 반드시 알아야 Array 관련 함수에 대해 알아보자 Array.prototype.forEach arr.forEach(callback(currentvalue[, index[, array]])[, thisArg]) 배열의 각 원소에 대해 callback 함수를 호출한다. (callback함수의 매개변수: (현재 요소 값, 현재 인덱스 번호, 원본 배열)) const array1 = ['a', 'b', 'c']; array1.forEach(element => console.log(element)); // expected output: "a" // expected output: "b" // expected output: "c" 간편하지만, 반복 중간에 중지하고 싶어도 그럴 수..
mysql 모듈을 사용하던 중 발생한 오류이다. 동일한 코드였으나 어느 순간 갑자기 이 오류가 발생하기 시작했는데, 문제는 AFTER_FATAL_ERROR이라면서 이전에 오류는 찍히지도 않았다. 모듈 버전이나 노드의 버전이 바뀌면서 뭔가 변경점이 생긴 것 같다. 원인 메시지 원인처럼 쿼리 실행 전 커넥션에 무언가 치명적인 오류가 생긴 경우이다. 찾아보니 커넥션이 이루어진 후 일정 시간동안 쿼리가 발송되지 않으면 자동으로 커넥션이 종료된다고 한다. 커넥션이 끊긴 후 쿼리를 보내려고 하니, 위와 같은 오류가 발생하는 것이다. 해결법 커넥션이 끊기지 않게 하기 위해 코드블럭을 다음과 같이 변경한다 const preventClosingConnection= ()=>{ database.query('SELECT 1'..
해당 오류를 검색해 본 결과 원인은 통신 중 어느 한 쪽의 커넥션이 끊겼을 때 발생한다고 한다. 상대 서버를 조사해 본 결과 상대측에서 끊은 것은 아니라 좀 더 찾아보니, 내 서버에서 병렬적으로 네트워크 요청을 할때 그 갯수가 한계치를 넘어서면 더 이상 요청을 발송하지 못하고 뻗어버린다고 한다. const axios = require("axios"); axios.default.timeout = 5 * 1000; 커넥션을 하는 부분을 찾아 우선 timeout 값을 지정해 줘서 일정 시간이 지나도록 상대 서버가 응답하지 않으면 이쪽에서 먼저 커넥션을 끊어버리게 만든다. 나는 axios를 사용중이라 위 방법대로 지정했고, 다른 http request module을 사용할 경우 해당 문서를 읽고 타임아웃 최대 ..
매우 큰 javascript array를 파일로 저장하던 중 out-of-heap 오류가 뜨면서 프로그램이 정지되어서 힙 메모리에 충분한 값을 주고 실행했더니 이번엔 RangeError: Invalid string length 오류가 뜬다. 원인은, js엔진에서 객체 사이즈에 제한을 두고 있다고 한다. array를 JSON.stringify()하는 과정에서 생겨난 string 크기가 해당 사이즈를 넘어버린 것이다. 해결법은 해당 객체를 작은 사이즈로 나누거나 스트림을 이용해 잘게 쪼개어 파싱하면 된다. 참고: https://ohgyun.com/782 Node: String 크기 제한에 의한 RangeError 발생일: 2018.10.22 키워드: JSON.stringify, RangeError, Inva..
Nodejs로 크롤러를 만들던 중, 수집한 정보를 file로 저장하던 중에 해당 오류가 발생했다. 원인은 Nodejs의 기본 힙 메모리는 512MB라서 프로그램이 돌다가도 해당 사이즈를 넘어버리면 해당 오류가 출력되면서 프로그램이 강제 종료된다. 해결법은 간단히 실행 시 옵션에 --max-old-space-size=[SIZE] 를 주면 된다. 가령 내 프로그램을 돌리는데 1GB가 필요하다면 커맨드라인에 다음과 같이 입력하면 된다 node --max-old-space-size=1024 index.js
js는 다른 언어들과는 다르게 동작하는 연산들이 많이 있다. 오죽하면 이런 밈이 유행할 정도인데... 이번 포스트에서 다룰 것은 AND연산자와 OR연산자다. 불 연산 컴퓨터나 이공계를 전공했다면 '불 대수'에 대해 들어본 적이 있을 것이다. 불 대수에서, A AND B (A와 B는 참이거나 거짓)의 결과값은 항상 참이거나 거짓이다. 마찬가지로, C나 JAVA같은 강타입 언어에서 불 연산을 진행하면 값 역시 반드시 boolean 값으로 나오게 된다. 그런데 js에서의 논리 연산의 결과값은 boolean 값을 가질 수도 있지만, 다른 값을 가질 수도 있다. const test= "first" && "second"; console.log(typeof test === 'boolean'); //false 분명 &..
두 개념 모두 비동기적인 작업을 좀더 직관적이고 편리하게 진행하기 위해 탄생한 개념이다. 아주아주 빠르게 실전압축으로다가 알아보자. Promise는 무엇인가? es6에서 처음 등장한 개념이다. Promise는 pending(작동 중), fulfilled(성공적으로 완료), reject(실패)의 세 상태를 가진다. 미리 정의된 상태를 통해 비동기적인 작업을 쉽게 다룰 수 있다. new Promise((resolve, reject)=>{ //... }); 와 같이 선언한다. (resolve, reject)=>{ ... } 에는 프로미스로 진행할 작업 내용을 정의하고, 성공 시 resolve( [전달하고싶은 값] ); 을 호출하고, reject( [전달하고 싶은 값;주로 에러 정보] )를 호출한다. resol..