간편결제, 신용카드 청구할인
PAYCO(페이코) 최대 5,000원 할인
(페이코 신규 회원 및 90일 휴면 회원 한정)
네이버페이 1%
(네이버페이 결제 시 적립)
북피니언 롯데카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (21,600원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (24,300원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (25,110원)
(최대할인 3만원 / 3만원 이상 결제)
Close

웹어셈블리 : Wasm과 C/C++를 이용한 고성능 웹 애플리케이션 개발

원제 : Learn WebAssembly
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 75
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

할인혜택
적립혜택자동적립
추가혜택
배송정보
주문수량
감소 증가
  • 이벤트/기획전(1)

  • 연관도서(18)

  • 사은품(14)

책소개

Wasm과 C/C++를 이용한 고성능 웹 애플리케이션 개발

웹어셈블리가 무엇인지, 웹어셈블리 모듈을 어떻게 작성하고 빌드하는지가 궁금하다면 이 책을 보자. 작성한 웹어셈블리 모듈과 자바스크립트가 어떻게 상호작용하는지, 웹어셈블리를 이용해서 어떤 웹 애플리케이션을 만들 수 있는지 자세히 배울 수 있다.

출판사 서평

[이 책에서 다루는 내용]

- 웹어셈블리의 개념과 관련 요소(텍스트 포맷, 모듈, 자바스크립트 API)
- 웹어셈블리 모듈 생성과 로드, 디버깅(에디터와 컴파일러, 툴체인)
- C와 웹어셈블리를 이용한 고성능 애플리케이션 작성 방법
- 기존의 C++로 작성된 게임을 Emscripten을 이용해 웹어셈블리로 포팅
- 웹어셈블리의 향후 기능과 Node.js와의 통합, 또 다른 컴파일 방법

[이 책의 대상 독자]

웹을 위한 애플리케이션을 만들고자 하는 C/C++ 프로그래머이거나 자바스크립트 애플리케이션의 성능을 향상시키고자 하는 웹 개발자라면 이 책은 여러분을 위한 책이다. 이 책은 C와 C++를 배우는 것을 개의치 않는 자바스크립트 개발자나 또는 그 반대 경우의 개발자를 대상으로 한다. C/C++ 프로그래머와 자바스크립트 프로그래머를 위해 두 가지의 예제를 제공한다.

[이 책의 구성]

1장, '웹어셈블리란 무엇인가'에서는 웹어셈블리의 기원과 기술에 관해 개요를 간략하게 설명한다. 웹어셈블리가 어떻게 사용되고, 어떤 프로그래밍 언어가 지원되는지, 현재 어떤 제한이 있는지 설명한다.
2장, '웹어셈블리의 요소 - Wat, Wasm, 그리고 자바스크립트 API'에서는 웹어셈블리를 구성하는 요소를 설명한다. 텍스트 포맷과 바이너리 포맷을 자세히 설명하며 이와 관련된 자바스크립트 API와 Web API에 대해서도 설명한다.
3장, '개발 환경 세팅'에서는 웹어셈블리로 개발하는 데 사용되는 도구를 알아본다. 각 플랫폼별 설치 방법과 개발 경험을 향상시키기 위한 권장 내용도 포함한다.
4장, '필수 종속성 설치'에서는 각 플랫폼별로 설치가 필요한 툴체인 설치 방법을 제공한다. 4장을 통해 C와 C++를 웹어셈블리 모듈로 컴파일할 수 있게 될 것이다.
5장, '웹어셈블리 모듈 생성과 로딩'에서는 Emscripten을 이용해 웹어셈블리 모듈을 만드는 방법과 컴파일러 출력물에 영향을 주는 플래그를 컴파일러에 전달하는 방법을 설명한다. 브라우저에서 웹어셈블리 모듈을 로딩하는 기술에 대해서도 설명한다.
6장, '자바스크립트와의 상호작용과 디버깅'에서는 Emscripten의 Module 객체와 브라우저의 전역 WebAssembly 객체와의 차이에 대해 자세히 설명한다. Emscripten이 제공하는 기능과 소스 맵을 만드는 절차에 대해서도 설명한다.
7장, '웹 어셈블리 애플리케이션 만들기'에서는 웹어셈블리 모듈과 상호작용하는 자바스크립트 회계 애플리케이션을 만들어 볼 것이다. 회계 거래를 계산하고 자바스크립트와 컴파일된 웹어셈블리 모듈 간에 데이터를 전단하기 위한 C 코드를 작성할 것이다.
8장, 'Emscripten으로 게임 포팅'에서는 기존의 C++ 게임을 Emscripten을 이용해서 웹어셈블리로 포팅하는 과정을 단계별로 설명한다. 기존의 C++ 코드를 검토한 후에는 게임이 브라우저에서 실행될 수 있도록 적절히 파일을 수정할 것이다.
9장, 'Node.js와 통합'에서는 서버와 클라이언트에서 Node.js와 npm이 웹어셈블리에서 어떻게 사용되는지 설명한다. Express 애플리케이션에서의 웹어셈블리 사용과 웹어셈블리와 webpack과의 통합 그리고 Jest를 이용해서 웹어셈블리를 테스트하는 방법을 설명한다.
10장, '고급 도구와 향후 기능'에서는 고급 도구와 사용 사례, 현재 표준화 절차에 있는 새로운 웹어셈블리의 기능을 설명한다. 또한 WABT과 Binaryen, 온라인에서 사용 가능한 도구에 관해서도 설명한다. LLVM을 이용해서 웹어셈블리 모듈로 컴파일하는 방법과 Web Workers와 웹어셈블리가 어떻게 함께 사용되는지에 대해서도 배우게 될 것이다. 표준화 절차와 스펙에 추가되기 위한 과정에 있는 몇 가지 흥미로운 기능을 살펴본다.

목차

1장. 웹어셈블리란 무엇인가
웹어셈블리로의 여정
-자바스크립트의 진화
-구글과 네이티브 클라이언트
-모질라와 asm.js
-웹어셈블리의 탄생
웹어셈블리가 정확히 무엇이고 어디에 사용할 수 있는가?
-공식적인 정의
-Core Specification
-자바스크립트와 Web API
-그렇다면 웹어셈블리가 자바스크립트를 대체할까?
-어디에서 사용할 수 있을까?
어떤 언어가 지원되는가?
-C와 C++
-Rust
-다른 언어들
웹어셈블리의 한계는 무엇인가?
-가비지 컬렉션()이 없음
-DOM에 대한 직접적인 접근이 없음
-오래된 브라우저에 대한 지원이 없음
Emscripten과의 관계
-Emscripten의 역할
-EMSDK와 Binaryen
요약
질문
추가 자료

2장. 웹어셈블리의 요소 - Wat, Wasm 그리고 JavaScript API
공통 구조와 추상 구문
Wat
-정의와 S-표현
-값, 타입 그리고 명령
-개발 과정에서의 역할
바이너리 포맷과 모듈 파일
-정의와 모듈 개요
-모듈 섹션
자바스크립트 API와 Web API
-웹어셈블리 저장소와 객체 캐시
-모듈 로딩과 웹어셈블리 네임스페이스 메소드
-WebAssembly 객체
WasmFiddle을 이용한 개념 연결
-WasmFiddle이란?
-C 코드에서 Wat로
-Wasm에서 자바스크립트로
요약
질문
추가 자료

3장. 개발 환경 세팅
개발 툴 설치
-운영체제와 하드웨어
-패키지 매니저
-Git
-Node.js
-GNU make와 rimraf
-VS Code
VS Code 설정
-설정과 사용자 정의 관리
-확장 프로그램 개요
-C/C++와 웹어셈블리를 위한 설정
-다른 유용한 확장 프로그램들
-Bracket pair colorizer
웹을 위한 설정
-책 예제 코드 저장소 복제
-로컬 서버 설치
-브라우저 확인
다른 툴들
-맥OS를 위한 iTerm2
-우분투를 위한 Terminator
-윈도우를 위한 cmder
-Zsh와 Oh-My-Zsh
요약
질문
추가 자료

4장. 필수 종속성 설치
개발 워크플로
-워크플로의 단계
-워크플로에 툴을 통합
Emscripten과 EMSDK
-Emscripten 개요
-EMSDK는 어디에 적합한가?
필수 구성 요소 설치
-공통적으로 필요한 필수 구성 요소
-맥OS에 필수 구성 요소 설치하기
-우분투에 필수 구성 요소 설치하기
-윈도우에 필수 구성 요소 설치하기
EMSDK 설치와 설정
-모든 플랫폼에서의 설치 절차
-맥OS와 우분투에서의 설치
-윈도우에서의 설치와 설정
-VS Code 설정
컴파일러 테스트
-C 코드
-C 코드 컴파일
요약
질문
추가 자료

5장. 웹어셈블리 모듈 생성과 로딩
글루 코드로 C 컴파일
-예제 C 코드 작성
-예제 C 코드 컴파일
Emscripten 모듈 로딩
-사전에 생성된 로딩 코드
-사용자 정의 로딩 코드 작성
글루 코드 없이 C 컴파일
-웹어셈블리를 위한 C 코드
-VS Code의 Build Task로 컴파일
Wasm 파일을 가져오고 인스턴스화하기
-일반적인 자바스크립트 로딩 코드
-HTML 페이지
-실행과 테스트
요약
질문
추가 자료

6장. 자바스크립트와의 상호작용과 디버깅
Emscripten Module과 WebAssembly 객체
-Emscripten의 Module이 무엇일까?
-글루 코드의 디폴트 메소드
-WebAssembly 객체와의 차이점
자바스크립트에서 컴파일된 C/C++ 함수 호출
-Module에서 함수 호출
-웹어셈블리 인스턴스에서 함수 호출
C/C++에서 자바스크립트 함수 호출
-글루 코드를 이용한 자바스크립트와의 통합
-글루 코드 이용 예
-글루 코드 없이 자바스크립트와 통합
-글루 코드 없는 예
고급 Emscripten 기능
-Embind
-파일 시스템 API
-Fetch API
브라우저에서 디버깅
-하이 레벨의 개요
-소스 맵 이용
요약
질문
추가 자료

7장. 웹어셈블리 애플리케이션 만들기
분식 회계-웹어셈블리를 신뢰성 있게 만들기
-개요와 기능
-사용된 자바스크립트 라이브러리
-C와 빌드 절차
-프로젝트 셋업
-Node.js 설정
-파일과 폴더 추가
-빌드 절차 설정
-목업 API 설정
-C stdlib Wasm 다운로드
-최종 결과
C 부분 빌드
-개요
-C 파일 내용
-Wasm으로 컴파일
자바스크립트 부분 빌드
-개요
-initializeWasm.js에서 Wasm 인스턴스 생성
-WasmTransactions.js에서 Wasm과 상호작용
-api.js에서 API 이용
-store.js에서 전역 상태 관리
-main.js에서 애플리케이션 로드
-웹 자산 추가
-Vue 컴포넌트 생성
애플리케이션 실행
-/src 폴더 확인
-시작!
-테스트
-마무리
요약
질문
추가 자료

8장. Emscripten으로 게임 포팅
게임의 개요
-테트리스 게임
-소스코드의 출처
-테트리스 소스코드 가져오기
-네이티브 프로젝트 빌드
-게임 실행
코드의 세부 내용
-코드를 객체로 분해하기
-constants 파일
-piece 클래스
-Board 클래스
-Game 클래스
-main.cpp 파일
-Emscripten으로 포팅
-포팅을 위한 준비
-무엇이 변경되는가?
-웹 자산 추가
-기존 코드 포팅
게임 빌드와 실행
-VS Code Task로 빌드
-Makefile로 빌드
-게임 실행
요약
질문
추가 자료

9장. Node.js와 통합
왜 Node.js인가?
-매끄러운 통합
-상호 보완적인 기술
-npm으로 개발
xpress를 이용한 서버 사이드 웹어셈블리
-프로젝트 개요
-Express 설정
-Node.js로 Wasm 모듈 인스턴스화
-목업 데이터베이스 만들기
-웹어셈블리 모듈과의 상호작용
-애플리케이션 빌드와 실행
Webpack을 이용한 클라이언트 사이드 웹어셈블리
-프로젝트 개요
-Webpack이 무엇인가?
-Webpack 설치와 설정
-C 코드
-자바스크립트 코드
-애플리케이션 빌드와 실행
Jest로 웹어셈블리 모듈 테스트
-테스트 대상 코드
-테스트 설정
-테스트 파일
-테스트 실행
요약
질문
추가 자료

10장. 고급 도구와 향후 기능
WABT와 Binaryen
-WABT-웹어셈블리 바이너리 툴킷
-Binaryen
LLVM으로 컴파일
-설치 과정
-예제 코드
-컴파일과 실행
온라인 도구
-WasmFiddle
-WebAssembly Explorer
-WebAssembly Studio
Web Workers로 Wasm 병렬 처리
-Web Workers와 웹어셈블리
-코드의 개요
-C 코드
-자바스크립트 코드
-웹 자산
-애플리케이션 빌드와 실행
향후 기능
-표준화 절차
-스레드
-호스트 바인딩
-가비지 컬렉션
-레퍼런스 타입
요약
질문
추가 자료

본문중에서

이 책은 브라우저에서 자바스크립트가 아닌 다른 언어를 실행시켜주는 새롭고 흥미로운 기술인 웹어셈블리를 소개한다. 웹어셈블리를 이용하는 C/자바스크립트 애플리케이션을 처음부터 구현하는 방법과 기존의 C++로 작성된 코드를 Emscripten의 도움으로 브라우저에서 실행되는 코드로 포팅하는 과정을 설명한다.
웹어셈블리는 웹 플랫폼의 중요한 변화를 의미한다. C와 C++, Rust와 같은 언어를 대상으로 컴파일할 수 있게 해주기 때문에 새로운 종류의 애플리케이션을 만들 수 있다. 주요 브라우저는 웹어셈블리를 지원하며 이는 곧 브라우저 개발사들이 공동으로 노력한다는 것을 뜻한다.
이 책에서는 웹어셈블리의 기원뿐만 아니라 웹어셈블리를 구성하는 요소도 설명할 것이다. 필요한 도구를 설치하고 개발 환경을 셋업하며 웹어셈블리와 상호작용하는 과정 전체를 살펴볼 것이다. 간단한 예제로 시작해서 점점 더 발전적인 사용 사례들을 살펴볼 것이다. 이 책을 다 읽고 나면 C, C++ 또는 자바스크립트 프로젝트에 웹어셈블리를 사용할 준비가 될 것이다.
('지은이의 말' 중에서)

웹어셈블리는 기존의 웹 애플리케이션 개발 패러다임을 바꿀 수 있는 기술로, 앞으로 어떻게 성장하고 발전해 나갈 것인지 관심 갖고 지켜봐야 하는 분야다. 아직 일반적으로 사용되기에는 진입 장벽이 있고 부족한 점도 있지만 기술 자체의 개념과 목적, 필요성이 명확하기 때문에 대부분의 웹 브라우저 벤더에서 이미 웹어셈블리를 지원하고 있다.
비록 지금은 다른 웹 기술에 비해서 상대적으로 많은 관심을 받거나 사용되는 것은 아니지만, 웹어셈블리를 사용해 기존보다 빠른 성능의 웹 애플리케이션을 만들 수 있다. 그리고 이를 통해서 사용자들에게 다양하고 풍부한 웹 경험을 제공할 수 있다. 비단 PC나 모바일의 웹 브라우저 기반의 웹 애플리케이션뿐만 아니라, 잠재적으로 IoT나 자동차, 로봇 등 다양한 플랫폼에도 네이티브 애플리케이션처럼 적용이 가능하다고 생각한다.
이 책을 통해 웹어셈블리가 무엇이며, 웹어셈블리 모듈을 어떻게 작성하고 빌드하는지, 작성한 웹어셈블리 모듈과 자바스크립트가 어떻게 상호작용하며 웹어셈블리를 이용해서 어떤 웹 애플리케이션을 만들 수 있는지 자세히 알게 될 것이다.
('옮긴이의 말' 중에서)

저자소개

마이크 루크(Mike Rourke) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

10년 넘게 코드를 작성해왔다. VBA로 마이크로소프트 액세스 애플리케이션 작성을 시작했고 모질라 파이어폭스 확장 프로그램(Mozilla Firefox extension)을 작성한 이후, 자바스크립트 풀타임 개발자로 일하기로 결정했다. 기계공학을 전공했으며 2017년 소프트웨어 엔지니어가 되기 전에는 주로 제품 설계/제조 엔지니어로 일했다. 현재 시카고에 기반을 둔 컨설팅 회사에서 일하고 있으며 프론트엔드 자바스크립트 개발에 몰두하고 있다. 코드를 작성하지 않을 때는 소울메이트들과 함께 캠핑하기 위해 숲으로 간다

생년월일 -
출생지 -
출간도서 0종
판매수 0권

기존의 IT 기술과 새로 만들어지고 있는 최신 기술을 보안이라는 관점에서 이해하고, 새로운 기술, 비즈니스 영역의 새로운 보안 위협과 그에 대한 대응 기술에 대해 고민하며, 에이콘출판사를 통해 다양한 보안 관련 지식을 공유하고자 노력 중이다. 지금도 여전히 새로운 분야에 대한 보안 기술 연구와 다양한 보안 기술 개발을 위해 진땀 흘리고 있다.

역자의 다른책

전체보기

이벤트 기획전

이 상품의 시리즈

프로그래밍 언어 시리즈(총 19권 / 현재구매 가능도서 19권)

펼쳐보기

이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

    리뷰

    0.0 (총 0건)

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    0.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용