SlideShare a Scribd company logo
1 of 98
Opensource H/W + Node JS
IoT ๋”ฐ๋ผ์žก๊ธฐ
Day 1
Internet Of Things
IoT ๊ฐœ์š”
์˜คํ”ˆ ์†Œ์Šค ํ•˜๋“œ์›จ์–ด
(open-source hardware)
์˜คํ”ˆ ์†Œ์Šค ๋ฌธํ™”์˜ ์ผ๋ถ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ง์ด๋‹ค.
ํ•ด๋‹น ์ œํ’ˆ๊ณผ ๋˜‘๊ฐ™์€ ๋ชจ์–‘ ๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐ
ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(ํšŒ๋กœ๋„, ์ž์žฌ ๋ช…์„ธ์„œ, ์ธ์‡„ ํšŒ๋กœ ๊ธฐํŒ ๋„๋ฉด ๋“ฑ)
์„ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœํ•œ ์ „์ž์ œํ’ˆ
ํ•˜๋“œ์›จ์–ด ๊ธฐ์ˆ  ์–ธ์–ด๊ฐ€ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœ๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” ๋…ผ๋ฆฌ
์†Œ์ž
IoT ๊ฐœ์š”
Opensource H/W ๊ฐœ์š”
์˜คํ”ˆ ์†Œ์Šค ํ•˜๋“œ์›จ์–ด
(open-source hardware)
์˜คํ”ˆ ์†Œ์Šค ๋ฌธํ™”์˜ ์ผ๋ถ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ง์ด๋‹ค.
ํ•ด๋‹น ์ œํ’ˆ๊ณผ ๋˜‘๊ฐ™์€ ๋ชจ์–‘ ๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐ
ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(ํšŒ๋กœ๋„, ์ž์žฌ ๋ช…์„ธ์„œ, ์ธ์‡„ ํšŒ๋กœ ๊ธฐํŒ ๋„๋ฉด ๋“ฑ)
์„ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœํ•œ ์ „์ž์ œํ’ˆ
ํ•˜๋“œ์›จ์–ด ๊ธฐ์ˆ  ์–ธ์–ด๊ฐ€ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœ๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” ๋…ผ๋ฆฌ
์†Œ์ž
Opensource H/W
Opensource H/W
ETC
Why raspbbery pi
Name Arduino
Raspberry Pi
A+
Raspberry Pi
B+
Raspberry Pi
2
Beaglebone
Black
Price $29.95 $20 $35 $35 $45
Processor ATMega 328 ARM 11
ARM
Cortex A7
ARM
Cortex A8
Clock Speed 16Mhz 700 Mhz 900 Mhz
1 Ghz
RAM 2KB 256MB 512MB 1GB 512MB
Multi Core Single Single Single Quad Single
Flash 32KB SD Card SD Card SD Card SD Card
GPIO 26 40 40 40 92
Ethernet N/A 10/100 10/100 10/100 10/100
USB N/A USB 2.0 x 1 USB 2.0 x 4 USB 2.0 x4 USB 2.0 x 1
Video Out N/A HDMI, Composite N/A
Audio Out N/A HDMI, Analog Analog
Raspberry Pi
The maker culture is a contemporary culture or subculture
representing a technology-based extension of DIY culture.
Typical interests enjoyed by the maker culture include
engineering-oriented pursuits such as electronics, robotics,
3-D printing, and the use of CNC tools,[1] as well as more
traditional activities such as metalworking, woodworking,
and traditional arts and crafts. The subculture stresses new
and unique applications of technologies, and encourages
invention and prototyping.[2] There is a strong focus on
using and learning practical skills and applying them
creatively
Maker
Maker
Maker
ExpressJS + Socket.IO
ExpressJS + Socket.IO
ExpressJS + Socket.IO
ExpressJS + Socket.IO
Raspberry Pi OS
XMBC
Minecraft
Neogeo
OS ์„ค์น˜ํ•˜๊ธฐ
Raspberry Pi OS
Rasbian
- Debian Linux ๊ณ„์—ด ๋ฆฌ๋ˆ…์Šค
(ubuntu linux ๋„ debian linux ๊ณ„์—ด)
- ํŒจํ‚ค์ง€ ์ง€์› ๋ฐ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํ’๋ถ€ํ•จ
- ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด OS ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ์Œ
- ๊ด€๋ จ ๋ธ”๋กœ๊ทธ, ํ•™์Šต์„œ, ๊ณ ๊ฐ์ง€์›์ด ๊ฐ€์žฅ ๋งŽ์€ OS ์ž„
Download
- ์ตœ์‹  Raspbian ๋‹ค์šด๋กœ๋“œ
http://downloads.raspberrypi.org/raspbian_latest
- ๊ธฐํƒ€ OS ๋‹ค์šด๋กœ๋“œ
http://www.raspberrypi.org/downloads/
Rasbian ์„ค์น˜
์œˆ๋„์šฐ ์„ค์น˜
- Win32 Disk Imager ์ถ”์ฒœ
- http://sourceforge.net/projects/win32diskimager/
Rasbian ์„ค์น˜
Mac ์„ค์น˜
$ unzip ~/2014-12-24-wheezy-raspbian.zip
๋งˆ์šดํŠธ ์žฅ์น˜ ๋ณด๊ธฐ
$ df โ€“h
์“ธ ์žฅ์น˜ ์ถ”๊ฐ€ ํ›„ ๋งˆ์šดํŠธ ์žฅ์น˜ ํ™•์ธ
$ df โ€“h (/dev/disk2s1 ์ด๋ผ๋Š” ์‹์œผ๋กœ ์žฅ์น˜ ์ถ”๊ฐ€)
์žฅ์น˜ ๋งˆ์šดํŠธ ํ•˜๊ธฐ (๋งˆ์šดํŠธ ํ•˜๊ณ  ๋‚œ ํ›„ ์ด๋ฆ„์ด ๋ฐ”๋€œ)
$ sudo diskutil unmount /dev/disk2s1
(/dev/disk2s1 -> /dev/rdisk2)
๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ธฐ
$ sudo dd bs=4M if=~/2014-12-24-wheey-raspbian.img
of=/dev/rdisk2
๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ ๊บผ๋‚ด๊ธฐ
$ sudo diskutil eject /dev/rdisk3
Rasbian ์„ค์น˜
Linux ์„ค์น˜
$ unzip ~/2014-12-24-wheezy-raspbian.zip
๋งˆ์šดํŠธ ์žฅ์น˜ ๋ณด๊ธฐ
$ df โ€“h
์“ธ ์žฅ์น˜ ์ถ”๊ฐ€ ํ›„ ๋งˆ์šดํŠธ ์žฅ์น˜ ํ™•์ธ
$ df โ€“h (/dev/sdd1 ์ด๋ผ๋Š” ์‹์œผ๋กœ ์žฅ์น˜ ์ถ”๊ฐ€)
์žฅ์น˜ ๋งˆ์šดํŠธ ํ•˜๊ธฐ
$ umount /dev/sdd1
๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ธฐ
$ dd bs=4M if=~/2014-12-24-wheey-raspbian.img
of=/dev/sdd
๊ธฐ๋ก ํ™•์ธ [๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ ๋น„์šฐ๊ธฐ]
$ sudo sync
๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •
Rasbian ์„ค์น˜
๊ธฐ๋ณธ ์„ค์ • ํ•˜๊ธฐ
$ sudo raspi-config
๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค (x-window) ์‹คํ–‰
$ startx
ํ”„๋กœ๊ทธ๋žจ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ
$ sudo apt-get update
์„ค์น˜๋œ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ๋ฒ„์ „ ์—… ๋œ ํ”„๋กœ๊ทธ๋žจ ์—…๋ฐ์ดํŠธ
$ sudo apt-get upgrade
Rasbian ์„ค์น˜
OS ์žฌ๋ถ€ํŒ…
$ sudo reboot
$ sudo shutdown โ€“r now
OS ์ข…๋ฃŒ
$ sudo halt
$ sudo shutdown โ€“h now
Rasbian ์„ค์ •
ํŒŒ์ผ ์‹œ์Šคํ…œ ํ™•์žฅํ•˜๊ธฐ
Rasbian ์„ค์ •
ํ‚ค๋ณด๋“œ ์„ค์ •ํ•˜๊ธฐ
Rasbian ์„ค์ •
ํŒจ์Šค์›Œ๋“œ ๋ณ€๊ฒฝ
Rasbian ์„ค์ •
๋กœ์ผ€์ผ ์„ค์ •
Rasbian ์„ค์ •
ํŒจ์Šค์›Œ๋“œ ์„ค์ •
Rasbian ์„ค์ •
๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
Linux ๊ธฐ์ดˆ
Linux ๊ธฐ๋ณธ ๋ช…๋ น
ํ˜„์žฌ ์œ„์น˜ ํ™•์ธ
$ pwd
/home/pi
ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ ํ™•์ธ
$ ls
$ ls โ€“a // ์ˆจ๊น€ํŒŒ์ผ ํ‘œ์‹œ
q๋นˆ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ
touch raspberry
touch pi
๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ
$ mkdir mypi
Linux ๊ธฐ๋ณธ ๋ช…๋ น
ํŒŒ์ผ ์ด๋™ํ•˜๊ธฐ
$ mv [์›๋ณธ ํŒŒ์ผ๋ช…] [๋Œ€์ƒ ํŒŒ์ผ๋ช…]
$ mv pi mypi
๊ฒฝ๋กœ ์ด๋™ํ•˜๊ธฐ
$ cd [์ด๋™ํ•  ๋””๋ ‰ํ† ๋ฆฌ]
$ cd mypi
ํŒŒ์ผ ๋ณต์‚ฌํ•˜๊ธฐ
$ cp [์›๋ณธ ํŒŒ์ผ๋ช…] [๋Œ€์ƒ ํŒŒ์ผ๋ช…]
$ cp pi pi2
๋””๋ ‰ํ† ๋ฆฌ ๋ณต์‚ฌํ•˜๊ธฐ
$ cp โ€“r [์›๋ณธ ๋””๋ ‰ํ† ๋ฆฌ] [๋Œ€์ƒ ๋””๋ ‰ํ† ๋ฆฌ]
$ cp โ€“r pi1 pi2
Linux ๊ธฐ๋ณธ ๋ช…๋ น
ํŒŒ์ผ ์‚ญ์ œํ•˜๊ธฐ
$ rm [ํŒŒ์ผ ๋ช…]
$ rm pi1
๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œํ•˜๊ธฐ
$ rm โ€“r pi2
$ rm โ€“rf pi2
์ ˆ๋Œ€ ๊ฒฝ๋กœ์™€ ์ƒ๋Œ€ ๊ฒฝ๋กœ
์ ˆ๋Œ€ ๊ฒฝ๋กœ
- / ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ง€์ •
- ์‹œ์Šคํ…œ์˜ ์–ด๋Š ์œ„์น˜์—์„œ๋„ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋Š” ๋™์ผํ•œ ์œ„์น˜๋ฅผ ๋‚˜
ํƒ€๋ƒ„
- ์–ด๋””์—์„œ๋“ ์ง€ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™
์ƒ๋Œ€ ๊ฒฝ๋กœ
- ํŒŒ์ผ๋ช…, ๋””๋ ‰ํ† ๋ฆฌ๋ช…, ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ƒ๋Œ€๊ฒฝ๋กœ
-
ํŒŒ์ผ ์ฐพ๊ธฐ
์‹œ์Šคํ…œ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” find ๋ช…๋ น์„
์ด์šฉํ•œ๋‹ค.
$ find /home/pi โ€“name index.js
root ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ• ์ˆ˜ ์žˆ๋‹ค (์ด ๊ฒฝ์šฐ ์˜ค๋žœ์‹œ๊ฐ„
์ด ๊ฑธ๋ฆฐ๋‹ค.)
$ find / -name index.js
ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธ
์ด์ „์— ์ž…๋ ฅํ–ˆ๋˜ ๋ช…๋ น์„ ๋‹ค์‹œ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ , ์ด์ „ ๋ช…๋ น์„
๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ์ƒํ•˜ ํ™”์‚ดํ‘œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด์ „
๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ history ๋ช…๋ น์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
$ history
์ด์ „์— ์‹คํ–‰ํ•œ ํŠน์ •๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ grep ๋ช…๋ น
์„ ์ด์šฉํ•ด ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
$ history | grep apt-get
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰
Foreground ์‹คํ–‰ : ์ผ๋ฐ˜์ ์ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ
๋™์ž‘์„ ํ™”๋ฉด์—์„œ ํ™•์ธํ•œ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด
์„œ๋Š” ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค.
$ top
Background ์‹คํ–‰ : ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ์„ Background ๋กœ ์‹คํ–‰ํ•œ
๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ• 
ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ช…๋ น์–ด ๋’ค์— & ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.
$ top &
๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ Forground ๋กœ ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด fg ๋ช…๋ น
์„ ํ™œ์šฉํ•œ๋‹ค
$fg
Linux ๊ถŒํ•œ
ํŒŒ์ผ ๊ถŒํ•œ
๋ˆ„๊ฐ€ ํŒŒ์ผ์— ์ ‘๊ทผํ•ด๋„ ๋˜๋Š”์ง€, ์•ˆ๋˜๋Š” ์ง€, ์–ด๋””๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ์ง€
๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€์ด ํŒŒ์ผ ๊ถŒํ•œ ์ž„
1.์ฝ๊ธฐ ๊ถŒํ•œ : ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š๋ƒ ์—†๋Š๋ƒ
2.์“ฐ๊ธฐ ๊ถŒํ•œ : ํŒŒ์ผ์„ ์“ธ ์ˆ˜ ์žˆ๋Š๋ƒ ์—†๋Š๋ƒ
3.์‹คํ–‰ ๊ถŒํ•œ : ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š๋ƒ ์—†๋Š๋ƒ
User : ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค
Group : ํŒŒ์ผ์„ ์†Œ์œ ํ•œ ๊ทธ๋ฃน์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค
Others : ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
ํŒŒ์ผ ๊ถŒํ•œ
1. ์‚ฌ์šฉ์ž ๋ช…์ด ํ•ด๋‹น ํŒŒ์ผ์˜ ์†Œ์œ ์ž์™€ ๊ฐ™๋‹ค๋ฉด, ์ด ํŒŒ์ผ์— ์ ‘
๊ทผ ํ• ๋•Œ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์ด ์ ์šฉ๋จ
2. ํ•ด๋‹น ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋Š” ์•„๋‹ˆ์—ฌ๋„ ํŒŒ์ผ ๊ทธ๋ฃน์— ์†Œ์†๋˜์–ด ์žˆ
๋‹ค๋ฉด ๊ทธ๋ฃน ๊ถŒํ•œ์„ ์ ์šฉํ•จ
3. ํ•ด๋‹น ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋„ ์•„๋‹ˆ๊ณ  ๊ฐ™์€ ๊ทธ๋ฃน์— ์†Œ์†๋˜์ง€๋„ ์•Š
์•˜๋‹ค๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์—ญํ• ์— ๋น„๋กฏ๋œ ๊ถŒํ•œ๋งŒ ์ ์šฉ ๋จ
ํŒŒ์ผ ๊ถŒํ•œ
๊ถŒํ•œ ์„ค์ • ๋ถ€๋ถ„ ๊ฐ€๋Šฅํ•œ ์ธ์ˆ˜
์—ญํ•  u ์‚ฌ์šฉ์ž
g ๊ทธ๋ฃน
o ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž / ๋‹ค๋ฅธ ์„ธ๊ณ„
a ์ „๋ถ€
์ ์šฉ ๋ฐฉ๋ฒ• + ์ถ”๊ฐ€
- ์ œ๊ฑฐ
= ๋ถ„๋ช…ํ•˜๊ฒŒ ์„ค์ •
์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ r ์ฝ๊ธฐ
w ์“ฐ๊ธฐ
x ์‹คํ–‰
๋ฐ”๋กœ ๊ฐ€๊ธฐ / ๋งํฌ
1. Soft Link : ์œˆ๋„์šฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ”๋กœ๊ฐ€๊ธฐ ํ˜•ํƒœ์™€ ์œ ์‚ฌํ•จ.
์†Œํ”„ํŠธ๋งํฌ๋Š” ์‹ค์ œ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๋””์Šคํฌ์˜ ์‹ค์ œ ์œ„์น˜
๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ๋งŒ ํ•˜๋Š” ํฌ์ธํ„ฐ ํŒŒ์ผ์„ ๋งŒ๋“ฆ.
$ ln โ€“s pi pi2
1. Hard Link : ํŒŒ์ผ์€ ํ•˜๋‚˜์ธ๋ฐ, ์ด๋ฆ„์„ ๋‘ ๊ฐœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”
๋ฐฉ๋ฒ•์ž„. ์›๋ž˜ ํŒŒ์ผ๊ณผ ์ „ํ˜€ ๊ตฌ๋ณ„๋˜์ง€ ์•Š์Œ. ๊ฐ™์€ ์œ„์น˜๋ฅผ ๊ฐ€
๋ฆฌํ‚ค๋Š” ์ด๋ฆ„์ด ๋‘๊ฐœ๋ผ๋Š” ์˜๋ฏธ
$ ln pi pi2
๊ถŒํ•œ
root๋Š” ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ์‹œ์ž‘์ ์„ ์ผ๊ธฐ๋„ ํ•˜๋ฉฐ ์‹œ์Šคํ…œ์˜ ์ด ๊ด€
๋ฆฌ๋ฅผ ์ฑ…์ž„์ง€๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ๋„ ํ•จ. ์‹œ์Šคํ…œ ์ฐจ์›์˜ ๊ธฐ
๋Šฅ ๋˜๋Š” ๊ด€๋ฆฌ ์ฐจ์›์˜ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” ๋ฃจํŠธ๋กœ ์‹ ์›์„ ํ™•์ธ
๋ฐ›์•„์•ผ ํ•จ
sudo ๋ช…๋ น์„ ์ด์šฉํ•˜๋ฉด ์Šˆํผ์‚ฌ์šฉ์ž๊ฐ€ ๋˜์–ด root ์˜ ๊ถŒํ•œ์„ ๋ถ€
์—ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
$ sudo visudo
๋งˆ์ด๋„ˆ์Šค(-) ๊ธฐํ˜ธ๋Š” ํ•ด๋‹น ํ™˜๊ฒฝ์œผ๋กœ ๋กœ๊ทธ์ธ ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜
ํƒ€๋‚ด๋ฉฐ, ๋‹ค๋ฅธ์ธ์ˆ˜๊ฐ€ ๋ถ™์ง€ ์•ˆ์œผ๋ฉด ์Šˆํผ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ
$ sudo su โ€“
$ sudo -i
RFTM
Read The Flaming Manual (์„ค๋ช…์„œ์— ๋‹ค ์žˆ์–ด. ์ฝ์–ด๋ด!)
๋ชจ๋ฅด๋Š” ๋ช…๋ น์ด ์žˆ์„๋•Œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€๋ถ€๋ถ„ ์„ค๋ช…์„œ๊ฐ€ ๋”ธ
๋ ค ์žˆ๋‹ค.
$ man sudoers
Linux ๊ด€๋ฆฌ
์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง
์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ด์•ผํ•  ์ฃผ์š” ์—…๋ฌด์ค‘ ํ•˜๋‚˜๋Š” ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค
์‚ฌ์šฉ ํ˜„ํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š” ใ…‡ใ„น์ž„
$ top
์ž‘๋™ ์‹œ๊ฐ„๊ณผ ๋กœ๋“œ ํ‰๊ท 
ํ˜„์žฌ ์‹œ๊ฐ„๊ณผ ์‹œ์Šคํ…œ์ด ๋™์ž‘ํ•œ ์‹œ๊ฐ„์„ ์•Œ ์ˆ˜ ์žˆ์Œ.
๋กœ๋“œ ํ‰๊ท ์€ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฑ๋ถ„์œจ์„ ํ˜„์žฌ ใ……์šฉ๊ฐ€
๋Šฅํ•œ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ฒ™๋„.
์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰๊ณผ CPU ์‚ฌ์šฉ ์š”๊ทœ๋Ÿ‰ ๋ชจ๋‘ ๋น„๊ตํ•จ
ํƒœ์Šคํฌ
์ „์ฒด ํ”„๋กœ์„ธ์Šค ์ˆ˜
ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ˆ˜
๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž ์ž๊ณ  ์žˆ๋Š”(๋Œ€๊ธฐ ๋ชจ๋“œ) ํ”„๋กœ์„ธ์Šค ์ˆ˜
์ค‘๋‹จ๋œ ํ”„๋กœ์„ธ์Šค ์ˆ˜
์ข€๋น„ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜
cpu ์‚ฌ์šฉ ๋ฐฑ๋ถ„์œจ
us : ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ• ๋‹น ๋จ
sy : ์‹œ์Šคํ…œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ• ๋‹น ๋จ
ni : CPU ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด nice ๋œ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋จ
id : idle ์„ ๋‚˜ํƒ€๋ƒ„
wa : I/O๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ๋ ˆ์Šค์— ํ• ๋‹น ๋จ
hi : ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น ๋จ
si : ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น ๋จ
st : ํ•˜์ดํผ๋ฐ”์ด์ € (๊ฐ€์ƒ ํ”Œ๋žซํผ์„ ์‹คํ–‰ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด)์—
๋นผ์•—๊ธด ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•จ
ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”
PID : ํ”„๋กœ์„ธ์Šค์˜ id ๋ฒˆํ˜ธ
USER : ํ”„๋กœ์„ธ์Šค๋ฅผ ์†Œ์œ ํ•œ ์‚ฌ์šฉ์ž
PR : ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„  ์ˆœ์œ„
NI : ํ”„๋กœ์„ธ์Šค์˜ nice ๊ฐ’
VIRT : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ๋น„ํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘
RES : ์‹ค์ œ ์ƒ์ฃผํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ
SHR : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘
S : ํ”„๋กœ์„ธ์Šค ์ƒํƒœ (๊ฐ€๋ น, ์ž ์ž๊ธฐ ์ƒํƒœ, ์‹คํ–‰ ์ค‘ ์ƒํƒœ, ์ข€๋น„ ์ƒ
ํƒœ)
%CPU : CPU ์‚ฌ์šฉ ๋ฐฑ๋ถ„์œจ
%MEM : ๋žจ ์‚ฌ์šฉ ๋ฐฑ๋ถ„์œจ
TIME+ : ํƒœ์Šคํฌ๊ฐ€ ์‹œ์ž‘๋œ ์ดํ›„ ์‚ฌ์šฉํ•œ CPU ์‹œ๊ฐ„
COMMAND : ๋ช…๋ น์˜ ์‹ค์ œ ์ด๋ฆ„
๋ฉ”๋ชจ๋ฆฌ/๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ
$ free โ€“m
๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์€ df (Disk Free) ๋ช…๋ น์„ ์‚ฌ์šฉ. ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ
ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€“h (Human) ์˜ต์…˜์„ ํ™œ์šฉ
$ df
$ df โ€“h
๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฐ ํŒŒ์ผ ์‚ฌ์šฉ๋Ÿ‰์„ ์ƒ์„ธํ•˜๊ฒŒ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” du
(Disk Usage) ๋ช…๋ น์„ ์ด์šฉ
$ du
$ du โ€“h
$ sudo du โ€“sh /var/log
์—ฐ๊ฒฐ๋œ ์žฅ์น˜ ํ™•์ธ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์˜ USB ํฌํŠธ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์žฅ์น˜๋ฅผ ํ™•์ธํ•˜๊ณ ์ž
ํ• ๋•Œ lsusb ๋ช…๋ น์„ ์‚ฌ์šฉ. ์ž์„ธํžˆ ๋ณด๊ณ ์ž ํ•˜๋ฉด โ€“v ์˜ต์…˜ ์ด์šฉ
$ lsusb
$ lsusb โ€“v
๋ถ€ํŒ… ์‹œ ๋กœ๋“œ๋˜์–ด ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ๋น„ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ ์ž
ํ• ๋•Œ lspci ๋ช…๋ น์„ ์‚ฌ์šฉ. ์ž์„ธํžˆ ๋ณด๊ณ ์ž ํ•˜๋ฉด โ€“v ์˜ต์…˜ ใ…‡์šฉ
$ lspci
$ lspci -v
ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ
ps (processes snapshot) ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ
์ด์šฉ
$ ps
์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ํ‘œ์ค€๋ฐฉ์‹์œผ๋กœ ๋ณด๊ณ ์ž ํ• ๋•Œ
$ ps โ€“ef
ํ™”๋ฉด๋ฐ–์œผ๋กœ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ๋ณด๊ณ ์ž ํ• ๋•Œ less ๋ฅผ ์ถ”๊ฐ€. ์œ„์•„
๋ž˜ ํ™”์‚ดํ‘œํ‚ค๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Œ
$ ps โ€“ef | less
ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ
๋ช…๋ น ๊ฒฐํ•ฉ์œผ๋กœ ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜
์žˆ์Œ
$ ps โ€“ef | grep sshd
grep ๋ช…๋ น์ด ๋ณด์ด๋ฏ€๋กœ โ€“v ์˜ต์…˜์„ ํ™œ์šฉํ•˜๋ฉด grep ์ด ์—†๋Š” ๋ชจ
๋“  ํ–‰์„ ๋ฆฌํ„ด ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
$ ps โ€“ef | grep sshd | grep โ€“v grep
๊ฒฐ๊ณผ๋ฅผ ์ขํžˆ๊ธฐ ์œ„ํ•ด awk ๋ช…๋ น์ด์šฉํ•œ๋‹ค.
$1 ์€ ์ฒซ๋ฒˆ ์งธ ํ…์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  $2 ๋Š” ๋‘๋ฒˆ ์งธ ํ…์ŠคํŠธ๋ฅผ
๊ฐ€๋ฆฌํ‚จ๋‹ค
$ ps โ€“ef | grep ssh | grep โ€“v grep | awk โ€˜{print $2}โ€™
ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ
xargs ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „์— ์‹คํ–‰๋œ ๋ช…๋ น์˜ ์ถœ๋ ฅํ–‰์„ ๋‹ค๋ฅธ
๋ช…๋ น์˜ ๊ฐœ๋ณ„ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
ps โ€“ef | grep ssh | grep โ€“v grep | awk โ€˜{print $2}โ€™ | xargs kill
-l
cron ๋ช…๋ น
cron ์€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ช…๋ น์„ ์‹ฑํ–‰ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž„.
์–ด๋–ค ์‹œ๊ฐ„ ๊ทœ์น™์„ ์ „๋‹ฌํ•˜๋ฉด ๊ทธ์— ๋”ฐ๋ผ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด ์ฃผ๋Š”
๊ฒƒ
ํ˜„์žฌ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ๋ชฉ๋ก (crontab) ํ™•์ธ
$ crontab โ€“l
ํฌ๋ก ํƒญ ํ•ญ๋ชฉ์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ฃผ์„ ํ™•์ธ
$ crontab โ€“e
[๋ช‡๋ถ„] [๋ช‡์‹œ(24)] [๋ช‡์ผ] [๋ช‡์›”] [์š”์ผ๋ฒˆํ˜ธ(์ผ์š”์ผ0, ํ† ์š”์ผ6)]
ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ
UID ํฌ๋กœ์„ธ์Šค์˜ ์†Œ์œ ์ž
PID ํ”„๋กœ์„ธ์Šค์˜ PID ๋ฒˆํ˜ธ
PPID ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ PID ๋ฒˆํ˜ธ
C ํ”„๋กœ์„ธ์Šค์˜ CPU ์‚ฌ์šฉ๋Ÿ‰
STIME ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘ ์‹œ๊ฐ„
TTY ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ํ„ฐ๋ฏธ๋„
TIME ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ๋น„ํ•œ ๋ˆ„์  CPU ์‹œ๊ฐ„
CMD ํ”„๋กœ์„ธ์Šค์˜ ์ปค๋งจ๋“œ ๋ผ์ธ ์ˆ˜
ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ
Kill ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š”
๋™์ž‘์ด์™ธ์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—
๊ทธ ์‹ ํ˜ธ์— ์‘๋‹ต ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•จ
Raspbian ์—์„œ ์ด 64 ๊ฐ€์ง€์˜ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ
์‹ ํ˜ธ ๋ชฉ๋ก ๋ณด๊ธฐ
$ kill โ€“l
ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ
$ kill <signal> <PID>
$ kill -9 <PID>
ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ
1 SIGHUP hang-up ์„ ์ค„์ธ ๋ง. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
์— ํ˜„์žฌ ์—ฐ๊ฒฐ์„ ๋Š์œผ๋ผ๊ณ  ์•Œ๋ฆฐ๋‹ค. ์• 
ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ ์‚ฌ์šฉ
3 SIGQUIT quit ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ •์ƒ ์ข…๋ฃŒํ•˜๋ผ
๊ณ  ์•Œ๋ฆผ
6 SIGABRT about ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋œ๋‹ค๊ณ  ์•Œ๋ฆผ.
ํ”„๋กœ๊ทธ๋žจ์€ ๊ณง๋ฐ”๋กœ ๋‹ซํž˜
9 SIGKILL ๊ฐ•์ œ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…”์„ ์ข…๋ฃŒ ํ•จ
ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ
Kill ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š”
๋™์ž‘์ด์™ธ์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—
๊ทธ ์‹ ํ˜ธ์— ์‘๋‹ต ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•จ
Raspbian ์—์„œ ์ด 64 ๊ฐ€์ง€์˜ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ
์‹ ํ˜ธ ๋ชฉ๋ก ๋ณด๊ธฐ
$ kill โ€“l
ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ
$ kill <signal> <PID>
$ kill -9 <PID>
Linux ์—๋””ํ„ฐ
ํŒŒ์ผ ํŽธ์ง‘ํ•˜๊ธฐ
๋ฆฌ๋ˆ…์Šค ์ฝ˜์†”์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋Š”๋ฐ, vim ๊ณผ nano ๊ฐ€
๋งŽ์ด ์ด์šฉ ๋จ
nano : ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์ดˆ ๊ฒฝ๋Ÿ‰ ํ…์ŠคํŠธ ์—๋””ํ„ฐ. ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šฐ
๋ฉด์„œ ์“ธ๋ชจ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์ œ๊ณต
vim : ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์šฐ๋‚˜ ๊ฐ•๋ ฅํ•จ. nano ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‘
ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋น„๊ต ๊ธฐ๋Šฅ, ์ž˜๋ผ๋„ฃ๊ธฐ, ๋ถ™์—ฌ๋„ฃ๊ธฐ, ํ•˜์ด
๋ผ์ดํŠธ๋“ฑ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
$ nano test.txt
๋‹จ์ถ•ํ‚ค
ํ‘œ์‹œ ๋‹จ์ถ• ํ‚ค ๋™์ž‘
^G CTRL + G CTRL + G
^O CTRL + O Write Out
^Y CTRL + Y Prev Page
^K CTRL + K Cut Text
^C CTRL + C Cursor Position
^X CTRL + X Exit
^W CTRL + W Where Is
^V CTRL + V Next Page
^V CTRL + U Un cut text
^T CTRL + T To Spell
NodeJS
Node.js๋Š” ํ™•์žฅ์„ฑ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(ํŠนํžˆ ์„œ๋ฒ„ ์‚ฌ
์ด๋“œ) ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์ด๋‹ค. Node.js๋Š”
์ž‘์„ฑ์–ธ์–ด๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉฐ Non-blocking I/O์™€
๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•œ ๋†’์€ ์ฒ˜๋ฆฌ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ
๋‹ค.
Node.js๋Š” ๋‚ด์žฅ HTTP ์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์›น
์„œ๋ฒ„์—์„œ ์•„ํŒŒ์น˜ ๋“ฑ์˜ ๋ณ„๋„์˜ ์†Œํ”„ํŠธ์›จ์–ด ์—†์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ
์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์›น์„œ๋ฒ„์˜ ๋™์ž‘์— ์žˆ์–ด ๋” ๋งŽ์€ ํ†ต์ œ
๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค.
NodeJS
ExpressJS + Socket.IO
NodeJS Download
์ง์ˆ˜ ๋ฒ„์ „์€ stable, ํ™€์ˆ˜ ๋ฒ„์ „์€ unstable
case 1. ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์ปดํŒŒ์ผ
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential libssl-dev pkg-confi
$ wget http://nodejs.org/dist/v0.10.35/node-v0.10.35.tar.gz
$ tar โ€“zxf node-v.10.24.tar.gz
$ ./configure
$ make && sudo make install
case 2. ๋ฐฐํฌํŒ ์„ค์น˜
$ wget http://node-
arm.herokuapp.com/node_latest_armhf.deb
$ sudo dpkg -i node_latest_armhf.deb
Hello world ํ…Œ์ŠคํŠธ
๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ Hello World ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World on Raspberry Pi!n');
}).listen(80, '127.0.0.1');
console.log('Server running at http://127.0.0.1:80/');
ํŒจํ‚ค์ง€ ์„ค์น˜
์ „์—ญ ์„ค์น˜ /usr/local/node-modules
$ npm install โ€“g <ํŒจํ‚ค์ง€๋ช…>
์ง€์—ญ ๋ชจ๋“œ
$ npm install <ํŒจํ‚ค์ง€๋ช…>
๋ฒ„์ „ ์„ค์น˜
$ npm install <ํŒจํ‚ค์ง€๋ช…>@<๋ฒ„์ „>
$ npm install jshint@1.1.0 // 1.1.0 ์„ค์น˜
$ npm install jshint@1.1.x // ํ•ด๋‹น Branch์˜ ์ตœ์‹  ๋ฐฐํฌํŒ
$ npm install jshint@โ€<2.0โ€ // ํ•˜์œ„ ๋ฒ„์ „
$ npm install jshint@โ€>=0.1.0<2.1โ€ // 0.1๊ณผ 2.1์‚ฌ์ด์˜ ์ตœ์‹ 
๋ฐฐํฌํŒ
ํŒจํ‚ค์ง€ ์‚ญ์ œ/์—…๋ฐ์ดํŠธ
์ „์—ญ ์„ค์น˜ ์ œ๊ฑฐ /usr/local/node-modules
$ npm uninstall โ€“g <ํŒจํ‚ค์ง€๋ช…>
์ง€์—ญ ์„ค์น˜ ์ œ๊ฑฐ
$ npm uninstall <ํŒจํ‚ค์ง€๋ช…>
์—…๋ฐ์ดํŠธ
$ npm update <ํŒจํ‚ค์ง€๋ช…>
$ npm โ€“g update <ํŒจํ‚ค์ง€๋ช…>
๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ
var sum = function(a,b){
return a+b;
}
exports.sum = sum;
ํ˜น์€
exports.sum = function(a,b){
return a+b;
}
์‹์œผ๋กœ ์ง์ ‘ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Œ. ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฒ•์€
var sum = require(โ€˜./sum.jsโ€™);
console.log(sum.sum(1,2));
๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ
var sum = function(a,b){
return a+b;
}
exports.sum = sum;
ํ˜น์€
exports.sum = function(a,b){
return a+b;
}
์‹์œผ๋กœ ์ง์ ‘ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Œ. ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฒ•์€
var sum = require(โ€˜./sum.jsโ€™);
console.log(sum.sum(1,2));
๋ชจ๋“ˆ ๋กœ๋”ฉ
์ฝ”์–ด ๋ชจ๋“ˆ : nodejs ๋ฐฐํฌํŒ์— ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ๋œ ๋ชจ๋“ˆ
var http = require(โ€˜httpโ€™);
๋ชจ๋“ˆ ๋ช… ๋งŒ์œผ๋กœ ์ฐธ์กฐํ•จ. ๊ฐ™์€ ์ด๋ฆ„์˜ ์„œ๋“œํŒŒํ‹ฐ ๋ชจ๋“ˆ์ด ์กด์žฌ
ํ•˜๋”๋ผ๋„ ์šฐ์„ ์ ์œผ๋กœ ๋กœ๋”ฉ ๋จ
ํŒŒ์ผ ๋ชจ๋“ˆ ๋กœ๋”ฉ : ์ ˆ๋Œ€/์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋กœ๋”ฉํ•˜๋ฉด ๋กœ๋”ฉ ๊ฐ€๋Šฅ
/home/a/b.js
var module = require(โ€˜/home/a/bโ€™);
var module = require(โ€˜./b.jsโ€™);
var module = require(โ€˜./bโ€™);
๋ชจ๋“ˆ ๋กœ๋”ฉ
์ฝ”์–ด ๋ชจ๋“ˆ : nodejs ๋ฐฐํฌํŒ์— ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ๋œ ๋ชจ๋“ˆ
var http = require(โ€˜httpโ€™);
๋ชจ๋“ˆ ๋ช… ๋งŒ์œผ๋กœ ์ฐธ์กฐํ•จ. ๊ฐ™์€ ์ด๋ฆ„์˜ ์„œ๋“œํŒŒํ‹ฐ ๋ชจ๋“ˆ์ด ์กด์žฌ
ํ•˜๋”๋ผ๋„ ์šฐ์„ ์ ์œผ๋กœ ๋กœ๋”ฉ ๋จ
ํŒŒ์ผ ๋ชจ๋“ˆ ๋กœ๋”ฉ : ์ ˆ๋Œ€/์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋กœ๋”ฉํ•˜๋ฉด ๋กœ๋”ฉ ๊ฐ€๋Šฅ
/home/a/b.js
var module = require(โ€˜/home/a/bโ€™);
var module = require(โ€˜./b.jsโ€™);
var module = require(โ€˜./bโ€™);
๋ชจ๋“ˆ ๋กœ๋”ฉ
ํด๋” ๋ชจ๋“ˆ ๋กœ๋”ฉ
var module = require(โ€˜./moduleDirโ€™);
ํ•ด๋‹น ํด๋” ๋‚ด์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์Œ
ํŒจํ‚ค์ง€๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, package.json ์„ ์ฐพ๋Š”๋‹ค.
package.json ์˜ main ์†์„ฑ์„ ๋ถ„์„ํ•ด ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค.
package.json ํŒŒ์ผ์ด ์—†์œผ๋ฉด index.js ๋ฅผ ์ฐพ๋Š”๋‹ค
๋ชจ๋“ˆ ๋กœ๋”ฉ
ํด๋” ๋ชจ๋“ˆ ๋กœ๋”ฉ
var module = require(โ€˜./moduleDirโ€™);
ํ•ด๋‹น ํด๋” ๋‚ด์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์Œ
ํŒจํ‚ค์ง€๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, package.json ์„ ์ฐพ๋Š”๋‹ค.
package.json ์˜ main ์†์„ฑ์„ ๋ถ„์„ํ•ด ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค.
package.json ํŒŒ์ผ์ด ์—†์œผ๋ฉด index.js ๋ฅผ ์ฐพ๋Š”๋‹ค
node_modules ํด๋”๋ฅผ ์ด์šฉํ•œ ๋กœ๋”ฉ
var module = require(โ€˜myModule.jsโ€™)
์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ
์˜ ./node_modules/myModule.js ๋ฅผ ์ฐจ์Œ
๊ทธ๋žŸ ์—†์œผ๋ฉด ์ƒ์œ„์˜ node_modules ๋ฅผ ์ฐพ์Œ.
์œ„์˜ ๋ฐฉ์‹์œผ๋กœ root ํด๋”๊นŒ์ง€ ํƒ์ƒ‰ ํ›„ ์—†์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฐ˜ํ™˜
๋‚ด์žฅ ๊ฐ์ฒด
processs
ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด
๋ธŒ๋ผ์šฐ์ €์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Œ
argv : ์‹คํ–‰ ๋งค๊ฐœ๋ณ€์ˆ˜ โ€“ ์–ด๋–ค ํŒŒ์ผ์—์„œ ์‹คํ–‰ ๋œ ๊ฒƒ์ธ์ง€?
env : ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ ๊ด€๋ จ ์ •๋ณด
version : Node.JS ๋ฒ„์ „ 0.10.35
arch : ํ”„๋กœ๊ทธ๋žจ ์•„ํ‚คํ…์ณ 32bit, 64bit
platform : ํ”Œ๋žซํผ
memoryUsage() : ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
upime() : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๋œ ์‹œ๊ฐ„
exit() : ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
๋‚ด์žฅ ๋ชจ๋“ˆ
os
์šด์˜ ์ฒด์ œ์™€ ๊ด€๋ จ๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋“ค
require(โ€˜osโ€™) ๋กœ ์‚ฌ์šฉ
tmpdir() : ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ์ž„์‹œ ํด๋”๋ฅผ ๋ฆฌํ„ด
hostname() : ์šด์˜์ฒด์ œ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
type() : ์šด์˜์ฒด์ œ์˜ ์ด๋ฆ„
platform() : ์šด์˜์ฒด์ œ
arch() : CPU ์•„ํ‚คํ…์ณ
uptime() : ์šด์˜์ฒด์ œ ์‹คํ–‰๋œ ์‹œ๊ฐ„
loadavg() : ์šด์˜์ฒด์ œ loadaverage
totalmem() : ๋ฉ”๋ชจ๋ฆฌ
freemem() : ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ
cpus() : cpu
getNetworkInterfaces() : ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ
์•”ํ˜ธํ™” ๋ชจ๋“ˆ
.crypto ๋ชจ๋“ˆ์€ ํ•ด์‹œ ์ƒ์„ฑ๊ณผ ์•”ํ˜ธํ™”๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ์ž„
id/password ๋ฅผ ์ €์žฅํ•˜๋Š” ์„œ๋ฒ„์—์„œ ๋งค์šฐ ์ค‘์š”
ํ•ด์‹œํ™” ํ•œ ๊ฒฐ๊ณผ ๊ฐ’๋งŒ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์ปค๊ฐ€ ๊ฒฐ๊ณผ๊ฐ’์„ ๊ฐ€์ง€
๊ณ  ์žˆ์–ด๋„ ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Œ
์•”ํ˜ธํ™” ๋ชจ๋“ˆ
.var crypto = require(โ€˜cryptoโ€™);
var key = โ€˜websecretkeyโ€™;
var input = โ€˜12345678โ€™;
var cipher = crypto.createCipher(โ€˜aes192โ€™,key);
cipher.update(input, โ€˜utf-8โ€™, โ€˜base64โ€™);
var cipherOutput = cipher.final(โ€˜base64โ€™);
var decipher = crypto.createDecipher(โ€˜aes192โ€™,key);
decipher.update(cipherOutput, โ€˜base64โ€™, โ€˜utf-8โ€™);
var decipherOutput = decipher.final(โ€˜utf-8โ€™);
console.log(โ€˜input : โ€˜ + input);
console.log(โ€˜cipherOutput : โ€˜ + cipherOutput);
console.log(โ€˜decipherOutput : โ€˜ + decipherOutput);
Express JS
Expressjs
.nodejs ๋ฅผ ์œ„ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ํ•˜๋‚˜ ํ˜น์ธ
์—ฌ๋Ÿฌ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„
์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•จ
var express = require(โ€˜expressโ€™);
var app = express();
app.get(โ€˜/โ€™, function(req, res){
res.send(โ€˜hello world!โ€™)
});
var server = app.listen(3000, function(){
var host = server.address().address;
var port = server.address().port;
console.log(โ€˜ExpressJS example at http://$s:$sโ€™, host, port);
});
๊ธฐ๋ณธ ๋ผ์šฐํŒ…
.HTTP ์š”์ฒญ ๋ฉ”์†Œ๋“œ GET, POST, PUT, DELETE ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ 
์ธ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
// respond with "Hello World!" on the homepage
app.get('/', function (req, res) {
res.send('Hello World!');
});
// accept POST request on the homepage
app.post('/', function (req, res) {
res.send('Got a POST request');
});
// accept PUT request at /user
app.put('/user', function (req, res) {
res.send('Got a PUT request at /user');
});
// accept DELETE request at /user
app.delete('/user', function (req, res) {
res.send('Got a DELETE request at /user');
});
๊ธฐ๋ณธ ๋ผ์šฐํŒ…
.HTTP ์š”์ฒญ ๋ฉ”์†Œ๋“œ GET, POST, PUT, DELETE ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ 
์ธ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
// a middleware sub-stack which handles GET requests to /user/:id
app.get('/user/:id', function (req, res, next) {
// if user id is 0, skip to the next route
if (req.params.id == 0) next('route');
// else pass the control to the next middleware in this stack
else next(); //
}, function (req, res, next) {
// render a regular page
res.render('regular');
});
// handler for /user/:id which renders a special page
app.get('/user/:id', function (req, res, next) {
res.render('special');
});
๊ณ ๊ธ‰ ๋ผ์šฐํŒ…
.4.x ๋ถ€ํ„ฐ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ router ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ
var app = express();
var router = express.Router();
// a middleware with no mount path, gets executed for every request to the router
router.use(function (req, res, next) {
console.log('Time:', Date.now()); next();
});
// a middleware sub-stack shows request info for any type of HTTP request to /user/:id
router.use('/user/:id', function(req, res, next) {
console.log('Request URL:', req.originalUrl);
next();
}, function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
๊ณ ๊ธ‰ ๋ผ์šฐํŒ…
.4.x ๋ถ€ํ„ฐ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ router ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ
// a middleware sub-stack which handles GET requests to /user/:id
router.get('/user/:id', function (req, res, next) {
// if user id is 0, skip to the next router
if (req.params.id == 0) next('route');
// else pass the control to the next middleware in this stack
else next(); //
}, function (req, res, next) {
// render a regular page
res.render('regular');
});
// handler for /user/:id which renders a special page
router.get('/user/:id', function (req, res, next) {
console.log(req.params.id);
res.render('special');
});
// mount the router on the app
app.use('/', router);
Express JS ์ž๋™ ํ”„๋กœ์ ํŠธ
์ž๋™ ์ƒ์„ฑ ํˆด์„ ํ™œ์šฉํ•˜๋ฉด, ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด
์คŒ. ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ, ๊ฐœ๋ฐœ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
$ npm install express-generator โ€“g
์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
$ express myapp
๊ณ ๊ธ‰ ๋ผ์šฐํŒ…
create : myapp
create : myapp/package.json
create : myapp/app.js
create : myapp/public
create : myapp/public/javascripts
create : myapp/public/images
create : myapp/routes
create : myapp/routes/index.js
create : myapp/routes/users.js
create : myapp/public/stylesheets
create : myapp/public/stylesheets/style.css
create : myapp/views
create : myapp/views/index.jade
create : myapp/views/layout.jade
create : myapp/views/error.jade
create : myapp/bin
create : myapp/bin/www
install dependencies:
$ cd myapp && npm install
run the app:
$ DEBUG=myapp ./bin/www
Socket.IO
SocketIO
Unicast Multicast
BroadcastAnycast
SocketIO
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.on('ferret', function (name, fn) {
fn('woot');
});
});
Server side example
SocketIO
var io = require(โ€˜socket.ioโ€™).listen(80);
io.sockets.on(โ€˜connectionโ€™, function (socket) {
socket.broadcast.emit(โ€˜user connectedโ€™);
});
Server side example
Expand your dimension
Circulus (http://www.circul.us) Since 2013
Park Jonggun, Lee Yunjai, Ki Yeonah, Lee Jonghee

More Related Content

What's hot

PI day in COREA
PI day in COREAPI day in COREA
PI day in COREAPark Jonggun
ย 
IoT with Raspberry Pi + Node JS - Chapter 2
IoT with Raspberry Pi + Node JS - Chapter 2IoT with Raspberry Pi + Node JS - Chapter 2
IoT with Raspberry Pi + Node JS - Chapter 2Park Jonggun
ย 
Ipython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต
Ipython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ตIpython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต
Ipython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ตHyun-sik Yoo
ย 
์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธ
์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธ
์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธDong Hwa Jeong
ย 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypiYeonah Ki
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐPark Jonggun
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒJin-Hyun Park
ย 
IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3Park Jonggun
ย 
Docker์„ค์น˜
Docker์„ค์น˜Docker์„ค์น˜
Docker์„ค์น˜Yujin Hwang
ย 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypiYeonah Ki
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•Circulus
ย 
Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•MoamBae
ย 
๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธ
๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธ๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธ
๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธSam Kim
ย 
caanoo Ernice
caanoo Ernicecaanoo Ernice
caanoo Ernicejumiss
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œCirculus
ย 
๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐflashscope
ย 
์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑ
์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑ์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑ
์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑJong Wook Kim
ย 
Sonar ์„ค์น˜
Sonar ์„ค์น˜Sonar ์„ค์น˜
Sonar ์„ค์น˜Hyeonseok Yang
ย 

What's hot (20)

Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
ย 
PI day in COREA
PI day in COREAPI day in COREA
PI day in COREA
ย 
IoT with Raspberry Pi + Node JS - Chapter 2
IoT with Raspberry Pi + Node JS - Chapter 2IoT with Raspberry Pi + Node JS - Chapter 2
IoT with Raspberry Pi + Node JS - Chapter 2
ย 
Ipython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต
Ipython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ตIpython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต
Ipython server(Jupyter Server) แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต
ย 
์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธ
์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธ
์‚ฌ๋ฌผ์ธํ„ฐ๋„ท ๋…ธํŠธ4_๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๊ธฐ๋ณธ
ย 
About raspberrypi
About raspberrypiAbout raspberrypi
About raspberrypi
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด IoT ์‹œ์ž‘ํ•˜๊ธฐ
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋กœ ์‹œ์ž‘ํ•˜๋Š” Iot์„ธ์ƒ
ย 
IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3
ย 
Docker์„ค์น˜
Docker์„ค์น˜Docker์„ค์น˜
Docker์„ค์น˜
ย 
Start io t_with_raspberrypi
Start io t_with_raspberrypiStart io t_with_raspberrypi
Start io t_with_raspberrypi
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์ž…๋ฌธ - ์—ฐ์„ธ๋Œ€ ํŠน๊ฐ•
ย 
Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
Raspberry pi ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
ย 
๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธ
๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธ๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธ
๋„์ปค์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 1ํŽธ
ย 
caanoo Ernice
caanoo Ernicecaanoo Ernice
caanoo Ernice
ย 
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œ
๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด Circulus API ๊ฐ€์ด๋“œ
ย 
Maker ์˜คํ•ด์™€ ์ง„์‹ค
Maker ์˜คํ•ด์™€ ์ง„์‹คMaker ์˜คํ•ด์™€ ์ง„์‹ค
Maker ์˜คํ•ด์™€ ์ง„์‹ค
ย 
๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ SonarQube ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ
ย 
์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑ
์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑ์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑ
์ด๊ฒƒ์ด ๋ฆฌ๋ˆ…์Šค๋‹ค - ๊น€์ข…์šฑ
ย 
Sonar ์„ค์น˜
Sonar ์„ค์น˜Sonar ์„ค์น˜
Sonar ์„ค์น˜
ย 

Viewers also liked

Internet of things
Internet of thingsInternet of things
Internet of thingsArif Huda
ย 
Nodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณ
Nodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณNodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณ
Nodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณSe Joung Kim
ย 
[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉ
[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉ[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉ
[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉChiwon Song
ย 
Internet of Things
Internet of ThingsInternet of Things
Internet of Thingsprabhuram058
ย 
์•„๋‘์ด๋…ธ 2๊ฐ• maker_school
์•„๋‘์ด๋…ธ 2๊ฐ• maker_school์•„๋‘์ด๋…ธ 2๊ฐ• maker_school
์•„๋‘์ด๋…ธ 2๊ฐ• maker_schoolJosh Park
ย 
3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธ
3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธ3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธ
3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธChiwon Song
ย 
1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ต
1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ต1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ต
1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตYoung Jin Suh
ย 
[SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ 
[SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ [SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ 
[SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ uxzeitgeist
ย 
3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpio
3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpio3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpio
3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpioYoung Jin Suh
ย 
Credit Card Industry Analysis
Credit Card Industry AnalysisCredit Card Industry Analysis
Credit Card Industry Analysisnceo
ย 
์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ 
์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ ์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ 
์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ leesoohyeon
ย 
์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€
์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€
์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€์Šน์ต ํ™ฉ
ย 
๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒ
๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒ๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒ
๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒMunHaeng(Ricky) Lee
ย 
แ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Output
แ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Outputแ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Output
แ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Outputnceo
ย 
[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท
[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท
[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทNAVER D2
ย 
Samsung Pay, The future of Pay
Samsung Pay, The future of PaySamsung Pay, The future of Pay
Samsung Pay, The future of PayJay JH Park
ย 
Home automation using raspberry pi
Home automation using raspberry piHome automation using raspberry pi
Home automation using raspberry pidnp99
ย 

Viewers also liked (18)

Internet of things
Internet of thingsInternet of things
Internet of things
ย 
Nodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณ
Nodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณNodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณ
Nodejs ๊ธฐ๋ณธ ์•„ํ‚คํ…์ณ
ย 
[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉ
[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉ[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉ
[๊ฐ€์ƒํŽธ] แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅแ„‹แ…ฆ แ„‰แ…ขแ†ผแ„†แ…งแ†ผแ„‹แ…ณแ†ฏ แ„Œแ…ฎแ„‚แ…ณแ†ซ แ„‹แ…กแ„ƒแ…ฎแ„‹แ…ตแ„‚แ…ฉ
ย 
Internet of Things
Internet of ThingsInternet of Things
Internet of Things
ย 
์•„๋‘์ด๋…ธ 2๊ฐ• maker_school
์•„๋‘์ด๋…ธ 2๊ฐ• maker_school์•„๋‘์ด๋…ธ 2๊ฐ• maker_school
์•„๋‘์ด๋…ธ 2๊ฐ• maker_school
ย 
3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธ
3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธ3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธ
3D ํ”„๋ฆฐํ„ฐ์™€ ์•„๋‘์ด๋…ธ
ย 
1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ต
1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ต1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ต
1แ„Œแ…กแ†ผ แ„‰แ…กแ„†แ…ฎแ†ฏแ„‹แ…ตแ†ซแ„แ…ฅแ„‚แ…ฆแ†บแ„€แ…ช แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ต
ย 
[SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ 
[SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ [SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ 
[SK UX-HCI] ํผ์Šค๋„ ๋น…๋ฐ์ดํ„ฐ์™€ ๋ผ์ดํ”„๋กœ๊ทธ HCI-UX ๊ด€์ ์˜ IOT ๊ธฐ์ˆ 
ย 
3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpio
3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpio3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpio
3แ„Œแ…กแ†ผ แ„…แ…กแ„Œแ…ณแ„‡แ…ฆแ„…แ…ต แ„‘แ…กแ„‹แ…ตแ„‹แ…ช gpio
ย 
[1์ฐจ]๋ชจ๋ฐ”์ผ๊ฒฐ์ œ์™€ ์‚ผ์„ฑํŽ˜์ด(151003)
[1์ฐจ]๋ชจ๋ฐ”์ผ๊ฒฐ์ œ์™€ ์‚ผ์„ฑํŽ˜์ด(151003)[1์ฐจ]๋ชจ๋ฐ”์ผ๊ฒฐ์ œ์™€ ์‚ผ์„ฑํŽ˜์ด(151003)
[1์ฐจ]๋ชจ๋ฐ”์ผ๊ฒฐ์ œ์™€ ์‚ผ์„ฑํŽ˜์ด(151003)
ย 
Credit Card Industry Analysis
Credit Card Industry AnalysisCredit Card Industry Analysis
Credit Card Industry Analysis
ย 
์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ 
์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ ์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ 
์‚ผ์„ฑํŽ˜์ด ๊ฐœ์„ 
ย 
์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€
์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€
์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€
ย 
๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒ
๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒ๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒ
๊ฐ„ํŽธ๊ฒฐ์ œ ์‹œ์Šคํ…œ ๊ตฌ์ƒ
ย 
แ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Output
แ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Outputแ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Output
แ„‰แ…ตแ†ซแ„‹แ…ญแ†ผแ„แ…กแ„ƒแ…ณ แ„Œแ…ฅแ†ซแ„…แ…ฃแ†จ Best Output
ย 
[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท
[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท
[1C6]แ„‹แ…ฉแ„‘แ…ณแ†ซแ„‰แ…ฉแ„‰แ…ณ แ„’แ…กแ„ƒแ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ทแ„€แ…ช Node.jsแ„…แ…ฉ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„‚แ…ณแ†ซ IoT แ„‘แ…ณแ†ฏแ„…แ…ขแ†บแ„‘แ…ฉแ†ท
ย 
Samsung Pay, The future of Pay
Samsung Pay, The future of PaySamsung Pay, The future of Pay
Samsung Pay, The future of Pay
ย 
Home automation using raspberry pi
Home automation using raspberry piHome automation using raspberry pi
Home automation using raspberry pi
ย 

Similar to IoT with Raspberry Pi + Node JS - Chapter 1

Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1UNIST
ย 
shell and process
shell and processshell and process
shell and processChulgyu Shin
ย 
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„GangSeok Lee
ย 
Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
ย 
Network researching
Network researchingNetwork researching
Network researchinghyeok gyu Kwon
ย 
๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธ
๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธ๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธ
๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธSam Kim
ย 
Linux ๊ฐ•์˜์ž๋ฃŒ ed10
Linux ๊ฐ•์˜์ž๋ฃŒ ed10Linux ๊ฐ•์˜์ž๋ฃŒ ed10
Linux ๊ฐ•์˜์ž๋ฃŒ ed10hungrok
ย 
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 13
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž  13๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž  13
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 13์ข…์ธ ์ „
ย 
์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…
์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…
์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…Peter YoungSik Yun
ย 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driverjumiss
ย 
[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ข
[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ข[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ข
[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ขNAVER D2
ย 
๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐ
๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐ๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐ
๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐPete Lee
ย 
UNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œ
UNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œUNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œ
UNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œLee Sang-Ho
ย 
(140407) #fitalk d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„
(140407) #fitalk   d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„(140407) #fitalk   d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„
(140407) #fitalk d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„INSIGHT FORENSIC
ย 
๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1
๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1
๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1Sangho Park
ย 
linux1
linux1linux1
linux1sjw1969
ย 
แ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ต
แ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ตแ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ต
แ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ตSeungyong Lee
ย 
์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)
์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)
์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)Yoonsoo Kim
ย 

Similar to IoT with Raspberry Pi + Node JS - Chapter 1 (20)

Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1
ย 
shell and process
shell and processshell and process
shell and process
ย 
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
[2014 CodeEngn Conference 11] ์ด๊ฒฝ์‹ - ๋™์  ์ถ”์  ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ OS X ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ถ„์„
ย 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
ย 
Network researching
Network researchingNetwork researching
Network researching
ย 
๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธ
๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธ๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธ
๋„์ปค ์—†์ด ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ 2ํŽธ
ย 
Linux ๊ฐ•์˜์ž๋ฃŒ ed10
Linux ๊ฐ•์˜์ž๋ฃŒ ed10Linux ๊ฐ•์˜์ž๋ฃŒ ed10
Linux ๊ฐ•์˜์ž๋ฃŒ ed10
ย 
Linux tutorial
Linux tutorialLinux tutorial
Linux tutorial
ย 
Raspberry Pi Basic Usage
Raspberry Pi Basic UsageRaspberry Pi Basic Usage
Raspberry Pi Basic Usage
ย 
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 13
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž  13๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž  13
๋ง๊ณ 100 ๋ณด๋“œ๋กœ ๋†€์•„๋ณด์ž 13
ย 
์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…
์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…
์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ ์„ค๋ช…
ย 
caanoo Device driver
caanoo Device drivercaanoo Device driver
caanoo Device driver
ย 
[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ข
[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ข[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ข
[1A6]Dockerแ„…แ…ฉ แ„‡แ…ฉแ„‚แ…ณแ†ซ แ„‰แ…ฅแ„‡แ…ฅ แ„‹แ…ฎแ†ซแ„‹แ…งแ†ผแ„‹แ…ด แ„†แ…ตแ„…แ…ข
ย 
๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐ
๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐ๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐ
๋ฆฌ๋ˆ…์Šค ์‹œ์ž‘ํ•˜๊ธฐ
ย 
UNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œ
UNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œUNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œ
UNIX ์‹œ์Šคํ…œ 2014-2018๋…„ ๊ธฐ๋ง์‹œํ—˜ ๊ธฐ์ถœ๋ฌธ์ œ
ย 
(140407) #fitalk d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„
(140407) #fitalk   d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„(140407) #fitalk   d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„
(140407) #fitalk d trace๋ฅผ ์ด์šฉํ•œ ์•…์„ฑ์ฝ”๋“œ ๋™์  ๋ถ„์„
ย 
๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1
๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1
๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„ ์‹ค์Šต #1
ย 
linux1
linux1linux1
linux1
ย 
แ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ต
แ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ตแ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ต
แ„…แ…ตแ„‚แ…ฎแ†จแ„‰แ…ณ แ„แ…ฅแ„‚แ…ฅแ†ฏ แ„€แ…ตแ„Žแ…ฉ แ„แ…ขแ„‰แ…ณแ„แ…ณแ„€แ…ชแ†ซแ„…แ…ต
ย 
์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)
์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)
์˜คํ”ˆ ํ”Œ๋žซํผ ํƒ€์ด์  ๊ณผ ์ปจํŠธ๋ฆฌ๋ถ€์…˜ํ•˜๊ธฐ(์—ฐ์„ธ๋Œ€ ์˜คํ”ˆ์†Œ์Šค ๋ฏธ๋‹ˆ์ฝ˜์„œํŠธ)
ย 

More from Park Jonggun

Start IoT with jQueryMobile - ๊ธฐ์ดˆ6
Start IoT with jQueryMobile - ๊ธฐ์ดˆ6Start IoT with jQueryMobile - ๊ธฐ์ดˆ6
Start IoT with jQueryMobile - ๊ธฐ์ดˆ6Park Jonggun
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ5
Start IoT with jQueryMobile - ๊ธฐ์ดˆ5Start IoT with jQueryMobile - ๊ธฐ์ดˆ5
Start IoT with jQueryMobile - ๊ธฐ์ดˆ5Park Jonggun
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ4
Start IoT with jQueryMobile - ๊ธฐ์ดˆ4Start IoT with jQueryMobile - ๊ธฐ์ดˆ4
Start IoT with jQueryMobile - ๊ธฐ์ดˆ4Park Jonggun
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ3
Start IoT with jQueryMobile - ๊ธฐ์ดˆ3Start IoT with jQueryMobile - ๊ธฐ์ดˆ3
Start IoT with jQueryMobile - ๊ธฐ์ดˆ3Park Jonggun
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ2
Start IoT with jQueryMobile - ๊ธฐ์ดˆ2Start IoT with jQueryMobile - ๊ธฐ์ดˆ2
Start IoT with jQueryMobile - ๊ธฐ์ดˆ2Park Jonggun
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ1
Start IoT with jQueryMobile - ๊ธฐ์ดˆ1Start IoT with jQueryMobile - ๊ธฐ์ดˆ1
Start IoT with jQueryMobile - ๊ธฐ์ดˆ1Park Jonggun
ย 
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…Park Jonggun
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Park Jonggun
ย 
Start IoT with JavaScript - 5.๊ฐ์ฒด2
Start IoT with JavaScript - 5.๊ฐ์ฒด2Start IoT with JavaScript - 5.๊ฐ์ฒด2
Start IoT with JavaScript - 5.๊ฐ์ฒด2Park Jonggun
ย 
Start IoT with JavaScript - 4.๊ฐ์ฒด1
Start IoT with JavaScript - 4.๊ฐ์ฒด1Start IoT with JavaScript - 4.๊ฐ์ฒด1
Start IoT with JavaScript - 4.๊ฐ์ฒด1Park Jonggun
ย 
Start IoT with JavaScript - 3.์ œ์–ด
Start IoT with JavaScript - 3.์ œ์–ดStart IoT with JavaScript - 3.์ œ์–ด
Start IoT with JavaScript - 3.์ œ์–ดPark Jonggun
ย 
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์žStart IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์žPark Jonggun
ย 
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆStart IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆPark Jonggun
ย 
[SCSA] Thinker ์—์„œ Maker ๋กœ
[SCSA] Thinker ์—์„œ Maker ๋กœ[SCSA] Thinker ์—์„œ Maker ๋กœ
[SCSA] Thinker ์—์„œ Maker ๋กœPark Jonggun
ย 
๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04
๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04
๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04Park Jonggun
ย 
Circulus Introduction
Circulus IntroductionCirculus Introduction
Circulus IntroductionPark Jonggun
ย 

More from Park Jonggun (16)

Start IoT with jQueryMobile - ๊ธฐ์ดˆ6
Start IoT with jQueryMobile - ๊ธฐ์ดˆ6Start IoT with jQueryMobile - ๊ธฐ์ดˆ6
Start IoT with jQueryMobile - ๊ธฐ์ดˆ6
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ5
Start IoT with jQueryMobile - ๊ธฐ์ดˆ5Start IoT with jQueryMobile - ๊ธฐ์ดˆ5
Start IoT with jQueryMobile - ๊ธฐ์ดˆ5
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ4
Start IoT with jQueryMobile - ๊ธฐ์ดˆ4Start IoT with jQueryMobile - ๊ธฐ์ดˆ4
Start IoT with jQueryMobile - ๊ธฐ์ดˆ4
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ3
Start IoT with jQueryMobile - ๊ธฐ์ดˆ3Start IoT with jQueryMobile - ๊ธฐ์ดˆ3
Start IoT with jQueryMobile - ๊ธฐ์ดˆ3
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ2
Start IoT with jQueryMobile - ๊ธฐ์ดˆ2Start IoT with jQueryMobile - ๊ธฐ์ดˆ2
Start IoT with jQueryMobile - ๊ธฐ์ดˆ2
ย 
Start IoT with jQueryMobile - ๊ธฐ์ดˆ1
Start IoT with jQueryMobile - ๊ธฐ์ดˆ1Start IoT with jQueryMobile - ๊ธฐ์ดˆ1
Start IoT with jQueryMobile - ๊ธฐ์ดˆ1
ย 
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
Start IoT with JavaScript - 7.ํ”„๋กœํ† ํƒ€์ž…
ย 
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜Start IoT with JavaScript - 6.ํ•จ์ˆ˜
Start IoT with JavaScript - 6.ํ•จ์ˆ˜
ย 
Start IoT with JavaScript - 5.๊ฐ์ฒด2
Start IoT with JavaScript - 5.๊ฐ์ฒด2Start IoT with JavaScript - 5.๊ฐ์ฒด2
Start IoT with JavaScript - 5.๊ฐ์ฒด2
ย 
Start IoT with JavaScript - 4.๊ฐ์ฒด1
Start IoT with JavaScript - 4.๊ฐ์ฒด1Start IoT with JavaScript - 4.๊ฐ์ฒด1
Start IoT with JavaScript - 4.๊ฐ์ฒด1
ย 
Start IoT with JavaScript - 3.์ œ์–ด
Start IoT with JavaScript - 3.์ œ์–ดStart IoT with JavaScript - 3.์ œ์–ด
Start IoT with JavaScript - 3.์ œ์–ด
ย 
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์žStart IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
Start IoT with JavaScript - 2.์—ฐ์‚ฐ์ž
ย 
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆStart IoT with JavaScript - 1.๊ธฐ์ดˆ
Start IoT with JavaScript - 1.๊ธฐ์ดˆ
ย 
[SCSA] Thinker ์—์„œ Maker ๋กœ
[SCSA] Thinker ์—์„œ Maker ๋กœ[SCSA] Thinker ์—์„œ Maker ๋กœ
[SCSA] Thinker ์—์„œ Maker ๋กœ
ย 
๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04
๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04
๋ˆ„๊ตฌ๋‚˜์ฝ”๋”ฉ์„ V0.04
ย 
Circulus Introduction
Circulus IntroductionCirculus Introduction
Circulus Introduction
ย 

IoT with Raspberry Pi + Node JS - Chapter 1

  • 1. Opensource H/W + Node JS IoT ๋”ฐ๋ผ์žก๊ธฐ Day 1
  • 4. ์˜คํ”ˆ ์†Œ์Šค ํ•˜๋“œ์›จ์–ด (open-source hardware) ์˜คํ”ˆ ์†Œ์Šค ๋ฌธํ™”์˜ ์ผ๋ถ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ง์ด๋‹ค. ํ•ด๋‹น ์ œํ’ˆ๊ณผ ๋˜‘๊ฐ™์€ ๋ชจ์–‘ ๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(ํšŒ๋กœ๋„, ์ž์žฌ ๋ช…์„ธ์„œ, ์ธ์‡„ ํšŒ๋กœ ๊ธฐํŒ ๋„๋ฉด ๋“ฑ) ์„ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœํ•œ ์ „์ž์ œํ’ˆ ํ•˜๋“œ์›จ์–ด ๊ธฐ์ˆ  ์–ธ์–ด๊ฐ€ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœ๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” ๋…ผ๋ฆฌ ์†Œ์ž IoT ๊ฐœ์š”
  • 6. ์˜คํ”ˆ ์†Œ์Šค ํ•˜๋“œ์›จ์–ด (open-source hardware) ์˜คํ”ˆ ์†Œ์Šค ๋ฌธํ™”์˜ ์ผ๋ถ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ง์ด๋‹ค. ํ•ด๋‹น ์ œํ’ˆ๊ณผ ๋˜‘๊ฐ™์€ ๋ชจ์–‘ ๋ฐ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(ํšŒ๋กœ๋„, ์ž์žฌ ๋ช…์„ธ์„œ, ์ธ์‡„ ํšŒ๋กœ ๊ธฐํŒ ๋„๋ฉด ๋“ฑ) ์„ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœํ•œ ์ „์ž์ œํ’ˆ ํ•˜๋“œ์›จ์–ด ๊ธฐ์ˆ  ์–ธ์–ด๊ฐ€ ๋Œ€์ค‘์—๊ฒŒ ๊ณต๊ฐœ๋œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ธ” ๋…ผ๋ฆฌ ์†Œ์ž Opensource H/W
  • 8. ETC
  • 9. Why raspbbery pi Name Arduino Raspberry Pi A+ Raspberry Pi B+ Raspberry Pi 2 Beaglebone Black Price $29.95 $20 $35 $35 $45 Processor ATMega 328 ARM 11 ARM Cortex A7 ARM Cortex A8 Clock Speed 16Mhz 700 Mhz 900 Mhz 1 Ghz RAM 2KB 256MB 512MB 1GB 512MB Multi Core Single Single Single Quad Single Flash 32KB SD Card SD Card SD Card SD Card GPIO 26 40 40 40 92 Ethernet N/A 10/100 10/100 10/100 10/100 USB N/A USB 2.0 x 1 USB 2.0 x 4 USB 2.0 x4 USB 2.0 x 1 Video Out N/A HDMI, Composite N/A Audio Out N/A HDMI, Analog Analog
  • 11. The maker culture is a contemporary culture or subculture representing a technology-based extension of DIY culture. Typical interests enjoyed by the maker culture include engineering-oriented pursuits such as electronics, robotics, 3-D printing, and the use of CNC tools,[1] as well as more traditional activities such as metalworking, woodworking, and traditional arts and crafts. The subculture stresses new and unique applications of technologies, and encourages invention and prototyping.[2] There is a strong focus on using and learning practical skills and applying them creatively Maker
  • 12. Maker
  • 13. Maker
  • 19. XMBC
  • 24. Rasbian - Debian Linux ๊ณ„์—ด ๋ฆฌ๋ˆ…์Šค (ubuntu linux ๋„ debian linux ๊ณ„์—ด) - ํŒจํ‚ค์ง€ ์ง€์› ๋ฐ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํ’๋ถ€ํ•จ - ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด OS ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ์Œ - ๊ด€๋ จ ๋ธ”๋กœ๊ทธ, ํ•™์Šต์„œ, ๊ณ ๊ฐ์ง€์›์ด ๊ฐ€์žฅ ๋งŽ์€ OS ์ž„ Download - ์ตœ์‹  Raspbian ๋‹ค์šด๋กœ๋“œ http://downloads.raspberrypi.org/raspbian_latest - ๊ธฐํƒ€ OS ๋‹ค์šด๋กœ๋“œ http://www.raspberrypi.org/downloads/
  • 25. Rasbian ์„ค์น˜ ์œˆ๋„์šฐ ์„ค์น˜ - Win32 Disk Imager ์ถ”์ฒœ - http://sourceforge.net/projects/win32diskimager/
  • 26. Rasbian ์„ค์น˜ Mac ์„ค์น˜ $ unzip ~/2014-12-24-wheezy-raspbian.zip ๋งˆ์šดํŠธ ์žฅ์น˜ ๋ณด๊ธฐ $ df โ€“h ์“ธ ์žฅ์น˜ ์ถ”๊ฐ€ ํ›„ ๋งˆ์šดํŠธ ์žฅ์น˜ ํ™•์ธ $ df โ€“h (/dev/disk2s1 ์ด๋ผ๋Š” ์‹์œผ๋กœ ์žฅ์น˜ ์ถ”๊ฐ€) ์žฅ์น˜ ๋งˆ์šดํŠธ ํ•˜๊ธฐ (๋งˆ์šดํŠธ ํ•˜๊ณ  ๋‚œ ํ›„ ์ด๋ฆ„์ด ๋ฐ”๋€œ) $ sudo diskutil unmount /dev/disk2s1 (/dev/disk2s1 -> /dev/rdisk2) ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ธฐ $ sudo dd bs=4M if=~/2014-12-24-wheey-raspbian.img of=/dev/rdisk2 ๋ฉ”๋ชจ๋ฆฌ ์นด๋“œ ๊บผ๋‚ด๊ธฐ $ sudo diskutil eject /dev/rdisk3
  • 27. Rasbian ์„ค์น˜ Linux ์„ค์น˜ $ unzip ~/2014-12-24-wheezy-raspbian.zip ๋งˆ์šดํŠธ ์žฅ์น˜ ๋ณด๊ธฐ $ df โ€“h ์“ธ ์žฅ์น˜ ์ถ”๊ฐ€ ํ›„ ๋งˆ์šดํŠธ ์žฅ์น˜ ํ™•์ธ $ df โ€“h (/dev/sdd1 ์ด๋ผ๋Š” ์‹์œผ๋กœ ์žฅ์น˜ ์ถ”๊ฐ€) ์žฅ์น˜ ๋งˆ์šดํŠธ ํ•˜๊ธฐ $ umount /dev/sdd1 ๋””์Šคํฌ์— ๊ธฐ๋กํ•˜๊ธฐ $ dd bs=4M if=~/2014-12-24-wheey-raspbian.img of=/dev/sdd ๊ธฐ๋ก ํ™•์ธ [๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ ๋น„์šฐ๊ธฐ] $ sudo sync
  • 29. Rasbian ์„ค์น˜ ๊ธฐ๋ณธ ์„ค์ • ํ•˜๊ธฐ $ sudo raspi-config ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค (x-window) ์‹คํ–‰ $ startx ํ”„๋กœ๊ทธ๋žจ ํŒจํ‚ค์ง€ ๋ชฉ๋ก ์—…๋ฐ์ดํŠธ $ sudo apt-get update ์„ค์น˜๋œ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ๋ฒ„์ „ ์—… ๋œ ํ”„๋กœ๊ทธ๋žจ ์—…๋ฐ์ดํŠธ $ sudo apt-get upgrade
  • 30. Rasbian ์„ค์น˜ OS ์žฌ๋ถ€ํŒ… $ sudo reboot $ sudo shutdown โ€“r now OS ์ข…๋ฃŒ $ sudo halt $ sudo shutdown โ€“h now
  • 38. Linux ๊ธฐ๋ณธ ๋ช…๋ น ํ˜„์žฌ ์œ„์น˜ ํ™•์ธ $ pwd /home/pi ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ ํ™•์ธ $ ls $ ls โ€“a // ์ˆจ๊น€ํŒŒ์ผ ํ‘œ์‹œ q๋นˆ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ touch raspberry touch pi ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ $ mkdir mypi
  • 39. Linux ๊ธฐ๋ณธ ๋ช…๋ น ํŒŒ์ผ ์ด๋™ํ•˜๊ธฐ $ mv [์›๋ณธ ํŒŒ์ผ๋ช…] [๋Œ€์ƒ ํŒŒ์ผ๋ช…] $ mv pi mypi ๊ฒฝ๋กœ ์ด๋™ํ•˜๊ธฐ $ cd [์ด๋™ํ•  ๋””๋ ‰ํ† ๋ฆฌ] $ cd mypi ํŒŒ์ผ ๋ณต์‚ฌํ•˜๊ธฐ $ cp [์›๋ณธ ํŒŒ์ผ๋ช…] [๋Œ€์ƒ ํŒŒ์ผ๋ช…] $ cp pi pi2 ๋””๋ ‰ํ† ๋ฆฌ ๋ณต์‚ฌํ•˜๊ธฐ $ cp โ€“r [์›๋ณธ ๋””๋ ‰ํ† ๋ฆฌ] [๋Œ€์ƒ ๋””๋ ‰ํ† ๋ฆฌ] $ cp โ€“r pi1 pi2
  • 40. Linux ๊ธฐ๋ณธ ๋ช…๋ น ํŒŒ์ผ ์‚ญ์ œํ•˜๊ธฐ $ rm [ํŒŒ์ผ ๋ช…] $ rm pi1 ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œํ•˜๊ธฐ $ rm โ€“r pi2 $ rm โ€“rf pi2
  • 41. ์ ˆ๋Œ€ ๊ฒฝ๋กœ์™€ ์ƒ๋Œ€ ๊ฒฝ๋กœ ์ ˆ๋Œ€ ๊ฒฝ๋กœ - / ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ง€์ • - ์‹œ์Šคํ…œ์˜ ์–ด๋Š ์œ„์น˜์—์„œ๋„ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋Š” ๋™์ผํ•œ ์œ„์น˜๋ฅผ ๋‚˜ ํƒ€๋ƒ„ - ์–ด๋””์—์„œ๋“ ์ง€ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ ์ƒ๋Œ€ ๊ฒฝ๋กœ - ํŒŒ์ผ๋ช…, ๋””๋ ‰ํ† ๋ฆฌ๋ช…, ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ƒ๋Œ€๊ฒฝ๋กœ -
  • 42. ํŒŒ์ผ ์ฐพ๊ธฐ ์‹œ์Šคํ…œ์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ํŒŒ์ผ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” find ๋ช…๋ น์„ ์ด์šฉํ•œ๋‹ค. $ find /home/pi โ€“name index.js root ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ถ€ํ„ฐ ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ• ์ˆ˜ ์žˆ๋‹ค (์ด ๊ฒฝ์šฐ ์˜ค๋žœ์‹œ๊ฐ„ ์ด ๊ฑธ๋ฆฐ๋‹ค.) $ find / -name index.js
  • 43. ํžˆ์Šคํ† ๋ฆฌ ํ™•์ธ ์ด์ „์— ์ž…๋ ฅํ–ˆ๋˜ ๋ช…๋ น์„ ๋‹ค์‹œ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ , ์ด์ „ ๋ช…๋ น์„ ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ์ƒํ•˜ ํ™”์‚ดํ‘œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด์ „ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ history ๋ช…๋ น์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. $ history ์ด์ „์— ์‹คํ–‰ํ•œ ํŠน์ •๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ grep ๋ช…๋ น ์„ ์ด์šฉํ•ด ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. $ history | grep apt-get
  • 44. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ Foreground ์‹คํ–‰ : ์ผ๋ฐ˜์ ์ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘์„ ํ™”๋ฉด์—์„œ ํ™•์ธํ•œ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋Š” ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค. $ top Background ์‹คํ–‰ : ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ์„ Background ๋กœ ์‹คํ–‰ํ•œ ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋ช…๋ น์–ด ๋’ค์— & ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค. $ top & ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ Forground ๋กœ ๋˜๊ฒŒ ํ•˜๋ ค๋ฉด fg ๋ช…๋ น ์„ ํ™œ์šฉํ•œ๋‹ค $fg
  • 46. ํŒŒ์ผ ๊ถŒํ•œ ๋ˆ„๊ฐ€ ํŒŒ์ผ์— ์ ‘๊ทผํ•ด๋„ ๋˜๋Š”์ง€, ์•ˆ๋˜๋Š” ์ง€, ์–ด๋””๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ์ง€ ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€์ด ํŒŒ์ผ ๊ถŒํ•œ ์ž„ 1.์ฝ๊ธฐ ๊ถŒํ•œ : ํŒŒ์ผ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š๋ƒ ์—†๋Š๋ƒ 2.์“ฐ๊ธฐ ๊ถŒํ•œ : ํŒŒ์ผ์„ ์“ธ ์ˆ˜ ์žˆ๋Š๋ƒ ์—†๋Š๋ƒ 3.์‹คํ–‰ ๊ถŒํ•œ : ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š๋ƒ ์—†๋Š๋ƒ User : ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค Group : ํŒŒ์ผ์„ ์†Œ์œ ํ•œ ๊ทธ๋ฃน์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค Others : ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • 47. ํŒŒ์ผ ๊ถŒํ•œ 1. ์‚ฌ์šฉ์ž ๋ช…์ด ํ•ด๋‹น ํŒŒ์ผ์˜ ์†Œ์œ ์ž์™€ ๊ฐ™๋‹ค๋ฉด, ์ด ํŒŒ์ผ์— ์ ‘ ๊ทผ ํ• ๋•Œ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์ด ์ ์šฉ๋จ 2. ํ•ด๋‹น ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋Š” ์•„๋‹ˆ์—ฌ๋„ ํŒŒ์ผ ๊ทธ๋ฃน์— ์†Œ์†๋˜์–ด ์žˆ ๋‹ค๋ฉด ๊ทธ๋ฃน ๊ถŒํ•œ์„ ์ ์šฉํ•จ 3. ํ•ด๋‹น ํŒŒ์ผ์˜ ์†Œ์œ ์ž๋„ ์•„๋‹ˆ๊ณ  ๊ฐ™์€ ๊ทธ๋ฃน์— ์†Œ์†๋˜์ง€๋„ ์•Š ์•˜๋‹ค๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์—ญํ• ์— ๋น„๋กฏ๋œ ๊ถŒํ•œ๋งŒ ์ ์šฉ ๋จ
  • 48. ํŒŒ์ผ ๊ถŒํ•œ ๊ถŒํ•œ ์„ค์ • ๋ถ€๋ถ„ ๊ฐ€๋Šฅํ•œ ์ธ์ˆ˜ ์—ญํ•  u ์‚ฌ์šฉ์ž g ๊ทธ๋ฃน o ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž / ๋‹ค๋ฅธ ์„ธ๊ณ„ a ์ „๋ถ€ ์ ์šฉ ๋ฐฉ๋ฒ• + ์ถ”๊ฐ€ - ์ œ๊ฑฐ = ๋ถ„๋ช…ํ•˜๊ฒŒ ์„ค์ • ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ r ์ฝ๊ธฐ w ์“ฐ๊ธฐ x ์‹คํ–‰
  • 49. ๋ฐ”๋กœ ๊ฐ€๊ธฐ / ๋งํฌ 1. Soft Link : ์œˆ๋„์šฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ”๋กœ๊ฐ€๊ธฐ ํ˜•ํƒœ์™€ ์œ ์‚ฌํ•จ. ์†Œํ”„ํŠธ๋งํฌ๋Š” ์‹ค์ œ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๋””์Šคํฌ์˜ ์‹ค์ œ ์œ„์น˜ ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ๋งŒ ํ•˜๋Š” ํฌ์ธํ„ฐ ํŒŒ์ผ์„ ๋งŒ๋“ฆ. $ ln โ€“s pi pi2 1. Hard Link : ํŒŒ์ผ์€ ํ•˜๋‚˜์ธ๋ฐ, ์ด๋ฆ„์„ ๋‘ ๊ฐœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž„. ์›๋ž˜ ํŒŒ์ผ๊ณผ ์ „ํ˜€ ๊ตฌ๋ณ„๋˜์ง€ ์•Š์Œ. ๊ฐ™์€ ์œ„์น˜๋ฅผ ๊ฐ€ ๋ฆฌํ‚ค๋Š” ์ด๋ฆ„์ด ๋‘๊ฐœ๋ผ๋Š” ์˜๋ฏธ $ ln pi pi2
  • 50. ๊ถŒํ•œ root๋Š” ํŒŒ์ผ์‹œ์Šคํ…œ์˜ ์‹œ์ž‘์ ์„ ์ผ๊ธฐ๋„ ํ•˜๋ฉฐ ์‹œ์Šคํ…œ์˜ ์ด ๊ด€ ๋ฆฌ๋ฅผ ์ฑ…์ž„์ง€๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ๋„ ํ•จ. ์‹œ์Šคํ…œ ์ฐจ์›์˜ ๊ธฐ ๋Šฅ ๋˜๋Š” ๊ด€๋ฆฌ ์ฐจ์›์˜ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š” ๋ฃจํŠธ๋กœ ์‹ ์›์„ ํ™•์ธ ๋ฐ›์•„์•ผ ํ•จ sudo ๋ช…๋ น์„ ์ด์šฉํ•˜๋ฉด ์Šˆํผ์‚ฌ์šฉ์ž๊ฐ€ ๋˜์–ด root ์˜ ๊ถŒํ•œ์„ ๋ถ€ ์—ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ $ sudo visudo ๋งˆ์ด๋„ˆ์Šค(-) ๊ธฐํ˜ธ๋Š” ํ•ด๋‹น ํ™˜๊ฒฝ์œผ๋กœ ๋กœ๊ทธ์ธ ํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ ํƒ€๋‚ด๋ฉฐ, ๋‹ค๋ฅธ์ธ์ˆ˜๊ฐ€ ๋ถ™์ง€ ์•ˆ์œผ๋ฉด ์Šˆํผ ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธ $ sudo su โ€“ $ sudo -i
  • 51. RFTM Read The Flaming Manual (์„ค๋ช…์„œ์— ๋‹ค ์žˆ์–ด. ์ฝ์–ด๋ด!) ๋ชจ๋ฅด๋Š” ๋ช…๋ น์ด ์žˆ์„๋•Œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€๋ถ€๋ถ„ ์„ค๋ช…์„œ๊ฐ€ ๋”ธ ๋ ค ์žˆ๋‹ค. $ man sudoers
  • 53. ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ด์•ผํ•  ์ฃผ์š” ์—…๋ฌด์ค‘ ํ•˜๋‚˜๋Š” ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ ํ˜„ํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š” ใ…‡ใ„น์ž„ $ top ์ž‘๋™ ์‹œ๊ฐ„๊ณผ ๋กœ๋“œ ํ‰๊ท  ํ˜„์žฌ ์‹œ๊ฐ„๊ณผ ์‹œ์Šคํ…œ์ด ๋™์ž‘ํ•œ ์‹œ๊ฐ„์„ ์•Œ ์ˆ˜ ์žˆ์Œ. ๋กœ๋“œ ํ‰๊ท ์€ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฑ๋ถ„์œจ์„ ํ˜„์žฌ ใ……์šฉ๊ฐ€ ๋Šฅํ•œ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค๋ฅผ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ฒ™๋„. ์ปดํ“จํ„ฐ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰๊ณผ CPU ์‚ฌ์šฉ ์š”๊ทœ๋Ÿ‰ ๋ชจ๋‘ ๋น„๊ตํ•จ
  • 54. ํƒœ์Šคํฌ ์ „์ฒด ํ”„๋กœ์„ธ์Šค ์ˆ˜ ํ˜„์žฌ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ˆ˜ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž ์ž๊ณ  ์žˆ๋Š”(๋Œ€๊ธฐ ๋ชจ๋“œ) ํ”„๋กœ์„ธ์Šค ์ˆ˜ ์ค‘๋‹จ๋œ ํ”„๋กœ์„ธ์Šค ์ˆ˜ ์ข€๋น„ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ cpu ์‚ฌ์šฉ ๋ฐฑ๋ถ„์œจ us : ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ• ๋‹น ๋จ sy : ์‹œ์Šคํ…œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ• ๋‹น ๋จ ni : CPU ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด nice ๋œ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋จ id : idle ์„ ๋‚˜ํƒ€๋ƒ„ wa : I/O๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ๋ ˆ์Šค์— ํ• ๋‹น ๋จ hi : ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น ๋จ si : ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น ๋จ st : ํ•˜์ดํผ๋ฐ”์ด์ € (๊ฐ€์ƒ ํ”Œ๋žซํผ์„ ์‹คํ–‰ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด)์— ๋นผ์•—๊ธด ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•จ
  • 55. ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ” PID : ํ”„๋กœ์„ธ์Šค์˜ id ๋ฒˆํ˜ธ USER : ํ”„๋กœ์„ธ์Šค๋ฅผ ์†Œ์œ ํ•œ ์‚ฌ์šฉ์ž PR : ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„  ์ˆœ์œ„ NI : ํ”„๋กœ์„ธ์Šค์˜ nice ๊ฐ’ VIRT : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ๋น„ํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘ RES : ์‹ค์ œ ์ƒ์ฃผํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ SHR : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘ S : ํ”„๋กœ์„ธ์Šค ์ƒํƒœ (๊ฐ€๋ น, ์ž ์ž๊ธฐ ์ƒํƒœ, ์‹คํ–‰ ์ค‘ ์ƒํƒœ, ์ข€๋น„ ์ƒ ํƒœ) %CPU : CPU ์‚ฌ์šฉ ๋ฐฑ๋ถ„์œจ %MEM : ๋žจ ์‚ฌ์šฉ ๋ฐฑ๋ถ„์œจ TIME+ : ํƒœ์Šคํฌ๊ฐ€ ์‹œ์ž‘๋œ ์ดํ›„ ์‚ฌ์šฉํ•œ CPU ์‹œ๊ฐ„ COMMAND : ๋ช…๋ น์˜ ์‹ค์ œ ์ด๋ฆ„
  • 56. ๋ฉ”๋ชจ๋ฆฌ/๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ $ free โ€“m ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์€ df (Disk Free) ๋ช…๋ น์„ ์‚ฌ์šฉ. ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” โ€“h (Human) ์˜ต์…˜์„ ํ™œ์šฉ $ df $ df โ€“h ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ฐ ํŒŒ์ผ ์‚ฌ์šฉ๋Ÿ‰์„ ์ƒ์„ธํ•˜๊ฒŒ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” du (Disk Usage) ๋ช…๋ น์„ ์ด์šฉ $ du $ du โ€“h $ sudo du โ€“sh /var/log
  • 57. ์—ฐ๊ฒฐ๋œ ์žฅ์น˜ ํ™•์ธ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์˜ USB ํฌํŠธ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์žฅ์น˜๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ํ• ๋•Œ lsusb ๋ช…๋ น์„ ์‚ฌ์šฉ. ์ž์„ธํžˆ ๋ณด๊ณ ์ž ํ•˜๋ฉด โ€“v ์˜ต์…˜ ์ด์šฉ $ lsusb $ lsusb โ€“v ๋ถ€ํŒ… ์‹œ ๋กœ๋“œ๋˜์–ด ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด ์žฅ๋น„ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ํ• ๋•Œ lspci ๋ช…๋ น์„ ์‚ฌ์šฉ. ์ž์„ธํžˆ ๋ณด๊ณ ์ž ํ•˜๋ฉด โ€“v ์˜ต์…˜ ใ…‡์šฉ $ lspci $ lspci -v
  • 58. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ ps (processes snapshot) ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ด์šฉ $ ps ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ํ‘œ์ค€๋ฐฉ์‹์œผ๋กœ ๋ณด๊ณ ์ž ํ• ๋•Œ $ ps โ€“ef ํ™”๋ฉด๋ฐ–์œผ๋กœ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋„๋ก ๋ณด๊ณ ์ž ํ• ๋•Œ less ๋ฅผ ์ถ”๊ฐ€. ์œ„์•„ ๋ž˜ ํ™”์‚ดํ‘œํ‚ค๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Œ $ ps โ€“ef | less
  • 59. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ ๋ช…๋ น ๊ฒฐํ•ฉ์œผ๋กœ ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ $ ps โ€“ef | grep sshd grep ๋ช…๋ น์ด ๋ณด์ด๋ฏ€๋กœ โ€“v ์˜ต์…˜์„ ํ™œ์šฉํ•˜๋ฉด grep ์ด ์—†๋Š” ๋ชจ ๋“  ํ–‰์„ ๋ฆฌํ„ด ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ $ ps โ€“ef | grep sshd | grep โ€“v grep ๊ฒฐ๊ณผ๋ฅผ ์ขํžˆ๊ธฐ ์œ„ํ•ด awk ๋ช…๋ น์ด์šฉํ•œ๋‹ค. $1 ์€ ์ฒซ๋ฒˆ ์งธ ํ…์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  $2 ๋Š” ๋‘๋ฒˆ ์งธ ํ…์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค $ ps โ€“ef | grep ssh | grep โ€“v grep | awk โ€˜{print $2}โ€™
  • 60. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ xargs ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „์— ์‹คํ–‰๋œ ๋ช…๋ น์˜ ์ถœ๋ ฅํ–‰์„ ๋‹ค๋ฅธ ๋ช…๋ น์˜ ๊ฐœ๋ณ„ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ps โ€“ef | grep ssh | grep โ€“v grep | awk โ€˜{print $2}โ€™ | xargs kill -l
  • 61. cron ๋ช…๋ น cron ์€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ช…๋ น์„ ์‹ฑํ–‰ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž„. ์–ด๋–ค ์‹œ๊ฐ„ ๊ทœ์น™์„ ์ „๋‹ฌํ•˜๋ฉด ๊ทธ์— ๋”ฐ๋ผ ๋ช…๋ น์„ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ๊ฒƒ ํ˜„์žฌ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ๋ชฉ๋ก (crontab) ํ™•์ธ $ crontab โ€“l ํฌ๋ก ํƒญ ํ•ญ๋ชฉ์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์ฃผ์„ ํ™•์ธ $ crontab โ€“e [๋ช‡๋ถ„] [๋ช‡์‹œ(24)] [๋ช‡์ผ] [๋ช‡์›”] [์š”์ผ๋ฒˆํ˜ธ(์ผ์š”์ผ0, ํ† ์š”์ผ6)]
  • 62. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ UID ํฌ๋กœ์„ธ์Šค์˜ ์†Œ์œ ์ž PID ํ”„๋กœ์„ธ์Šค์˜ PID ๋ฒˆํ˜ธ PPID ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์˜ PID ๋ฒˆํ˜ธ C ํ”„๋กœ์„ธ์Šค์˜ CPU ์‚ฌ์šฉ๋Ÿ‰ STIME ํ”„๋กœ์„ธ์Šค์˜ ์‹œ์ž‘ ์‹œ๊ฐ„ TTY ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” ํ„ฐ๋ฏธ๋„ TIME ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ๋น„ํ•œ ๋ˆ„์  CPU ์‹œ๊ฐ„ CMD ํ”„๋กœ์„ธ์Šค์˜ ์ปค๋งจ๋“œ ๋ผ์ธ ์ˆ˜
  • 63. ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌํ•˜๊ธฐ Kill ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š” ๋™์ž‘์ด์™ธ์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ทธ ์‹ ํ˜ธ์— ์‘๋‹ต ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•จ Raspbian ์—์„œ ์ด 64 ๊ฐ€์ง€์˜ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ ์‹ ํ˜ธ ๋ชฉ๋ก ๋ณด๊ธฐ $ kill โ€“l ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ $ kill <signal> <PID> $ kill -9 <PID>
  • 64. ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ 1 SIGHUP hang-up ์„ ์ค„์ธ ๋ง. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์— ํ˜„์žฌ ์—ฐ๊ฒฐ์„ ๋Š์œผ๋ผ๊ณ  ์•Œ๋ฆฐ๋‹ค. ์•  ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์žฌ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ ์‚ฌ์šฉ 3 SIGQUIT quit ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ •์ƒ ์ข…๋ฃŒํ•˜๋ผ ๊ณ  ์•Œ๋ฆผ 6 SIGABRT about ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋œ๋‹ค๊ณ  ์•Œ๋ฆผ. ํ”„๋กœ๊ทธ๋žจ์€ ๊ณง๋ฐ”๋กœ ๋‹ซํž˜ 9 SIGKILL ๊ฐ•์ œ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…”์„ ์ข…๋ฃŒ ํ•จ
  • 65. ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ Kill ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๋Š” ๋™์ž‘์ด์™ธ์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ทธ ์‹ ํ˜ธ์— ์‘๋‹ต ํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•จ Raspbian ์—์„œ ์ด 64 ๊ฐ€์ง€์˜ ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ ์‹ ํ˜ธ ๋ชฉ๋ก ๋ณด๊ธฐ $ kill โ€“l ํ”„๋กœ์„ธ์Šค ์ฃฝ์ด๊ธฐ $ kill <signal> <PID> $ kill -9 <PID>
  • 67. ํŒŒ์ผ ํŽธ์ง‘ํ•˜๊ธฐ ๋ฆฌ๋ˆ…์Šค ์ฝ˜์†”์—์„œ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋Š”๋ฐ, vim ๊ณผ nano ๊ฐ€ ๋งŽ์ด ์ด์šฉ ๋จ nano : ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์ดˆ ๊ฒฝ๋Ÿ‰ ํ…์ŠคํŠธ ์—๋””ํ„ฐ. ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šฐ ๋ฉด์„œ ์“ธ๋ชจ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์ œ๊ณต vim : ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์šฐ๋‚˜ ๊ฐ•๋ ฅํ•จ. nano ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋‘ ํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋น„๊ต ๊ธฐ๋Šฅ, ์ž˜๋ผ๋„ฃ๊ธฐ, ๋ถ™์—ฌ๋„ฃ๊ธฐ, ํ•˜์ด ๋ผ์ดํŠธ๋“ฑ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. $ nano test.txt
  • 68. ๋‹จ์ถ•ํ‚ค ํ‘œ์‹œ ๋‹จ์ถ• ํ‚ค ๋™์ž‘ ^G CTRL + G CTRL + G ^O CTRL + O Write Out ^Y CTRL + Y Prev Page ^K CTRL + K Cut Text ^C CTRL + C Cursor Position ^X CTRL + X Exit ^W CTRL + W Where Is ^V CTRL + V Next Page ^V CTRL + U Un cut text ^T CTRL + T To Spell
  • 70. Node.js๋Š” ํ™•์žฅ์„ฑ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(ํŠนํžˆ ์„œ๋ฒ„ ์‚ฌ ์ด๋“œ) ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์ด๋‹ค. Node.js๋Š” ์ž‘์„ฑ์–ธ์–ด๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉฐ Non-blocking I/O์™€ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„๋ฅผ ํ†ตํ•œ ๋†’์€ ์ฒ˜๋ฆฌ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ ๋‹ค. Node.js๋Š” ๋‚ด์žฅ HTTP ์„œ๋ฒ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์›น ์„œ๋ฒ„์—์„œ ์•„ํŒŒ์น˜ ๋“ฑ์˜ ๋ณ„๋„์˜ ์†Œํ”„ํŠธ์›จ์–ด ์—†์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์›น์„œ๋ฒ„์˜ ๋™์ž‘์— ์žˆ์–ด ๋” ๋งŽ์€ ํ†ต์ œ ๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค. NodeJS
  • 72. NodeJS Download ์ง์ˆ˜ ๋ฒ„์ „์€ stable, ํ™€์ˆ˜ ๋ฒ„์ „์€ unstable case 1. ์ง์ ‘ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์ปดํŒŒ์ผ $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install build-essential libssl-dev pkg-confi $ wget http://nodejs.org/dist/v0.10.35/node-v0.10.35.tar.gz $ tar โ€“zxf node-v.10.24.tar.gz $ ./configure $ make && sudo make install case 2. ๋ฐฐํฌํŒ ์„ค์น˜ $ wget http://node- arm.herokuapp.com/node_latest_armhf.deb $ sudo dpkg -i node_latest_armhf.deb
  • 73. Hello world ํ…Œ์ŠคํŠธ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ Hello World ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World on Raspberry Pi!n'); }).listen(80, '127.0.0.1'); console.log('Server running at http://127.0.0.1:80/');
  • 74. ํŒจํ‚ค์ง€ ์„ค์น˜ ์ „์—ญ ์„ค์น˜ /usr/local/node-modules $ npm install โ€“g <ํŒจํ‚ค์ง€๋ช…> ์ง€์—ญ ๋ชจ๋“œ $ npm install <ํŒจํ‚ค์ง€๋ช…> ๋ฒ„์ „ ์„ค์น˜ $ npm install <ํŒจํ‚ค์ง€๋ช…>@<๋ฒ„์ „> $ npm install jshint@1.1.0 // 1.1.0 ์„ค์น˜ $ npm install jshint@1.1.x // ํ•ด๋‹น Branch์˜ ์ตœ์‹  ๋ฐฐํฌํŒ $ npm install jshint@โ€<2.0โ€ // ํ•˜์œ„ ๋ฒ„์ „ $ npm install jshint@โ€>=0.1.0<2.1โ€ // 0.1๊ณผ 2.1์‚ฌ์ด์˜ ์ตœ์‹  ๋ฐฐํฌํŒ
  • 75. ํŒจํ‚ค์ง€ ์‚ญ์ œ/์—…๋ฐ์ดํŠธ ์ „์—ญ ์„ค์น˜ ์ œ๊ฑฐ /usr/local/node-modules $ npm uninstall โ€“g <ํŒจํ‚ค์ง€๋ช…> ์ง€์—ญ ์„ค์น˜ ์ œ๊ฑฐ $ npm uninstall <ํŒจํ‚ค์ง€๋ช…> ์—…๋ฐ์ดํŠธ $ npm update <ํŒจํ‚ค์ง€๋ช…> $ npm โ€“g update <ํŒจํ‚ค์ง€๋ช…>
  • 76. ๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ var sum = function(a,b){ return a+b; } exports.sum = sum; ํ˜น์€ exports.sum = function(a,b){ return a+b; } ์‹์œผ๋กœ ์ง์ ‘ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Œ. ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฒ•์€ var sum = require(โ€˜./sum.jsโ€™); console.log(sum.sum(1,2));
  • 77. ๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ var sum = function(a,b){ return a+b; } exports.sum = sum; ํ˜น์€ exports.sum = function(a,b){ return a+b; } ์‹์œผ๋กœ ์ง์ ‘ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์Œ. ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฒ•์€ var sum = require(โ€˜./sum.jsโ€™); console.log(sum.sum(1,2));
  • 78. ๋ชจ๋“ˆ ๋กœ๋”ฉ ์ฝ”์–ด ๋ชจ๋“ˆ : nodejs ๋ฐฐํฌํŒ์— ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ๋œ ๋ชจ๋“ˆ var http = require(โ€˜httpโ€™); ๋ชจ๋“ˆ ๋ช… ๋งŒ์œผ๋กœ ์ฐธ์กฐํ•จ. ๊ฐ™์€ ์ด๋ฆ„์˜ ์„œ๋“œํŒŒํ‹ฐ ๋ชจ๋“ˆ์ด ์กด์žฌ ํ•˜๋”๋ผ๋„ ์šฐ์„ ์ ์œผ๋กœ ๋กœ๋”ฉ ๋จ ํŒŒ์ผ ๋ชจ๋“ˆ ๋กœ๋”ฉ : ์ ˆ๋Œ€/์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋กœ๋”ฉํ•˜๋ฉด ๋กœ๋”ฉ ๊ฐ€๋Šฅ /home/a/b.js var module = require(โ€˜/home/a/bโ€™); var module = require(โ€˜./b.jsโ€™); var module = require(โ€˜./bโ€™);
  • 79. ๋ชจ๋“ˆ ๋กœ๋”ฉ ์ฝ”์–ด ๋ชจ๋“ˆ : nodejs ๋ฐฐํฌํŒ์— ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ๋œ ๋ชจ๋“ˆ var http = require(โ€˜httpโ€™); ๋ชจ๋“ˆ ๋ช… ๋งŒ์œผ๋กœ ์ฐธ์กฐํ•จ. ๊ฐ™์€ ์ด๋ฆ„์˜ ์„œ๋“œํŒŒํ‹ฐ ๋ชจ๋“ˆ์ด ์กด์žฌ ํ•˜๋”๋ผ๋„ ์šฐ์„ ์ ์œผ๋กœ ๋กœ๋”ฉ ๋จ ํŒŒ์ผ ๋ชจ๋“ˆ ๋กœ๋”ฉ : ์ ˆ๋Œ€/์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋กœ๋”ฉํ•˜๋ฉด ๋กœ๋”ฉ ๊ฐ€๋Šฅ /home/a/b.js var module = require(โ€˜/home/a/bโ€™); var module = require(โ€˜./b.jsโ€™); var module = require(โ€˜./bโ€™);
  • 80. ๋ชจ๋“ˆ ๋กœ๋”ฉ ํด๋” ๋ชจ๋“ˆ ๋กœ๋”ฉ var module = require(โ€˜./moduleDirโ€™); ํ•ด๋‹น ํด๋” ๋‚ด์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์Œ ํŒจํ‚ค์ง€๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, package.json ์„ ์ฐพ๋Š”๋‹ค. package.json ์˜ main ์†์„ฑ์„ ๋ถ„์„ํ•ด ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค. package.json ํŒŒ์ผ์ด ์—†์œผ๋ฉด index.js ๋ฅผ ์ฐพ๋Š”๋‹ค
  • 81. ๋ชจ๋“ˆ ๋กœ๋”ฉ ํด๋” ๋ชจ๋“ˆ ๋กœ๋”ฉ var module = require(โ€˜./moduleDirโ€™); ํ•ด๋‹น ํด๋” ๋‚ด์—์„œ ๋ชจ๋“ˆ์„ ์ฐพ์Œ ํŒจํ‚ค์ง€๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉฐ, package.json ์„ ์ฐพ๋Š”๋‹ค. package.json ์˜ main ์†์„ฑ์„ ๋ถ„์„ํ•ด ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค. package.json ํŒŒ์ผ์ด ์—†์œผ๋ฉด index.js ๋ฅผ ์ฐพ๋Š”๋‹ค node_modules ํด๋”๋ฅผ ์ด์šฉํ•œ ๋กœ๋”ฉ var module = require(โ€˜myModule.jsโ€™) ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ํ•ด๋‹น ๊ฒฝ๋กœ ์˜ ./node_modules/myModule.js ๋ฅผ ์ฐจ์Œ ๊ทธ๋žŸ ์—†์œผ๋ฉด ์ƒ์œ„์˜ node_modules ๋ฅผ ์ฐพ์Œ. ์œ„์˜ ๋ฐฉ์‹์œผ๋กœ root ํด๋”๊นŒ์ง€ ํƒ์ƒ‰ ํ›„ ์—†์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฐ˜ํ™˜
  • 82. ๋‚ด์žฅ ๊ฐ์ฒด processs ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ์ฒด ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Œ argv : ์‹คํ–‰ ๋งค๊ฐœ๋ณ€์ˆ˜ โ€“ ์–ด๋–ค ํŒŒ์ผ์—์„œ ์‹คํ–‰ ๋œ ๊ฒƒ์ธ์ง€? env : ์ปดํ“จํ„ฐ ํ™˜๊ฒฝ ๊ด€๋ จ ์ •๋ณด version : Node.JS ๋ฒ„์ „ 0.10.35 arch : ํ”„๋กœ๊ทธ๋žจ ์•„ํ‚คํ…์ณ 32bit, 64bit platform : ํ”Œ๋žซํผ memoryUsage() : ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ upime() : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๋œ ์‹œ๊ฐ„ exit() : ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
  • 83. ๋‚ด์žฅ ๋ชจ๋“ˆ os ์šด์˜ ์ฒด์ œ์™€ ๊ด€๋ จ๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋“ค require(โ€˜osโ€™) ๋กœ ์‚ฌ์šฉ tmpdir() : ์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ์ž„์‹œ ํด๋”๋ฅผ ๋ฆฌํ„ด hostname() : ์šด์˜์ฒด์ œ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ type() : ์šด์˜์ฒด์ œ์˜ ์ด๋ฆ„ platform() : ์šด์˜์ฒด์ œ arch() : CPU ์•„ํ‚คํ…์ณ uptime() : ์šด์˜์ฒด์ œ ์‹คํ–‰๋œ ์‹œ๊ฐ„ loadavg() : ์šด์˜์ฒด์ œ loadaverage totalmem() : ๋ฉ”๋ชจ๋ฆฌ freemem() : ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ cpus() : cpu getNetworkInterfaces() : ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ
  • 84. ์•”ํ˜ธํ™” ๋ชจ๋“ˆ .crypto ๋ชจ๋“ˆ์€ ํ•ด์‹œ ์ƒ์„ฑ๊ณผ ์•”ํ˜ธํ™”๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ์ž„ id/password ๋ฅผ ์ €์žฅํ•˜๋Š” ์„œ๋ฒ„์—์„œ ๋งค์šฐ ์ค‘์š” ํ•ด์‹œํ™” ํ•œ ๊ฒฐ๊ณผ ๊ฐ’๋งŒ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์ปค๊ฐ€ ๊ฒฐ๊ณผ๊ฐ’์„ ๊ฐ€์ง€ ๊ณ  ์žˆ์–ด๋„ ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Œ
  • 85. ์•”ํ˜ธํ™” ๋ชจ๋“ˆ .var crypto = require(โ€˜cryptoโ€™); var key = โ€˜websecretkeyโ€™; var input = โ€˜12345678โ€™; var cipher = crypto.createCipher(โ€˜aes192โ€™,key); cipher.update(input, โ€˜utf-8โ€™, โ€˜base64โ€™); var cipherOutput = cipher.final(โ€˜base64โ€™); var decipher = crypto.createDecipher(โ€˜aes192โ€™,key); decipher.update(cipherOutput, โ€˜base64โ€™, โ€˜utf-8โ€™); var decipherOutput = decipher.final(โ€˜utf-8โ€™); console.log(โ€˜input : โ€˜ + input); console.log(โ€˜cipherOutput : โ€˜ + cipherOutput); console.log(โ€˜decipherOutput : โ€˜ + decipherOutput);
  • 87. Expressjs .nodejs ๋ฅผ ์œ„ํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ํ•˜๋‚˜ ํ˜น์ธ ์—ฌ๋Ÿฌ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•จ var express = require(โ€˜expressโ€™); var app = express(); app.get(โ€˜/โ€™, function(req, res){ res.send(โ€˜hello world!โ€™) }); var server = app.listen(3000, function(){ var host = server.address().address; var port = server.address().port; console.log(โ€˜ExpressJS example at http://$s:$sโ€™, host, port); });
  • 88. ๊ธฐ๋ณธ ๋ผ์šฐํŒ… .HTTP ์š”์ฒญ ๋ฉ”์†Œ๋“œ GET, POST, PUT, DELETE ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์  ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ // respond with "Hello World!" on the homepage app.get('/', function (req, res) { res.send('Hello World!'); }); // accept POST request on the homepage app.post('/', function (req, res) { res.send('Got a POST request'); }); // accept PUT request at /user app.put('/user', function (req, res) { res.send('Got a PUT request at /user'); }); // accept DELETE request at /user app.delete('/user', function (req, res) { res.send('Got a DELETE request at /user'); });
  • 89. ๊ธฐ๋ณธ ๋ผ์šฐํŒ… .HTTP ์š”์ฒญ ๋ฉ”์†Œ๋“œ GET, POST, PUT, DELETE ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์  ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ // a middleware sub-stack which handles GET requests to /user/:id app.get('/user/:id', function (req, res, next) { // if user id is 0, skip to the next route if (req.params.id == 0) next('route'); // else pass the control to the next middleware in this stack else next(); // }, function (req, res, next) { // render a regular page res.render('regular'); }); // handler for /user/:id which renders a special page app.get('/user/:id', function (req, res, next) { res.render('special'); });
  • 90. ๊ณ ๊ธ‰ ๋ผ์šฐํŒ… .4.x ๋ถ€ํ„ฐ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ router ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ var app = express(); var router = express.Router(); // a middleware with no mount path, gets executed for every request to the router router.use(function (req, res, next) { console.log('Time:', Date.now()); next(); }); // a middleware sub-stack shows request info for any type of HTTP request to /user/:id router.use('/user/:id', function(req, res, next) { console.log('Request URL:', req.originalUrl); next(); }, function (req, res, next) { console.log('Request Type:', req.method); next(); });
  • 91. ๊ณ ๊ธ‰ ๋ผ์šฐํŒ… .4.x ๋ถ€ํ„ฐ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ router ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Œ // a middleware sub-stack which handles GET requests to /user/:id router.get('/user/:id', function (req, res, next) { // if user id is 0, skip to the next router if (req.params.id == 0) next('route'); // else pass the control to the next middleware in this stack else next(); // }, function (req, res, next) { // render a regular page res.render('regular'); }); // handler for /user/:id which renders a special page router.get('/user/:id', function (req, res, next) { console.log(req.params.id); res.render('special'); }); // mount the router on the app app.use('/', router);
  • 92. Express JS ์ž๋™ ํ”„๋กœ์ ํŠธ ์ž๋™ ์ƒ์„ฑ ํˆด์„ ํ™œ์šฉํ•˜๋ฉด, ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์คŒ. ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ, ๊ฐœ๋ฐœ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ $ npm install express-generator โ€“g ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ $ express myapp
  • 93. ๊ณ ๊ธ‰ ๋ผ์šฐํŒ… create : myapp create : myapp/package.json create : myapp/app.js create : myapp/public create : myapp/public/javascripts create : myapp/public/images create : myapp/routes create : myapp/routes/index.js create : myapp/routes/users.js create : myapp/public/stylesheets create : myapp/public/stylesheets/style.css create : myapp/views create : myapp/views/index.jade create : myapp/views/layout.jade create : myapp/views/error.jade create : myapp/bin create : myapp/bin/www install dependencies: $ cd myapp && npm install run the app: $ DEBUG=myapp ./bin/www
  • 96. SocketIO var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.on('ferret', function (name, fn) { fn('woot'); }); }); Server side example
  • 97. SocketIO var io = require(โ€˜socket.ioโ€™).listen(80); io.sockets.on(โ€˜connectionโ€™, function (socket) { socket.broadcast.emit(โ€˜user connectedโ€™); }); Server side example
  • 98. Expand your dimension Circulus (http://www.circul.us) Since 2013 Park Jonggun, Lee Yunjai, Ki Yeonah, Lee Jonghee