반응형

typeScript 8

TCO (Tail Call Optimization) 개념 및 예제

개념 TCO (Tail Call Optimization)은 재귀 함수 호출을 최적화하기 위해 컴파일러 및 프로그래밍 언어에서 사용되는 기술입니다. 많은 프로그래밍 언어에서 함수가 다른 함수를 호출하면 호출자가 새 스택 프레임을 콜스택으로 push 합니다. 이 스택 프레임에는 로컬 변수 및 반환 주소와 같은 호출자의 상태 정보가 포함되어 있으므로 프로그램은 호출된 함수가 반환될 때 컨트롤을 반환할 위치를 알 수 있습니다. 그러나 Tail Call에서는 호출 함수의 마지막 작업이 호출을 수행하는 것이며 호출 후 추가 처리를 수행하지 않습니다. 이 경우 콜스택에 새 스택 프레임을 push 할 필요가 없으며 프로그램에서 현재 스택 프레임을 재사용할 수 있습니다. 이렇게 하면 메모리를 절약하고 Stack Over..

Cloudflare Workers와 Notion API로 유저 데이터 관리하기

소개 사이드프로젝트로 개발중인 온라인 게임의 유저 정보를 기존에는 유저 로컬 환경에 파일로 보관하고 있었는데, 정식으로 출시되면 클라우드 서버에서 관리할 필요가 있기에 알아보던 중 노마드코더라는 개발자 유튜버가 소개한 Cloudflare Workers와 Notion API를 이용하여 프로토타입 수준의 데이터베이스 (이하 DB)를 구축할 수 있는 것으로 보여 직접 적용해보기로 하였습니다. 본 포스팅은 Windows 10 환경 개발자를 대상으로 소개합니다. 준비물 Node.js v12+ Visual Studio Code 노션 (Notion) 계정 Postman 작업 순서 우선, 유저 정보를 보관할 데이터베이스를 Notion으로 만들고, 만들어진 데이터베이스에 유저 데이터를 관리하는 Cloudflare Wor..

쿼리 대신 TypeOrm으로 DB 통신하기 (샘플)

웹 앱에서 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..

데스크탑에서 JS 또는 TS Playground 앱 (RunJS)

RunJS는 데스크탑에서 JavaScript 또는 TypeScript에 대한 Playground를 제공합니다. 아래 그림과 같이 소스코드를 작성하는 즉시 결과값이 우측에 표출됩니다. 다운로드는 RunJS - A playground for JavaScript and TypeScript 에서 가능합니다. 탭을 추가하거나, 테마를 변경하거나, NPM 모듈을 설치하고자 하는 경우 22,000원 가량의 라이선스를 구매해야 합니다.

TypeScript 4.3 신기능 정리

목차 클래스 오버라이드 플래그 템플릿 문자열 타입 개선 ECMAScrpt #private 클래스 요소 ConstructorParameters를 추상클래스에서 사용 항상 참인 Promise 검사 Import 자동완성 편집기 지원 @link 태그 Enum과 임의의 값 비교 불가 클래스 오버라이드 플래스 부모 클래스를 상속받은 자식 클래스가 부모의 메소드를 재정의할 수 있는데, 이때 어떠한 이유로 부모 클래스의 해당 메소드가 삭제되는 경우, 자식 클래스에서는 별도의 오류를 발생시키지 않아 해당 메소드가 오버라이드된 것인지 아닌지 확인하기 어렵다. class SomeComponent{ show(){ console.log('show a1'); } hide(){ console.log('hide a1'); } } c..

타입스크립트에서 worker_threads 사용 기본 예제

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..

컴퓨터 공학 2021.02.23

타입스크립트 Logger 클래스 작성

[원본]에서 보시는게 더 깔끔합니다. www.notion.so/logger-5955a78345c44fb4886c88c00000bba8 [개발환경] 운영체제: 윈도우 10 Pro 64비트 빌드버전: 1903 CPU: Intel(R) Core(TM) i7-7700 램: 32GB Node.js 버전: v12.18.2 TypeScript 버전: 3.9.5 winston 버전: 3.3.3 [tsconfig.json] { "compilerOptions": { "target": "ES2019", "module": "commonjs", "noImplicitAny": false, "skipLibCheck": true, "forceConsistentCasingInFileNames": true } } 이 중에서 특히 "no..

VS Code 주요 확장 소개

Auto Rename Tag 하나의 태그를 수정하면 짝이 되는 태그도 동시에 수정된다. Bracket Pair Colorizer 2 괄호 쌍들이 서로 같은 색상으로 보이도록 설정한다. BetterComments 주석을 조금 더 보기 좋게 만들어 준다. 주석 앞에 *(중요), !(경고), ?(물음), TODO(할일), @param(파라미터) 등을 입력할 수 있다. 함수를 생성한 후에 /**/을 입력하고 엔터를 누르면 파라미터가 자동으로 생성된다. ESLint 자바스크립트 용 Linter Linter는 소스코드를 분석해 정해진 규칙을 체크한다. 설정방법 확장에서 eslint 설치 터미널에서 npm install -g eslint 입력 터미널에서 npm init 입력 터미널에서 eslint --init 입력 ..

반응형