SlideShare a Scribd company logo
Startup JavaScript
7. Node.JS 소개
THINKER TO MAKER
x
Full Stack Developer
THINKER TO MAKER
Node.JS
JavaScript 활용의 확산
구글의 Chromium 프로젝트를 위한 V8 엔진 개발
브라우저 성능 비약적인 발전, 오픈소스로 인한 타 분야 적용 가능성 대두
오픈소스 JIT(Just In Time) 가상 머신
오픈소스 JavaScript 엔진
크롬 브라우저에 탑재
실행하기 전 기계어로 컴파일
JavaScript 처리 성능 향상
인라인 캐싱(Inline Caching) 최적화 기법 적용
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 관련 자료
Node.JS with Hardware
운영체제가 있는 시스템에 설치 가능 -> 마이크로컴퓨터에 탑재 가능
하드웨어 제어용 API 제공(SerialPort, WiringPi) -> Things 제작 가능
+ Hardware
Event-Loop
Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 처리 성능
이는 I/O 처리가 많은 프로그래밍에 특히 효율적 임
Event Loop
Event
Event
Event
Event
Event
Event Queue Thread Pool
file system
network
process
other
< 14CACHE 250RAM 41,000,000Disk 240,000,000Network
Node.JS 선택
LTS(Long Term Support) 와 일반버전으로 제공 됨
최신 기술을 위해서는 일반 버전이 좋으나, 운영 고려 시 LTS 버전이 용이
Node.JS 설치
http://www.nodejs.org
6.X 버전대의 LTS 가 2016년 11월 부터 시작 됨. 다운로드 및 설치
Node.JS 설치 확인
Node.JS 및 NPM 설치 버전 확인. 명령 뒤에 –v 를 이용하여 버전 확인
정상적으로 설치되었다면, Node.JS 는 6.x.x, NPM 은 3.x.x 형태로 표시 됨
Hello World 확인
Node 를 시작하면, 인터프리터 형식으로 프로그래밍이 가능
console.log(‘hello world’) 를 입력하여 결과가 나오는 지 확인
기본 편집 프로그램 설치
다양한 코딩 용 프로그램 존재. Note Pad++, Sublime Text 가 많이 쓰임.
최근에는 Visual Studio Code, Atom 등도 많이 사용되고 있음
초 간단 웹 서버 구축
THINKER TO MAKER
http module
웹 서버 구축하기
HTTP 는 HTML 페이지 및 파일을 전달하는데 쓰이는 프로토콜 임
HTTP 웹 서버와 클라이언트를 생성하는 것과 관련된 기능을 담당
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 에서는 단 몇 줄만으로 서버 구축을 할 수 있음
내장 객체
THINKER TO MAKER
process, os
내장 모듈 Process
프로그램과 관련된 정보를 나타내는 객체로, 브라우저에 존재하지 않음
메소드/변수 명 설명
argv 실행 매개변수, 어떤 파일에서 실행된 것인지 알려줌
env 컴퓨터 환경 관련 정보
version NodeJS 정보 반환 (ex 0.12.01)
arch 프로그램 아키텍처 (ex 32bit, 64bit)
platform 플랫폼
memoryUsage() 메모리 사용량
uptime() 프로그램이 실행된 시간
exit() 프로그램 종료
내장 모듈 OS
운영체제와 관련된 유틸리티 함수. require(‘os’) 로 정의하여 사용 함.
메소드 명 설명
tmpdir() 시스템의 기본 임시 폴더를 반환
hostname() 운영 체제의 호스트 이름
type() 운영 체제의 이름
platform() 운영체제
arch() CPU 아키텍쳐
uptime() 운영체제가 실행된 시간
loadavg() 운영체제 Load Average
totalmem() 메모리
freemem() 가용 메모리
cpus() cpu
getNetworkInterfaces() 네트워크 환경
파일 관리 및 실행
THINKER TO MAKER
fs, child_process
파일 쓰기/읽기
간단하게 파일을 읽고 쓸 수 있음. 동기식, 비 동기식 방법 모두 지원 함
상황에 따라 맞는 방식을 선택해야 함.
var fs = require('fs');
// Sync Write
fs.writeFileSync('hello1.txt','Hello World');
// Async Write
fs.writeFile('hello1.txt','Hello World', function(err){
if(err) { throw err; }
});;
// Sync read
var data = fs.readFileSync('hello1.txt','utf8');
console.log(data);
// Async read
fs.readFile('hello2.txt','utf8', function(err, data){
if(err){ throw err; }
console.log(data);
});;
디렉토리 관리
디렉토리를 읽고/쓰고/삭제 하는 다양한 동기/비동기 라이브러리 제공.
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;
}
});
파일 실행
파일 실행을 위해 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);
});
W www.circul.us G group.circul.us
S social.circul.us C cafe.circul.us
CONTACT.US circulus@circul.us
THINKER TO MAKER
ANY
QUESTION?
x

