C++로 작성된 DLL을 이용해 Callback 데이터를 node.js기반의 프로그램으로 받아오는 작업을 진행하면서 rxjs라는 모듈을 사용해보았습니다. reactive의 필수 개념인 steam을 학습해보면서 공부한 내용을 기록해두려고 합니다. Node.js Streams는 많은 데이터를 다루는 경우, 빠르고 효율적인 방법으로 데이터를 처리할 수 있게 해주는 기능입니다. 이번 글에서는 Node.js Streams의 개요, API 및 사용 예시에 대해 알아보겠습니다. 스트림 개요 Node.js Streams는 "데이터 처리를 위한 추상 인터페이스"입니다. 이는 데이터 처리의 다양한 측면을 추상화하여 처리를 단순화합니다. 스트림은 데이터의 흐름을 의미하며, 처리해야 할 데이터를 스트림으로 바꾸어 처리하면 더..
전체 글
Javascript에서 배열을 편면화하는 가장 효율적인 방법 spread operator (...)와 "reduce"를 이용하는 방법이다. let nestedArray = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];let flattenedArray = nestedArray.reduce((acc, val) => [...acc, ...val], []);console.log(flattenedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9] 예제에서 "reduce"는 배열의 누적기 "acc"와 현재 값 "val"를 가져오는 콜백 함수를 사용한다.spread operator는 "val" 의 값을 처음에는 빈 배열 []인 누적기 "acc"에 연결하는 데 사용된다.각 반복의 결과..
fp-ts? fp-ts Functional programming in TypeScript는 TypeScript의 함수형 프로그래밍을 위한 라이브러리이다. TypeScript 표준 라이브러리에 없는 일반적인 데이터 구조와 함수형 추상화 모음을 사용할 수 있도록 도와준다. fp-ts의 장점 fp-ts를 사용하는 주요 장점은 불변성, 합성, 고차 함수와 같은 함수형 프로그래밍 기술을 촉진하여 안전하고 유지 보수가 용이한 코드를 쉽게 작성할 수 있도록 해준다. 이에 더해 fp-ts는 TypeScript의 type 시스템을 활용하여 강력한 typing을 제공하고 특정 type의 런타임 오류를 방지한다. fp-ts에서 제공하는 주요 기능 부수효과 처리와 연산 체인을 위한 Monad 및 Monad Transforme..
제네릭을 이용한 Group by const groupBy = (array: T[], key: K) => { let map = new Map(); array.forEach(item => { let itemKey = item[key]; if (!map.has(itemKey)) { map.set(itemKey, array.filter(i => i[key] === item[key])); } }); return map; } 위 함수는 제네릭 T의 배열과 T의 key로 소속되어있는 K를 인자로 받는다. array를 순회하며 Map에 Key가 존재하는지 확인 후, 없다면 키를 생성하고 배열 내에 동일한 키를 가진 항목을 Map에 추가한다. const items = [ {type: "dog", name: "fred"}..
이슈 사항 로그 파일이 쌓이다가 설정 용량에 도달하게 되면 새로운 로그 파일을 만들어서 기록. 이렇게 되면 계속 로그파일이 쌓이게 됨. 오래된 로그는 보관 필요가 없기에 한 파일 내에서 로그가 쌓이고 만약 최대 용량에 도달하면 오래된 로그부터 삭제하게 log rotaion이 필요. 해결 방법 stdout_logfile_maxbytes 을 0으로 변경 - 모든 로그가 하나의 로그 파일에 보관된다. stdout_logfile_backups 을 0으로 변경 - 로그 파일이 너무 크면 별도의 파일로 이동하지 않고 오래된 로그를 삭제한다. stdout_logfile_maxbytes이 0이면 max size가 없다고 생각할 수 있지만 기본값은 50MB로 설정 되어있다고 한다. 참고 Supervisord log fi..
이동 키 기능 w 단어 첫 글자 기준으로 다음으로 이동 W 공백 기준으로 다음(단어의 시작)으로 이동 b 단어 첫 글자 기준으로 이전으로 이동 B 공백 기준으로 이전으로 이동 e 단어 마지막 글자 기준으로 다음으로 이동 E 공백 기준으로 다음(단어의 끝)으로 이동 gg 문서 맨 앞으로 이동 G 문서 맨 아래로 이동 ^ 문장 맨 앞으로 이동 $ 문장 맨 뒤로 이동 찾기 /단어 - 문서에서 단어 찾기 n이나 N으로 다음/이전 찾기 * - 현재 단어를 포워드 방향으로 찾기 # - 현재 단어를 백워드 방향으로 찾기 삽입 키 기능 i 커서 위치에 Insert I 줄 맨 앞에서 Insert a 커서 다음에 Insert A 줄 맨 뒤에서 Insert o 커서 아래로 한 줄 띄우고 Insert O 커서 위로 한 줄 띄..