1. 설명JavaScript에서 class 문법을 사용하면 객체지향 프로그래밍을 직관적으로 구현할 수 있다. 하지만 class는 ES6에서 도입된 문법적 설탕(syntactic sugar)일 뿐이고, 내부적으로는 여전히 프로토타입 기반으로 동작한다. 실제 프로덕션 환경에서 레거시 코드를 다루거나, 프레임워크의 내부 구조를 이해하거나, 메모리 최적화가 필요한 상황에서는 프로토타입의 동작 원리를 정확히 알아야 한다. 프로토타입 체인을 제대로 이해하지 못하면 예상치 못한 버그를 만날 수 있고, 특히 상속 관계에서 메서드가 어디에서 호출되는지 추적하기 어렵다.2. 개념 정의프로토타입은 JavaScript에서 효율적인 코드 재사용을 위해 존재하는 메커니즘이다. 모든 함수는 prototype 속성을 가지며, new..
자바스크립트는 클래스 기반이 아닌 프로토타입 기반 언어다.이는 단순한 구현 차이가 아니라, 객체지향 프로그래밍에 대한 근본적으로 다른 철학적 접근이다.ES6의 class 문법이 등장했지만, 그 아래에는 여전히 프로토타입이 작동하고 있다. 프로토타입은 추상적인 청사진이 아닌 구체적인 예시 객체를 통한 위임(delegation) 메커니즘이며, 이는 클래스 기반 상속보다 더 유연하고 강력하다. 1995년 브렌든 아이크가 단 10일 만에 자바스크립트를 설계할 때 Self 언어에서 영감을 받아 프로토타입을 선택한 이 결정은,오늘날 전 세계에서 가장 많이 사용되는 프로그래밍 언어의 핵심 특성이 되었다. 이 선택의 배경에는 2,000년 이상 이어져 온 철학적 논쟁이 있다. 플라톤은 이데아(idea, 그리스어 ἰδέα..
왜 실행 컨텍스트를 알아야 할까?디버깅하다 보면 예상과 다른 변수 값을 마주칠 때가 있다.console.log()로 찍어보니 undefined가 나오거나, 분명히 함수 안에서 선언했는데 바깥에서 접근이 안 되는 상황 말이다.이런 현상의 근본 원인이 바로 실행 컨텍스트다. 실제로 프로덕션에서 "메모리 사용량이 계속 늘어난다"는 제보를 받고 조사해본 적이 있다.원인은 이벤트 리스너 내부의 클로저가 DOM 요소를 계속 참조하고 있어서 가비지 컬렉션이 되지 않는 것이었다.Chrome DevTools의 Memory 탭에서 Heap Snapshot을 비교하니 쉽게 찾을 수 있었다. 클로저, this 바인딩, 호이스팅 같은 자바스크립트의 핵심 개념들이 모두 실행 컨텍스트에서 출발한다.이를 제대로 이해하면 성능 최적화..
수천 또는 수백만 개의 데이터 행을 처리할 때 DOM에서 데이터를 읽는 것이 너무 느리거나 다루기 힘든 경우가 있습니다. 이 문제를 해결하기 위해 DataTables의 서버 측 처리 기능은 서버 측의 데이터베이스 엔진이 모든 '무거운 작업'을 처리하고(결국 이 사용 사례에 고도로 최적화되어 있습니다!), 사용자의 웹 브라우저에서 해당 정보를 그리도록 하는 방법을 제공합니다. 따라서 수백만 개의 행으로 구성된 테이블을 쉽게 표시할 수 있습니다. 서버 측 처리를 사용할 때 DataTables는 페이지에서 정보를 그릴 때마다(예: 페이징, 주문, 검색 등) 서버에 Ajax 요청을 보냅니다.DataTables는 서버가 필요한 처리를 수행할 수 있도록 여러 변수를 서버로 전송한 다음 DataTables에서 요구..
이전 회사를 다니다가 호기롭게 개발자가 되겠다 다짐하고 1년간 똥싸다가 겨우 취직한 회사를 10개월 만에 퇴사 부검 데이터 엔지니어가 되고자 백엔드 개발자의 길을 선택했지만 현실의 벽은 녹록치 않았다. 나이라는 숫자 앞에서 많이 고민하고 주저했던 지난 10개월. 나는 어떻게 보내왔는가? 일단 작년 2021 1년이라는 시간이 아깝게 느껴졌다. 방향을 제대로 잡지 못하고 갈팡질팡했던 과정, 준비가 제대로 되지 않은 상태에서 2022 년초에 취직을 하다보니 실무의 벽이 높게만 느껴졌다. 그리고 회사 업무가 어떤 한가지를 하다가 중간에 갑자기 다른 프로젝트로 바뀌는 상황과 거의 매일 같이 디버깅을 한다고 야근을 하다보니 개인 공부를 할 시간이 너무 부족했다. 같은 분야의 선후배 없이 대표와 다이렉트로 일하다보니..
1차로 아래 링크에서 나온 방법을 시도해본다. https://intellij-support.jetbrains.com/hc/en-us/community/posts/360004275380-Marketplace-Plugins-are-not-loaded 만약에 그래도 안된다면 사용자 지정 VM 옵션이 설정된 상태이거나 다운로드 된 서버 인증서를 확인해본다. https://youtrack.jetbrains.com/issue/IDEA-220355