노드3 [TypeScript] Decorator를 이용한 코드 변경 class TestClass { test() { console.log('test!'); } } 위와 같은 클래스가 존재할 때, test() 메소드를 실행시키면 test! 가 터미널에 찍힐 것이다. 이를 test? 로 출력하기 위해 데코레이터로 코드를 바꾸어 실행 결과를 바꿀 수 있다. function Test(target: any, key: string, descriptor: PropertyDescriptor) { const stringified = String(descriptor.value); const matches = stringified.match(/\{([^}]+)\}/); const extracted = matches[1].replace('!', '?'); const execute = new .. 2023. 11. 7. [Node] NPM 라이브러리 4개를 개발하며 최근에 NPM 라이브러리를 4개 만들었고, 계속 개발하고 있다. 어렸을 적, 피아노를 좋아했는데 어느 날 죽기전에 이 세상에 나의 작품을 하나 남겨야하지 않겠나라는 생각을 들었다. 그래서 음악을 3곡 정도 작곡을 했었고, 네이버 블로그에 올리기 위해 작곡프로그램까지 배워 midi 파일을 만들고 가상악기를 씌워 음원으로까지 만들었다. 맨 처음엔 단순히 한 번 만든 코드를 나중에 다시 활용하기 위해, 팀원과 공유하기 위해 라이브러리를 제작하기 시작했다. 그 라이브러리가 File Dispatcher이다. 그런데 만들다보니 구현하려는 기능이 단순 Node의 기본 기능만으로는 불가능했다. 그래서 방법을 찾아보았는데, 여기서부터 라이브러리를 만드는 과정에 희열을 느끼게 되었다. 이 때 찾은 방법은 네이티브 애드온이.. 2023. 8. 14. [Node] native addon과 워커 스레드 요약: 네이티브 애드온은 여러 스레드에서 동시 사용이 불가능하다. Error: Module did not self-register 스택 오버 플로우에서도 정답이 없고, 한글로 검색하면 비슷한 것도 안나왔다.깃헙 이슈에도 딱히 답이 없었다.단, 한가지 공통점은 대부분 워커 스레드와 연관해서 네이티브 애드온을 사용하려고 할 때 발생했다. 상황은 c++로 애드온 모듈을 만들고 컴파일 해서 .node 파일로 만든 뒤 이걸 워커 스레드에서 가져다 쓰는 식이었다.동시성 문제도 고려해야하고 단순히 노드의 내장 기능으로는 구현할 수 없는 기능이 있어서 .node로 함수를 하나 만들었는데, 두 워커 스레드에서 이 파일에 접근하려고 할 때 `Error: Module did not self-register`에러가 발생했다.. 2023. 7. 2. 이전 1 다음 728x90