SlideShare a Scribd company logo
KotlinJS Practice : Chrome API
-Twice Round Project #002-
GDG Seoul Kotiln Study 모임용
TwiceRound를 KotlinJS로 전환하면서 넘어야할 산
- TwiceRound kotlin branch
- https://github.com/nurinamu/twiceround/tree/kotlin
- Chrome API
- jQuery Ajax
- Function Reference 처리
- Javascript JSON parameter 처리
#001 Chrome API for KotlinJS
- jQuery와 마찬가지로 TypeScript 정의된 것을 찾는다.
- 발견!! : https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/chrome
- 없었으면 큰일날뻔. 웬만한 거는 여기 레포에 다 있는 듯.
- ts2kt 로 kt 파일 생성!
- chrome api용 kt가 너무 많음;
- 취사선택
- index.chrome.storage.kt만 사용
- chrome ts kt내부에서 compile error나는 부분은 과감하게 삭제
- 확인하고 사용하지 않는 api인 경우 과감하게 삭제.
- 여기서 지운다고 문제있는 것이 아님. 지난 발표에서 이야기 했지만 이 kt는 단순 api
wrapper.
#002-1 jQuery Ajax
- jQuery ts kt를 사용하면 됨.
- ajax request를 하려면 JQueryAjaxSettings interface를 객체화해서
처리해야함.
- 알게된 것들
- variable getter/setter
- https://kotlinlang.org/docs/reference/properties.html#getters-and-setters
- definedExternally keyword(?)
- public external val definedExternally: Nothing
- keyword가 아님 kotlin.js 선언된 변수명이었음.
- Nothing!! : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-nothing.html
- Callback, Lambda, Loop, Stream, Block function들이 꼬인다.
- 원하는 곳으로 탈출하고 싶어!: https://kotlinlang.org/docs/reference/returns.html
#002-2 jQuery Ajax
- 알게된 것들 cont’d
- Function Reference
- https://kotlinlang.org/docs/reference/reflection.html#function-references
- js에서 function 연결하는 것과 동일.
- :: 의 앞이 Class를 명시하면 해당 Class의 member function의 Reflection을
지칭하게되고 instance variable이 되면 해당 instance의 member function을 지칭하게 됨.
#002-3 jQuery Ajax
- 알게된 것들 cont’d
- JSON Parameter 처리
- js() 함수를 사용. js() 는 argument로 받은 문자열을 Javascript 코드에 필터없이 그대로
배출. 단, 해당 문자열은 static 문자열만 가능. 동적 생성 문자열은 안됨.
- 그래서 js(“({})”) 로 json을 javascript로 생성하고 dynamic keyword와 짬뽕으로 javascript
json object를 생성할 수 있다.
TwiceRound Demo
德業一致
NEXT -
“TwiceRound" Client 소개

More Related Content

What's hot

The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework
명신 김
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
Eunbee Song
 
Angular Library
Angular LibraryAngular Library
Angular Library
SangHun Lee
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자
jung kyunghwan
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
Kenu, GwangNam Heo
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
Yurim Jin
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
NAVER D2
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
ChangHyeon Bae
 
팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법
Eugene Park
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능
Dexter Jung
 
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
NAVER D2
 
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
CONNECT FOUNDATION
 
예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스
Dexter Jung
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps
성수 이
 
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
Soongsil University
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
NAVER D2
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With Java
Dexter Jung
 
Share some development
Share some developmentShare some development
Share some development
Ji Heon Kim
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
Junyoung Lee
 
소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategy소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategy
Kenu, GwangNam Heo
 

What's hot (20)

The Future of C# and .NET Framework
The Future of C# and .NET FrameworkThe Future of C# and .NET Framework
The Future of C# and .NET Framework
 
Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)Tech Update - The Future of .NET Framework (김명신 부장)
Tech Update - The Future of .NET Framework (김명신 부장)
 
Angular Library
Angular LibraryAngular Library
Angular Library
 
프론트엔드 개발자
프론트엔드 개발자프론트엔드 개발자
프론트엔드 개발자
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.Angular 살짝 해보고 발표.
Angular 살짝 해보고 발표.
 
팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법팀 개발을 위한 GitHub 사용법
팀 개발을 위한 GitHub 사용법
 
자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능자바_웹_개발자를_위한_c#_핵심_기능
자바_웹_개발자를_위한_c#_핵심_기능
 
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
[125]react로개발자2명이플랫폼4개를서비스하는이야기 심상민
 
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
[부스트캠퍼세미나]권혁우_REST는 바이바이_ GraphQL과 함께하는 칼퇴시대
 
예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스예제를 통해 쉽게_살펴보는_뷰제이에스
예제를 통해 쉽게_살펴보는_뷰제이에스
 