More Related Content

PDF
Node.js 첫걸음
PPTX
Startup JavaScript 9 - Socket.IO 실시간 통신
PDF
Node.js intro
PPTX
Leadweb Nodejs
PDF
막하는 스터디 첫 번째 만남 Node.js
PPTX
Nodejs, PhantomJS, casperJs, YSlow, expressjs
PPTX
Node.js
PPTX
Nodejs 발표자료
Node.js 첫걸음
Startup JavaScript 9 - Socket.IO 실시간 통신
Node.js intro
Leadweb Nodejs
막하는 스터디 첫 번째 만남 Node.js
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Node.js
Nodejs 발표자료

What's hot (20)

PDF
Node.js 기본
PDF
Node.js 기본과정
PPTX
아꿈사 발표 Node JS 프로그래밍 8장
PDF
진짜기초 Node.js
PDF
Node.js 심화과정
PPTX
Node.js의 도입과 활용
PDF
Node.js 현재와 미래
PDF
막하는스터디 두번째만남 Express(20151025)
PDF
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
PDF
20141229 dklee docker
PDF
Play node conference
PDF
Node.js 시작하기
PDF
세션3 node.js의 의미와 자바의 대안
PPTX
PHP를 위한 NginX(엔진엑스) 시작과 설정
PPTX
Node.js + Websocket 삽질기
PDF
Javascript everywhere - Node.js | Devon 2012
PDF
파크히어 Realm 사용 사례
PDF
Node.js at OKJSP
PDF
Python server-101
PDF
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
Node.js 기본
Node.js 기본과정
아꿈사 발표 Node JS 프로그래밍 8장
진짜기초 Node.js
Node.js 심화과정
Node.js의 도입과 활용
Node.js 현재와 미래
막하는스터디 두번째만남 Express(20151025)
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
20141229 dklee docker
Play node conference
Node.js 시작하기
세션3 node.js의 의미와 자바의 대안
PHP를 위한 NginX(엔진엑스) 시작과 설정
Node.js + Websocket 삽질기
Javascript everywhere - Node.js | Devon 2012
파크히어 Realm 사용 사례
Node.js at OKJSP
Python server-101
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
Ad

Viewers also liked (20)

PDF
1.Startup JavaScript - 프로그래밍 기초
PPTX
Startup JavaScript 8 - NPM, Express.JS
PPTX
Startup JavaScript 6 - 함수, 스코프, 클로저
PDF
2.Startup JavaScript - 연산자
PPTX
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
PPTX
Startup JavaScript 4 - 객체
PPTX
Startup JavaScript 10 - OpenAPI & RSS 활용
PPTX
Startup JavaScript 3 - 조건문, 반복문, 예외처리
PDF
123D Design - 모델링 기초
PPTX
Startup 123D Design - 9. 강아지 모델링
PPTX
Startup 123D Design - 8.벤치 만들기
PPTX
123D Design - 컵 만들기
PPTX
123D Design - 화분 만들기
PPTX
123D Design - 전구 디자인 하기
PPTX
Startup 123D Design - 7.물뿌리개 만들기
PPTX
123D Design - 정리함 만들기
PPTX
Startup 123D Design - 10. 3D프린팅
PDF
Personal Interconnect AUdio - piAu manual
PDF
[WEB UI BASIC] JavaScript 1탄
PPTX
JavaScript defer & async
1.Startup JavaScript - 프로그래밍 기초
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 6 - 함수, 스코프, 클로저
2.Startup JavaScript - 연산자
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 4 - 객체
Startup JavaScript 10 - OpenAPI & RSS 활용
Startup JavaScript 3 - 조건문, 반복문, 예외처리
123D Design - 모델링 기초
Startup 123D Design - 9. 강아지 모델링
Startup 123D Design - 8.벤치 만들기
123D Design - 컵 만들기
123D Design - 화분 만들기
123D Design - 전구 디자인 하기
Startup 123D Design - 7.물뿌리개 만들기
123D Design - 정리함 만들기
Startup 123D Design - 10. 3D프린팅
Personal Interconnect AUdio - piAu manual
[WEB UI BASIC] JavaScript 1탄
JavaScript defer & async
Ad

