구글 클라우드 플랫폼 ( Google Cloud Platform ) 에서 VM인스턴스를 생성하고 VS code를 통해 해당 서버에 SSH 원격접속을 하는 과정을 정리한 내용입니다. 간략하게 과정으로 보면 로컬에서 SSH key 생성하기 구글 클라우드 플랫폼 (GCP) 에서 생성된 SSH key 등록 VS code 익스텐션인 remote Desktop을 통해 접속하기 이렇게 볼 수 있고 아래에서 차근차근 과정을 정리해봤습니다. 로컬에서 SSH key 생성하기 가장 먼저 로컬에서 SSH key를 생성해줍니다. ssh key는 로컬에서 ssh-kegen 명령어를 통해 생성할 수 있습니다. ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C "GCP메일주소" - KEY_FILENA..
strict mode란? function foo() { x = 10; } foo(); console.log(x); // ? foo함수 내에서 선언하지 않은 x 변수에 값을 할당했을때, 변수 x를 찾아야 x에 값을 할당할 수 있기때문에 자바스크립트 엔진은 x 변수가 어디에서 선언되었는지 스코프 체인을 통해 검색하기 시작한다. 먼저 foo함수 내에서 검색하는데 함수내에는 x 변수의 선언이 없으므로 검색에 실패할 것이고, 상위 스코프에서 x변수의 선언을 검색할 것이다. 어디에도 x 변수의 선언이 없으면 ReferenceError를 발생시킬 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다. 이때 전역 객체의 x 프로퍼티는 마치 전역 변수처럼 사용할 수 있다. 이러한 현상을 암묵..
일급객체 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조 ( 객체, 배열 등) 에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 👆🏻 위 조건을 만족하는 객체를 일급 객체라 한다. // 자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체다. // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객..
객체 자바스크립트는 객체기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다. 원시 값을 제외한 나머지 값( 함수, 배열, 정규 표현식 등 )은 모두 객체다. 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 👆🏻 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 따라서, 함수도 프로퍼티 값으로 사용할 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다. 객체는 프로퍼티와 메서드로 구성된 집합체다. 프로퍼티 : 객체의 상태를 나타내는 값 메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 객체지향 프로그래밍이라 한다. 객체 리터럴에 의한 ..
내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다. ECMAScript 사양에 등장하는 이중 대괄호 ( [[...]] )로 감싼 이름들이 내부 슬롯과 내부 메서드다. 예를 들어, 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 원칙적으로 직접 접근할 수 없지만 [[Prototype]] 내부 슬롯의 경우, __proto__를 통해 간접적으로 접근할 수 있다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught Syntax..
Set 객체 Set 객체는 중복되지 않는 유일한 값들의 집합이다. Set 객체는 배열과 유사하지만 다음과 같은 차이가 있다. 구분 배열 Set 객체 동일한 값을 중복하여 포함할 수 있다. O X 요서 순서에 의미가 있다. O X 인덱스로 요소에 접근할 수 있다. O X Set 객체의 특성은 수학적 집합의 특성과 일치하며, Set은 수학적 집합을 구현하기 위한 자료구조다. 따라서 Set을 통해 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있다. Set 객체의 생성 Set 객체는 Set 생성자 함수로 생성한다. const set = new Set(); console.log(set); // Set(0) {} Set 생성자 함수는 이터러블을 인수로 전달받아 Set 객체를 생성하는데 이터러블의 중복된 값은 ..
Map 객체 Map객체는 키와 값의 쌍으로 이루어진 컬렉션이다. ( Set과 함께 es6에서 새로도입한 자료구조 ) 한 Map에서의 키는 오직 단 하나만 존재 한다. 객체와 유사하지만 다음과 같은 차이가 있다. 구분 객체 Map 객체 키로 사용할 수 있는 값 문자열 또는 심벌 값 객체를 포함한 모든 값 이터러블 X O 요소 개수 확인 Object.keys(obj).length map.size 성능 키-값 쌍의 빈번한 추가 및 제거에 최적화되지 않았다. 키-값 쌍의 빈번한 추가 및 제거와 관련된 상황에서는 성능이 좀 더 좋다. → 객체와 Map객체에 대한 더 자세한 비교는 MDN공식문서에 표로 정리되어 있다. Map 객체의 생성 Map 객체는 Map 생성자 함수로 생성한다. // 인수를 전달하지 않으면 빈..
블로그 시작 그동안 어떻게든 외면해 왔던 블로그를 이제는 드디어 해야겠다는 생각이 들었다. 이런저런 핑계들로 여태까지 미루어 왔지만 이제는 해야 할 필요성과 이유들이 생겼다. 어떤 생각들로 필요성을 느꼈는지 그리고 시작하면서의 목표나 다짐을 기록해 두어서 지치거나 늘어질 때마다 조금이나마 나를 다시 일으켜줄 수 있도록 이 글을 작성해 본다. 블로그의 필요성 우선 가장 첫 번째는 개발자가 되기 위해서 여태 공부해 온 자료들이 체계적으로 정리되어 있는 곳이 없다는 것이다. 새로운 것을 공부할 때에는 필기를 하기도 하고 노션에 적어 놓기도 했었다. 프로젝트를 진행할 때에 만나는 문제들을 기록해 두고자 노션에 페이지를 따로 만들어 그때그때 참고자료와 함께 어떻게 해결했는지 등을 적어 놨지만 계획적으로 분류해서 ..