본문 바로가기

분류 전체보기

(214)
HTTP와 HTTPS HTTP는 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜입니다. 클라이언트가 서버에게 요청을 보내면 서버는 응답을 보냄으로써, 데이터를 교환합니다. HTTP는 비연결성및 무상태성이라는 특징을 가집니다. HTTP는 요청에 대한 응답을 처리하게 되면 연결을 끊어 버립니다. 따라서 클라이언트에 대한 이전의 상태 정보 및 현재 통신의 상태가 남아있지 않습니다. 서버가 다수의 클라이언트와 연결을 계속 유지한다면, 이에따른 자원 낭비가 심해집니다. 비연결성및 무상태성의 특징을 가진다면 불필요한 자원낭비를 줄일 수 있다는 장점이 존재합니다. 그러나 서버는 클라이언트를 식별할 수 없다는 단점또한 존재합니다. 로그인을 하더라도 다음 요청에서는 해당 클라이언트를 기억하지 못해 또 로그인을 ..
[Core JavaScript] VariableEnvironment & LexicalEnvironment VariableEnvironmnet에 담기는 내용은 LexicalEnvironment에 담기는 내용과 같지만 최초 실행시의 스냅샷을 유지한다는 점이 다릅니다. 실행컨텍스트를 만들 때 VariableEnvironment에 정보를 먼저 담은 다음 이를 그대로 복새해서 LexicalEnvironment를 만들고, 이후에는 Lexicalenvironment를 사용합니다. LexicalEnvironment 내부는 enviromentRecord와 outer-EnvironmentReference로 구성돼 있습니다. enviromentRecord에는 현재 컨텍스트와 관련된 코드의 식별자 정보들이 저장됩니다. 컨텍스트를 구성하는 함수에 지정된 매개변수 식별자, 선언한 함수가 있을 경우 그함수자체,변수식별자등이 식별자에 ..
[JavaScript] fetch fetch 를 사용하면 필요할 때 서버에 네트워크 요청을 보내고 새로운 정보를 받아오는 일을 할 수 있습니다. AJAX(Asynchronous JavaScript And XML)을 이용하면 페이지를 새로고침하지않고 정보를 받아올 수 있습니다. AJAX는 서버에서 추가 정보를 비동기적으로 가져올 수 있게 해주는 포괄적인 기술을 나타내는 용어로, 만들어진지 오래되었습니다. AJAX에 XML이 포함된 이유는 바로 이때문입니다. 콜백 함수는 자바스크립트의 비동기성을 표현하고 관리하는 가장 일반적인 기법이자 가장 기본적인 비동기 패턴이다. [You don't know Js] 콜백함수는 코드를 통해 명시적으로 호출하는 함수의 개념이 아닙니다. 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함..
[Core JavaScript] class JavaScript는 프로토타입 기반 언어이므로 클래스 개념이 존재하지 않습니다. 생성자 함수 Array를 new 연산자와 함께 호출하면 인스턴스가 생성됩니다. 이때 Array를 일종의 클래스라고 하면, Array의 prototype 객체 내부 요소들이 인스턴스에 상속된다고 볼 수 있습니다. 엄밀히는 상속이 아닌 프로토 타입 체이닝에 의한 참조이지만 결과적으로는 동일하게 동작하므로 이렇게 이해해도 무방합니다. 한편 Array 내부 프로퍼티들 중 prototype 프로퍼티를 제외한 나머지는 인스턴스에 상속되지 않습니다. 인스턴스에 상속되는지( 인스턴스가 참조하는지 ) 여부에 따라 스태틱 멤버와 인스턴스 멤버로 나뉩니다. 이 분류는 다른 언어의 클래스 구성요소에 대한 정의를 차용한 것으로서 클래스 입장에서 ..
[Modern JavaScript Deep Dive] Array Array 배열이란 여러개의 값을 순차적으로 나열한 자료구조입니다. 배열이 가지고 있는 값을 요소 (Element)라고 부릅니다. JavaScript의 모든 값은 배열의 요소가 될 수 있습니다. 즉, 원시값은 물론, 객체, 함수, 배열등 자바스크립트에서 값으로 인정하는 모든 것은 배열의 요소가 될 수 있습니다. 배열의 요소는 배열에서 자신의 위치를 나타내는 0 이상의 정수인 인덱스를 갖습니다. 배열은 index와 length 프로퍼티를 갖기 때문에 for문을 통해 순차적으로 접근할 수 있습니다. 자바스크립트에 배열이라는 타입은 존재하지 않습니다. 배열은 객체 타입입니다. typeof arr // object 배열은 배열 리터럴, Array 생성자 함수, Array.of, Array.from 메서드로 생성..
2250. 트리의 높이와 너비 ⭐️ 트리의 높이와 너비 밑에 표시된 열을 방문 순서라고 생각하면 좋습니다. 그러면 중위순회라는 것을 알아낼 수 있습니다. import sys input = sys.stdin.readline n = int(input()) graph= [[] for _ in range(n+1)] isRoot = [0] * (n + 1) # 루트노드를 찾을 때 쓸 리스트 distance = [[] for _ in range(n+1)] # 각 레벨별 거리 저장 root = 0 for _ in range(n): parent, left, right = map(int, input().split()) graph[parent].append(left) graph[parent].append(right) isRoot[parent] += 1..
[Modern JavaScript Deep Dive] Iterable ES6에서 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션(자료구조)를 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙입니다. ES6 이전 순회 가능한 데이터 컬렉션, 배열, 문자열, 유사배열객체, DOM컬렉션 등은 통일된 규약 없이 나름의 구조를 가지고 for 문 , for in 문 forEach 메서드등 다양한 방법으로 순회할 수 있었습니다. ES6에서는 순회 가능한 데이터 컬렉션을 이터레이션 프로토콜을 준수하는 이터러블로 통일하여 for...of문 , 스프레드문법, 배열 distructuring 할당의 대상으로 사용할 수 있도록 일원화 했습니다. - 이터러블 프로토콜 : Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속..
[JavaScript] CustomEvent JavaScript를 사용하면 핸들러를 할당할 수 있을 뿐만 아니라 이벤트를 직접 만들 수 있습니다. 내장 이벤트 클래스는 DOM요소 클래스 같이 계층 구조를 형성합니다. 내장 이벤트 클래스 계층의 꼭대기엔 Event 클래스가 존재합니다. 이벤트 객체는 아래와 같이 생성가능합니다. let event = new Event(type[, options]); 인수는 다음과 같습니다. type: 이벤트 타입을 나타내는 문자열로 'click'같은 내장이벤트, 'my-event' 같은 커스텀 이벤트가 올 수도 있습니다. options: 두 개의 선택 프로퍼티가 있는 객체가 옵니다. bubbles: true /false 이벤트 버블링 cancelabe: true/ false true인 경우 브라우저 기본동작이 실행되지..