Similar to Startup JavaScript 7 - Node.JS 기초 (20)

PDF
Node.js 팀 스터디 발표자료.
PDF
[IoT] MAKE with Open H/W + Node.JS - 3rd
PPTX
Node js[stg]onimusha 20140725
PDF
Nodejs발표자료 - 팀 세미나용
PDF
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
PPTX
Node week1
PPTX
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
PDF
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
PDF
JavaScript Everywhere from Mobile and Robot
PDF
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
PPTX
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
PDF
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
PPTX
빠르게훓어보는 Node.js와 Vert.x
PPTX
ARTIK 710 IoT class 02
PPTX
한양대학교 셔틀시스템 셔틀콕 개발기
PDF
Node map keynote -FOSS4G Osaka
PDF
[111217 아꿈사연말모임] 웹소켓과온라인게임
PDF
Node.js 20버전에 변경된 점들.pdf
PDF
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
PDF
Internship backend
Node.js 팀 스터디 발표자료.
[IoT] MAKE with Open H/W + Node.JS - 3rd
Node js[stg]onimusha 20140725
Nodejs발표자료 - 팀 세미나용
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Node week1
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JavaScript Everywhere from Mobile and Robot
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
빠르게훓어보는 Node.js와 Vert.x
ARTIK 710 IoT class 02
한양대학교 셔틀시스템 셔틀콕 개발기
Node map keynote -FOSS4G Osaka
[111217 아꿈사연말모임] 웹소켓과온라인게임
Node.js 20버전에 변경된 점들.pdf
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
Internship backend

More from Circulus (9)

PDF
라즈베리파이와자바스크립트로만드는 IoT
PDF
라즈베리파이입문 - 연세대 특강
PDF
123D Design - 스마트폰 케이스 모델링
PDF
piBo- Personal Intelligent roBOt
PDF
웨어러블 디바이스를 활용한 개인용 지능형 로봇
PDF
라즈베리파이 Circulus API 가이드
PDF
라즈베리파이로 IoT 시작하기 복습
PDF
라즈베리파이와 자바스크립트로 IoT 시작하기
PDF
라즈베라파이란 무엇인가?
라즈베리파이와자바스크립트로만드는 IoT
라즈베리파이입문 - 연세대 특강
123D Design - 스마트폰 케이스 모델링
piBo- Personal Intelligent roBOt
웨어러블 디바이스를 활용한 개인용 지능형 로봇
라즈베리파이 Circulus API 가이드
라즈베리파이로 IoT 시작하기 복습
라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베라파이란 무엇인가?

