본문 바로가기

전체 글

(11)
[NestJS] require() of ES Module(CommonJS 와 ESM 이야기) 개요 Nest.js에서 외부 라이브러리를 이용하고자 할때 NPM과 같은 패키지 매니저를 이용해서 외부 라이브러리을 관리한다. 외부 라이브러리의 버전에 따라서, 지원하는 표준에 따라서 여러 오류를 맞이하게 된다. TypeScript까지 잘 지원하는 라이브러리가 많아지길 기원하며, 이 포스트를 작성해본다. 배경지식 ECMAScript JavaScript의 기반이 되는 표준이다. 즉, JavaScript는 ECMAScript의 사양을 준수하는 범용 스크립팅용 언어인 것이다. CommonJS & ESM CommonJS JavaScript의 역사는 정적인 HTML을 동적으로 표현하기 위해서 만들어졌다. 그러다보니 웹 브라우저에 탑재되었고, HTML 문서상에서 작성을 하다 보니, 모듈이라는 개념이 없었다. 그러나 ..
[CPU] 멀티코어 이야기 개요 대부분 학사레벨에서 CPU를 배우면, 싱글코어를 기반으로 배우거나, 공부하게된다. 멀티코어는 간단하게 넘어가거나, 정확하게 모르고 넘어가는 경우도 많다. 최근에 여러 발표를 보면서, CPU 구조도와 코드와 설명이 서로 매칭이 안되는 발표를 듣게 되었다. 이 원인을 싱글코어와 멀티코어의 차이점을 잘 모르다보니, 그리고 현재의 CPU들에 대해서 잘 모르다보니 발생한 문제라고 판단하였다. 문제는 이 설명이 틀렸다는 것을 눈치챘지만, 나라면 정확히 발표 할 수 있을까?, "현재 사용하는 CPU들은 어떤식으로 동작하는데?" 라는 의문이 생겨 정리해본다. 배경지식 클럭(Clock) 디지털 회로에서 프로세서가 처리하는 명령 하나는 여러 마디로 구분되어지고, 이를 state라고 부른다. 기계어 명령어를 처리하기 ..
[Sort] 프로그래밍 언어들의 sort 함수에 대한 user-defined function에 대한 이야기 개요 요즘 언어들은 정렬 함수 정도는 기본적으로 제공하고 있다.대부분 정렬에 대해서 이해하기 시작하는 단계는 코딩 테스트가 아닐까 싶다. 문제마다 정렬 함수가 굳이 있는데, 매 경우마다 새로운 함수를 만들 필요는 없다. sort 함수들은 대부분 compare 혹은 key 등의 이름들로 사용자 정의 함수를 이용하여, 정렬할 수 있도록 도와준다. 개념을 알고 있다가도, 복잡한 정렬이 필요할때마다 기억이 잘 안나서 정리 해 둔다. 사용자 정의 함수(user-defined function, customize function) 대부분의 언어에서 sort함수가 사용하는 사용자 정의 함수는 true, false 혹은 0 등의 값을 return 하도록 설계한다. c void qsort (void* b..