LinqPad for DevOps
LinqPad for DevOpsLinqPad for DevOps
LinqPad for DevOps
 
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습 [숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
[숭실대학교 SODA]깃(git) 명령 및 소스트리(sourceTree) 실습
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
Hot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With JavaHot Trend Lambda Expressions, Compare C# With Java
Hot Trend Lambda Expressions, Compare C# With Java
 
Share some development
Share some developmentShare some development
Share some development
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategy소셜 코딩 GitHub & branch & branch strategy
소셜 코딩 GitHub & branch & branch strategy
 

Similar to KotlinJS Practice : Chrome API - TwiceRound Project #002

Dynamodb 삽질기
Dynamodb 삽질기Dynamodb 삽질기
Dynamodb 삽질기
AWSKRUG - AWS한국사용자모임
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
Kwangyoun Jung
 
[Open-infradays 2019 Korea] jabayo on Kubeflow
[Open-infradays 2019 Korea] jabayo on Kubeflow[Open-infradays 2019 Korea] jabayo on Kubeflow
[Open-infradays 2019 Korea] jabayo on Kubeflow
석환 홍
 
DDD 5기 서버 직군 발표 - 황성찬
DDD 5기 서버 직군 발표 - 황성찬DDD 5기 서버 직군 발표 - 황성찬
DDD 5기 서버 직군 발표 - 황성찬
SungChanHwang
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개
Jong-il Seok
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
Won-Chon Jung
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
EunYoung Kim
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
Seungho Kim
 
GithubWithTerminal.pptx
GithubWithTerminal.pptxGithubWithTerminal.pptx
GithubWithTerminal.pptx
JUNSHIN8
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
장현 한
 
Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기
Changyeop Kim
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER Engineering
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
현승 배
 
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Leonardo YongUk Kim
 
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
GangSeok Lee
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
bingoori
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
MooYeol Lee
 
V8 engine internal
V8 engine internalV8 engine internal
V8 engine internal
Jinhyuck Kim
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
Ji-Woong Choi
 
Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1
이경주 이경주
 

Similar to KotlinJS Practice : Chrome API - TwiceRound Project #002 (20)

Dynamodb 삽질기
Dynamodb 삽질기Dynamodb 삽질기
Dynamodb 삽질기
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
[Open-infradays 2019 Korea] jabayo on Kubeflow
[Open-infradays 2019 Korea] jabayo on Kubeflow[Open-infradays 2019 Korea] jabayo on Kubeflow
[Open-infradays 2019 Korea] jabayo on Kubeflow
 
DDD 5기 서버 직군 발표 - 황성찬
DDD 5기 서버 직군 발표 - 황성찬DDD 5기 서버 직군 발표 - 황성찬
DDD 5기 서버 직군 발표 - 황성찬
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
GithubWithTerminal.pptx
GithubWithTerminal.pptxGithubWithTerminal.pptx
GithubWithTerminal.pptx
 
Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.Angular는 사실 어렵지 않습니다.
Angular는 사실 어렵지 않습니다.
 
Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기Kubernetes를 통한 laravel 개발프로세스 개선하기
Kubernetes를 통한 laravel 개발프로세스 개선하기
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래Kotlin 2.0을 통해 알아보는 코틀린의 미래
Kotlin 2.0을 통해 알아보는 코틀린의 미래
 
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
 
어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1어그로월드 Season1 - Aggro World season 1
어그로월드 Season1 - Aggro World season 1
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
V8 engine internal
V8 engine internalV8 engine internal
V8 engine internal
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1Ionic2로 Type script+Angular2.0 따라하기 1
Ionic2로 Type script+Angular2.0 따라하기 1
 

KotlinJS Practice : Chrome API - TwiceRound Project #002

  • 1. KotlinJS Practice : Chrome API -Twice Round Project #002- GDG Seoul Kotiln Study 모임용
  • 2. TwiceRound를 KotlinJS로 전환하면서 넘어야할 산 - TwiceRound kotlin branch - https://github.com/nurinamu/twiceround/tree/kotlin - Chrome API - jQuery Ajax - Function Reference 처리 - Javascript JSON parameter 처리
  • 3. #001 Chrome API for KotlinJS - jQuery와 마찬가지로 TypeScript 정의된 것을 찾는다. - 발견!! : https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/chrome - 없었으면 큰일날뻔. 웬만한 거는 여기 레포에 다 있는 듯. - ts2kt 로 kt 파일 생성! - chrome api용 kt가 너무 많음; - 취사선택 - index.chrome.storage.kt만 사용 - chrome ts kt내부에서 compile error나는 부분은 과감하게 삭제 - 확인하고 사용하지 않는 api인 경우 과감하게 삭제. - 여기서 지운다고 문제있는 것이 아님. 지난 발표에서 이야기 했지만 이 kt는 단순 api wrapper.
  • 4. #002-1 jQuery Ajax - jQuery ts kt를 사용하면 됨. - ajax request를 하려면 JQueryAjaxSettings interface를 객체화해서 처리해야함. - 알게된 것들 - variable getter/setter - https://kotlinlang.org/docs/reference/properties.html#getters-and-setters - definedExternally keyword(?) - public external val definedExternally: Nothing - keyword가 아님 kotlin.js 선언된 변수명이었음. - Nothing!! : https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-nothing.html - Callback, Lambda, Loop, Stream, Block function들이 꼬인다. - 원하는 곳으로 탈출하고 싶어!: https://kotlinlang.org/docs/reference/returns.html
  • 5. #002-2 jQuery Ajax - 알게된 것들 cont’d - Function Reference - https://kotlinlang.org/docs/reference/reflection.html#function-references - js에서 function 연결하는 것과 동일. - :: 의 앞이 Class를 명시하면 해당 Class의 member function의 Reflection을 지칭하게되고 instance variable이 되면 해당 instance의 member function을 지칭하게 됨.
  • 6. #002-3 jQuery Ajax - 알게된 것들 cont’d - JSON Parameter 처리 - js() 함수를 사용. js() 는 argument로 받은 문자열을 Javascript 코드에 필터없이 그대로 배출. 단, 해당 문자열은 static 문자열만 가능. 동적 생성 문자열은 안됨. - 그래서 js(“({})”) 로 json을 javascript로 생성하고 dynamic keyword와 짬뽕으로 javascript json object를 생성할 수 있다.