SlideShare ist ein Scribd-Unternehmen logo
1 von 57
실시갂 HTTP 양방향 통신
넥슨 M2팀
이승재
이승재 (직업: 프로그래머)
2007~2009
카바티나 스토리

2010~2011
데스크탑 히어로즈



2011~
맀비노기2
이승재 (취미: 프로그래밍)
2001
세리오

2005~2011
베리즈 웹쉐어

2011~
WebIRC (가칭)
실시갂 HTTP 양방향 통신
HTTP      Hypertext Transfer Protocol

 • http://devcat.nexon.com
 • 웹브라우저와 웹서버가 통신하는 규약
 • 요청/응답 형태
이벤트 발생                              응답 핸들릿
        주소 입력 / 릿크 클릭 / …                   HTML 렌더릿 / 자바스크립트 실행 / …



웹브라우저

                 요청



                                            응답
  웹서버


               요청 핸들릿
               서버 사이드 스크립트 실행 / 파일 읽기 / …
브라우저의    서버는

요청      응답
이 있어야   할 수 있다
서버에서 이벤트가 발생하면
브라우저에 통지할 수가 없다
트위터
페이스북 메신저
쥐메일 메신저
어떻게!!???
실시갂 HTTP 양방향 통신
1. 주요 기법/기술 소개
2. AJAX 롱 폴릿 구현 경험담
3. 미들웨어 소개
주의: 꼼수로 가득함
키워드: HTTP Server Push, Comet
Polling
 브라우저가 주기적으로 요청을 보냄
 • “바뀐 거 없니?” “없어”
   “바뀐 거 없니?” “(있으면) 옛다 받아라”
   “바뀐 거 없니?” “없어”
Polling
         onTimer()         onTimer()        onTimer()

 웹브라우저




                 빈 응답              이벤트 내용               빈 응답

   웹서버


                        이벤트 발생
                        일단 저장해둔다
Polling
트래픽 통신할 꺼리가 없어도 요청/응답이 일어남
서버 부하 요청/응답이 계속 일어나니까…
지연시갂 요청 갂격에 영향 받음
Long Polling
 서버가 보내줄 게 없으면 생길 때까지 기다림
 • “바뀐 거 없니?”
   “(보내줄 게 있으면) 옛다 받아라”
   “바뀐 거 없니?”
   “……(변화가 생길 때까지 기다림)…… 옛다 받아라”



 • Facebook에서 사용
Long Polling                      (경우 1)
                                   응답을 처리하고
                                   즉시 다음 요청

 웹브라우저




   웹서버


         일어난 이벤트가 없으면
                        이벤트 발생                일어난 이벤트가 없으면
         기다릮다           즉시 응답한다               다시 기다릮다
Long Polling              (경우 2)
                               응답을 처리하고
                               즉시 다음 요청

 웹브라우저




   웹서버


     이벤트 발생          즉시 응답
                                          일어난 이벤트가 없으면
     대기중인 요청이 없을 땐
                     저장해둔 이벤트를 보낸다        다시 기다릮다
     일단 저장해둔다
Long Polling
 복잡하다   이젂에 발생한 이벤트가 있는/없는 경우
        대기중인 요청이 있는/없는 경우


 지연시갂   응답 직후에 이벤트가
        발생하면
Hidden iframe
 페이지 어딘가 숨겨 놓은 iframe에
 내용을 조금씩… 흘려보낸다
 •   <script>동작할 내용</script>
     <script>동작할 내용</script>
     <script>동작할 내용</script>

 • HTTP Streaming이라고 부르기도 함
 • Gmail에서 사용
Hidden iframe
 웹브라우저




                  이벤트 내용    이벤트 내용    이벤트 내용

   웹서버


         일단 대기   이벤트 발생    이벤트 발생    이벤트 발생
Hidden iframe
 브라우저 메모리 릭
 응답이 계속 쌓인다


 프록시/보안프로그램과 충돌
 응답이 완성되지 않으면 바이러스 검사를 못 하니까 아예 안 보내줌
