PowerPoint 프레젠테이션

Similar documents
<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

[Brochure] KOR_TunA

C++ Programming

<4D F736F F D205B4354BDC9C3FEB8AEC6F7C6AE5D3131C8A35FC5ACB6F3BFECB5E520C4C4C7BBC6C320B1E2BCFA20B5BFC7E2>

Agenda 오픈소스 트렌드 전망 Red Hat Enterprise Virtualization Red Hat Enterprise Linux OpenStack Platform Open Hybrid Cloud

FileMaker 15 ODBC 및 JDBC 설명서

The Self-Managing Database : Automatic Health Monitoring and Alerting

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일


PowerPoint 프레젠테이션

Interstage5 SOAP서비스 설정 가이드

1217 WebTrafMon II

!K_InDesginCS_NFH

게시판 스팸 실시간 차단 시스템

Sena Technologies, Inc. HelloDevice Super 1.1.0

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

The Pocket Guide to TCP/IP Sockets: C Version

SMB_ICMP_UDP(huichang).PDF

User Guide

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

vm-웨어-앞부속

Microsoft PowerPoint - chap01-C언어개요.pptx

Special Theme _ 모바일웹과 스마트폰 본 고에서는 모바일웹에서의 단말 API인 W3C DAP (Device API and Policy) 의 표준 개발 현황에 대해서 살펴보고 관 련하여 개발 중인 사례를 통하여 이해를 돕고자 한다. 2. 웹 애플리케이션과 네이

FileMaker ODBC 및 JDBC 가이드

Analyst Briefing

PowerPoint 프레젠테이션

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

홍익3월웹진PDF

홍익노사5월웹진용


The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - C++ 5 .pptx

클라우드컴퓨팅확산에따른국내경제시사점 클라우드컴퓨팅확산에따른국내경제시사점 * 1) IT,,,, Salesforce.com SaaS (, ), PaaS ( ), IaaS (, IT ), IT, SW ICT, ICT IT ICT,, ICT, *, (TEL)

슬라이드 1

ICT03_UX Guide DIP 1605


API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

PowerPoint Template

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

PowerPoint Presentation

유니티 변수-함수.key

cam_IG.book

Microsoft PowerPoint - [2009] 02.pptx

강의10

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

Todo list Universal app

교육2 ? 그림

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

쉽게 풀어쓴 C 프로그래밍

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Microsoft PowerPoint - 04-UDP Programming.ppt

Secure Programming Lecture1 : Introduction

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

untitled

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

3장

Apache2 + Tomcat 5 + JK2 를 사용한 로드밸런싱과 세션 복제 클러스터링 사이트 구축

bn2019_2

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

DocsPin_Korean.pages

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

untitled

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

Modern Javascript

제20회_해킹방지워크샵_(이재석)

Chapter_02-3_NativeApp

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Windows Live Hotmail Custom Domains Korea

chap10.PDF

MySQL-Ch10

10.

Chap7.PDF


¨ìÃÊÁ¡2

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

6강.hwp

Microsoft Word - src.doc

Facebook API

thesis

Cloud Friendly System Architecture

3ÆÄÆ®-14

Figure 5.01

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

untitled

Adobe Flash 취약점 분석 (CVE )

adfasdfasfdasfasfadf

서현수

2009년 상반기 사업계획

thesis

PowerPoint 프레젠테이션

자바-11장N'1-502

Contents I. 칼라스 네트워크 플레이어란 1. Pc-Fi를 넘어서 발전한 차세대 음악 플레이어 칼라스 네트워크 플레이어의 장점 3. 시스템 기본 구성

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

TTA Journal No.157_서체변경.indd

Portal_9iAS.ppt [읽기 전용]

PCServerMgmt7


ARMBOOT 1

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

Transcription:

Session #4 C++ REST SDK 2.0 (Codename : Casablanca) 2014 년 3 월 C++ 클라우드환경을준비하다

Motivation : 재사용을통한생산성향상 기계어 어셈블리어 C 언어 C++ 언어 COM,DCOM 실행되는언어 읽을수있는언어 함수재사용 클래스재사용 바이너리재사용 2

Motivation : 원격지기능사용 3

Motivation : 미들웨어 http://middleware.smile.fr/concepts-des-moms-et-jms/qu-est-ce-qu-un-middleware 4

Motivation : WebService http://msdn.microsoft.com/ko-kr/library/azure/jj554228.asp 5

