Programming64 [프로그래밍 이론] 비동기적으로 초기화되는 모듈 다루기 비동기적으로 초기화되는 모듈 다루기동기식 초기화를 지원하지 않는 모듈을 깔끔하게 비동기식으로 다루고 제공하는 몇가지 원리에 대해 알아보자.작성환경예시 코드는 Javascript ES6로 작성되었으나 개념적으로는 언어와 무관한 내용을 다룹니다.동기식 초기화의 문제우리가 개발하면서 접하는 많은 모듈(라이브러리)은 사용 전에 초기화를 필요로 한다. (특히 네트워크 연결이 필요한 모듈 & 미들웨어)이 때 초기화 방식은 동기식과 비동기식으로 나뉜다. 비동기를 다루기 전에 동기식 초기화의 특징을 먼저 살펴보자.동기식 초기화의 장점사용하기 편리하고 간단함초기화되기 이전에 모듈의 기능이 호출되는 상황을 고려하지 않아도 됨 (재초기화가 필요한 상황 고려 X)동기식 초기화의 단점많은 모듈을 동기식으로 초기화하면 프로그램이.. 2025. 3. 3. [Node.js] Event Loop와 non-blocking I/O 실행 과정 Event Loop와 non-blocking I/O 실행 과정Node.js가 Single Thread 임에도 어떻게 non-blocking I/O를 처리하는지 알아보자사전 지식스레드 스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으ko.wikipedia.org 콜백 콜백 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 프로그래밍에서 콜백(callback) 또는 콜백 함수(callback function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 .. 2024. 7. 4. [Javascript] V8 Engine이 string과 number 값을 다루는 방법 V8 Engine이 string과 number 값을 다루는 방법V8 Engine이 자바스크립트의 문자열, 숫자 데이터의 메모리 최적화를 수행하는 방법에 대해 알아보자사전 지식V8 Engine Node.js — The V8 JavaScript EngineNode.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.nodejs.orgConstant pool를 통한 메모리 절약V8 Engine에서는 JS 코드의 런타임 최적화 및 빠른 실행을 위해 다양한 최적화 기법을 사용한다. 그 기능중 하나인 constant pool은 런타임 동안 변하지 않는 상수(bytecode에서 상수로 참조되는 heap 객체)들의 집합을 저장하는 구조이다. V8 En.. 2024. 6. 28. [Typescript] Module 절대경로 설정 방법 Module 절대경로 설정 방법 타입스크립트 프로젝트에서 소스코드 관리를 위한 절대경로 설정 방법을 알아보자. 절대경로를 사용하는 이유 타입스크립트 프로젝트는 기본적으로 상대경로를 통해 module을 import 하도록 되어있는데 프로젝트나 소스파일의 규모가 커지면 자연스럽게 import 구문도 늘어나면서 소스코드가 더러워질 수 있다. ../으로 도배된 import 구문으로 인해 가독성 저하 소스파일 이동 시 상대경로 변경으로 인한 사이드이펙트 등의 문제가 발생한다. 상대경로 대신에 절대경로를 적용하면 위 문제를 해결할 수 있다. 절대경로 설정 절대경로를 적용하려면 tsconfig.json를 수정해야한다. // tsconfig.json { "compilerOptions": { "baseUrl": ".",.. 2024. 3. 14. [Typescript] Typescript와 OOP 언어의 Function Overloading 비교 Typescript와 OOP 언어의 Function Overloading 비교 타입스크립트와 객체지향 언어의 함수 오버로드의 차이점에 대해 알아보자 사전 지식 함수 오버로드 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 함수 오버로드(영어: Function overloading)는 다양한 에이다(Ada), C#, C++, 자바(Java) 등의 다양한 프로그래밍 언어에서 사용되는 함수의 특징으로, 같은 함수 이름을 가 ko.wikipedia.org Typescript와 OOP 언어의 함수 오버로드 정의 방법과 차이점 스타크래프트 오버로드 프로그래밍 언어들은 다형성을 만족시키기 위해 함수 오버로드를 지원한다. 그러나 타입스크립트에서는 일반적인 객체지향 언어에서의 함수 오버로드와 다른 .. 2024. 3. 7. [Python] Python 라이브러리 패키지를 Github Actions를 이용하여 PyPi에 배포하는 방법 Python 라이브러리 패키지를 Github Actions를 이용하여 PyPi에 배포하는 방법 파이썬 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 pypi에 배포하는 환경을 구축해보자. 시리즈 2023.12.08 - [Programming/Javascript] - [Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 2023.12.15 - [Programming/C#] - [C#] C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법 2024.01.02 - [Programming/Java] - [Java] Java 라이브러리 패키지를 Git Actions를 이용하여 Maven centra.. 2024. 2. 23. [Java] Java 라이브러리 패키지를 Github Actions를 이용하여 Maven central repository에 배포하는 방법 Java 라이브러리 패키지를 Git Actions를 이용하여 Maven central repository에 배포하는 방법자바 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 Maven central에 배포하는 환경을 구축해보자.주의!해당 문서는 sonatype의 정책 변경으로 인해 2024년3월12일 이후에는 유효하지 않습니다.시리즈2023.12.08 - [Programming/Javascript] - [Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법2023.12.15 - [Programming/C#] - [C#] C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법2024.02.23 -.. 2024. 1. 2. [C#] C# 라이브러리 패키지를 Github Actions를 이용하여 NuGet에 배포하는 방법 C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법 C# 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 NuGet에 배포하는 환경을 구축해보자. 시리즈 2023.12.08 - [Programming/Javascript] - [Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 2024.01.02 - [Programming/Java] - [Java] Java 라이브러리 패키지를 Git Actions를 이용하여 Maven central repository에 배포하는 방법 2024.02.23 - [Programming/Python] - [Python] Python 라이브러리 패키지를 Githu.. 2023. 12. 15. [Javascript] Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 Javascript 라이브러리 패키지를 Github Actions를 이용하여 npm에 배포하는 방법 자바스크립트 라이브러리를 Github Actions을 이용하여 쉽고 빠르게 npm에 배포하는 환경을 구축해보자. 시리즈 2023.12.15 - [Programming/C#] - [C#] C# 라이브러리 패키지를 Git Actions를 이용하여 NuGet에 배포하는 방법 2024.01.02 - [Programming/Java] - [Java] Java 라이브러리 패키지를 Git Actions를 이용하여 Maven central repository에 배포하는 방법 2024.02.23 - [Programming/Python] - [Python] Python 라이브러리 패키지를 Github Actions를 이용하.. 2023. 12. 8. [프로그래밍 이론] HTTP forward와 redirect HTTP forward와 redirect HTTP 통신에서 request를 다른 URL로 보내버리는 기법인 forward와 redirect를 알아보자. 포워딩 (Forwading) 포워딩은 클라이언트의 request를 서버 내부에서 다른 리소스로 전달하는 기법이다. 모든 처리가 서버 내부에서 이루어지기 때문에 클라이언트는 이 과정을 알 수 없으며, 클라이언트는 처음 요청한 URL을 유지하게 된다. 단일 요청/응답 구조를 가진다. 리디렉션 (Redirection) 리디렉션은 클라이언트의 request를 새로운 URL로 이동하도록 서버가 클라이언트에게 재안내하는 기법이다. 서버는 클라이언트에게 HTTP 상태코드와 함께 새로운 URL을 제공하여 다시 request를 보낼 것을 명시적으로 알린다. 클라이언트는 .. 2023. 12. 7. [Javascript] native math operator와 mathjs의 performance 비교 native math operator와 mathjs의 performance 비교 자바스크립트의 기본 수학기호와 mathjs의 함수, fraction 연산의 성능을 비교해보자 Github 본 포스팅에 작성된 소스코드와 예시 데이터는 깃허브에 공개되었습니다. SpiralMoon/mathjs_performance Native operator VS mathjs performance comparison. Contribute to SpiralMoon/mathjs_performance development by creating an account on GitHub. github.com mathjs란? mathjs는 JS에서 수학 관련 기능만 전문적으로 다루는 라이브러리이다. 수학식을 파싱하며 실행하거나 분수표현, 행.. 2022. 1. 24. [Algorithm] 이동 평균 필터 (Moving average filter) 이동 평균 필터 (Moving average filter) 튄 데이터 값을 보정(평활화)하는 이동 평균 필터 알고리즘에 대해 알아보자 Github 본 포스팅에 작성된 소스코드와 예시 데이터는 깃허브에 공개되었습니다. GitHub - SpiralMoon/moving_average_filter: Move Average Filter Move Average Filter. Contribute to SpiralMoon/moving_average_filter development by creating an account on GitHub. github.com 이동 평균 필터링이란? 이동 평균 필터링은 연속된 데이터에서 인접한 n개 데이터의 평균을 구하여 순차적으로 데이터를 필터링하는 기법이다. 연속된 데이터가 급격하.. 2021. 12. 4. 이전 1 2 3 4 ··· 6 다음 반응형