브라우저 플러그인
플래시, ActiveX, …
소켓 부붂맂 플러그인으로 맂들어서
자바스크립트와 상호작용
브라우저 플러그인
호환성 iOS…..
WebSocket    (HTML5)


 자바스크립트에서 짂짜 소켓을 쓰듯이!
WebSocket              (HTML5)


 아직 표준화 안 됨 프로토콜은 되었지맂 API가 아직
 호환성 IE 6, 7, 8? -_-
뭘 써야 하지?;;;
 • Polling: 높은 트래픽, 서버 부하, 지연시갂
 • Long Polling: 복잡함, 지연시갂
 • Hidden iframe: 브라우저 메모리 릭, 프록시 등
 • 브라우저 플러그인, WebSocket : 호환성 문제
Long Polling          을 골라 보았습니다


호환성 좋고
복잡해서 구현하기 재미있어 보여서…
실시갂 HTTP 양방향 통신
1. 주요 기법/기술 소개
2. AJAX 롱 폴릿 구현 경험담
3. 미들웨어 소개
IRC 웹 브릾지
 • 스맀트폰에서 IRC 하고 싶다!
 • IRC 앱을 켜놓지 않아도 접속 유지하고 싶다!
  켜면 지나갂 로그를 읽을 수 있고…
IRC 웹 브릾지
 • 취미 프로젝트
 • 프로그래머 두 명. 2011년 3월 시작
  아이폰 & 안드로이드;;
IRC 웹 브릾지
  External    IRC Clients          Long Polling Server         Web Browser
IRC Servers     (Python)           (Python : Flask + gevent)   (Sencha Touch)




                           DB, Message Queue
                                 (Redis)
데모
프로토콜
• InitLog:
  “각 채널의 최근 로그 k줄을 다오.”
• UpdateLog(last[]):
  “각 채널에서 내가 맀지링으로 받은 로그의 ID가
  이러하다. 갱신된 게 있으면 다오.”
프로토콜 설계상 난점
롱 폴릿 응답에서 다음 요청까지 시갂이 빈다
• 이때 사걲이 발생하는 경우를 빠뜨리면 안됨
• 자연스레 Stateless하게 맂들게 됨
서버 구현상 난점
멀티스레드 프로그래밍;;;
• [HTTP 처리 스레드]
  새로운 내용이 없으면 생길 때까지 대기한다
                                   레이스 컨디션
• [이벤트 리스닝 스레드]
  새로운 내용이 왔을 때 대기중인 스레드가 있으면 깨운다
node.js 같은 모델을 썼으면 오히려 쉽게 맂들었을 듯
웹서버 아키텍처
동시에 살아있는 연결이 맃다
• 일단 메모리 병목!   (1커넥션=1스레드)

• 페이지뷰 대신 동접 개념이 중요해짐
• Gevent로 아주 쉽게 해결
의외의 장점
롱 폴릿에 맞춰서 프로토콜을 구성했더니…
• 네트워크 불안정에 강하다
• 브라우저 앱을 며칠 동안 꺼놨다 켜도 페이지가 살아있음
보내기도 걱정해야
채팅 입력할 때 네트워크 불안정하니 불편;;
재젂송 & 중복젂송방지 메커니즘 필요
실시갂 HTTP 양방향 통신
1. 주요 기법/기술 소개
2. AJAX 롱 폴릿 구현 경험담
3. 미들웨어 소개
정답이 없다
• Polling: 높은 트래픽, 서버 부하, 지연시갂
• Long Polling: 복잡함, 지연시갂
• Hidden iframe: 브라우저 메모리 릭, 프록시 등
• 브라우저 플러그인, WebSocket : 호환성 문제
자동으로 해주면 안될까
WebSocket 지원되면 WebSocket 쓰고
플래시 설치되어 있으면 플래시 소켓 쓰고
이도저도 아니면 Long Polling 쓰고
하지맂 맂들기 귀찮지
미들웨어들이 있습니다!
Orbited2, Socket.io, …
왜 안 썼나
orbited.org 사라짐…….
한참 기다리다 포기하고
롱 폴릿 직접 구현
지금은 살아났습니다 ㅠㅠ
Orbited
 “Web router and firewall”
    Web Browser


 App Client (JavaScript)    HTTP or               TCP or
                           WebSocket   Orbited   WebSocket    App
                                       Server                Server

      Orbited2.js
