ãŠãŒã¶ãŒã«çŽæ¥è¡šç€ºããããŠãŒã¶ãŒãšå¯æ¥ã«é£æºãããããžã§ã¯ãã®éšåãæ åœããŠããã®ã§ãç§ã®è©±ã¯ããã«ã€ããŠã§ãïŒã
ãããããèªè ã屿©ã«whatããŠãããã®ãçè§£ããããã«ãç§ãã¡ããæããé¢ã«æã£ãŠãããã®ãã話ãããããšæããŸãã ãããŠãJavaãMySQLãNeo4JãJettyãRabbitMQãããããã®é·ãpythonã®æåŸã«ã¯nginxããããŸãã
Gcl
2010幎ã®çµããã«ããæå¹ãªãweb-jséšéã§ããç§ãã¡ã¯ã以äžã®ããã€ãã®çç±ã§å€ããã³ãã¬ãŒããšã³ãžã³ãæŸæ£ããæ°ãããã®ã«é²ã¿ãç§ãã¡ã®ã¯ã¬ã€ãžãŒãããžã§ã¯ãã®çŸå®ãå®éã«æºããããšã«ããŸããã åé¡ã¯ããã®æç¹ã§ãŠã£ãžã§ãããšå ŽæïŒå ŽæïŒã®æŠå¿µãæ¢ã«å®è£ ãããŠããããšã§ããã ç§ãã¡ã®çè§£ã§ã¯ããŠã£ãžã§ããã¯ãã£ãã«ãä»ããŠéä¿¡ããããã€ãã®ç¬ç«ããèŠèŠèŠçŽ ã§ãã ãã£ãã«ãä»ããŠãã¡ãã»ãŒãžãéä¿¡ããç¹å®ã®ã¿ã€ãã®ã¡ãã»ãŒãžããµãã¹ã¯ã©ã€ãã§ããŸãã ãŠã£ãžã§ããã¯ãé çªã«ããããå®¶ã®ã©ãã«ããããç¥ããŸãã-å Žæã¯ããã«è²¬ä»»ããããŸãã 倧ããªåé¡ã¯ããŠã£ãžã§ãããããŒã¿ãèŠèŠåããç¹å®ã®ãã¿ãŒã³ãå®çŸ©ããããšã§ãã åããŠã£ãžã§ãããããŸããŸãªå Žæã§äœ¿çšã§ããŸãããããŒã¿ãããŸããŸãªæ¹æ³ã§è¡šç€ºã§ããããããŠãŒã¶ãŒã¯ããŸããŸãªæ¹æ³ã§ããŒã¿ãæäœã§ããŸãã ããããå€ä»£ã®ãã³ãã¬ãŒããšã³ãžã³ã«æ»ããŸãã ãã®ãšãããã¹ãŠã®ãã³ãã¬ãŒãã¯Webã¹ãã¬ãŒãžã®ã¯ã©ã€ã¢ã³ãã«ããŒãããã³ãã£ãã·ã¥ãããŸãããããã¯ãjsã³ãŒãã«ç¹å®ã®éåææ§ããã£ãããã§ãããŠã£ãžã§ããã®äœæåŸãããŒã¿ã衚瀺ããããŸã§ã«æéãããããŸããã ããšãã°ããã³ãã¬ãŒããšã³ãžã³ã®å€ãã®åé¡ã解決ããæ°ãããœãªã¥ãŒã·ã§ã³ãæ¢ããŠããŸããã
- ãµã€ã¯ã«ã¯ãããŸããã§ãã
- ããŒã«ã©ã€ãºã®è€éãïŒããã¹ãã«å€æ°ãæ¿å ¥ããããšã¯äžå¯èœã§ããïŒ
- æ¡ä»¶ãšåå²ã¯ãããŸããã§ããã
ãã®æç¹ã§æ¢åã®ãœãªã¥ãŒã·ã§ã³ãåæããGoogle Closure LibraryïŒGCLïŒãéžæããŸãã...ã¯ããGoogleããã¯ãããžãŒãæäŸããŠããããšãç¥ããŸããã§ãããããã®äœ¿çšã®ããã®ããŒã«ã¯æäŸããŠããŸãã:)
ãã®æãŸã§ã«ããããžã§ã¯ãã¯ä»¥äžã§æ§æãããŠããŸããã
- ã500åã®jsãã¡ã€ã«
- ã30 cssãã¡ã€ã«
- ã300ãã¿ãŒã³ã
çãã¯ãã¯ããŒãžã£ãŒãæäŸããçµ±åã¢ãããŒãã«ãããŸãã ãããã£ãã®ã¯ïŒ
jsã³ãŒãã¯å§çž®ãããæ¡åŒµã¢ãŒãã§æé©åãããŸãã
- ãããjsã³ãŒãã®åé€
- cssã¯å§çž®ããã³æ€èšŒãããŸãã
- ãã³ãã¬ãŒãã¯ãã¯ã©ã€ã¢ã³ãåŽã§ãã§ãã¯ãå§çž®ãä¿åãããŸããã
- ãªãœãŒã¹ãç°ãªãèšèªã«ç°¡åã«ç¿»èš³
ãã®æç¹ã§ãããã¯ãŒã¯äžã«ãã£ããã¹ãŠã®ãœãªã¥ãŒã·ã§ã³ã¯1ã€ã®ããšãæäŸããGoogleã¯3ã€ã®é¢é£ãœãªã¥ãŒã·ã§ã³ãæäŸããŸãããã¯ããŒãžã£ã³ã³ãã€ã©ãã¯ããŒãžã£ãã³ãã¬ãŒããã¯ããŒãžã£ã¹ã¿ã€ã«ã·ãŒãããããã¯å¥ã ã«ããããŠäžç·ã«æ©èœããŸãã ãããŠã圌ããäžç·ã«åããšããçµæã¯åã«é©ãã¹ããã®ã§ãïŒ
JSã³ãŒãã倿Žãã
æåã«å§ããã®ã¯ãã©ãã§ãjsäŸåé¢ä¿ã§ãã... goog.require ...ããã¯é·ãæéã§ãçŽ1ãæããããŸããã ãã®çµæãæ°ããjsãã¡ã€ã«ãšããžãã¯ã®æ¥ç¶ãåçŽåãããŸãããäŸåé¢ä¿ãç»é²ããã ãã§ãã·ã¹ãã ã¯å¿ èŠãªã³ãŒããèªåçã«ããŒãããŸãã
Googleã¯ããã®æè¡ã䜿çšããããã®ããŒã«ãæäŸããŠããŸããããéçºè ãçŽæ¥ïŒG +çµç±ã§ïŒEclipseã§èšè¿°ããå®å šãªã¯ããŒãžã£ãŒãµããŒããæã£ãŠãããšå ±åãããããGoogleèªäœã«ãããŸãã
Eclipseçšã®ã¹ã¯ãªããããã«ãã€ãã³ãã®åœ¢åŒã§äœæããŸãããããã¯ãjsãä¿åãããã³ã«ãã¯ããŒãžã£ãŒã®deps.jsäŸåé¢ä¿ãã¡ã€ã«ãæŽæ°ããŸããã åœæã¯ããããžã§ã¯ãå šäœïŒTomcatãmysqlãmqãããŒã«ãŒãªã©ïŒãåéçºè ã®ãã·ã³ã«ãã£ãŠåŒãäžãããã6ã®ã¬ãã€ãã®ã¡ã¢ãªãæ¶è²»ãããããžã§ã¯ãå šäœãéå§ããã®ã«çŽ1.5ã2åå¿ èŠã§ããã nginxãä»ããŠjsãcssãimgãã¡ã€ã«ã®ããŒã«ã«ãããã·ã«éãã«ç§»è¡ããéçºãå€§å¹ ã«å éããŸããã ãããŠãæ¥é£ãTomcatã蹎ã£ãŠãã¡ã€ã«ã®æŽæ°ãéå§ãããŸã§åŸ ã€ã®ã¯éåžžã«é¢åã§ããã
CSSããGSSãžã®ç§»è¡
GSSã¯LESSã«ãããã䌌ãŠãããç¬èªã®ç¹åŸŽããããŸãã
䞊è¡ããŠãcssããgssã«åãæ¿ããŸããã ããããçš®é¡ã®éæšæºå±æ§ã«ã¯å€ãã®åé¡ããããååãšããŠcssãgssã«åå倿Žããã ãã§ååã§ãã ç§ããå§ãããå¯äžã®ããšã¯ãããã«cssãã¢ããã°ã¬ãŒãããŠmixinãå®è£ ããããšã§ãã ã©ã®gssãã¡ã€ã«ã倿Žããããã远跡ããgss-> cssã³ã³ãã€ã©ãŒãåŒã³åºãå¿ èŠããããšããäºå®ã«ã¯ãŸã åé¡ããããŸããã
倧è±ã®ç§»è¡
SOYãšã¯äœã§ããïŒ ãããã¯ãhtmlã«äŒŒãæ§æã§èšè¿°ãããjsã³ãŒãã§ã³ã³ãã€ã«ããããã³ãã¬ãŒãã§ãã ããã«ããããã¹ãŠã®ãã³ãã¬ãŒãã®éèŠãªã¯ã©ã€ã¢ã³ãåŽã®ãã£ãã·ã¥ã解決ãããŸãã
ããããã¹ãŠã®é©æ°ãšãšãã«ãå€ããã³ãã¬ãŒããSOYïŒClosure TemplatesïŒã«ç¿»èš³ããŸããã SOYã¯ãã³ã³ãã€ã©ãŒãäŸåé¢ä¿ïŒgoog.requireïŒãé 眮ãããããèŠèŠéšåãããžãã¯ããå®å šã«åé¢ããjsã³ãŒãã«ç°¡åã«çµ±åããããšãã§ãããããããã°ã©ããŒã«ãšã£ãŠåãªãããšã話ã§ããããšã倿ããŸããã SOYã«ã¯åå空éããããããJavaã®ããã«ãåå空éããã©ã«ããŒã®åœ¢ã§ãã¡ã€ã«ã·ã¹ãã ã«åæ ããããšããã«èããŸããã
倧ããªåé¡ã¯ããã¹ãŠã®ãã¡ã€ã«ã®ã³ã³ãã€ã«æéã§ã-Core i7 3770Kã§ã¯ããã¹ãŠã®gssãšsoyãã³ã³ãã€ã«ããã®ã«20ç§ããããŸãã ãã®ããã倿Žãããgssãšsoyã远跡ãããããã®ã¿ãã³ã³ãã€ã«ããã¹ã¯ãªãããäœæããŸãã-äœããã®çç±ã§ãGoogleã¯ãã®ãããªããŒã«ããããªãã¯ãã¡ã€ã³ã§æäŸããŠããŸããã
æŽæ°ïŒèšäºã®å·çéçšã§ãæé©åãå°å ¥ãããã³ã³ãã€ã«æéïŒãããã°ã¢ãŒãïŒã¯8ã9ç§ã«ãªããŸããã
çµ±äž
ãããã®åé¡ã解決ããåŸãç§ãã¡ã¯æåŸã®èª²é¡ã«çŽé¢ããŸãããããã3ã€ã®ãã¯ãããžãŒãã¹ãŠã飿ºãããŠãµã€ããé«éåããããããã¹ãŠã®ç®çãéæããããšã§ãã
ããããããã§ããã€ãã®ãã¥ã¢ã³ã¹ãåºãŠããŸããïŒcssã»ã¬ã¯ã¿ãŒãæ©èœããã«ã¯ã 'display1'ãçŽæ¥åŒã³åºãã®ã§ã¯ãªããjsã®ã©ãã§ãgoog.getCssNameïŒ 'display1'ïŒã³ã³ã¹ãã©ã¯ãã䜿çšããå¿ èŠããããŸãã ã€ãŸãã$ element.addClasssïŒ 'display1'ïŒã$ element.addClasssïŒgoog.getCssNameïŒ 'display1'ïŒïŒã®æ§æã«çœ®ãæããå¿ èŠããããŸããã ããã«ã倿°ãšå€æ°ã®ã»ã¬ã¯ã¿ãŒãgoog.getCssNameïŒ...ïŒå ã§äœ¿çšããããšã¯ã§ããŸããã ã€ãŸããgoog.getCssNameïŒ 'display1 clearfix'ïŒãããŒã«ããã¯ããªãããã«ãgoog.getCssNameïŒ 'display' +å€ïŒã¯ããŒã«ããã¯ããŸããã ããã¯å€ãã®äžäŸ¿ããåŒãèµ·ãããŸããããã®ãããã³ã³ãã€ã«ã¹ã¯ãªãããæžãçŽãå¿ èŠããããŸããããã®ããããã¹ãŠã®å€ãã³ãŒããã衚瀺-ã+å€ããéåžžã®åœ¢åŒã«ããã«å€æã§ããªãã£ããããéå§çž®CSSã»ã¬ã¯ã¿ãŒã®å¯èœæ§ããµããŒãããŸããã SOYèªäœã§ã¯ãå§çž®ãããã¯ã©ã¹ãšèå¥åã{css display1}ãªã©ã匷調衚瀺ããå¿ èŠããããŸãã æåã®æ®µéã§ã¯ãã³ãŒããŒã¯å®å šã«å°çã§ãã...æ§æã®åŒ·èª¿è¡šç€ºãåãããœãªã¥ãŒã·ã§ã³ãæ¢ããŠããŸããããæçµçã«ã¯ãEclipseçšã®ãã©ã°ã€ã³ãèŠã€ããŠãå€ãã®åé¡ã解決ããŸããã ïŒhttp://www.normalesup.org/~simonet/soft/ow/eclipse-closure-templates.en.htmlïŒã
圌ã«ã§ããããšïŒ
- SOYã®åŒ·èª¿è¡šç€ºãšæ§æãã§ãã¯
- ãã¹ãããããã³ãã¬ãŒãã®æ£ããåŒã³åºãã確èªããŸãã æ¬ èœããã³è¿œå ã®ãã©ã¡ãŒã¿ãŒ
- CtrlããŒã䜿çšãããã³ãã¬ãŒãã®ã¯ã€ãã¯ããã²ãŒã·ã§ã³
äžè¬çã«ããã®ãã©ã°ã€ã³ã¯ã³ãŒããŒã«ãšã£ãŠå€©åœã®ããã«ãªããŸããã SOY-æãé¢ãã ãã§ãªãã責任ãå¢å€§ãããŸãã å°ãåŸã«ãæååãæ°å€ã«å€æããŠäžžãããªã©ãå¿ èŠãªã¡ãœããã远å ããããã«ã倧è±ã³ã³ãã€ã©çšã®ãã©ã°ã€ã³ãäœæããŸããã SOYã®äžå¹žã¯å§ãŸã£ãã°ããã§ãã ããã«ããµãŒããŒãã³ãã¬ãŒããæ°ãããã³ãã¬ãŒããšã³ãžã³ã«è»¢éããŸããã ãããè¡ãã«ã¯ããããã¯ãšç¿»èš³ããµããŒãããããã«ã¯ã©ã¹ãååºŠäœæããå¿ èŠããããŸããã å€ããã³ãã¬ãŒããæ°ããå€èгã«èªåçã«å€æããããã«ãã³ã³ããŒã¿ãŒãäœæããŸãã...
Googleã¯ãSOYãç°ãªãèšèªã«ç¿»èš³ããå¥ã®æãæãããšã§ãããã¹ãŠãããã«ããããšèšããŸãã ããŒã«ãããå Žåã¯ããã¹ãŠãæ¬åœã«åé¡ãããŸãã:)ããããã£ãŠãxlfãã¡ã€ã«ãŸãã¯å€§è±ãã¡ã€ã«ãããã¡ã€ã«ãçæã§ããŸãã ãããŠãããã§ã¯ãå€ã翻蚳æžã¿ã®xlfãååŸããŠãããã«ç¿»èš³ãããŠããªããã®ã远å ããããšã¯ã§ããªãããšã倿ããŸãã...ããã¯åãªãæªå€¢ã§ãïŒ ãã®åœ¢åŒã§äœæ¥ããããã®ããã€ãã®ã²ã©ããŠãŒãã£ãªãã£ã»ããããããŸãããå¿ èŠãªãã®ã¯ãããŸãããåãã¬ãŒãºã«ã¯IDããããŸãããGoogle Closureã®ãžã§ãã¬ãŒã¿ã¯ã©ã¹èªäœãFingerprintãšåŒã°ããã»ã©é«åºŠã«çæãããŸã...ãã®åé¡ã解決ããããšãã§ããŸããã
ãŸããå§çž®ã®æºåãå¿ èŠã ã£ãããããã¹ãŠã®jsp jsããŒãžããã³ãŒããåå¥ã®ã¢ãžã¥ãŒã«ã«åé€ããå¿ èŠããããŸãã...
æåŸã®ç Š
ãã®ãããæ ã®å§ãŸãããããã«7ãæãçµéããå¿ èŠãªãã¹ãŠã®ããŒã«ã3ã€ã®ãã¯ãããžãŒéã®ãã¹ãŠã®å¿ èŠãªæ¥ç¶ããããŸããããã¢ããã³ã¹ã¢ãŒãã§ã®å§çž®ã¯æ©èœããŸããã§ãã:)ã¢ãŒãã§ã¯ãå€éšãèšè¿°ããŠæ¥ç¶ããå¿ èŠããããŸããã jQueryãšãã©ã°ã€ã³ãçè§£ããŸããããSOYã®jsåŒã³åºããããã€ãã®éå§çž®åŒã³åºãã«çœ®ãæããå¿ èŠãããããšãããããŸããã GCã¯onclickã§çŽæ¥åŒã³åºãã䜿çšããããšãæšå¥šããŠããªãããšãçè§£ããŠããŸãããããžã§ã¯ãã0ããGCã«æžã蟌ãå Žåãããã¯ç°¡åã§ãããå€ãã³ãŒãã倧éã«ããå Žåã¯ããã»ã©ç°¡åã§ã¯ãªããããexport.jsãã¡ã€ã«ãäœæããŸãããæ¬¡ã®ãããªå€éšåŒã³åºãã®ãããã·ãç»é²ããŸããã
global_export["showLoginDialog"] = function(event, elem) { //... . };
ãã®ãããªãšã¯ã¹ããŒãããããã¹ãŠã®åŒã³åºãããã©ãŒã 颿°ïŒeventãthisã...ïŒã®æšæºãèšå®ããŸããã€ãŸããæåã®2ã€ã®ãã©ã¡ãŒã¿ãŒã¯å¿ ãåãã§ããã®åŸã¯äœã§ãã§ãã
ãšã¯ã¹ããŒãã§ãã®åé¡ã解決ãããšïŒåŒã³åºãåæ°ã¯20ã30åã§ããããšã倿ïŒãGCCïŒGoogle Closure CompilerïŒã§å¥ã®æ²ããäºå®ãæããã«ãªããŸããã GCCã¯ãåŒçšç¬ŠããŸãã¯ãã§ãåºå®ããããŠããªããã¹ãŠãã¢ããã³ã¹ãã¢ãŒãã§å§çž®ãããããå€éšãã©ã°ã€ã³ãžã®åŒã³åºããä¿®æ£ããå¿ èŠããããŸããããæå€§ã®å€±æã¯ãæç¢ºã«ææžåãããAPIå§çž®åŸã«åŽ©å£ããåã³ç¡æéã«ç§ãã¡ãæãæ»ããŸãã...
ããã§äœè«ãããå¿ èŠããããŸããGoogleèªäœã¯JSONãªããžã§ã¯ãã§ã¯ãªãé åãæž¡ããŸãã æåã¯ProtoBufã§ãããšèããŸããã詊ããŠã¿ããšãããããã§ã¯ãªãããšãããããŸãããé åã®åã€ã³ããã¯ã¹ãç¹å®ã®ãã£ãŒã«ãã«é¢é£ä»ããã ãã§ãã ã©ãããããµãŒããŒããããŒã¿ãéãããŠãããšããããã¯ãããMessageFactoryã«éããŸããMessageFactoryã¯ã¡ã¿ããŒã¿ã«åºã¥ããŠïŒç¹å®ã®ã¿ã€ãã®ã¡ãã»ãŒãžã§ã¯ProtoBufã¡ã¿ããŒã¿ãå¯èœã§ãïŒãèŠçŽ ããªããžã§ã¯ãã«æ¥ç¶ããŸãã Googleã®ããã«è¡åããã°ããã¡ãããå§çž®ãšæé©åã®åŸã«åé¡ã¯çºçãããé åã®æäœãé«éã«ãªããããé床ããåäžããŸãïŒã
ãªãGoogleã®ããã«æ¯ãèããªãã£ãã®ã§ããïŒ çç±ã¯ããµããŒãããå¿ èŠãããå€ãã³ãŒããããããããããã§ãããããã¯æ£ããæ¹æ³ãªã®ã§ãééããªããã®ã¿ã¹ã¯ãå®è¡ããŸãã
ãœãªã¥ãŒã·ã§ã³ã®æ€çŽ¢ã¯ãGCCãããªããžã§ã¯ãã®å€ããã£ãŒã«ããïŒãæ°ãããã£ãŒã«ãåããšãã圢åŒã®åå倿ã®ããããæäŸã§ãããšããäºå®ã«ã€ãªãããŸããã ãã®æ©èœããµããŒãã§ããããã«ãµãŒããŒã³ãŒããããçŽãå§ããŸããããã®ããã5ã€ã®ãµãŒãã¹ã«å ±éã®ã¯ã©ã¹ãã¯ã©ã¹ã«å°å ¥ãããŸããã
å€èŠ³ã¯æ¬¡ã®ãšããã§ãã
public interface Constants { public static final String typeId = "typeId"; public static final String user_id = "user_id"; public static final String items = "items"; .... }
ãã«ãããåã«ãGCCãçæããããããšãã®ã¯ã©ã¹ã®ã«ãŒã«ãç¹å¥ãªãŠãŒãã£ãªãã£ã䜿çšããŸããã ãããããã¹ãŠãæºåãã§ããŠãããšæã£ããšããäœããã®çç±ã§ã¯ã©ã€ã¢ã³ãåŽã§å¿ èŠãªå±¥æŽããŒã¿ã®äžéšãããŒã¿ããŒã¹ã«jsonãšããŠä¿åããã人éã§ãããè¡ãæ¹æ³ããªãããšã倿ããŸãã...ãã£ãŒã«ãã®ååã倿ŽããŠããããŒã¿ããŒã¹ã§ã¯ãã¹ãŠãéçŸå®çã§ã倿Žããjsã³ãŒãã倿Žãããã³ã«æ°ããããããçæãããããã倿ããæ©äŒã¯ãããŸããã ããã¯å®å šãªå€§å€±æã ã£ã...ãããŠãGCCã¯å°å³ãæäŸããã ãã§ãªããå°å³ã®å€æãåãå ¥ããããšãã§ãããããå察ã®ããšããããšããã¢ã€ãã¢ãæµ®äžããŸããã Constantsã¯ã©ã¹ãååŸããŠãããã«å€æããGCCã«æž¡ãããã¹ãŠã®ã³ãŒããå§çž®ããŸããããã¯ã©ã€ã¢ã³ããµãŒããŒAPIã«é¢é£ä»ãããããã£ãŒã«ãåã«ã¯è§ŠããŸããã§ããã äžéšã®ãã£ãŒã«ãã«é¢é£ããå¥åŠãªãšã©ãŒãçºèŠãããŸã§ããã¹ãŠãé 調ã§ããã ããšãã°ããitemsããã£ãŒã«ãã¯åºåãã¡ã€ã«ã®ãitemsãã®ãŸãŸã§ããã¯ãã§ãããããitems1ãã«ååã倿ŽãããŸããã ç°¡åãªäŸã§ã¯ãã¹ãŠãæèšã®ããã«æ©èœãããããå°é£ã¯äŸåé¢ä¿ã倿ããããšãé£ããããšã§ããã GCCãœãŒã¹ãååŸããŠãããã°äžã§å®è¡ããå¿ èŠããããŸããããåŒçšç¬ŠïŒãŸãã¯ãïŒã<property_name>ãã§ããããã£åãã©ããã«èšåãããšãã³ã³ãã€ã©ã¯ã¢ã€ãã ã§ãã£ãŠã倿°ã®ååã倿ŽããŸãïŒ ãGCCãã©ãã«ãŒã«ãã°ãäœæããã³ã¡ã³ãã«åäžè¡ã®ãããã远å ããã®ã§ãGCCãåæ§ç¯ãããããžã§ã¯ãå šäœãæ£åžžã«å§çž®ããŸããã
ãœãŒã¹ããã
次ã«ãå§çž®ããæé©åãããçè§£ã§ããªãabFã®ããŒããçè§£ããããã«ãœãŒã¹ããããå°ç¡ãã«ããŸããïŒ...ãã®ãããäœããã®çç±ã§GCCãæåŸã«å§çž®ã¢ãžã¥ãŒã«ã远å ã§ããªããããç¬èªã®ãŠãŒãã£ãªãã£ãäœæããå¿ èŠããããŸãã
//@ sourceMappingURL= ...
ããŸããç§ãã¡ã¯ç®æšã«åãã£ãŠç²ãæãŠãŠããã®ã§ãããã¥ã¡ã³ãã§ãã®é
ç®ãçç¥ããŸããïŒè²§åŒ±ïŒã
ãŸãšã
çµæãšããŠåŸããããã®ïŒ
éå§çž®1.6 MB jsã³ãŒã+ 1.4 MBãã³ãã¬ãŒãã3.0 MB
éåžžã®å§çž®ã¢ãŒãã®38ã¢ãžã¥ãŒã«ã®ééã¯zip 445Kbã§ 2830 KB ã§ã
é«åºŠãªå§çž®ã¢ãŒãã®38ã¢ãžã¥ãŒã«zip 266KBã§ 1175 KB
12ãæãè²»ããããšããŠãããã®ãµã€ãã¯æ¬åœã«æ©ãåäœãå§ããŸããã åæã«ãç§ãã¡ã¯ä»äºã§èª²é¡ã解決ãããã£ãããšç®æšã«åãã£ãŠåããŠããŸãã...
ãã®ã¹ããŒãªãŒå šäœãæžãããŠããã®ã§ãããããã¹ãŠã®äœã®åããçµæã«å€ãããã©ãããæ³åã§ããŸãã GCã©ã€ãã©ãªã§ãããžã§ã¯ããéå§ããå Žåãåé¡ã¯å°ãªããªããŸãããæ¢ã«å€§éã®å€ãã³ãŒããããå Žåã¯ããã®ããã»ã¹ãé ãããããšãã§ããŸãã
ãããŠãã³ãŒããŒã«SOYã«é¢ããããã¥ã¡ã³ããäœæãããŠã圌ãããã«äŸãšæšæºçãªãœãªã¥ãŒã·ã§ã³ãæžãããã«ããããšã§ã圌ã¯ããæ©ãé©å¿ããçè§£ããã®ã«åœ¹ç«ã¡ãŸãïŒã³ãŒããŒã«ãããš:)
PSïŒèå³ã®ããæ¹ã¯ããã¹ãŠã®ããã¥ã¡ã³ããGoogleããã¥ã¡ã³ãã«ããã°ãJIRAã«ä¿ç®¡ããŠããŸãã
ããŒã«ããã
GCLãæäœããããã®ããŒã«ã®å®å šãªã¹ã¿ãã¯ãéãã®ã¯ãªãã§ããïŒ
ãŸãããªãŒãã³ãœãŒã¹æè¡èªäœã¯ãæŸèæããŒã«ãªãã§ã¯ã誰ã«ãanyoneããŸããã§ããã ãããŠããããã®è§£æ±ºçã圹ç«ã€å€ãã®çŽ æŽããããµã€ããããããšãç¥ã£ãŠããŸãã ãŸããäžè¬çã«ãç§ã¯ã€ã³ã¿ãŒããããå°ãè¯ããããã ãã§ã:)
ããã§ã¯ãClosure Platformããããã€ããããã«äœãå¿ èŠã§ããã ããã¯ãã¹ããããžã§ã¯ãã§ãããéçºãéå§ããGCLã®æ©èœã瀺ãããã®ããŒã¹ãã€ã³ãã§ãã
OSïŒLinux OSãææªã®å Žåã¯OS XïŒBSDïŒã éåžžã®ã·ã§ã«ãäžè¶³ããŠãããããWindowsãã¡ããªå šäœïŒããããªãã:)ãæšªåãã«ãªããŸãã
Java 1.6以éãantãbash / shãããã³pythonã
ã»ãšãã©ã®ã¹ã¯ãªããã¯bashã§èšè¿°ãããäžéšã¯javaã§èšè¿°ãããŠããŸãã
ãªãPythonã§ã¯ãããŸãããïŒ ç§ã¯åœŒã奜ãã§ã¯ãªãããã§ã:)
ããã§ã¯å§ããŸãããã
ã¯ã€ãã¯ã¹ã¿ãŒã
git clone github.com/DisDis/ClosurePlatform.git
cd ClosurePlatform
ã¢ãª
ãã©ãŠã¶ãŒã§èµ·åããŸãWebUI / index.html
ãããžã§ã¯ãæ§é
ãã詳现ã«ã
CPãããžã§ã¯ãã®æ§é ïŒ
- src-JavaãœãŒã¹ã¯ããã«æ ŒçŽããå¿ èŠããããŸããäŸã§ã¯Constants.javaã®ã¿
- ããŒã-gssã倧è±ããã±ãŒã«ãä¿åãããŠããããŒãã
- gss-ã¹ã¿ã€ã«
- 0-definitions.gss-å®çŸ©
- * .gss-ã¹ã¿ã€ã«
- allowed.cfg-èš±å¯ããããã©ã¡ãŒã¿ãŒ
- allowed_prop.cfg-èš±å¯ãããããããã£
- fixed.cfg-å§çž®ãããŠããªãåå
- .timestampã¯ãæåŸã«æåããgssã³ã³ãã€ã«ã®æå»ãä¿åããäžæãã¡ã€ã«ã§ã
- ãã±ãŒã«-xlf翻蚳
- * .xlf-翻蚳
- empty.xlf.template-空ã®ããŒã«ã©ã€ãºçšã®ãã³ãã¬ãŒã
- ãã³ãã¬ãŒã-ãã³ãã¬ãŒã
- ïŒåå空éïŒ-ãã³ãã¬ãŒããžã®ãã¹
- global.properties-ã°ããŒãã«ãã³ãã¬ãŒã宿°
- .timestampã¯ã倧è±ãæ£åžžã«ã³ã³ãã€ã«ãããæåŸã®æéãä¿åããäžæãã¡ã€ã«ã§ã
- gss-ã¹ã¿ã€ã«
- ããŒã«-ããŒã«
- WebUI-ã«ãŒããšããŠWebãµãŒããŒã«ç§»åãããã®ïŒJavaéçºè
ã®å Žåãããã«ç²ŸéããŠããïŒ
- js-ã³ãŒã
- ããŒã-ã³ã³ãã€ã«ãããããŒãããŒã¿
- css
- js-ã³ã³ãã€ã«ããããã³ãã¬ãŒã
- imgãdata-ããŒããåçããã®ä»ãã¹ãŠã®ããŒã¿ã
- * .html-stanichki
- build.soy.xml-ãããã¯ãããŒã«ãããã®èµ·åãç°¡çŽ åããantaã®ã¿ã¹ã¯ã§ãã
ã«ã¹ã¿ãã€ãº
toolsãã©ã«ããŒã«ã¯config.propertiesãã¡ã€ã«ããããŸã
ãªãå¿ èŠãªã®ãïŒ
TIMESTAMP_FNAME=".timestamp" DEFINITION_GSS="0-definitions.gss" THEMES_PATH=$DIR/../themes THEME_LOCALES="en,ru" LOCALE_SOURCE="en" WEB_ROOT_PATH=$DIR/../WebUI WEB_THEMES_PATH=$WEB_ROOT_PATH/themes TOOL_LOCALE_PATH=$DIR/cl-templates/extractor TOOL_MERGE_PATH=$DIR/merge-xlf #SOURCE MAP config SOURCE_MAP_ROOT=http://sourcemap.cp.com SOURCE_MAP_FULLPATH=$SOURCE_MAP_ROOT/js/module/__THEME__/__LOCALE__/ MODULE_PATH=$WEB_ROOT_PATH/js/module
$ DIRã¯ããããã®èšå®ã䜿çšããã¹ã¯ãªãããã©ã«ããŒã§ã
DEFINITION_GSSãã©ã¡ãŒã¿ãŒã¯ãå®çŸ©ãé 眮ãããgssãæ åœããŸãã
THEMES_PATH-ããŒããã©ã«ããŒãžã®ãã¹ïŒã³ã³ãã€ã«ãããgssããã³soyã§ã¯ãªãïŒ
THEME_LOCALES-ãµããŒããããŠããããŒã«ã©ã€ãºã®ãªã¹ã
LOCALE_SOURCE-倧è±ã§æžãããããã¹ãã¯ã©ã®ãã±ãŒã«ã§
WEB_THEMES_PATH-ã³ã³ãã€ã«ãããgssãšsoyã远å ããããã©ã«ããŒ
SOURCE_MAP_ROOT-ãœãŒã¹ãžã®ãã¹ãå¿ èŠã«å¿ããŠåŸã§nginxã§ç°¡åã«ã©ããã§ããŸãã
SOURCE_MAP_FULLPATH-ããã¯ãç¹å®ã®éå§çž®ãã¡ã€ã«ãžã®ãã«ãã¹ã§ã
MODULE_PATH-ã¢ãžã¥ãŒã«ãžã®ãã¹
ä»ã®ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã¯ããã»ã©éèŠã§ã¯ãããŸããã
EclipseãŸãã¯å¥ã®IDE
SOYã®ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããŸã ã Eclipseã®ãã©ã°ã€ã³ã䜿çšããŸã ã
SOYãã¡ã€ã«ã§ã¯ãZenCondingã¯æ£åžžã«æ©èœããŸãã
ã€ãã³ãã远å ããŠãã¡ã€ã«ã倿Žããant soy_updateãåŒã³åºããŸã
ããŒã«ãªãŒãŒã·ã§ã³
æåã«ããŒã«ã©ã€ãºãè¡ããŸãã
2ã€ã®æ¹æ³ããããŸããåææ®µéã§ã¯ã空ã®ãã³ãã¬ãŒãempty.xlf.templateã䜿çšããŠãé©åãªãã±ãŒã«ã«ã³ããŒããŠååã倿Žããããšãã§ããŸãã ããšãã°ãen.xlfãã¿ãŒã²ããèšèªãã©ã¡ãŒã¿ãç®çã®ãã©ã¡ãŒã¿ã«å€æŽããå¿ èŠãããã®ã¯ããªãã ãã§ãã
ãã ããããã¹ãã倧è±ã«ç¿»èš³ããæºåãã§ããããcreate.translate.shãå®è¡ããŸã
ãã®ããŒã«ã¯ããã¹ãŠã®ãããã¯ãã¹ãã£ã³ããåãããã¯ãã倧è±ãååŸãããããããxlfãã¡ã€ã«ãäœæãããã®åŸãå€ãxlfãã¡ã€ã«ãšdescãäžèŽãã翻蚳ãååŸããäžèŽãèŠã€ãããªãã£ãæ°ãããã¡ã€ã«èŠçŽ ã«è»¢éããŸãdescã«ãã£ãŠã倱ããã翻蚳ã®ãã¡ã€ã«.lost.xlfã«å ¥åãããŸãã ãããã¯æäœæ¥ã§é©åãªå Žæã«ç§»åãããã翻蚳ãäžèŠã«ãªã£ãå Žåã¯åé€ããå¿ èŠããããŸãã
ã¯ãããã®ãããªæŸèæã ããç°¡åãªæ¹æ³ãæäŸã§ããå Žåã¯ããã®ã¹ããããåãã§ç°¡çŽ åããŸãã éåžžã«ãŸããªã®ã§ãæé©åã®äœå°ããããŸãã
ãã ããMac OSã§ã¯ããã®é ç®ã¯æ©èœããŸãã:)
GSSãšSOYã®ã³ã³ãã€ã«
compile.templates.shã¹ã¯ãªããã¯ã倿ŽãããgssãšsoyãèŠã€ãããããã®ãã¡ã€ã«ãããã«ã³ã³ãã€ã«ããŸãã éåžžã«é »ç¹ã«ããŸãããŸãã¯IDEãä»ããŠèªåçã«èµ·åããŸãã ã¹ã¯ãªããã¯ããããã°ãšãªãªãŒã¹ã®2ã€ã®ã¢ãŒãã§åäœããŸãã
ãããã°ãã
圌ã¯äœãããŠããŸããïŒ .timestampãã¡ã€ã«ã倿Žãããæéã«é¢é£ããŠå€æŽããããã¡ã€ã«ã®ãã¹ãŠã®ãããã¯ãã¹ãã£ã³ããããããã³ã³ãã€ã«ãªã¹ãã«è¿œå ããŸãã
åæ§ã®cssãã¡ã€ã«ãgssãã¡ã€ã«ããšã«äœæãããååã¯å§çž®ãããŸããã 倧è±ã«ã€ããŠãåæ§ã§ãã
ãªãªãŒã¹
ãªãªãŒã¹ã¢ãŒãã§å®è¡ããã«ã¯ãã¹ã¯ãªããã®èµ·åæã«RELEASEãã©ã¡ãŒã¿ãŒãæå®ããã ãã§ãïŒcompile.templates.sh RELEASE
ãã®å Žåããã¹ãŠã®ïŒå€æŽããããã©ããã«é¢ä¿ãªãïŒgssã¯1ã€ã®compact.cssã«ã³ã³ãã€ã«ããããã¹ãŠã®ååãå§çž®ãããŸãã ãã¹ãŠã®SOYã¯ãã»ã¬ã¯ã¿ãŒåãååŸããåå¥ã®ãã¡ã€ã«ã«ã³ã³ãã€ã«ãããŸãã
宿°
æ¢ã«è¿°ã¹ãããã«ããªããžã§ã¯ãã®äžéšã®ããããã£ãå§çž®ã§ããªãå ŽåããããŸããããšãã°ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®çžäºäœçšã§ãã ããªãã¯ã°ãŒã°ã«ã®ããã«æ¯ãèãããšãã§ããŸãããç§ã¯ä»ã®èª°ããã°ãŒã°ã«ã®ããã«æ¯ãèããšããæ±ºå®ãèŠãããšã¯ãããŸããã
ãµã³ãã«ãããžã§ã¯ãã§ã¯ãsrc / com / example / utils / Constants.javaããååŸããjavaãã¡ã€ã«ããéå§çž®ããããã£ã®ããããçæããŸã
ãã®ã¹ã¯ãªããã¯ãconstantsToMap.shã®çæãæ åœããŸãããã®ãã¡ã€ã«ã¯ãConstants.javaãã¡ã€ã«ãååŸãããã®ãã¡ã€ã«ã«property.in.mapãã¡ã€ã«ãäœæããŸãã
宿°ã®ååãã³ã³ãã³ããšäžèŽããããšã確èªããªããïŒitems = "items"ïŒã
property.in.mapã¯ã
< >:< >
ç§ãã¡ã®å Žåãå€ãå€ãšæ°ããå€ã¯åãã§ãã æšæºã®é ä¿¡ã§ã¯ãGCCã¯å®æ°ã誀ã£ãŠåŠçããŸã;ãã©ãã«ãŒãšãããã«ãã°ããããŸãã
ãã¹ããããžã§ã¯ãã«ã¯GCCã®ããããé©çšãããããŒãžã§ã³ããããŸãããããããã€ã¡ã€ã³ãã©ã³ãã§åãå ¥ãããããã¯ããããŸããããã³ãã¥ããã£ã¯ãããã¹ããŒãã¢ããã§ããŸã;ïŒ
ãã®ãã¡ã€ã«ã¯ã©ãããã§ãçæã§ããŸããJavaã®ãœãªã¥ãŒã·ã§ã³ãæäŸãããŠããäŸã®å ŽåãããŒã¿åœ¢åŒã¯ç°¡åã§ãã
ãšã¯ã¹ã¿ãŒã³
jQueryãå§çž®ãããªããã©ã°ã€ã³ãªã©ã®å€éšã³ãŒããšããåãããã«ã¯ããã¢ãžã¥ãŒã«ã¢ã»ã³ããªãã»ã¯ã·ã§ã³ã§æ¥ç¶ããExternãç»é²ããå¿ èŠããããŸãã
ãã¹ãŠã®externãã¡ã€ã«ã¯tools / cl-externsãã©ã«ããŒã«ä¿åãããŸã
ãã®äŸã§ã¯ããããžã§ã¯ãçšã®ããŒã«/cl-externs/example.jsããããŸãã詳现ã¯ãªãã£ã¹ã§ç¢ºèªã§ããŸãã GCCããã¥ã¡ã³ã ã
ã¢ãžã¥ãŒã«ã®çµã¿ç«ãŠ
tools / gcmoduleãã©ã«ããŒãšgcmodule.jarã¢ããªã±ãŒã·ã§ã³ããããæ åœããant soy.create.modulesãå®è¡ããæ¹ãç°¡åã§ã
éå§ããåã«ããã¹ãŠã®gssãšå€§è±ããªãªãŒã¹ã¢ãŒãã§åéããå¿ èŠããããŸãã ããã¯ãant soy.compile-RELEASEã䜿çšããŠå®è¡ã§ããŸãã
ã¿ã¹ã¯ãç°¡çŽ åããããã2ã€ã®ã¢ã¯ã·ã§ã³ãåäžã®ã³ãã³ãã«ããã«ã¯
ant check.modules
è€æ°ã®ãã¡ã€ã«ãŸãã¯ãã©ã«ããŒãçµã¿åãããŠã¢ãžã¥ãŒã«ã«ããããšãã§ããŸãã ã¢ãžã¥ãŒã«ã¯ä»ã®ã¢ãžã¥ãŒã«ãªã©ã«äŸåããå ŽåããããŸãã ãµã€ãã®å ±ééšåãåå¥ã®ã¢ãžã¥ãŒã«ã§éžæãããã¹ãŠã®ããŒãžã«åå¥ã®ã¢ãžã¥ãŒã«ãäœæããããšããå§ãããŸãã ãªããããè¡ãå¿ èŠãããã®ãââã以äžã«èª¬æããŸãã
ã¢ãžã¥ãŒã«ãæ§æããããã®config.cfgãã¡ã€ã«ããããŸã
ãªããããã¹ã¯ãªããã§ã¯ãªãã®ããæåã¯bashã§æžãããã£ãã®ã§ãããé åã®ãœãŒãã®ããã«éåžžã«é£ããããšãããããŸããã
ããã°ã©ã ã®æ¬è³ª-config.cfgãããã©ã«ããŒãšãã¡ã€ã«ã®ãªã¹ããååŸããGoogleããŒã«ã䜿çšããŠäŸåé¢ä¿ããªãŒãçæããã¢ãžã¥ãŒã«ããšã«äžŠã¹æ¿ããŠããã³ã³ãã€ã©ãŒã«æž¡ããŸãã ããã¯ãéåžžã®å§çž®ã¢ãŒãã§è¡ãããŸããã¢ããã³ã¹ãã¢ãŒãã§ã¯ãã³ã³ãã€ã©ãŒèªäœãäŸåé¢ä¿ãæ§ç¯ã§ããŸãããGCLã§ããã«éå§ããªããããžã§ã¯ãã®å Žåãããã¯éçŸå®çã§ãã ãããã£ãŠããããžã§ã¯ãã®ç§»è¡ãã§ãŒãºã§ã¯ãéåžžã®å§çž®ã䜿çšããŸããããã§ããã¡ã€ã«ãç®çã®é åºã§æç¢ºã«ãã£ãŒãããå¿ èŠããããŸãã éåžžã®å§çž®ã¢ãŒãã«åãæ¿ããæ¹æ³ã«ã€ããŠã¯ã以äžã§èª¬æããŸãã
ããã§æ³šæãã¹ãããšã1ã€ãããŸãã1åã®å®è¡ã§1ã€ã®ãããã¯ã«å¯ŸããŠ1ã€ã®ãã±ãŒã«ããçæã§ããŸããããæ®å¿µãªããå æããã®ã¯ç°¡åã§ã¯ãããŸããã ãã ããããŸããŸãªãã©ã¡ãŒã¿ãŒã§å®è¡ããŠããã®åé¡ã解決ã§ããŸãã
ãã®ããããã¹ããããžã§ã¯ãã§ã¯ãWebUI / js / module / ru / *ãã©ã«ããŒå ã®ã¢ãžã¥ãŒã«ã®ã¢ã»ã³ããªãéå§ããåŸãåãã¡ã€ã«ã®ã¢ãžã¥ãŒã«ãšçæããã³åŠçãããïŒantãå®è¡ããå ŽåïŒãœãŒã¹ããããæ£åšããŸãã
åºåã«ã¯property.out.mapãã¡ã€ã«ãå«ãŸããŸããããã¯ããã£ãŒã«ãåã®å€æŽã®ããããå«ããã¡ã€ã«ã§ãã
< >:< >
config.cfg
ãããã£ãŠãæ§æãã¡ã€ã«ã¯éåžžã®JSONãªããžã§ã¯ãã§ãã
{ options:<>, modules:[<>] }
èšå®ã¯äœã§ããïŒ
{ defines:{ /* , */ "LANG":"ru",/* */ "THEME":"default",/**/ "OPTIMIZATIONS": /* */ /*"SIMPLE_OPTIMIZATIONS"*/ "ADVANCED_OPTIMIZATIONS" }, deps:{ /* */ params:" -o list", workPath:"../../tools/closure/bin", exec:"python ./calcdeps.py" }, compiler:{ /* */ params:" <anchor>habracut</anchor> ", workPath:"../../tools/closure/", exec:"java -jar compiler.jar" }, moduleManager:{ /* */ path:"../../WebUI/js/module/%THEME%/%LANG%/", tree:"moduleinfo.js" }, exclude:[ "/.svn/", "/closure/base.js" ], /* */ workPath:"../../WebUI/js" }
ã¢ãžã¥ãŒã«
{ name:< >, required:[< >], files:[< >], path:[< , %THEME%, %LANG%"], exclude:[< >] }
ã³ãã³ãã©ã€ã³ããå®çŸ©ãäžæžãã§ããŸãïŒ
java -jar gcmodule -D<key>=<value> -D<key2>=<value2> -C"<Config file>"
æ§æãã¡ã€ã«ã¯çç¥ã§ããŸãã
äŸïŒ
java -jar gcmodule -DLANG=en -DTHEME=other
ãœãŒã¹ããã
ant soy.create.modulesã䜿çšããŠã¢ãžã¥ãŒã«ã®ã¢ã»ã³ããªãéå§ããå Žåãå§çž®ãã¡ã€ã«ã®ãããã®åŠçãèªåçã«éå§ãããŸããã
parseMap.shã¹ã¯ãªããããããæ åœããŸã
圌ã¯ããã©ã«ããŒå ã§èŠã€ãã£ããã¹ãŠã®ã¢ãžã¥ãŒã«ãååŸããããããã¡ã€ã«å ã®ãã¹ãæ§æã§æå®ãããURLã«å€æŽããŸãã ãªãURLã§ããïŒ nginxã䜿çšããŠç°¡åã«ãªãŒããŒããŒãã§ãããããã¢ããªã±ãŒã·ã§ã³ãç°¡åã«ãããã°ã§ããããã§ãã
Nginxèšå®
ãœãŒã¹ãããŒã«ã«ã«ãããããœãŒã¹ããªã¢ãŒããµãŒããŒïŒ192.168.1.88ïŒã«ãããã«ãã£ãŠ2ã€ã®ãªãã·ã§ã³ããããå¿ èŠãªãã®ãéžæããŸãã
/ etc / nginx / sites-available / sourcemap.cp.com
#------------------------------- server { listen 80; server_name sourcemap.cp.com; proxy_buffering off; expires 0m; # Local map root /home/dis/workspace/CP/; # Remote map to source.cp.com #location / { # proxy_set_header Host "source.cp.com"; # proxy_pass "http://192.168.1.88:80"; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #} } #-------------------------------
sudo ln -s /etc/nginx/sites-available/sourcemap.cp.com /etc/nginx/sites-enabled/sourcemap.cp.com
hosts / etc / hosts
127.0.0.1 sourcemap.cp.com
åèµ·å
sudo service nginx restart
ããšãã°ããŒãž
äŸã§ã¯ãããŒãžã®2ã€ã®ãªãã·ã§ã³-éåžžãšãªãªãŒã¹ã
éåžžã®ããŒãžã¯ãããã°ã«äœ¿çšãããæãéèŠãªã»ã¯ã·ã§ã³ã¯cssãšã¹ã¯ãªããã«é¢é£ããŠããŸãã
<link rel="stylesheet" href="themes/default/css/0-reset.css" type="text/css" media="screen" title="no title"> <link rel="stylesheet" href="themes/default/css/1-main.css" type="text/css" media="screen" title="no title"> <script type="text/javascript" charset="utf-8"> /* Global constants */ Handlers={}; Handlers.rootPath="/"; </script> <script type="text/javascript" src="themes/default/js/renaming_map.js"></script> <script type="text/javascript" src="js/jquery/core/1.8.1/dev/jquery.js"></script> <script type="text/javascript" src="js/third_party/moment/moment.js"></script> <script type="text/javascript" src="js/closure/goog/base.js"></script> <script type="text/javascript" charset="utf-8"> goog.require('example.page.index'); </script>
ããã§ã¯ããã¹ãŠã®cssãæäœæ¥ã§åŠæ¹ããå¿ èŠããããšããäºå®ã®ã¿ã«æ³šæãæãå¿ èŠããããŸãã
ãªãªãŒã¹ããŒãžã§ã³ã®æ¹ãç°¡åã§ãã
<link rel="stylesheet" href="themes/default/css/compact.css" type="text/css" media="screen" title="compact"> <script type="text/javascript" charset="utf-8"> /* Global constants */ Handlers={}; Handlers.rootPath="/"; </script> <script type="text/javascript" src="js/jquery/core/1.8.1/jquery.js"></script> <script type="text/javascript" src="js/third_party/moment/moment.js"></script> <script type="text/javascript" src="js/module/default/ru/closure.js"></script> <script type="text/javascript" src="js/module/default/ru/template_theme.js"></script> <script type="text/javascript" src="js/module/default/ru/game.js"></script> <script type="text/javascript" src="js/module/default/ru/p_index.js"></script>
å¿ èŠãªé åºã§ã¢ãžã¥ãŒã«ã®ã¿ãæå®ããå¿ èŠããããŸãã
ãŸãšã
Javaã§ããŒããšãã±ãŒã«ããµããŒãããããã®ãã€ã³ãã£ã³ã°ã¯ãããŸããããé«éã§ã³ã³ãã¯ããªã¢ããªã±ãŒã·ã§ã³ãäœæããããã®åºçºç¹ããããŸãã GCLããã¥ã¡ã³ãã 確ãã«éåžžã«åŒ·åãªãã¯ãããžãŒã§ããããããããã®ããŒã«ãGCLã®äœ¿çšãã¹ããŒãã¢ããããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã Googleãç§ã®ããã«ããŒã«ããªãŒãã³ãœãŒã¹ã§ãªãªãŒã¹ããªãã®ã¯è¬ã®ãŸãŸã§ãã GPLv3ã¹ã¯ãªããã®ã©ã€ã»ã³ã¹ã
PS github.comã®ãã°ãšããããå¬ãã
GCCãšgmoduleã®ãã©ã°ã€ã³ã¯ãå°ãåŸã«éãããŸãã
ã®ã GCCããã¥ã¡ã³ã