startup javascript 7 - node.js 기초

22
Startup JavaScript 7. Node.JS 소소 THINKER TO MAKER x

Upload: circulus

Post on 21-Jan-2017

204 views

Category:

Technology


7 download

TRANSCRIPT

Page 1: Startup JavaScript 7 - Node.JS 기초

Startup JavaScript7. Node.JS 소개

THINKER TO MAKER

x

Page 2: Startup JavaScript 7 - Node.JS 기초

Full Stack Developer

THINKER TO MAKER

Node.JS

Page 3: Startup JavaScript 7 - Node.JS 기초

JavaScript 활용의 확산구글의 Chromium 프로젝트를 위한 V8 엔진 개발브라우저 성능 비약적인 발전 , 오픈소스로 인한 타 분야 적용 가능성 대두

오픈소스 JIT(Just In Time) 가상 머신

오픈소스 JavaScript 엔진

크롬 브라우저에 탑재

실행하기 전 기계어로 컴파일

JavaScript 처리 성능 향상

인라인 캐싱 (Inline Caching) 최적화 기법 적용

Page 4: Startup JavaScript 7 - Node.JS 기초

Node.JS

확장성 있는 네트워크 앱 ( 서버 ) 을 개발하는데 사용되는 S/W 플랫폼 임내장 http 라이브러리로 별도의 웹 서버 없이 동작 가능 함

JavaScript 를 이용한 언어

Web, Server, H/W 를 한번에

클라이언트 , 서버 , 하드웨어 개발이 가능

Socket.IO 를 통한 손쉬운 실시간 통신 가능

H2M, M2M, H2H 을 한번에

H2H, H2M, M2M 모두 쉽게 구현 가능

NPM 을 통한 350,000 여개의 라이브러리

JavaScript, Node.JS 의 강력한 지원

Github, Stackoverflow 의 풍부한 JS 관련 자료

Page 5: Startup JavaScript 7 - Node.JS 기초

Node.JS with Hardware

운영체제가 있는 시스템에 설치 가능 -> 마이크로컴퓨터에 탑재 가능하드웨어 제어용 API 제공 (SerialPort, WiringPi) -> Things 제작 가능

+ Hardware

Page 6: Startup JavaScript 7 - Node.JS 기초

Event-Loop

Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 처리 성능이는 I/O 처리가 많은 프로그래밍에 특히 효율적 임

Event Loop

Event

Event

Event

Event

Event

Event Queue Thread Pool

file system

network

process

other

< 14 CACHE 250RAM 41,000,000Disk 240,000,000

Net-work

Page 7: Startup JavaScript 7 - Node.JS 기초

Node.JS 선택LTS(Long Term Support) 와 일반버전으로 제공 됨최신 기술을 위해서는 일반 버전이 좋으나 , 운영 고려 시 LTS 버전이 용이

Page 8: Startup JavaScript 7 - Node.JS 기초

Node.JS 설치http://www.nodejs.org6.X 버전대의 LTS 가 2016 년 11 월 부터 시작 됨 . 다운로드 및 설치

Page 9: Startup JavaScript 7 - Node.JS 기초

Node.JS 설치 확인Node.JS 및 NPM 설치 버전 확인 . 명령 뒤에 – v 를 이용하여 버전 확인정상적으로 설치되었다면 , Node.JS 는 6.x.x, NPM 은 3.x.x 형태로 표시 됨

Page 10: Startup JavaScript 7 - Node.JS 기초

Hello World 확인Node 를 시작하면 , 인터프리터 형식으로 프로그래밍이 가능console.log(‘hello world’) 를 입력하여 결과가 나오는 지 확인

Page 11: Startup JavaScript 7 - Node.JS 기초

기본 편집 프로그램 설치다양한 코딩 용 프로그램 존재 . Note Pad++, Sublime Text 가 많이 쓰임 .최근에는 Visual Studio Code, Atom 등도 많이 사용되고 있음

Page 12: Startup JavaScript 7 - Node.JS 기초

초 간단 웹 서버 구축

THINKER TO MAKER

http module

Page 13: Startup JavaScript 7 - Node.JS 기초

웹 서버 구축하기HTTP 는 HTML 페이지 및 파일을 전달하는데 쓰이는 프로토콜 임HTTP 웹 서버와 클라이언트를 생성하는 것과 관련된 기능을 담당

