๋ณธ๋ฌธ์œผ๋กœ ์ด๋™

Lively Kernel

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „.
Lively Kernel
์›์ €์ž๋Œ„ ์ž‰๊ฑธ์Šค
๊ฐœ๋ฐœ์ž์ฌ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ, ํ•˜์†Œ ํ”Œ๋ž˜ํŠธ๋„ˆ ์—ฐ๊ตฌ์†Œ
์•ˆ์ •ํ™” ๋ฒ„์ „
2.1.3 / 2012๋…„ 4์›” 7์ผ(14๋…„ ์ „)(2012-04-07)
์ €์žฅ์†Œ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ๋˜๋Š”
Qt ๋ณ€ํ˜• ๋‚ด์˜ C++
์šด์˜ ์ฒด์ œํฌ๋กœ์Šค ํ”Œ๋žซํผ
ํ”Œ๋žซํผ์• ํ”Œ ์‚ฌํŒŒ๋ฆฌ, ๋ชจ์งˆ๋ผ ํŒŒ์ด์–ดํญ์Šค, ๊ตฌ๊ธ€ ํฌ๋กฌ, ์˜คํŽ˜๋ผ, ์•„์ดํฐโ€“์•„์ดํŒจ๋“œ, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ 9 ์ด์ „ ๋ฒ„์ „์€ ํ™•์žฅ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ถ”๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ € ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•„์š”ํ•œ ์‹คํ—˜์  ํฌํŠธ๊ฐ€ ์žˆ์Œ
์–ธ์–ด์˜์–ด
์ข…๋ฅ˜์›น ๊ฐœ๋ฐœ
๋ผ์ด์„ ์ŠคMIT
์›น์‚ฌ์ดํŠธlively-kernel.org

Lively Kernel์€ ๋Œ„ ์ž‰๊ฑธ์Šค๊ฐ€ SAP ์—ฐ๊ตฌ์†Œ์— ์žฌ์งํ•  ๋‹น์‹œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ ์†Œ์Šค ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์ด๋‹ค. ํ’๋ถ€ํ•œ ๊ทธ๋ž˜ํ”ฝ๊ณผ ์ง์ ‘ ์กฐ์ž‘ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ๋ฐ์Šคํฌํ†ฑ ์Šคํƒ€์ผ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ง€์›ํ•˜๋ฉด์„œ๋„, ๊ธฐ์กด ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฒช๋Š” ์„ค์น˜๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์—†๋‹ค.[1][2] ๊ฐœ๋ฐœ์€ ๋ฉ˜๋กœํŒŒํฌ์˜ ์ฌ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ ์—ฐ๊ตฌ์†Œ์—์„œ ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ, ์ดํ›„ ๋ฒ ๋ฅผ๋ฆฐ ๊ทผ๊ต์˜ ํฌ์ธ ๋‹ด์— ์žˆ๋Š” ํ•˜์†Œ ํ”Œ๋ž˜ํŠธ๋„ˆ ์—ฐ๊ตฌ์†Œ๋กœ ์˜ฎ๊ฒจ์กŒ๋‹ค.

๊ฐœ์š”

[ํŽธ์ง‘]

Lively Kernel์€ ํ‘œ์ค€ ๋ธŒ๋ผ์šฐ์ € ๊ทธ๋ž˜ํ”ฝ(W3C ์บ”๋ฒ„์Šค ๋˜๋Š” SVG)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์™„์ „ํžˆ ์ž‘์„ฑ๋œ ๊ทธ๋ž˜ํ”ฝ ๊ตฌ์„ฑ ๋ฐ ํ†ตํ•ฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์›น ํŽ˜์ด์ง€๋กœ์„œ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์›น ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜๋Š” ์ฆ‰์‹œ ์ž‘๋™์„ ์‹œ์ž‘ํ•œ๋‹ค. ์ž์ฒด ์ฝ”๋“œ์™€ ๊ทธ๋ž˜ํ”ฝ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‚ด์žฅ๋œ WebDAV ์ง€์›์„ ํ†ตํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์‹ฌ์ง€์–ด ์ƒˆ๋กœ์šด ์›น ํŽ˜์ด์ง€๋กœ ์ž์‹ ์„ ๋ณต์ œํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋Šฅ๋ ฅ๊ณผ ๋”๋ถˆ์–ด ์ž์ฒด ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE)์œผ๋กœ๋„ ๊ธฐ๋Šฅํ•  ์ˆ˜ ์žˆ์–ด, ๋ธŒ๋ผ์šฐ์ € ์™ธ์— ๋ณ„๋„์˜ ๋„๊ตฌ ์—†์ด๋„ ์ „์ฒด ์‹œ์Šคํ…œ์ด ์ž๊ธ‰์ž์กฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„ํ˜•, ์œ„์ ฏ, ์ฐฝ, IDE๊นŒ์ง€ ๋ชจ๋‘ ์›น ํŽ˜์ด์ง€์—์„œ

