Shawn Moore(Sartak)ã®è¬ç¾©ã§ãããåæé訳ã ææ³ã è¶ æ¥½ããã£ãï¼ï¼sartakãã¨ã¦ããã人ã ã£ãï¼ã¡ãã£ã¨ãã質åã§ãã³ã¼ãæ¸ããªããæãã¦ãããã ãã£ã¨ã¿ããªåãããããã®ã«ï¼ããçµãã£ã¡ãã£ããã©ï¼ æ©è½æ¯ã«ãè¬ç¾©âå®ç¿âè¬ç¾©âå®ç¿ãã®ç¹°ãè¿ãã ãããã¨ã¦ã楽ããã£ãã 1æ¥æå¾ã¾ã§æ¥½ããã³ã¼ãæ¸ãã¦éãããã å®ç¿ã®å 容ããæ¢ã«ãããã¹ããéãããã«ã¢ã¸ã¥ã¼ã«ãä½æãã¦ãã¹ããéã£ããããã£ãã¼ï¼ãã¿ãããªã gitã«è³æãããã®ã§ã¿ããªè½ã¨ãã¦ãã£ãããããï¼ccã®ã©ã¤ã»ã³ã¹ã§å ¬éãã¦ãã®ã§ã ãã£ã¨testãã¡ã¤ã«èªä½ããã¬ã¤ã«æ¸ãã¦ããã¯ãã ããè¦ããããã¨æãã JPAã«ãããæè¬ã§ããã3æ¥éå ¨é¨åãã¦ããã°è¯ãã£ãã¨æã£ãã 以ä¸ã¡ã¢ã Part0: Mooseã®ã³ã³ã»ãã perl6ããããããªã¢ã¤ãã£ã¢ãããã£ã¦ã ã¾ãã¯ãã£ããMoose
Moose::Roleã¯Javaã®Interfaceã¨ä¼¼ããããªç©ã ã¨æã£ã¦ããã§ããã大ããªèª¤è§£ã§ããã ã¢ãã³Perlã®ä¸çã¸ãããããèªãã§ãMoose::Roleã¯Traits: Composable Units of Behaviorã®æ¦å¿µã®å®è£ ããããã¨ãããã£ãã®ã§ããã®è«æãèªãã§ã¿ã¾ããã*1ãé常ã«é¢ç½ãå 容ã§ãããP.12 ã® a) 㨠b) ãè¦ãã ãã§ãããã®æ¦å¿µã®é¢ç½ããä¼ããããããªããã¨ãè¦ã¯ãæå®ããæ¯ãèã(requires)ããæ°ããæ¯ãèã(provides)ãä½ããã®ããTraitsã£ã¦ãã¨ã§ãã(ãã ããããã§è¨ãæ¯ãèãã«ã¯ã¢ã¯ã»ãµãå«ã¿ã¾ãã) 誤解ãã¦ããã㨠Moose::RoleãTraitsã¨ãã¦è¦ãªãã¨ããã°ãJavaã®Interfaceã®æ§è³ªã§ãã以ä¸ã®2ç¹ã¯èª¤è§£ã§ã*2ã Moose::Roleã¯ãåãªãã¤ã³ã¿ãã§ã¼ã¹(API)
CPANTSã¯æ å ±ã®å®åº« Perlã使ãæ大ã®å©ç¹ã¨ããããCPANã§ãããCPANã¯åãªãã¢ã¸ã¥ã¼ã«ç½®ãå ´ã§ã¯ããã¾ãããCPANã¯ã¾ãPerlã®å©ç¨ç¶æ³ãç¥ãããã§ä¸å¯æ¬ ãªçµ±è¨æ å ±ãå¾ãå ´ã§ãããã¾ãããã®ãããªçµ±è¨æ å ±ã®ããã¤ãã¯ãããããCPANæ¤ç´¢ãµã¤ãããã確èªã§ãã¾ãããããçªã£è¾¼ãã æ å ±ã欲ããå ´åã¯CPANTSï¼CPAN Testing Serviceï¼ã¨å¼ã°ãããµã¤ãã確èªããã®ã便å©ã§ãã å½å ã§ã¯nipotanãã¨è°·å£å ¬ä¸æ°ãå§ãããè¼ãï¼å ¨æ¥æ¬æå¼· CPAN Author 決å®é¸æ権ãã®ãã¿å ã¨ãã¦ç¥ããã¦ãã¾ããããã®ãµã¤ãã§ã¯åã ã®ä½è ãã¢ã¸ã¥ã¼ã«ã®å質ã ãã§ãªãããã®ã¢ã¸ã¥ã¼ã«ãå®éã«ã©ãã§ä½¿ããã¦ãããã¨ããæ å ±ãå¾ããã¨ãã§ãã¾ãã ãã¨ãã°åååãä¸ãããã¼ã«é¢é£ã®ã¢ã¸ã¥ã¼ã«ã®å©ç¨ç¶æ³ã調ã¹ã¦ã¿ãã¨ãå¤ãè¯ãExporterãä¾åã¢ã¸ã¥ã¼ã«ã¨ãã¦åãä¸
è¿½è¨ ãã®è¨äºã¯ Any::Moose 0.02 以åã対象ã§ãã 0.03ããã³ãç¾å¨ã®ææ°ç 0.04 ã§ã¯ Mouseã¨Mooseãæãã å¦çã®æåã以ä¸ã®ããã«å¤ãã£ã¦ã¾ãã $VAR1 = bless( { 'roles' => [], 'superclasses' => [ 'Mouse::Object' ], 'name' => 'ANY', 'attributes' => {} }, 'Mouse::Meta::Class' ); $VAR1 = bless( { 'roles' => [], 'superclasses' => [ 'Mouse::Object' ], 'name' => 'ANY2', 'attributes' => {} }, 'Mouse::Meta::Class' ); ããããã«æåã«use Any::Mooseãããæã«Mooseãloadãã
ãã¦æ¯å¹´å¹´æ«ãè¿ã¥ãã¨ããã°æ´æ°é »åº¦ãä¸ããid:fbisã§ãããMooseã馴æãã§ããã¨ãããªã®ã§ããããMooseã«å¯¾ãã¦ä¸è¨ãã£ã¦ãããã¨ãããã¨ã§ããã¯ãã Mooseã¯ç´ æ´ããããã¨ã¦ãããªã¼ç´ æ´ããããä½ãã人ã«åªããã人éã«åªããã ãã£ï¼ããããMooseã¯ã¾ã 使ãã«ã¯æ©ãããããã¦ã·ã«ã®å·¨ç¥å µã°ãã«æ©ããããã ã å®éã«çµã¿è¾¼ãã§ã¿ã¦æããåé¡ç¹ã 大ããåãã¦äºã¤ã ãã®å£±ï¼ãªãã¸ã§ã¯ãçæã®ã³ã¹ã ãã¯ããªãã¨ãã£ã¦ãnewã®ã³ã¹ããé«ããé ãã ä¸ã¤ä¸ã¤ãè¦ãã°ãããããªãã ãã©ãã¯ãnewã®ã³ã¹ãã¯é«ãã Mooseã使ãã®ã§ããã°æ¥µånewãé¿ãããããªä»çµã¿ã®ä¸ã«åãå ¥ããªãã¨å¾®å¦ãCatalystã§ä¾ãããªãsetupã®æç¹ã§newãã¦ä»¥å¾ãã£ãã·ã¥ããããããªå®è£ ã ã newããçµããã°ãã¨ã¯ï¼è¤éãªMooseã®ä½¿ãæ¹ããã¦ãªãéãï¼ããã»ã©åé¡ã§ã¯ãªã
Class::MOPã®ããããå ±åããå¾ã§ï¼ããããã°ã©ããã«ããããéãéã®æ³¨æç¹ãèªãã ãªï¼ã¨ãããã¨ãæãåºããã ãããã®æå¦çãããã10ã®æ¹æ³ (id:tokuhirom) ãã§ãã¯ãã¦ã¿ãã¨â¦ svn HEAD ã§ããããã¤ãã -> â³ CPANã®ææ°çã¨ã®å·®åã«ãã ä½è ã®ã¹ã¿ã¤ã«ã«ãããã -> à ã¤ã³ãã³ãã¹ã¿ã¤ã«ãéã ãã¹ããæ¸ã -> à ãClass::MOPã¨Mooseã®ãã¹ãã¯éãã¦ããããããæ¸ãã¦ããã㪠信ç¨ããã -> à å人ã¨ãã¦èªèããããã¦ããªãã¯ã ãããã®ç²åº¦ã«æ°ãã¤ãã -> â ãªãããããå¿ è¦ãªã®ããæ¸ã -> à èªæã ã¨æã£ãã®ã§â¦ å ¨ç¶ã ããããï¼
IOCã DIã mstãcatalystã«ã¤ãã¦ã®ã¤ã³ã¿ãã¥ã¼ã§æ¬¡æCatalystã§Mooseã ããããªãã¦IoC (Inversion of Control) ã¨ã (DI) Dependency Injectionã¨ã使ããããªäºãè¨ã£ã¦ãããï¼ IoCã¨ãDIã£ã¦Javaçéã§ã¯ããèããã©ãPerlçã§ã¯ãã¾ãèããªããèªåãã¡ããã¨äººã«èª¬æã§ããããã«ããã¤ãã§ã«ã¡ã¢ï¼ ã¾ããIoC ã¯ã»ã¼DIã¨åãç©ããªããæã ç´°ããå·®ã強調ãã人ãããããä¸è¬çã«ã¯åãã§OKããã¨ããã®äºã¤ã®ã³ã³ã»ããã¯å¥ã«æ°ãããªããå°ãªãã¨ãCatalystã使ã£ããã¨ã®ãã人ãªãããåããã¯ããä¾ãã°ã以ä¸ã®ããè¦ãã³ã¼ãï¼ my $model = $c->model('Hoge'); Catalystãå ã«'Hoge'ã¨ããã¢ãã«ãä½æããä¿åï¼Inject)ãã¦ããã¦ããããããã§ãä¸è¨ã®ããã«
Mooseã«ãããã¡ã½ããã¬ã¾ãªã¥ã¼ã·ã§ã³ã®è½ã¨ãç©´ Mooseã§Roleãä½ãã¾ã package Role; use Moose::Role; requires 'foo'; no Moose; ã§ããã®RoleãChildã§å®è£ ãã¾ãããããã¤ã«è¦ªã¯ã©ã¹Parentãããã¨ä»®å®ãã¾ãããããªæãã # Parent package Parent; use Moose; has 'foo' => ( is => 'rw', isa => 'Int' ); no Moose; # Child package Child; use Moose; extends 'Parent'; with 'Role'; no Moose; ã§ãfoo()ã£ã¦attributeãã¤ãã¦ãããã ãããå½ç¶Roleã®requiresãæºããã¦ãã¨æãã¾ãããï¼ æºããã¦ã¾ããã å®ã¯Moose::Roleã®r
æè¿Perlçéã§ã¯MooseãMooseã£ã¦ãªããMooseã£ã¦ã®ãæµè¡ã£ã¦ããããã ããå®å ¨ã«åºé ãã¦ãã¾ã£ãã®ã§å¢ç°ã§æ¸ãæ®´ã£ã¦ã¿ãã èªåèªèº«ã®ããã°ã§ã¯ããããã£ã¨åããMooseç¥ã£ã¦ããã®ããã«æ¯èãããã«ãå¢ç°ã§å ã«æ¾åºãã¦ãããã¦ã¸ã¸ã ããã°ã©ã層ãéããªãä½ãå¢ç°ã«ãããªãã¨æ¸ãã¦ãã ããè¦ã¦ãããªãæ°ã¯ãããã©ã åãã¦ã®Moose - Mooseã®ããã - ã¯ã¦ãª#hide-k åãã¦ã®Moose meta object protocol ã«ã¤ãã¦èãã¦ã¿ã - TokuLog æ¹ãChumbyã¨ã©ãã¾ããæ¥è¨ YappoLogs: Moose ã®ã³ã¼ããæ¢ç´¢ãã¦ç解ãæ·±ãã Mooseã£ã¦ã®ã¯çµå±ã®ã¨ããClass::MOPã®ã©ããã¼ã¿ãããªããã ã¨ã ã§ãClass::MOPã£ã¦ã®ã¯ä½ã ï¼ã£ã¦ãã¨ã ãã©ãã¡ã¿ãªãã¨ãããã°ã©ãã³ã°ï¼ãï¼ãããã³ã«ï¼ã¾ã¼ã©ã£
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
YAPCã§ã®Michael Schwernã®ãã¼ã¯ã"perl is unded"ãèãã¦ãPerlã¯ç¢ºãã«æ»ãããããªããã©æ°ãã人æã¯å¿ è¦ã ããã£ã¦æã£ãããã§ãã ã§ãä»å¹´ã®YAPCã«ã¯ä¼ç¤¾ã®è¥ãåãã¡ãèªã£ã¦è¡ã£ããã ãã©ãå£ãæãã¦è¨ãã®ãé£ããä¸ã«ããã«è±èªã ãããã¾ããã¨ã æ°æã¡ã¯åãããã§ããªããã§ãããåããã¾ãå¾æãªæ¹ãããªããã ã§ãæªçãªåã§ãä½ãã§ããªãããªã¼ã¨æã£ãã®ãpod(ããã¥ã¢ã«ã)ã®ç¿»è¨³ã ãããMooseãªããæ¬é ãããã¡ãªPerlã®ããããããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ãåãããããæ¸ããã®ã§ãä»ã®è¨èªã®äººã«ãåãå ¥ããããããããªã¼ã¨ã ã¾ãåã«ä»ã¯ããã ã£ã¦ã ãã ãã©ã(Yapooããæ°ãæ¥å¹´ã«ã¯ãªãããããã©)ã ã§ããã£ãããåã¡ã£ã¦ãã¨ã§ãã¤ããªã翻訳ã ãã©ã¨ã£ã¨ã¨å§ãã¡ããã¾ããã ã¨ãããããæ¥æ¬äººãå¤ãã£ã¦ãã¨ã§cod
å¾®å¦ã« Moose ã¨ã¯ç°ãªãã®ã§ã¡ã¢ MyApp::Roleã¯ã©ã¹ãå¿ é ã«ãªã Moosenize ãããæã« MyApp::Role ã¯ã©ã¹ã« requires with after before ãªã©ã®å¿ é ã¡ã½ãããã¨ã¯ã¹ãã¼ããã import ã¡ã½ãããçªã£è¾¼ãã ããã¦ã MyApp::Plugin ã® register ã¡ã½ãããæ¡å¼µãã¦ããã® register ãã§ã¼ãºã§ requireses ã®ãã§ãã¯ãã Role ã§å®ç¾©ããã after, before ã® install ãªã©ãè¡ãã Class::Component ã® Plugin 㯠register ã¡ã½ããããåæåãã§ã¼ãºã«ãããã®ã§ãããã§å ¨é¨ãã£ã¡ããã ãã ããåãååã®Pluginã§ãloadãããæ°ã ã register å¼ã°ããã®ã§ãæåã®ä¸åã ãåæåããã Role ä½ãæã®ã«ã¼ã«ã¨ãã¦
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
Moose ã®ã³ã¼ããæ¢ç´¢ãã¦ç解ãæ·±ãã æ¬æ¥ã¯ Roppongi.PM ã®ç¬¬ä¸å Moose ã³ã¼ããªã¼ãã£ã³ã°ãããã¾ããã Mooseã¯ãåç´ã«ä½¿ã£ã¦ãåã«ã¯åãæãã®ã§ããããã®å®è£ ãè¦ããã¨ããã¨é端ã«è¤éããå¢ãã¾ãã ã¨ã«ããã¡ã½ããã®å¼ã³åºãã®ã¹ã¿ãã¯ãæ·±ããMySQLç¨ã§ã¯ç¡ãã«ããæ²è ã§ãã ä»åã¯ãããªMooseã®æåãææ¡ããæããããæ´ããã¨ããåã§ãã Moose.pm Moose.pmã¯ã主ã«use Mooseãããæã«exportããã¡ã½ããã®å®ç¾©ããã¦ãã¾ãã use Mooseããã¨ãextends,with,has,before,after,around,override,inner,augment,make_immutable($c->meta->make_immutableãã¹ã),confess,blessedãexportããã¾ãã ããã¦M
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
ã¯ã¦ãªã°ã«ã¼ãã®çµäºæ¥ã2020å¹´1æ31æ¥(é)ã«æ±ºå®ãã¾ãã 以ä¸ã®ã¨ã³ããªã®éããä»å¹´æ«ãç®å¦ã«ã¯ã¦ãªã°ã«ã¼ããçµäºäºå®ã§ããæ¨ããç¥ãããã¦ããã¾ããã 2019å¹´æ«ãç®å¦ã«ãã¯ã¦ãªã°ã«ã¼ãã®æä¾ãçµäºããäºå®ã§ã - ã¯ã¦ãªã°ã«ã¼ãæ¥è¨ ãã®ãã³ãæ£å¼ã«çµäºæ¥ã決å®ãããã¾ããã®ã§ã以ä¸ã®éãã確èªãã ããã çµäºæ¥: 2020å¹´1æ31æ¥(é) ã¨ã¯ã¹ãã¼ãå¸æç³è«æé:2020å¹´1æ31æ¥(é) çµäºæ¥ä»¥éã¯ãã¯ã¦ãªã°ã«ã¼ãã®é²è¦§ããã³æ稿ã¯è¡ãã¾ãããæ¥è¨ã®ã¨ã¯ã¹ãã¼ããå¿ è¦ãªæ¹ã¯ä»¥ä¸ã®è¨äºã«ãããã£ã¦æç¶ãããã¦ãã ããã ã¯ã¦ãªã°ã«ã¼ãã«æ稿ãããæ¥è¨ãã¼ã¿ã®ã¨ã¯ã¹ãã¼ãã«ã¤ã㦠- ã¯ã¦ãªã°ã«ã¼ãæ¥è¨ ãå©ç¨ã®ã¿ãªãã¾ã«ã¯ãè¿·æãããããããã¾ãããã©ãããããããé¡ããããã¾ãã 2020-06-25 è¿½è¨ ã¯ã¦ãªã°ã«ã¼ãæ¥è¨ã®ã¨ã¯ã¹ãã¼ããã¼ã¿ã¯2020å¹´2æ28
ã©ã³ãã³ã°
ãç¥ãã
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}