자바스크립트와 프로미스

today 2016-08-07 face Posted by appkr turned_in Learn & Think forum 0

자바스크립트를 처음 접했을 때 프로미스(Promise)가 어려웠다. 일반적으로 컴퓨터 프로그램은 여러 개의 로직(작업)을 순차적으로 수행한다. 시간이 오래 걸리는 로직이 끼어 있으면 다음 로직은 앞의 로직이 끝나기를 기다려야 한다.

자바스크립트도 앞서 언급한 것 처럼 순차적으로 실행되지만, 시간이 오래 걸리는 작업은(e.g. 파일 IO, 네트워크 IO), 작업이 끝나면 실행할 콜백을 심어 놓고, 그냥 다음 로직으로 진행한다. 콜백에 콜백을 등록하고, 또 그 콜백에 콜백을 등록하는 “콜백 지옥”을 경험하게 된다. 콜백 지옥을 완화하기 위해 자바스크립트가 제시한 방안이 프로미스다.

난 프로미스를 임시로 고용한 작업자라고 이해했다. ‘난 바빠서 다음 일 처리하러 가야 하는데요. 철수님, “Foo” 작업을 대신 좀 봐 주세요. 대략 5초 정도 걸릴거에요. “Foo” 작업이 끝나면 “성공콜백”을 실행해주세요.’

Promise

이하 코드들은 크롬 콘솔(Cmd+Shift+c)에 붙여 넣으면 동작을 확인해 볼 수 있다.

페이스북으로 데스크탑 라이브 스트리밍 하기

today 2016-07-21 face Posted by appkr turned_in Work & Play forum 0

최근 페이스북에 추가된 훌륭한 기능 중에 하나가 ‘라이브’다. 그런데 모바일 페이스북에서만 가능하고, 데스크탑의 브라우저를 통해 접속한 페이스북에서는 불가능한다. 이 포스트에서는 데스크탑 스크린을 페이스북을 통해 라이브 스트리밍하는 방법을 다룬다. 라이브 코딩 등의 목적으로 활용하면 좋을 듯 하다.

방송하기

"휙~" 리얼 타임 라라벨 데모 프로젝트

today 2016-07-15 face Posted by appkr turned_in Work & Play forum 0

휙~ 라라벨은 도메인 이벤트를 클라이언트에게 브로드캐스트할 수 있는 기능을 제공한다. 5.2.39 기준으로 pusher, redis, log 등의 브로드캐스팅 드라이버를 지원한다. 이 데모에서는 라라벨이 ‘휙~’하고 메시지를 던지면, Socket.io가 접속된 모든 클라이언트에게 ‘휙~’하고 메시지를 전파한다.

언제 어떻게 쓸 수 있나? 새로운 댓글이 작성되면 같은 댓글 목록을 보고 있는 사용자에게 새 댓글을 알리거나, 지금 서비스에 접속된 모든 사용자에게 푸시 알림을 보내는 등 서버에서 발생한 변경 내용을 클라이언트에 전파할 때 사용할 수 있다.

이 포스트는 데모 프로젝트를 복붙으로 따라해보기 위한 명령 및 코드 목록을 담고 있다. 각 절의 작동 원리는 읽지 말고, 전체 동작을 한번 확인할 것을 권장한다.

  1. 데모 환경 준비_ 오늘 AWS에 인수된 클라우드9을 이용한다.
  2. SocketChat_ Socket.io에서 제공하는 채팅 예제 프로젝트를 구동해 본다.
  3. Redis_ 라라벨과 Socket.io간의 메시지 중계자로 Redis를 이용한다.
  4. Broadcast_ 라라벨의 브로드캐스트 기능을 이용해 본다.

* 웹 페이지의 DOM 조작을 위해 Vue.js1 라이브러리를 이용할 것이다.

이 프로젝트는 라라캐스트의 Real-time Laravel with Socket.io 시리즈를 보고, 필자 나름대로 해석하고 적용한 결과물이다.

keyboard_arrow_up