주요 문서
-
Emscripten으로 WebAssembly와 JavaScript 코드 크기 줄이기
Emscripten은 asm.js 및 WebAssembly를 위한 컴파일러 툴체인으로 웹에서 C/C++를 네이티브에 가까운 속도로 실행할 수 있게 해줍니다. Emscripten 출력물의 크기는 최근에 굉장히 작아졌습니다(특히 작은 프로그램에서 더). 다음은 예제 C 코드입니다: #include <emscripten.h> EMSCRIPTEN_KEEPALIVE int add(int x, int y) { return x + y; } 이 코드는 두 수의 합을 내보내는 순수 연산의 “hello world” 입니다. -Os […]
-
Flash 이후의 삶: 열린 웹을 위한 멀티미디어
Flash는 10년이 넘는 시간동안 수십억 사용자들에게 비디오, 애니메이션, 인터렉티브한 사이트 그리고 광고를 제공했지만, 이제는 사라질 것입니다. Adobe는 2020년까지 Flash의 지원을 서서히 중단하기로 하였습니다. Firefox는 더 이상 Flash를 지원하지 않으며, Chrome에서도 지원하지 않습니다. 그럼 무엇을 쓸 수 있을까요? Flash에서 제공했던 것들이 가능한 수 많은 공개 표준이 있습니다. 진짜 열린 멀티미디어 Flash는 인터렉티브한 멀티미디어 웹사이트를 구축 및 […]
-
Atomics 를 이용해서 SharedArrayBuffer 레이스 컨디션 피하기
이 글은 3부작 시리즈의 세번째 글입니다. 메모리 특강 만화로 소개하는 ArrayBuffer 와 SharedArrayBuffer Atomics 를 이용해서 SharedArrayBuffer 레이스 컨디션 피하기 지난 글에서, 저는 SharedArrayBuffer 를 사용할 때 레이스 컨디션이 발생할 수 있다고 이야기했습니다. 레이스 컨디션 때문에 SharedArrayBuffer 는 다루기 어렵습니다. 그래서 우리는 어플리케이션 개발자가 SharedArrayBuffer 를 직접 사용하리라고 생각하지 않습니다. 하지만 다른 랭귀지를 사용해서 멀티스레드 […]
-
만화로 소개하는 ArrayBuffer 와 SharedArrayBuffer
이 글은 3부작 시리즈의 두번째 글입니다. 메모리 특강 만화로 소개하는 ArrayBuffer 와 SharedArrayBuffer Atomics 를 이용해서 SharedArrayBuffer 레이스 컨디션 피하기 지난 글에서는, JavaScript 같은 메모리 자동 관리 랭귀지의 메모리 관리 방식을 설명했습니다. 그리고 또 C 같은 메모리 수동 관리 랭귀지의 메모리 관리 방식도 설명했습니다. ArrayBuffers 와 SharedArrayBuffers 에 대해 이야기 하려고 하는데, 왜 이런 얘기가 […]
-
메모리 특강
이 글은 3부작 시리즈의 첫번째 글입니다. 메모리 특강 만화로 소개하는 ArrayBuffer 와 SharedArrayBuffer Atomics 를 이용해서 SharedArrayBuffer 레이스 컨디션 피하기 ArrayBuffer 와 SharedArrayBuffer 가 JavaScript 에 추가된 이유를 이해하려면, 우리는 메모리 관리에 대해 조금 알아야할 필요가 있습니다. 머신에 탑재된 메모리를 상자 더미로 생각해 봅시다. 나는 이것이 사무실에 있는 사서함이나, 유치원에서 있는 사물함과 비슷하다고 생각합니다. 만약 […]
-
무엇이 WebAssembly를 빠르게 만드나?
이글은 WebAssembly와 그 실행성능에 관한 시리즈의 5번째 글입니다. 아직 다른 글들을 읽지 않았다면 처음부터 읽기를 권합니다. 지난 글에서, 저는 WebAssembly 또는 JavaScript 프로그래밍이 어느 하나를 취사선택해야 하는 일이 아님을 설명했습니다. 우리는 많은 개발자들이 전적으로 WebAssembly를 이용해서 코드를 만드리라고 생각하지 않습니다. 그래서 개발자들은 자신의 어플리케이션을 개발할 때 WebAssembly와 JavaScript 중에서 하나를 선택할 필요가 없습니다. 대신, 우리는 […]
-
Firefox 가 Async/Await 를 제공합니다
비동기 코드를 보다 간결하고, 분명하고, 관리하기 쉽게 만들어 주는 새로운 키워드, async 와 await 가 Firefox 52 에 도입되었습니다. 최신 개발자 에디션에서 사용 가능합니다. Firefox 52 는 2017년 3월 일반에게 공개될 예정입니다. JavaScript 의 탁월한 싱글-쓰래드 퍼포먼스와 웹 응답성은 JavaScript 의 철저한 비동기적 설계 덕분입니다. 하지만, 이 비동기적 설계 때문에 “콜백 지옥 (callback hell)” 문제도 […]
-
debugger.html 를 소개합니다
debugger.html 은 Mozilla 가 만든 새로운 JavaScript 디버거입니다. debugger.html 은 React 와 Redux 로 만든 웹 어플리케이션입니다. 이 프로젝트는 올해 초 Firefox Developer Tools 의 디버거를 교체하기 위해 시작됐습니다. 우리가 원한 것은 다양한 타겟(multiple targets)을 디버깅할 수 있고, 또 독립(standalone) 모드로도 동작할 수 있는 디버거였습니다. 현재, debugger.html 은 Firefox 타겟에 접속해서 디버깅할 수 있습니다. 뿐만아니라 […]
-
ES6 In Depth: 미래
ES6 In Depth 시리즈는 ECMAScript 표준의 6번째 에디션(줄여서 ES6)을 통해 JavaScript 에 새로 추가된 기능들을 살펴보는 시리즈입니다. 지난번 ES6 모듈에 관한 글까지 우리는 ES6 에 새로 도입된 주요 기능들을 살펴보았습니다. 이번 글에서는 새로운 기능을 십여 개 더 살펴보려고 합니다. 우리가 지금까지 깊게 살펴보지 않은 기능들입니다. JavaScript 라는 건축물의 벽장과 구석방들을 들여다보는 재미있는 여행이라고 생각하세요. 거대한 […]
-
ES6 In Depth: 모듈
ES6 In Depth 시리즈는 ECMAScript 표준 6번째 에디션(줄여서 ES6)을 통해 JavaScript 에 새로 추가된 요소들을 살펴보는 시리즈입니다. 2007년 제가 모질라 JavaScript 팀에서 일하기 시작했을 때, 이런 농담이 있었습니다. 통상적인 JavaScript 프로그램의 라인 길이는 몇 줄일까요? 정답은 한 줄이었습니다. 그 때는 구글맵이 시작된 지 2년 지났을 때였습니다. 그전까지, JavaScript 의 주된 용도는 폼(form) 값을 검증하는 것이었습니다. […]