Skip to content

Latest commit

ย 

History

History
296 lines (244 loc) ยท 13 KB

kosscon-2018.md

File metadata and controls

296 lines (244 loc) ยท 13 KB

KOSSCON 2018 (2018. 08. 16)

> ์ฐธ๊ฐ€๋™๊ธฐ

contributhon ๊ฐœํšŒ์‚ฌ๊ฐ€ ์˜ค๋Š˜ 5์‹œ 30๋ถ„๋ถ€ํ„ฐ ์ง„ํ–‰๋˜๊ฒŒ๋˜๋Š”๋ฐ ์–ด๋–ค๋‚ด์šฉ์ด ๋‚˜์˜ฌ์ง€ ๊ถ๊ธˆํ•ด์„œ ํ–‰์‚ฌ์žฅ์— ๋ฏธ๋ฆฌ ๋„์ฐฉํ•˜์—ฌ KOSSCON๋„ ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

> ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฐ์—…์„ ๋ฐ”๊พธ๋Š”๊ฐ€? - ์นด์นด์˜ค ๊ณต์šฉ์ค€ ์ƒ๋ฌด(ํด๋ผ์šฐ๋“œ)

์˜คํ”ˆ์†Œ์Šค์˜ ์‹œ์ž‘ <- 1970๋…„๋Œ€๊นŒ์ง€๋งŒํ•ด๋„ ์†Œ์Šค๋Š” ๊ณต๊ฐœํ•˜์ง€ ์•Š๋Š”๊ฒŒ ์›์น™ But ๋ฆฌ์ฒ˜๋“œ ์Šคํ†จ๋งŒ์ด HP๊ฐ€ ํ”„๋ฆฐํ„ฐ ์ง€์›์ค‘๋‹จํ•ด์„œ ๋นก์ณ์„œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋จ

๋ฆฌ๋ˆ…์Šค๋ฅผ ๊ธฐ์ ์œผ๋กœ Unix(์Šˆํผ์ปดํ“จํ„ฐ)๋Š” ์ ์œ ์œจ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ํ•˜๋ฝํ•จ - ๋ฆฌ๋ˆ…์Šค์˜ ์•ˆ์ •์„ฑ๊ณผ ์†๋„๋Š” ์ฆ๋ช… ๋จ

Pnetagon์ด ๋‚ด๋…„๋ถ€ํ„ฐ ์˜คํ”ˆ์†Œ์Šค ์ œ์ž‘์— ํฐ ์ง€์›์„ ์‹œ์ž‘ํ•จ - Mil-OSS

๋ฑ…ํ‚น์‹œ์Šคํ…œ ์ „์ฒด ๋ฐ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ์˜คํ”ˆ์†Œ์Šค - openbankIT, Apache Fineract

TDD(์›๋ž˜ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋‹ค๋ฅธ๋ถ€์„œ๋กœ ๊ฐ€๋„ ์‹œ์Šคํ…œ์ด ๋Œ์•„์•ผํ•จ) / DevOps(Ops๊ฐ€ ์—†๋Š” ๊ฒƒ, ์ธํ”„๋ผ๋ฅผ ์šด์˜ํ•˜๋Š” ์‚ฌ๋žŒ์€ ์ ์  ์ค„์–ด๋“ ๋‹ค) / Cloud Native(๋ชจ๋“ ๊ฒƒ๋“ค์„ API๋กœ)

BDFL is also human, has feelings, has ages, sometimes want to retire though the name is 'For life' / Community : United we stand, Divide we fall!

** MariaDB๋Š” ์ •๋ง ๋งŽ์ด ์“ด๋‹ค๊ณ  ํ•จ

1. ์›น์˜ ๋ฏธ๋ž˜์™€ ํ˜„์žฌ - Prograssive Web App (Track2) : ์žฅ๊ธฐํšจ(์บกํ‹ดํŒ๊ต)

์›น์•ฑ์˜ ์ƒˆ๋กœ์šด ํ˜•ํƒœ / ๊ธฐ์กด์˜ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ง„ํ™”ํ•ด๊ฐ€๊ณ  ์žˆ๋Š”๊ฐ€?

