Talk at é¢è¥¿Nodeå¦å æ¢ ç°ãã£ã³ãã¹ 1æéç® https://nodejs.connpass.com/event/82614/
(注ï¼2017/04/20ãããã ãããã£ã¼ãããã¯ãå ã«ç¿»è¨³ãä¿®æ£ãããã¾ãããä¿®æ£å 容ã«ã¤ãã¦ã¯ã ãã¡ã ãåç §ãã ããã) è¦ç´ HTTP/2 ã«ã¯HTTP/1.xã«æ¯ã¹ã¦å¤æ°ã®æ¹è¯ç¹ãããã¾ããã ã«ãªã¹ãã¹ã ãè¡ã£ãã¨ãããHTTP/2ã®ããã©ã¼ãã³ã¹ãHTTP/1ããå£ãç¶æ³ããããã¨ãåããã¾ããã ãããã¯ã¼ã¯ä¸ã«ãã±ããæ失ãããå ´åãTCP層ã§ã®è¼»è¼³å¶å¾¡ã«ãã£ã¦ãå°æ°ã®TCPã³ãã¯ã·ã§ã³ã®ä¸ã«å¤éåããã¦ããHTTP/2ã¹ããªã¼ã ãã¹ããããªã³ã°ããã¾ããããã«ãTCPãªãã©ã¤ã®ãã¸ãã¯ã«ããããªãã©ã¤ãè¡ããã¦ããéã1ã¤ã®TCPã³ãã¯ã·ã§ã³ã«å½±é¿ãã¦ãããã±ããæ失ããããã¤ãã®HTTP/2ã¹ããªã¼ã ã«åæã«å¼·ãå½±é¿ãä¸ãã¾ããè¨ãæããã°ãããããªãã©ã¤ã³ããããã³ã°ãäºå®ä¸ããããã¯ã¼ã¯é層㮠ã¬ã¤ã¤7 ãã ã¬ã¤ã¤4 ã¸ç§»åããã¨ãããã¨ã§ãã èæ¯ã¨ãµã¼
UIãæããã¹ã¯ãªããããæä½å¯è½ãªWebãã©ã¦ã¶ã®Headless Chromeãå©ç¨ããããã®ãã¬ã¼ã ã¯ã¼ã¯ãPuppeteerãããã¼ã¸ã§ã³1.0ã«å°éãããWebã¢ããªã±ã¼ã·ã§ã³ã®èªåãã¹ããªã©ã«å©ç¨å¯è½ã ã Googleã®Webãã©ã¦ã¶ãChromeãã¯ãã¦ã¼ã¶ã¼ã¤ã³ã¿ã¼ãã§ã¤ã¹ãæããã³ãã³ãã©ã¤ã³ããªã¢ã¼ããããã°æ©è½ãéãã¦Webãã©ã¦ã¶ãæä½ã§ãããHeadless Chromeãæ©è½ãåãã¦ãã¾ãããã®æ©è½ã¯2017å¹´6æã«ãªãªã¼ã¹ããããChrome 59ãããå®ç¾ããããã®ã§ãã Headless Chromeãå©ç¨ããã¨äººéãWebãã©ã¦ã¶ããã¦ã¹ããã¼ãã¼ãã§æä½ãããã¨ãªããããã°ã©ã ã§Headless Chromeãèµ·åããç¹å®ã®Webãã¼ã¸ãèªã¿è¾¼ã¿ãç»é¢ãã£ããã£ã®åå¾ããæå®ãããå ´æãã¯ãªãã¯ããå¤ãå ¥åãçµæãåå¾ãããã¨ãã£ãæä½ãèªåçã«è¡ãã
ä¾åããªãããã¹ãå¯è½ã§ãããã¯ãªã¼ã³ã Uncle Bobã®ã¯ãªã¼ã³ã¢ã¼ããã¯ãã£ã®æ¦å¿µãèªãã ã®ã§ããããç§ã¯Goã§å®è£ ãã¦ã¿ããã¨æãã¾ãããã®ã¢ã¼ããã¯ãã£ã¯ãèªåãã¡ã®ä¼ç¤¾ã§ãã Kurio â App Berita Indonesia ã§ä½¿ã£ã¦ãããã®ã«ä¼¼ã¦ãã¾ãããå°ãéã£ã¦ãã¾ãã大ããªéãã¯ãªããæ¦å¿µã¯ä¸ç·ãªã®ã§ããããã©ã«ãæ§é ãéã£ã¦ãã¾ãã ãµã³ãã«ã®ããã¸ã§ã¯ãã¨ãã¦ãè¨äºãCRUDã§ç®¡çãããªãã¸ããªã https://github.com/bxcodec/go-clean-arch ã«pushãã¦ããã¾ãã * å 責æ¡é ããã§ä½¿ããã¦ããã©ã®ã©ã¤ãã©ãªãããã¯ãã¬ã¼ã ã¯ã¼ã¯ããå©ç¨ãç¹å¥æ¨å¥¨ãã¦ãããã®ã§ã¯ããã¾ããã®ã§ããèªèº«ãããã¯ãµã¼ããã¼ãã£ã«ããåãæ©è½ã®ãã®ã¨å ¥ãæ¿ãããã¨ãå¯è½ã§ãã åºæ¬çãªèãæ¹ ãåç¥ã®ããã«ãã¯ãªã¼ã³ã¢ã¼ããã¯ãã£ã§è¨è¨
GoogleãDockerã¤ã¡ã¼ã¸ã«å¯¾ãããã¹ãèªååãã¬ã¼ã ã¯ã¼ã¯ãContainer Structure Testsããªã¼ãã³ã½ã¼ã¹ã§å ¬é Container Structure Testã¯ãã³ã³ããå é¨ã§ã³ãã³ããå®è¡ãããã¨ã§æ£ããåºåãã¨ã©ã¼ã帰ã£ã¦ãããã©ããããã³ã³ããå é¨ã®ãã¡ã¤ã«ãæ£ããæ ¼ç´ããã¦ããããªã©ã®æ¤è¨¼ãå®è¡ã§ãããã¬ã¼ã ã¯ã¼ã¯ã§ãã å ·ä½çã«ã¯ä¸è¨ã®ãã¹ãããµãã¼ããã¦ããã¨èª¬æããã¦ãã¾ãã Command Tests ã³ã³ããã¤ã¡ã¼ã¸å é¨ã§ã³ãã³ããå®è¡ããæ£ããåºåãã¨ã©ã¼ãè¿ã£ã¦ããããæ¤è¨¼ããã File Existence Tests ã³ã³ããã¤ã¡ã¼ã¸å é¨ã«ããããã¡ã¤ã«ããã¡ã¤ã«ã·ã¹ãã å ã®é©åãªä½ç½®ã«åå¨ãã¦ãããã©ãããæ¤è¨¼ããã File Content Tests ã³ã³ããã¤ã¡ã¼ã¸å ã®ãã¡ã¤ã«ã·ã¹ãã ã«ãããã¡ã¤ã«ã®ã³ã³ãã³ãã¨ã¡ã¿ãã¼ã¿
ElectronMeetup in Tokyo LT (https://connpass.com/event/69473/) How to run spectron E2E test in case of using Native API in your specs.
æ¬ç¨¿ã¯ãJavaScriptã®ãã¹ãã«ã¤ãã¦æãéè¦ãªæ ¹æ ãç¨èªããã¼ã«ãã¢ããã¼ããªã©ã®ç¥èã身ã«çãããã¨ãç®çã¨ããç°¡ç¥çã¬ã¤ãããã¯ã§ããæ¬ç¨¿ã§æ¤è¨ããæ°ã ã®å´é¢ã«é¢ããææ°ã®ç§é¸ãªè¨äºãç´¹ä»ãã¤ã¤ãç§ãã¡ãçµé¨çã«å¾ããã¨ãå¤å°ä»ãå ãããã¨æãã¾ãã Facebookã«ãããã¹ãç¨ãã¬ã¼ã ã¯ã¼ã¯ã§ããJestã®ãã´ãã覧ãã ããã è¦ã¦ãåããã®ããã«ããã®ãã¬ã¼ã ã¯ã¼ã¯ã¯ãè¦çã®ãªããJavaScriptã®ãã¹ããã¹ãã¼ã¬ã³ã«æ²ãã¦ãã¾ãããããã â次ã®ããã«è¨ã人â ããã¾ãã è¦çã®ãªããã¹ããªãã¦ããå¾ãªãã å®éãFacebookã¯ãã®ã¹ãã¼ã¬ã³ãæ²ããã ãã®ç´ æ´ãããçç±ãããã¾ããä¸è¬çã«JSã®ããããã㯠Webãµã¤ãã®ãã¹ãã«ãã¾ãæºè¶³ãã¦ãã¾ãã ãJSã®ãã¹ãã«ã¯å¶éããããå®è£ ãé£ãããä½éã§ããå¾åãããã¾ãã ä¸æ¹ãæ£ããæ¦ç¥ãç«ã¦ã¦é©åã«ãã¼ã«ã
ãã¹ããå°ãããããé©åãªãã¼ã«ã使ããããã°ã©ãã¨ãã¹ãããã¢ã«ãªãããããã¯ãããã¦ããããã¹ããæ¸ãããã®ãAdrian Bolboacaæ°ããã®ææ¡ã ã ã¦ããããã¹ãã¯ãããã°ã©ãã³ã°ã¨ãã¹ããæ··ããåã£ããã®ã ãããã°ã©ãã¯ããã¹ã¿ã¨å ±ã«ä½æ¥ãããã¨ã§ããäºãã«å¦ã³åããè¦éãåºãããã¨ãã§ããã Adrian Bolboacaæ°ã¯ãMozaic Worksã®çµç¹ã¨æè¡ã«é¢ããã³ã¼ãã§ãããã¨ã¼ããããã¹ãã«ã³ãã¡ã¬ã³ã¹ 2017ã«ããã¦ãæ§ã ãªã¿ã¤ãã®èªåãã¹ãã«ã¤ãã¦è©±ãäºå®ã ã InfoQã¯ããã®ã«ã³ãã¡ã¬ã³ã¹ã«ã¤ãã¦ãQ&Aãè¦ç´ãè¨äºã§æ±ãã [ã¨ã¼ããããã¹ãã«ã³ãã¡ã¬ã³ã¹]ã¯ãå°é家ãå®è·µè ãä¸ç·ã«è©±ããå¦ã³ããã¹ãæè¡ãå®è·µããã¨ããã§ãã ç§ãã¡ã¯ããã¹ãããã£ã¨å¹æçã«ããããã«ãå é²çãªæ°ããæ¹æ³ã詳ãã調ã¹ãããå¼·ãã³ãã¥ããã£ã«æé·ããåºæ¬çãªæ¹æ³ãå
ä½å¹´ãåãSeleniumãWebDriverã®è©±ã§çãä¸ãã£ãè¨æ¶ãããã¾ãããã ããã®å½æã¯ã¾ã Railsãªã©ããã¯ã¨ã³ãä¸å¿ã®æèã§ãããä»ãããã³ãã¨ã³ãã«è»¸è¶³ã移ãä¸ããã©ã¦ã¶ãã¹ãã®ç¶æ³ã¯ã©ããªã£ãã®ã§ããã? ä¸æè°ãªãã¨ã«ãããã³ãã¨ã³ãçéã§ããã»ã©è©±é¡ã«ä¸ãã£ã¦æ¥ãªãã§ããã (ç§ã®å¨ãã ã?)ãçµæ§å¤§äºãªã®ã«ãå®ã¯çããããSeleniumã¢ã¬ã«ã®ã¼ããªããããªãã§ãã? å ¬å¼ãµã¤ãã«æ¼ã ã¼ã年代æ(ä¸å³)ãJavaã¸ã®èºèºããããã©ããããã¨èãããç¶ããéå»ãç¡æèã«é¿ãã¦ãã¾ãã®ãSeleniumã§ãã ãã ãããã³ãã¨ã³ãã®æèã§ããããã©ã¦ã¶ãã¹ãã¯éè¦åº¦ãå¢ãã¦ãã¾ããããã§ãSelenium触ããããªãç ãã®çè ãã åè¦å «è¦ããèæ¯ ã¨ã2016å¹´ã ãããã è¦ãã¦ããè½ã¨ãæ ãæ¸ãã¦ã¿ããã¨æãã¾ãã 註: æã£ãããé·æã«ãªã£ã¦ãã¾ãã¾ãããå
Dockerã³ã³ããã§Ansibleããã¹ãã㶠Ansible 2.0ã«ãªããDocker connection pluginãæ¨æºã§å ¥ãã¾ãããããã«ãããDockerå ã«sshdãç«ã¦ããã¨ãªãAnsibleãç´æ¥å®è¡ã§ããããã«ãªãã¾ããã ãã§ã«å°å ¥ããã¦ããæ¹ãå¤ããããªãä»æ´ã§ã¯ããã¾ãããDockerã³ã³ããã«å¯¾ãã¦Ansibleãå®è¡ãã¦ãã¹ãããæ¹æ³ã«ã¤ãã¦ããã«è¨ãã¾ãã åèGitHubãªãã¸ã㪠Dockerã«å¯¾ããå ´åã®å¶é¶ ã¾ãæåã«AnsibleãDockerã³ã³ããã«å¯¾ãã¦å®è¡ããéã®å¶éã«ã¤ãã¦ã§ãã åºæ¬çã«ã¯ãã¹ã¦ã®æ©è½ã使ãã¾ãããã ã以ä¸ã®å¶éãããã¾ãã /etc/hosts, /etc/resolv.conf, /etc/hostnameã¯æ¸ãæãã§ããªã ãããã®ãã¡ã¤ã«ã¯Dockerãbind mountãã¦ãããæ¸ãæããããããç½®
æè¡é¨ã® taiki45 ã§ãã 以åããµã¼ãã¹åå²æã®è¤éæ§ã«å¯¾å¦ãã: ãã¹ãæ¦ç¥ã®è©±ãã¨ããè¨äºã§ããµã¼ãã¹éã®ã¤ã³ãã°ã¬ã¼ã·ã§ã³ãã¹ãã«ãããåé¡ã«ã¤ãã¦ç´¹ä»ãã¾ãããç¾å¨ã®ã¯ãã¯ãããã§ã¯ãã®åé¡ã®è§£æ±ºã®ããã« Pact ã¨ãããã¼ã«ãå°å ¥ãã¦éç¨ãã¦ãã¾ãããã®è¨äºã§ã¯ããã®éç¨ã®ç¥è¦ãç´¹ä»ã§ããã°ã¨æãã¾ãã Pact Pact 㯠Consumer-Driven Contract testing (CDC testing) ãå®ç¾ããããã®ãã¼ã«ã§ãã"Consumer"ã"Provider" ã¨ããè¦æ £ããªãåèªãåºã¦ãã¾ããããã®è¨äºã§ã¯ã ããããConsumer = Web API ã¯ã©ã¤ã¢ã³ããããProvider = Web API ãµã¼ãã¼ãã¨å¯¾å¿ãã§ãã¾ãããã®è¨äºã§ã¯å ·ä½ç㪠Pact ã®å©ç¨ä¾ãéã㦠CDC testing ãã©ããããã®ãªã®ãã«ã¤ãã¦ã
æå°éã®è¨å®ã®TDDææ³ã使ãããä½ããã¹ããã¹ããï¼ããããããããè½ã¨ãç©´ã®é¿ãæ¹ã¾ã§ãReactã³ã³ãã¼ãã³ãããã¹ãããæ¹æ³ãå¦ã³ã¾ãããã å°å ¥ ã¾ãã React ã触ã£ããã¨ããããæ´ã«ã¯ããã¤ãã®ãã¹ããæ¸ããçµé¨ãããã¨ãã¾ããããããã§ããã³ã³ãã¼ãã³ããã©ããã¹ãããã®ãæåãªã®ããããåãããªãããããã¾ãããã©ãããå§ããã®ã§ããããå ·ä½çã«ã¯ä½ããã¹ãããã°ããã®ã§ããããã ããã¤ãã®Reactã³ã³ãã¼ãã³ãã¯ç°¡æ½éãã¦ããããããã¹ããå¿ è¦ãªã®ãããã¯ã£ãããã¾ããã AngularããReactã«ä¹ãæãã 人ãªãããã¹ãã«ã¯ææã®ãããªæããããããããã¾ããã 確ãã« Angular ã«ã¯ãã¹ããæ¯æ´ãããã¼ã«ãããããããã¾ãããåæã«ãã¹ããæ¸ãã®ãé£ãããªãå¯è½æ§ãããã¾ããåé·ãªããçç¥ã§ããªãå®åã³ã¼ããå¤ã ããä¸ã $digest ã®å¼ã³åº
å®é¨ç°å¢ã¯ Chrome Canary 43.0.2314.0 ã ãã©åããã¦ãåã¯ç¾æç¹ã®å®å®ç(40)ã§ãåãã¯ã ããããã㨠http://localhost:3000/api/* ã¸ã®ãªã¯ã¨ã¹ããå ¨é¨serviceworkerã«ä»»ãããã å è¡å®è£ ã¨ã㦠Jxck/response-injection ãããã ããæ¹ sw.js(ã«ãªãsw.coffee) console.log 'worker started' self.onfetch = (event) -> console.log 'onfetch', event.request.url if event.request.url.indexOf(location.origin+'/api') > -1 event.respondWith new Response '{"foo": "bar"}', status: 200
[Infrataster] Infratasterã§Nginxã®ã«ã¼ãã£ã³ã°ã®ãã¹ãæ¸ãã¦ããµã¼ãã¼ã®ãã¹ãã¯Serverspecã§æ¸ãã¦ãããã ãã©ãNginxã®è¨å®ãã¡ã¤ã«ã§æ¸ãã¦ããã¦ã§ããµã¼ãã¼ã®ã«ã¼ãã£ã³ã°ã®ãã¹ããã©ãããããã¨æã£ã¦ãã¾ãããèªåã§ãç°¡åãªãã¼ã«ã§ãæ¸ãã¹ãããªãã¨ã /path/to/app ã§ã¢ããªã±ã¼ã·ã§ã³ã«ããã¯ã·ã¼ãã ä½ãcookieããªãå ´åã¯éçãã¡ã¤ã«ããµã¼ããã /path/to/static/file ã§éçãã¡ã¤ã«ãNginxãç´æ¥ãµã¼ããã /path/to/health/check ã§ãã«ã¹ãã§ãã¯ç¨ã®ã¬ã¹ãã³ã¹ãè¿ããä½ãHTTPãããã¼ãè¦ã¦æ®éã®ãã©ã¦ã¶ã¼ã¢ã¯ã»ã¹ã§ã¯Forbiddenã«ãã ãã¼ãã£ã«ãã¡ã¤ã³ãã¨ã«å¾®å¦ã«ãã¹ã¨ããéã ã¿ãããªã«ã¼ãã£ã³ã°ã®ãã¹ãã¯ãå¤å´ããã®ãã¹ããªã®ã§ã¡ãã£ã¨Serverspecã®ã¹ã³ã¼
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}