개념 TCO (Tail Call Optimization)은 재귀 함수 호출을 최적화하기 위해 컴파일러 및 프로그래밍 언어에서 사용되는 기술입니다. 많은 프로그래밍 언어에서 함수가 다른 함수를 호출하면 호출자가 새 스택 프레임을 콜스택으로 push 합니다. 이 스택 프레임에는 로컬 변수 및 반환 주소와 같은 호출자의 상태 정보가 포함되어 있으므로 프로그램은 호출된 함수가 반환될 때 컨트롤을 반환할 위치를 알 수 있습니다. 그러나 Tail Call에서는 호출 함수의 마지막 작업이 호출을 수행하는 것이며 호출 후 추가 처리를 수행하지 않습니다. 이 경우 콜스택에 새 스택 프레임을 push 할 필요가 없으며 프로그램에서 현재 스택 프레임을 재사용할 수 있습니다. 이렇게 하면 메모리를 절약하고 Stack Over..
소개 사이드프로젝트로 개발중인 온라인 게임의 유저 정보를 기존에는 유저 로컬 환경에 파일로 보관하고 있었는데, 정식으로 출시되면 클라우드 서버에서 관리할 필요가 있기에 알아보던 중 노마드코더라는 개발자 유튜버가 소개한 Cloudflare Workers와 Notion API를 이용하여 프로토타입 수준의 데이터베이스 (이하 DB)를 구축할 수 있는 것으로 보여 직접 적용해보기로 하였습니다. 본 포스팅은 Windows 10 환경 개발자를 대상으로 소개합니다. 준비물 Node.js v12+ Visual Studio Code 노션 (Notion) 계정 Postman 작업 순서 우선, 유저 정보를 보관할 데이터베이스를 Notion으로 만들고, 만들어진 데이터베이스에 유저 데이터를 관리하는 Cloudflare Wor..
웹 앱에서 MariaDB, MySQL 등의 RDB와 통신할 때 보통 쿼리와 파라미터를 넘기는데, 사용하는 DB, 테이블, 칼럼이 많아지면 쿼리도 많아지게 되면서 나중에는 프로젝트에 쿼리 문자열로 가득차게 된다. TypeOrm 패키지는 쿼리 대신 객체와 클래스를 이용해서 DB와 통신할 수 있는 방법을 제공한다. 타입스크립트에서 기본 예제를 소개한다. 우선 프로젝트에 mysql, reflect-metadata, typeorm을 설치한다. $ npm install --save typeorm $ npm install --save reflect-metadata $ npm install --save mysql tsconfig.json 파일에 다음의 속성을 추가한다. { "compilerOptions": { "exp..
RunJS는 데스크탑에서 JavaScript 또는 TypeScript에 대한 Playground를 제공합니다. 아래 그림과 같이 소스코드를 작성하는 즉시 결과값이 우측에 표출됩니다. 다운로드는 RunJS - A playground for JavaScript and TypeScript 에서 가능합니다. 탭을 추가하거나, 테마를 변경하거나, NPM 모듈을 설치하고자 하는 경우 22,000원 가량의 라이선스를 구매해야 합니다.
목차 클래스 오버라이드 플래그 템플릿 문자열 타입 개선 ECMAScrpt #private 클래스 요소 ConstructorParameters를 추상클래스에서 사용 항상 참인 Promise 검사 Import 자동완성 편집기 지원 @link 태그 Enum과 임의의 값 비교 불가 클래스 오버라이드 플래스 부모 클래스를 상속받은 자식 클래스가 부모의 메소드를 재정의할 수 있는데, 이때 어떠한 이유로 부모 클래스의 해당 메소드가 삭제되는 경우, 자식 클래스에서는 별도의 오류를 발생시키지 않아 해당 메소드가 오버라이드된 것인지 아닌지 확인하기 어렵다. class SomeComponent{ show(){ console.log('show a1'); } hide(){ console.log('hide a1'); } } c..
const { threadId, parentPort } = require('worker_threads'); parentPort.on('message', value => { console.log('threadID: ' + threadId); console.log('parent message: ' + value); parentPort.postMessage('World'); parentPort.close(); }); @개발환경 Node v14.13.0 TypeScript v4.0.3 @사전설치 npm install --save ts-node npm install --save typescript main.ts /** * INFO: ts-node와 typescript가 설치되어 있어야 합니다. * npm inst..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.