์ฐ์ฐํ๊ฒ ์๋ฐ์คํฐ๋ ๋ค์ด๊ฐ๋ค๊ฐ ๋ณธ ๊ธ์
๋๋ค. ์ฒ์ ์ ํ๊ฒ ๋๋ ๊ฐ๋
์ธ๋ฐ, ๊ฝค ๊ด์ฐฎ์๊ฒ ๊ฐ์ต๋๋ค. OOP๋ ์ ๋๋ก ๋ชจ๋ฅด์ง๋ง์..
๋ณธ ๊ธ์ Markus Voelter์ ์ํด ์์ฑ๋ ๊ธ ์ค ์ผ๋ถ์ด๋ค. ์๋ฌธ์ AOP ๊ธฐ๋ณธ ๊ฐ๋
, Xerox PARC์ ์ํด ๊ตฌํ๋ Java์ AOP ํ์ฅ ๋ฒ์ ์ธ AspectJ ์๊ฐ, Metaclass ํ๋ก๊ทธ๋๋ฐ๊ณผ์ ๋น๊ต ๋ฑ ์ด 3 ํํธ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋ฒ์ญ๋ฌธ์ ์ด ์ค ์ฒซ ๋ฒ์งธ ํํธ๋ง ์ปค๋ฒํ๋ค. ์ฐธ๊ณ ๋ก ์๋ฌธ์ AspectJ ๊ด๋ จ ์ฝ๋๋ ์๋นํ ์ค๋๋ ๋ฌธ๋ฒ์ ๊ธฐ๋ฐํ์ฌ ํ์ฌ์ ๊ทธ๊ฒ๊ณผ ๋ง์ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค.
Introduction ¶
์ต๊ทผ ๋ช ๋
์ ๊ฑธ์ณ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-Oriented Programming, OOP)์ ์ ์ฐจ์ ๋ฐฉ๋ฒ๋ก ์ ๊ฑฐ์ ์๋ฒฝํ ๋์ฒดํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ๋ก ์ ์ ์ฃผ๋ฅ๋ก ๋ ์ค๋ฅด๊ฒ ๋์๋ค. ๊ฐ์ฒด์งํฅ์ ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ์ด์ ์ค ํ๋๋ ์ํํธ์จ์ด ์์คํ
์ด ์ฌ๋ฌ ๊ฐ์ ๋
๋ฆฝ๋ ํด๋์ค๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ค๋ ๊ฒ์ด๋ค. ์ด๋ค ๊ฐ๊ฐ์ ํด๋์ค๋ค์ ์ ์ ์๋ ๊ณ ์ ์์
์ ์ํํ๊ฒ ๋๊ณ , ๊ทธ ์ญํ ๋ํ ๋ช
๋ฐฑํ ์ ์๋์ด ์๋ค. ๊ฐ์ฒด์งํฅ ์ดํ๋ฆฌ์ผ์ด์
์์๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ๋ชฉํํ ๋์์ ์ํํ๊ธฐ ์ํด ์ด๋ฐ ํด๋์ค๋ค์ด ์๋ก ์ ๊ธฐ์ ์ผ๋ก ํ๋ ฅํ๊ฒ ๋๋ค. ํ์ง๋ง ์์คํ
์ ์ด๋ค ๊ธฐ๋ฅ๋ค์ ํน์ ํ ํด๋์ค๊ฐ ๋๋งก์ ์ฒ๋ฆฌํ ์ ์๋ค. ์ด๋ค์ ์์คํ
์ ์ฒด๋ฅผ ๋ค์ค์๋ฉฐ ํด๋น ์ฝ๋๋ค์ ์ฌ๋ฌ ํด๋์ค๋ค์ ํฉ๋ฟ๋ ค ๋๋๋ค. ์ด๋ฐ ํ์์ ํก๋จ์ (cross-cutting)์ด๋ผ ํํํ๋ค. ๋ถ์ฐ ์ดํ๋ฆฌ์ผ์ด์
์์์ ๋ฝํน(locking, ๋๊ธฐํ) ๋ฌธ์ , ์์ธ ์ฒ๋ฆฌ, ๋ก๊น
๋ฑ์ด ๊ทธ ์์ด๋ค. ๋ฌผ๋ก ํ์ํ ๋ชจ๋ ํด๋์ค๋ค์ ๊ด๋ จ ์ฝ๋๋ฅผ ์ง์ด ๋ฃ์ผ๋ฉด ํด๊ฒฐ๋ ๋ฌธ์ ์ด๋ค. ํ์ง๋ง ์ด๋ฐ ํ์๋ ๊ฐ๊ฐ์ ํด๋์ค๋ ์ ์ ์๋(well-defined) ์ญํ ๋ง์ ์ํํ๋ค๋ ๊ธฐ๋ณธ ์์น์ ์๋ฐฐ๋๋ค. ์ด๋ฐ ์ํฉ์ด ๋ฐ๋ก Aspect-Oriented Programming (AOP)์ด ์ํ๋ ์์ธ์ด ๋์๋ค.
AOP์์๋ aspect๋ผ๋ ์๋ก์ด ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ์ ์ํด ์ฌ์ฉํ๋ค. ์ด๋ ์ฝ๊ฒ struct, class, interface ๋ฑ๊ณผ ๊ฐ์ด ํน์ ํ ์ฉ๋์ ๊ตฌ์กฐ๋ผ ์๊ฐํ๋ฉด ๋๋ค. Aspect ๋ด์๋ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๋ชจ๋๋ค์ ํฉ์ด์ ธ ์๋ ๊ธฐ๋ฅ(ํ๋์ ๊ธฐ๋ฅ์ด ์ฌ๋ฌ ๋ชจ๋์ ํฉ์ด์ ธ ์์์ ๋ปํ๋ค)์ ๋ชจ์ ์ ์ํ๊ฒ ๋๋ค. ์ ์ฒด์ ์ผ๋ก, ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๊ฐ์ ํด๋์ค๋ ์์ ์๊ฒ ์ฃผ์ด์ง ๊ธฐ๋ฅ๋ง์ ์ํํ๊ณ , ์ถ๊ฐ๋ ๊ฐ aspect๋ค์ด ํก๋จ์ ์ธ ํ์(๊ธฐ๋ฅ)๋ค์ ๋ชจ์ ์ฒ๋ฆฌํ๋ฉฐ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ์ด๋ฃจ๋ ํํ๊ฐ ๋ง๋ค์ด์ง๋ค.
AOP์์๋ aspect๋ผ๋ ์๋ก์ด ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ์ ์ํด ์ฌ์ฉํ๋ค. ์ด๋ ์ฝ๊ฒ struct, class, interface ๋ฑ๊ณผ ๊ฐ์ด ํน์ ํ ์ฉ๋์ ๊ตฌ์กฐ๋ผ ์๊ฐํ๋ฉด ๋๋ค. Aspect ๋ด์๋ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๋ชจ๋๋ค์ ํฉ์ด์ ธ ์๋ ๊ธฐ๋ฅ(ํ๋์ ๊ธฐ๋ฅ์ด ์ฌ๋ฌ ๋ชจ๋์ ํฉ์ด์ ธ ์์์ ๋ปํ๋ค)์ ๋ชจ์ ์ ์ํ๊ฒ ๋๋ค. ์ ์ฒด์ ์ผ๋ก, ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๊ฐ์ ํด๋์ค๋ ์์ ์๊ฒ ์ฃผ์ด์ง ๊ธฐ๋ฅ๋ง์ ์ํํ๊ณ , ์ถ๊ฐ๋ ๊ฐ aspect๋ค์ด ํก๋จ์ ์ธ ํ์(๊ธฐ๋ฅ)๋ค์ ๋ชจ์ ์ฒ๋ฆฌํ๋ฉฐ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ์ด๋ฃจ๋ ํํ๊ฐ ๋ง๋ค์ด์ง๋ค.
AOP Basics ¶
์ดํด๋ฅผ ๋๊ธฐ ์ํด, ๊ทธ๋ฆฌ๊ณ ์ค๋ช
์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์๋ฅผ ๋ค์ด๊ฐ๋ฉฐ AOP ๊ฐ๋
์ ์ค๋ช
ํ ๋ก ํ๊ฒ ๋ค. ์ดํ๋ฆฌ์ผ์ด์
์ ์ฌ๋ฌ ์ค๋ ๋๋ค์ด ํ๋์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ์ํฉ์ ๊ฐ์ ํด๋ณด์. ๊ณต์ ๋ฐ์ดํฐ๋ Data๋ผ๋ ๊ฐ์ฒด(Data ํด๋์ค์ ์ธ์คํด์ค)๋ก ์บก์ํ๋์ด ์๋ค. ์๋ก ๋ค๋ฅธ ์ฌ๋ฌ ํด๋์ค์ ์ธ์คํด์ค๋ค์ด ํ๋์ Data ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ ์ด ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ๊ฐ์ฒด๋ ํ ๋ฒ์ ํ๋์ฉ์ด์ด์ผ๋ง ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ํํ์ด๊ฑด ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด ๋์
๋์ด์ผ ํ ๊ฒ์ด๋ค. ์ฆ, ์ด๋ค ํ ๊ฐ์ฒด๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉ์ค์ด๋ผ๋ฉด Data ๊ฐ์ฒด๋ ์ ๊ฒจ(lock)์ ธ์ผ ํ๋ฉฐ, ์ฌ์ฉ์ด ๋๋ฌ์ ๋ ํด์ (unlock)๋์ด์ผ ํ๋ค. ์ ํต์ ์ธ ํด๊ฒฐ์ฑ
์ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ํด๋์ค๋ค์ด ํ๋์ ๊ณตํต ๋ถ๋ชจ ํด๋์ค(โworkerโ ๋ผ ๋ถ๋ฅด๋๋ก ํ์)๋ก๋ถํฐ ํ์๋๋ ํํ์ด๋ค. worker ํด๋์ค์๋ lock()๊ณผ unlock() ๋ฉ์๋๋ฅผ ์ ์ํ์ฌ ์์
์ ์์๊ณผ ๋์ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ก ํ๋ฉด ๋๋ค. ํ์ง๋ง ์ด๋ฐ ํํ๋ ๋ค์๊ณผ ๋ฌธ์ ๋ค์ ํ์์ํจ๋ค.
- ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฉ์๋๋ ์๋นํ ์ฃผ์ํด์ ์์ฑ๋์ด์ผ ํ๋ค. ๋๊ธฐํ ์ฝ๋๋ฅผ ์๋ชป ์ฝ์
ํ๋ฉด ๋ฐ๋๋ฝ(dead-lock)์ด ๋ฐ์ํ๊ฑฐ๋ ๋ฐ์ดํฐ ์์์ฑ์ด ๊นจ์ง ์ ์๋ค. ๋ํ ๋ฉ์๋ ๋ด๋ถ๋ ๋ณธ๋์ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ ์๋ ๋๊ธฐํ ๊ด๋ จ ์ฝ๋๋ค๋ก ๋๋ฝํ์ง ๊ฒ์ด๋ค.
- Java์ ๊ฐ์ ๋จ์ผ ์์ ๋ชจ๋ธ์์๋ worker๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ์ ์๋ค. ์ด๋ค ํด๋์ค๋ค์ ์ด๋ฏธ ๋ค๋ฅธ ํด๋์ค๋ค๋ก๋ถํฐ ํ์ฅ๋์์ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ํนํ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ ์ค๊ณ๊ฐ ๋ง๋ฌด๋ฆฌ๋ ํ, ๋ค๋ฆ๊ฒ ๋๊ธฐํ์ ํ์์ฑ์ ๊นจ๋ฌ์์ ๋ ํํ ๋ฐ์ํ๋ค. ๋๊ธฐํ๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์์ ๋ฒ์ฉ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ค ํ๋ ๊ฒฝ์ฐ๊ฐ ํ ์๊ฐ ๋ ์ ์๋ค.
- ์ฌํ์ฉ์ฑ(reusability)์ด ๊ฐ์๋๋ค. worker ํด๋์ค๋ ๋๊ธฐํ๊ฐ ํ์์น ์๋ ํด๋์ค๋ ์ฌ์ง์ด ๋ค๋ฅธ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด ํ์ํ ์ํฉ์์๋ ์ฌ์ฉํ๊ธธ ์ํ ์ ์๋ค. ๋๊ธฐํ ๊ด๋ จ ์ฝ๋๋ฅผ ์ฝ์
ํจ์ผ๋ก์จ worker ํด๋์ค๋ ํน์ ์ดํ๋ฆฌ์ผ์ด์
์ ์ข
์์ ์ธ ํด๋์ค๋ก ์ ๋ฝํ๊ฒ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์ ๊ฐ์ ํ ์ดํ๋ฆฌ์ผ์ด์ ์์ ๋๊ธฐํ ๊ฐ๋ ์ ๋ค์๊ณผ ๊ฐ์ ์์ฑ๋ค์ ๊ฐ๋๋ค.
- ๋๊ธฐํ๋ worker ํด๋์ค์ ํ ๋น๋ ์ต์ฐ์ ์์
์ด ์๋๋ค.
- ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ worker ํด๋์ค์ ์ต์ฐ์ ์์
๊ณผ ๋
๋ฆฝ์ ์ด๋ค.
- ํ ๊ฐ์ฒด์ ๋ํ ๋๊ธฐํ ๊ด๋ จ ์ฝ๋๊ฐ ์์คํ
์ ์ฒด์ ํก๋จ์ ์ผ๋ก ์กด์ฌํ๋ค. ๋ค์์ ํด๋์ค์ ๋ ๋ง์ ์์ ๋ฉ์๋๋ค์ด ์ด ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ์ํฅ ๋ฐ๋๋ค.
AOP์์๋ ์ด๋ฐ ํํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ก์ด ํํ์ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ๊ธฐํ๊ณ ์๋ค. AOP๋ ์๋ก ๋์ ๋ ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ํตํด ์์คํ ์ ํก๋จ๋์ด ์๋ ๊ธฐ๋ฅ๋ค์ ์ ์ํด ์ฒ๋ฆฌํ๋๋ก ํ๋ค. ์ด ์๋ก์ด ๊ตฌ์กฐ๋ฅผ ์ฐ๋ฆฌ๋ aspect๋ผ ๋ถ๋ฅธ๋ค.
์ฐ๋ฆฌ์ ์์ Lock์ด๋ผ๋ aspect๋ฅผ ๋์ ํด๋ณด์. Lock aspect๋ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ด ํ ๋น๋ ๊ฒ์ด๋ค.
- Data ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค๋ค์ ์ํด lock ๋ฐ unlock ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ค(lock(), unlock()).
- Data ๊ฐ์ฒด๋ฅผ ์์ ํ๋ ๋ชจ๋ ๋ฉ์๋๋ค์ด ์ํ ์ ์ lock()์ ํธ์ถํ๊ณ , ์ํ ํ์๋ unlock()์ ํธ์ถํจ์ ๋ณด์ฅํ๋ค.
- ์ด์์ ๊ธฐ๋ฅ์ Data ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค์ ์๋ฐ ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ํฌ๋ช
ํ๊ฒ ์ํํ๋ค.
Aspect๋ ๋ ์ด๋ค ์ผ๋ค์ ์ํํ ์ ์์๊น?
ํน์ ๋ฉ์๋(ex. ๊ฐ์ฒด ์์ฑ ๊ณผ์ ์ถ์ ) ํธ์ถ์ ๋ก๊น ํ ๊ฒฝ์ฐ aspect๊ฐ ๋์์ด ๋ ์ ์๋ค. ๊ธฐ์กด ๋ฐฉ๋ฒ๋๋ก๋ผ๋ฉด log() ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋์ ํ, ์๋ฐ ์์ค์์ ๋ก๊น ์ ์ํ๋ ๋ฉ์๋๋ฅผ ์ฐพ์ log()๋ฅผ ํธ์ถํ๋ ํํ๋ฅผ ์ทจํด์ผํ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ AOP๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ณธ ์๋ฐ ์ฝ๋๋ฅผ ์์ ํ ํ์ ์์ด ์ํ๋ ์์น์์ ์ํ๋ ๋ก๊น ์ ์ํํ ์ ์๋ค. ์ด๋ฐ ์์ ๋ชจ๋๋ aspect๋ผ๋ ์ธ๋ถ ๋ชจ๋์ ์ํด ์ํ๋๋ค. ๋ ๋ค๋ฅธ ์๋ก ์์ธ ์ฒ๋ฆฌ๊ฐ ์๋ค. Aspect๋ฅผ ์ด์ฉํด ์ฌ๋ฌ ํด๋์ค๋ค์ ์ฐ์ฌ๋ ๋ฉ์๋๋ค์ ์ํฅ์ ์ฃผ๋ catch() ์กฐํญ(clause)์ ์ ์ํด ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ๊ฑธ์น ์ง์์ ์ด๊ณ ์ผ๊ด์ ์ผ๋ก ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ ๊ฐ์ง ์๋ฌธ์ด ๋ ์ค๋ฅผ ๊ฒ์ด๋ค.
๋จผ์ โAspect๋ ๊ผญ ํ์ํ๊ฐ?โ๋ผ๋ ์ง๋ฌธ์ ๋ตํด๋ณด์. ๋ฌผ๋ก ๊ทธ๋ ์ง๋ ์๋ค. ์ด์์์ ์ธ๊ธํ ๋ชจ๋ ๋ฌธ์ ๋ค์ aspect ๊ฐ๋ ์์ด ํด๊ฒฐ๋ ์ ์๋ค. ํ์ง๋ง aspect๋ ์๋กญ๊ณ ๊ณ ์ฐจ์์ ์ธ ์ถ์ ๊ฐ๋ ์ ์ ๊ณตํด ์ํํธ์จ์ด ์์คํ ์ ์ค๊ณ ๋ฐ ์ดํด๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ํ๋ค. ์ํํธ์จ์ด ์์คํ ์ ๊ท๋ชจ๊ฐ ๊ณ์ ์ปค์ ธ๊ฐ์ ๋ฐ๋ผ โ์ดํด(understanding)โ์ ์ค์์ฑ์ ๊ทธ๋งํผ ๋ถ๊ฐ๋๊ณ ์๋ค(OOP๊ฐ ํ์ฌ์ฒ๋ผ ์ฃผ๋ฅ๋ก ๋ ์ค๋ฅด๋๋ฐ ์์ด ๊ฐ์ฅ ์ค์ํ ์์ธ ์ค ํ๋์๋ค). ๋ฐ๋ผ์ aspect ๊ฐ๋ ์ ๋ถ๋ช ๊ฐ์น ์๋ ๋๊ตฌ๊ฐ ๋ ๊ฒ์์ ํ๋ฆผ์๋ค.๋ค์์ ์๋ฌธ์ โAspect๋ ๊ฐ์ฒด์ ์บก์ํ ์์น์ ๊ฑฐ์ค๋ฅด์ง ์๋๋?โ๋ ๊ฒ์ด๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด โ์๋ฐํ๋คโ ์ด๋ค. ํ์ง๋ง ์ ํ๋ ํํ๋ก๋ง ๊ทธ๋ ๊ฒ ํ๋ค๋๋ฐ ์ฃผ๋ชฉํ๋๋ก ํ์. aspect๋ ๊ฐ์ฒด์ private ์์ญ๊น์ง ์ ๊ทผํ ์ ์์ง๋ง, ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด ์ฌ์ด์ ์บก์ํ๋ ํด์น์ง ์๋๋ค.
Aspect-Oriented Programming in Java
Markus Voelter, voelter at acm dot org
๋ฒ์ญ: ์๋ฐ์คํฐ๋ ์ดํด๋ฆฝ์ค & ๋ชจ๋ธ๋ง๋๊ตฌ ์์ฝ wegra (Bok-Youn, Lee) wegra at wegra dot org
๋ฒ์ญ: ์๋ฐ์คํฐ๋ ์ดํด๋ฆฝ์ค & ๋ชจ๋ธ๋ง๋๊ตฌ ์์ฝ wegra (Bok-Youn, Lee) wegra at wegra dot org
http://javastudy.co.kr ์์ ํ์ต๋๋ค. eclipse ํ๋ก์ ํธ์ค์๋ ์๋๊ฒ ๊ฐ๋๊ตฐ์. (http://www.eclipse.org/aspectj/) - ์์ธํ
AspectJ๋ Eclipse ํ๋ก์ ํธ๋ผ๊ธฐ ๋ณด๋ค. Xerox PARC ์ AspectJ ํ๋ก์ ํธ์ ํํ์ด์ง๊ฐ ์ฎ๊ฒจ ์จ๊ฒ ์
๋๋ค. ์ญ์ ์ด๊ธ์ด wegra๋์ด ํด์ํด ๋์ผ์ ๊ฑฐ ์๊ตฐ์. ์ข๋ ๋ง์ ๋ด์ฉ์ ์๋์ SisterWiki ๋ฅผ ์ฐธ๊ณ ํ์๊ณ , ๊ด๋ จํฌ๋ผ ๋น์ค๋ฌด๋ฆฌ ํ๋ฐ๊ฐ http://aosd.net ์
๋๋ค. --NeoCoin