Thumbnail
개발 · 프로그래밍 웹 개발

WebAssembly 프로그래밍 대시보드

(4.3)
3개의 수강평 ∙  78명의 수강생
77,000원

월 15,400원

5개월 할부 시
지식공유자: 김대진
총 67개 수업 (13시간 26분)
수강기한: 
12개월
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

초급자를 위해 준비한
[웹 개발, 풀스택] 강의입니다.

WebAssembly를 이용해 C, C++, Rust 등의 컴파일 언어로 웹 브라우저에서 동작하는 고성능 웹 애플리케이션을 개발 할 수 있습니다.

✍️
이런 걸
배워요!
C로 작성한 어플리케이션을 웹 브라우저에서 실행할 수 있음
C++로 작성한 어플리케이션을 웹 브라우저에서 실행할 수 있음
Rust로 작성한 어플리케이션을 웹 브라우저에서 실행할 수 있음

 C, C++, Rust로 웹 애플리케이션을! 
웹어셈블리 프로그래밍의 모든 것.

컴파일 언어로 웹 애플리케이션을? 
WebAssembly 프로그래밍

웹 브라우저에서 동작하는 웹 애플리케이션을 개발하기 위해서는 HTML, CSS, JavaScript, PHP, ASP. NET, JSP 등 웹 프로그래밍 언어를 사용해야 합니다. C, C++, Rust 등의 컴파일 언어로는 웹 애플리케이션을 개발할 수 없습니다. 

웹 프로그래밍 언어의 예

하지만 WebAssembly라는 기술을 사용하면 C, C++, Rust 등의 컴파일 언어를 이용해 웹 애플리케이션을 개발할 수 있게 됩니다. 즉 WebAssembly는 새로운 프로그래밍 언어가 아니라 컴파일 언어로 웹 애플리케이션을 구현하는 기술입니다.

WebAssembly(WASM)

다음 그림과 같이 WebAssembly 기술을 이용하면 C, C++, Rust 등의 언어로 컴파일한 실행 파일을 웹 브라우저에서 실행할 수 있습니다. 

WebAssembly 기술은 컴파일 언어로 하여금 네이티브에 가까운 빠른 속도로 웹브라우저에서 동작하는 웹 애플리케이션을 개발할 수 있다는 강점이 있습니다. JavaScript로 구현하기 어려웠던 복잡한 로직 및 고성능을 요하는 웹 애플리케이션 또한 WebAssembly를 이용해 구현할 수 있습니다.

네이티브 웹 애플리케이션 vs. WebAssembly 웹 애플리케이션

동일한 소스코드를 사용해 빌드한 네이티브 애플리케이션과 WebAssembly 기술을 이용해 빌드한 웹 애플리케이션을 비교해 실행한 화면입니다. 비교 결과 동작 속도 차이를 느끼기 어려울 정도로 빠른 실행 결과를 보여줍니다. 

1) 동일한 소스코드로 빌드한 Clock 실행 비교 화면

네이티브 컴파일러를 이용해 빌드한 파일을 실행한 화면
WebAssembly 기술로 빌드한 실행파일(WASM)을 웹 브라우저에서 실행한 화면

2) 동일한 소스코드로 빌드한 Submarine Attack 게임 소스코드 실행 비교 화면

네이티브 컴파일러를 이용해 빌드한 파일을 실행한 화면
WebAssembly 기술로 빌드한 실행파일(WASM)을 웹 브라우저에서 실행한 화면

3) 동일한 소스코드로 빌드한 Colliding Mice 실행 비교 화면

네이티브 컴파일러를 이용해 빌드한 파일을 실행한 화면
WebAssembly 기술로 빌드한 실행파일(WASM)을 웹 브라우저에서 실행한 화면

WebAssembly가 지원하는 언어

현재 20개의 언어가 WeAssembly를 지원합니다. 컴파일 언어 외에 인터프리터 언어도 지원합니다. 앞으로 WebAssembly가 지원하는 언어는 더 늘어날 전망입니다. 

JavaScript VS WebAssembly 

