Go란?구글에서 만든 프로그래밍언어로 전반적으로 C언어에 가까운 객체 지향 언어다. Go의 장점실행 속도가 빠르다.Garbage collection이 있다.간단한 객체동시성과 효율적인 동시성 구현이 내장되어 있다. Compiled vs InterpretedCompilation코드를 실행하기 전에 compiler가 instruction들을 기계어로 번역하는 것. 컴파일 된 코드는 빠르다.ex) C, C++, Java(부분적으로) Interpretation코드가 실행되는 중에 interpreter가 instruction들을 번역하는 것. 인터프리터를 사용한 코드는 느리지만 코딩이 더 쉬워진다. 또한 메모리 관리를 자동적으로 해서 사용하지 않는 변수와 기타 데이터를 없앨 수 있다.ex) Python, Java..
6.1 익스프레스 프로젝트 시작하기 6.1.1 Express 소개 http 모듈로 웹서버를 만들 때 코드가 보기 좋지 않고, 확장성도 떨어짐 => 프레임워크로 해결 (대표적인 것이 Express, Koa, Hapi) => 코드 관리도 용이하고 편의성이 많이 높아짐 6.1.2 package.json 만들기 직접 만들거나 npm init 명령어 생성 => nodemon이 소스 코드 변경시 서버를 재시작해줌 npm i express npm i -D nodemon 6.1.3 app.js 작성하기 서버 구동의 핵심이 되는 파일 · app.set('port', 포트) : 서버가 실행될 포트 지정 · app.get('주소', 라우터) : GET 요청이 올 때 어떤 동작을 할지 지정 · app.listen('포트', ..
5.1 npm 알아보기 5.1.1 npm 이란 Node Package Manager => 노드의 패키지 매니저 => 다른 사람들이 만든 소스 코드들을 모아둔 장소 (남의 코드를 사용하여 프로그래밍 가능) => 이미 있는 기능을 다시 구현할 필요가 없어 효율적 => 오픈 소스 생태계를 구성중 패키지 : npm에 업로드 된 노드 모듈 => 모듈이 다른 모듈을 사용할 수 있듯이 패키지도 다른 패키지를 사용할 수 있음 (의존 관계) 5.2 package.json으로 패키지 관리하기 5.2.1 package.json 현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일 => 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함 => 동일한 버전을 설치하지 않으면 문제가 생길 ..
4.1 요청과 응답 이해하기 4.1.1 서버와 클라이언트 서버와 클라이언트의 관계 => 클라이언트가 서버로 요청(request)을 보냄 => 서버는 요청을 처리 후 클라이언트로 응답(response)을 보냄 4.1.2 노드로 http 서버 만들기 · createServer로 요청 이벤트에 대기 · req 객체는 요청에 관한 정보가, res 객체는 응답에 관한 정보가 담겨 있음 const http = require('http'); http.createServer((req, res) => { // 여기에 어떻게 응답할지 적는다. }); 4.1.3 8080 포트에 연결하기 · res 메소드로 응답 보냄 => write로 응답 내용을 적고 end로 응답 마무리(내용을 넣어도 됨) · listen(포트) 메소드로..
3.1 REPL 사용하기 3.1.1 REPL R(Read), E(Evaluate), P(Print), L(Loop) 자바스크립트는 스크립트 언어라서 즉석에서 코드를 실행할 수 있다. 윈도우에서는 명령 프롬프트, 맥이나 리눅스에서는 터미널에 node 입력 프롬프트가 > 모양으로 바뀌면, 자바스크립트 코드 입력 입력한 값의 결과값이 바로 출력됨 · 간단한 코드를 테스트하는 용도 · 긴 코드를 입력하기에는 부적합 3.2 JS 파일 실행하기 3.2.1 JS 파일을 만들어 실행하기 node [자바스크립트 파일 경로]로 실행 3.3 모듈로 만들기 3.3.1 모듈 모듈 : 특정한 기능을 하는 함수나 변수들의 집합 · 노드는 자바스크립트 코드를 모듈로 만들 수 있다. · 모듈로 만들면 여러 프로그램에서 재사용 가능 3..
2.1 호출 스택, 이벤트 루프 · 이벤트 루프 : 이벤트 발생(setTimeout 등)시 호출할 콜백 함수들(위의 예제에서는 run)을 관리하고, 호출할 순서를 결정하는 역할 · 백그라운드 : 타이머나 I/O 작업 콜백, 이벤트 리스너들이 대기하는 공간. 여러 작업이 동시에 실행될 수 있음 · 태스크 큐 : 이벤트 발생 후 호출되어야 할 콜백 함수들이 순서대로 기다리는 공간 이벤트 루프가 호출 스택이 비워져 있을 때, 태스크 큐의 콜백을 호출 스택으로 올림 2.2 ES2015+ 2.2.1 const, let ES2015 이전에는 var로 변수를 선언 => ES2015부터는 const와 let이 대체 var const let 함수 스코프 (함수 안에서 선언시 밖에서 사용 x) 블록 스코프 (함수 및 블록..
1.1 노드의 정의 · Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. · 노드는 서버가 아니지만, 서버의 역할도 할 수 있는 자바스크립트 런타임. 런타임 : 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신(크롬의 V8 엔진 사용)의 상태 1.2 노드의 특성 1.2.1 이벤트 기반 1.2.2 논블로킹 I/O 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행 1.2.3 프로세스와 스레드 프로세스 : 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원 공유 x 스레드 : 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유 o 노드 프로세스는 멀티 스레드이지만, 직접 다룰 수 있는 스레드는 하..