[ํŽธ์ง‘]

Lively Kernel์€ ๋ธŒ๋ผ์šฐ์ € ๊ทธ๋ž˜ํ”ฝ์œผ๋กœ ๊ตฌ์ถ•๋œ ์žฅ๋ฉด ๊ทธ๋ž˜ํ”„์— ๋™์ž‘์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจํ”ฝ ๊ทธ๋ž˜ํ”ฝ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ˆœํ•œ ๊ทธ๋ž˜ํ”ฝ์€ ์Šฌ๋ผ์ด๋”, ์Šคํฌ๋กค๋ฐ”, ํ…์ŠคํŠธ ๋ทฐ, ๋ชฉ๋ก ๋ฐ ํด๋ฆฌํ•‘ ํ”„๋ ˆ์ž„๊ณผ ๊ฐ™์€ ํ‘œ์ค€ GUI ์œ„์ ฏ์œผ๋กœ ์กฐ๋ฆฝ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์œ„์ ฏ์œผ๋กœ ๊ตฌ์ถ•๋œ ๊ฐ„๋‹จํ•œ ์œˆ๋„ ์‹œ์Šคํ…œ์€ ๊ฐ์ฒด ๊ฒ€์‚ฌ๊ธฐ, ํŒŒ์ผ ๊ด€๋ฆฌ์ž(๋ธŒ๋ผ์šฐ์ €), ์ฝ”๋“œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ์ ์ธ ๋ฐ๋ชจ ํŽ˜์ด์ง€์กฐ์ฐจ ์‹œ์Šคํ…œ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค.

Lively๋Š” ์ž์ฒด ํŠœํ† ๋ฆฌ์–ผ์„ ํฌํ•จํ•œ ๊ฐ„๋‹จํ•œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ, ๋ฒ„์ „์ด ๊ด€๋ฆฌ๋˜๋Š” ์ €์žฅ์†Œ์— ํŽ˜์ด์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ์œ„ํ‚ค ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ๋„ ํ™œ์šฉ๋˜์—ˆ๋‹ค. ์ฝ˜ํ…์ธ ๋Š” ๋น„๊ต์  ์ •์ ์ธ ํ…์ŠคํŠธ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ์–ด๋„๋น„ ํ”Œ๋ž˜์‹œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ฒ˜๋Ÿผ ๋ณด์ด๊ณ  ๋™์ž‘ํ•˜๋Š” ์™„์ „ํžˆ ๋™์ ์ธ ๋ชจ๋ธ๊นŒ์ง€ ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ๋‹ค. Lively Kernel์€ ํŠน์ • ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ง€์›(SVG์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ) ์—†์ด๋„ ๋ณต์žกํ•œ ๋™์  ๋™์ž‘์„ ๋‹ฌ์„ฑํ•˜๋Š”๋ฐ, ์ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ๋‹ค์ค‘ ๊ทธ๋ฆฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์Šค์ผ€์ค„๋งํ•จ์œผ๋กœ์จ ๊ตฌํ˜„๋œ๋‹ค.

ํ…์ŠคํŠธ์™€ ๋ณ€ํ™˜

[ํŽธ์ง‘]

Lively Kernel์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ์ž์ฒด ๋‹ค์ค‘ ํฐํŠธ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋ฅผ ํฌํ•จํ•œ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๊ฐ€์šด๋ฐ ์ •๋ ฌ, ์–‘์ชฝ ๋งž์ถค ๋ฐ ์œ ์‚ฌํ•œ ์ดˆ๋ณด์  ํ…์ŠคํŠธ ๊ตฌ์„ฑ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์ด ํฌํ•จ๋œ๋‹ค. ๋”ฐ๋ผ์„œ Lively์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์€ ์›น ํŽ˜์ด์ง€ ๋””์ž์ธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ๊ณผ ๋А๋‚Œ์ด ๋งค์šฐ ๋น„์Šทํ•˜์ง€๋งŒ, ์‹ค์‹œ๊ฐ„ ํ…์ŠคํŠธ ๋ ˆ์ด์•„์›ƒ์ด ์˜คํ”„๋ผ์ธ ๊ตฌ์„ฑ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ Lively Kernel ๋‚ด ํ…์ŠคํŠธ์˜ ๋‚ด์žฅ๋œ ๋™์  ๋™์ž‘์ด๋ผ๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

