Lively Kernel
ํฌ๋ก๋ฏธ์ 5์์ ์คํ๋๋ Lively Kernel 0.9 ์์ | |
| ์์ ์ | ๋ ์๊ฑธ์ค |
|---|---|
| ๊ฐ๋ฐ์ | ์ฌ ๋ง์ดํฌ๋ก์์คํ ์ฆ, ํ์ ํ๋ํธ๋ ์ฐ๊ตฌ์ |
| ์์ ํ ๋ฒ์ | 2.1.3
/ 2012๋
4์ 7์ผ |
| ์ ์ฅ์ | |
| ํ๋ก๊ทธ๋๋ฐ ์ธ์ด | ์๋ฐ์คํฌ๋ฆฝํธ, ๋๋ Qt ๋ณํ ๋ด์ C++ |
| ์ด์ ์ฒด์ | ํฌ๋ก์ค ํ๋ซํผ |
| ํ๋ซํผ | ์ ํ ์ฌํ๋ฆฌ, ๋ชจ์ง๋ผ ํ์ด์ดํญ์ค, ๊ตฌ๊ธ ํฌ๋กฌ, ์คํ๋ผ, ์์ดํฐโ์์ดํจ๋, ๋ง์ดํฌ๋ก์ํํธ ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ 9 ์ด์ ๋ฒ์ ์ ํ์ฅ ๊ธฐ๋ฅ์ด ์์ด์ผ๋ง ๊ฐ๋ฅํ์ง๋ง, ์ถ๊ฐ ์น ๋ธ๋ผ์ฐ์ ํ๋ฌ๊ทธ์ธ์ด ํ์ํ ์คํ์ ํฌํธ๊ฐ ์์ |
| ์ธ์ด | ์์ด |
| ์ข ๋ฅ | ์น ๊ฐ๋ฐ |
| ๋ผ์ด์ ์ค | MIT |
| ์น์ฌ์ดํธ | lively-kernel |
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)๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์์ ์ด ์ํ๋๋ค.
๊ฐ์ฃผ
[ํธ์ง]- โ 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.
- โ The Lively Kernel Application Framework
- โ Lively Wiki A Development Environment for Creating and Sharing Active Web Content, Krahn Ingalls Hirschfeld Lincke Palacz, WikiSym โ09, October 25โ27, 2009
- โ 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.
- โ 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 - ๊ณต์ ์น์ฌ์ดํธ