°ÁÂ Àü ÇÊÀÚÀÇ Àâ´ã>
À̹ø °Á´ Å¿À´å³Ý¿¡¼ Ȱµ¿ ÁßÀÎ Micosoft MVP ÀÎ Á¤¼®¸ð´ÔÀÇ °ÁÂÀÔ´Ï´Ù.
Á¤¼®¸ð´ÔÀº ÃÖ±Ù Ajax Design Patterns¶õ Ã¥À» ¹ø¿ªÇÏ¿© Ãâ°£Çϱ⵵ Çϼ̱¸¿ä.
Å¿À »çÀÌÆ®ÀÇ Talk °Ô½ÃÆÇ ½Ã»ðÀ̱⵵ ÇϽʴϴÙ.
ƯÀ¯ÀÇ °³±×ÀûÀÎ ¹®Ã¼°¡ ƯÇãÃâ¿ø ÁßÀÎ ÀÌ Ä£±¸ÀÇ Àç¹Ì³ °Á¿¡ Çѹø ºüÁ®º¸¼¼¿ä~
ÀÌ °ÁÂÀÇ ¼ø¼
°´Ã¼ÁöÇâ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·Î±×·¡¹Ö
°Á ½ÃÀÛ Àü 1ºÐ 12ÃÊ ½ºÇÇÄ¡
¸Å¿ì ¾È³çÇϽʴϴÙ! È÷µùÅ© ÀÔ´Ï´Ù!
JS OOP °ÁÂÀÇ ¸¶Áö¸· ÆíÀ» ³¡±îÁö ±â´Ù·ÁÁֽŠ6õ900¿©¸í(Çѱ¹ °Ä·Æ)ÀÇ °³¹ßÀÚ ºÐµé²² °¨»çÀÇ ¸»¾¸À» µå¸³´Ï´Ù.
¸¹Àº ºÐµéÀÌ ±â´Ù¸®°í °è½Ã´ø ¸¶Áö¸· °Á°¡ ¸¹ÀÌ ´Ê¾ú½À´Ï´Ù. Á˼ÛÇÏ°Ô »ý°¢ÇÕ´Ï´Ù. ¾ÕÀ¸·Î °Á ¿¬Àç Áß¿¡´Â Àý´ë·Î °ÔÀ»·¯ÁöÁö ¾Ê±â·Î ¾à¼Ó µå¸®¸ç, ¿ì¸® ¸ðµÎÀÇ ³»°ø Çâ»ó¿¡ ¸¹Àº µµ¿òÀÌ µÇ´Â ¾çÁúÀÇ °Á·Π°è¼ÓÇØ¼ ã¾Æ ºÉ °ÍÀ» ¾à¼Ó µå¸³´Ï´Ù.
ÀÚ ±×·³ Àαâ ÀýÁ¤ÀÇ ±×·ì "´ÚÅÍÇǽ¬"ÀÇ µ¥ºß °î "³ Ç×»ó ¿©±â¿¡ Àִµ¥ ¹» ±×¸® ¼µÎ¸£³ª ÀÌ »ç¶÷¾Æ" °¨»óÇÏ½Ã¸é¼ °Á ½ÃÀÛ ÇϰڽÀ´Ï´Ù!
°û ºÎÀåÀÇ ÆíÁö
From : ³»°¡ °û ºÎÀåÀÌ´Ù! ³ª! °û ºÎÀåÀ̾ß!
To : È÷µùÅ©
³»°¡ °ü¸®ÇÏ´Â °³¹ßÆÀ¿¡¼ ¾µ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·¹ÀÓ¿öÅ©¸¦ Çϳª ¸¸µé°í ½Í³×. ¾ÕÀ¸·ÎÀÇ ÇÁ·ÎÁ§Æ®¿¡¼ ¾µ Ç¥ÁØÀ» Á¤ÇØÁÙ Å×´Ï ÇÁ·¹ÀÓ¿öÅ©·Î ¸»¾ÆÁÖ°Ô!
³» ºÎŹ µé¾îÁÙ °ÅÁö? ÀÀ? ÀÀ?
°¡¸¸..... ³»°¡ ¾îÁ¦ ÇöÁúÀ» ÇØ¼ °ñµå°¡ Á» ¸¹¾ÆÁ³´Âµ¥ ¸»À̾ß..
±Ùµ¥ ¿äÁò Áý»ç¶÷ ¶§¹®¿¡ ¿Í¿ì¿¡ Á¢¼ÓÀ» ¸øÇؼ °ñµå¸¦ ¾µ µ¥°¡ ¾ø¾î.. À̰Š¿ø....
¾Æ´Ï³×, ³»°¡ ±¦ÇÑ ¼Ò¸®¸¦ Çß³× ±×·Á....
È÷µùÅ©ÀÇ ´äÀå
From : È÷µùÅ©
To : ¾ó±¼¸¸ ºÆ¾îµµ ¾ÆºÎ°¡ Àý·Î ³ª¿À´Â °û ºÎÀå´Ô
¾ÆÀÌÄÚ~ Çϴð°À¸½Å °û ºÎÀå´ÔÀÌ ½ÃŰ½Ã¸é ÇϰڽÀ´Ï´Ù. ¾È ±×·¡µµ °í°ÍÀÌ ÇÏ°í ½Í¾ú¾ú½À´Ï´Ù. Ç¥Áظ¸ Á¤ÇØ Áֽøé ÀÛ¾÷ ½ÃÀÛÇϰڽÀ´Ï´Ù.
¾Æ¹«ÂÉ·Ï ºÎÁ·ÇÑ °ñµå¿Í ¿Ê°¨¸¸ Áö¿øÇØ ÁÖ¼¼¿ä.
ºÎÀå´Ô ¾È °è½Ã¸é ¿ì¸®È¸»ç ¸ÁÇÕ´Ï´Ù.
¿Ö ÇÁ·¹ÀÓ¿öÅ©¸¦ ±¸¼ºÇØ¾ß ÇÏÁÒ??
»çÀüÀûÀÎ ÀǹÌÀÇ ÇÁ·¹ÀÓ¿öÅ©(Framework)´Â Ʋ ±¸Á¶, ¾ó°³, ÇϺΠ±¸Á¶ µîµî ÀÔ´Ï´Ù.
±×·¸½À´Ï´Ù. ÇÁ·¹ÀÓ¿öÅ©´Â ÇÁ·Î±×·¥ÀÌ °³¹ßµÉ ¼ö ÀÖ´Â ±âÃÊÀûÀÎ »À´ë ±¸Á¶À̸ç, ¿©·¯ °¡Áö ¶óÀ̺귯¸®µéÀ» Çѵ¥ ¸ð¾Æ¼ Áö¼ÓÀûÀ¸·Î Àç»ç¿ëÀÌ °¡´ÉÇÑ È¯°æÀÔ´Ï´Ù. ÀÌ´Â °³¹ßÀÇ »ý»ê¼º°úµµ Á÷°áµÇ´Â ¹®Á¦ÀÔ´Ï´Ù. Àß ¼³°èµÈ .Net ÇÁ·¹ÀÓ¿öÅ©´öºÐ¿¡ ÇÁ·Î±×·¥ °³¹ßÀÌ Èï°ãÁö ¾ÊÀ¸¼¼¿ä? Àß ¼³°èµÈ ¿ì¸®¸¸ÀÇ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·¹ÀÓ¿öÅ©·Î Èï°Ü¿î °³¹ßÀ» ÇØ º¸ÀÚ±¸¿ê!!
Á¦°¡ À̹ø 4ºÎÀÛ °ÁÂÀÇ ¸¶Áö¸· 4ºÎ¸¦ ÇÁ·¹ÀÓ¿öÅ©¿¡ °ü·ÃµÈ ÁÖÁ¦·Î ¼±Á¤ÇÑ ÀÌÀ¯´Â ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·¹ÀÓ¿öÅ©¸¦ ±¸ÃàÇÏ¿© °³¹ß »ý»ê¼ºÀ» ³ô¿´À¸¸é ÇÏ´Â ÀÌÀ¯¿¡¼¿´½À´Ï´Ù. ¶ÇÇÑ, ÇÁ·¹ÀÓ¿öÅ© ¼³°è ÇÏ°í ¸ðµâµéÀ» ¹èÄ¡ÇÏ´Â °úÁ¤¿¡¼ ¹«¾ð°¡ ¾òÀ» ¼ö Àֱ⠶§¹®À̱⵵ ÇÕ´Ï´Ù.
Framework Specification
½É½ÉÇѳ¯~ Ä£±¸°¡ ÇÊ¿äÇÑ ³¯~ ³ª´Â ³ª´Â~ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µéÁÒ~ »Ð~~¢Ý
À̹ø ½Ã°£Àº ½Å³ª´Â ÀÛǰȰµ¿ ½Ã°£ÀÔ´Ï´Ù. ¸ðµÎ ÇÔ²² °£´ÜÇÑ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µé¾î º¸¾ÆÈ¿. ±×¸®°í, Áö±Ý±îÁöÀÇ ¼¼ ¹ø¿¡ °ÉÄ£ °Á¿¡¼ ¼Ò°³ ÇØµå¸° ¸î ¸íÀÇ Ä£±¸µéÀÌ ¿ì¸®¿Í ÇÔ²² ÇÒ °Å¿¹¿ä. Áغñ¹°Àº ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ ´ëÇÑ Love ÀÔ´Ï´Ù.
ÀÏ´Ü ¿ì¸®°¡ ¸¸µé ÇÁ·¹ÀÓ¿öÅ©ÀÇ À̸§À» Áö¾î º¸µµ·Ï ÇÒ°Ô¿ä. Á¦°¡ ¾²´Â °Á´ϱî Á¦ ¸¶À½´ë·Î "EHGF"¶ó°í À̸§À» Áö¾úÀ¸¸ç, "Enhanced Hiddink's Generous Framework"ÀÇ ¾àÀÚ ÀÔ´Ï´Ù. ±»ÀÌ Çѱ¹¸»·Î Ç®ÀÚ¸é... "Á» ¯Àεí ÇÑ È÷µùÅ©ÀÇ °ü´ëÇÑ ÇÁ·¹ÀÓ¿öÅ©" ÀÔ´Ï´Ù(Generous´Â '°ü´ëÇÏ´Ù' ÀÔ´Ï´Ù.)
ÀÌÁ¦ ¹«¾ð°¡ ÀÖ¾î º¸ÀÌ´Â À̸§µµ Áö¾î Á³À¸´Ï, ÇÁ·¹ÀÓ¿öÅ©¿¡ ¾î¶°ÇÑ ±â´É¼ºÀ» ºÒ¾î ³ÖÀ»Áö ±¸»óÇØ º¸µµ·Ï ÇÒ°Ô¿ä. ¹°·Ð À̰͵µ Á¦ ¸¶À½´ë·Î À̸ç, Á¦°¡ ¼±Á¤ÇÑ ±â´É¼ºÀº ´ÙÀ½ÀÇ ¸ñ·Ï°ú °°½À´Ï´Ù.
ÇÁ·¹ÀÓ¿öÅ© ±â´É¼º ¸ñ·Ï
- ¿©·¯ °¡Áö ¸ðµâÀ» Packaging ÇÒ Namespace ±â´É¼º
- ¼·Î ´Ù¸¥ ÄÁÅØ½ºÆ® ¾È¿¡¼ ÇÔ¼ö ÂüÁ¶°¡ °¡´ÉÇÑ Delegate ±â´É¼º
- PageÀÇ »ý°ú »ç¸¦ °üÀåÇÒ Page Lifecycle ±â´É¼º
- µ¥ÀÌÅÍÀÇ Ä¸½¶È¸¦ °üÀåÇÒ DTO(Data Transfer Object) ±â´É¼º
- DOM Element¸¦ ÄÛ Âó¾îÁÙ $ ±â´É¼º
Namespace ±¸Á¶
- MyFramework
- init
- Delegate
- PageLifecycle
- DTOFactory
- DomPicker
À̹ø °Á´ ÇÁ·¹ÀÓ¿öÅ©¸¦ ±¸¼ºÇÏ´Â Çʼö¿ä¼ÒÀÎ Namespace ±â´É¼ºÀ» Åä´ë·Î À§¿¡¼ ¸í½ÃÇÑ ±â´É¼ºµéÀ» ÇϳªÇϳª ±¸ÇöÇØ ³ª°¡´Â °ÍÀ¸·Î °Á¸¦ ÁøÇà ÇÕ´Ï´Ù. ÇÁ·¹ÀÓ¿öÅ© ¿Ï¼ºº»Àº °Á ¸¶Áö¸· ºÎºÐ¿¡ ¸µÅ©¸¦ °É¾î µÎ¾ú½À´Ï´Ù. ^^
ÀÏ´Ü ¹Ú¼ö Çѹø Ä¡°í °©½Ã´Ù. /¹Ú¼ö /Ãã
ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·¹ÀÓ¿öÅ© ±¸ÃàÀº À̰ÍÀ¸·Î ½ÃÀÛÇÑ´Ù! Namespace ±¸Çö
Á¦ÀÏ ¸ÕÀú, ÀÚ¹Ù½ºÅ©¸³Æ® ÇÁ·¹ÀÓ¿öÅ© ±¸ÃàÀÇ ½ÃÀÛÀ̶ó°í ÇØµµ °ú¾ðÀÌ ¾Æ´Ñ Namespace ±¸ÇöÀ» ÇØ º¸°Ú½À´Ï´Ù. ÀÚ¹Ù½ºÅ©¸³Æ® Namespace´Â À̸§¿¡¼ À¯ÃßÇÒ ¼ö ÀÖµíÀÌ C#ÀÇ namespace¿Í JavaÀÇ Package¿Í À¯»çÇÑ ±â´É¼ºÀ» Á¦°øÇϸç, ´å(.) Á¢±ÙÀÚ·Î °¢°¢ÀÇ °èÃþ¿¡ Á¸ÀçÇÏ´Â ³×ÀÓ½ºÆäÀ̽º¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ® Namespace¸¦ ±¸ÇöÇϱâ Àü¿¡ °´Ã¼ Ç¥±â¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸¾Æ¾ß ÇÕ´Ï´Ù. ÀÚ·áÈ¸é º¸½ÃÁÒ!
°´Ã¼ Ç¥±â¹ýÀº ¹ºµ¥??
- °´Ã¼ ¸®ÅÍ·²Àº {}À¸·Î ·¡ÇεǸç, ¿¬°ü¹è¿ ÇüÅÂÀÌ´Ù.
- À̸§Àº ¹®ÀÚ¿À̸ç, °ªÀº Ç¥Çö(Expression)ÀÌ´Ù.
- À̸§°ú °ªÀº ÄÝ·Ð(:)À¸·Î ¿¬°áµÇ¸ç, °ª:½ÖÀÇ ±¸ºÐÀº ½°Ç¥(,)ÀÌ´Ù.
¾î? ÀÌ°Ç JSONÀÌÀݾÆ!! ±×·¸½À´Ï´Ù. JSON(JavaScript Object Notation) ÀÔ´Ï´Ù. ¤¾¤¾¤¾¤¾
À§ÀÇ Ç¥ Áß Ã¹ ¹øÂ° ±ÔÄ¢À» º¸¸é Namespace ±¸Çö¿¡ ´ëÇÑ ÈùÆ®¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. °´Ã¼ ¸®ÅÍ·²ÀÌ {}·Î ·¡ÇεǸç, ¿¬°ü¹è¿ ÇüŸ¦ °¡Áö±â ¶§¹®¿¡ ¾ó¸¶µçÁö ÁßøÀÌ °¡´ÉÇÕ´Ï´Ù.
ÁßøÀÌ °¡´ÉÇÏ´Ù°í?? ±×·¸½À´Ï´Ù! ´äÀº ÀÌ¹Ì ³ª¿Í ÀÖ½À´Ï´Ù. À̰͵éÀ» ÀÌ¿ëÇØ °£´ÜÇÑ Namespace¸¦ ±¸¼ºÇØ º¸°Ú½À´Ï´Ù.
1 2 3 4 5 6 7 8 9 10 11 12 | var Root = {};
Root.Class1 = {};
Root.Class1.DoSomething = {
MyName : "À±Á¾´ë",
AlertMyName : function(){ alert( this.MyName ); }
};
//³×ÀÓ½ºÆäÀ̽º Á¢±Ù
Root.Class1.DoSomething.AlertMyName(); |
JSONÀ» »ç¿ëÇØ Namespace°¡ ¸Å¿ì °£´ÜÇÏ°Ô ±¸Çö µÇ¾ú½À´Ï´Ù. "Root"¶ó´Â ÃÖ»óÀ§ Namespace°¡ ÀÖÀ¸¸ç, ÀÚ½Ä NamespaceµéÀ» Â÷°îÂ÷°î ¹èÄ¡ ÇÏ¿´½À´Ï´Ù.
À§ÀÇ ÄÚµå´Â ´ÙÀ½ÀÇ ÄÚµå¿Í Á¤È®È÷ ÀÏÄ¡ ÇÕ´Ï´Ù.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var Root = {
Class1 : {
DoSomething : {
MyName : "À±Á¾´ë",
AlertMyName : function(){ alert( this.MyName ); }
}
}
};
//³×ÀÓ½ºÆäÀ̽º Á¢±Ù
Root.Class1.DoSomething.AlertMyName(); |
¿ì¸®ÀÇ ¹ä ¾ÆÀú¾¾°¡ ¶Ç ÇѸ¶µð ÇϽʴϴÙ. "Âü ½±ÁÒ?"
ÀÚ ±×·³ ¿ì¸®°¡ ¸¸µé ÇÁ·¹ÀÓ¿öÅ©ÀÇ Ã¹ ´ÜÃ߸¦ ³¢¿ö º¸µµ·Ï ÇÏÁÒ~ ´ÙÀ½°ú °°ÀÌ ¸»ÀÌÁÒ~~
1 2 |
//Root Namespace....
var MyFramework = {}; |
ÀÚ~ ÀÌÁ¦ ·çÆ® NamespaceÀÎ "MyFramework"°¡ ¸¸µé¾î Á³½À´Ï´Ù. ½½½½ »ìÀ» ºÙ¿© º¸µµ·Ï ÇÒ°Ô¿ä~
³ª´Â Àú ÇÔ¼ö°¡ ¸¶À½¿¡ µé¾î¿ä. »ç¶ûÀÇ Â¦´ë±â Delegate ±â´É¼º ±¸Çö
ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼ ¹º Delegate¿©? ÇϽô ºÐµé °è½ÃÁÒ? ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ Delegate´Â C#ÀÇ ±×°Í¿¡ ºñÇÏ¸é °ü´ëÇÏÁö ¾ÊÁö¸¸ Àß ¾Ë°í ¾²¸é ¸·°ÇÕ´Ï´Ù(ƯÈ÷ ¸Þ¸ð¸® °üÁ¡¿¡¼ ¸»ÀÌÁÒ). C#ÀÇ Delegate¸¦ ¸ð¸£½Ã´Â ºÐµéÀº ´ÙÀ½ ¸µÅ©ÀÇ MSDNÀ» Âü°í Çϼ¼¿ä.
C# Programmer's Reference - delegate
¿ì¸®°¡ ±¸ÇöÇÏ·Á´Â ÀÚ¹Ù½ºÅ©¸³Æ® Delegate´Â ÇÔ¼ö¸¦ ·¹ÆÛ·±½º ÇÏ´Â Æ÷ÀÎÅÍ ¿ªÇÒÀ» ÇÏ°Ô µË´Ï´Ù. Áï, °øÅëÀ¸·Î ¾²ÀÏ ÇÔ¼ö¸¦ Çѹø¸¸ Á¤ÀÇ ÇÑ ´ÙÀ½ ¿©·¯ °÷ÀÇ ÄÁÅØ½ºÆ®(°´Ã¼)¿¡¼ ±× ÇÔ¼ö¸¦ ·¹ÆÛ·±½ºÇÒ ¼ö ÀÖ´Ù´Â ¾ê±é´Ï´Ù. ¶ÇÇÑ, Delegate·Î Âò ´çÇÑ ÇÔ¼ö´Â È£Ãâ ¸Þ¼µå¿Í µ¿ÀÏÇÑ ÄÁÅØ½ºÆ®¿¡ ³õ¿© ¼öÇàµË´Ï´Ù. ¿ì¸®°¡ Xmlhttp¸¦ »ç¿ëÇÑ Ajax ÇÁ·Î±×·¡¹ÖÀ» ÇÒ °æ¿ì Äݹé ÇÔ¼ö¿¡ Delegate¸¦ ÁöÁ¤ÇÔÀ¸·Î½á ±²ÀåÇÑ ¸Þ¸ð¸® Àý°¨ È¿°ú¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ® Delegate´Â 3¹øÂ° °Á¿¡¼ ´Ù·ç¾ú´ø Function °´Ã¼ÀÇ apply ¸Þ¼µå¸¦ »ç¿ëÇÕ´Ï´Ù(ÇÔ¼ö¿¡ Àü´ÞµÇ´Â ÀÎÀÚ°¡ ±×¶§±×¶§ ´Ù¸¦ °ÍÀ̱⠶§¹®ÀÔ´Ï´Ù.) ÀÚ¹Ù½ºÅ©¸³Æ® Delegate´Â ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //MyFramework.Delegate Namespace ±¸ÇöºÎ
MyFramework.Delegate = {};
MyFramework.Delegate.createDelegate = function( delegateInstance, pointingMethod )
{
return function() {
return pointingMethod.apply( delegateInstance, arguments);
}
}
|
createDelegate ÇÔ¼ö´Â µÎ °³ÀÇ ÀÎÀÚ¸¦ ¹Þ¾Æ µéÀÔ´Ï´Ù. ù ¹øÂ° ÀÎÀÚ´Â DelegateÀÇ ÀνºÅϽºÀ̸ç, µÎ ¹øÂ° ÀÎÀÚ´Â Delegate°¡ °¡¸£Å³ ÇÔ¼öÀÇ ÀνºÅϽº ÀÔ´Ï´Ù. µÎ °³ÀÇ ÀÎÀÚ¸¦ ¹Þ¾Æ µé¿©¼ ÁöÁ¤µÈ ÇÔ¼ö¸¦ °¡¸®Å³ ¼ö ÀÖ´Â Delegate(ÇÔ¼ö) Çü½ÄÀ¸·Î ¸®ÅÏ ÇÕ´Ï´Ù.
ÀÚ~ ÀÌÁ¦ »ç¶ûÀÇ ÀÛ´ë±âµµ Áغñ°¡ µÇ¾ú½À´Ï´Ù. È÷È÷~
³»°¡ Á×¾ú´Ù´Â »ç½ÇÀ» ¸ðµÎ¿¡°Ô ¾Ë·ÁÁÖ»ï. Page Lifecycle ±â´É¼º ±¸Çö
»ç½Ç ¿ä ºÎºÐÀº Microsoft AJAX Library¿¡¼ ÈùÆ®¸¦ ¾òÀº ³à¼®ÀÔ´Ï´Ù. Microsoft AJAX Library¿¡¼´Â ½ºÅ©¸³Æ®¿¡ pageLoad¿Í pageUnload ÇÔ¼ö¸¦ Ãß°¡Çϸé(Optional) ÆäÀÌÁö°¡ ·ÎµåµÉ ¶§¿Í ¾ð·Îµå µÉ ¶§ÀÇ À̺¥Æ®¸¦ Àâ¾Æ¼ Çڵ鸵 ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ¿ì¸®´Â Á¶±Ý ´Ù¸£°Ô Page_Load¿Í Page_UnLoadÀ» Çڵ鷯·Î »ç¿ëÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù(CodeBehind ½ºÅ¸ÀÏÀ̶ó°í ¿ì±â°í ½Í½À´Ï´Ù~)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //MyFramework.PageLifecycle Namespace ±¸ÇöºÎ
MyFramework.PageLifecycle = {};
MyFramework.PageLifecycle.OnLoadHandler = function()
{
if (window.Page_Load) window.Page_Load();
}
MyFramework.PageLifecycle.OnUnLoadHandler = function()
{
if (window.Page_UnLoad) window.Page_UnLoad();
}
|
¿¹»ó Çϼ̰ÚÁö¸¸, ¸Å¿ì °£´ÜÇÑ ¼Ò½º·Î ±¸ÇöÀÌ µÇ¾ú½À´Ï´Ù. Page_Load()¿Í Page_UnLoad()°¡ Á¤ÀǵǾî ÀÖÀ¸¸é È£ÃâÇϰí, Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù¸é È£ÃâÇÏÁö ¾Ê½À´Ï´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö´Â window °´Ã¼ÀÇ ÇÁ·ÎÆÛƼ·Î Á¸ÀçÇϱ⠶§¹®¿¡ if¹®À» »ç¿ëÇÏ¿© Á¤ÀǵǾî ÀÖ´ÂÁö ¿©ºÎ¸¦ ÆÇº°ÇÕ´Ï´Ù. ¾Ñ! ÀÌÂë¿¡¼ ½º¹°½º¹° Àǹ®Á¡ÀÌ »ý±â´Â ºÐÀÌ °è½Å°¡¿ä?
ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö°¡ window °´Ã¼ÀÇ ÇÁ·ÎÆÛƼ¶ó°í??
- ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼ÀÇ ÇÔ¼ö´Â ÇϳªÀÇ TypeÀÔ´Ï´Ù(Microsoft AJAX Library¿¡¼´Â ÇÔ¼ö¸¦ TypeÀ¸·Î ÁöĪÇÕ´Ï´Ù.) ±×·¸½À´Ï´Ù~~ ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö´Â ÇÔ¼öÇü½ÄÀÇ °ª(¸®ÅÍ·²)ÀÏ »ÓÀ̸ç, window °´Ã¼ÀÇ ÇÁ·ÎÆÛƼ·Î Á¸ÀçÇÕ´Ï´Ù.
Áõ¸íÇØ º¼±î¿ä? Dummy¶ó´Â À̸§ÀÇ ÇÔ¼ö Çϳª¸¦ ¼±¾ðÇϽŠ´ÙÀ½¿¡ alert(Dummy); ÇϽøé ÇÔ¼öÀÇ ¸®ÅÍ·²ÀÌ ¶±~ ÇÏ´Ï Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸, Dummy(); ¶ó´Â ±¸¹®À» ¸¸³ª¸é ÀÚ¹Ù½ºÅ©¸³Æ® ¿£ÁøÀº Dummy¿¡ ´ã°ÜÀÖ´Â ¸®ÅÍ·²À» ¼öÇà(Evaluation)ÇÒ »ÓÀÔ´Ï´Ù.
- Áï, ¿ì¸®°¡ ÀÛ¼ºÇÏ´Â ¸ðµç ÀÚ¹Ù½ºÅ©¸³Æ® ÄÚµå´Â ºÎ¸ð(ÁÖ·Î window) °´Ã¼¿¡ ¿¬°ü¹è¿ ÇüÅÂ(Hashtable°ú °°Àº)·Î ÇÒ´çµÉ »ÓÀÔ´Ï´Ù. À̹ø °Á¿¡¼ ¿ì¸®°¡ ÀÛ¼ºÇÏ´Â ÄÚµå´Â ºÎ¸ð °´Ã¼(Namespace)¿¡ ÇÒ´çµË´Ï´Ù.
È£±â½É ÇØ°á µÇ¾ú³ª¿ä??
¸¸¾à Page_Load()¿Í Page_UnLoad()°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸é if¹®ÀÇ °á°ú´Â false°¡ µÇ±â ¶§¹®¿¡ Page_Load()¿Í Page_UnLoad()¸¦ È£ÃâÇÏÁö ¾Ê½À´Ï´Ù('undefined'´Â 'false'ÀÔ´Ï´Ù-ù ¹øÂ° °Á ÂüÁ¶.)
PageLifecycle Namespace°¡ Áغñ µÇ¾úÀ¸´Ï Àá½Ã Ž ÇÏ°í °¡°Ú½À´Ï´Ù. ÇÇÅë°ú ¸¶³ªÅë ä¿ö ÁÖ¼¼¿ä.
»ì¾Æ¼ Àå±îÁö °¡°í½Í¾îÈ¿. DTO(Data Transfer Object) ±â´É¼º ±¸Çö
ÀÚ¹Ù½ºÅ©¸³Æ® ÇÔ¼ö°£ÀÇ µ¥ÀÌÅÍ Àü´Þ¿¡ DTO(Data Transfer Object)¸¦ »ç¿ëÇϱâ À§ÇØ ÆÑÅ丮 °´Ã¼¸¦ ¸¸µé¾î º¾½Ã´Ù!
DTO¶õ µ¥ÀÌÅ͸¦ ĸ½¶ÈÇÏ´Â °´Ã¼À̸ç, Ä¿½ºÅÒ Çʵ带 ÀÔ¸À´ë·Î Ãß°¡ÇØ ¿©·¯ Çü½ÄÀÇ µ¥ÀÌÅ͸¦ ´ã¾Æ¼ ¸ñÀûÁö±îÁö ¾ÈÀüÇÏ°Ô ¿î¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, ÇÁ·ÎÆÛƼ·Î °ªÀ» ´ã°í Àֱ⠶§¹®¿¡ ¼·Î ´Ù¸¥ ÇÔ¼ö°£ÀÇ µ¥ÀÌÅÍ Àü´Þ¿¡ ¾ÆÁÖ È¿°úÀûÀÌ¸ç °ªÀ» ÃßÃâÇØ ³»±âµµ ¹«Ã´ ½±½À´Ï´Ù. ÇÔ¼öÀÇ ÀÎÀÚ·Î DTO Çϳª¸¸ ¹Þ¾ÆµéÀÌ¸é µÇ±â ¶§¹®¿¡ ÄÚµåÀÇ À¯Áöº¸¼ö¿¡µµ ¹«Ã´ È¿°úÀûÀÔ´Ï´Ù. ÇÔ¼öÀÇ ÀÎÀÚ·Î DTO°´Ã¼ Çϳª¸¸ Àü´ÞÇØ ÁÖ¸é µÇ°Åµç¿ä~ ÁÖ°í ¹Þ´Â ÀÎÀÚÀÇ °¹¼ö¸¦ ¸ÂÃç¾ß ÇÒ Çʿ䰡 Àü~~Çô~~ ¾ø½À´Ï´Ù!!
ÀÏ´Ü ÄÚµå º¸½ÃÁÒ!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | //MyFramework.DTOFactory Namespace ±¸ÇöºÎ
MyFramework.DTOFactory = {};
MyFramework.DTOFactory.CreateDTO = function()
{
return {
AddProperty : function( PropertyName )
{
this[ PropertyName ] = null;
},
DeleteProperty : function( PropertyName )
{
if( typeof( this[ PropertyName ] ) != "function" )
delete this[ PropertyName ];
},
DeleteAllProperty : function()
{
for( var PropertyName in this )
if( typeof( this[ PropertyName ] ) != "function" )
delete this[ PropertyName ];
},
GetPropertyCount : function()
{
var Count = 0;
for( var PropertyName in this )
if( typeof( this[ PropertyName ] ) != "function" )
Count++;
return Count;
}
}
} |
¿¡~~ ÂÉ~~±Ý º¹Àâ ÇÕ´Ï´Ù. OOP °³³äÀÌ ºÎÁ·ÇϽŠºÐµéÀº Á¶±Ý È¥¶õ½º·¯¿ì½Ç ¼öµµ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸! ¾Ë°íº¸¸é ±²ÀåÈ÷ ±²ÀåÇÏ°Ô °£´ÜÇÕ´Ï´Ù. ´ÜÁö, ¹Ì¸® ÁغñµÈ ¸î °¡ÁöÀÇ ¸Þ¼µå°¡ ÀåÂøµÈ °´Ã¼¸¦ ¸®ÅÏÇÒ »ÓÀÔ´Ï´Ù. ¸®ÅϹÞÀº °´Ã¼¿¡ ÀåÂøµÈ °¢°¢ÀÇ ¸Þ¼µå´Â ´ÙÀ½°ú °°Àº ¿ªÇÒÀ» ´ã´çÇÕ´Ï´Ù.
- AddProperty ¸Þ¼µå : DTO¿¡ ÇÁ·ÎÆÛƼ¸¦ Ãß°¡ ÇÕ´Ï´Ù.
- DeleteProperty ¸Þ¼µå : DTO¿¡ Á¤ÀÇµÈ ÇÁ·ÎÆÛƼ¸¦ »èÁ¦ ÇÕ´Ï´Ù.
- DeleteAllProperty ¸Þ¼µå : DTO¿¡ Á¤ÀÇµÈ ¸ðµç ÇÁ·ÎÆÛƼ¸¦ »èÁ¦ ÇÕ´Ï´Ù.
- GetPropertyCount ¸Þ¼µå : DTO¿¡ Á¤ÀÇµÈ ÇÁ·ÎÆÛƼÀÇ °¹¼ö¸¦ ¹ÝȯÇÕ´Ï´Ù.
Ȥ½Ã ´«Ä¡ ä½ÅºÐ °è½Å°¡¿ä? ¾à°£ÀÇ ¹ö±×°¡ ¼û¾î ÀÖ´Ù´Â °ÍÀ»....
»ý¼ºµÈ DTO¿¡ °ª ŸÀÔÀÌ ¾Æ´Ñ ÇÔ¼ö ŸÀÔÀÇ ÇÁ·ÎÆÛƼ¸¦ Ãß°¡ ÇÒ °æ¿ì, DeleteProperty ¸Þ¼µå, DeleteAllProperty ¸Þ¼µå, ´õºÒ¾î GetPropertyCount ¸Þ¼µå°¡ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾ÊÀ½À» ÁüÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. typeof( ÇÁ·ÎÆÛƼ )ÀÇ °á°ú°¡ 'function'ÀÏ °æ¿ì °Ç³Ê¶Ù°Ô µÇ¾î Àֱ⠶§¹®ÀÔ´Ï´Ù. ¹«¾ð°¡ ´Ù¸¥ ¹æ¹ýÀ» °¡¹ÌÇÏ¿© ¹®Á¦Á¡À» ÇØ°áÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ ¹®Á¦Á¡ÀÇ °³¼±Àº ¿©·¯ºÐ¿¡°Ô ¸º±â°Ú½À´Ï´Ù! Àý´ë ±ÍÂú¾Æ¼ ÀÌ·¯´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. (¹Ì¸® ÀåÂøµÈ ¸Þ¼µå¿¡ Flag ¿ªÇÒÀ» ÇÒ ÀÚ½Ä ÇÁ·ÎÆÛƼ¸¦ Ãß°¡ÇÏ¸é µÇÁö ¾ÊÀ»±î¿ä?)
À̷νá DTO°øÀåÀÌ ¼º°øÀûÀ¸·Î ¼³¸³µÇ¾ú½À´Ï´Ù. ¿À·ÎÁö ½Å¼Ó, Ä£Àý, Á¤È®ÇÑ DTO ±â´É¼ºÀ» Á¦°øÇÏ¸ç ¾ß¹ÝµµÁÖ´Â ÀÖÀ» ¼ö ¾ø½À´Ï´Ù.
Àú´Â ÀÎÇü»Ì±â ¼÷·Ãµµ 375¸¦ °¡Áø ºí¿¤´öÈÄ ÀÔ´Ï´Ù. $ ±â´É¼º ±¸Çö
´ëÃæ ´«Ä¡ ä¼Ì³ª¿ä? Prototype.jsÀÇ ¿µÇâÀ¸·Î $()¿¡ ´ëÇØ¼´Â ¸ðµÎ°¡ ¾Ë°í °è½Ç °Ì´Ï´Ù. ¹Ù·Î DOM Element¸¦ ÄÛ Âó¾î³»´Â ±â´É¼º ÀÔ´Ï´Ù. °£´ÜÇÏÁö¸¸ ÈǸ¢ÇÑ ±â´É¼ºÀ» Á¦°øÇϱ⠶§¹®¿¡ ŸÀÌÇÎÀÇ ³ë·ÂÀ» ÁÙ¿©°¡¸ç DOM Element¸¦ Æ÷Å©·Î ÄÛ Âï¾î¼ ¿øÇÏ´Â ÀÛ¾÷À» ÇÒ ¼ö ÀÖ°Ô²û µµ¿ÍÁÖ´Â ¸ÚÁø ³à¼®ÀÌÁÒ(Ãà¾à ¸Þ¼µå¶ó°í ÇÕ´Ï´Ù.)
´õÀÌ»ó document.getElementById¿Í document.getElementsByNameÀ» ŸÀÌÇÎ ÇÏÁö ¸¶¼¼È¿!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //MyFramework.DomPicker Namespace ±¸ÇöºÎ
MyFramework.DomPicker = {};
MyFramework.DomPicker.$ = function( ElementId )
{
return document.getElementById( ElementId );
}
MyFramework.DomPicker.$s = function( ElementName )
{
return document.getElementsByName( ElementName );
}
|
ÀÌ°Ô ³¡À̳ı¸¿ä? Ãà¾à ¸Þ¼µå¶ó´Ï±î¿ä!!! ÀÌÁ¦ ¿©·¯ºÐÀº ÀÎÇü»Ì±â ±â°èÀÇ ³ë¿¹.
¸¶°¡·¿! Á¦ÀÓ½º! ´Þ·Á! ´Þ·Á! ÇÁ·¹ÀÓ¿öÅ© ÃʱâÈ!
À̷νá Á¦°¡ ÁغñÇÑ ÇÁ·¹ÀÓ¿öÅ©ÀÇ ¸ðµç ±â´É¼ºÀ» ±¸Çö ÇØ º¸¾Ò½À´Ï´Ù. ÇÏÁö¸¸, ÀÌ°Ô ³¡ÀÌ ¾Æ´Õ´Ï´Ù. ¿ì¸®°¡ ¸¸µç ÇÁ·¹ÀÓ¿öÅ©¸¦ ½Å³ª°Ô ºÎ·Á¸ÔÀ¸·Á¸é ¾à°£ÀÇ ÃʱâÈ °úÁ¤À» ¼öÇàÇÏ¿©¾ß ÇÕ´Ï´Ù. 4 °³ÀÇ Delegate¸¦ »ý¼ºÇϰí ÃʱâÈ ¸Þ¼µå¸¦ È£ÃâÇÏ¸é ¸ðµç Áغñ´Â ³¡³ª°Ô µË´Ï´Ù~
¿ì¼±, ÃʱâÈ ¸Þ¼µå¸¦ °¨»ó ÇϽðڽÀ´Ï´Ù.
1 2 3 4 5 6 7 | //Init
MyFramework.init = function(){
window.onload = OnLoadCallBack;
window.onunload = OnUnLoadCallBack;
}; |
init() ¸Þ¼µå°¡ ÇÏ´Â ÀÏÀº PageLifecycleÀÇ ±â´É¼ºÀ» »ç¿ëÇϱâ À§Çؼ onload¿Í onunloadÀ̺¥Æ®ÀÇ Çڵ鷯¸¦ µî·ÏÇÏ´Â ÀÏ ÀÔ´Ï´Ù. À̺¥Æ® Çڵ鷯 ÂüÁ¶¿£ Global ÂüÁ¶°¡ °¡´ÉÇÑ Delegate°¡ ¼³Á¤µË´Ï´Ù(¾Æ·¡ÀÇ Äڵ忡¼ Á¤ÀÇÇÕ´Ï´Ù.)
À̷νá ÃʱâÈ ¸Þ¼µå°¡ ¿Ï¼º µÇ¾úÀ¸´Ï, ÇÁ·¹ÀÓ¿öÅ©ÀÇ Ãʱâȸ¦ ¼öÇà ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¾Æ·¡ÀÇ ÄÚµå´Â ÇÁ·¹ÀÓ¿öÅ© ¹Ù±ùÂÊ ÄÁÅØ½ºÆ®¿¡¼ ¼öÇà µË´Ï´Ù.
1 2 3 4 5 6 7 8 9 10 11 12 |
//Delegate ¼³Á¤
OnLoadCallBack = MyFramework.Delegate.createDelegate(
this, MyFramework.PageLifecycle.OnLoadHandler );
OnUnLoadCallBack = MyFramework.Delegate.createDelegate(
this, MyFramework.PageLifecycle.OnUnLoadHandler );
$ = MyFramework.Delegate.createDelegate(
this, MyFramework.DomPicker.$ );
$s = MyFramework.Delegate.createDelegate(
this, MyFramework.DomPicker.$s );
MyFramework.init(); |
À§ÀÇ ÄÚµåó·³ PageLifecycle¿¡¼ »ç¿ëÇÒ Delegate 2°³¿Í Ãà¾à ÇÔ¼öÀÎ $()¿Í $s()À» ¿¬°á½ÃÄÑ ÁÙ Delegate 2°³¸¦ »ý¼ºÇÑ ÈÄ, À§¿¡¼ ÀÛ¼ºÇÑ init() ¸Þ¼µå¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î ¿ì¸®ÀÇ ÇÁ·¹ÀÓ¿öÅ©´Â ¸ðµç Áغñ°¡ ³¡³µ½À´Ï´Ù.
ÀÌÁ¦ ¿ì¸®´Â ¸¶±¸¸¶±¸ ¸¶±¸¸¶±¸ ¸¶±¸¸¶±¸ ¸¶±¸¸¶±¸ ¸¶±¸¸¶±¸ ¸¶±¸¸¶±¸ ºÎ·Á¸Ô±â¸¸ ÇÏ¸é µË´Ï´Ù.
"Á» ¯Àεí ÇÑ È÷µùÅ©ÀÇ °ü´ëÇÑ ÇÁ·¹ÀÓ¿öÅ©" ¼Ò½ºÄÚµå ¹× µ¥¸ð ´Ù¿î·Îµå
¿ì¸®´Â Áö±Ý±îÁö °£´ÜÇÑ ¿ì¸®¸¸ÀÇ ÇÁ·¹ÀÓ¿öÅ© Çϳª¸¦ ¸¸µé¾î º¸¾Ò½À´Ï´Ù. Âü Àç¹Õ¾úÁÒ? ¼Ò½ºÄÚµå¿Í µ¥¸ð´Â ´ÙÀ½ ¸µÅ©¸¦ Ŭ¸¯ÇÏ¿© ´Ù¿î·Îµå Çϼ¼¿ä. ¶óÀ̼¾½º´Â ¾øÀ¸¸ç, ¸¶À½²¯ ÆÛ°¡¼Åµµ µË´Ï´Ù. ´Ü, Ãâó¸¸ Ç¥±â ÇØ ÁÖ¼¼¿ä~~
Á» ¯Àεí ÇÑ È÷µùÅ©ÀÇ °ü´ëÇÑ ÇÁ·¹ÀÓ¿öÅ© ¼Ò½ºÄÚµå ´Ù¿î·Îµå
Á» ¯Àεí ÇÑ È÷µùÅ©ÀÇ °ü´ëÇÑ ÇÁ·¹ÀÓ¿öÅ© µ¥¸ð ´Ù¿î·Îµå
¿ä¾à
Àß ¼³°èµÈ ³ª¸¸ÀÇ ÇÁ·¹ÀÓ¿öÅ©¸¦ ¸¸µé¾î¼ ºÎ±¹°º´ ÀÌ·èÇÏÀÚ!
°Á¸¦ ¸¶¹«¸® Çϸé¼....
ÀÛ³â 8¿ù¿¡ ½ÃÀÛÇÑ 4ºÎÀÛ °Á°¡ µåµð¾î ³¡ÀÌ ³µ³×¿ä. ±× µ¿¾ÈÀÇ °Á¸¦ ÁøÇàÇÏ¸é¼ Àú ¶ÇÇÑ ¸¹ÀÌ ¹è¿ü½À´Ï´Ù. ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ ´ëÇÑ »õ·Î¿î ±ú´ÞÀ½À» ¾ò¾úÀ¸¸ç, ¹«ÇÑÇÑ °¡´É¼º¿¡ °¨ÅºÀ» ±ÝÄ¡ ¸øÇϰí ÀÖ½À´Ï´Ù. ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ ´ëÇÑ »ç¶ûÀÌ ¸ÅÀϸÅÀÏ Ä¿Áø´Ù°í ÇÒ±î¿ä?
¿ì¸®´Â Áö±Ý±îÁö ¿À·§µ¿¾È À̾îÁ® ¿Â ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ ´ëÇÑ Æí°ß°ú ¿ÀÇØ, ±×¸®°í ¹«°ü½É ¶§¹®¿¡ ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ ´ëÇÑ Àç¹ß°ßÀÌ ¸Å¿ì ´Ê¾îÁ³À» »ÓÀÔ´Ï´Ù. ÇÏÁö¸¸, ÀÚ¹Ù½ºÅ©¸³Æ®´Â ±æ°í ±ä ½Ã°£À» Àγ»ÇÏ¸ç ¿ì¸®¸¦ ±â´Ù·Á ¿Ô½À´Ï´Ù. ÀÌÁ¦ ÇÔ²² ÃãÃ⠽ð£ÀÔ´Ï´Ù. ¸¶À½²¯ Áñ±âÀÚ±¸¿ä~~ /Ãã /Ãã /Ãã
Áö±Ý±îÁö ÀÚ¹Ù½ºÅ©¸³Æ®´Â Çѳ¹ ±ÍÂúÀº ¾ð¾îÀÌ¸ç °øºÎÇϱâ âÇÇÇÏ´Ù°í »ý°¢ÇØ ¿À¼Ì´ø ºÐµéÀÌ Á¦ °Á·ΠÀÎÇØ »õ·Î¿î ½Ã°¢À» °¡Áö¼ÌÀ¸¸é ÇÏ´Â ¹Ù·¥ÀÔ´Ï´Ù. ¸ðµç ¾ð¾î°¡ ±×·¸µíÀÌ ÀÚ¹Ù½ºÅ©¸³Æ®µµ ³ë·ÂÇÑ ¸¸Å ´ë°¡¸¦ µ¹·ÁÁÖ´Â ³à¼®ÀÔ´Ï´Ù. À¥ °³¹ßÀÚ¿¡°Ô ±× ´ë°¡´Â ¸Å¿ì Å©¸ç, ¿å½É³ª´Â ´ë°¡ÀÔ´Ï´Ù. ²À ÀâÀ¸½Ã±æ ¹Ù¶ø´Ï´Ù.
³¡À¸·Î Á¦ °Á°¡ ³ºÀº ºÒ¼¼ÃâÀÇ ½´ÆÛ½ºÅ¸! ±èÀÚ½º¾¾ °¨»óÇÏ½Ã¸é¼ °Á ¸¶Ä¡°Ú½À´Ï´Ù. Àú´Â ºü¸¥ ½ÃÀÏ ¾È¿¡ »õ·Î¿î °Á·Πã¾Æ ºË°Ú½À´Ï´Ù. ²ý~~ »Ð~~
°Á ¸ñ·ÏÀ¸·Î..
|