์†Œ๊ฐœ

๋ชจ๋ฐ”์ผ ์•ฑ๊ณผ ๊ฐ™์€ ๊ฒฝํ—˜์„ ์ฃผ๋Š” ์ตœ์‹  ์›น ์•ฑ

์•ฑ์•„์ด์ฝ˜, ์•ฑ์•„์ด์ฝ˜ ์„ค์น˜ ๋ฐฐ๋„ˆ, ๋ชจ๋ฐ”์ผ ํ‘ธ์‹œ, ์˜คํ”„๋ผ์ธ ๊ฒฝํ—˜ ์ œ๊ณต

HTML, CSS, JS๋กœ ๋ชจ๋ฐ”์ผ ์•ฑ๊ณผ ๊ฐ™์€ ์›น ์•ฑ์„ ๊ตฌํ˜„

"๋†’์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์›น ์•ฑ์˜ ์ง„ํ™”"

๋“ฑ์žฅ๋ฐฐ๊ฒฝ

๋ชจ๋ฐ”์ผ ์‹œ์žฅ์˜ ํญ๋ฐœ์ ์ธ ์„ฑ์žฅ

๋ชจ๋ฐ”์ผ ์›น ๋ณด๋‹ค๋Š” ๋ชจ๋ฐ”์ผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

๋ชจ๋ฐ”์ผ ์•ฑ ์˜์—ญ์„ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๋„๋“ค - Hybrid App, React Native

Offline Web์˜ ํ•„์š”์„ฑ

ํŠน์ง•

Responsive

App-like

Discoverable

Engageable

Push

Connectivity(์˜คํ”„๋ผ์ธ ์›น์•ฑ)

Security

์ ์šฉ์‚ฌ๋ก€

์ œ์ž‘๊ธฐ์ˆ 

ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

์ฒซ๋ฒˆ์งธ

menifest.json - ์›น์•ฑ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

๋‘๋ฒˆ์งธ

Service Workers: client-side JavaScript proxy / javascript๊ฐ€ ๋ฐฑ๊ทธ๋ž€์šด๋“œ์—์„œ proxy ์—ญํ• ์„ ํ•˜๋Š” ํ˜•ํƒœ

์ง€์› ๋ธŒ๋ผ์šฐ์ €

PWA๋Š” ๋ธŒ๋ผ์šฐ์ € ์ข…์†์ 

FF, Opera, Chrome, Safari ๋“ฑ ์ง€์›ํ•˜๊ณ  ์žˆ์Œ

์ฐธ๊ณ ์ž๋ฃŒ

web fundamentals google codelab

2. Tox : ์ฐจ์„ธ๋Œ€ ๋ฉ”์‹ ์ € ์—”์ง„ : ์กฐ๋‚จ์ˆ˜

p2p ๊ธฐ์ˆ ์„ ์ด์šฉํ•œ ์ธ์Šคํƒ„ํŠธ ๋ฉ”์‹œ์ง• ๊ธฐ์ˆ (c๋กœ๋Š” ๊ตฌํ˜„์ด ๋˜์–ด์žˆ์Œ)

C๋กœ ๊ฐœ๋ฐœ๋˜์–ด ์žˆ๋Š”๊ฑธ Rust๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์‹œ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Œ

Rust์— ๋Œ€ํ•ด์„œ๋„

Tox ๋ฉ”์‹ ์ € ์—”์ง„๊ณผ ํด๋ผ์ด์–ธํŠธ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ์ œ๊ณต + API

์—”์ง„์— UI๋ฅผ ์ž…ํžŒ๊ฒŒ Tox Client

Tox client์˜ ๊ธฐ๋Šฅ

๋ฉ”์‹œ์ง€ ๊ตํ™˜ / ๊ทธ๋ฃน ์ฑ„ํŒ…๋ฐฉ / ํ™”์ƒ ํ†ตํ™”(RTP) / ํŒŒ์ผ ์ „์†ก

Actual Tox Client

์œˆ๋„์šฐ, ๋ฆฌ๋ˆ…์Šค, ์•ˆ๋“œ๋กœ์ด๋“œ, OS X ๋“ฑ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ ์žˆ์Œ