Motivation : 도메인지향데이터전송 http://www.programmableweb.com/news/3000-web-apis-trends-quickly-growing-directory/2011/03/08 http://superwebapps.dk/ 6

라이브러리선택 http://realtimelogic.com/products/ajax/ http://en.wikipedia.org/wiki/cloud_computing#mediaviewer/file:cloud_computing.svg 7

C++ REST SDK 특징 서버애플리케이션지원 IIS 호스팅 /Azure/stand-alone 방식의서버애플리케이션구현가능 클라이언트애플리케이션지원 통신라이브러리, 파서, 직렬화등필수적인라이브러리셋의모음 오픈소스 http://casablanca.codeplex.com 크로스플랫폼 ( 윈도우, 리눅스, OS X, ios, 윈폰, WinRT ) 모던 C++ 최신트렌드에맞는스타일의코드작성가능 간결하고유지보수하기쉬우며생산성높은코드작성가능 비주얼스튜디오의지원 8

C++ REST SDK 9

NuGet 라이브러리패키지관리 오픈소스라이브러리제공, 형상관리, 커뮤니티등토털에코시스템 15000 여개프로젝트, 11 만 6 천여개프로젝트패키지관리 하루평균약 23 만건정도의프로젝트다운로드 10

NuGet 호스팅 Nexus : http://www.sonatype.com/nexus/nexus-pro-features Artifactory : http://www.jfrog.com/home/v_artifactorypro_features Inedo ProGet : http://inedo.com/proget/overview MyGET : http://www.myget.org 11

NuGet 을이용한로컬패키지관리 12

13 http://www.cafex.com/wp-content/uploads/2012/09/demo_banner.png

C++ REST SDK 에포함된라이브러리 Task Programming Utility & Helper JSON Parser HTTP Listener Asynchronous Streams HTTP Client 14

Architecture Azure / IIS Host Windows 7 Host Binary Serializers Apps & Libraries Timers Bing Maps JSON Parser & Writer Azure Storage Windows Live Xbox Live Async File I/O HTTP Client & Listener TCP Client & Listener Web Sockets Client & Listener Possible 3 rd Party Service Host WinHTTP PPL Boost.Asio IOCP HTTP.sys Casablanca Lib Windows XP, Vista, 7, 8.x / Windows Phone 8.x / Linux / Mac OS X / ios Foundation 15

Task 클래스와 Continuations 패턴 task<t> taskobject_a([](){slow_operation_a()}); taskobject_a.then([](t i) { return slow_operation_b(i); }); bool isdone = taskobject_a.is_done(); taskobject_a.wait(); T A_return_value = taskobject_a.get(); http://msdn.microsoft.com/en-us/library/windows/apps/jj160321.aspx 16