Lively ๊ทธ๋ž˜ํ”ฝ์˜ ์ƒ๋™๊ฐ์€ ๊ฐ์ฒด์™€ ํ…์ŠคํŠธ์˜ ํฌ๊ธฐ ๋ฐ ํšŒ์ „ ํ•ธ๋“ค์„ ์กฐ์ž‘ํ•  ๋•Œ ๋”์šฑ ๋ถ„๋ช…ํ•ด์ง„๋‹ค. ์ „์ฒด ์ฝ”๋“œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ธก๋ฉด์œผ๋กœ 20๋„ ๊ธฐ์šธ์—ฌ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋Š” ์ „์ ์œผ๋กœ ์ƒ๋™๊ฐ ์žˆ๋Š” ๊ทธ๋ž˜ํ”ฝ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์Šคํฌ๋กค๋ฐ”, ํด๋ฆฌํ•‘ ํ”„๋ ˆ์ž„ ๋ฐ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํšŒ์ „๋˜๊ฑฐ๋‚˜ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜์–ด๋„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.

ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ

[ํŽธ์ง‘]

Lively Kernel์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ SVG ๋˜๋Š” ์บ”๋ฒ„์Šค ๊ทธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ๋ธŒ๋ผ์šฐ์ € ์ง€์›์— ์˜์กดํ•˜๋ฉฐ, ์ด๋“ค์€ ๋ชจ๋‘ ํ˜„์žฌ W3C ํ‘œ์ค€์˜ ์ผ๋ถ€์ด๋‹ค. 2009๋…„ ๊ธฐ์ค€์œผ๋กœ ์ด๋Š” ์‚ฌํŒŒ๋ฆฌ, ํŒŒ์ด์–ดํญ์Šค, ํฌ๋กฌ ๋ฐ ์˜คํŽ˜๋ผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋จ์„ ์˜๋ฏธํ•œ๋‹ค.

์ด ์š”๊ตฌ ์‚ฌํ•ญ์ด HTML๋ณด๋‹ค ํ˜ธํ™˜์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” Lively๊ฐ€ HTML๋ณด๋‹ค ์‹คํ–‰๋˜๋Š” ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์— ๋” ๋†’์€ ํ˜ธํ™˜์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋Š” HTML ๊ตฌํ˜„๋“ค ์‚ฌ์ด๋ณด๋‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, SVG, ์บ”๋ฒ„์Šค ๊ตฌํ˜„๋“ค ์‚ฌ์ด์— ๋” ๋งŽ์€ ํ†ต์ผ์„ฑ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜๋‚˜์˜ ์ž‘์€ ์ดˆ๊ธฐ ํŒŒ์ผ์„ ์ œ์™ธํ•˜๋ฉด, Lively Kernel ์ฝ”๋“œ ๋ฒ ์ด์Šค๋Š” ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์ „ํ˜€ ์—†๋‹ค.

2011๋…„ ๊ธฐ์ค€์œผ๋กœ Lively Kernel์€ ๋งคํ‚จํ† ์‹œ์šฉ ์‚ฌํŒŒ๋ฆฌ, ์œˆ๋„์šฉ ํฌ๋กœ๋ฏธ์›€ ๋˜๋Š” ๊ตฌ๊ธ€ ํฌ๋กฌ๊ณผ ๊ฐ™์€ ์›นํ‚ท ๊ธฐ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ฐ€์žฅ ์ž˜ ์‹คํ–‰๋œ๋‹ค. ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ(์œˆ๋„)์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๊ตฌ๊ธ€ ํฌ๋กฌ ํ”„๋ ˆ์ž„์ด ํ•„์š”ํ•˜๋‹ค. ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ๋ชจ๋“  ๋Œ€์ค‘์ ์ธ ๋ธŒ๋ผ์šฐ์ €์—์„œ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ณ„ํš๋˜์–ด ์žˆ๋‹ค.

ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

[ํŽธ์ง‘]