JavaScript는 WebAssembly에 비해 여러 단계의 과정을 거쳐 웹 브라우저에서 실행됩니다. 반면 WebAssembly는 그보다 간단한 과정을 거치며, 크게 Decode - Compile 및 Optimize의 3가지 과정을 거쳐 웹 브라우저에서 실행됩니다. 

그렇기 때문에 JavaScript에 비해 훨씬 빠른 속도로 웹 어플리케이션을 시작할 수 있습니다.

WebAssembly의 역사

2015년 첫 시연 당시 WebAssembly는 Unity의 Angry Bots을 Firefox, Google Chrome, Microsoft Edge 웹 브라우저에서 실행하였습니다. 현재 W3C(World Wide Web Consortium)에서 WebAssembly 기술 표준을 정의하고 관리합니다.


강의의 목표를 
확인해 보세요.

Microsoft Windows, Linux 및 macOS 등 다양한 플랫폼에서 WebAssembly 개발 환경을 구축하는 방법에 대해 배웁니다.

WebAssembly 기술로 웹 애플리케이션을 개발할 때 C, C++, Rust를 사용하는 방법을 배울 수 있습니다.

JavaScript로 개발하기에는 어렵고 복잡한 로직을 갖췄거나 고성능을 요하는 웹 애플리케이션을 WebAssembly 기술로 보다 쉽고 빠르게 개발할 수 있습니다.

 C, C++, Rust 등의 언어로 컴파일되어 있으면서도 네이티브에 준하는 성능으로 동작을 수행하는 웹 애플리케이션을 개발할 수 있습니다.

이 강의만의 핵심 장점 ✅

실전까지 생각한 강의

실전 능력까지 향상시킬 수 있도록 강의를 구성하였습니다. 모든 섹션별 이론 학습 후에는 실전 예제를 강의를 따라 직접 구현해가며 배울 수 있는 수업이 준비되어 실무 능력을 높일 수 있습니다.

생생한 라이브 코딩으로 집중 Up

지식공유자의 모습을 강의 화면에 함께 담았습니다. 생생한 라이브 코딩과 함께 진행되는 수업을 통해 마치 오프라인 수업을 듣는 느낌으로 언제 어디서나 학습해 보세요.

WebAssembly 프로그래밍, 이런 분들께 추천합니다!

✅ 컴파일 언어(C/C++, Rust 등)로 웹 브라우저에서 동작하는 고성능 웹 어플리케이션을 개발하고자 하는 분

✅ 웹 서버에 WebAssembly 실행파일(WASM)을 교체함으로써 모든 유저에게 실시간 업데이트된 버전을 제공하려는 분

✅ 설치가 필요하지 않은, 웹 브라우저에서 동작하는 웹 어플리케이션을 개발하고자 하는 분


Q&A 💬

Q. 이론/문법 외에 실제로 쓰이는 다양한 예제도 접할 수 있을까요?

네 가능합니다. 다양한 언어(C, C++, Rust)로 WebAssembly를 개발하는 과정을 예제로 접할 수 있으며 또한 실습을 통해 WebAssembly 개발 노하우를 배울 수 있도록 구성하였습니다.

Q. WebAssembly 개발 환경으로 리눅스(Linux)를 선호하는데 환경 구축이 가능할까요?

네 가능합니다. 리눅스 이외에도 Microsoft Windows, macOS에서 WebAssembly 개발 환경을 구축하는 방법을 강의를 통해 배우실 수 있습니다. 

이런 분들께 추천드려요!

🎓
학습 대상은
누구일까요?
C, C++, Rust 등의 컴파일 언어로 작성한 애플리케이션을 웹 브라우저로 실행하고 싶은 분
C, C++, Rust를 이용해 웹 브라우저에서 동작하는 웹 애플리케이션을 개발하고자 하는 분
📚
선수 지식,
필요할까요?
C언어 또는 C++ 언어 기초

안녕하세요
김대진 입니다.
김대진의 썸네일

지식공유자 소개 ✒️

: IT 관련 기업 연구소 부장
전: LG전자, VS사업부 IVI선행플랫폼/모듈개발
전: SW마에스트로, SW 멘토

저서: Qt 프로그래밍, Qt Quick 프로그래밍, Qt5 프로그래밍 가이드, MeeGo 프로그래밍 완벽 가이드, Qt 실전 프로그래밍

