Iteration Protocol ES6에 도입되어 데이터 컬렉션을 순회하기 위한 규칙 Iteration Protocol을 준수하면 for.. of, Spread 문법을 사용할 수 있음. Iteration Protocol = Iterable Protocol + Iterator Protocol const array = [1, 2, 3]; for (const value of array) { console.log(value); } console.log(...array); Iterable Protocol Symbol.iterator 메소드를 구현한 객체를 의미한다. (나 순회 할수 있어! 라고 알려주는 척도) const array = [1, 2, 3]; // iterator가 배열에 존재하는지 여부 consol..
생소한 Deno에 대한 기본적인 개념을 정리 하고자 한다. 사용법은 어렵지 않으므로 document를 읽어본다. deno 출현 배경 라이언 달(Ryan Dahl)은 JSConf.EU 행사 첫날의 저녁 세션에서 "Things | Regret About Node.js"라는 제목으로 nodejs 설계실수를 발표하며 deno를 소개함. Node.js 사용자는 너무나 많기 때문에 Node.js의 잘못된 것들을 당장 바로잡는 것이 어렵게됨. TypeScript와 같은 파생 프로젝트도 생겨나면서 빌드 시스템과 프로젝트 자체를 관리하는 툴만으로도 굉장히 복잡해졌음. 외부 라이브러리가 꼭 npm 저장소를 통해야만 한다는 것은 웹의 이상적인 방향과도 맞지 않음. NodeJS 설계 실수 1. Promises를 고집하지 않은..
WebRTC (Real-Time Communication) WebRTC 란 웹 브라우저만으로 실시간 화상 통신을 구현할 수 있는 API이다. 기존에는 플래시와 같은 서드 파티 소프트웨어를 사용하여 화상 통신을 구현 했으나 WebRTC를 사용하여 서드 파티를 사용하지 않고 웹브라우저로만 와상 통신 서비스가 가능해졌다. 모든 브라우저가 아닌 WebRTC기능을 포함한 브라우저(Chrome)을 사용해야 가능하다. (https://caniuse.com/#search=webrtc) WebRTC API getUserMedia: 사용자 단말기의 미디어 장치를 액세스할 수 있는 방법을 제공한다. 미디어 장치라 함은 마이크와 웹캠을 의미한다. getUserMedia 를 통해 미디어 장치를 액세스 하게 되면 미디어 스트림 ..
웹소켓 이전 요청 방식 웹소켓이 나오기전에 전형적인 웹 요청 방식은 client -> server로의 단방향 요청이다. 이전에는 이러한 방식이 문제가 되지 않았으나 점차 웹서비스와 기술이 다양해지면서 server -> client측으로 데이터를 전송할 수 있는 방법이 필요해졌다. 허나, http 통신 특성상 한번 통신을 하면 연결이 끊기기때문에 서버에서 데이터를 먼저 보낼수 있는 방법은 존재하지 않아 Polling, Long Polling, Streaming 와 같은 방식들 사용하여 비슷한 효과를 낼 수 있었다. WebSocket 사용자와 서버 사이의 양방향 연결 채널을 구성하는 HTML5 프로토콜이다. WebSocket API를 통해 서버로 메시지를 보내고 요청 없이 응답을 받아오는 것이 가능하다. 그..
동기(synchronous) 및 비동기(asynchronous) 동기 방식 - 하나의 요청이 처리되는 동안 다른 요청이 처리되지 못하며 요청이 완료되어야만 다음 처리가 가능한 방식. (ex. java) 비동기 방식 - 하나의 요청 처리가 완료되기 전에 제어권을 다음 요청으로 넘겨 Blocking 되지 않으며 다음 요청을 처리 하는 방식. (ex. nodejs) NodeJS 비동기 IO를 지원하며 Single-Thread 기반으로 동작하는 서버. 클라이언트의 요청을 비동기로 처리하기 위하여 이벤트가 발생하며 Event Loop가 처리. Event Loop가 처리하는 동안 제어권은 다음 요청으로 넘어가고 처리가 완료되면 Callback을 호출하여 처리완료를 호출측에 알려준다. 올바른 사용 환경 각 단위 작업..
Prototype? 의미 prototype: 원형, 견본 어떠한 객체가 만들어지기 위해 그 객체의 모태가 되는 오브젝트를 의미한다. 모든 함수 객체의 생성자는 prototype 프로퍼티를 가지고 있다. 객체 생성 함수는 생성자로 대응되며 각 객체에서 공유되어 사용할 프로퍼티 및 함수는 prototype 객체에 넣어서 사용한다. 객체 생성시 new키워드를 사용하여 생성한다. // 생성자 함수 function Person (name) { // 이름을 객체에 초기화한다. this.name = name; } // 객 객체에서 공유될 함수인 getName()을 prototype에 정의한다. Person.prototype.getName = function () { return this.name; } const pe..