Introduction to Tox - ๋ถ„์‚ฐ ํ•ด์‹œํ…Œ์ด๋ธ”(์ค‘์•™์— ์„œ๋ฒ„๊ฐ€ ์—†์Œ - ๋ธ”๋ก์ฒด์ธ๊ณผ ๊ฐ™์Œ) / ํ•ดํ‚น์œผ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ ๋ฉ”์‹ ์ €๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž - ๋ณด์•ˆ์„ฑ ํƒ์›” / ๊ฐ€์„ฑ๋น„ ์šฐ์ˆ˜(์„œ๋ฒ„๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Œ)

P2P commuinication using DHT(DHT๋ฅผ ์‚ฌ์šฉ์‹œ 2์–ต๋ช…๊นŒ์ง€๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ปค๋ฒ„๊ฐ€๋Šฅ)

Data Encryption of end to end

Supports both IPv4 and IPv6

Can run even if node is behind NAT

Upgrading is in progress

Distrivuted Hash Table

๊ฐœ๋…์€ ๊ฐ„๋‹จํ•˜๋‹ค. ๋‚ด๊ฐ€ ํ…Œ์ด๋ธ”์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ด๋ฅผ ๋Š์ด์—†์ด ๊ตํ™˜ํ•จ

DHT node

  • PublicKey : used as hash PublicKey
  • Socket address : IPv4 and IPv6 socket address
  • clone_node_list : array of node<PublicKey, SocketAddr>
  • Bootstrap : public bootstrap node already exists. / Request node list based on my PublicKey / Maintain close_node_list
  • Response containing node list from request by other node\

Secure communication - ๊ฐ๊ฐ์˜ ๋Œ€ํ™”๊ธฐ๋ก์ด ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ด ํƒ์›”ํ™ค

  • PublicKey, SecretKey.
  • Nonce.
  • TOXID.
  • There ad no centralized servers.

Implementations fo Toxcore.

Future of Tox

  • At first, it aimed replacement of Skype.
  • Should be adopted to Mobile environment.
  • Have to solve offline message problem
  • Trying to extend protocol standard to accommodate multi-device
  • Can replace current messaging system for costeffective reason

Useful links

ํ‘œ์ค€๊ทœ์•ฝ

Tox์˜ ๋ชฉํ‘œ๋Š” ๋ญ๋ƒ?

๊ฐ„๋‹จํ•˜๋ฉด์„œ ์•ˆ์ „ํ•œ ๋ฉ”์‹ ์ €๊ฐ€ ๋˜๊ฒ ๋‹ค

์„ธ์ƒ์—๋Š” ์ด๋ฏธ ๋„ˆ๋ฌด๋‚˜๋„ ๋งŽ์€ ๋ฉ”์‹ ์ €๊ฐ€ ์žˆ๋‹ค -> configuration์ด ์—†๋Š” ๋ฉ”์‹ ์ € ์—”์ง„์„ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค

Toxcore written in Rust

  • Why Rust
  • Maintaining current c-toxcore needs much efforts
  • Light weight engine is needed to reside in mobile device(ํ˜„์žฌ ํ†ก์Šค์ฝ”์–ด๋Š” ๊ทธ๋Œ€๋กœ ๋ชจ๋ฐ”์ผ์— ์˜ฌ๋ผ๊ฐ€๊ธฐ์—๋Š” ๋ฌด๊ฒ๋‹ค)

Why Rust

  • Version 1.0 was released about 3 years ago.
  • Memory Safety.
  • Thread Safety.
  • Cost free abstraction.
  • Functional programming paradigm.
  • System programming like using high level language.

Data race

  • Traditional problem in multi-thread programming
  • Solve using Mutex, Semaphore, ...
  • 100% up to the human to guarantee safety.
  • Sometimes it demands much debugging.
  • Sometimes it requires abandoning codes almost done.

Memory safety

  • Ownership
  • Borrowing
  • Cloning, Copying

Thread safety

  • Two thread can't have write access to one resource simultaneously.
  • Two case: Many read access to one resource / Only one write access to one resource
  • Checked by compiler at compile Sometimes

