¿À¸¯½ºMETA-MODEL DRIVINE °´Ã¼ Áö¼Ó¼ºÀÌ ¿©·¯ »óÁ¡ | |
Áö±Ý ´Ù¿î·Îµå |
¿À¸¯½º ¼øÀ§ ¹× ¿ä¾à
±¤°í
- ƯÇã:
- Perl Artistic License
- °¡°Ý:
- FREE
- °Ô½ÃÀÚ À̸§:
- Richard Hundt
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://search.cpan.org/~rhundt/
¿À¸¯½º ű×
¿À¸¯½º ¼³¸í
Meta-Model Driven °´Ã¼ Áö¼Ó¼ºÀÌ ¿©·¯ »óÁ¡À» »ç¿ëÇÕ´Ï´Ù ORYX´Â °´Ã¼ °ü°èÇü ¸ÅÇλӸ¸ ¾Æ´Ï¶ó DMB ½ºÅ¸ÀÏ µ¥ÀÌÅͺ£À̽º¸¦ ¸ðµÎ Áö¿øÇÏ´Â °´Ã¼ Áö¼Ó¼º ÇÁ·¹ÀÓ ¿öÅ©À̸ç ƯÁ¤ ½ºÅ丮Áö ¹é¿£µå¿Í °áÇÕµÇÁö ¾Ê¾Ò½À´Ï´Ù. Áï, ¿µ±¸Àû ÀΠŬ·¡½º¸¦ ÀüÇô º¯°æÇÏÁö ¾Ê°í DBM ½ºÅ¸ÀÏ µ¥ÀÌÅͺ£À̽º (±× ¹Ý´ë·Î)·Î RDMB¸¦ ½º¿Ò ÇÒ ¼ö ÀÖ¾î¾ßÇÕ´Ï´Ù. ÀÌ´Â °¡´ÉÇÑ ÇÑ PerlÀÇ ÀÚü¿Í ±ä¹ÐÈ÷ ¸Â´Â ¸ÞŸ ¸ðµ¨À» »ç¿ëÇÏ¿© ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. - PerlÀÇ ¶Ù¾î³ ³»¼º°ú ¾öû³ À¯¿¬¼º ¶§¹®¿¡ ½ÇÁ¦·Î ¸Å¿ì °¡±õ½À´Ï´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î ¹è¿ ¹× ÂüÁ¶ Çùȸ À¯ÇüÀº`tie 'ÀÇ ÀÚÀ¯ÁÖÀÇ »ç¿ëÀ¸·Î ±¸ÇöµË´Ï´Ù. ¸Å¿ì Åõ¸íÇÑ ÇϳªÀÇ ¸ÞŸ ¸ðµ¨ÀÇ »ç¿ëÀº Áö¼ÓÀûÀΠŬ·¡½º¿¡¼ ½ºÅ丮Áö ¹é¿£µåÀÇ Ä¿Çà ¸µÀ» °³³äÀûÀ¸·Î Áö¿øÇϸç, ´ëºÎºÐÀÇ ¸ÞŸ µ¥ÀÌÅÍÀÇ ½ÇÁ¦·Î ÀÛÀº ¾ÚÇÁ ¿·¿¡ ÀÖÀ¸¸é Áö¼ÓÀûÀÎ ¼ö¾÷À» »ç¿ëÇÒ °ÍÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î º¸Åë perl classes.oryx¿Í »ç½Ç»ó ±¸ºÐÇÒ ¼ö¾ø´Â ¹æ½ÄÀ¸·Î °ÇÁ¶ÇÑ ¿øÄ¢À» µû¸¨´Ï´Ù - ´ç½ÅÀÌ ¹àÈ÷´Â ·çºñ¿¡ ´ëÇÑ È¯»óÀûÀÎ ·çºñ¿¡¼ ¿µ°¨À» ¾òÁö ¸¶½Ê½Ã¿À. ³ÊÀÇ ¼ö¾÷. ±× ÈÄ, ÀÚµ¿ Å×ÀÌºí »ý¼º (RDBMS ½ºÅ丮Áö¸¦ »ç¿ëÇÏ´Â °æ¿ì)À» Æ÷ÇÔÇÏ¿© ¸ðµç °ÍÀÌ °ü¸®µË´Ï´Ù. ORYX´Â ÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î »ý¼º µÈ Å×À̺í°ú ¸µÅ© Å×À̺íÀ» Çö¸íÇÏ°Ô ÁöÁ¤ÇÏ¿© Schema¿¡¼ Schema¿¡¼ ¹æÇظ¦ ãÀ» ¼ö ÀÖ¾î¾ßÇÕ´Ï´Ù. Because Oryx´Â ÀÏ¹Ý Perl ¹è¿ ¹× Çؽà ÂüÁ¶¿Í °ü°è¸¦ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. ³×ÀÌƼºê Perl¿¡¼ »ý¼º ÇÒ ¼öÀÖ´Â ¸ðµç ±¸Á¶ ¶Ç´Â °´Ã¼ °ü°è°¡ µ¥ÀÌÅͺ£À̽º¿¡ Áö¼ÓµÇµµ·ÏÇÕ´Ï´Ù. ÀÌ·¸°ÔÇÏ¸é ³ª¹«, ¼øȯ ±¸Á¶, ¸µÅ© µÈ ¸ñ·Ï, È¥ÇÕ ¸ñ·Ï (´Ù¸¥ Ŭ·¡½º ÀνºÅϽº ¸ñ·Ï) µîÀ» »ý¼º ÇÒ ¼öÀÖ´Â À¯¿¬¼ºÀ» Á¦°øÇÕ´Ï´Ù. ETROMÀº PERLÀÇ ±âº» »ç¿ë ±âº» ¸ÞÄ¿´ÏÁòÀÇ ¿©·¯ »ó¼ÓÀ» Áö¿øÇÕ´Ï´Ù. Ư¼ºÀ̾ø´Â ´Ü¼øÈ÷ Ŭ·¡½º ÀÎ Ãß»ó Ŭ·¡½º´Â Àǹ̰¡ ÀÖ½À´Ï´Ù .Synopsis # ¿µ±¸ Ŭ·¡½º ÆÐÅ°Áö CMS :: ÆäÀÌÁö¸¦ Á¤ÀÇÇÕ´Ï´Ù. ±âº» QW (ORYX :: CLASS)¸¦ »ç¿ëÇϽʽÿÀ. ¿ì¸®ÀÇ $ schema = {attributes => , ¿¬°ü => }; 1; # ... ÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½º ¸ÞŸ µ¥ÀÌÅÍ Á¤ÀǸ¦ ÂüÁ¶ÇϽʽÿÀ. # ================================ ========================================== # ¿µ¼Ó Ŭ·¡½º »ç¿ë CMS¸¦ »ç¿ë : :ÆäÀÌÁö; $ Page = CMS :: Page-> ¸ÞŸ ¹ö½ºÀÇ »î ({title =>) '}; $ Page = CMS :: Page-> °Ë»ö ($ ID); $ Page-> ¾÷µ¥ÀÌÆ®; $ Page-> »èÁ¦; @Pages = CMS :: Page-> °Ë»ö ({ÀÛ¼ºÀÚ => 'Richard Hun %'}, @order, $ limit, $ offset); # SQL where Àý (ƯÁ¤ ´Ü¶ôÀÌ Æ÷ÇÔ µÈ ÆäÀÌÁö Æ÷ÇÔ)À¸·Î °Ë»ö : @book = cms :: page-> search ({exists => q {(ÆäÀÌÁö¿¡¼ ÆäÀÌÁö¿¡¼ id ¼±Åà = author.id ¹× page.title '¸ÞŸ %')}}); # ===========================================. ========================= # º¯°æ »çÇ×À» È®¾à $ Page-> Commit; # ===========================================. ========================== # ¼Ó¼º ¹Â Å×ÀÌÅÍ $ ÆäÀÌÁö -> Á¦¸ñ ( '´Â Metamanic ¸ÞÄ«´Ð'); $ tite = $ page-> Á¦¸ñ; # ===========================================. ========================== # ±âÁØ ¿¬°ü Å×ÀÌÅÍ $ template_obj = $ ÆäÀÌÁö -> ÅÛÇø´; $ Page-> ÅÛÇø´ ($ template_obj); # ===========================================. ====================================== => ´Ü¶ô -> = $ intro_para; $ ´Ü¶ô = $ Page-> ´Ü¶ô -> ; # ===========================================. ========================= # ¹è¿ Çùȸ ¿¬»êÀÚ $ pell = @ {$ Page-> ´Ü¶ô}; $ INTRO = SHIFT @ {$ PAGE-> ´Ü¶ô}; Ǫ½Ã @ {$ Page-> ´Ü¶ô}, $ °á·Ð; unshift @ {$ Page-> ´Ü¶ô}, $ new_intro; Splice @ {$ Page-> ´Ü¶ô}, 1, 4, ($ ¿ä¾à); # ===========================================. ========================= # Çؽà Çùȸ Á¢±Ù ÀÚ $ image_obj = $ Page-> À̹ÌÁö -> {logo}; $ Page-> À̹ÌÁö -> {mug_shot} = $ my_ugly_mug; @Keys = Å° % {$ Page-> À̹ÌÁö}; @Values = °ª % {$ Page-> À̹ÌÁö}; # ===========================================. =================== Class :: Observable Page-> add_observer (ÇÏÀ§ {My ($ Ç׸ñ, $ action) = @ _; # ...}); $ Page-> add_observer (...); # ÀνºÅϽº # ==================================================================== ============================ Storage¿¡ ¿¬°á $ storage = oryx-> connect (); # ¶Ç´Â ½ºÅ°¸¶ $ Storage = oryx-> connect (, 'CMS :: ½ºÅ°¸¶)¸¦ ÁöÁ¤ÇϽʽÿÀ. # dbm :: Deep Back-end oryx-> connect ([ 'dbm : deep : datapath = / path / to / data', 'cms :: schema'); # ===========================================. ======================== SCHEMA $ ÀúÀå¼Ò -> DeploySchema ()¸¦ ¹èÆ÷ÇÕ´Ï´Ù. # ¸ðµç ¾Ë·ÁÁø Ŭ·¡½º (`»ç¿ë 'À» ÅëÇØ) $ storage -> deployschema ('CMS :: Schema '); $ Storage-> DeployClass ( 'CMS :: Page'); # ÀÚµ¿À¸·Î ÇÊ¿ä¿¡ µû¶ó ORYX (AUTO_DEPLY => 1); # ¸ðµç Ŭ·¡½º CMS :: Page-> Auto_Deploy (1); #ÀÌ Å¬·¡½º ¿ä±¸ »çÇ׿¡ ´ëÇؼ¸¸ : ¡¤ Perl.
¿À¸¯½º °ü·Ã ¼ÒÇÁÆ®¿þ¾î