본문 바로가기

javascript

(72)
[javascript] 호이스팅, var, let, const 과거에는 let, const가 존재하지 않았기 때문에 var을 주로 사용함. 호이스팅 자바스크립트에서 변수 또는 함수를 스코프 내 최상위로 이동한 것처럼 동작하는 특성. 용어 자체는 ECMAScript 사양에 등장한 적이 없지만, 실제로는 자신이 속한 스코프의 최상단으로 이동하는 특성을 가지고 있으므로 호이스팅이라는 표현을 사용하여 설명한다고 한다. 호이스팅에 의해 선언 전에 사용한 경우는 자바스크립트 내에서 2가지 경우만 해당한다. var 함수 표현식(function expression) var apple = 'this is apple'; v(); console.log(apple); e(); function v() { apple = 'inner apple'; console.log(apple); cons..
[React-Quill] 에디터 영역 스크롤 바 만들기 react-quill 을 통해 에디터를 그대로 띄워보면 다음과 같다. 기본 설정에서도 글을 작성하는데는 문제가 없지만, 에디터 영역이 너무 작다는 점은 불편하게 느껴진다. 특히 해당 영역은 기본적으로 스크롤 기반으로 동작하지 않기 때문에 글을 길게 작성함에 따라 에디터 영역이 계속 증가한다. 티스토리 블로그 글쓰기처럼 에디터 영역이 계속 확장되어도 상관 없다면 이 동작 그대로 사용해도 되지만, 나는 에디터 글쓰기 란이 어느 정도 초기 공간을 가지고 있고, 그 이상은 스크롤 형식으로 동작하기를 원하기 때문에 이 동작을 변경해야 한다. Quill 공식문서에서는 scollingController 옵션을 통해 스크롤 대상을 변경할 수 있다고 설명하고 있다. https://quilljs.com/docs/confi..
[typescript] structural typing https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html#structural-type-system https://eclipse.dev/n4js/features/nominal-and-structural-typing.html nominal typing 타입의 이름을 기준으로 타입을 구분하는 방식. 두 유형의 이름이 동일하면 동일한 것으로 간주하며, 타입 T1이 T2의 서브타입으로 간주되기 위해서는 반드시 extends와 같은 구문을 이용하여 명시적으로 서브타입임을 선언해야 한다. 위 특성에 의해 nominal typing을 채택하는 언어에서는 내부 속성 및 메서드를 동일하게 가지고 있더라도 클래스의 이름이 다르면 다른 것으로 간주되며..
[jest] 동일 파일 내의 함수 mocking하기 코드 깃허브 주소: https://github.com/blaxsior/my_nest_study/tree/master/capp/src/auth/util 참고한 내용: https://stackoverflow.com/questions/45111198/how-to-mock-functions-in-the-same-module-using-jest export async function genHash(user_pass: string, salt: string) { return (await pbkdf2(user_pass, salt, 100000, 64, 'sha512')).toString('hex'); } export async function generatePassword(user_pass: string) { cons..
[nodejs] thread pool 참고 자료 유튜브 채널: https://www.youtube.com/watch?v=3JYNNf3Iljo libuv, nodejs 공식 문서 및 깃허브 node의 이벤트 루프가 싱글 스레드 기반으로 동작하기는 하지만, 내부적으로 들어가면 시간이 오래 걸리는 특정 작업(File I/O, DNS 등)의 경우 libuv 라이브러리가 제공하는 스레드 풀을 이용하여 처리한다. https://docs.libuv.org/en/v1.x/threadpool.html#threadpool libuv에서 스레드 개수는 UV_THREADPOOL_SIZE 환경 변수로 나타나며 기본 값은 4이다. 이 값은 변경할 수 있으며, 최대 1024의 값을 가질 수 있다. 병렬성 수준 nodejs는 os 모듈의 cpus().length 또는 ..
[nodejs] libuv 이미지 출처: https://docs.libuv.org/en/v1.x/index.html 도움: chatgpt, stackoverflow 등. chatgpt는 부정확한 내용이 조금 있어서 구글링 도움을 많이 받음. 노드는 비동기 + 이벤트 기반 모델을 기반으로 작동한다. 일반적으로 single thread, non-blocking I/O, event loop를 노드의 특징으로 설명하는데, 이러한 핵심 동작 원리는 내부적으로 C언어 기반으로 작성된 libuv가 수행한다. libuv libuv는 Node.js의 이벤트 기반 비동기 I/O 모델을 지원하기 위해 작성된 크로스 플랫폼 라이브러리로, 노드는 내부적으로 시간이 오래 걸리는 작업(File I/O, DNS 연산 등)을 libuv에 위임하여 처리한다. 해..
[nestjs] DI token https://docs.nestjs.com/fundamentals/custom-providers#non-class-based-provider-tokens Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Re..
[nodejs] esbuild 전체 폴더 감시하기 https://esbuild.github.io/ esbuild - An extremely fast bundler for the web esbuild An extremely fast bundler for the web Above: the time to do a production bundle of 10 copies of the three.js library from scratch using default settings, including minification and source maps. More info here. Our current build tools for the web ar esbuild.github.io esbuild는 많은 번들링 툴(여러 코드 베이스를 하나로 뭉치기) 중 하나로, 공식 ..