Cost-free abstraction

  • Rust is a strong typed language.
  • Provide powerful type System
  • Unlike other languages, codes written in Rust are compiled to direct machine language not much depending on runtime environments.
  • No garbage collector.

Functional programming using Rust

  • Iterator(์ˆœํ™˜์ž)
  • Clojure
  • Powerful combinators

Rust acts like a High Level language

  • It don't depend on garbage collector.
  • Unlike C/C++, code can be written without using pointer.
  • Human can read codes easier than C/C++
  • Rust supports convenient TDD(ํ…Œ์ŠคํŠธ ์ž๋™ํ™”)
  • Cargo provides powerful developing environments.(intelliJ compatible)
  • crate.io repository(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด๋ฐ›์•„์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ)

Official comments

Rust project์˜ ๋ชฉํ‘œ -> ํšจ์œจ์ ์ธ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ฒ ๋‹ค. / C๋Š” ์•ˆ์ „์„ฑ์ด๋‚˜ ๋™์‹œ์„ฑ, ์ž์›์— ๋Œ€ํ•œ ์ œ์–ด๋„ ์•Œ์•„์„œ ํ•ด์•ผํ–ˆ์Œ ์ด๋ฅผ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ RUST

Rust๋Š” 100%๋ฅผ ์ถ”๊ตฌํ•˜์ง€ ์•Š๋Š”๋‹ค ์‹ค์šฉ์„ฑ์„ ์›ํ•œ๋‹ค ์‹ค์šฉ์„ฑ์„ ์œ„ํ•ด์„œ ๋‹ค๋ฅธ๊ฑธ ํฌ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Useful links

520 - rust vs comparison

why i'm dropping rust

ruskt-lang.org/ko-KR/documentation.html

rust-doc-korean

3. Implementing private blockchain - ์ด์ค€๋ฒ”(์นด์ด์ŠคํŠธ ์ „์‚ฐํ•™๋ถ€ ์„์‚ฌ)

It-chain : Customizable and Lightweight Blockchain

It-chain

์ค‘์†Œ๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์œ ์—ฐํ•˜๊ณ  ์ž์œ ๋กญ๊ฒŒ ์ด์šฉ ๊ฐ€๋Šฅํ•œ '๊ฒฝ๋Ÿ‰ ๋งž์ถคํ˜• ๋ธ”๋ก์ฒด์ธ ์—”์ง„'๊ฐœ๋ฐœ ๋ฐ ๋ธ”๋ก์ฒด์ธ ์ฝ”์–ด ๊ณต๋ถ€

ํ•ต์‹ฌ ์„œ๋น„์Šค์˜ ๋ชจ๋“ˆํ™”๋ฅผ ํ†ตํ•ด ๋ชฉ์ ์— ๋งž๊ฒŒ ์‰ฝ๊ฒŒ ๊ต์ฒด ๊ฐ€๋Šฅ ํ•˜๋„๋ก ๊ฐœ๋ฐœ

์ง€์—ญ ํŠนํ™” ํ† ํฐ ํ”Œ๋žซํผ / ์ค‘๊ณ  ๋ฌผํ’ˆ ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ / ์†Œ์ƒ๊ณต์ธ์„ ์œ„ํ•œ ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ -> It-chain engine

  • State Transition Function
  • ์‹œ๋‚˜๋ฆฌ์˜ค - Network ๊ตฌ์„ฑ : one leader
  • Submit Request - Invoke transaction / Query
  • Forward to leader
  • Crate Block and Start Consensus - simulation
  • Add block and update State

Architecture

์š”๊ตฌ์‚ฌํ•ญ

  • ์†์ˆ˜๋น„๊ฒŒ ์ˆ˜์ • ํ™•์žฅ
  • ์˜คํ”ˆ์†Œ์Šค
  • ์ค‘์•™๊ด€๋ฆฌ์ž ์—†์ด p2p ๊ตฌ์กฐ
  • ๊ธฐ๋ณธ์ ์ธ ๋ธ”๋ก์ฒด์ธ ๊ธด์œผ ์ง€์šฐ๋„ˆ - block storage ์ปดํฌ๋„ŒํŠธ / authentication ์ปดํฌ๋„ŒํŠธ / consensus ์ปดํฌ๋„ŒํŠธ
  • consensus ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ์˜ ๋…ธ๋“œ๋ฅผ ์•Œ๊ณ ์žˆ์Œ gIPC๋ฅผ ์ด์šฉํ•ด ์—ฐ๊ฒฐ(ํ•ฉ์˜๊ณผ์ •์ด ๋นจ๋ผ์ง)