Lively๋Š” ๋กœ์ปฌ์— ์žˆ๋Š” 10์—ฌ ๊ฐœ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค ํŒŒ์ผ์„ WebDAV๋ฅผ ํ†ตํ•ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์ €์žฅ์†Œ์™€ ๋™๊ธฐํ™”ํ•˜์—ฌ ์ž‘์—…ํ•˜๋„๋ก ์„ค๊ณ„๋œ ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ์˜ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๋ฉด ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค ํŒŒ์ผ์ด ๋ธŒ๋ผ์šฐ์ €์˜ ํŒŒ์ผ ์ฐฝ์— ๋‚˜์—ด๋œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ด ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŒŒ์ผ์ด ์ฝํžˆ๊ณ  (OMeta ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์„œ์— ์˜ํ•ด) ํŒŒ์‹ฑ๋˜๋ฉฐ, ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค ์ •์˜๊ฐ€ ๋‚˜์—ด๋˜๊ณ  ๊ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋ชจ๋“  ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋Š” ์Šค๋ชฐํ† ํฌ ๋ธŒ๋ผ์šฐ์ €์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ํด๋ฆญํ•˜๊ณ  ํ•˜๋‹จ ์ฐฝ์—์„œ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•œ ํ›„ ์ƒˆ๋กœ์šด ์ •์˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ์ •์˜๋Š” ๊ตฌ๋ฌธ ๊ฒ€์‚ฌ๋ฅผ ๊ฑฐ์น˜๋ฉฐ, ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ์šฐ .JS ํŒŒ์ผ์— ๋‹ค์‹œ ์ €์žฅ๋œ๋‹ค. ๋˜ํ•œ "eval ๋ชจ๋“œ"(์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ)๋ผ๋ฉด ์‹คํ–‰ ์ค‘์ธ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ๋ฉ”์„œ๋“œ๊ฐ€ ์žฌ์ •์˜๋œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Lively๋‚˜ ๊ฐœ๋ฐœ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ํ•„์š” ์—†์ด ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฆ‰์‹œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ์†Œ์Šค ํŒŒ์ผ์ด ๋กœ๋“œ๋˜๋ฉด ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์„ ํƒํ•œ ํ…์ŠคํŠธ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฐธ์กฐ๋ฅผ ์ฐพ๊ณ , ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ ๋ณธ๋ฌธ์„ ๋ณ„๋„์˜ ํ•˜์œ„ ๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œํ•œ๋‹ค.

Lively IDE์—๋Š” ์ฑ„์šฐ๊ธฐ, ํ…Œ๋‘๋ฆฌ ๋ฐ ํ…์ŠคํŠธ ์Šคํƒ€์ผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด ๊ฒ€์‚ฌ๊ธฐ์™€ ๋ชจํ”ฝ ์Šคํƒ€์ผ ํŒจ๋„์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์˜ค๋ฅ˜ ์ง€์ ์—์„œ์˜ ๋””๋ฒ„๊น…๊ณผ ์„ฑ๋Šฅ ํŠœ๋‹์„ ์œ„ํ•œ ํ”„๋กœํŒŒ์ผ๋ง ๊ธฐ๋Šฅ๋„ ์กด์žฌํ•˜์ง€๋งŒ, ๋ชจ๋“  ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋Ÿฌํ•œ ๋Ÿฐํƒ€์ž„ ์ง€์› ๊ธฐ๋Šฅ์˜ ํ’ˆ์งˆ์ด ํ–ฅ์ƒ๋จ์— ๋”ฐ๋ผ ๋ณ„๋„๋กœ ๊ฐ•์กฐ๋˜์ง€๋Š” ์•Š์•˜๋‹ค.

Lively ์œ„ํ‚ค

[ํŽธ์ง‘]

