SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
11. 스크립팅
11.1 스크립트 바인딩 추가
• 스크립트 바인딩 - 스크립트 언어에서 C++ API에 접근하는
방법을 제공.
11.1.1 확장 VS 임베딩
• 언어 확장 - 스크립트 언어의 기능을 보완하기 위한 모듈로
제공.
• 애플리케이션에 임베딩 - 앱 기능을 스크립트로 제어.
11.1.2 스크립팅의 장점(1)
• 크로스 플랫폼 - 텍스트 기반.
• 빠른 개발 - 컴파일/링크 생략, 

빠르게 프로토타입 제작/테스트/결과 확인.
• 적은 코드량 - 고차원적인 스크립트 언어 활용.
• 스크립트 기반의 앱 - MVC에서 M,V는 C++, Controller
는 스크립트로 작성.
11.1.2 스크립팅의 장점(2)
• 전문가 사용자 집단 지원 - 고급 사용자.(반복적 작업, 동작 재
정의).
• 확장성 - 스크립트를 통해 플러그인 제공.
• 테스트를 위한 스크립팅 - 블랙박스 테스트에서 화이트박스
테스트.
• 표현성 - 자신이 생각하는 소프트웨어의 본질이 변하지 않도
록.
11.1.3 언어 호환성 문제
• 명명 규칙 - C++(Camel Case, GetName()),
Python(Snake Case, get_name())
• Getter/Setter - 멤버변수를 노출하지 말고 Getter/Setter 사
용. 

object.name = “hello”

name = object.name
• 연산자 - 중첩되거나 추가되는 경우.
• 컨테이너 - C++(정적 타입), 스크립트(동적 타입 지원)
11.1.4 언어 장벽 교차
• 가상 메서드 지원 - 동적 바인딩하는 Python 에서 동작하지
않음.
• 일부 바인딩 기법에서 언어 다형성을 지원.(Boost Python,
SWIG)
• C++ 내부 이벤트나 알림 이벤트를 스크립트와 연동.
• 예외 처리 - C++ 예외를 스크립트로 전달.
11.2 스크립트 바인딩 기법
• 스크립트 바인딩 기술은 어댑터 디자인 패턴 전략.
• 유지보수 비용 증가.
• 꼭 필요한지 다시 한번 생각해 볼 문제.
• Boost.Python, SWIG, Python-SIP(QT)
• COM(XPCOM), CORBA
11.3 BOOST PYTHON
C++ API
Boost.Python
Wrapper
동적 라이브러리컴파일러
Python
11.3.2 C++API 래핑
바인딩 모듈
COMPILE
• c++ -std=c++11 -stdlib=libc++ phonebook_wrap.cpp -I $
{BOOST_HEADER} -c `python-config —cflags`
SWIG를 이용한 RUBY 바인딩 추가
인터페이스

파일
C++ API 동적 라이브러리
SWIG
Ruby
생성된 래퍼
Compiler
11.4.1 SWIG를 사용한 C++ API 래핑
SWIG 인터페이스 파일

Contenu connexe

Tendances

9월 기술사항
9월 기술사항9월 기술사항
9월 기술사항
Jinhyuk Lee
 
JavaScript MEAN 스택
JavaScript MEAN 스택JavaScript MEAN 스택
JavaScript MEAN 스택
Tai Hoon KIM
 
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
NAVER D2
 

Tendances (16)

Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS)
 
9월 기술사항
9월 기술사항9월 기술사항
9월 기술사항
 
JavaScript MEAN 스택
JavaScript MEAN 스택JavaScript MEAN 스택
JavaScript MEAN 스택
 
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
Atlassian 및 오픈소스를 이용한 DevOps 구축 - 한국정보컨설팅
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_계획과 검토
 
더 나은 SW프로젝트를 위해
 더 나은 SW프로젝트를 위해 더 나은 SW프로젝트를 위해
더 나은 SW프로젝트를 위해
 
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
[Step UP! 마이그레이션] RAD 업그레이드 마이그레이션_점검과 수행
 
오픈소스 개요
오픈소스 개요오픈소스 개요
오픈소스 개요
 
델파이 코드 마이그레이션 Step by Step
델파이 코드 마이그레이션 Step by Step델파이 코드 마이그레이션 Step by Step
델파이 코드 마이그레이션 Step by Step
 