Block, Transaction

์ค‘๊ฐ„์— ์žˆ๋Š” ๋ธ”๋ก์„ ์ˆ˜์ •ํ•˜๊ธฐ ๊ต‰์žฅํžˆ ์–ด๋ ค์šด ๊ตฌ์กฐ - ์œ„๋ณ€์กฐ์— ๊ฐ•ํ•˜๋‹ค

yggdrasil๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - ๋ธ”๋ก์ฒด์ธ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ / Header์™€ Data๋กœ ๊ตฌ๋ถ„ / Header์—๋Š” ๋ธ”๋ก์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๊ฐ€ ์ €์žฅ

  • Transaction - ICode์‹คํ–‰ ์š”์ฒญ / JSON-RPC

Block Seal ๊ฐ’์„ Key๋กœ Value ์กฐํšŒ / Last Block์œผ๋กœ ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์กฐํšŒ๊ฐ€๋Šฅ

Consensus

๋‹จ์ผ ๋ฐ์ดํ„ฐ๊ฐ’์— ๋Œ€ํ•œ ํ•ฉ์˜

๋ธ”๋ก์ด ์„œ๋กœ ๋‹ค๋ฅธ๋ธ”๋ก์„ ์ €์žฅํ•˜๋ฉด ์•ˆ๋จ

์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ๊ฐ€ ๋“ค์–ด์žˆ๋”๋ผ๋„ ๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋“ค์€ ์ž˜ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

๋น„์ž”ํ‹ด ์žฅ๊ตฐ ๋ฌธ์ œ - ์„ฑ์„ ํ•จ๋ฝํ•  ๋•Œ 3๋ช…์ด ํ•„์š”ํ•œ๋ฐ ์žฅ๊ตฐ๋“ค ์ค‘ ๋ฐฐ์‹ ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์„œ๋กœ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๊ฒŒ๋จ - PBFT : ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์ด ์žˆ์„ ๋•Œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋งž์ถ”์ž๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

IVM(Icode Virtual Machine)

= It-chain ์Šค๋งˆํŠธ ์ปจํƒœ๋ž™ deploy, invoke ์ˆ˜ํ–‰

  • World State DB ๊ด€๋ฆฌ
  • Docker ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ๋…๋ฆฝ์ ์ธ ํ™˜๊ฒฝ ์ œ๊ณต
  • SDK๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์–ธ์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

4. Backend.AI ์†Œ๊ฐœ ๋ฐ ํŠœํ† ๋ฆฌ์–ผ - ์˜คํ”ˆ์†Œ์Šค ๋จธ์‹ ๋Ÿฌ๋‹ ์ธํ”„๋ผ ํ”„๋ ˆ์ž„์›Œํฌ // Mario Cho : [email protected]

์•ŒํŒŒ๊ณ ๋‚˜ ์ธ๊ณต์ง€๋Šฅ์— ์—„์ฒญ๋‚œ ์ปดํ“จํŒ… ์—ฐ์‚ฐ์ž์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋จ

๋ฌธ์ œ ์˜์‹ : ์™œ ์ด๋ ‡๊ฒŒ ํž˜๋“ค์–ด?

์˜คํ”ˆ์†Œ์Šค์™€ ํด๋ผ์šฐ๋“œ์˜ ๋ฐœ๋‹ฌ - ์ •๋ง๋กœ AI ํ•˜๊ธฐ๊ฐ€ ์‰ฌ์›Œ์กŒ์„๊นŒ?

Tensorflow - 6์ฃผ๋งˆ๋‹ค ๋ฒ„์ „์—… : ํ˜ธํ™˜์„ฑ ๊ณ ๋ ค x

์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ

