[번역] 카툰으로 소개하는 웹어셈블리

웹어셈블리는 자바스크립트가 아닌 다른 프로그래밍 언어로 작성된 코드를 브라우저에서 실행시키기 위한 방법이다. 그래서 사람들이 웹어셈블리가 빠르다고 이야기하는 건, 자바스크립트와 비교했을 때 빠르다는 말이다. 지금 나는 자바스크립트나 웹어셈블리 둘 중의 하나만 선택해야 한다고 말하고 싶은 것이 아니다. 사실, 우리는 개발자들이 동일한 어플리케이션에서 웹어셈블리와 자바스크립트를 모두 사용하기를 기대한다.

[번역] 자바스크립트의 재귀, PTC, TCO, STC 에 대한 모든 것

요즘은 모두가 함수형 프로그래밍과 그 개념에 대해서 열광적인 것 같다. 하지만 많은 사람들이 재귀(Recursion)나, 특히 적절한 꼬리 호출(Tail Call)에 대해서는 이야기하지 않는 것 같다. 이는 스택이 넘치는 일 없이 깔끔하고 간결한 코드를 작성하기 위해 매우 중요한데도 말이다. 이 글에서는 재귀를 더 잘 시각화하고 생각할 수 있는 팁을 제공하고, 적절한 꼬리 호출, 꼬리 호출 최적화, 문법적 꼬리 호출이 무엇인지와 각각의 차이점, 작동 방식, 그리고 주요 자바스크립트 엔진에서 어떤 식으로 구현되어있는지에 대해 설명하도록 하겠다.

[번역] CSS의 진화 : CSS 부터 SASS, BEM, CSS 모듈, 스타일드 컴포넌트 까지

인터넷이 시작된 이후로 우리는 항상 웹사이트를 꾸며야 했고, CSS는 언제나 우리 주변에 있으면서 몇년동안 자신만의 페이스로 진화해 왔다. 이 글은 여기에 대한 자세한 내용을 여러분에게 알려주려고 한다. 먼저 우리는 CSS가 무엇인지에 대해서 공감대를 형성해야 하는데, CSS가 마크업 언어로 쓰여진 문서의 표현을 기술하기 위해 사용된다는 점에 대해서는 우리 모두 동의하고 있을거라 생각한다. CSS가 꾸준히 진화해 왔으며 최근에 더욱 강력해졌다는 것은 새로울 것이 없지만, CSS를 팀단위의 작업에서 사용하기 위해서는 부가적인 도구가 필요하다는 것도 다들 알고있을 것이다.

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)으로 인한 콜백 지옥이다 (굳이 설명 안 해도 알 거라 믿는다. 밑에서 지옥을 한번 소환할 예정이니 혹시 몰라도 일단 넘어가자).