Page 14: Startup JavaScript 7 - Node.JS 기초

Hello Server

var http = require('http');

http.createServer(function(req, res){ res.writeHead(200, {'Content-Type' : 'text/html'}); res.end('Hello World!');

}).listen(80,'127.0.0.1');

console.log('Server is running!');

기존 프로그램은 서버 어플리케이션 개발이 어려웠으나 , Node.JS 에서는 단 몇 줄만으로 서버 구축을 할 수 있음

Page 15: Startup JavaScript 7 - Node.JS 기초

내장 객체

THINKER TO MAKER

process, os

Page 16: Startup JavaScript 7 - Node.JS 기초

내장 모듈 Process

프로그램과 관련된 정보를 나타내는 객체로 , 브라우저에 존재하지 않음

메소드 /변수 명 설명argv 실행 매개변수 , 어떤 파일에서 실행된 것인지 알려줌env 컴퓨터 환경 관련 정보version NodeJS 정보 반환 (ex 0.12.01)

arch 프로그램 아키텍처 (ex 32bit, 64bit)

platform 플랫폼memoryUsage() 메모리 사용량uptime() 프로그램이 실행된 시간exit() 프로그램 종료

Page 17: Startup JavaScript 7 - Node.JS 기초

내장 모듈 OS

운영체제와 관련된 유틸리티 함수 . require(‘os’) 로 정의하여 사용 함 .

메소드 명 설명tmpdir() 시스템의 기본 임시 폴더를 반환hostname() 운영 체제의 호스트 이름type() 운영 체제의 이름platform() 운영체제arch() CPU 아키텍쳐uptime() 운영체제가 실행된 시간loadavg() 운영체제 Load Average

totalmem() 메모리freemem() 가용 메모리cpus() cpugetNetworkInterfaces() 네트워크 환경

Page 18: Startup JavaScript 7 - Node.JS 기초

파일 관리 및 실행

THINKER TO MAKER

fs, child_process

Page 19: Startup JavaScript 7 - Node.JS 기초

파일 쓰기 / 읽기간단하게 파일을 읽고 쓸 수 있음 . 동기식 , 비 동기식 방법 모두 지원 함상황에 따라 맞는 방식을 선택해야 함 .

var fs = require('fs');

// Sync Writefs.writeFileSync('hello1.txt','Hello World');

// Async Writefs.writeFile('hello1.txt','Hello World', function(err){

if(err) { throw err; }});;

// Sync readvar data = fs.readFileSync('hello1.txt','utf8');console.log(data);

// Async readfs.readFile('hello2.txt','utf8', function(err, data){

if(err){ throw err; }console.log(data);

});;

Page 20: Startup JavaScript 7 - Node.JS 기초

디렉토리 관리디렉토리를 읽고 / 쓰고 / 삭제 하는 다양한 동기 / 비동기 라이브러리 제공 .fs.stat() 함수를 이용하여 다양한 파일에 대한 정보를 획득 가능var fs = require('fs');var path = '/';

fs.readdir(path, function(err, files){if(err) throw err;files.forEach(function(file){

console.log(path + file);fs.stat(path + file, function(err, stats){

console.log(stats);});

});});

fs.mkdir('/nodejs',0666, function(err){if(err) throw err;fs.rmdir('/nodejs', function(err){

if(err) throw err;}

});

Page 21: Startup JavaScript 7 - Node.JS 기초

파일 실행파일 실행을 위해 exec 와 spawn 을 사용할 수 있음 .실행 중인 정보를 받기 위해서는 spawn, 결과만 받을 때는 exec 를 사용함var exec = require('child_process').exec;var spawn = require('child_process').spawn;

exec('ver', function(err, stdout, sterr){if(err) throw err;console.log(stdout);

});

var proc = spawn('netstat', ['http://www.circul.us']);

proc.on('exit', function(){// todo after exit program

});

proc.stdout.on('data', function(data){console.log(data);

});

proc.stderr.on('data', function(data){console.log(data);

});

Page 22: Startup JavaScript 7 - Node.JS 기초

W www.circul.us G group.circul.us S social.circul.us C cafe.circul.usCONTACT.US [email protected]

THINKER TO MAKER

ANYQUES-TION?

x