IDE๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์ €์žฅ์†Œ ๋‚ด์˜ ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ์—์„œ ์ž‘๋™ํ•˜์—ฌ Lively ์ฝ”๋“œ ๋ฒ ์ด์Šค์˜ ๋ฐœ์ „์„ ๊ด€๋ฆฌํ•œ๋‹ค. ๋™์ผํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํด๋ผ์ด์–ธํŠธ ์ธก ์œ„ํ‚ค์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ํ™œ์„ฑ ์›น ์ฝ˜ํ…์ธ ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. Lively๋Š” ์›”๋“œ(์žฅ๋ฉด ๊ทธ๋ž˜ํ”„ ๋ฐ ๊ธฐํƒ€ ์ฝ˜ํ…์ธ ) ๋‚ด์˜ ์ฝ˜ํ…์ธ ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ํ•ด๋‹น ์ฝ˜ํ…์ธ ๋ฅผ ์›น ํŽ˜์ด์ง€๋กœ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, WebDAV ์—ฐ๊ฒฐ์„ ํ†ตํ•ด Lively๋Š” ์ ์ง„์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜๋Š” ๋™์•ˆ ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ์˜ ์ƒˆ ๋ฒ„์ „์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ์ƒˆ ๋ฒ„์ „์ด ์ €์žฅ๋  ๋•Œ๋งˆ๋‹ค ์ธํ„ฐ๋„ท์˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋งˆ์Œ์ด ๋ฐ”๋€Œ์—ˆ์„ ๊ฒฝ์šฐ ์ด์ „ ๋ฒ„์ „์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ„ํ‚ค ๋ฐฉ์‹์˜ ์›น ์ฝ˜ํ…์ธ  ์ง„ํ™”๋Š” Lively์˜ ๋ชจ๋“  ํ…์ŠคํŠธ, ๊ทธ๋ž˜ํ”ฝ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ์ฝ˜ํ…์ธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ •์˜๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ƒˆ๋กœ์šด ํ˜•ํƒœ์—๋„ ํ™•์žฅ๋˜์ง€๋งŒ, ๊ทธ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์œ„ํ‚ค ์„œ๋ฒ„๋„ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์ด ํŠน์ง•์ด๋‹ค.[3] ํ•„์š”ํ•œ ๊ฒƒ์€ HTTP WebDAV ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„๋ฟ์ด๋‹ค. Lively ํ”„๋กœ์ ํŠธ ์ฝ˜ํ…์ธ  ์ค‘ ์ ์  ๋” ๋งŽ์€ ๋ถ€๋ถ„์ด ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ๋‹ค.

์˜ˆ์ œ ์ฝ”๋“œ

[ํŽธ์ง‘]
// ClockMorph: ๊ฐ„๋‹จํ•œ ์•„๋‚ ๋กœ๊ทธ ์‹œ๊ณ„

Morph.subclass(โ€œClockMorphโ€, {

    defaultBorderWidth: 2,
    type: "ClockMorph",

    // ์ƒ์„ฑ์ž
    initialize: function($super, position, radius) {

        $super(position.asRectangle().expandBy(radius), "ellipse");
        this.openForDragAndDrop = false; // ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์Œ
        this.makeNewFace(); // ์‹œ๊ณ„ ๋ฌธ์žํŒ ์ƒ์„ฑ
        return this;
    },

    // ์ƒˆ๋กœ์šด ์‹œ๊ณ„ ๋ฌธ์žํŒ ์ƒ์„ฑ
    makeNewFace: function() {

        var bnds = this.shape.bounds();
        var radius = bnds.width/3;
        var labels = [];
        var fontSize = Math.max(Math.floor(0.04 * (bnds.width + bnds.height)),4);
        var labelSize = fontSize; // ๊ธฐ๋ณธ ๋“ค์—ฌ์“ฐ๊ธฐ๋กœ ๊ฐ€์šด๋ฐ ์ •๋ ฌ์„ ์œ„ํ•œ ๊ณต๊ฐ„

        // ์‹œ๊ณ„์— ๋กœ๋งˆ ์ˆซ์ž ์ถ”๊ฐ€
        for (var i = 0; i < 12; i++) {
            var labelPosition = bnds.center().addPt(Point.polar(radius*0.85,
                                ((i-3)/12)*Math.PI*2)).addXY(labelSize, 0);
            var label = new TextMorph(pt(0,0).extent(pt(labelSize*3,labelSize)),
            ['XII','I','II','III','IV','V','VI','VII','VIII','IX','X','XI'][i]);
            label.setWrapStyle(WrapStyle.SHRINK);
            label.setFontSize(fontSize);
            label.setInset(pt(0,0));
            label.setBorderWidth(0);
            label.setFill(null);
            label.align(label.bounds().center(),labelPosition.addXY(-2,1));
            this.addMorph(label);
        }

        // ์‹œ๊ณ„ ๋ฐ”๋Š˜ ์ถ”๊ฐ€
        this.addMorph(this.hourHand = Morph.makeLine([pt(0,0),pt(0,-radius*0.5)],4,Color.blue));
        this.addMorph(this.minuteHand = Morph.makeLine([pt(0,0),pt(0,-radius*0.7)],3,Color.blue));
        this.addMorph(this.secondHand = Morph.makeLine([pt(0,0),pt(0,-radius*0.75)],2,Color.red));
        this.setHands();
        this.changed();
    },

    // ํ˜„์žฌ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ์‹œ๊ณ„ ๋ฐ”๋Š˜ ๊ฐ๋„ ์„ค์ •
    setHands: function() {

        var now = new Date();
        var second = now.getSeconds();
        var minute = now.getMinutes() + second/60;
        var hour = now.getHours() + minute/60;
        this.hourHand.setRotation(hour/12*2*Math.PI);
        this.minuteHand.setRotation(minute/60*2*Math.PI);
        this.secondHand.setRotation(second/60*2*Math.PI);
    },

    // ClockMorph๊ฐ€ ์›”๋“œ์— ๋ฐฐ์น˜๋  ๋•Œ ํ˜ธ์ถœ๋จ
    startSteppingScripts: function() {
        this.startStepping(1000, "setHands"); // 1์ดˆ์— ํ•œ ๋ฒˆ
    }
});