Join 패턴, Choice 패턴구현 array<task<int>, 3> tasks = { create_task([]() -> int { return long_ret_1(); }), create_task([]() -> int { return middle_ret_2(); }), create_task([]() -> int { return short_ret_3(); }) }; when_any(begin(tasks), end(tasks)).then([](pair<int, size_t> result){ // 결과값과인덱스반환. [3, 2] }).wait(); when_all(begin(tasks), end(tasks)).then([](vector<int> results) { // 결과값반환. [1, 2, 3] }).wait(); 17

문자열처리 플랫폼마다다른문자열방식지원 utility::string_t, size64_t, char_t, istrinm_t, URI(Uniform Resource Identifiers) protocol : // server [: port] / path? query # fragment http://search.cpprestsdk.com:8080/search/total.jsp?id=1234&comment=rest#cosmos <->base64, <->utf8, <->utf16 18

URI 다루기 uri_builder b; b.set_scheme(u("http")); b.set_host(u("search.naver.com")); b.set_port(80); b.set_path(u("search.naver")); b.set_query(uri::encode_uri(u("query=a 가 1 나 "))); // http://search.naver.com:80/search.naver?query=a%ea%b0%801%eb%82%98 vector<string_t> paths = uri::split_path(u.to_string()); map<string_t, string_t> querys = uri::split_query(u.to_string()); 19

문자열변환관련유틸리티함수군 namespace Utility { namespace conversions { std::string cdecl utf16_to_utf8(const utf16string &w); utf16string cdecl utf8_to_utf16(const std::string &s); utf16string cdecl usascii_to_utf16(const std::string &s); utf16string cdecl latin1_to_utf16(const std::string &s); utf16string cdecl default_code_page_to_utf16(const std::string &s); utility::string_t cdecl to_string_t(std::string &&s); utility::string_t cdecl to_string_t(utf16string &&s); utility::string_t cdecl to_string_t(const std::string &s); utility::string_t cdecl to_string_t(const utf16string &s); utf16string cdecl to_utf16string(const std::string &value); utf16string cdecl to_utf16string(utf16string value); std::string cdecl to_utf8string(std::string value); std::string cdecl to_utf8string(const utf16string &value); utility::string_t cdecl to_base64(const std::vector<unsigned char>& data); utility::string_t cdecl to_base64(uint64_t data); std::vector<unsigned char> cdecl from_base64(const utility::string_t& str); template <typename Source> utility::string_t print_string(const Source &val) template <typename Target> Target scan_string(const utility::string_t &str) } } 20

http_listener var http = require('http'); http.createserver(function (request, response) { response.writehead(200, {'Content-Type': 'text/plain'}); response.end('hello World!'); }).listen(8080, '127.0.0.1'); task_status server() { http_listener listener(u("http://localhost:8080/test")); listener.support([&listener](http_request request)->void{ request.reply(status_codes::ok, L"Hello World"); }); listener.open().then([](){while (1) Sleep(10000);}).wait(); listener.close().wait(); } 21

http_client task_status foo() { http_client client(u("http://se.naver.com/index.html")); return client.request(methods::get).then([](http_response response) { std::wcout << response.extract_string().get() << std::endl; }).wait(); } int _tmain(int argc, _TCHAR* argv []) { foo(); return 0; } 22

23 http://www.cafex.com/wp-content/uploads/2012/09/demo_banner.png

JSON web::json::value v0 = web::json::value::null(); web::json::value v1 = web::json::value::number(17); web::json::value v2 = web::json::value::number(3.1415); web::json::value v3 = web::json::value::boolean(true); web::json::value v4 = web::json::value::string(u("hello Again!")); web::json::value v5 = web::json::value::object(); web::json::value v6 = web::json::value::array(); 24

field_map 을이용한 JSON 셋 web::json::value::field_map f; f.push_back(std::pair<web::json::value, web::json::value> (web::json::value::string(u("name1")), web::json::value::number(1))); f.push_back(std::pair<web::json::value, web::json::value> (web::json::value::string(u("name2")), web::json::value::string(u("hello")))); f.push_back(std::pair<web::json::value, web::json::value> (web::json::value::string(u("name3")), web::json::value::boolean(u("true")))); f.push_back(std::pair<web::json::value, web::json::value> (web::json::value::string(u("name4")), web::json::value::null())); web::json::value obj = web::json::value::object(f); std::wcout << obj.to_string() << std::endl; 출력값 : { "name1" : 1, "name2" : "hello", "name3" : true, "name4" : null } 25

object 를직접다루어 JSON 셋팅 web::json::value obj = web::json::value::object(); obj[u("name1")] = web::json::value::string(u("hi there")); obj[u("name2")] = web::json::value::number(77); std::wcout << obj.to_string() << std::endl; 출력값 : { "name1" : "hi there", "name2" : 77 } 26

as_* 함수를이용하여값조회 web::json::value v1 = web::json::value::number(17); web::json::value v2 = web::json::value::number(3.1415); web::json::value v3 = web::json::value::boolean(true); web::json::value v4 = web::json::value::string(u("hello Again!")); //... int32_t av1 = v1.as_integer(); double av2 = v2.as_double(); bool av3 = v3.as_bool(); utility::string_t av4 = v4.as_string(); 27

JSON 문자열파싱 web::json::value obj = web::json::value::object(); obj[u("name1")] = web::json::value::string(u("hi there")); obj[u("name2")] = web::json::value::number(77); utility::string_t tmp = obj[u("name1")].as_string(); for(web::json::value::const_iterator iter = obj.as_object().begin() ; iter!= obj.as_object().end(); ++iter) { std::wcout << iter->first.to_string() << L" : " << iter->second.to_string() << std::endl; } 출력값 : "name1" : "hi there" "name2" : 77 28

29 http://www.cafex.com/wp-content/uploads/2012/09/demo_banner.png

Reference C++ REST SDK (codename Casablanca ) https://casablanca.codeplex.com/ REST application programming http://www.ibm.com/developerworks/aix/library/auaem_rest/#resources Connecting C++ apps to the cloud via Casablanca Niklas Gustafsson & Artur Laksberg //build/ 3-003 30