SW커뮤니티 운영: Qt 개발자 커뮤니티 운영자 ( www.qt-dev.com )

커리큘럼 총 67 개 ˙ 13시간 26분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 1. MS Windows 에서 WebAssembly 개발 환경 구축
개발 환경 구축 과정 살펴보기 17:13
개발 환경 구축 과정을 직접 설치 해보기 13:05
Hello World를 출력하는 예제 구현 03:21
섹션 2. Linux 에서 WebAssembly 개발 환경 구축
개발 환경 구축 과정 _살펴보기 14:13
개발 환경 구축 과정을 직접 설치 해보기 11:58
Hello World를 출력하는 예제 구현 04:47
섹션 3. MacOS 에서 WebAssembly 개발 환경 구축
개발 환경 구축 과정 살펴보기 11:14
개발 환경 구축 과정을 직접 설치 해보기 07:02
Hello World를 출력하는 예제 구현 03:13
섹션 4. C/C++ 을 이용해 WebAssembly 프로그래밍 시작하기
C언어를 이용해 구구단을 출력하는 예제 구현 12:51
C++ 클래스를 이용해 구구단을 출력하는 예제 구현 11:17
섹션 5. Interaction WebAssembly and JavaScript
Overview 04:15
JavaScript 에서 C언어 함수 호출 1편 08:56
JavaScript 에서 C언어 함수 호출 2편 20:12
C언어에서 JavaScript 함수 호출 1편 05:45
C언어에서 JavaScript 함수 호출 2편 14:41
JavaScript 에서 C++ 클래스의 멤버 함수 호출 1편 07:25
JavaScript 에서 C++ 클래스의 멤버 함수 호출 2편 17:31
C++ 클래스의 멤버 함수에서 JavaScript 함수 호출 1편 04:59
C++ 클래스의 멤버 함수에서 JavaScript 함수 호출 2편 20:22
섹션 6. Rust 언어를 이용한 개발 환경 구축 및 예제 구현
개발 환경 구축 과정 살펴보기 16:26
개발 환경 구축 과정을 직접 설치 해보기 09:25
Rust로 작성한 라이브러리를 호출하는 예제 구현 22:14
섹션 7. WebAssembly and Qt
WebAssembly에서 Qt를 사용해야 하는 이유 10:54
Qt에서 제공하는 유용한 툴과 빌드시스템의 특징 13:23
섹션 8. MS Windows 에서 Qt WebAssembly 개발 환경 구축
설치과정 전체 살펴보기 18:19
개발환경 직접 설치 해보기 16:09
Clock 예제 소스코드 빌드 및 실행하기 15:19
섹션 9. Linux 에서 Qt WebAssembly 개발 환경 구축
설치과정 전체 살펴보기 17:44
개발환경 직접 설치 해보기 16:04
Clock 예제 소스코드 빌드 및 실행하기 10:09
섹션 10. macOS 에서 Qt WebAssembly 개발 환경 구축
설치과정 전체 살펴보기 16:13
개발환경 직접 설치 해보기 13:32
Clock 예제 소스코드 빌드 및 실행하기 09:56
섹션 11. Qt WebAssembly 프로그래밍의 시작
Hello World 를 출력하는 예제 구현 16:36
Qt Designer 를 이용한 Hello World 출력 예제 구현 05:03
Button 예제 구현 13:14
섹션 12. Signal and Slot
Signal 과 Slot 의 개념과 사용방법 11:56
Signal 과 Slot 예제 구현 13:13
섹션 13. Widgets and Layouts
Widget 들과 Layout의 개념 및 Widget의 종류 07:36
자주 사용하는 Widget들 살펴보기 13:24
QMdiArea를 이용한 다중 윈도우 창 구현 예제 구현 11:37
자주 사용하는 Layout들 살펴보기 06:25
중첩된 Layout 을 사용하는 예제 구현 13:25
섹션 14. 기본 데이터 타입과 유용한 타입들
기본타입과 자주 사용할 만한 타입들 전체 살펴보기 05:49
QBitArray 와 QByteArray 18:10
QString 과 여러 유용한 타입들 15:47
섹션 15. Container Classes
자주 사용하는 Container Class 10:25
QList 와 Structure를 사용한 예제 구현 23:23
섹션 16. QPainter 클래스를 이용한 2D Graphics
QPainter 클래스 사용방법 18:04
이미지를 웹브라우저 크기에 맞게 랜더링하는 예제 구현 14:51
섹션 17. 크로마키 영상 처리 구현
구현할 프로젝트 설명 05:23
크로마키 프로젝트 구현 1편 14:02
크로마키 프로젝트 구현 2편 18:13
섹션 18. 타이머 구현
QTimer 클래스 사용방법 03:40
QTimer 클래스를 이용한 예제 구현 13:59
섹션 19. Thread Programming
QThread 클래스를 이용한 Thread 구현 방법 07:31
Thread-Safety를 만족하는 QMutex 사용 방법 03:02
QThread 클래스를 이용한 Thread 예제 구현 1편 18:38
QThread 클래스를 이용한 Thread 예제 구현 2편 15:50
Re-entrancy를 만족하는 Thread 구현 방법 살펴보기 02:25
Re-entrancy를 만족하는 Thread 예제 구현 21:24
강의 게시일 : 2023년 03월 03일 (마지막 업데이트일 : 2023년 03월 03일)
수강평 총 3개
수강생분들이 직접 작성하신 수강평입니다.
4.3
3개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
Junghwan Jeong thumbnail
5
web assembly 이해에 도움이 되었습니다. 좀 더 자세하게 알고 싶은 부분은 프로그램이 web 클라이언트 에서 동작 하므로 web 서버와 데이터 연동을 하는 부분에 대한 설명이 있었으면 좋겠습니다. Emscripten SDK를 통해서 서버와 연동해야 하는 것인지 Qt의 QNetwork SDK 를 이용해야 하는지 아니면 다른 방법이 있는지 혹시 자료 있으시면 공유 부탁 드립니다.
2023-03-12
지식공유자 김대진
안녕하세요. Junghwan Jeong 님, WebAssembly 프로그래밍을 수강해 주셔서 너무 감사합니다. 또한 좋은 평가해주셔서 너무 감사합니다. WebAssembly 를 이용해 실행되는 실행 바이너리가 클라이언트 사이드에서 동작하는 거라서 웹서버와 통신하기 위해서 클라이언트에서 소켓과 같은 통신 라이브러리를 통해서 접속해야 할것 같습니다. 지금은 자료가 없지만 조만간 웹 서버와 통신하는 부분을 작성해 추가하도록 하겠습니다. 다시 한번 좋은 평가해주셔서 너무 감사합니다. ^^; 더 궁금한 게 있으면 언제든지 질문해 주세요.
2023-03-13
Alex Madnix thumbnail
3
웹어셈블리라는 국내에서는 다소 유니크한 기술을 주제로 강의해주시는 점 감사합니다만... 강의를 처음하시는 건지는 모르겠지만 다소 긴장하고 있다는 느낌이 들며 중간에 자주 실수하시다 보니 청강자 입장에서 전달력 및 집중력이 조금 떨어져서 아쉬웠습니다.
2023-04-11
지식공유자 김대진
안녕하세요. Alex Madnix 님, 수강평 감사합니다. 강의에 대한 평가와 좋은 개선 사항과 의견 감사합니다. 의견 참고해서 앞으로 더 나은 강의를 제공할 수 있도록 노력하겠습니다. 수강해 주셔서 너무 감사합니다.
2023-04-11
funky856 thumbnail
5
웹어셈블리는 자료가 많이 부족했는데 정말 감사합니다. c++와 자바스크립트만 이용해서 웹어셈블리를 사용하는 심화과정도 있으면 좋을 것 같아요.
2024-02-01
지식공유자 김대진
funky856 님 좋은 평가해 주셔서 너무 감사합니다. 가능하면 향후 업데이트시에 C++와 JavaScript 를 이용하는 방법도 공유할 수 있도록 하겠습니다. 그리고 무엇보다도 수강해주시고 좋은평가 해주신것 다시 한번 감사합니다.
2024-02-01