Lively for Qt

[ํŽธ์ง‘]

Qt์šฉ Lively๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋œ ์ปค๋„ ๋ถ€๋ถ„์ด C++์˜ Qt ํ”„๋ ˆ์ž„์›Œํฌ ํ•จ์ˆ˜๋กœ ๋Œ€์ฒด๋œ Lively Kernel์˜ ๋˜ ๋‹ค๋ฅธ ๊ตฌํ˜„์ด๋‹ค.[4][5] Qt์šฉ Lively๋Š” ์œ„์ ฏ ๊ตฌํ˜„, ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ, ํ•ต์‹ฌ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ ํ•ต์‹ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ง€์›๊ณผ ๊ฐ™์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ Qt๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›๋Š”๋‹ค. Qt์šฉ Lively๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฆ‰์„์—์„œ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์œผ๋กœ์จ Lively Kernel์˜ ์˜ˆ์™ธ์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ฑ("์ƒ๋™๊ฐ")์„ ์œ ์ง€ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Qt์šฉ Lively์—์„œ๋Š” Qt ํ”Œ๋žซํผ์˜ ์นœ์ˆ™ํ•˜๊ณ  ์ž˜ ๋ฌธ์„œํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค(API)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์ž‘์—…์ด ์ˆ˜ํ–‰๋œ๋‹ค.

๊ฐ์ฃผ

[ํŽธ์ง‘]
  1. โ†‘ Ingalls, Daniel; Palacz, Krzysztof; Uhler, Stephen; Taivalsaari, Antero; Mikkonen, Tommi (2008๋…„ 5์›” 15์ผ). ใ€ˆThe Lively Kernel a Self-supporting System on a Web Pageใ€‰. ใ€ŠSelf-Sustaining Systemsใ€‹. Lecture Notes in Computer Science 5146. 31โ€“50์ชฝ. doi:10.1007/978-3-540-89275-5_2. ISBNย 978-3-540-89274-8.
  2. โ†‘ The Lively Kernel Application Framework
  3. โ†‘ Lively Wiki A Development Environment for Creating and Sharing Active Web Content, Krahn Ingalls Hirschfeld Lincke Palacz, WikiSym โ€™09, October 25โ€“27, 2009
  4. โ†‘ Mikkonen, Tommi; Taivalsaari, Antero (2009๋…„ 3์›” 8์ผ). ใ€ˆCreating a mobile web application platform: the lively kernel experiencesใ€‰. ใ€ŠSAC '09: Proceedings of the 2009 ACM symposium on Applied Computingใ€‹. 177โ€“184์ชฝ. doi:10.1145/1529282.1529321.
  5. โ†‘ Mikkonen, Tommi; Taivalsaari, Antero; Terho, Mikko (2009๋…„ 9์›” 4์ผ). ใ€ŠLively for Qt: A Platform for Mobile Web Applicationsใ€‹. Mobility '09: Proceedings of the 6th International Conference on Mobile Technology, Application & Systems. doi:10.1145/1710035.1710059.

์™ธ๋ถ€ ๋งํฌ

[ํŽธ์ง‘]
  • Lively Kernel - ๊ณต์‹ ์›น์‚ฌ์ดํŠธ