SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
Bridge
Over
Troubled Water
앱스프레소 Lab | 이상찬




                  1
자기소개


1. 모바일 게임
   C, Java

2. 무인민원발급기
   Delphi, RS232C

3. KTH 공채 34기
4. 앱스프레소
   Objective-C, JavaScript

                                    2
발표 내용


1. 앱스프레소 발자취

2. 브릿지 아키텍쳐 설명

3. 앱스프레소 플러그인 개발 설명

4. 플러그인 개발 데모




                              3
창세기


      4
Browser
  as a
Platform




           5
6
7
8
Cross Platform Framework

Appspresso 1.0 beta
       WAC support




                            9
On the Fly Debugging

Appspresso 1.0 RC
 Plug-in Development Kit




                           10
Appspresso 1.0
WAC API 2.0 support




                      11
Appspresso 1.1
Appspresso Debug Extention




                             12
beta    RC   1.0   1.1




각종 시상식
         국내외 컨퍼런스 참가

                      4만 다운로드 돌파

                                   13
Open Source on Github




                        14
iOS Android WP8

  JSB   webView



    Troubled Water

                    WebSocket Sencha

                  JavaScript CSS3   HTML5
                                            15
왜 웹앱 개발은 험난할까요


1. iOS
   UIWebView 와 Safari 의 의도된 성능차
   Linked In App을 만드는 과정에서의 실패담
   Facebook App을 웹앱으로 만드는 것을 포기
   Zynga는 JS Binding 기술을 통해 무엇을?

2. Android
   Sencha의 속이 터지는 반응 속도
   HTML5 스펙을 제대로 지원하지 못함 (web socket등)



                                         16
17
하이브리드 앱 개요


1. mobile web application

2. HTML5 + CSS3 + JavaScript

3. JS function -> ObjC method
   혹은 그 반대로 지원.

4. 혹은, JS 로 짠 프로젝트가 네이티브 언어로
   변환 되는 형태도 존재.

                                         18
명세서


1. HTML로 button을 만듦.

2. 1에서 만든 버튼에서 JS 함수 실행.

3. JS 함수는 같은 이름의 네이티브 메소드 실행.

4. 네이티브 메소드는 확인, 취소가 있는 알림창
   을 띄움.

5. 알림창에서 사용자가 누른 버튼을 알려줌.
                                 19
명세서를 구현


1. (HTML) <button>foo</button>

2. (JS) var bar = function () {};

3. (ObjC)
   - (void) bar {
     UIAlertView *alert = ..
     [alert show];
     [alert release]
   };
                                              20
