본문 바로가기

전체 글138

[AWS] CodeStar로 브랜치별 production/staging 자동배포 환경 만들기 준비물 master 브랜치만 있는 CodeStar 프로젝트 진행과정 기존에 생성되어있는 CodeStar 프로젝트에 staging 브랜치를 추가한다.(기존 프로젝트는 master 브랜치용으로 사용된다) staging 브랜치용 CodeStar 프로젝트 생성 파이프라인 수정 권한 수정 테스트 프로덕션용으로 사용할 CodeStar 프로젝트는 이미 생성되어 있다고 가정함. 프로덕션용 CodeStar 프로젝트 이름 : moro-test-lambda-API (이 글에서 새로 생성할)스테이징용 CodeStar 프로젝트 이름 : moro-stag-test 아래 staging 브랜치 생성과정의 프로젝트명이 moro-cstest라고 되어있는데 무시하면 된다. moro-test-lambda-API 프로젝트에 브랜치 생성할때 .. 2020. 4. 13.
[AWS] SAM Local, CodeStar를 사용해 Lambda 로컬테스트 및 자동배포환경 만들기 본인 및 협업할 멤버는 이미 AWS 가입이 되어 있고, AWS Management Console Access 권한이 있다고 가정한다. 준비물 AWS 계정 및 콘솔 액세스 권한 Docker Homebrew Sourcetree(선택) aws-sam-cli 우선 aws-sam-cli 설치가 필요한데, npm package는 deprecated 되었으므로 Homebrew로 설치한다. $ brew tap aws/tap $ brew install aws-sam-cli $ sam —v // 설치 확인 혹시.. 버전 확인을 했을때 최신 버전을 설치했는데도 아래와 같은 알림이 뜬다면 moro-test-lambda-API ateam$ sam --version A newer version of the AWS SAM CLI .. 2020. 4. 9.
package-lock.json의 역할과 커밋해야 하는 이유 npm install시 자동으로 생기는 package-lock.json이 대체 무슨 역할인지 알아보자. package.json은 이 프로젝트 패키지의 정보들을 담고 있다. 이름, 버전 등을 포함하고 있는데, 의존성 모듈 정보도 가지고 있다. { "name": "myApp", ... "dependencies": { "express": "^4.16.4", ... } } dependencies에는 이 패키지 실행에 필요한 다른 모듈들의 이름과 버전 정보가 명시되어 있다. 그래서 다른 사람이 내 코드를 다운받아 실행하더라도, npm install만 실행하면 내가 설치했던 의존 모듈들이 함께 설치된다. 하지만, 여기엔 문제가 몇가지 있다. 첫번째 문제는, 명시된 모듈이 다른 버전으로 설치될 수 있다는 것이다. d.. 2020. 4. 3.
[Javascript] 이벤트루프와 호출 스택(call stack), 비동기성 자바스크립트의 큰 특징으로 비동기성과 싱글스레드, Non-blocking IO가 있다. 비동기성은 알겠고, 논 블로킹 IO도 비동기성에서 오는 특징이라는건 알겠는데, 비동기성은 어떻게 동작하는 것일까? 그것도 싱글스레드라면, 한번에 한 동작밖에 못하는게 아닌지? 우선 동기성과 비동기성은 간단히 그림으로 살펴보자. 한 동작을 수행하다가 다른 동작이 필요한 경우, 동기 : 응답이 반환될때까지 하던 일을 멈추고 기다린다. 비동기 : 응답을 기다리느라 하던 일을 멈추지 않는다. 여기서 언뜻 들었던 의문이 있다. 하던 일을 멈추지 않는다 = 여러 일을 동시에 한다 => 싱글스레드인데? 이 부분은 자바스크립트의 동작 원리, 특히 이벤트루프와 호출스택을 이해해야 한다. 호출 스택(call stack) 자바스크립트는 .. 2020. 4. 3.
[Javascript] for, setTimeout 퀴즈 아래와 같은 코드의 출력이 어떻게 될까? for (var i = 0 ; i { console.log(i) }, 1000) } 난 보고.. 1초 있다가 1, 또 1초 있다가 2, 또 1초있다가 3 찍힐거라고 생각했다. 정답은 1초 후 거의 동시에 3이 3번 찍힌다. 정답을 보고서, 아.. for문이 너무 빨리 돌아서 그렇구나? 1초안에 3번 도는게 끝나서 3이 세번 찍히는구나 했다. 그리고 await가 걸린것도 아니니 당연히 각 setTimeout은 거의 동시에 실행되니까, 그래서 거의 동시에 찍히는거구나 했다. (이건 당연한건데 왜 생각을 못했을까?) 그러면 for문 반복횟수를 늘리고, setTimeout 시간을 줄이면 다른 숫자도 찍히겠구나? for.. 2020. 3. 31.
[Javascript] map vs filter vs reduce for문 대신 map을 사용할 수 있다. const people = [ { name: 'effy', age: 13}, { name: 'kim', age: 7}, { name: 'cathy', age: 21}, { name: 'moro', age: 28}, { name: 'jamonda', age: 32} ] // for let names1 = []; for (const person of people) { names1.push(person.name); } console.log(names1); // map const names2 = people.map((person) => person.name) console.log(names2); names1과 names2는 같다. 값 반환에 조건이 필요한 경우 filte.. 2020. 2. 11.
[Javascript] 제너레이터 제너레이터는 다음과 같이 선언하고 사용할 수 있다. function *generator() { yield 1; yield 2; yield 3; } let a = generator(); a.next(); >> {value: 1, done: false} a.next(); >> {value: 2, done: false} a.next(); >> {value: 3, done: false} a.next(); >> {value: undefined, done: true} for (const item of generator()) console.log(item); // 이렇게 순회도 가능하다. 만약 리턴값이 있는 경우, function *generator() { yield 1; yield 2; yield 3; return.. 2020. 2. 9.
[Javascript] List/Set/ Map 순회하기 기본적으로 리스트를 순회하는 방법은 이렇다. const list = [1, 2, 3]; for (var i = 0 ; i < list.length ; i++){ console.log(list[i]); } index를 쓰지 않고 of를 사용할 수도 있다. const list = [1,2,3] for(const item of list){ console.log(item); } for (const a of arr) console.log(a); // inline으로 쓸 수도 있다. [대괄호]로 선언해서 배열을 만들 수도 있지만, Set이나 Map으로 순회가능한 객체를 만들수도 있다. const set = new Set([1,2,3]); const map = new Map([['a', 1],['b', 2],['c'.. 2020. 2. 9.
[Javascript] 함수와 일급객체, 고차함수와 클로저 일급객체란? 1) 값으로 사용될 수 있고 2) 변수에 할당할 수 있고 3) 함수의 리턴값으로 사용할 수 있고 4) 함수의 인자로 전달할 수 있는 객체를 말한다. javascript에서 함수는 일급객체이다. 따라서 1) 함수를 값으로 사용할 수 있고 2) 함수를 변수에 할당할 수 있고 3) 함수의 리턴값으로 함수를 사용할 수 있고 4) 함수의 인자로도 함수를 전달할 수 있다. 고차함수 함수를 값으로 다룰 수 있다는 의미는 고차함수를 사용할 수 있다는 의미이기도 하다. 고차함수란 함수가 함수를 인자로 받는 것을 말한다. const test = f ⇒ f(1); /** * 익명함수(f => f(1))를 test 변수에 할당했다. * 함수의 인자로 함수를 전달했다(f) * 이 함수는 함수를 인자로 받아 1을 인.. 2020. 2. 6.