- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date 19/06/20 17:16:28수정됨
Name   T.Robin
Subject   Qt 5.13.0: C++로 개발해서 웹브라우저에서 실행하자!
2019년 6월 19일부로 발표된 Qt 5.13.0이 발표되었습니다. Qt 5.13.0의 새로운 기능 중에서 제 눈길을 꽤 끈 신기능이 하나 있었는데요....... Qt for WebAssembly입니다. 그러니까...... Emscripten을 사용해서 Qt를 WebAssembly로 컴파일하는 녀석 되겠습니다. 예. QML이나 Qt Widgets로 만든 프로그램을 그대로 웹브라우저에서 돌릴 수 있게 되었다는 거죠.

기존에 있던 또다른 신기한(......) 기능인 Qt WebGL Streaming Plugin하고는 다른데, WebGL Streaming Plugin은 프로그램이 서버에서 실행되면서 웹브라우저에서는 GUI 화면만 보여주는 형태인 반면 Qt for WebAssembly는 프로그램을 웹브라우저가 다운로드받아 브라우저 내 샌드박스에서 실행시키는 차이가 있습니다. 프로그램이 클라이언트에서 실행되기 때문에 서버 부하가 줄어들 뿐 아니라, WebGL Streaming Plugin마냥 GUI를 한번에 한 사람밖에 못쓰는(......) 문제도 없습니다.

이 기능을 보고나서 제가 느낀건 뭐랄까...... 일단 이것들이 인간이 맞나 싶더군요. 도대체 어디의 외계인을 고문하고 다니는 건지 모르겠습니다. 그리고 그 뒤에는 환희가 몰려왔습니다.
이제 C++로 개발한 뒤에 웹브라우저에서 실행시킬 수 있어요! Qt 개발자 여러분, GUI의 대세가 web이라 울며 겨자먹기로 Angular나 React나 Vue.js같은걸 억지로 학습할 필요가 없습니다! 이제 Qt로 개발하고 웹브라우저에서 실행시키시면 됩니다!

......그런데 그렇게 부푼 가슴이 쪼그라드는데는 몇시간도 안 걸리더군요. 이거 단점들이 꽤 있습니다.

1. WebGL이 지원 안되면 못씀
저같은 경우는 특성상 서버에서 웹브라우저를 돌려야 되는 환경도 고려해야 하는데, 이 경우 서버 하드웨어에서 OpenGL 2.0이 지원되지 않아 화면이 안 나오는(......) 문제가 발생할 수 있습니다. 멀리 갈 것 없이 HP DL시리즈 서버의 경우 최소한 7세대까지는 매트록스 그래픽 칩셋을 사용했습니다(8세대 이후로는 안써봐서 모르겠습니다). OpenGL 지원따위...... 저 하늘 위의 별같은 거죠.

2. 한글이 깨짐
WebAssembly 샌드박스 환경의 특성인지는 모르겠지만, Qt for WebAssembly는 시스템 폰트에 직접 접근할 수 있는 권한이 없답니다. 이걸 해결하려면 별도 폰트를 프로그램에 qrc 등의 형태로 내장시켜야 한다고 하네요.
해봤습니다만, 뭐...... 제가 요령이 없어서 그런지 잘 안 됩니다. 한글 왕창 깨지고요(......).2019.6.21일 업데이트: 폰트를 내장한 뒤 기본 폰트를 바꾸면 출력은 잘 됩니다. 하지만 입력은 여전히 안됩니다. 유일한 방법은 웹브라우저 밖에서 한글을 입력한 뒤 복사하고 그걸 프로그램 내부에서 갖다 붙이는 겁니다. -_-

그 외에 위키에 적혀있는 QMAKE_WASM_TOTAL_MEMORY 옵션이 실제로는 적용이 되지 않아서 Makefile을 수동으로 고쳐야 한다던가 하는 문제가 더 있긴 합니다만 이건 뭐 최초 지원이니만큼 그냥 눈감아줄 수 있다고 치고......

하여간 그렇습니다. 웹브라우저 환경을 최대한 활용하려면 QML과 구조가 대충 비슷하다고 알려진 Vue.js나 좀 더 공부해야 될 것 같습니다. -_-



