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

What's hot

Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
Han Jung Hyun
 
Node.js 기본과정
Node.js 기본과정Node.js 기본과정
Node.js 기본과정
Seokyou (Kevin) Hong
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
Woo Yeong Choi
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.js
Woo Jin Kim
 
Node.js 심화과정
Node.js 심화과정Node.js 심화과정
Node.js 심화과정
Seokyou (Kevin) Hong
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
Jin wook
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
JeongHun Byeon
 
막하는스터디 두번째만남 Express(20151025)
막하는스터디 두번째만남 Express(20151025)막하는스터디 두번째만남 Express(20151025)
막하는스터디 두번째만남 Express(20151025)
연웅 조
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
John Kim
 
20141229 dklee docker
20141229 dklee docker20141229 dklee docker
20141229 dklee docker
DK Lee
 
Play node conference
Play node conferencePlay node conference
Play node conference
John Kim
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기
Huey Park
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
Lee Ji Eun
 
PHP를 위한 NginX(엔진엑스) 시작과 설정
PHP를 위한 NginX(엔진엑스) 시작과 설정PHP를 위한 NginX(엔진엑스) 시작과 설정
PHP를 위한 NginX(엔진엑스) 시작과 설정
Jin wook
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기
Paprikhan
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
선협 이
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
JeongHun Byeon
 
Python server-101
Python server-101Python server-101
Python server-101
Huey Park
 
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기sung ki choi
 

What's hot (20)

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

Viewers also liked

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

Viewers also liked (20)

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

Similar to Startup JavaScript 7 - Node.JS 기초

[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
Tommy Lee
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
Wooyoung Ko
 
Internship backend
Internship backendInternship backend
Internship backend
Yein Sim
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
Terry Cho
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JinKwon Lee
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
Park Jonggun
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영
Nalee Jang
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
흥배 최
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
Ji-Woong Choi
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
JEEHYUN PAIK
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
jeong seok yang
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.
SeungWoo Lee
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희
찬희 이
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
유명환 FunFun Yoo
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
Opennaru, inc.
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Jeongkyu Shin
 
20131217 html5
20131217 html520131217 html5
20131217 html5
DK Lee
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
wonyong hwang
 

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

[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
 
Internship backend
Internship backendInternship backend
Internship backend
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic
 
셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영셸 스크립트를 이용한 클라우드 시스템 운영
셸 스크립트를 이용한 클라우드 시스템 운영
 
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
KGC 2016 오픈소스 네트워크 엔진 Super socket 사용하기
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 

More from Circulus

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

More from Circulus (10)

라즈베리파이와자바스크립트로만드는 IoT
라즈베리파이와자바스크립트로만드는 IoT라즈베리파이와자바스크립트로만드는 IoT
라즈베리파이와자바스크립트로만드는 IoT
 
라즈베리파이입문 - 연세대 특강
라즈베리파이입문 - 연세대 특강라즈베리파이입문 - 연세대 특강
라즈베리파이입문 - 연세대 특강
 
123D Design - 스마트폰 케이스 모델링
123D Design - 스마트폰 케이스 모델링123D Design - 스마트폰 케이스 모델링
123D Design - 스마트폰 케이스 모델링
 
JavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and RobotJavaScript Everywhere from Mobile and Robot
JavaScript Everywhere from Mobile and Robot
 
piBo- Personal Intelligent roBOt
piBo- Personal Intelligent roBOtpiBo- Personal Intelligent roBOt
piBo- Personal Intelligent roBOt
 
웨어러블 디바이스를 활용한 개인용 지능형 로봇
웨어러블 디바이스를 활용한 개인용 지능형 로봇웨어러블 디바이스를 활용한 개인용 지능형 로봇
웨어러블 디바이스를 활용한 개인용 지능형 로봇
 
라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드라즈베리파이 Circulus API 가이드
라즈베리파이 Circulus API 가이드
 
라즈베리파이로 IoT 시작하기 복습
라즈베리파이로 IoT 시작하기 복습라즈베리파이로 IoT 시작하기 복습
라즈베리파이로 IoT 시작하기 복습
 
라즈베리파이와 자바스크립트로 IoT 시작하기
라즈베리파이와 자바스크립트로 IoT 시작하기라즈베리파이와 자바스크립트로 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 circulus@circul.us THINKER TO MAKER ANY QUESTION? x

Editor's Notes

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