Orbited
 소켓을 흉내낸다
    Web Browser



                           TCP    App
 App Client (JavaScript)         Server
Orbited
 var sock = new Orbited2.TCPSocket(
     { orbitedUri: "http://127.0.0.1:8000" })

 sock.open("irc.freenode.org", 6667);
 sock.onopen = function()
 {
     sock.send('NICK mcarterrn');
 }
Socket.io
 Node.js 모듈
 메시지 단위 젂송을 제공
Socket.io
실제로 쓰려면
커넥션 하나에 서버 자원을 얼맀나 쓰지?
커넥션 불안정하면 어떻게 되지?
웹브라우저를 한동안 닫아뒀다가 다시 열면?
…
요약
주요 기법/기술 소개
 Polling, Long Polling, Hidden iframe, 브라우저 플러그인, WebSocket

AJAX Long Polling 경험담
 IRC 웹 브릾지 맂들어 보았습니다

미들웨어 소개
 Orbited, Socket.io
게임에서의 응용?
웹 게임
• 네트워크 제약이   거의   없어짂다
게임에서의 응용?
게임-웹 연동
• 젂투정보실(WoW), 거래소(아이온, 맀비노기 영웅젂),
  업적(넥슨홈, 스팀)
• 웹에서 실시갂 통신이 가능하면 뭘 더 할 수 있을까
 게임-웹 채팅? 친구 게임 참여 알림? 게임 초대? 우편 도착 알림?
취미 프로젝트 좋아요
재미있다
업무로 다루지 않는 기술들을 써 본다
공부가 된다
NDC 발표할 수 있다
이승재, 실시간 HTTP 양방향 통신, NDC2012

Weitere ähnliche Inhalte

Was ist angesagt?

MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011devCAT Studio, NEXON
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기강 민우
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011devCAT Studio, NEXON
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012Esun Kim
 
게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치Seungjae Lee
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기ByungChun2
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다Lee Dustin
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.Kwangsung Ha
 
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...Amazon Web Services Korea
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기iFunFactory Inc.
 
기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까Han Je Sung
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 

Was ist angesagt? (20)

MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
 
게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치게임 애셋 스트리밍 패치
게임 애셋 스트리밍 패치
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.
 
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 

Ähnlich wie 이승재, 실시간 HTTP 양방향 통신, NDC2012

[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기NAVER D2
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신Sungwoo Choo
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신NAVER D2
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.sung ki choi
 
Netty 시작하기 (1)
Netty 시작하기 (1)Netty 시작하기 (1)
Netty 시작하기 (1)Daehyun Kim
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임sung ki choi
 
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)khuhacker
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 
NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER Engineering
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)jeongseokoh
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스WebFrameworks
 
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)Jonathan Jeon
 
HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1J B
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장JeongBong Kim
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1bingoori
 
.net core 에서 SignalR 사용해보기
.net core 에서 SignalR 사용해보기.net core 에서 SignalR 사용해보기
.net core 에서 SignalR 사용해보기Ji Lee
 
댓글 플러그인 아포가토
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토Goonoo Kim
 

Ähnlich wie 이승재, 실시간 HTTP 양방향 통신, NDC2012 (20)

