[바미] ES2015에 대하여
·
프로그래밍(Basic)/Javascript(TS,Node)
들어가며...2015년부터 자바스크립트에 매우 커다란 변화가 있었는데 이를 ES2015 또는 ES6라고 부릅니다.이 시기를 기점으로 자바스크립트는 매년 새로운 문법에 대해 발표가 진행되고 있습니다. (참고로 2024년 현재 ES2024까지 나와있습니다.) 그럼 이제 어떤 부분이 추가가 되었는 지 확인해봅시다!변경점1. let과 const자바스크립트를 처음 배우는 분들이라면 var를 사용하여 변수를 선언하시는 방법을 배우셨을 겁니다.이제 var대신 let과 const를 쓰셔야 할 때입니다. 아래 예시로 차이점을 보시죠.function scopeTest() { if (true) { var varVariable = "I am a var variable"; let letVariab..
[바미] Node - GC
·
프로그래밍(Basic)/Javascript(TS,Node)
GC? 가비지 컬렉션은 프로그램이 동적으로 할당한 메모리 중에서 더 이상 사용되지 않는 부분을 자동으로 찾아서 해제하는 프로세스입니다. 이는 메모리 누수를 방지하고, 사용 가능한 메모리 공간을 최대화하여 프로그램의 안정성과 성능을 향상시키는 데 필요합니다. Node.js에서는 프로세스 메모리 관리를 개발자가 직접하지 않고 자동으로 수행합니다. 그렇기 때문에 가비지 컬렉션(GC)은 Node.js의 메모리 관리의 핵심이며 성능에 많은 영향을 끼치죠 오늘은 Node.js의 V8 engine이 어떻게 가비지 컬렉션을 수행하는지 알아보겠습니다. 프로세스 메모리 관리 - C와 Node.js 비교 메모리 관리란? 프로그래머가 요청할 때 동적으로 Heap 영역에 메모리 청크를 할당해주고, 더 이상 필요하지 않을 때 메..
Node.js 동작 원리
·
프로그래밍(Basic)/Javascript(TS,Node)
Node.JS? JavaScript를 브라우저 외부에서 실행하는 런타임입니다. Node.js는 싱글 스레드, 논블로킹 모델을 사용합니다. 이 모델은 비동기 I/O 작업을 통해 여러 요청을 동시에 처리하며, 클러스터링을 통해 확장성을 갖추고 있죠. 싱글스레드? 프로세스 내에서 하나의 스레드가 하나의 요청만을 수행합니다. 한 번에 여러 요청을 수행할 수 없는 것이죠 그래서 싱글 스레드는 블로킹 모델이라고 합니다. 반면 멀티스레드는 스레드 풀에서 실행의 요청만큼 스레드를 매칭 하여 작업을 수행합니다. NodeJS 는 완전한 싱글 스레드인가? NodeJS는 싱글 스레드이지만 완전한 싱글 스레드를 기반으로 동작하지는 않습니다. 무슨 말일까요? 일부 블로킹 작업들은 libuv의 스레드 풀에서 수행되기 때문이죠. 이..
[바미] Javascript에서 전역객체와 활성객체에 대하여..
·
프로그래밍(Basic)/Javascript(TS,Node)
안녕하세요. 오늘은 Javascript에서 전역 객체와 활성 객체에 대해 알아보려 합니다. Javascript의 전역 객체와 활성 객체는 매우 중요한 개념입니다. 전역객체? 전역 객체(Global Object)는 Javascript 프로그램이 실행되는 동안 프로그램 전체에서 접근 가능한 객체입니다. 전역 객체는 페이지(웹 페이지에서)에서의 전역 객체인 window와 노드(Node.js)에서의 전역 객체인 global입니다. 전역 객체의 속성과 메서드는 프로그램이 실행되는 동안 어디에서든 접근할 수 있습니다. 예제 코드 다음 코드는 전역 변수 greeting을 정의하고, window.greeting을 통해 접근할 수 있는 것을 보여줍니다 let greeting = "Hello, World!"; consol..
[바미] Node 그리고 장, 단점.
·
프로그래밍(Basic)/Javascript(TS,Node)
Node.js 란? Node.js는 위키백과에 아래와 같이 정의되어 있습니다. Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다. Node.js와 관련된 핵심키워드는 아래와 같습니다. 구글 V8 자바스크립트 엔진 고성능 네트워크 서버 단일 쓰레드(Single Thread) 이벤트 루프(Event Loop) 기반 비동기 I/O 처리(Non-..
[바미] Promise와 async/await
·
프로그래밍(Basic)/Javascript(TS,Node)
안녕하세요. 회사에서 저에게 자바스크립트에서 async, await사용시 블락되는 구간에 대해 질문을 받게 되었습니다. 먼저 제 블로그에 그러한 글이 있는지 찾아보았지만 Promise와 async에 관련된 글이 포스팅 된 줄 알았으나 단 한 개도 없더라구요. 그래서 겸사겸사 Javascript에서 비동기 처리에 빠질 수 없는 Promise와 async/await에 대한 내용과 저에게 질문 받은 내용을 포스팅하게 되었습니다. 만으로 2년간 Node.js를 사용하고 있었지만 아직까지 모르는 게 많다는 걸 알게 되네요. 해당 글의 내용이 정확하지 않을 수 있기 때문에 혹시나 틀린 부분이 있으시다면 언제든 지적 부탁드립니다! 물론 Javascript에서 비동기 처리를 다룰 수 있는 방법에는 여러가지가 있지만 많..
[바미] Factory 패턴
·
프로그래밍(Basic)/Javascript(TS,Node)
Factory 패턴 객체를 생성하는 팩토리 함수를 사용한다. 📜 원문: patterns.dev - factory pattern 📜 번역: https://patterns-dev-kr.github.io/design-patterns/factory-pattern/ 팩토리 패턴을 사용하면 함수를 호출하는 것으로 객체를 만들어낼 수 있습니다. new 키워드를 사용하는 대신 함수 호출의 결과로 객체를 만들 수 있는 것이죠. 앱에 다수의 사용자를 추가해야 한다고 가정해 보겠습니다. 사용자는 firstName, lastName, email 속성을 갖게 됩니다. 이 때 팩토리 함수를 사용해 fullName 메서드를 가진 객체를 만들어 반환합니다. const createUser = ({ firstName, lastName,..
[바미] Flyweight 패턴
·
프로그래밍(Basic)/Javascript(TS,Node)
Flyweight 패턴 동일한 객체를 다룰 때 이미 존재하는 인스턴스를 재사용한다 📜 원문: patterns.dev - flyweight pattern 📜 번역: https://patterns-dev-kr.github.io/design-patterns/flyweight-pattern/ 플라이웨잇 패턴은 비슷한 객체를 대량으로 만들어야 할 때 메모리를 절약할 수 있게 해 주는 유용한 패턴입니다. 책을 추가할 수 있는 앱이 있다고 가정해 보겠습니다. 모든 책은 title, author, isbn속성을 가지고 있습니다. 그런데 도서관에는 보통 책을 한 권만 가지고 있지 않고 같은 책을 여러권 가지고 있죠? 동일한 책에 대해 새로운 클래스를 매번 생성하는것은 그다지 도움이 되지 않습니다. 그 대신 하나의 책을 ..
[바미] Javascript Micro task queue.
·
프로그래밍(Basic)/Javascript(TS,Node)
지난 시간엔 콜 스택, 태스크 큐, 이벤트 루프에 대해 알아보며 호출스택과 테스크큐의 관계에 대해 알아보았는데요. [바미] 콜 스택, 태스크 큐, 이벤트 루프안녕하세요. 오늘은 자바스크립트의 콜스택, 태스크 큐, 이벤트 루프가 무엇인지에 대해 알아보도록 하겠습니다. 먼저 자바스크립트는 단일 스레드입니다. 이 말의 뜻은 한 번에 1개의 작업만codesk.tistory.com오늘은 Micro task queue에 대해 알아보며 지난번에 했던 태스크 큐와 어떤 차이가 있는지 알아보도록 하겠습니다. 태스크 큐와 마이크로 태스크 큐먼저 마이크로 태스크 큐는 일반 태스크 보다 좀 더 우선순위를 갖는 태스크 큐라고 보면 됩니다.2개의 큐 모두 콜백함수가 들어간다는 점에서 동일하지만 어떤 함수를 실행하느냐에 따라 어디..
Bami
'프로그래밍(Basic)/Javascript(TS,Node)' 카테고리의 글 목록