지금은 구현중입니다.


           var Bar = function(){
            go to Native, Plz};


              -(void) bar : {
Web View
  Foo
           [UIAlertView show]



           return button index




                                   21
What the..




             22
Bridge


         23
폰갭


               var Bar = function {}


               make function Bar()




           ?
                to HTTP Request
Web View
  Foo

               Web View Delegate
                 Start Request


                   send Result


                                            24
폰갭


1. (JS) PhoneGap 큐 초기화

2. (JS) url : “gap://command/args”

3. (ObjC) start request : “gap://”

4. (ObjC) execute : command(args)

5. (ObjC) send Result

6. (JS) callback
                                          25
폰갭의 단점


1. 플러그인의 구조가 자유롭다 못해 폰갭만의 플
   러그인 구조라는 것이 없다.

2. 비동기 호출 밖에 지원할 수 없다.

3. 폰갭만의 개발 구조가 있는 것이 아니므로 각
   플랫폼별로 그 특성에 따라야만 한다.

4. 통합 개발 환경을 지원하지 않는다.

                                  26
Bridge
     Over
Troubled Water

                 27
앱스프레소 브릿지의 지향점


1. 표준 스펙을 정의하고, 그에 따르면 각 플랫폼
   에서 동일하게 작동하도록 한다.

2. 동기 / 비동기 호출 지원 할 수 있어야 한다.
   기왕이면 W3C 위젯 스펙도 지원하자.

3. 개발구조를 통일함으로써, 플랫폼이 바뀌더라
   도 개발언어만 바꾸면 되는 것을 보장한다.

4. 통합 개발 환경을 지원한다.
                                  28
브릿지는 이러합니다.



Appspresso

             Appspresso Plugin

       ?!    var bar = function()


                - (void) bar;




                                    29
앱스프레소 브릿지 구조


1. 이름의 근간은 배의 부품에 두고 있음.

2. keel(용골)

3. chronometer(항해용 정밀시계)

4. sail (돛)

5. paddle & screw (노, 스크루)


                                     30
keel


1. keel.js

2. 앱스프레소 브릿지 구조를 위한 자바스크립트
   객체들의 선언 및 구현이 되어 있음.

3. function 를 앱스프레소용 request로 변환

4. execSync/execAsync/watch

5. W3C 위젯 스펙 등등..
                                     31
chronometer


1. keel 에 선언된 내용을 네이티브 코드로 선언.

2. AxPlugin 관련 객체들

3. AxRuntime 관련 객체들

4. AxFile 관련 객체들

5. iOS 델리게이트 선언


                                    32
Sail


1. Chronometer 의 구현체.

2. 소형 웹 서버를 내장하여, 각 요청을 배분함.

3. 플러그인을 관리하는 역할을 함.

4. JS에 대응할 플러그인 객체를 연결함.

5. 런타임내 자원을 관리함.


                                  33
paddle & screw


1. deviceapi(WAC)도 플러그인으로 존재

  contact, camera 등등

2. 각 플랫폼에 맞춘 UI 등을 사용하도록 함

  ax.ext.ui, ax.ext.net 등등




                                              34
앱스프레소 브릿지


  KEEL



Chronometer


               paddle
   Sail




              screw


                                  35
앱스프레소 작동 예


           Sail                     Keel
 Plugin            Server          execSync

Manager           Manager
                                  execAsync
 JSON             JS to Native

 Session           Response
                                                     Foo
                                                   Web View
                                   Plugin
                                  JS function
    UI Manager
                                 Native method
   File Manager
 Widget Manager

                                                              36
Plug-in
Development Kit


                  37
플러그인 개발의 전제사항


1. Objective C로 개발이 가능해야 함.

2. 혹은 JAVA로 개발이 가능해야 함.

3. Appspresso 유경험자.




                                      38
플러그인 만드는 법


1. 플러그인 프로젝트를 만듭니다.

2. 플러그인 프로젝트를 어플리케이션 프로젝트
   에 추가합니다.

3. 플러그인 프로젝트를 구현합니다.

4. 빌드합니다.

5. appspresso.com 참조하세요.
                                   39
데모 : 앱 프로젝트 제작 후 플러그인 프로젝트 추가하기




        동영상 시연




                                  40
플러그인 프로젝트에서 작업해야 할 것


1. function을 추가하고 구현합니다.

2. (필요할 경우) 스태틱 라이브러리, 프레임웍,
   jar 등을 추가합니다.




                                   41
플러그인은 다음의 클래스를 가지고 있습니다


1. AxPlugin
   activate / deactivate / execute

2. AxPluginContext
   실행될 메소드와 아규먼트에 대한 정보를 가짐.

3. AxRuntimeContext
   현재 실행중이 앱 런타임의 정보를 가짐.



                                        42
플러그인 모듈 프로젝트에서 작업해야 할 것


1. activate / deactivate

   아규먼트로 AxRuntimeContext 가 들어옴.
   플러그인 생성 / 제거시에 불려짐.




                                       43
플러그인 모듈 프로젝트에서 작업해야 할 것


2. execute

   아규먼트로 AxPluginContext가 들어옴.
   AxPluginContext 에서 method 관련 정보를
   얻음.
   해당 정보를 토대로 네이티브 코드 작성.




                                       44
플러그인 모듈 프로젝트에서 작업해야 할 것


2. execute




                                       45
데모 : 명세서대로 플러그인 개발해보기


1. JS에 bar()를 추가함.

2. HTML 수정

3. ObjC에 bar()에 대응하는 부분 추가함.

4. ObjC에 알림창에 대한 delegate 추가.




                                     46
데모 : 명세서대로 플러그인 개발해보기




동영상 시연




                        47
참 쉽죠?




        48
Tech Support



  질문은 구글 그룹스로~
appspresso.com 먼저 확인해주세요~
개발하신 내용을 꼭 명시해 주세요.
플랫폼 종류, 에러메시지도 같이 올려주시면
감사하겠습니다.



                                 49
감사합니다.
개발실 / 앱스프레소 Lab / 이상찬
  gyaleon@kthcorp.com
        @gyaleon



                        50

Contenu connexe

Tendances

실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것Hyun-Seok Lee
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포KwangSeob Jeong
 
JavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJSJavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJSNAVER D2
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해중선 곽
 
make hybrid app.
make hybrid app.make hybrid app.
make hybrid app.jiseob kim
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨KwangSeob Jeong
 
[Hello World 천안아산] 안드로이드 입문
[Hello World 천안아산] 안드로이드 입문[Hello World 천안아산] 안드로이드 입문
[Hello World 천안아산] 안드로이드 입문Taeho Kim
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발cho hyun jong
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Sourcecho hyun jong
 
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAPcho hyun jong
 
Eclipse basic(조현종)
Eclipse basic(조현종)Eclipse basic(조현종)
Eclipse basic(조현종)cho hyun jong
 
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN정호 전
 
D4 이상찬-bridge overtroubledwater-no_movie_sbs
D4 이상찬-bridge overtroubledwater-no_movie_sbsD4 이상찬-bridge overtroubledwater-no_movie_sbs
D4 이상찬-bridge overtroubledwater-no_movie_sbsSangChan82
 

Tendances (19)

Eclipse RCP 1/2
Eclipse RCP 1/2Eclipse RCP 1/2
Eclipse RCP 1/2
 
실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것실무에서 라라벨 테스트를 작성하다 알게 된 것
실무에서 라라벨 테스트를 작성하다 알게 된 것
 
Learning Laravel
Learning LaravelLearning Laravel
Learning Laravel
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포bamboo 로 PHP 프로젝트 지속적인 배포
bamboo 로 PHP 프로젝트 지속적인 배포
 
Cooking jquery
Cooking jqueryCooking jquery
Cooking jquery
 
JavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJSJavaScript로 오픈소스를 해보자. bsJS
JavaScript로 오픈소스를 해보자. bsJS
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 
make hybrid app.
make hybrid app.make hybrid app.
make hybrid app.
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
[Hello World 천안아산] 안드로이드 입문
[Hello World 천안아산] 안드로이드 입문[Hello World 천안아산] 안드로이드 입문
[Hello World 천안아산] 안드로이드 입문
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Source
 
React Redux React Native
React Redux React NativeReact Redux React Native
React Redux React Native
 
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
올챙이(Tadpole for DB Tools)로 살펴보는 Eclipse RAP
 
Eclipse basic(조현종)
Eclipse basic(조현종)Eclipse basic(조현종)
Eclipse basic(조현종)
 
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN
 
D4 이상찬-bridge overtroubledwater-no_movie_sbs
D4 이상찬-bridge overtroubledwater-no_movie_sbsD4 이상찬-bridge overtroubledwater-no_movie_sbs
D4 이상찬-bridge overtroubledwater-no_movie_sbs
 

Similaire à [H3 2012] Bridge over troubled water : make plug-in for Appspresso

Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring bootChloeChoi23
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기NAVER D2
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Dong Chan Shin
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.장현 한
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerKyung Koo Yoon
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스Dexter Jung
 
[W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js
[W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js [W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js
[W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js 양재동 코드랩
 
댓글 플러그인 아포가토
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토Goonoo Kim
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 

Similaire à [H3 2012] Bridge over troubled water : make plug-in for Appspresso (20)

Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
Spring vs. spring boot
Spring vs. spring bootSpring vs. spring boot
Spring vs. spring boot
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1Project anarchy로 3 d 게임 만들기 part_1
Project anarchy로 3 d 게임 만들기 part_1
 
Spring boot DI
Spring boot DISpring boot DI
Spring boot DI
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
Spring Framework - Inversion of Control Container
Spring Framework - Inversion of Control ContainerSpring Framework - Inversion of Control Container
Spring Framework - Inversion of Control Container
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스
 
[W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js
[W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js [W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js
[W3C HTML5 2017] 예제를 통해 쉽게 살펴보는 Vue.js
 
2015 oce specification
2015 oce specification2015 oce specification
2015 oce specification
 
댓글 플러그인 아포가토
댓글 플러그인 아포가토댓글 플러그인 아포가토
댓글 플러그인 아포가토
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 

Plus de KTH, 케이티하이텔

[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기KTH, 케이티하이텔
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈KTH, 케이티하이텔
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기KTH, 케이티하이텔
 
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기KTH, 케이티하이텔
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략KTH, 케이티하이텔
 
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터KTH, 케이티하이텔
 
[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅KTH, 케이티하이텔
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화KTH, 케이티하이텔
 
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0KTH, 케이티하이텔
 
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.KTH, 케이티하이텔
 
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'KTH, 케이티하이텔
 
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자KTH, 케이티하이텔
 
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEPKTH, 케이티하이텔
 
[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기KTH, 케이티하이텔
 

Plus de KTH, 케이티하이텔 (20)

[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
KTH_Detail day_안드로메다에서 온 디자이너이야기_3차_디자인기본요소_박지환
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(2)_디자인사례_정덕주
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
KTH_Detail day_안드로메다에서 온 디자이너이야기_2차(1)_디자인프로세스,협업_한재기
 
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
KTH_Detail day_안드로메다에서 온 디자이너이야기_1차_디자인용어_지훈
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
 
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
[H3 2012] Open API 와 Ruby on Rails 에 대한 이야기
 
[H3 2012] UX, 애자일하고 싶어요
[H3 2012] UX, 애자일하고 싶어요[H3 2012] UX, 애자일하고 싶어요
[H3 2012] UX, 애자일하고 싶어요
 
[H3 2012] Instant Prototyping with ROR
[H3 2012] Instant Prototyping with ROR[H3 2012] Instant Prototyping with ROR
[H3 2012] Instant Prototyping with ROR
 
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
[H3 2012] 스마트모바일 환경에서의 App.품질관리전략
 
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
[H3 2012] 스타트업 개발사의 생존필수 아이템, BaaS 모바일 고객센터
 
[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅[H3 2012] Local based SNS를 이용한 타겟 마케팅
[H3 2012] Local based SNS를 이용한 타겟 마케팅
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
 
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
[H3 2012] 하이브리드앱 제작 사례 공유 - 푸딩얼굴인식 3.0
 
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
[H3 2012] Cloud Database Service - Hulahoop를 소개합니다.
 
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
[H3 2012] 기획/디자인/개발자 모두 알아야 하는 '대박앱의 비밀'
 
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
[H3 2012] OAuth2 - API 인증을위한 만능 도구상자
 
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
 
[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기[H3 2012] 로그속 사용자 발자국 들여다보기
[H3 2012] 로그속 사용자 발자국 들여다보기
 

[H3 2012] Bridge over troubled water : make plug-in for Appspresso

  • 2. 자기소개 1. 모바일 게임 C, Java 2. 무인민원발급기 Delphi, RS232C 3. KTH 공채 34기 4. 앱스프레소 Objective-C, JavaScript 2
  • 3. 발표 내용 1. 앱스프레소 발자취 2. 브릿지 아키텍쳐 설명 3. 앱스프레소 플러그인 개발 설명 4. 플러그인 개발 데모 3
  • 5. Browser as a Platform 5
  • 6. 6
  • 7. 7
  • 8. 8
  • 9. Cross Platform Framework Appspresso 1.0 beta WAC support 9
  • 10. On the Fly Debugging Appspresso 1.0 RC Plug-in Development Kit 10
  • 11. Appspresso 1.0 WAC API 2.0 support 11
  • 13. beta RC 1.0 1.1 각종 시상식 국내외 컨퍼런스 참가 4만 다운로드 돌파 13
  • 14. Open Source on Github 14
  • 15. iOS Android WP8 JSB webView Troubled Water WebSocket Sencha JavaScript CSS3 HTML5 15
  • 16. 왜 웹앱 개발은 험난할까요 1. iOS UIWebView 와 Safari 의 의도된 성능차 Linked In App을 만드는 과정에서의 실패담 Facebook App을 웹앱으로 만드는 것을 포기 Zynga는 JS Binding 기술을 통해 무엇을? 2. Android Sencha의 속이 터지는 반응 속도 HTML5 스펙을 제대로 지원하지 못함 (web socket등) 16
  • 17. 17
  • 18. 하이브리드 앱 개요 1. mobile web application 2. HTML5 + CSS3 + JavaScript 3. JS function -> ObjC method 혹은 그 반대로 지원. 4. 혹은, JS 로 짠 프로젝트가 네이티브 언어로 변환 되는 형태도 존재. 18
  • 19. 명세서 1. HTML로 button을 만듦. 2. 1에서 만든 버튼에서 JS 함수 실행. 3. JS 함수는 같은 이름의 네이티브 메소드 실행. 4. 네이티브 메소드는 확인, 취소가 있는 알림창 을 띄움. 5. 알림창에서 사용자가 누른 버튼을 알려줌. 19
  • 20. 명세서를 구현 1. (HTML) <button>foo</button> 2. (JS) var bar = function () {}; 3. (ObjC) - (void) bar { UIAlertView *alert = .. [alert show]; [alert release] }; 20
  • 21. 지금은 구현중입니다. var Bar = function(){ go to Native, Plz}; -(void) bar : { Web View Foo [UIAlertView show] return button index 21
  • 23. Bridge 23
  • 24. 폰갭 var Bar = function {} make function Bar() ? to HTTP Request Web View Foo Web View Delegate Start Request send Result 24
  • 25. 폰갭 1. (JS) PhoneGap 큐 초기화 2. (JS) url : “gap://command/args” 3. (ObjC) start request : “gap://” 4. (ObjC) execute : command(args) 5. (ObjC) send Result 6. (JS) callback 25
  • 26. 폰갭의 단점 1. 플러그인의 구조가 자유롭다 못해 폰갭만의 플 러그인 구조라는 것이 없다. 2. 비동기 호출 밖에 지원할 수 없다. 3. 폰갭만의 개발 구조가 있는 것이 아니므로 각 플랫폼별로 그 특성에 따라야만 한다. 4. 통합 개발 환경을 지원하지 않는다. 26
  • 27. Bridge Over Troubled Water 27
  • 28. 앱스프레소 브릿지의 지향점 1. 표준 스펙을 정의하고, 그에 따르면 각 플랫폼 에서 동일하게 작동하도록 한다. 2. 동기 / 비동기 호출 지원 할 수 있어야 한다. 기왕이면 W3C 위젯 스펙도 지원하자. 3. 개발구조를 통일함으로써, 플랫폼이 바뀌더라 도 개발언어만 바꾸면 되는 것을 보장한다. 4. 통합 개발 환경을 지원한다. 28
  • 29. 브릿지는 이러합니다. Appspresso Appspresso Plugin ?! var bar = function() - (void) bar; 29
  • 30. 앱스프레소 브릿지 구조 1. 이름의 근간은 배의 부품에 두고 있음. 2. keel(용골) 3. chronometer(항해용 정밀시계) 4. sail (돛) 5. paddle & screw (노, 스크루) 30
  • 31. keel 1. keel.js 2. 앱스프레소 브릿지 구조를 위한 자바스크립트 객체들의 선언 및 구현이 되어 있음. 3. function 를 앱스프레소용 request로 변환 4. execSync/execAsync/watch 5. W3C 위젯 스펙 등등.. 31
  • 32. chronometer 1. keel 에 선언된 내용을 네이티브 코드로 선언. 2. AxPlugin 관련 객체들 3. AxRuntime 관련 객체들 4. AxFile 관련 객체들 5. iOS 델리게이트 선언 32
  • 33. Sail 1. Chronometer 의 구현체. 2. 소형 웹 서버를 내장하여, 각 요청을 배분함. 3. 플러그인을 관리하는 역할을 함. 4. JS에 대응할 플러그인 객체를 연결함. 5. 런타임내 자원을 관리함. 33
  • 34. paddle & screw 1. deviceapi(WAC)도 플러그인으로 존재 contact, camera 등등 2. 각 플랫폼에 맞춘 UI 등을 사용하도록 함 ax.ext.ui, ax.ext.net 등등 34
  • 35. 앱스프레소 브릿지 KEEL Chronometer paddle Sail screw 35
  • 36. 앱스프레소 작동 예 Sail Keel Plugin Server execSync Manager Manager execAsync JSON JS to Native Session Response Foo Web View Plugin JS function UI Manager Native method File Manager Widget Manager 36
  • 38. 플러그인 개발의 전제사항 1. Objective C로 개발이 가능해야 함. 2. 혹은 JAVA로 개발이 가능해야 함. 3. Appspresso 유경험자. 38
  • 39. 플러그인 만드는 법 1. 플러그인 프로젝트를 만듭니다. 2. 플러그인 프로젝트를 어플리케이션 프로젝트 에 추가합니다. 3. 플러그인 프로젝트를 구현합니다. 4. 빌드합니다. 5. appspresso.com 참조하세요. 39
  • 40. 데모 : 앱 프로젝트 제작 후 플러그인 프로젝트 추가하기 동영상 시연 40
  • 41. 플러그인 프로젝트에서 작업해야 할 것 1. function을 추가하고 구현합니다. 2. (필요할 경우) 스태틱 라이브러리, 프레임웍, jar 등을 추가합니다. 41
  • 42. 플러그인은 다음의 클래스를 가지고 있습니다 1. AxPlugin activate / deactivate / execute 2. AxPluginContext 실행될 메소드와 아규먼트에 대한 정보를 가짐. 3. AxRuntimeContext 현재 실행중이 앱 런타임의 정보를 가짐. 42
  • 43. 플러그인 모듈 프로젝트에서 작업해야 할 것 1. activate / deactivate 아규먼트로 AxRuntimeContext 가 들어옴. 플러그인 생성 / 제거시에 불려짐. 43
  • 44. 플러그인 모듈 프로젝트에서 작업해야 할 것 2. execute 아규먼트로 AxPluginContext가 들어옴. AxPluginContext 에서 method 관련 정보를 얻음. 해당 정보를 토대로 네이티브 코드 작성. 44
  • 45. 플러그인 모듈 프로젝트에서 작업해야 할 것 2. execute 45
  • 46. 데모 : 명세서대로 플러그인 개발해보기 1. JS에 bar()를 추가함. 2. HTML 수정 3. ObjC에 bar()에 대응하는 부분 추가함. 4. ObjC에 알림창에 대한 delegate 추가. 46
  • 47. 데모 : 명세서대로 플러그인 개발해보기 동영상 시연 47
  • 49. Tech Support 질문은 구글 그룹스로~ appspresso.com 먼저 확인해주세요~ 개발하신 내용을 꼭 명시해 주세요. 플랫폼 종류, 에러메시지도 같이 올려주시면 감사하겠습니다. 49
  • 50. 감사합니다. 개발실 / 앱스프레소 Lab / 이상찬 gyaleon@kthcorp.com @gyaleon 50

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. &amp;#xBCF4;&amp;#xC2A4;&amp;#xAED8;&amp;#xC11C; &amp;#xB9D0;&amp;#xC500;&amp;#xD558;&amp;#xC0AC; (&amp;#xD074;&amp;#xB9AD;)\n&amp;#xBE0C;&amp;#xB77C;&amp;#xC6B0;&amp;#xC800; &amp;#xC560;&amp;#xC800; &amp;#xD50C;&amp;#xB7AB;&amp;#xD3FC;&amp;#xC774;&amp;#xB77C; (&amp;#xD074;&amp;#xB9AD;)\n\n
  6. &amp;#xB530;&amp;#xB974;&amp;#xB294; &amp;#xC790;&amp;#xB4E4;&amp;#xB85C; &amp;#xD558;&amp;#xC57C; &amp;#xC0BD;&amp;#xC744; &amp;#xC7A1;&amp;#xAC8C; &amp;#xD558;&amp;#xB354;&amp;#xB77C;.(&amp;#xD074;&amp;#xB9AD;)\n
  7. &amp;#xD30C;&amp;#xACE0; &amp;#xD30C;&amp;#xACE0; &amp;#xB610; &amp;#xD30C;&amp;#xAE30;&amp;#xB97C; &amp;#xC140; &amp;#xC218;&amp;#xB3C4; &amp;#xC5C6;&amp;#xB354;&amp;#xB77C;.(&amp;#xD074;&amp;#xB9AD;)\n
  8. &amp;#xC5B4;&amp;#xB290;&amp;#xB0A0; &amp;#xC544;&amp;#xBB34;&amp;#xAC83;&amp;#xB3C4; &amp;#xC5C6;&amp;#xB358; &amp;#xACF3;&amp;#xC5D0;&amp;#xC11C; &amp;#xC19F;&amp;#xC544;&amp;#xB098;&amp;#xB294;&amp;#xAC8C; &amp;#xC788;&amp;#xB354;&amp;#xB77C;.(&amp;#xD074;&amp;#xB9AD;)\n&amp;#xBCF4;&amp;#xC2A4;&amp;#xAC00; &amp;#xBCF4;&amp;#xC2DC;&amp;#xAE30;&amp;#xC5D0; &amp;#xC88B;&amp;#xC558;&amp;#xB354;&amp;#xB77C;. &amp;#xD558;&amp;#xC57C; &amp;#xC774;&amp;#xB984;&amp;#xC744; &amp;#xC571;&amp;#xC2A4;&amp;#xD504;&amp;#xB808;&amp;#xC18C;&amp;#xB77C; &amp;#xD558;&amp;#xB77C;.\n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. 2011 H3 &amp;#xC5D0;&amp;#xC11C; &amp;#xBC1C;&amp;#xD45C;\n
  15. 2011 H3 &amp;#xC5D0;&amp;#xC11C; &amp;#xBC1C;&amp;#xD45C;\n
  16. \n
  17. \n
  18. &amp;#xC77C;&amp;#xBC18;&amp;#xC801;&amp;#xC778; &amp;#xBC84;&amp;#xC804; &amp;#xCEE8;&amp;#xD2B8;&amp;#xB864; &amp;#xC0C1;&amp;#xC5D0;&amp;#xC11C;&amp;#xB294; &amp;#xB2E4;&amp;#xC74C;&amp;#xACFC; &amp;#xAC19;&amp;#xC740; &amp;#xBAA8;&amp;#xC591;&amp;#xC77C; &amp;#xAC83; &amp;#xC785;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n&amp;#xBC29;&amp;#xD1B5;&amp;#xC704;&amp;#xC5D0;&amp;#xC11C; &amp;#xC8FC;&amp;#xCD5C;&amp;#xD558;&amp;#xB294; Moiba &amp;#xC5D0;&amp;#xC11C; &amp;#xC194;&amp;#xB8E8;&amp;#xC158; &amp;#xB300;&amp;#xC0C1;&amp;#xC744; &amp;#xC218;&amp;#xC0C1;&amp;#xD588;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n2011&amp;#xB144; H3 &amp;#xC640; Deview &amp;#xC5D0;&amp;#xC11C; &amp;#xC571;&amp;#xC2A4;&amp;#xD504;&amp;#xB808;&amp;#xC18C;&amp;#xC5D0; &amp;#xB300;&amp;#xD55C; &amp;#xBC1C;&amp;#xD45C;&amp;#xB97C; &amp;#xD588;&amp;#xC5C8;&amp;#xAD6C;&amp;#xC694;. &amp;#xADF8;&amp;#xC678;&amp;#xC5D0;&amp;#xB3C4; MWC &amp;#xAC19;&amp;#xC740; &amp;#xD574;&amp;#xC678; &amp;#xCEE8;&amp;#xD37C;&amp;#xB7F0;&amp;#xC2A4;&amp;#xC5D0;&amp;#xB3C4; &amp;#xCD08;&amp;#xCCAD;&amp;#xBC1B;&amp;#xC744; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;.(&amp;#xD074;&amp;#xB9AD;)\n&amp;#xB610;&amp;#xD55C;, &amp;#xC5EC;&amp;#xB7EC;&amp;#xBD84;&amp;#xC758; &amp;#xC131;&amp;#xC6D0;&amp;#xC5D0; &amp;#xD798;&amp;#xC785;&amp;#xC5B4; 4&amp;#xB9CC; &amp;#xB2E4;&amp;#xC6B4;&amp;#xB85C;&amp;#xB4DC;&amp;#xB97C; &amp;#xB3CC;&amp;#xD30C;&amp;#xD560; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. &amp;#xC774; &amp;#xC790;&amp;#xB9AC;&amp;#xB97C; &amp;#xBE4C;&amp;#xC5B4; &amp;#xAC10;&amp;#xC0AC;&amp;#xB4DC;&amp;#xB9BD;&amp;#xB2C8;&amp;#xB2E4;.\n
  19. &amp;#xC77C;&amp;#xBC18;&amp;#xC801;&amp;#xC778; &amp;#xBC84;&amp;#xC804; &amp;#xCEE8;&amp;#xD2B8;&amp;#xB864; &amp;#xC0C1;&amp;#xC5D0;&amp;#xC11C;&amp;#xB294; &amp;#xB2E4;&amp;#xC74C;&amp;#xACFC; &amp;#xAC19;&amp;#xC740; &amp;#xBAA8;&amp;#xC591;&amp;#xC77C; &amp;#xAC83; &amp;#xC785;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n&amp;#xBC29;&amp;#xD1B5;&amp;#xC704;&amp;#xC5D0;&amp;#xC11C; &amp;#xC8FC;&amp;#xCD5C;&amp;#xD558;&amp;#xB294; Moiba &amp;#xC5D0;&amp;#xC11C; &amp;#xC194;&amp;#xB8E8;&amp;#xC158; &amp;#xB300;&amp;#xC0C1;&amp;#xC744; &amp;#xC218;&amp;#xC0C1;&amp;#xD588;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n2011&amp;#xB144; H3 &amp;#xC640; Deview &amp;#xC5D0;&amp;#xC11C; &amp;#xC571;&amp;#xC2A4;&amp;#xD504;&amp;#xB808;&amp;#xC18C;&amp;#xC5D0; &amp;#xB300;&amp;#xD55C; &amp;#xBC1C;&amp;#xD45C;&amp;#xB97C; &amp;#xD588;&amp;#xC5C8;&amp;#xAD6C;&amp;#xC694;. &amp;#xADF8;&amp;#xC678;&amp;#xC5D0;&amp;#xB3C4; MWC &amp;#xAC19;&amp;#xC740; &amp;#xD574;&amp;#xC678; &amp;#xCEE8;&amp;#xD37C;&amp;#xB7F0;&amp;#xC2A4;&amp;#xC5D0;&amp;#xB3C4; &amp;#xCD08;&amp;#xCCAD;&amp;#xBC1B;&amp;#xC744; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;.(&amp;#xD074;&amp;#xB9AD;)\n&amp;#xB610;&amp;#xD55C;, &amp;#xC5EC;&amp;#xB7EC;&amp;#xBD84;&amp;#xC758; &amp;#xC131;&amp;#xC6D0;&amp;#xC5D0; &amp;#xD798;&amp;#xC785;&amp;#xC5B4; 4&amp;#xB9CC; &amp;#xB2E4;&amp;#xC6B4;&amp;#xB85C;&amp;#xB4DC;&amp;#xB97C; &amp;#xB3CC;&amp;#xD30C;&amp;#xD560; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. &amp;#xC774; &amp;#xC790;&amp;#xB9AC;&amp;#xB97C; &amp;#xBE4C;&amp;#xC5B4; &amp;#xAC10;&amp;#xC0AC;&amp;#xB4DC;&amp;#xB9BD;&amp;#xB2C8;&amp;#xB2E4;.\n
  20. &amp;#xC77C;&amp;#xBC18;&amp;#xC801;&amp;#xC778; &amp;#xBC84;&amp;#xC804; &amp;#xCEE8;&amp;#xD2B8;&amp;#xB864; &amp;#xC0C1;&amp;#xC5D0;&amp;#xC11C;&amp;#xB294; &amp;#xB2E4;&amp;#xC74C;&amp;#xACFC; &amp;#xAC19;&amp;#xC740; &amp;#xBAA8;&amp;#xC591;&amp;#xC77C; &amp;#xAC83; &amp;#xC785;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n&amp;#xBC29;&amp;#xD1B5;&amp;#xC704;&amp;#xC5D0;&amp;#xC11C; &amp;#xC8FC;&amp;#xCD5C;&amp;#xD558;&amp;#xB294; Moiba &amp;#xC5D0;&amp;#xC11C; &amp;#xC194;&amp;#xB8E8;&amp;#xC158; &amp;#xB300;&amp;#xC0C1;&amp;#xC744; &amp;#xC218;&amp;#xC0C1;&amp;#xD588;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n2011&amp;#xB144; H3 &amp;#xC640; Deview &amp;#xC5D0;&amp;#xC11C; &amp;#xC571;&amp;#xC2A4;&amp;#xD504;&amp;#xB808;&amp;#xC18C;&amp;#xC5D0; &amp;#xB300;&amp;#xD55C; &amp;#xBC1C;&amp;#xD45C;&amp;#xB97C; &amp;#xD588;&amp;#xC5C8;&amp;#xAD6C;&amp;#xC694;. &amp;#xADF8;&amp;#xC678;&amp;#xC5D0;&amp;#xB3C4; MWC &amp;#xAC19;&amp;#xC740; &amp;#xD574;&amp;#xC678; &amp;#xCEE8;&amp;#xD37C;&amp;#xB7F0;&amp;#xC2A4;&amp;#xC5D0;&amp;#xB3C4; &amp;#xCD08;&amp;#xCCAD;&amp;#xBC1B;&amp;#xC744; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;.(&amp;#xD074;&amp;#xB9AD;)\n&amp;#xB610;&amp;#xD55C;, &amp;#xC5EC;&amp;#xB7EC;&amp;#xBD84;&amp;#xC758; &amp;#xC131;&amp;#xC6D0;&amp;#xC5D0; &amp;#xD798;&amp;#xC785;&amp;#xC5B4; 4&amp;#xB9CC; &amp;#xB2E4;&amp;#xC6B4;&amp;#xB85C;&amp;#xB4DC;&amp;#xB97C; &amp;#xB3CC;&amp;#xD30C;&amp;#xD560; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. &amp;#xC774; &amp;#xC790;&amp;#xB9AC;&amp;#xB97C; &amp;#xBE4C;&amp;#xC5B4; &amp;#xAC10;&amp;#xC0AC;&amp;#xB4DC;&amp;#xB9BD;&amp;#xB2C8;&amp;#xB2E4;.\n
  21. &amp;#xC77C;&amp;#xBC18;&amp;#xC801;&amp;#xC778; &amp;#xBC84;&amp;#xC804; &amp;#xCEE8;&amp;#xD2B8;&amp;#xB864; &amp;#xC0C1;&amp;#xC5D0;&amp;#xC11C;&amp;#xB294; &amp;#xB2E4;&amp;#xC74C;&amp;#xACFC; &amp;#xAC19;&amp;#xC740; &amp;#xBAA8;&amp;#xC591;&amp;#xC77C; &amp;#xAC83; &amp;#xC785;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n&amp;#xBC29;&amp;#xD1B5;&amp;#xC704;&amp;#xC5D0;&amp;#xC11C; &amp;#xC8FC;&amp;#xCD5C;&amp;#xD558;&amp;#xB294; Moiba &amp;#xC5D0;&amp;#xC11C; &amp;#xC194;&amp;#xB8E8;&amp;#xC158; &amp;#xB300;&amp;#xC0C1;&amp;#xC744; &amp;#xC218;&amp;#xC0C1;&amp;#xD588;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. (&amp;#xD074;&amp;#xB9AD;)\n2011&amp;#xB144; H3 &amp;#xC640; Deview &amp;#xC5D0;&amp;#xC11C; &amp;#xC571;&amp;#xC2A4;&amp;#xD504;&amp;#xB808;&amp;#xC18C;&amp;#xC5D0; &amp;#xB300;&amp;#xD55C; &amp;#xBC1C;&amp;#xD45C;&amp;#xB97C; &amp;#xD588;&amp;#xC5C8;&amp;#xAD6C;&amp;#xC694;. &amp;#xADF8;&amp;#xC678;&amp;#xC5D0;&amp;#xB3C4; MWC &amp;#xAC19;&amp;#xC740; &amp;#xD574;&amp;#xC678; &amp;#xCEE8;&amp;#xD37C;&amp;#xB7F0;&amp;#xC2A4;&amp;#xC5D0;&amp;#xB3C4; &amp;#xCD08;&amp;#xCCAD;&amp;#xBC1B;&amp;#xC744; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;.(&amp;#xD074;&amp;#xB9AD;)\n&amp;#xB610;&amp;#xD55C;, &amp;#xC5EC;&amp;#xB7EC;&amp;#xBD84;&amp;#xC758; &amp;#xC131;&amp;#xC6D0;&amp;#xC5D0; &amp;#xD798;&amp;#xC785;&amp;#xC5B4; 4&amp;#xB9CC; &amp;#xB2E4;&amp;#xC6B4;&amp;#xB85C;&amp;#xB4DC;&amp;#xB97C; &amp;#xB3CC;&amp;#xD30C;&amp;#xD560; &amp;#xC218; &amp;#xC788;&amp;#xC5C8;&amp;#xC2B5;&amp;#xB2C8;&amp;#xB2E4;. &amp;#xC774; &amp;#xC790;&amp;#xB9AC;&amp;#xB97C; &amp;#xBE4C;&amp;#xC5B4; &amp;#xAC10;&amp;#xC0AC;&amp;#xB4DC;&amp;#xB9BD;&amp;#xB2C8;&amp;#xB2E4;.\n
  22. &amp;#xC815;&amp;#xD655;&amp;#xD788; &amp;#xAE30;&amp;#xAC04;&amp;#xC740; &amp;#xC548;&amp;#xC815;&amp;#xD574;&amp;#xC9D0;.\n&amp;#xD604;&amp;#xC7AC; &amp;#xAE43;&amp;#xD5D9;&amp;#xC5D0; &amp;#xC62C;&amp;#xB824;&amp;#xB193;&amp;#xACE0; private &amp;#xC73C;&amp;#xB85C; &amp;#xC624;&amp;#xD508; &amp;#xC900;&amp;#xBE44;&amp;#xC911;.\n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n