์‰ฝ๊ฒŒ / ํ•จ๊ป˜ / ๋น ๋ฅด๊ฒŒ / ์–ด๋””์„œ๋‚˜ / ๊ฐ’์‹ธ๊ฒŒ

์ง€์› ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด - docker hub์— ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์˜คํ”ˆ ํ•ด๋†จ์Œ

python php, r, node.js, js, tensorflow, haskell, typescript, rust, go ๋“ฑ

๊ฐœ๋…๋„

๋‹ค์–‘ํ•œ ์ž์›์„ ๋ถ„์‚ฐํ•ด์„œ ๋งŒ๋“ค์–ด ์คŒ

  • ๊ฐœ์ธ ์กฐ์ง ์‚ฌ์šฉ์ž / ์‘์šฉ ์„œ๋น„์Šค ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ - ํด๋ผ์šฐ๋“œ, ์›น ์„œ๋น„์Šค, ๋ชจ๋ฐ”์ผ ๋ฐ IoT ์žฅ๋น„
  • Backend.AI ํ”Œ๋žซํผ - ์˜คํ† ์Šค์ผ€์ผ๋ง, ๋ณด์•ˆ๊ฒฉ๋ฆฌ, ๋ฒ„์ „๊ด€๋ฆฌ, ์–ธ์–ด๋ณ„ SDK, ์ž์›ํ• ๋‹น, ๋ชจ๋‹ˆํ„ฐ๋ง / ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ(IaaS) - AWS, gCloud / ์˜จ.ํ”„๋ ˆ๋ฏธ์Šค ํด๋Ÿฌ์Šคํ„ฐ

ํฌ์ง€์…”๋‹

  • ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค
  • GPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋„๊ตฌ
  • ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ณ„์ธต
  • ๊ฐ€์ƒํ™” ์†”๋ฃจ์…˜ ๋ฐ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค

Backend.AI ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

  • GPU๊ฐ€ ์—†๋Š” ๋žฉํƒ‘์„ ๋“ค๊ณ ๋‹ค๋‹ˆ๋ฉฐ ๋”ฅ๋Ÿฌ๋‹ AI๋ฅผ ๊ฐœ๋ฐ”๋ž—๊ณ  ์‹ถ์„ ๋•Œ
  • ์‚ฌ๋‚ด ๊ณ ์„ฑ๋Šฅ GPU์„œ๋ฒ„ 1๋Œ€๋ฅผ ์—ฌ๋Ÿฌ ์—ฐ๊ตฌ์›์ด ๊ณต์œ ํ•˜๋ฉด์„œ ์“ฐ๊ณ  ์‹ถ์„ ๋•Œ
  • ๋ง๋ถ„๋ฆฌ ์ ์šฉ๋œ ์‚ฌ๋‚ด GPU ์„œ๋ฒ„๋ฅผ ์กฐ์ง ๋‹จ์œ„๋กœ ์œ ์—ฐํ•˜๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ

** ์•„๋ฌด๋ฆฌ ์˜คํ”ˆ์†Œ์Šค๋ผ๊ณ  ํ•œ๋“ค ๋…ธํ•˜์šฐ๋Š” ์ „๋‹ฌํ•˜๊ธฐ ํž˜๋“ค๋‹ค - ์ปจ์„คํŒ… ๋ชจ๋ธ์˜ ์กด์žฌ์ด์œ 

5. webOS OSE์˜ Native App & Service ๊ฐœ๋ฐœํ™˜๊ฒฝ - ๊ณ ์„ํ•˜(LG์ „์ž - [email protected])

๋ฐœํ‘œ ๋‚ด์šฉ์ด ์™„์ „ํžˆ ์ž„๋ฒ ๋””๋“œ ๊ด€๋ จํ•˜์—ฌ ์ด์•ผ๊ธฐ ํ•  ๊ฒƒ ๊ฐ™๋‹ค

Background

webOS ์˜ฌ ๋ด„์— ์˜คํ”ˆํ•จ / ๊ฐœ๋ฐœ์ž์‚ฌ์ดํŠธ & github - ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

๊ฒฝํ—˜๋‹ด ๋ฐ ์ˆ˜๊ธฐ์ •๋„๋กœ ๋“ค์œผ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค

Developer framework

webOS์ž์ฒด๊ฐ€ TV์™€ ๋—„๋ ˆ์•ผ ๋—„ ์ˆ˜ ์—†์Œ -> Native C++๋กœ ์ด๋ฏธ ์งœ์—ฌ์žˆ์Œ(์›น์•ฑ, ๋„ค์ดํ‹ฐ๋ธŒ ๋ณ‘ํ–‰)

  • service - Application ํ˜น์€ ๋‹ค๋ฅธ service์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต / application - system bus๋ฅผ ํ†ตํ•ด์„œ ํ†ต์‹ 
  • built-in / installable - Platform์— ๋ฏธ๋ฆฌ ํƒ‘์žฌ๋˜๋Š”์ง€, Store๋“ฑ์— ์˜ํ•ด install ๋˜๋Š”์ง€
  • http://webosose.org - Luna bus์™€์˜ ์—ฐ๊ฒฐ, API ์ ‘๊ทผ ๊ถŒํ•œ ์„ค์ •, Built-in, Installable web Application

์˜ค๋Š˜ ํ•  ์ด์•ผ๊ธฐ

  • installable - Native app(Qt), Native service(Qt, C/C++)
  • How to make NDK - Libs & header, Toolchain, other tools
  • webOS CLI - For packaging & installation
  • ๊ทธ๋ž˜์„œ ์ฝ”๋“œ ์ž์ฒด๋ฅผ ๋‹ค๋ฃจ์ง€๋Š” ์•Š์Œ

Luna Bus

์™ธ๋ถ€์—์„œ ์„œ๋น„์Šค๋‚˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ๋•Œ ๋ฌด์กฐ๊ฑด ์•Œ์•„์•ผ ํ•จ

LSM - wayland server๋กœ ๋™์ž‘ // ๊ฐœ๋…์ ์œผ๋ก  ์•Œ์•„์•ผ ํ•˜๋Š” ๋ถ€๋ถ„

  • Window management
  • Input event routing
  • Composition among App windows and System UI elements

Native Development Kit

Development environment

  • Yocto
  • OpenEmbedded : Bitbake / Metadata : struectured collection of "recipes" OE Cross Toolchain Generation
  • Target device
  • Build Machine Generate NDK Using OE
  • bitbake webos-image-devel -c populate_sdk
  • bitbake meta-toolchain-qt5
  • Make your own recipes for NDK

Contents of NDK

  • whole sysroot libs, ehader, package config files etc
  • GCC 6.2.0(C++14 support), binutils, other tools
  • Linux environment variable setup file for cross compile
  • Qt tools(mkspecs, qmake, mooc, uic, rcc, ...)

Example

  • app / app + native - service ๋‹จ๋… ์„ค์น˜๋Š” ๋ถˆ๊ฐ€
  • Service ID๋Š” app id์˜ subdomain - com.example.native, com.example.service

Native Service

  • ์†Œ์Šค ์ž‘์„ฑ ๋ถ€๋ถ„์€ built-in service์™€ ๋™์ผ - Luna bus registration
  • ๋‹ค๋งŒ, ls2 conf, role, API permission ๋“ฑ ํŒŒ์ผ ๋ถˆํ•„์š” - appinstalld๊ฐ€ ์ž๋™ ์ƒ์„ฑ
  • systemd unit configuration ํŒก๋ฆฌ ๋ถˆํ•„์š”
  • services,json firle for packaging

Native app

  • Luna bus, SAM, LSM์— ๊ฐ๊ฐ ๋“ฑ๋ก์„ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? : ํ•ด์•ผํ•œ๋‹ค

** webOS ํ”Œ๋žซํผ ์ž์ฒด๊ฐ€ ์˜คํ”ˆ๋˜์–ด์žˆ๊ณ  ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๋Œ์–ด๋‹ค์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ๋ถ€๋ถ„์—์„œ ๊ฐœ๋ฐœ์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. gtk๋Š” ๋ฉ์น˜๊ฐ€ ์ปค์„œ qt๋ฅผ ์‚ฌ์šฉํ•จ