Logic in Code,
Freedom in Travel.

인생 뭐 있나 사람 사는거 다 똑같지

Programming

Programming/노드 (NodeJS)

[Node.js] 자바스크립트 비동기 처리 - 비동기의 완성 Async/Await

비동기를 동기처럼 작성하다 아주 먼 과거에는 콜백지옥이 있었고 조금 먼 과거에는 프로미스 지옥이 있었다. 조금 먼 과거의 프로미스 지옥은 Promise의 .then() 체이닝이 길어질수록 코드가 복잡해졌고, 특정 스코프의 변수를 공유하기 위해 파라미터를 계속 넘겨줘야 하는 문제가 여전히 남아있었다. PHP나 Python, Go와 같은 언어를 다루다 Node.js로 넘어오면서 '위에서 아래로 흐르는 직관적인 코드' 코드를 보기 힘들었던 시절이 있었다. 그리고 ES2017(ES8) 가 등장하면서 자바스크립트는 async/await 새로운 문법을 하사받았다. Async/Awaitasync/await 은 새로운 기술이 아니고 내부적으로는 Promise를 사용하지만, 이를 겉으로 보기에 동기 코드처럼 보이게 만드..

2026. 1. 9. 00:00
Programming/노드 (NodeJS)

[Node.js] 자바스크립트 비동기 처리 - 프로미스 지옥 Promise

콜백 지옥의 다음 세대Promise 가 도입되기 전 '콜백 지옥' 은 어지러웠다. Java나 Go처럼 멀티 스레드를 사용하거나, PHP처럼 동기적 흐름이 기본인 언어를 다루다 Node.js 으로 넘어오면서 비동기 흐름 제어가 가장 큰 진입 장벽이었다. 하지만 자바스크립트는 ES6(ECMAScript 2015)가 등장하면서 비동기 작업의 최종 완료 또는 실패를 나타내는 Promise가 표준으로 채택되면서 보기 좋은 비동기 코드를 작성할 수 있게 되었다. Promise: 비동기의 새로운 문법콜백 패턴에서는 비동기 처리의 결과를 콜백 함수 내부에서만 처리할 수 있었다. 하지만 Promise 는 미래의 어떤 시점에 결과를 담은 객체를 반환한다. 이 객체는 성공(resolve)하거나 실패(reject)하며 th..

2026. 1. 8. 15:43
Programming/노드 (NodeJS)

[Node.js] 자바스크립트 비동기 처리 - 콜백 지옥과 async 라이브러리

싱글 스레드 기반의 Node.js 환경에서 동적 UI, 네트워크 통신, 파일 I/O 등과 '동시성(Concurrency)' 의 문제로 비동기 처리 전략이 항상 문제다. 과거 법무법인에서 ERP를 개발하던 시절에 Ext.js를 사용하며 처음으로 진짜 '콜백 지옥'을 경험했다. 시간이 꽤 흐른 뒤, 우연히 마주한 레거시 코드에서 이 지옥을 다시 만났을 때 주님을 찾는건 어쩔 수 없었다. JavaScript 의 버전 업데이트가 진행되면서 불편한게 많이 개선되었지만 개선되기 전에 작성된 코드에는 Node.js 6 이라는 버전을 사용하는 프로젝트에서 콜백 지옥이 나를 기다리고 있었다. 콜백 지옥지금은 async/await 이 당연한 문법처럼 느껴지지만, Node.js 가 처음 등장했을 때 비동기 처리는 혁명적이었..

2025. 5. 13. 11:07
Programming/.NET

2025 년도 .NET MAUI 개발 준비

지금껏 다양한 언어와 프레임워크로 개발을 하면서 2025년도 새해를 맞은 기념으로 .NET 개발을 해보려 한다. 시작이 반인것을 알기에 .NET SDK 설치와 Visual Studio Mac 을 설치하려다 보니 장난하나 욕이 나왔지만, 버전을 낮춰서 해야겠다.

2025. 1. 5. 13:15
Programming/스프링 부트(Spring Boot)

리액티브 프로그래밍 RxJS Marbles 주요 연산자 자바로 구현하기

RxJS 의 개념 싱글 (Single Item)멀티플 (Multiple Items)PULL (Sync)함수 (Function)이터레이터 (Iterator) - array, symbol, generatorPUSH (Async)프로미스 (Promise) - async & await 옵저버블 (Observable)싱글: 하나의 값이나 이벤트를 다루는 것 멀티플: 여러 개의 값이나 이벤트를 다루는 것 PULL: 데이터를 받을지 결정하는 것 PUSH: 데이터를 보낼지 결정하는 것Reactive Programming명령형 프로그래밍 언어에서 표현식은 순차적으로 실행된다. a = 10;b = 20;c = a + b; // c = 30 a = 40; // c = 30 반응형 프로그래밍 언어에서는 데이터 흐름의 변경..

2024. 5. 2. 22:49
Programming/스프링 부트(Spring Boot)

[Spring Boot] - 003 DataTypes, Variables 데이터 유형 및 변수

"[Spring Boot] - 002 Basic Syntax 기본 문법" 을 공부할 땐 2개의 유튜브 영상을 보고, 아티클을 읽으며 정리했다. 처음보는 접근 제어자의 Default 는 바로 찾아 이해하려고 했다. 이 방법의 문제는 아티클 요약이 안되었던 점이다. (물론 충분히 요약되어 있긴 했다.) 효율적인 학습을 위해 전략을 바꿔 3개의 레퍼런스를 모두 읽어본 후 정리하는 방식으로 해보려 한다. Java 의 변수는 Java 프로그램 실행 중에 데이터 값을 저장하는 데이터 컨테이너이다. 모든 변수에는 데이터 유형이 할당되며, 이는 보유할 수 있는 값의 유형과 수량을 지정한다. 변수는 데이터의 메모리 위치 이름입니다. Java 변수에는 주로 Local, Instance 및 Static의 세 가지 유형이..

2024. 4. 9. 01:49