1


    Qt참 안망하는거 보면 신기
    T.Robin
    전 개인적으로 Delphi가 안 망하는게 더 신기합니다(.....). 제가 예전 Delphi의 heavy user고, 지금도 기회가 되면 Lazarus라도 써볼까 하는 생각이 있긴 합니다만, 괜찮은 대체재가 줄줄이 쏟아지는 지금은 Pascal이 그렇게까지 매력적인 언어가 아닌데다가 포지셔닝도 어설퍼서 언제 무너질지 모르겠다는 생각이 듭니다.

    Qt는 망할래야 망하기가 어려운게, 오픈소스쪽으로 뒷배경이 꽤 든든하고(KDE Foundation부터 시작해서 줄줄이 비엔나급...... 심지어 회사가 부도나면 KDE Foundation이... 더 보기
    전 개인적으로 Delphi가 안 망하는게 더 신기합니다(.....). 제가 예전 Delphi의 heavy user고, 지금도 기회가 되면 Lazarus라도 써볼까 하는 생각이 있긴 합니다만, 괜찮은 대체재가 줄줄이 쏟아지는 지금은 Pascal이 그렇게까지 매력적인 언어가 아닌데다가 포지셔닝도 어설퍼서 언제 무너질지 모르겠다는 생각이 듭니다.

    Qt는 망할래야 망하기가 어려운게, 오픈소스쪽으로 뒷배경이 꽤 든든하고(KDE Foundation부터 시작해서 줄줄이 비엔나급...... 심지어 회사가 부도나면 KDE Foundation이 운영을 이어받는 계약까지 수립했습니다), 프로젝트 운영도 open governance 형태로 변경되어서 생각보다 일손이 그렇게 많이는 안 들어갈겁니다. 그리고 임베디드에서는 적절한 성능의 하드웨어에서 적절한 기능과 속도를 보여주는 거의 유일하다시피한 수준의 단일 개발 프레임워크이기도 하고요. 아시겠지만, 각 기능만 놓고 보면 더 좋은 것들이 많지만 Qt처럼 턴키식으로 유기적으로 움직이게 만드는건 또 다른 이야기죠.
    이웃집개발자
    흐에엑 업계에 이상한게 자꾸 나와요
    T.Robin
    그러게요...... OTL
    사족달자면 X언어로 Y언어용 플랫폼 개발이 생각보다 쉽습니다. LLVM Intermediate Language 로 어케든 번역만 해내면 (이것마저 오픈소스 풀려있음) 다른 언어로 가는건 쉽습니다. 물론 X언어 개발할 때 Y언어 라이브러리 보면서 개발해야하는게 어렵긴 하지만요.
    T.Robin
    따지고 보면 Emscripten도 LLVM 기반이고 LLVM은 VM이고 WebAssembly도 VM이니 걔나 걔나 걔가 걔(......)죠.
    Rust도 컴파일러가 LLVM 기반이라 단숨에 여러 플랫폼을 수월하게 지원한 것으로 알고 있습니다.
    목록
    번호 제목 이름 날짜 조회 추천
    3483 IT/컴퓨터 IoT의 미래는.... 28 Beer Inside 16/08/09 6179 1
    9329 과학/기술 Qt 5.13.0: C++로 개발해서 웹브라우저에서 실행하자! 6 T.Robin 19/06/20 7286 1
    10699 사회 간이지급명세서 안내 못 받아…수천만원대 ‘가산세’ 폭탄받은 경리직원들 11 이브나 20/06/19 5582 1
    10228 의료/건강 감염병 위기경보 단계“주의→경계”격상 다군 20/01/27 5742 2
    8376 역사 고대 전투와 전쟁 이야기 - (4) 무기에 대하여 1 16 기쁨평안 18/10/15 5328 6
    8405 역사 고대 전투와 전쟁 이야기 - (5) 철, 철, 철 11 기쁨평안 18/10/22 6290 13
    14940 일상/생각 귤을 익혀 묵는 세가지 방법 11 발그레 아이네꼬 24/09/24 1530 6
    3827 일상/생각 기억의 초단편 - 벼봇춤 12 피아니시모 16/10/04 4491 0
    15112 정치 나는 더이상 차가운 거리에 나가고 싶지 않다. 9 당근매니아 24/12/08 1767 43
    10566 게임 닌텐도 스위치 1000만장 넘긴 퍼스트 타이틀들 5 Leeka 20/05/09 4624 0
    11105 IT/컴퓨터 다음 ios&watchOS 버전에서, 애플워치 심전도 기능이 지원됩니다. 3 Leeka 20/11/02 3554 0
    9547 창작 달랑베르시안 1# 2 태양연어 19/08/14 4845 1
    7575 스포츠 당신이 이번 월드컵 감독입니다 라는 질문글을 썼었습니다 12 jsclub 18/05/23 4827 2
    13165 게임 레딧 유저 / 중국 관계자 / 코장 / 캐드럴이 뽑은 라인별 TOP 5 2 Leeka 22/09/20 2878 0
    14876 일상/생각 막내딸이 너무 귀엽습니다. 8 큐리스 24/08/29 1555 7
    9521 게임 병맛풍선 조종해서 높히 올라가기 게임 ~벌룬라이더~ 추천드려요 8 mathematicgirl 19/08/07 4647 1
    9836 일상/생각 사람이 죽음을 택하는 진짜 이유 / 미뤄주세요 6 Jace.WoM 19/10/14 5278 21
    6363 게임 소녀전선 즐기기 - 추석 경험치이벤트 13 피아니시모 17/10/02 5468 0
    5858 일상/생각 아 제발 좀 제발 아 좀 제발 40 세인트 17/06/29 5411 15
    11624 IT/컴퓨터 애플 분기매출 99.4조, 영업이익 30.6조 달성 12 Leeka 21/04/29 3895 1
    2046 일상/생각 연애는 어렵다.. 여자는 어렵다... (2) 7 나는누구인가 16/01/18 5175 0
    1489 철학/종교 종교적/무교 가정 중 어디가 더 관대할까? 25 모여라 맛동산 15/11/07 10925 0
    2240 기타 지마켓 설현 쿠폰에 넘어가서 블투 이어폰 질렀습니다. 4 klaus 16/02/16 5061 0
    12516 정치 지역별 여론조사 빅데이터 추이 7 dolmusa 22/02/16 4309 1
    11814 육아/가정 찢어진 다섯살 유치원생의 편지 유게글을 보고 든 생각입니다. 40 Peekaboo 21/06/22 6169 40
    목록

    + : 최근 2시간내에 달린 댓글
    + : 최근 4시간내에 달린 댓글

    댓글