전체 글(9)
-
85 거침없는 자바스크립트 5회차
https://www.youtube.com/watch?v=91MWKpjyGx8&t=1933s 저번 시간에 만들었던 AIter 클래스 타입과 그를 이용한 제네레이터 함수들을 조금 더 객체지향적으로 고쳐보자. 앞서 이러한 dataLoader를 만들었었다. const dataLoader = async function* (...aIters) { let prev; for (const iter of aIters) { iter.update(prev); //이전 값으로 업데이트 한 뒤 API 호출 prev = (await iter.load().next()).value; yield prev; } }; 이 dataLoader 함수는 prev에 대한 다양한 정책을 사용할 수 있다. 현재는 예전 인자를 넘겨주고 있지만 배열에..
2022.03.22 -
85 거침없는 자바스크립트 4회차
85-4 이번 시간에는 순차적 비동기에 대해서 알아볼 것이다. Sequential Async 비동기가 순차적으로 일어난다고 하면 의아할 사람들도 있을 것이다. 보통은 비동기를 병렬적으로 처리하는 것을 목표로 하기 때문이다. async await 구문은 기본적으로 동기화에 대한 순차를 지정하게 된다. 따라서 우리는 병렬처리를 위해서 Promise.all이나 Promise.race를 사용하는게 일반적이다. 그런데 이러한 내장 메서드가 과연 정말 병렬적인지에 대해서는 생각해보아야 한다. 우리가 응답시간이 다른 여러개의 API의 호출을 한다고 할 때 Promise.all은 가장 응답시간이 느린 호출을 기준으로 Promise를 리턴한다. 그러나 이보다 더 좋은 방법이 있다. 바로 응답시간에 관계없이 응답되자 마자..
2022.03.20 -
코드스피츠 85 - 거침없는 자바스크립트 3회차
코드스피츠 85 거침없는 자바스크립트 - 3회차 지난 시간에 Continuation Passing Style , 줄여서 CPS의 한가지 예시를 알아보았다. CPS는 프로그래밍 패러다임보다는 조금은 좁은 프로그래밍 스타일을 일컫는 말이다. 이번 강의에서는 CPS의 여러 방식들을 배워볼 것이다. Context & Switch 다음과 같은 간단한 제네레이터 함수를 보자. const gene = function*(a){ let b; yield a; b=a; yield b; } 우리는 앞서 제네레이터의 yield 구문은 코드 내부의 sync flow 도중에 suspend를 걸어 제어를 위임할 수 있다고 배웠다. 그런데, 한 가지 궁금한 점이 생긴다. 바벨은 제네레이터 또한 ES5로 트랜스파일해준다. 그렇다면 제네..
2022.03.15 -
85 거침없는 자바스크립트 2회차
동시성과 병렬성 Concurrency and Parallelism 동시성은 엄밀히 말하면 Concurrency를 직역한 오역에 가깝다. Concurrency는 마치 동시에 일어나는 것 같은 일 을 말하며 시분할 컴퓨터 시스템 등이 이에 해당된다. 반면 병행성이란 정말로 작업의 수만큼 프로세서가 존재하고, 각각 작업을 하나씩 맡아 여러개의 작업이 같이 수행하는 것을 말한다. 병행성에서는 메모리 공유의 문제가 일어난다. 각기 따로 할당된 프로세서가 서로 같은 메모리를 참조할 때 다른 프로세서가 좀유하고 난 후의 메모리 상태가 이전과 같다는 보장이 되지 않기 때문이다. 이 문제를 해결하기 위해서는 공유하는 메모리에 대해 한번에 하나의 프로세서만 사용할 수 있도록 blocking을 유발하는 방법밖에 없다. 그렇..
2022.03.11 -
85 거침없는 자바스크립트 1회차
이 글은 코드스피츠 유튜브 85 거침없는 자바스크립트 를 토대로 작성된 것입니다.이 강의에서는 앞으로 자바스크립트에 새롭게 추가된 async generator 의 개념을 학습하기 이전에 앞서 자바스크립트의 개발의 전반적인 모습과 학습의 근간이 되는 지식들을 다룹니다. 앞으로 보다 발전된 내용을 다루기 전에 개념을 학습하는 강의라고 보시면 될 것 같습니다. 85 코드스피츠 85 거침없는 자바스크립트 - 1회차 이번 강의에서 우리는 자바스크립트 언어 전반에 걸쳐서 중요한 개념들에 대해서 학습해 볼 것이다. 현대의 자바스크립트란 어떤 언어인가? Modern Javascript 는 살아움직이는 언어이다. 우리가 자바스크립트를 어떻게 공부해야할지 , 어떻게 대해야할지 알기 힘들다. 게다가 현대의 개발은 대부분 프..
2022.03.11 -
86 객체지향 자바스크립트-5회차
86-5 코드스피츠 86 객체지향 자바스크립트 - 5회차 지난 3번째 강의에서 우리는 Binder의 도메인 전략을 외부로 위임하기 위한 Processor라는 전략 객체를 만들었었다. 이를 통해 우리는 실제 도메인에서 수행할 전략에 대한 코드는 남김없이 Binder에서 제거할 수 있었다. 그런데 현재 우리의 ViewModel의 생성자를 보자. class ViewModel extends ViewModelSubject{ constructor(checker, data, _=type(data, "object")) { if (checker != ViewModel.#private) throw 'use Viewmodel.get()'; super(); Object.entries(data).forEach(([cat,obj..
2022.03.06