Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ããã«ã¡ã¯ãã¢ããªã±ã¼ã·ã§ã³ã¨ã³ã¸ãã¢ã® id:nanto_vi ã§ããå æ¥è¡ããã Hatena Engineer Seminar #4 ã§ããTypeScript ã§å®ç¾ãã MVP ã¢ã¼ããã¯ãã£ãã¿ã¼ã³ãã¨é¡ããçºè¡¨ãè¡ãã¾ããã彿¥ã¯çæ§ãæ¸ è´ããã ããã¾ãæè¦ªä¼ã§ãæ´»çºãªè³ªçãããã ããããã¨ããããã¾ããã å 容ã¨ãã¦ã¯ãTypeScript ãç¨ããã¯ã©ã¤ã¢ã³ããµã¤ã Web ããã°ã©ãã³ã°ã®è©±ãåã³æ¢åã® JavaScript ãã¬ã¼ã ã¯ã¼ã¯ãæ¡ç¨ãããMVP (Model-View-Presenter) ã¢ã¼ããã¯ãã£ãã¿ã¼ã³ã«ã®ã£ã¨ãéçºãé²ããäºä¾ã®ç´¹ä»ã¨ãªãã¾ãã以ä¸ã«çºè¡¨è³æãå çä¿®æ£ãã¦å ¬éããã®ã§ãåç §ãã ããã èªå·±ç´¹ä» id:nanto_vi (å¤å±±ç) ã¢ããªã±ã¼ã·ã§ã³ã¨ã³ã¸ã㢠JavaScriptãPerl ã¢ã¸ã§ã³ã å°å¹´ã¸ã£ã³ãã«ã¼ãã¼ã§ã® T
JavaScript ã®ãã¹ã æ¸ããªãã¨æãããããæ¸ãããã¨ã¯æã£ã¦ããããæ¸ãã¾ã§ã®æ·å± ããããã¨é«ããªã£ã¦ãã¾ã£ãæ°ããã¦ãã人ã¸ã æå°ã®ãã¹ã æ¬è³ªçã«ãã¹ããæ¸ãã®ã«ãã¬ã¼ã ã¯ã¼ã¯ã¯ãããªãã assertion ã ãããã°ããã isomorphic ã«ããããªãã node ã® assert ã¢ã¸ã¥ã¼ã«ãã使ãã console.assert ã ãã§æ¸ããã // assert function assert(actual, expected) { console.log('.'); console.assert(actual === expected, '\nact: ' + actual + '\nexp: ' + expected); } function TestSum() { assert(1+2, 3); } // exec TestSum(); ãã¨ã¯æ®éã«
åç½®ãï¼ä½ã¨ãªãæãè¡ãã§ä½ãæ¸ããªãã¨å¿è¦ããã®ã§ãæ®´ãæ¸ãã¬ãã« ï¼ ææããªãã¦ã¤ã¾ããªã ï¼ é¢æ°åè¨èªã®ææ¥çãåãããã¨ãããæ¹ã«ã¯ãã®ãããå½ããåã®æç§æ¸çå 容ã§ãã¿ã¾ããããåãæ¥ãèªåã容æã«æ¸ãããã¨ãæ¸ãã¾ããï¼ãã®è¨äºã«ç´æ¥ã®é¢ä¿ãããï¼è³ªåãããã°ãï¼ããã«åå¿ã§ããªãå ´åãããã¨æãã¾ããï¼ãªãã¹ãçãã¾ãã誤æ¤ãªã©ã®ææãå©ããã¾ãã ãã¦ãããã°ã©ããªãã°èª°ããä¸åº¦ã¯ããªã¬ãªã¬ã»ãªãªã¸ãã«ã»ããã°ã©ãã³ã°è¨èªãä½ããããã¨ããæ¬²æ±ãæ±ãã¾ããããï¼æ±ãã¾ãããï¼ï¼ ãã®ã¨ããæååã¬ãã«ã®ææ³ï¼å ·è±¡æ§æ(concrete syntax)ã¨è¨ãã¾ãï¼ã¯ããã¨èª°ã§ã(?)èãããã¾ããããããæ¨æ§é ã¬ãã«ã§ã©ããã風ã«è¡¨ããã¦ï¼æ½è±¡æ§æ(abstract syntax)ã¨è¨ãã¾ãï¼ãã©ãåä½ããã®ãï¼æä½çæå³è«(operational semantics)ã¨
ããã§ãããããä½ãå¼ã³æ¹ããã®ï¼ ãªã«ãã ã°ãã¼ãã«å¤æ°ã«ãªããªãããã«ããä»çµã¿ã ã¹ã³ã¼ãåé¡ JavaScriptã§ã¯ã¹ã³ã¼ãï¼å¤æ°ã®æå¹ç¯å²ï¼ã¯é¢æ°åä½ï¼function(){ï½}ï¼ã«ãªãã®ãåºæ¬ã ããã¦ä¸çªå¤å´ãã©ã®é¢æ°ã®ä¸ã§ããªããã®ã¯ãã°ãã¼ãã«ã¹ã³ã¼ããã«æå±ãããã°ãã¼ãã«å¤æ°ãã¨ãªããã©ãããã§ãå©ç¨ã§ãã夿°ã«ãªãããããªãã¨ã©ããã§å¤æ°ã®ååããã¶ã£ãéãåæã«å¤ãå¤ãã£ãããã¦å¤§å¤æãããäºã«ãªã£ã¦ãã¾ãã ããã§ããã¡ã¤ã«å ¨ä½ã颿°ã§æ¬ãäºã§ã¹ã³ã¼ããçæãã¦ãã°ãã¼ãã«ã§ã¯ãªã夿°ã«ãã¦ããããã¨ãããã®ããã ãvar宣è¨ãªãã«å¤æ°ã使ãå§ããã¨ãçµå±ã°ãã¼ãã«å¤æ°ã«ãªã£ã¦ãã¾ãã®ã§æ³¨æã 次ä¸ä»£JavaScriptã ã¨letã¨ããããã©è§¦ãã¾ãããé¢ä¿ãªããã 颿°ã®åå¾ã«ãã£ã¤ãã¦ãæ¬å¼§ã¯ 颿°ã¯ä½æããã ãã§ã¯ä½ããªããªãã®ã§ã峿å®è¡ãã¦ããã¾ã
ã¯ããã« ä½ã æ¨ã§ããéçºçµé¨ãç¡ãJavaScriptã触ã£ããã¨ããªãåã§ãããã©ããã¦ãAWS lambdaã触ã£ã¦ã¿ããã£ãã®ã§ãåè¦å «è¦ããªãããã£ã¦ã¿ã¾ããã ãã§ã«ããªããªæ´»ç¨ãã¦ããããã°è¨äºãããããåºã¦ãã¾ãããæ¬è¨äºã¯æ¬å½ã«ä½ãããããªãåããã¡ãã¡æ©ããã¦ããå 容ã§ãã®ã§ãæ·±ãã¨ããã¯æå¾ ããªãã§ãã ãããããã¦èè ã®ããã³ãããå¾ ã¡ãã¦ããã¾ãã AWS lambdaã®åºæ¬çãªä½¿ãæ¹ã¯ä»¥ä¸ã®è¨äºããåç §ãã ããã AWS Lambdaãå§ãã¦ã¿ã(1).ã¦ã¼ã¶ã¼ã¢ããªã±ã¼ã·ã§ã³ããã®ã¤ãã³ããæ±ã AWS Lambdaãå§ãã¦ã¿ã(2).Amazon S3ã¤ãã³ããæ±ã ãã£ã¦ã¿ã MBAã«node.jsãã¤ã³ã¹ãã¼ã«ãã ã¨ããããç°¡åãªæ§æãã§ãã¯ã ãã§ãæå ã§ããããã®ã§ãMBAã«brewã使ã£ã¦node.jsãã¤ã³ã¹ãã¼ã«ãã¾ãã
ãã£ã¡ã«ã±ã¼ã¹ã®è¡¨è¨ã§ãããæºããã±ã¼ã¹ã¨ãã®å¯¾çã«ã¤ãã¦ã¾ã¨ãã¦ã¿ã¾ãããããã¸ã§ã¯ãå ã§è¡¨è¨ãçµ±ä¸ãããå ´åãªã©ã«åèã«ãã¦ã¿ã¦ãã ãããNo.3以éã¯ãåèªã®åºåãã«ã¤ãã¦ãªã®ã§ãsnake_caseã«ãå½ã¦ã¯ã¾ãã¾ããã 1. XMLParser â XmlParser ããã¯ããæºãã¾ãããXMLã®ããã«ããããã®é æå (Extensible Markup Language) ã並ã¹ã¦ä½ãããåèªãé åèªã¨è¨ãã¾ããé åèªã¯ããããé åèªã ã¨è¨ãäºãããããããããããã«ãè±æã®ã«ã¼ã«ã§ã¯ãã¹ã¦ã大æåã«ãã¾ãããã®ã«ã¼ã«ã¨ãã£ã¡ã«ã±ã¼ã¹ã®è¡¨è¨æ³ã¨ãè¡çªãã¦ããã®ã§ã人ããããã§æ¸ãæ¹ããã©ããã¾ãã Rule ã«ã¼ã«ãä½ãå ´åã¯ãè±æã«ã¼ã«ã«å¾ãé åèªã¯ãã¹ã¦å¤§æåã«ãããããã£ã¡ã«ã±ã¼ã¹ã«å¾ããã»ã©ã¡ãã䏿¹ã«ããªããã°ãªããªãã®ã§ãããåèªã«ãã£ã¦ãã£ããããæ¸ãæ¹ãéã£
AgularJS ã«å¯¾ããæ°æã¡ ææã¨ããã¤ã¤ã主ã«èªåãã¤ããã¨ãã¦æãã¦ãããã¨ãæ¸ããææã·ãªã¼ãºã¨ãã¦ã¯ jQueryã«ã¤ãã¦ã®ææ ãä½µãã¦èªã¿ããã ãã®å¦ç¿æ²ç·ã®ä¸ã§ããã¨ããã¶ãä»ã®èªå㯠Very Cool! ã®é ç¹ããéãã¦ããæä¸ãããã ã¨æããããã¦ãããµã«ãªããµããã¶ã£ã諸å ã«ã²ã¨ã¤ã ãè¨ãããã®ã¯ãå ±æè³ãé¤ã£ãæ¹ãã¢ããã¨ãããã¨ã ã ããã³ãã¼ãçå¼è§£: 以ä¸ã¯AngularJSã«é¢ããã¤ãããè¿°ã¹ããã¨ã«å°å¿µããããã«ãç¾ç¹ãæãã¦ããªãã ãã§ãã£ã¦AngularJSãå ¨æ¹ä½çã«è²¶ããããä½ãã¨æ¯ã¹ã¦æç¢ºã«ã¯ã½ã ã¨ãããããªæå³ã¯ãªãã ç»å㯠AngularJS: The Best Parts · Anand Mani Sankar ããã®å¼ç¨ãX軸ã«ãã www.bennadel.com 㯠AngularJS 大好ãããã è¾1. $scope ã
jQueryã§aãªã³ã¯ã«ã¤ãã³ããè¨å®ããã¢ãã³ãªæ¸ãæ¹ãæãã¦ãã ãã ãªã³ã¯ã«ã¯ãªãã¯ã¤ãã³ããè¨å®ããã¨ã æå <a href="#" onClick="jump(1);">ãã¼ã¸ï¼</a> <a href="#" onClick="jump(2);">ãã¼ã¸ï¼</a> function jump(page) { location.href = 'http://hoge' + page; } ã¨ãã¦ã¾ãããããªãã¨ãªãjQueryã§ãã¼ãæã«ã¤ãã³ããè¨å®ããæ¹ãè¯ãã®ããªã¨æã£ã¦ã以ä¸ã®ããã«ç´ãã¾ãã $(function(){ $("#one").click(function(){ location.href = 'http://hoge' + 1; }); $("#two").click(function(){ location.href = 'http://hoge' +
ãã£ããã¯ãprototype 㨠constructor 㨠__proto__ ã®é¢ä¿ãå確èªãã¦ããã¨ãã§ãããJavaScriptã¯ããã ãã©ãããã£ã¦ãAltJSãªè¨èªã®ç¶æ¿ã¯ã©ããªã£ã¦ããã ããã¨æã£ã¦è©¦ããããªãã¾ããã ã¡ãã£ã¨æ°æã¡çã«ããªãã ã宿ã«å ¥ã£ãã¿ããã«ä¿ºã¯ JavaScript ãããã£ãã£ã¦å£°é«ã«è¨ã人ãã ãããã¿ããªããããã¿ã¤ããã§ã¼ã³ã«ããç§»è²ãã¯ã©ã¹ãã¼ã¹ã®ç¶æ¿ã«æç¸ããã¦ããæèã®ãã¬ã¤ã¯ã¹ã«ã¼ãªãã ããã¿ããã«è¨ããã ãã©ããã£ãããããã©ãã»ã©ç´ æ´ããããã®ãªãã ããã¨èãã¦ãã¾ã... ãããããã¿ã¤ããã§ã¼ã³ããããªã«ç´ æ´ãããããªããnpm ã«ããã»ã¨ãã©ã®ã©ã¤ãã©ãªããã§ã¼ã³ãæ´»ããã¦ä½ããã¦ãªãçç±ã説æã§ããªãããããããããä»çµã¿ããããé¢ç½ãã¦ããå®éã®ã¡ã³ã¿ã«ã¢ãã«ã«ãã£ãããããå®ã¯ä½¿ãç©ã«ãªããªãããããªãã ----
setTimeout() vs ããã«ã¼ãä»ç¾©ãªãæ¦ãã«ãã㨠function isNativeFunction(func, name) { for (var o in func) { if (o === "toString") return false; } var match = func.toString().match(/^function (\S+)\(\)\s*{\s*\[native code\]\s*}$/); return (match && match[1] === name); } setInterval = function(){}; isNativeFunction(setInterval, 'setInterval'); // false ã§setIntervalãå½è£ ããã¦ããã調ã¹ãããã¨æ¸ãã¦ãããããããªãã¨ã¯ãªãã èªåãæ®æ®µä½¿ã£ã¦ãããã©ã¦ã¶ã¯Sa
æ¦è¦ ES2015ã象徴ããæ©è½ã§ãããã¢ãã¼é¢æ°æ§æã®å®è£ ãã¤ãã«V8ã§å§ã¾ã£ãã ç¡å颿°ãçãæ¸ããããã[3.28.31] ã¢ãã¼é¢æ°ã¯ç¡å颿°ã®çç¥è¨æ³ã§ããã ä»ã¾ã§ããæ¸ãã¦ããã®ãã var fn = function (a, b) { } ããã¹ãããªæ¸ããã var fn = (a, b) => { } ã=>ããç¢ã®ããã«è¦ãããã¨ãããã¢ãã¼ã颿°ã¨è¨ãã æ´ã«çãã§ãã ãããã [1, 2, 3].map( function (v) { return v * v } ) // [1, 4, 9] ã¢ãã¼é¢æ°ã ã¨ãããªããã [1, 2, 3].map( (v) => { return v * v } ) // [1, 4, 9] 弿°ãä¸ã¤ã®æã«ã¯ã()ããçç¥ã§ããã®ã§ãããæ¸ããã [1, 2, 3].map( v => { return v * v } )
ã¯ããã« Goè¿è¾ºãå¾å¾ãã¦ãã¦è¦ã¤ããããã°ãã¹ãã Ten Useful Techniques in Go Goãªæ¹ã ã«ã¯å¸¸èãªã®ããç¥ããªããã©ãGoåå¿è ã®ç§ã«ã¨ã£ã¦ã¯é¢ç½ãã£ãã®ã§ã¡ãã£ã¨ã¾ã¨ãã¦ã¿ãã ç´¹ä»ããã¦ããã®ã¯ä»¥ä¸ã®10åã®é ç®ã Use a single GOPATH Wrap for-select idiom to a function Use tagged literals for struct initializations Split struct initializations into multiple lines Add String() method for integers const values Start iota with a +1 increment Return function calls Convert slices,maps,et
æ¦è¦ ãã¤ã¦ã¯foræåæåå¥ã§å®£è¨ããã夿°ã¯ãforæã®ç´åã§å®£è¨ãããããã«æ¯èã£ã¦ããããåã«ã¼ãã§ã¹ã³ã¼ããå¼ãã¥ããªãããã«ä»æ§ã夿´ãããV8ã追å¾ããã ä¾ for (let i = 0; i < 5; i++) { ï½ï½ï½ } ããã¯ä»ã¾ã§ã¯æ¬¡ã®ã³ã¼ãã¨ç価ã ã£ãã { let i = 0 for (; i < 5; i++) { ï½ï½ï½ } } ã¤ã¾ãforæä¸ã§é¢æ°ãå®ç¾©ããã¨ãããªã£ã¦ããã let funs = [] for (let i = 0; i < 5; i++) { funs.push(function () { return i }) } funs.map(function (fun) { return fun() }) // [5,5,5,5,5] ãã®çµæã[0,1,2,3,4]ã«ãªãã®ãä»åã®å¤æ´ã§ããã ã¤ã¾ãä¸çªæåã®ã³ã¼ãã¯ããã¨ç価ã«ãªã
2014/05/25è¿½è¨ ããããæ¸ãæ¹ãåºæ¥ãã¨ç´¹ä»ãã¦ãããã¾ããã @okazuki $scopeã®ã¡ã½ããã®åãFunctionã«ããããªãå ´å URL ãã¼ãã¼æãã§æ¸ãã¨ã³ããã§æ¸ã+åãã§ãã¯ã®æ©æµãåããããã®ã§ããã¨æãã¾ãã 2014-05-25 02:06:40 via twicli to @okazuki ããããã¨ããã°ã£ã¡ãåããã®ã§ã次ããã¯ããæ¸ããã¨æãã¾ããã ã¯ããã« JavaScriptã§SPAä½ãã®ã«ã¯AngularJSããããããã¨ãããã¨ã§ãã¨ããããã·ã³ãã«ãªä¾ã¨ãã¦ãåå¼·ãã¦ã以ä¸ã®ãã¼ã¸ã®ããã£ã±ãªã«ããTodoã¢ããªãTypeScriptã§æ¸ãã¦ã¿ã¾ããã AngularJS 1.2 æ¥æ¬èªãªãã¡ã¬ã³ã¹ | js STUDIO ããã¸ã§ã¯ãã®ä½æ TypeScriptHTMLApp1ã¨ããååï¼ååã¤ããã®ãã¼ã£ãï¼ã§ããã¸ã§ã¯ãã使
å¿ãããªã人ã¯ãå ¬å¼ã®ãã¥ã¼ããªã¢ã«ãé ããå ¨é¨ããã¨è¯ãã§ããããã©ãããã¦ãã£ã¡ã¯ãã£ã¦ãªãã®ã§åããã¾ããã ã¨ãããããããéãã¦ã¸ã£ãã´ã¡ã¹ã¯ãªãããçºãã ã¢ã¸ã¥ã¼ã«ã«ã¤ãã¦ åºæ¬ä¸ã®åºæ¬ãç¹ã«æ¨å¥¨ã»ããã¢ããã®ã¨ãããè¦ã¦ããã°è¯ãã DI(ä¾åæ§æ³¨å ¥)ã«ã¤ã㦠ãã£ã¡ãèªãã æ¹ã幸ãã«ãªããããã ã©ããªãµã³ãã«ãèªãã«ããã£ã¦ããDI ã®ä»çµã¿ãç¥ã£ã¦ãªãã¨è¾ããªããä»çµã¿èªä½ã¯ããã§ãã¦ãããåã£ã¤ãã¥ããã ç¹ã« 弿°åã§æ¸¡ãããå®ä½ãå¤ãã é¨åã¯æ £ããã¾ã§æ°æã¡æªãæ°ãããããã¼ãã¯æ°æã¡æªãããã£ã¨è¨ãã¨ãminify ããå ´åãªã©ã§å¤æ°åãå¤ããã¨åä½ããªããªãããåºæ¬çã«ã¯å¤æ°åãæå®ãã¦ãå®ä½ãææããå¿ è¦ãããã var sampleApp = angular.module('sampleApp', []); /** ãã¨ãã°ãController ã§
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}