node.js를 처음 접하는 개발자를 위한 스터디 자료입니다.
실습 위주로, 간단한 웹 페이지를 만들어 보는 것을 목표로 하며,
express를 활용하기에 앞서, node.js 기본 API만으로 GET/POST 처리 방식을 알아봅니다.
내용의 깊이가 있지는 않으며, 단지 node.js의 입문을 위한 가벼운 수준으로 내용이 구성되었습니다.
node.js를 처음 접하는 개발자를 위한 스터디 자료입니다.
실습 위주로, 간단한 웹 페이지를 만들어 보는 것을 목표로 하며,
express를 활용하기에 앞서, node.js 기본 API만으로 GET/POST 처리 방식을 알아봅니다.
내용의 깊이가 있지는 않으며, 단지 node.js의 입문을 위한 가벼운 수준으로 내용이 구성되었습니다.
본 슬라이드는 Windows환경에서 NginX구동을 실습하기 위해, PHP를 예로 들어 진행하고 있습니다. NginX는 PHP 동적웹페이지에 대한 처리보다, 정적 HTTP 서버에 적합 합니다.
본 슬라이드는 시작과 구동에 초점을 맞추고 있습니다. 설정관련 내용은 아래 공식 문서를 참조할 수 있습니다.
http://nginx.org/en/docs/beginners_guide.html
본 슬라이드는 Windows환경에서 NginX구동을 실습하기 위해, PHP를 예로 들어 진행하고 있습니다. NginX는 PHP 동적웹페이지에 대한 처리보다, 정적 HTTP 서버에 적합 합니다.
본 슬라이드는 시작과 구동에 초점을 맞추고 있습니다. 설정관련 내용은 아래 공식 문서를 참조할 수 있습니다.
http://nginx.org/en/docs/beginners_guide.html
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
IoT 시대에 Opensource H/W 와 NodeJS 를 이용하여 누구나 나만의 H/W + S/W + Service 를 만들기 위한 교육 과정을 만들어 보았습니다.
상상했던 아이디어를 Raspberry Pi 기반으로 나만의 IoT 제품을 현실로 만들어 보세요.
Lesson 1 - Introduction : IoT개요, Opensource H/W, 라즈베리파이 기초
Lesson 2 - Linux : Raspberry Pi 에서 리눅스 활용하기
Lesson 3 - Node.JS : Raspberry Pi 에서 Node.JS 로 프로그래밍 하기
Lesson 4 - Sensor : GPIO 를 Node.JS 로 동작시켜 센서 제어하기
Lesson 5 - Project : Raspberry Pi 로 스마트폰 + 무선 IoT 오디오 제작
챕터가 완성되는대로 추가적으로 공유하겠습니다.
Circulus Site - http://www.circul.us
Circulus Group - http://group.circul.us
This slide describes why OpenStack is Operating System (OS).
오픈스택을 왜 클라우드 운영체제라고 부르는지, 운영체제가 반드시 가지고 있어야 할 구성요소들을 오픈스택 구성요소들과 비교 분석함으로써 오픈스택을 알아보는 내용을 담고 있습니다.
Backend.AI (https://backend.ai)는 클라우드 및 온-프레미스 환경에서 여러 사용자가 안전하고 효율적으로 컴퓨팅 자원을 공유할 수 있는 머신러닝에 특화된 인프라 관리 프레임워크입니다. 현재 널리 사용되고 있는 오픈소스 기술인 OpenStack, Kubernetes 등과 비교하여 어떤 특징과 차이점이 있는지 소개하고, 프레임워크의 구조와 기반 기술 및 응용 사례를 데모와 함께 소개합니다.
자바스크립트로 라즈베리파이 제어 및 리모콘을 만들어 IoT를 실습하는 방법을 다루고 있습니다. 관련 목차는 다음과 같습니다.
0. 시작하기 앞서 (4p)
1. 파이를 동작시켜 보자 - 초기설정 (17p)
2. 파이의 운영체제 - Linux 속성실습 (33p)
3. JavaScript로 하드웨어 제어를 - Node.JS (57p)
4. 거리 측정하고 정보 표시 하기 - GPIO (81p)
5. 스마트폰으로 리모콘을 - jQueryMobile (119p)
6. 인터넷으로 음악과 날씨를 - OpenAPI & RSS (137p)
7. 오디오 소프트웨어 개발하기 - (153p)
8. 외관을 생각대로 만들기 - 3D 프린팅 (189p)
9. 언제 어디서나 동작하는 IoT- Circulus (192p)
10. 마무리(256p)
JavaScript Everywhere from Mobile and RobotCirculus
Build own idea using javascript from mobile and robot!
서큘러스 팀은 IoT 교육/개발 플랫폼과 데이터 수집 및 분석 시스템, 그리고 모바일과 봇 형 제품군까지 모든것을 JavaScript 하나만으로 제작및 통합하였습니다. 하나의 언어로 통합하여 얻게 되는 장점에 대해 살펴봅니다.
Personal intelligent robot as friend & assistant. Also pibo can support programming (Blockly, JavaScript) & making education. We will launch end of this year.
KICT 디바이스랩의 파워유저 활동의 종료보고회 자료입니다.
개인용 지능형 로봇 piBo 의 개선과 더불어, 웨어러블 디바이스(Gear S2) 를 통해 로봇을 제어하는 내용이 추가되었습니다.
아울러, Circulus 에서 기존엔 모바일 부터 하드웨어까지 클라우드상에서 개발할 수 있었던 상황에서, 이제는 웨어러블도 역시 JavaScript 만으로 개발 가능하게 업그레이드 되었습니다.
IoT EDU/MAKE 플랫폼인 Circulus 를 이용하여,
라즈베리파이를 개발할 때 제공되는 API 가이드라인입니다.
이 가이드에서는
LED, 초음파센서, 7세그먼트, 온습도 센서, 조도 센서, SW/HW PWM, TTS, 카메라, 사운드인식, 위치파악, 모니터링, 광학문자인식(OCR) 등에 대해 단 몇줄의 자바스크립트만으로 제어하는 예제를 다루고 있습니다. 앞으로도 지속적으로 추가될 예정입니다.
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
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 에서는 단 몇 줄만으로 서버 구축을 할 수 있음
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() 네트워크 환경
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
Circulus 팀 박종건입니다. 위 사진은 작년 창조경제박람회때 포스터 운반하던 파이보의 모습입니다.
파이보와 함께 펼쳐가는 미래를 이야기 하겠습니다.