JavaScript 5

유데미(Udemy) "NodeJS 완벽 가이드" 수강

글또 9기를 하던 중 좋은 기회로 유데미에서 2개의 강의를 들을 수 있는 쿠폰을 주셨습니다. 매번 프런트엔드의 틀에만 갇혀 있다는 생각이 들어 "NodeJS 완벽 가이드"를 수강하게 되었습니다. 저는 앞으로 개발자로 살아가기 위해서라면 언어 또는 프레임워크를 아는 것이 아니라 매커니즘을 이해해야 한다고 생각했기에 해당 강의에 궁금함이 많았습니다. 유튜브에서 조금 공부한 적이 있지만, 내용의 깊이가 상대적으로 얕거나 2차 강의를 팔기 위해 빌드업으로 낸 강의들이 대부분이었기에 동영상 강의에서 만족할 수 없었습니다. 그러나 유데미 강의를 듣게 되면서 생각이 바뀌었습니다. NodeJS 코드 작성하는 법만 알려주는 줄 알았는데 NodeJS가 컴퓨터에서 어떻게 동작하는지컴퓨터 구조까지 상세하게 알려주어서 감명 깊..

JavaScript 2024.03.31

[JS] V8: 전체 컴파일러

V8 가비지 컬렉션을 공부하다가, 이게 맞나란 생각을 좀 많이 하면서 V8이 무엇인지 좀 자세히 알아보기 위해 A tour of V8: full compiler를 번역하여서 공부해보고자 한다. 번역하다가 이해하기 쉽게 가감한 면이 있지만 이해가 잘 되었으면 좋겠다. JavaScript 가상 머신에서 해석하다 JIT(Just-In-Time) 컴파일로 전환되면서 성능이 엄청나게 빠르게 증가했다. 이로 인해 JavaScript와 웹 앱의 유용성이 크게 증가했다. 그 결과, JavaScript는 이제 HTML5, 즉 웹 기술의 다음 세대를 이끄는 메인이 되었다. 네이티브 코드를 생성하고 실행하는 최초의 자바스크립트 엔진 중 하나인 V8 엔진은 구글 크롬, 안드로이드 브라우저, WebOS 및 Node.js와 같은..

JavaScript 2023.04.20

[Js] V8 가비지 컬렉션 - 1/2

이전에는 자바스크립트의 가비지 컬렉션에 대해서 알아보았다. 이번에는 JavaScript의 많은 변화를 준 V8 엔진의 자바스크립트에 대해서 알아보고자 한다. 가비지 컬렉션은 긍정적인 측면 프로그래머가 메모리를 더 이상 직접 관리할 필요가 없어졌기 때문에 유지보수가 간편해졌다. 장기간 실행되는 대규모 어플리케이션의 경우 많은 종류의 오류, 메모리 누수를 줄여주어 성능을 향상시켜준다. 그러나 가비지 컬레션을 사용한다는 것은 메모리 관리 방식에 대한 제어권을 포기한다는 의미이다. JavaScript의 경우 메모리 관리 방법에 대한 모든 제어 권한을 포기한다. ECMAScript의 가비지 컬레션은 인터페이스를 노출하지 않는다. 그래서 웹 앱이 메모리 사용량을 측정하거나 기비지 컬렉션에 대한 단서를 제공해주지 않..

JavaScript 2023.04.12

[Js RoadMap] 02. 가비지 컬렉션

자바스크립트는 눈에 보이지 않는 곳에서 메모리 관리를 수행한다. 원시값, 객체, 함수 등 우리가 만드는 모든 것은 메모리를 차지한다. 자바스크립트 엔진은 더는 쓸모 없는 것들을 어떻게 처리하는지 알아보자. 가비지 컬렉션 기준 자바스크립트는 도달 가능성(reachability)이라는 개념을 사용하여 메모리 관리를 수행한다. '도달 가능한(reachable)'값은 쉽게 말해 어떻게든 접근하거나 사용할 수 있는 값을 의미한다. 도달 가능한 값은 메모리에서 삭제되지 않는다. 태생부터 도달 가능하기 때문에, 명백한 이유 없이 삭제되지 않는 값 (root) 현재 함수의 지역 변수와 매개변수 중첩 함수의 체인에 있는 함수에서 사용되는 변수와 매개변수 전역 변수 기타 등등 이런 값을 루트(root)라고 부른다. 루트가..

JavaScript 2023.04.06

[Js RoadMap] 01. JavaScript가 뭔데?

JavaScript JavaScript는 인터프리터(소스코드를 바로 실행하는 환경), just-in-time 컴파일(실행하는 시점에 기계어로 번역) 프로그래밍 언어로 일급 함수(함수를 변수에 저장 가능)를 지원한다. 요즘은 Node.js, Apache CouchDB, Adobe Acrobat 처럼 비 브라우저 환경에서도 사용하며, JavaScript의 특징은 다음과 같다. 프로토타입 기반 : 객체 생성할 때, 클래스를 정의하지 않아도 생성이 가능 다중 패러다임 : 여러가지 방법론이 적용됨을 의미 단일 스레드 : 하나의 프로세스에서 오직 하나의 스레드로 동작 동적 언어 : 컴파일 시 자료형이 결정 객체지향형 : 객체라는 단위로 상호작용을 서술하는 방식 명령형 : 어떻게 해결할 것인가 선언형 :무엇을 해결할..

JavaScript 2023.03.27