[번역] 클라이언트 측의 저장소 살펴보기

브라우저 내부에 직접 데이터를 저장하게 되면 많은 장점이 있다. 가장 중요한 장점은 네트워크 없이도 빠르게 "데이터베이스"에 접근할 수 있다는 점이다. 클라이언트 측에 데이터를 저장하는 방식은 현재 다음의 4가지가 있다. (하나가 더 있지만 디프리케이트 되었다) 쿠키 (Cookies) 로컬 저장소 (Local Storage) 세션 저장소 (Session Storage) IndexedDB WebSQL (deprecated)

Cycle.js 소개

Cycle.js는 이벤트 스트림 방식을 기반으로 프론트 엔드 어플리케이션을 만들 수 있도록 해 주는 프레임워크이다. RxJS의 컨트리뷰터 중 한 명인 André Staltz가 만들었으며, RxJS를 기반으로 완전한 반응형(Reactive) 프로그래밍을 할 수 있게 해 준다. André Staltz는 Cycle.js를 소개하며 React가 이름과는 다르게 완전히 Reactive 하지 않다는 비판을 하기도 했는데, 그런 의미에서 Cycle.js는 React가 일부 도입한 반응적, 함수형 특징을 좀 더 극단까지 밀어붙인 프레임워크라고도 할 수 있을 것이다.

[번역] 왜 Flow를 사용하는가?

Flow는 Facebook이 오픈소스로 만든 자바스크립트를 위한 정적 타입 검사기이다. Flow는 자바스크립트의 많은 약점들을 해결해 주며, 더 낫고 이해하기 쉬운 코드를 작성할 수 있도록 해 준다. Flow의 홈페이지에 따르면: Flow는 아래와 같은 자바스크립트의 일반적인 버그들을 프로그램을 실행하기 전에 잡아낼 수 있다. - 암묵적 타입 변환 - Null 참조 - 그리고 무시무시한 'undefined is not a function'

자바스크립트와 이벤트 루프

자바스크립트의 큰 특징 중 하나는 ‘단일 스레드’ 기반의 언어라는 점이다. 스레드가 하나라는 말은 곧, 동시에 하나의 작업만을 처리할 수 있다라는 말이다. 하지만 실제로 자바스크립트가 사용되는 환경을 생각해보면 많은 작업이 동시에 처리되고 있는 걸 볼 수 있다. 예를 들면, 웹브라우저는 애니메이션 효과를 보여주면서 마우스 입력을 받아서 처리하고, Node.js기반의 웹서버에서는 동시에 여러 개의 HTTP 요청을 처리하기도 한다. 어떻게 스레드가 하나인데 이런 일이 가능할까? 질문을 바꿔보면 ‘자바스크립트는 어떻게 동시성(Concurrency)을 지원하는 걸까’?

ES6의 제너레이터를 사용한 비동기 프로그래밍

자바스크립트가 다른 언어들과 구분되는 큰 특징 중의 하나는 바로 싱글스레드를 기반으로 하는 비동기 방식의 언어라는 점이다. 이런 특징에 힘입어 Non-blocking IO을 사용하는 Node.js의 언어로 사용되면서 최근에는 서버사이드에서도 큰 인기를 얻고 있다. 하지만 이런 구조적 특징에서 오는 단점도 적지 않은데, 대표적인 것이 바로 연속적 전달 방식(CPS)으로 인한 콜백 지옥이다 (굳이 설명 안 해도 알 거라 믿는다. 밑에서 지옥을 한번 소환할 예정이니 혹시 몰라도 일단 넘어가자).

[번역] 불변(Immutable) 데이터 구조와 자바스크립트

얼마전에 나는 현재의 내 블로그를 재작성할 것이라 말하면서, 내가 배운 것들에 대해 좀더 깊이 들어가 보기로 약속했다. 오늘 나는 자바스크립트에서의 불변 데이터 구조, 특히 immutable.js 와 seamless-immutable 라이브러리에 대해 이야기할 것이다. 다른 라이브러리들도 있지만, 개념적으로는 완전히 영구적인 데이터 구조이거나 네이티브 자바스크립트 객체를 복사한 것 중의 하나일 것이고, 당신이 어떤 라이브러리를 선택하든 간에*[1]* 이들 두 라이브러리를 비교해 보는것으로 각자의 장단점을 잘 알게 될 것이다. 또한 transit-js 에 대해서도 조금 언급할 예정인데, 이는 직렬화를 할 때에 매우 유용할 것이다.

[번역] 바보들을 위한 자바스크립트 엔진 가이드

참고로 말하자면, 나는 이글을 쓰는 사람이나 읽는 사람 모두 바보라고 생각하지 않는다. 하지만 가끔은 어떤 주제가 당신을 바보로 느끼도록 만들 때가 있다. 자바스크립트 코드를 구동하는 엔진이 그런 주제 중의 하나이다 (최소한 나에게는). 웹에서 코드를 작성할 때, 단지 문자들을 나열했을 뿐인데, 브라우저에서 뭔가가 나타나는 걸 보면 가끔은 약간의 마법같다는 생각이 든다. 하지만 기술 뒤에 숨겨진 마법을 이해한다면 당신의 프로그래밍 솜씨를 향상시키는 데에 도움이 될 것이다. 최소한 자바스크립트 기반의 웹이나 모바일 기술의 내부에서 일어나는 일들에 대해 설명을 할 때 바보같다는 느낌이 덜 들게 될 수는 있을 것이다.