Startup JavaScript 7 - Node.JS 기초

  • 1. Startup JavaScript 7. Node.JS 소개 THINKER TO MAKER x
  • 2. Full Stack Developer THINKER TO MAKER Node.JS
  • 3. JavaScript 활용의 확산 구글의 Chromium 프로젝트를 위한 V8 엔진 개발 브라우저 성능 비약적인 발전, 오픈소스로 인한 타 분야 적용 가능성 대두 오픈소스 JIT(Just In Time) 가상 머신 오픈소스 JavaScript 엔진 크롬 브라우저에 탑재 실행하기 전 기계어로 컴파일 JavaScript 처리 성능 향상 인라인 캐싱(Inline Caching) 최적화 기법 적용
  • 4. 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 관련 자료
  • 5. Node.JS with Hardware 운영체제가 있는 시스템에 설치 가능 -> 마이크로컴퓨터에 탑재 가능 하드웨어 제어용 API 제공(SerialPort, WiringPi) -> Things 제작 가능 + Hardware
  • 6. Event-Loop Non-blocking I/O 와 단일 스레드 이벤트 루프를 통한 높은 처리 성능 이는 I/O 처리가 많은 프로그래밍에 특히 효율적 임 Event Loop Event Event Event Event Event Event Queue Thread Pool file system network process other < 14CACHE 250RAM 41,000,000Disk 240,000,000Network
  • 7. Node.JS 선택 LTS(Long Term Support) 와 일반버전으로 제공 됨 최신 기술을 위해서는 일반 버전이 좋으나, 운영 고려 시 LTS 버전이 용이
  • 8. Node.JS 설치 http://www.nodejs.org 6.X 버전대의 LTS 가 2016년 11월 부터 시작 됨. 다운로드 및 설치
  • 9. Node.JS 설치 확인 Node.JS 및 NPM 설치 버전 확인. 명령 뒤에 –v 를 이용하여 버전 확인 정상적으로 설치되었다면, Node.JS 는 6.x.x, NPM 은 3.x.x 형태로 표시 됨
  • 10. Hello World 확인 Node 를 시작하면, 인터프리터 형식으로 프로그래밍이 가능 console.log(‘hello world’) 를 입력하여 결과가 나오는 지 확인
  • 11. 기본 편집 프로그램 설치 다양한 코딩 용 프로그램 존재. Note Pad++, Sublime Text 가 많이 쓰임. 최근에는 Visual Studio Code, Atom 등도 많이 사용되고 있음
  • 12. 초 간단 웹 서버 구축 THINKER TO MAKER http module
  • 13. 웹 서버 구축하기 HTTP 는 HTML 페이지 및 파일을 전달하는데 쓰이는 프로토콜 임 HTTP 웹 서버와 클라이언트를 생성하는 것과 관련된 기능을 담당
  • 14. 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 에서는 단 몇 줄만으로 서버 구축을 할 수 있음
  • 15. 내장 객체 THINKER TO MAKER process, os
  • 16. 내장 모듈 Process 프로그램과 관련된 정보를 나타내는 객체로, 브라우저에 존재하지 않음 메소드/변수 명 설명 argv 실행 매개변수, 어떤 파일에서 실행된 것인지 알려줌 env 컴퓨터 환경 관련 정보 version NodeJS 정보 반환 (ex 0.12.01) arch 프로그램 아키텍처 (ex 32bit, 64bit) platform 플랫폼 memoryUsage() 메모리 사용량 uptime() 프로그램이 실행된 시간 exit() 프로그램 종료
  • 17. 내장 모듈 OS 운영체제와 관련된 유틸리티 함수. require(‘os’) 로 정의하여 사용 함. 메소드 명 설명 tmpdir() 시스템의 기본 임시 폴더를 반환 hostname() 운영 체제의 호스트 이름 type() 운영 체제의 이름 platform() 운영체제 arch() CPU 아키텍쳐 uptime() 운영체제가 실행된 시간 loadavg() 운영체제 Load Average totalmem() 메모리 freemem() 가용 메모리 cpus() cpu getNetworkInterfaces() 네트워크 환경
  • 18. 파일 관리 및 실행 THINKER TO MAKER fs, child_process
  • 19. 파일 쓰기/읽기 간단하게 파일을 읽고 쓸 수 있음. 동기식, 비 동기식 방법 모두 지원 함 상황에 따라 맞는 방식을 선택해야 함. var fs = require('fs'); // Sync Write fs.writeFileSync('hello1.txt','Hello World'); // Async Write fs.writeFile('hello1.txt','Hello World', function(err){ if(err) { throw err; } });; // Sync read var data = fs.readFileSync('hello1.txt','utf8'); console.log(data); // Async read fs.readFile('hello2.txt','utf8', function(err, data){ if(err){ throw err; } console.log(data); });;
  • 20. 디렉토리 관리 디렉토리를 읽고/쓰고/삭제 하는 다양한 동기/비동기 라이브러리 제공. 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; } });
  • 21. 파일 실행 파일 실행을 위해 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); });
  • 22. W www.circul.us G group.circul.us S social.circul.us C cafe.circul.us CONTACT.US [email protected] THINKER TO MAKER ANY QUESTION? x

Editor's Notes

  • #2: Circulus 팀 박종건입니다. 위 사진은 작년 창조경제박람회때 포스터 운반하던 파이보의 모습입니다. 파이보와 함께 펼쳐가는 미래를 이야기 하겠습니다.