본문 바로가기

JS

(18)
비동기 처리 동기 vs 비동기 동기 (Synchronous)한 작업이 끝난 후에 다음 작업이 시작되는 방식 비동기 (Asynchronous)작업이 시작되면 그 작업의 완료를 기다리지 않고 다음 작업을 즉시 시작할 수 있는 방식  동기작업과 비동기작업 비교실행 방식한 작업이 끝난 후 다음 작업 시작작업이 끝나기를 기다리지 않고 다음 작업 시작블로킹블로킹 (Blocking)논블로킹 (Non-blocking)적용 예시간단한 계산, 순차적 작업네트워크 요청, 파일 입출력, 타이머장점코드가 직관적이고 이해하기 쉬움자원 활용이 효율적, UI 응답성이 높음단점긴 작업이 있을 경우 전체 시스템 지연 가능코드 복잡도가 증가할 수 있음 비동기 처리 방법콜백 함수 (Callback): 특정 작업이 완료된 후 호출되는 함수function..
Observer 패턴, Pub-Sub 패턴 + Event Emitter Observer 패턴Observer 패턴은 객체의 상태가 변할 때 관련된 다른 객체들에게 자동으로 알림을 주는 패턴Observer 패턴은 보통 UI 업데이트나 이벤트 처리에서 사용 구성요소 Subject (주체): 상태를 가진 객체. 상태가 변할 때 옵저버들에게 알림 발송Observer (옵저버): 주체의 상태 변화에 반응하여 업데이트 처리  Pub-Sub (Publish-Subscribe) 패턴Pub-Sub 패턴은 메시지를 발행(publish)하고 구독(subscribe)하는 시스템발행자는 메시지를 브로커에 전달하고, 구독자는 브로커가 전달하는 메시지를 수신 구성요소Publisher (발행자): 메시지를 발행Subscriber (구독자): 특정 토픽에 대해 메시지를 수신Broker (브로커): 메시지를..
함수형 프로그래밍 (2) - 일급 함수 일급 함수 (First-Class Function)일급 함수는 함수가 다른 데이터 타입과 동일하게 취급되는 것을 의미즉, 함수가 변수에 할당될 수 있고, 다른 함수의 인자로 전달되거나 반환될 수 있으며, 데이터 구조에 저장될 수 있음// 함수는 변수에 할당이 가능const add = function(a, b) { return a + b;};// 함수는 다른 함수의 인자로 전달 가능function execute(func, x, y) { return func(x, y);}console.log(execute(add, 2, 3)); // 5// 함수는 다른 함수의 반환 값으로 사용 가능 : 커링function createAdder(x) { return function(y) { ret..
함수형 프로그래밍 (1) - 순수함수 함수형 프로그래밍함수형 프로그래밍은 프로그래밍 패러다임 중 하나로, 순수 함수와 불변성을 강조하며, 프로그램의 상태 변경을 최소화하는 것이 목표함수형 프로그래밍은 수학적 함수의 개념에 기반을 두고 있으며, 이를 통해 코드의 간결성, 모듈성 및 예측 가능성을 높일 수 있음  함수형 프로그래밍 특징자료처리를 수학적 함수의 계산으로 표현하고 상태와 가변 데이터 대신 불변 데이터를 프로그래밍하는 패러다임순수함수불변타입일급함수와 고차함수자동메모리 관리타입 시스템 (타입 추론)커링과 함수 합성 객체지향 프로그래밍과 함수형 프로그래밍 비교기본 단위객체 (데이터 + 메서드)함수 (순수 함수)상태 관리상태가 객체 내부에 저장되고 변경 가능상태는 변경되지 않고 불변성 유지코드 재사용상속과 다형성을 통한 코드 재사용 가능함..
Jest를 통해 unit테스트 진행하기 Jest 설치npm install --save-dev jestyarn add --dev jest 스크립트 추가 (package.json 파일에 추가)테스트파일이름은 example.test.js의 형태로 사용{ "scripts": { "test": "jest" }} 실행 명령어npm testyarn test  코드 예시describe('Path Components 관련', () => { test('경로에 요소를 추가하는 메소드 UNIX: appendComponent()', () => { const path = new Path('/home/user/documents/file.txt'); path.appendComponent('newfolder');..
타입스크립트 컴파일 with readline 타입스크립트로 작성한 코드를 컴파일을 하려면 어떻게 될까? 컴파일이 되지 않는다.타입스크립트 파일을 자바스크립트 파일로 바꿔줘야 한다.npm install typescript --save-devnpm install --save-dev @types/nodetsc main.tsnode main.js 1. typescript를 먼저 설치해준다.2. readline을 사용하는 경우 필요한 모듈을 설치해 준다. 위와같은 예시이다.나의 경우는 설치를 했음에도 불구하고 에러표시가 났다. 그러나 실행결과는 잘 작동됨3. tsc main.jstsc 명령어를 사용하게 되면 타입스크립트 파일을 컴파일이 가능한 자바스크립트 파일로 변환하여 새로 생성함4. node main.js생성된 main.js를 node를 이용해 컴파일을..
[Node.js] Process 노드 모듈 Process 노드 모듈Node.js의 process 모듈은 현재 실행 중인 Node.js 프로세스에 대한 정보를 제공하고, 제어할 수 있는 다양한 메서드와 속성을 포함함주요 속성process.argv:Node.js 프로세스의 실행 시 전달된 명령줄 인수 배열예: process.argv[0]는 Node.js 실행 경로, process.argv[1]는 실행된 파일 경로process.env:현재 프로세스의 환경 변수를 포함하는 객체예: process.env.NODE_ENV는 현재 환경 설정(예: development, production)을 나타냄process.pid:현재 프로세스의 PID(Process ID)process.platform:현재 실행 중인 플랫폼(운영체제)을 나타내는 문자열예: win32, ..
[Node.js] 메모리 관리 일반적인 프로세스 메모리 구조  일반적인 프로세스 메모리 모델은 프로그램이 실행되는 동안 사용하는 메모리의 구조 코드(텍스트) 섹션실행할 프로그램 코드가 저장되는 영역보통 읽기 전용으로 설정되어 있어 실행 중에 코드가 변경되지 않도록 함데이터 섹션초기화된 전역 변수 및 정적 변수가 저장되는 영역프로그램 시작 시 초기값을 가지고 있음초기화된 데이터 섹션: 초기값을 가진 변수초기화되지 않은 데이터 섹션(BSS: Block Started by Symbol): 초기값이 없는 변수. 실행 시 0으로 초기화힙(Heap)동적으로 할당되는 메모리 영역런타임 시 동적으로 크기가 변경될 수 있음메모리 할당 및 해제를 관리하기 위해 malloc, free 등의 함수를 사용스택(Stack)함수 호출과 관련된 지역 변수 및 매..