[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

레이블이 firejune인 게시물을 표시합니다. 모든 게시물 표시
레이블이 firejune인 게시물을 표시합니다. 모든 게시물 표시

2017년 3월 23일 목요일

[EP] Inspire 자바스크립트 컨퍼런스의 Firejune님 발표에 대해..


출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

지난주 금요일(28일)에 열린 Inspire 자바스크립트 컨퍼런스에서 Firejune님의 발표를 보고 SNS에 감탄을 쏟아내면서 의도치 않게 사람들에게 궁금증은 유발하면서 뭔지 알려주지는 않는 낚시가 되어 버렸다. 뭔가 설명을 하고 싶기도 했지만 글로 설명하기도 어려워서 그랬던 것인데 결과적으로는 낚시가 되어버렸고 이에 대한 책임감(?)이 좀 느껴져서 정리한다.(글로 제대로 전달될지 불안할 따름이다.)

Mobizen 화면
사진 출처: https://play.google.com/store/apps/details?id=com.rsupport.mvagent

Firejune님의 발표에서 놀랐던 것은 발표내용보다는 데모에서였는데 위의 화면에 보이는 웹 애플리케이션이다. 초반에 "좀 다르게 개발하기"에 대해서 웹소켓 등의 얘기를 하면서 듣고 있다가 약간의 집중력이 흐트러질 무렵 위의 데모를 보여주셨다. 처음에 데모를 보면서 "저게 무슨 화면인가?"하고 쳐다보면서 이해하는데 약간의 시간이 걸렸다. 사실 처음에는 웹 애플리케이션이 있고 안드로이드가 잘 안 보이니까 에뮬레이터 같은 프로그램을 그 위에 띄워놓은 줄 알았다.
  • 위 PC의 화면(iMac안에 있는)은 웹페이지이다.(이런저런 검색해보면 비슷하게 생긴 앱도 있는듯한데 내가 본 건 웹이었고 기존의 것을 웹으로 포팅한 것인지 등에 대한 자세한 내용은 잘 모르겠다.)
  • PC화면에 나타난 안드로이드 기기는 자신의 안드로이드 기기와 연결되어서 상호 간 원격 조종을 할 수 있다.
    • 안드로이드에서 스크롤을 하면 PC의 화면도 스크롤이 되고 그 반대로도 된다.
    • 안드로이드 기기를 가로로 눕히면 PC의 안드로이드 기기도 자동으로 옆으로 돌아간다.
    • 안드로이드에서 YouTube 앱 같은 것을 실행시켜서 동영상을 재생하면 거의 실시간으로 PC에서도 동영상이 재생되고 앱이 변경되는 애니메이션까지 모두 재현된다.
  • PC 화면에서 스냅샷이나 동영상 녹화를 하면 화면을 이미지로 저장하거나 녹화할 수 있고 이는 기기에도(아마도...) 저장된다.
  • PC 화면에 나와 있는 아이콘들은 안드로이드의 관리 애플리케이션이다.
    • 음악 아이콘을 클릭하면 아이튠스 같은 UI의 화면이 나오면서 안드로이드 기기에 있는 음악목록을 가져오고 바로 재생할 수 있다.
    • PC에 있는 음악을 바로 안드로이드에 넣을 수도 있다.
    • 사진, 동영상도 마찬가지로 안드로이드 기기의 내용을 그대로 읽어와서 화면에 보여준다.
글로 써서 무미건조해 보이지만 위의 내용이 데모의 주된 내용이다. 여기까지 보면 "이거 가지고 그렇게 낚시한 거야?"라고 반응할 수도 있는데 SNS에서도 제대로 설명하지 못한 것도 내가 본 걸 글로 얼마나 전할 수 있을지 몰랐기 때문이다.
내가 이해한 차원에서(그러므로 실제 구현과 약간 다를 수도 있다.) 동작 방식을 좀 더 보자.
  1. 안드로이드와 웹페이지는 웹소켓으로 연결되어 있다.
    • 중간에 웹서버가 하나 있지만, 이는 회원의 로그인 후 안드로이드 기기와 웹페이지를 연결해 주는 역할만 하고 빠지는 걸로 보인다. 그래서 실제 동작할 때는 웹페이지와 안드로이드 기기만 서로 연결되어 있다.
    • 안드로이드에 어떤 앱 같은 게 돌고 있고 여기에 웹소켓 서버가 떠 있고 이 웹소켓 서버랑 웹페이지가 연결된다.
    • 이 앱에서 웹소켓으로 안드로이드의 변화를 웹페이지에 보내고 받는데 내가 안드로이드 개발자가 아니라 이쪽은 정확한 메커니즘은 모르겠다.
    • 원격 제어 부분은 Rsupport의 전문 분야이므로 이에 대해 기본에 갖추고 있는 기술력을 사용했을 거라고 보인다.
  2. 이미지, 음악, 동영상들도 모두 웹 소켓을 이용해서 데이터를 주고받는다.
    • 최초에 연결하면 안드로이드의 내용을 인덱싱하느라 약간의 시간이 걸리지만, 그 결과를 로컬 스토리지에 저장하므로 그 이후부터는 빠르게 목록을 불러온다.
    • 실제 미디어(사진, 음악, 동영상 등)는 로컬에 저장하는 것이 아니라 사용자가 재생할 때 안드로이드에서 웹소켓으로 가져온다.
    • 데모 상의 체감속도로는 거의 데스크톱 수준의 속도였다.(물론 데모에서는 USB로 연결되어 있었고 네트워크면 네크웍의 속도에 따라 다를 것이고 상황에 따라 가장 빠른 속도를 알아서 찾아서 접속한다.)
    • 이미지뿐만 아니라 동영상 등도 거의 딜레이없이 PC에서 재생해 볼 수 있다.
    • 이미지나 음악을 안드로이드기기로 업로드하는 경우에 웹페이지에 올리는 것이 아니라 로컬의 파일을 웹소켓으로 바로 안드로이드로 쏜다.
  3. UI
    • UI는 위 스크린 샷처럼 블러가 먹은듯한 배경 이미지가 깔렸고 그 위에 투명 혹은 반투명의 화면들이 동적으로(축소되거나 페이드인/아웃되는 등) 변화한다.
    • 크롬에서 시연했는데 HTML5와 CSS3를 사용한 것으로 보여서 다른 브라우저에서는 어떤지 모르겠다.(최소한 같은 퍼포먼스나 효과는 나오지 않을 것이다.)
    • 거의 데스크톱앱 수준의(좀 구린 데스크톱앱이라면 그 이상) 메뉴 전환속도와 화려한 애니메이션 효과를 보여준다.
내가(나를 포함한 주위 사람의 상당수) 머리를 한 대 맞은 듯 멍해진 것은 위의 3번 부분이다. 안드로이드에서 데이터를 보내는 건 내가 모르는 분야이므로 궁금하긴 하지만 신기한 정도까진 아니고 웹 소켓이 제공하는 속도가 있으므로 이를 이용해서 데이터를 보내면 만들어 낼 수는 있을 것 같다.(먼저 이렇게 할 생각까진 못했겠지만...)

충격받은 건 UI와 그 성능이다. 웹에서 WebGL이나 SVG 등을 사용한 효과 등을 제외하고 상상할 수 있는 거의 모든 애니메이션 효과가 그 사이트에 들어가 있었지만 하나도 느리지 않았다. 눈으로 보기에 당연히 저런 효과가 들어갔으면 대충 어떤 기술을 사용했을지 머릿속에 그려지고 그거에 대한 퍼포먼스가 생각나서(물론 아주 하드코어 하게 튜닝을 해본 적까진 없지만...) 분명히 딜레이가 있어야 하는데 그런 게 하나도 없이 아주 자연스럽게 돌아갔다.(말도 안 돼!)

이번 파이어준 님의 발표는 생각지 못한 놀라운 기술을 보여줘서 놀랜 것이 아니라 나도 아는 기술인데 그걸 이용해서 엄청난 퀄리티로 만들어냈기 때문이다.** 개별 이펙트를 데모로 만들어 낸다고 생각하면 불가능한 일은 아니지만 이를 하나의 앱으로 만들고 비즈니스 로직까지 섞인 곳에서 전혀 딜레이없는 웹 애플리케이션을 만들어 내는 것은 완전히 다른 차원의 얘기다. 내가 그동안 HTML5나 CSS3에 대해서 뭐 자신감을 느끼고 있거나 그런 것은 아니었음에도 그냥 머리를 한 대 맞은 것 같았다. 파이어준 님은 보여주면 "우와~~"하는 반응을 기대하셨던 것 같은데 눈앞에 보이는 데모를 믿을 수가 없어서 아무런 반응을 할 수 없었다. 트위터에 낚시처럼(고의는 아닙니다.) 쓴 대로 "이게 뭐야?", "이게 말이 돼?"가 내 머릿속에 전부였다.(당시에는 지금 어떻게 데이터를 주고받고 돌아가는 것인가에 대한 고민도 같이 하고 있었지만...) 아마 이 데모는 HTML5/CSS3를 많이 만져봤을수록 충격을 받을 만한 내용이라고 생각하고 뒤풀이에서 얘기가 나온 대로 해보지 않았다면 "요즘 CSS3도 많이 좋아졌네!"정도로 대수롭지 않게 생각할지도 모르겠다.(파이어준 님이 워낙 아무렇지 않게 설명하기도 했고...)

난 웹을 좋아한다. 그래서 웹이라는 플랫폼의 미래에 대해서 가치를 많이 두는 편이지만 현시점에서의 내 생각은 "네이티브와 비교할 때 UI 등에서 어느 정도 타협을 본다면 지금도 해볼 만 하다"였는데 그런 타협이 없이 네이티브 이상의 웹애플리케이션을 봤기 때문에 생각이 완전히 달라졌다.(물론 전혀 타협이 없을 린 없고 그런 느낌이 들 정도로 만들어 낸 것도 엄청난 기획력이라고 본다.) 아래 이미지는 나랑 같은 기분을 느낀 지인이 SNS에 올린 짤방인데 공감이 가서....

겸손해지려 하지마. 넌 그만큼 대단하지 않아.

2016년 3월 17일 목요일

[EP]HTML5 오픈컨퍼런스 #2..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

HTML5 API 소개 - 경준호
네번째 세션은 HTML5의 Javascript API에 대한 세션으로 현재 같이 활동을 준비하고 있는 프론트앤드 개발자 커뮤니티인 FRENDSfirejune님이 발표하시고 일부 데모를 AJ가 시연하기로 되어 있어서 가장 기대하고 있던 세션이었습니다.(다른 세션들의 주제보다 Javascript에 더 관심이 많기도 하고요.)

HTML5의 PPT를 HTML5로 만들어서 인기를 끌었던 것을 그대로 이용해서 발표를 해주셨습니다. (Dog Food 같은 느낌일까요? ㅎ) HTML5의 능력도 보여주면서 PT내에서 바로 Demo도 시연해 볼 수 장점이 있기 때문에 HTML5 발표에는 아주 효과적이라고 생각하고 있습니다. Audio와 Video는 기본적으로 컨트롤을 제공하고 있으며 Javascript를 이용해서 제어할 수 있지만 현재 코덱등의 지원여부가 브라우저마다 달라서 사용하는데는 아직 어려움이 있습니다.

HTML5 API 소개 발표

Canvas의 핵심은 비트맵을 동적으로 Javascript를 이용해서 생성할 수 있다는 것입니다. Mr. doob사이트의 데모를 보여주면서 "웹개발자가 이런것까지 해야 싶기도 하다"고 하셔서 사람들의 웃음을 자아내셨습니다.(여러가지로 firejune님의 발표는 많이 유쾌한 발표였죠.) IE9 preview 3에서 Canvas를 지원하게 됨으로써 이제 모든 브라우저 벤드들이 Canvas를 지원하게 되었습니다. Canvas를 이용하면 인터렉티브한 UI를 만들어 낼 수 있고 리소스를 이용하는 것이 아니라 직접 만들어 낼 수 있다는 것이 특징입니다.(jsdo.it)

SVG(Scalable Vector Graphic)의 사용법은 HTML마크업과 유사한 방식으로 사용하고 벡터그래픽이기 때문에 확대를 하여도 깨지지 않습니다. (SVG JS라이브러리 Raphael) 기존에 이미지를 이용하던 것들을 직접 만들어 낼수 있으며 SVG가 없을때는 Canvas로 그래프등을 구현하였지만 사실 적절한 용도는 아니었습니다.

HTML5에서는 새로운 셀렉터들이 추가되었는데 오래 기다리던 클래스명으로 가져오는 getElementsByClassName가 드디어 Native로 추가되었으면 CSS셀렉터로 가져오는 querySelectorAll, querySelector도 Native화 되었습니다. Notification은 현재 크롬에서만 지원하고 있으며 Notification 창은 브라우저의 최상단에 표시가 됩니다.

Web Workers가 추가되여 부하가 심함 Javascript에 대한 처리를 빠르게 할 수 있으면 어쩔수 없이 무거웠던 Drag & Drop도 네이티브화 되어서 이전의 무거움은 사라져버렸습니다. File API를 이용하면 input file의 바이너리내용을 서버에 업로드하지 않은 상태에서도 파악할수 있기 때문에 파일에 대한 유효성체크를 쉽게 할 수 있고 파일내부의 id3나 exif같은 정보의 추출도 할수 있고 이미지의 일부만을 잘라서 업로드 하는 것도 가능해졌습니다. Web GL은 현재로써는 안전적인 버전의 브라우저에서는 제공하지 않고 개발중인 버전에서만 사용가능한 상태입니다.

Key-Value로 저장할 수 있는 Web Storage가 추가되었으며 Web SQL Database가 추가되어 웹브라우저가 Database를 보유하게 되었습니다. SQLite를 사용하고 있으며 항상 비동기적으로 처리하기 때문에 결과는 콜백으로 받아야 하고 공식명세로 잘 지원되고 있습니다. IndexedDB는 Web SQL Database보다 사용법이 훨씬 Javascript다우며(Web SQL Database는 SQL쿼리를 이용합니다.) 아직 개발버전으로 거의 지원이 안되고 있어서 파이어폭스의 개발버전에서 테스트해 볼 수 있습니다. Application Cache API는 로컬 스토리지등의 내용은 오프라인상태에서도 사용이 가능한데 이 데이터를 이용하기 위해서는 웹페이지의 Javascript나 이미지등이 필요하기 때문에 이 API를 이용해서 필요한 파일을 캐시하도록 지정할 수 있습니다.

Server-Send Event는 일종의 Push기술로 지속적으로 풀링을 하지 않고 이벤트를 받을 서버 주소를 작성하여 놓고 사용합니다. 헤더에 Conntent-type:text/event-stream를 지정해야하고 data에 값을 넣어서 클라이언트쪽에 전달합니다. 그리고 WebSocket과 Geolocation 기능이 추가되었습니다.

발표자료 보기

발표의 마지막은 AJ의 DICOM 시연으로 이어졌습니다.(지난번 FRENDS 첫 모임에서 이미 보았기 때문에 공개적으로 발표하는 부분에서 큰 기대감을 가지고 있었습니다.) DICOM이란 것은 저도 자세히는 모르지만 의학쪽에서 MRI를 신체의 단면을 몇미리단위로 촬영을 하게 되는데 이 수십,수백장의 사진들을 보면서 의사들이 병을 진단하게 됩니다. 이 시스템을 순수 웹기술만으로 구현한 것입니다.

DICOM 시연 화면 DICOM 시연 화면

제가 아는 범위 내에서는 node.js를 이용해서 서버에서 이미지를 바이너리로 전달하고(아마도 Web Socket) Web Worker가 3개가 돌아가면서 이 바이너리들을 이미지로 처리해서 보여주는 것으로 알고 있는데 그 크기와 복잡함에 비해서 이미지가 전환되는 자연스러움은 가히 입이 딱 벌어질 만한 충격적이라고 생각합니다. 컨퍼런스에 오신 분들의 반응은 정확히 모르겠지만 개발자가 아니신 분도 상당수있는 것으로 보였고 시간 관계상 자세한 설명까지는 되지 못해서 얼마나 전달이 되었는지 모르겠습니다.(더 자세한 내용은 Ajaxian.kr을 참고하세요.)


HTML5 기반 모바일 웹 - 권정혁
모바일에서 웹이 중요한 이유는 구글조차도 모든 플랫폼에 대한 모바일 앱을 만들 돈을 없다고 할정도로 플랫폼별 앱을 만드는 것은 어려우며 모바일웹은 간단히 모든 플랫폼을 지원할 수 있기 때문입니다.

HTML5 기반 모바일 웹 발표HTML5 기반 모바일 웹 발표

모바일 웹 앱의 장점은 다양한 플랫폼을 동시에 지원이 가능하고 서버기반의 앱이기 때문에 신속한 업그래이드를 할 수 있으며 웹개발자들에게 친숙한 환경이라는 것입니다. 현재 Camera와 Device등에 대한 지원은 준비중에 있습니다.

Gmail 사이트를 보면 로컬저장을 사용하고 있으며 단하나의 HTML파일만을 사용하고 있어서 CSS, Javascript파일도 HTML내에 임베디드되어 있고 이미지조차도 base인코딩으로 처리해놓아서 단한번의 Request만으로도 페이지를 로딩할 수 있다는 것이 인상적입니다.

모바일웹앱을 위한 라이브러리로 WebApp, jQTouch, Sencha Touch등이 있으면 Apple에서 제공하고 있는 iAD JS도 있습니다. 발표에 대한 내용은 발표자인 xguru님께서 아래 링크에서 잘 정리해 주셨습니다.

발표자료


한국형 웹 콘텐츠 접근성 지침 2.0 - 현준호
사실 이 세션은 저한테는 큰 관심을 끌지 못했었습니다. 웹 접근성이 중요하지 않다는 것이 아니라 발표전에는 공무원이 와서 발표하는 것으로 생각되었기 때문입니다.(과거 공공 SI에 있었던 선입견으로 인하여 현실에는 말도 안되는 탁상공론만 하겠구나 하는 생각이었습니다.) 하지만 이 분은 공무원도 아니었고 내용자체가 상당히 충실하고 알찼습니다.(접근성은 중요한 내용인데 잘 몰라서 적용하기가 쉽지 않은 부분이죠.)  요약하기가 쉽지 않은 내용이므로 발표자료로 대신하겠습니다.

발표자료


Eplilogue
저는 10만원씩 하면서 거창한 타이틀을 달고 있는 세미나등은 잘 가지 않습니다. 가본적은 있는데 보통 무료 혹은 저가 세미나보다 못한 경우도 허다했으며 두리뭉실한 얘기나 하는 경우가 많았기 때문입니다. 이 세미나는 10,000원짜리 세미나인데 이정도면 유료라는 느낌보다는 참가에 대한 책임감 정도로 생각하고 있습니다. 발표자들도 나름 초호화로 생각되었기 때문에 기대감을 가지고 참가했는데 아주 만족스러운 발표였다고 생각합니다.

세미나 후 발표자 QA 시간

사전에 발표자들이 준비한 책자를 준다고 해서 사실 일반적으로 하는 발표자료를 인쇄해주는 정도로 생각했습니다만 발표자료 외에 발표자들이 자신이 맡은 주제들에 대해서 따로 내용을 정리한 부분을 책으로 만들어서 나누어주었습니다. 책 내용을 다 보진 않았지만 상당히 알차서 HTML5를 공부할 때 많은 도움이 될듯 합니다. 이 실전 HTML5 가이드는 참가한 사람들에게는 책으로 나누어 주고 참가못한 사람들에게는 PDF버전으로 무료로 공개해주는 아름다운 모습까지 보여주었습니다.

실전 HTML5 가이드 책

개인적으로 현재 HTML5는 써먹기 어려운 부분도 있고 브라우저의 지원여부에 대한 문제도 있기 때문에 앞으로도 갈길이 많기는 하지만 HTML5가 앞으로 보여줄 혁신은 언제고 간에 반드시 올 것이기 때문에 웹개발자라면 꼭 준비해야 하는 부분이라고 생각하고 있습니다. HTML5가 아이폰때문에 이슈화도 많이 된 관계로 HTML5에 대한 관심이 모바일 때문인 경우도 많고 이때문에 웹표준이라는 취지에 대한 오해를 갖는 모습도 보이기는 하지만 이전보다는 확실히 나은 위치에 있기 때문에 문제점들은 차차 해결해 나갈수 있으리라 기대하고 있습니다. 어차피 기술은 기술이고 중요한 것은 어떻게 어디에 사용하냐는 것이겠지요.

아무튼 보면 볼수록 흥미로운 HTML5 입니다. 올해 꼭 차근차근 준비해야겠네요. ㅎ