[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개[오픈소스컨설팅] DevOps 체험교육 소개
[오픈소스컨설팅] DevOps 체험교육 소개
 
오픈소스 개발도구 2014
오픈소스 개발도구 2014오픈소스 개발도구 2014
오픈소스 개발도구 2014
 
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권[D2 오픈세미나]5.html5 api 테트리스게임_이진권
[D2 오픈세미나]5.html5 api 테트리스게임_이진권
 
Atlassian Bamboo를 활용한 이상적인 DevTestOps 환경 구축 - 모우소프트
Atlassian Bamboo를 활용한 이상적인 DevTestOps 환경 구축 - 모우소프트Atlassian Bamboo를 활용한 이상적인 DevTestOps 환경 구축 - 모우소프트
Atlassian Bamboo를 활용한 이상적인 DevTestOps 환경 구축 - 모우소프트
 
모바일표준Fw 소개자료 20141106
모바일표준Fw 소개자료 20141106모바일표준Fw 소개자료 20141106
모바일표준Fw 소개자료 20141106
 

En vedette (6)

Meteor ddp
Meteor ddpMeteor ddp
Meteor ddp
 
Node ch12
Node ch12Node ch12
Node ch12
 
32 osx app_release
32 osx app_release32 osx app_release
32 osx app_release
 
Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2
 
Ch4 pugixml
Ch4 pugixmlCh4 pugixml
Ch4 pugixml
 
DDP - Meteor
DDP - MeteorDDP - Meteor
DDP - Meteor
 

Similaire à 11.scripting

효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
[D2 오픈세미나]3.자바스크립트mean스택 김태훈
[D2 오픈세미나]3.자바스크립트mean스택 김태훈[D2 오픈세미나]3.자바스크립트mean스택 김태훈
[D2 오픈세미나]3.자바스크립트mean스택 김태훈
NAVER D2
 
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
Amazon Web Services Korea
 
유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0
sprdd
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
정민 안
 

Similaire à 11.scripting (20)

[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트[NDC17] 왓 스튜디오 서비스파트
[NDC17] 왓 스튜디오 서비스파트
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
 
[D2 오픈세미나]3.자바스크립트mean스택 김태훈
[D2 오픈세미나]3.자바스크립트mean스택 김태훈[D2 오픈세미나]3.자바스크립트mean스택 김태훈
[D2 오픈세미나]3.자바스크립트mean스택 김태훈
 
regular.express 발표자료
regular.express 발표자료regular.express 발표자료
regular.express 발표자료
 
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
처음 시작하는 라라벨
처음 시작하는 라라벨처음 시작하는 라라벨
처음 시작하는 라라벨
 
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
AWS와 함께하는 DevOps이야기 :: 박선용 :: AWS Summit Seoul 2016
 
유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
 
생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf생산성을 높여주는 iOS 개발 방법들.pdf
생산성을 높여주는 iOS 개발 방법들.pdf
 
LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native
[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native
[OpenInfra Days Korea 2018] (삼성전자) Evolution to Cloud Native
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
 

Plus de Kyungryul KIM

전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전
Kyungryul KIM
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowController
Kyungryul KIM
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2
Kyungryul KIM
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_low
Kyungryul KIM
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
Kyungryul KIM
 
DDD-07-Using The Language
DDD-07-Using The LanguageDDD-07-Using The Language
DDD-07-Using The Language
Kyungryul KIM
 
Cleancode ch16 serialdate_refactoring
Cleancode ch16 serialdate_refactoringCleancode ch16 serialdate_refactoring
Cleancode ch16 serialdate_refactoring
Kyungryul KIM
 
Cleancode ch14-successive refinement
Cleancode ch14-successive refinementCleancode ch14-successive refinement
Cleancode ch14-successive refinement
Kyungryul KIM
 

Plus de Kyungryul KIM (20)

Cocos2 d x-7.3_4
Cocos2 d x-7.3_4Cocos2 d x-7.3_4
Cocos2 d x-7.3_4
 
Cocos2d x-ch5-1
Cocos2d x-ch5-1Cocos2d x-ch5-1
Cocos2d x-ch5-1
 
Coco2d x
Coco2d xCoco2d x
Coco2d x
 
23 drag drop
23 drag drop23 drag drop
23 drag drop
 
Hadoop ch5
Hadoop ch5Hadoop ch5
Hadoop ch5
 
전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowController
 
Dsas
DsasDsas
Dsas
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_low
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
 
Mibis ch20
Mibis ch20Mibis ch20
Mibis ch20
 
Mibis ch15
Mibis ch15Mibis ch15
Mibis ch15
 
Mibis ch8
Mibis ch8Mibis ch8
Mibis ch8
 
Mibis ch4
Mibis ch4Mibis ch4
Mibis ch4
 
14 strategy design
14 strategy design14 strategy design
14 strategy design
 
Ddd ch12-13
Ddd ch12-13Ddd ch12-13
Ddd ch12-13
 
DDD-07-Using The Language
DDD-07-Using The LanguageDDD-07-Using The Language
DDD-07-Using The Language
 
Cleancode ch16 serialdate_refactoring
Cleancode ch16 serialdate_refactoringCleancode ch16 serialdate_refactoring
Cleancode ch16 serialdate_refactoring
 
Cleancode ch14-successive refinement
Cleancode ch14-successive refinementCleancode ch14-successive refinement
Cleancode ch14-successive refinement
 

11.scripting

  • 2. 11.1 스크립트 바인딩 추가 • 스크립트 바인딩 - 스크립트 언어에서 C++ API에 접근하는 방법을 제공.
  • 3. 11.1.1 확장 VS 임베딩 • 언어 확장 - 스크립트 언어의 기능을 보완하기 위한 모듈로 제공. • 애플리케이션에 임베딩 - 앱 기능을 스크립트로 제어.
  • 4. 11.1.2 스크립팅의 장점(1) • 크로스 플랫폼 - 텍스트 기반. • 빠른 개발 - 컴파일/링크 생략, 
 빠르게 프로토타입 제작/테스트/결과 확인. • 적은 코드량 - 고차원적인 스크립트 언어 활용. • 스크립트 기반의 앱 - MVC에서 M,V는 C++, Controller 는 스크립트로 작성.
  • 5. 11.1.2 스크립팅의 장점(2) • 전문가 사용자 집단 지원 - 고급 사용자.(반복적 작업, 동작 재 정의). • 확장성 - 스크립트를 통해 플러그인 제공. • 테스트를 위한 스크립팅 - 블랙박스 테스트에서 화이트박스 테스트. • 표현성 - 자신이 생각하는 소프트웨어의 본질이 변하지 않도 록.
  • 6. 11.1.3 언어 호환성 문제 • 명명 규칙 - C++(Camel Case, GetName()), Python(Snake Case, get_name()) • Getter/Setter - 멤버변수를 노출하지 말고 Getter/Setter 사 용. 
 object.name = “hello”
 name = object.name • 연산자 - 중첩되거나 추가되는 경우. • 컨테이너 - C++(정적 타입), 스크립트(동적 타입 지원)
  • 7. 11.1.4 언어 장벽 교차 • 가상 메서드 지원 - 동적 바인딩하는 Python 에서 동작하지 않음. • 일부 바인딩 기법에서 언어 다형성을 지원.(Boost Python, SWIG) • C++ 내부 이벤트나 알림 이벤트를 스크립트와 연동. • 예외 처리 - C++ 예외를 스크립트로 전달.
  • 8. 11.2 스크립트 바인딩 기법 • 스크립트 바인딩 기술은 어댑터 디자인 패턴 전략. • 유지보수 비용 증가. • 꼭 필요한지 다시 한번 생각해 볼 문제. • Boost.Python, SWIG, Python-SIP(QT) • COM(XPCOM), CORBA
  • 9. 11.3 BOOST PYTHON C++ API Boost.Python Wrapper 동적 라이브러리컴파일러 Python
  • 12. COMPILE • c++ -std=c++11 -stdlib=libc++ phonebook_wrap.cpp -I $ {BOOST_HEADER} -c `python-config —cflags`
  • 13. SWIG를 이용한 RUBY 바인딩 추가 인터페이스
 파일 C++ API 동적 라이브러리 SWIG Ruby 생성된 래퍼 Compiler
  • 14. 11.4.1 SWIG를 사용한 C++ API 래핑