[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
 
[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신[D2 오픈세미나]4.네이티브앱저장통신
[D2 오픈세미나]4.네이티브앱저장통신
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
 
Netty 시작하기 (1)
Netty 시작하기 (1)Netty 시작하기 (1)
Netty 시작하기 (1)
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임[111217 아꿈사연말모임] 웹소켓과온라인게임
[111217 아꿈사연말모임] 웹소켓과온라인게임
 
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)
2015년 제2회 동아리 해커 세미나 - 서버 개발자가 되기 위한 첫걸음 (25기 조성수)
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황NAVER의 웹/HTML5환경 대응 현황
NAVER의 웹/HTML5환경 대응 현황
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스Meteor를 통해서 개발하는 웹어플리케이션 서비스
Meteor를 통해서 개발하는 웹어플리케이션 서비스
 
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
차세대 모바일 웹 UI/UX 기술 및 표준화 동향 (기조발표)
 
HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1HeadFisrt Servlet&JSP Chapter 1
HeadFisrt Servlet&JSP Chapter 1
 
Servlet&jsp 1장
Servlet&jsp 1장Servlet&jsp 1장
Servlet&jsp 1장
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
 
.net core 에서 SignalR 사용해보기
.net core 에서 SignalR 사용해보기.net core 에서 SignalR 사용해보기
.net core 에서 SignalR 사용해보기
 
7. html5 api
7. html5 api7. html5 api
7. html5 api
 
댓글 플러그인 아포가토
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토
 
실시간통신
실시간통신실시간통신
실시간통신
 

Mehr von devCAT Studio, NEXON

이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019devCAT Studio, NEXON
 
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019devCAT Studio, NEXON
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019devCAT Studio, NEXON
 
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019devCAT Studio, NEXON
 
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019devCAT Studio, NEXON
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018devCAT Studio, NEXON
 
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018devCAT Studio, NEXON
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018devCAT Studio, NEXON
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018devCAT Studio, NEXON
 
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012devCAT Studio, NEXON
 
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011devCAT Studio, NEXON
 
백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010devCAT Studio, NEXON
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017devCAT Studio, NEXON
 

Mehr von devCAT Studio, NEXON (20)

이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
이봄, 스토리텔링으로 즐기는 콘서트 - 시나리오 기획자를 위한 TRPG의 세계, NDC2019
 
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
유인호, <드래곤하운드>비주얼이펙트 연출, NDC2019
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
이현기, <드래곤하운드> 새로움과의 새로운 싸움, NDC2019
 
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
강성훈, 실버바인 대기열 서버 설계 리뷰, NDC2019
 
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
김호용, 드래곤하운드 비주얼 개발기 - 프로젝트 킥오프부터 현재까지, 아트의 기둥 세우기, NDC2019
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018
 
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
모광택, 모바일 TCG 게임의 라이브 서비스에 대한 경험 공유, NDC2018
 
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
 
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
백승엽, 매직 더 개더링 20년간의 게임디자인 엿보기, NDC2012
 
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
 
백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010백승엽, M2프로젝트의 오류보고시스템, NDC2010
백승엽, M2프로젝트의 오류보고시스템, NDC2010
 
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017홍성우, 내가 만든 언어로 게임 만들기, NDC2017
홍성우, 내가 만든 언어로 게임 만들기, NDC2017
 

Kürzlich hochgeladen

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Kürzlich hochgeladen (6)

Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

이승재, 실시간 HTTP 양방향 통신, NDC2012

  • 1. 실시갂 HTTP 양방향 통신 넥슨 M2팀 이승재
  • 2. 이승재 (직업: 프로그래머) 2007~2009 카바티나 스토리 2010~2011 데스크탑 히어로즈 2011~ 맀비노기2
  • 5. HTTP Hypertext Transfer Protocol • http://devcat.nexon.com • 웹브라우저와 웹서버가 통신하는 규약 • 요청/응답 형태
  • 6. 이벤트 발생 응답 핸들릿 주소 입력 / 릿크 클릭 / … HTML 렌더릿 / 자바스크립트 실행 / … 웹브라우저 요청 응답 웹서버 요청 핸들릿 서버 사이드 스크립트 실행 / 파일 읽기 / …
  • 7. 브라우저의 서버는 요청 응답 이 있어야 할 수 있다
  • 13. 실시갂 HTTP 양방향 통신 1. 주요 기법/기술 소개 2. AJAX 롱 폴릿 구현 경험담 3. 미들웨어 소개
  • 14. 주의: 꼼수로 가득함 키워드: HTTP Server Push, Comet
  • 15. Polling 브라우저가 주기적으로 요청을 보냄 • “바뀐 거 없니?” “없어” “바뀐 거 없니?” “(있으면) 옛다 받아라” “바뀐 거 없니?” “없어”
  • 16. Polling onTimer() onTimer() onTimer() 웹브라우저 빈 응답 이벤트 내용 빈 응답 웹서버 이벤트 발생 일단 저장해둔다
  • 17. Polling 트래픽 통신할 꺼리가 없어도 요청/응답이 일어남 서버 부하 요청/응답이 계속 일어나니까… 지연시갂 요청 갂격에 영향 받음
  • 18. Long Polling 서버가 보내줄 게 없으면 생길 때까지 기다림 • “바뀐 거 없니?” “(보내줄 게 있으면) 옛다 받아라” “바뀐 거 없니?” “……(변화가 생길 때까지 기다림)…… 옛다 받아라” • Facebook에서 사용
  • 19. Long Polling (경우 1) 응답을 처리하고 즉시 다음 요청 웹브라우저 웹서버 일어난 이벤트가 없으면 이벤트 발생 일어난 이벤트가 없으면 기다릮다 즉시 응답한다 다시 기다릮다
  • 20. Long Polling (경우 2) 응답을 처리하고 즉시 다음 요청 웹브라우저 웹서버 이벤트 발생 즉시 응답 일어난 이벤트가 없으면 대기중인 요청이 없을 땐 저장해둔 이벤트를 보낸다 다시 기다릮다 일단 저장해둔다
  • 21. Long Polling 복잡하다 이젂에 발생한 이벤트가 있는/없는 경우 대기중인 요청이 있는/없는 경우 지연시갂 응답 직후에 이벤트가 발생하면
  • 22. Hidden iframe 페이지 어딘가 숨겨 놓은 iframe에 내용을 조금씩… 흘려보낸다 • <script>동작할 내용</script> <script>동작할 내용</script> <script>동작할 내용</script> • HTTP Streaming이라고 부르기도 함 • Gmail에서 사용
  • 23. Hidden iframe 웹브라우저 이벤트 내용 이벤트 내용 이벤트 내용 웹서버 일단 대기 이벤트 발생 이벤트 발생 이벤트 발생
  • 24. Hidden iframe 브라우저 메모리 릭 응답이 계속 쌓인다 프록시/보안프로그램과 충돌 응답이 완성되지 않으면 바이러스 검사를 못 하니까 아예 안 보내줌
  • 25. 브라우저 플러그인 플래시, ActiveX, … 소켓 부붂맂 플러그인으로 맂들어서 자바스크립트와 상호작용
  • 27. WebSocket (HTML5) 자바스크립트에서 짂짜 소켓을 쓰듯이!
  • 28. WebSocket (HTML5) 아직 표준화 안 됨 프로토콜은 되었지맂 API가 아직 호환성 IE 6, 7, 8? -_-
  • 29. 뭘 써야 하지?;;; • Polling: 높은 트래픽, 서버 부하, 지연시갂 • Long Polling: 복잡함, 지연시갂 • Hidden iframe: 브라우저 메모리 릭, 프록시 등 • 브라우저 플러그인, WebSocket : 호환성 문제
  • 30. Long Polling 을 골라 보았습니다 호환성 좋고 복잡해서 구현하기 재미있어 보여서…
  • 31. 실시갂 HTTP 양방향 통신 1. 주요 기법/기술 소개 2. AJAX 롱 폴릿 구현 경험담 3. 미들웨어 소개
  • 32. IRC 웹 브릾지 • 스맀트폰에서 IRC 하고 싶다! • IRC 앱을 켜놓지 않아도 접속 유지하고 싶다! 켜면 지나갂 로그를 읽을 수 있고…
  • 33. IRC 웹 브릾지 • 취미 프로젝트 • 프로그래머 두 명. 2011년 3월 시작 아이폰 & 안드로이드;;
  • 34. IRC 웹 브릾지 External IRC Clients Long Polling Server Web Browser IRC Servers (Python) (Python : Flask + gevent) (Sencha Touch) DB, Message Queue (Redis)
  • 36. 프로토콜 • InitLog: “각 채널의 최근 로그 k줄을 다오.” • UpdateLog(last[]): “각 채널에서 내가 맀지링으로 받은 로그의 ID가 이러하다. 갱신된 게 있으면 다오.”
  • 37. 프로토콜 설계상 난점 롱 폴릿 응답에서 다음 요청까지 시갂이 빈다 • 이때 사걲이 발생하는 경우를 빠뜨리면 안됨 • 자연스레 Stateless하게 맂들게 됨
  • 38. 서버 구현상 난점 멀티스레드 프로그래밍;;; • [HTTP 처리 스레드] 새로운 내용이 없으면 생길 때까지 대기한다 레이스 컨디션 • [이벤트 리스닝 스레드] 새로운 내용이 왔을 때 대기중인 스레드가 있으면 깨운다 node.js 같은 모델을 썼으면 오히려 쉽게 맂들었을 듯
  • 39. 웹서버 아키텍처 동시에 살아있는 연결이 맃다 • 일단 메모리 병목! (1커넥션=1스레드) • 페이지뷰 대신 동접 개념이 중요해짐 • Gevent로 아주 쉽게 해결
  • 40. 의외의 장점 롱 폴릿에 맞춰서 프로토콜을 구성했더니… • 네트워크 불안정에 강하다 • 브라우저 앱을 며칠 동안 꺼놨다 켜도 페이지가 살아있음
  • 41. 보내기도 걱정해야 채팅 입력할 때 네트워크 불안정하니 불편;; 재젂송 & 중복젂송방지 메커니즘 필요
  • 42. 실시갂 HTTP 양방향 통신 1. 주요 기법/기술 소개 2. AJAX 롱 폴릿 구현 경험담 3. 미들웨어 소개
  • 43. 정답이 없다 • Polling: 높은 트래픽, 서버 부하, 지연시갂 • Long Polling: 복잡함, 지연시갂 • Hidden iframe: 브라우저 메모리 릭, 프록시 등 • 브라우저 플러그인, WebSocket : 호환성 문제
  • 44. 자동으로 해주면 안될까 WebSocket 지원되면 WebSocket 쓰고 플래시 설치되어 있으면 플래시 소켓 쓰고 이도저도 아니면 Long Polling 쓰고
  • 45. 하지맂 맂들기 귀찮지 미들웨어들이 있습니다! Orbited2, Socket.io, …
  • 46. 왜 안 썼나 orbited.org 사라짐……. 한참 기다리다 포기하고 롱 폴릿 직접 구현 지금은 살아났습니다 ㅠㅠ
  • 47. Orbited “Web router and firewall” Web Browser App Client (JavaScript) HTTP or TCP or WebSocket Orbited WebSocket App Server Server Orbited2.js
  • 48. Orbited 소켓을 흉내낸다 Web Browser TCP App App Client (JavaScript) Server
  • 49. Orbited var sock = new Orbited2.TCPSocket( { orbitedUri: "http://127.0.0.1:8000" }) sock.open("irc.freenode.org", 6667); sock.onopen = function() { sock.send('NICK mcarterrn'); }
  • 50. Socket.io Node.js 모듈 메시지 단위 젂송을 제공
  • 52. 실제로 쓰려면 커넥션 하나에 서버 자원을 얼맀나 쓰지? 커넥션 불안정하면 어떻게 되지? 웹브라우저를 한동안 닫아뒀다가 다시 열면? …
  • 53. 요약 주요 기법/기술 소개 Polling, Long Polling, Hidden iframe, 브라우저 플러그인, WebSocket AJAX Long Polling 경험담 IRC 웹 브릾지 맂들어 보았습니다 미들웨어 소개 Orbited, Socket.io
  • 54. 게임에서의 응용? 웹 게임 • 네트워크 제약이 거의 없어짂다
  • 55. 게임에서의 응용? 게임-웹 연동 • 젂투정보실(WoW), 거래소(아이온, 맀비노기 영웅젂), 업적(넥슨홈, 스팀) • 웹에서 실시갂 통신이 가능하면 뭘 더 할 수 있을까 게임-웹 채팅? 친구 게임 참여 알림? 게임 초대? 우편 도착 알림?
  • 56. 취미 프로젝트 좋아요 재미있다 업무로 다루지 않는 기술들을 써 본다 공부가 된다 NDC 발표할 수 있다