λͺ©λ‘μ „체 κΈ€ (1005)

😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[λ¦¬λˆ…μŠ€ λ©€ν‹°λ―Έλ””μ–΄ ν”„λ‘œκ·Έλž˜λ°] 멀티미디어와 라즈베리 파이

⭐ λ©€ν‹°λ―Έλ””μ–΄ 인간이 였감으둜 μΈμ‹ν•˜λŠ” μ—¬λŸ¬ λ§€μ²΄λ“€μ˜ ν˜Όν•©μ„ 의미 'λ§Žμ€', 'λ‹€μ–‘ν•œ' μ΄λΌλŠ” λœ»μ„ 가진 λ©€ν‹° (Multi) 와 전달 λ“±μ˜ μˆ˜λ‹¨, 방법, 맀체 듀을 λœ»ν•˜λŠ” λ―Έλ””μ–΄ (Media) 의 ν•©μ„±μ–΄ 인간은 감각기관을 μ΄μš©ν•΄μ„œ μ†Œλ¦¬, 이미지 λ“±μ˜ 정보λ₯Ό 받아듀이고 데이터λ₯Ό 받아듀이기 μœ„ν•΄ 눈, κ·€, μ½”, ν˜€, ν”ΌλΆ€ 의 μ˜€κ°μ„ μ‚¬μš©ν•œλ‹€ μΈκ°„μ˜ 감각기관을 ν†΅ν•΄μ„œ μΈμ‹λ˜λŠ” 정보λ₯Ό λ―Έλ””μ–΄λΌλŠ” λ‹¨μ–΄λ‘œ ν‘œν˜„ν•  수 μžˆλ‹€ 디지털 λ―Έλ””μ–΄λŠ” 일반적으둜 ν•˜λ‚˜μ˜ λ―Έλ””μ–΄λ§Œ μ‚¬μš©λ˜μ§€ μ•Šκ³  μŒμ„±, μ†Œλ¦¬, 문자, κ·Έλ¦Ό, λ™μ˜μƒ λ“±μ˜ λ―Έλ””μ–΄κ°€ ν˜Όν•©λœ ν˜•νƒœλ‘œ μ‚¬μš©λ˜λŠ”λ°, 이λ₯Ό λ©€ν‹° λ―Έλ””μ–΄ 라고 λΆ€λ₯Έλ‹€ 디지털 λ―Έλ””μ—μ„œλŠ” μ—¬λŸ¬ λ―Έλ””μ–΄ μ€‘μ—μ„œλ„ 주둜 μ‹œκ°κ³Ό 청각을 μ‚¬μš©ν•˜κ³  μžˆλ‹€ ⭐ 색상 체계 색상은 빛이 물체에 μ˜ν•΄μ„œ λ°˜μ‚¬λ˜μ–΄μ„œ μ‚¬λžŒμ˜ ..

[λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°] μš”μ•½ (λ„€νŠΈμ›Œν¬ 톡신, μ†ŒμΌ“, 데λͺ¬)

⭐ 사물 인터넷 사물이 μ„œλ‘œ μ—°κ²°λ˜λŠ” 인터넷, λ„€νŠΈμ›Œν¬ ν™˜κ²½μ΄ μ€‘μš”ν•˜λ‹€ 인터넷은 μ•„νŒŒμΌ“ μœΌλ‘œλΆ€ν„° λ°œμ „ν•΄ μ™”μœΌλ©°, μœ λ‹‰μŠ€μ— λ„€νŠΈμ›Œν¬ κΈ°λŠ₯이 μΆ”κ°€λ˜κ³  웹이 λ“±μž₯ν•˜λ©΄μ„œ μ„±μž₯함 인터넷은 νŒ¨ν‚· 기반의 톡신 방식인 이더넷을 기반으둜 ν•˜κ³ , 주둜 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ ꡬ쑰λ₯Ό μ‚¬μš©ν•œλ‹€ ⭐ λ„€νŠΈμ›Œν¬ 톡신 신뒰성을 μ œκ³΅ν•˜λŠ” TCP μ†ŒμΌ“κ³Ό 신뒰성이 μ—†μ§€λ§Œ 속도가 λΉ λ₯Έ UDP μ†ŒμΌ“μœΌλ‘œ λ‚˜λ‰œλ‹€ λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°μ—μ„œλŠ” 두 μ’…λ₯˜μ˜ μ†ŒμΌ“μ„ λͺ¨λ‘ μ§€μ›ν•œλ‹€ ⭐ μ†ŒμΌ“ μΈν„°νŽ˜μ΄μŠ€ μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ TCP/IP μ΄μš©ν•˜λŠ” 창ꡬ 역할을 ν•˜λ©°, λ„€νŠΈμ›Œν¬ μ‘μš© ν”„λ‘œκ·Έλž¨μ€ μ†ŒμΌ“μ„ 톡해 데이터λ₯Ό μ†‘μˆ˜μ‹  ν•  수 μžˆλ‹€ λ¦¬λˆ…μŠ€λŠ” νŒŒμΌμ΄λ‚˜ λ””λ°”μ΄μŠ€ λ“± λͺ¨λ“  μΈν„°νŽ˜μ΄μŠ€κ°€ 파일둜 μ·¨κΈ‰λ˜λŠ”λ° μ†ŒμΌ“ λ˜λŠ” 파일둜 μ·¨κΈ‰λœλ‹€ μ†ŒμΌ“λ„ read(), write(), c..

[λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°] μ›Ή μ„œλ²„μ™€ 라즈베리 파이의 μ œμ–΄

⭐ μ›Ή μ„œλ²„μ™€ 라즈베리 파이의 μ œμ–΄ HTML λ¬Έμ„œ μ•ˆμ— μ˜¨λ„μ™€ μŠ΅λ„ 등을 직접 ν‘œμ‹œν•  수 μžˆλ„λ‘ μ‚½μž…ν•¨ + lED 켜고 끌 수 μžˆλŠ” λΌλ””μ˜€ λ²„νŠΌ + μŒμ•…μ„ μ—°μ£Όν•˜κ³  λͺ¨ν„°λ₯Ό μ œμ–΄ μ›Ή λΈŒλΌμš°μ €μ—μ„œ μ›Ή μ„œλ²„μ— 데이터λ₯Ό 보낼 λ•Œ νƒœκ·Έλ₯Ό μ‚¬μš©ν•œλ‹€ νƒœκ·ΈλŠ” POST λ©”μ‹œμ§€λ‘œ μš”μ²­μ„ λ³΄λ‚΄μ§€λ§Œ, μ•ž μ›Ή μ„œλ²„λŠ” GET λ©”μ†Œλ“œλ§Œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— νƒœκ·Έμ˜ method 속성을 μ΄μš©ν•˜μ—¬ GET λ©”μ†Œλ“œλ‘œ 보내도둝 μ„€μ •ν•œλ‹€ μ›Ή λΈŒλΌμš°μ €μ—μ„œ μ›Ή νŽ˜μ΄μ§€λ₯Ό λΆˆλŸ¬λ“€μ—¬μ„œ μ˜΅μ…˜μ„ μ„ νƒν•˜κ³  Submit λ²„νŠΌμ„ μ„ νƒν•˜λ©΄, μ›Ή μ„œλ²„λ‘œ 'http://μ„œλ²„μ£Όμ†Œ:포트번호/index.html?led=Off' μš”μ²­μ˜ GET λ©”μ†Œλ“œλ‘œ μ „λ‹¬λœλ‹€ μ›Ή μ„œλ²„μ—μ„œλŠ” GET λ©”μ†Œλ“œλ‘œ μ „μ†‘λœ λ©”μ‹œμ§€λ₯Ό λΆ„μ„ν•˜κ³  라즈베리 파이의 GPIO 에 ν•΄λ‹Ή λͺ…령을 내릴 수 μžˆλ‹€ μ½”λ“œλ₯Ό ..

[λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°] 데λͺ¬ ν”„λ‘œμ„ΈμŠ€

⭐ 데λͺ¬ ν”„λ‘œμ„ΈμŠ€ μ‹œμŠ€ν…œ μ„œλΉ„μŠ€λŠ” 데λͺ¬ (Daemon) μ΄λΌλŠ” ν˜•νƒœμ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ μ‹€ν–‰λœλ‹€ 데λͺ¬μ€ 일반적으둜 λ°±κ·ΈλΌμš΄λ“œλ‘œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œκ·Έλž¨ 터미널을 μ‚¬μš©ν•  수 μ—†κΈ° λ•Œλ¬Έμ— ν„°λ―Έλ„λ‘œ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” printf() λ“±μ˜ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€ 데λͺ¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€λ €λ©΄, umaks() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 데λͺ¬μ΄ μƒμ„±ν•˜λŠ” 파일의 μ ‘κ·ΌκΆŒν•œμ„ 미리 μ„€μ •ν•œλ‹€ μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€μ–΄ μ„Έμ…˜κ³Ό 그룹의 λ¦¬λ”λ‘œ λ§Œλ“€κ³ , 터미널 μ œμ–΄μ™€ κ΄€λ ¨λœ μ‹œκ·Έλ„μ„ λͺ¨λ‘ λ¬΄μ‹œν•œλ‹€ ν”„λ‘œμ„ΈμŠ€μ˜μž‘μ—… 디렉터리λ₯Ό '/' 둜 μ„€μ •, μ—΄λ¦° 파일 λ””μŠ€ν¬λ¦½ν„°λ₯Ό λͺ¨λ‘ λ‹«λŠ”λ‹€ 터미널과 κ΄€λ ¨λœ ν‘œμ€€ μž…λ ₯κ³Ό ν‘œμ€€ 좜λ ₯, ν‘œμ€€ μ—λŸ¬μ— λŒ€ν•΄ μ‚¬μš©ν•  수 없도둝 μ²˜λ¦¬ν•˜κ³ , 데λͺ¬κ³Ό κ΄€λ ¨λœ 처리λ₯Ό μˆ˜ν–‰ν•˜λ©΄ λœλ‹€ β˜‘οΈ 데λͺ¬ ν”„λ‘œμ„ΈμŠ€ νŠΉμ§• λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€κ°€ init ν”„λ‘œμ„ΈμŠ€λΌλŠ” ..

[λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°] HTTP와 μ›Ή μ„œλ²„ ν”„λ‘œκ·Έλž˜λ°

⭐ μ›Ήκ³Ό HTTP μ›Ή(Web) 은 인터넷을 μœ„ν•œ λ„€νŠΈμ›Œν¬ μ‹œμŠ€ν…œμœΌλ‘œ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈλ“€μ΄ μ—°κ²°λ˜μ–΄ μžˆλŠ” 집합 μ „ μ„Έκ³„μ˜ λ„€νŠΈμ›Œν¬κ°€ ν•˜μ΄νΌν…μŠ€νŠΈ 링크둜 μ—°κ²°λœ λͺ¨μŠ΅μ΄ 마치 κ±°λŒ€ν•œ 거미집 (CobWeb) λ˜λŠ” 거미집 λͺ¨μ–‘μ˜ 망과 κ°™λ‹€κ³  ν•΄μ„œ 뢙여진 이름 μ›Ή κΈ°μˆ μ€ HTTP (HyperText Transfer Protocol) λΌλŠ” ν”„λ‘œν† μ½œ μœ„μ—μ„œ κ΅¬λ™λ˜λ©°, μ›Ήκ³Ό κ΄€λ ¨λœ ν‘œμ€€ν™”λŠ” μ›”λ“œ μ™€μ΄λ“œ μ›Ή μ»¨μ†Œμ‹œμ›€ (W3C, World Wide Web Consortium) μ—μ„œ μ§„ν–‰ν•œλ‹€ 웹은 인터넷을 기반으둜 μ›Ή μ„œλ²„μ™€ μ›Ή λΈŒλΌμš°μ €κ°€ μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ ꡬ쑰둜 λ™μž‘ν•œλ‹€ TCPλ₯Ό 기반으둜 λ™μž‘ν•˜λ©° 80 번 포트번호둜 μ‚¬μš©ν•œλ‹€ HTTP 의 첫 두 κΈ€μžλŠ” ν•˜μ΄νΌν…μŠ€νŠΈλ₯Ό 가리킀며, ν˜„μž¬ λ¬Έμ„œμ™€ μ—°κ²°λœ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œμ˜ 연결을 의미..

[λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°] 병행 처리 μ„œλ²„

⭐ 병행 처리 μ„œλ²„ μ•žμ„œ μ„œλ²„ μ½”λ“œλ₯Ό λΉŒλ“œν•œ ν›„ 2λŒ€μ˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ ‘μ†ν•œ 경우라면 첫 번째 ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ— λ¬Έμ œμ—†μ΄ μ ‘μ†λ˜μ§€λ§Œ, 두 번째 ν΄λΌμ΄μ–ΈνŠΈκ°€ μ ‘μ†ν•˜λ©΄, 두 번째 ν΄λΌμ΄μ–ΈνŠΈλŠ” 첫 번째 ν΄λΌμ΄μ–ΈνŠΈμ˜ 연결이 λŠμ–΄μ§ˆ λ•ŒκΉŒμ§€ λŒ€κΈ° μƒνƒœλ‘œ μž‡κ»˜ λœλ‹€ μ—¬λŸ¬ ν΄λΌμ΄μ–ΈνŠΈλ₯Ό λ™μ‹œμ— λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ‚˜ λ©€ν‹° μŠ€λ ˆλ“œ 기반의 μ„œλ²„κ°€ ν•„μš”ν•˜λ‹€ λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ μ„œλ²„μ˜ 경우 ν΄λΌμ΄μ–ΈνŠΈμ˜ 접속이 λ“€μ–΄μ˜¬ λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€μ–΄μ„œ μ²˜λ¦¬ν•  수 μžˆλ‹€ BUT 🚨 ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“œλŠ”λ° μ‹œκ°„μ΄ 많이 걸리고, ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 (IPC) 이 λ©€ν‹° μŠ€λ ˆλ“œμ— λΉ„ν•΄ λ³΅μž‘ν•˜κΈ° λ•Œλ¬Έμ— μš”μ¦˜μ€ λ©€ν‹° μŠ€λ ˆλ“œλ₯Ό 더 많이 μ“΄λ‹€ λ©€ν‹° μŠ€λ ˆλ“œ μ„œλ²„λ„ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄ λ“€μ–΄μ˜¬ λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ μŠ€λ ˆλ“œλ₯Ό λ§Œλ“€μ–΄μ„œ μ²˜λ¦¬ν•œλ‹€ λ©€ν‹° ν”„λ‘œ..

[λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°] TCPμ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž˜λ°

⭐ TCP TCP λŠ” μ—°κ²° 기반의 신뒰성이 μžˆλŠ” 톡신 λ°©μ‹μœΌλ‘œ FTP, 메일, μ›Ή μ„œλΉ„μŠ€ λ“± 인터넷을 μ΄μš©ν•œ λ‹€μ–‘ν•œ μ„œλΉ„μŠ€μ—μ„œ μ‚¬μš©λ˜κ³  μžˆλ‹€ TCP λŠ” 주둜 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ κ°„ 톡신 방식이닀 TCP μ„œλ²„λŠ” μ†ŒμΌ“μ„ μƒμ„±ν•œ ν›„ λ°”μΈλ“œ (bind) ν•˜λŠ” 과정은 UDP κ³Όμ •κ³Ό λ™μΌν•˜λ‹€ but🚨 UDP와 λ‹€λ₯΄κ²Œ TCP λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 3 Way-Handshaking (connect() ν•¨μˆ˜) λ₯Ό ν†΅ν•΄μ„œ μ„œλ²„μ— μ ‘μ†ν•˜κΈ° λ•Œλ¬Έμ— ν΄λΌμ΄μ–ΈνŠΈμ˜ λŒ€κΈ°λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ 큐 (queue) κ°€ ν•„μš”ν•˜λ‹€ 이λ₯Ό μœ„ν•΄ listen() ν•¨μˆ˜λ₯Ό 톡해 λŒ€κΈ° 큐λ₯Ό μ„€μ •ν•˜κ³ , accept() ν•¨μˆ˜λ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈμ˜ 접속을 기닀릴 수 μžˆλ‹€ TCP ν΄λΌμ΄μ–ΈνŠΈλŠ” λ¨Όμ € μ†ŒμΌ“μ„ μƒμ„±ν•˜κ³  μ„œλ²„μ— 접속을 ν•΄μ•Όν•˜λŠ”λ°, connect() ν•¨μˆ˜λ₯Ό μ΄μš©ν•œλ‹€..

[λ¦¬λˆ…μŠ€ λ„€νŠΈμ›Œν‚Ή ν”„λ‘œκ·Έλž˜λ°] UDP λ„€νŠΈμ›Œν¬ ν”„λ‘œκ·Έλž˜λ°

⭐ μ†ŒμΌ“μ˜ 이용 UDP ν”„λ‘œν† μ½œμ€ λ°μ΄ν„°μ˜ 전솑 μ‹œ 신뒰성은 μ—†μ§€λ§Œ 속도가 λΉ λ₯΄κΈ° λ•Œλ¬Έμ— 일반적인 LAN ν™˜κ²½μ—μ„œ 많이 μ‚¬μš© LAN μƒμ—μ„œλŠ” νŒ¨ν‚·μ˜ 뢄싀이 거의 μ—†λ‹€κ³  함 μ„œλ²„μ˜ 경우 bind() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 운영체제의 ν•΄λ‹Ή 포트둜 λ“€μ–΄μ˜€λŠ” μ„œλΉ„μŠ€λ₯Ό UDP μ„œλ²„μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ—°κ²°ν•΄μ€˜μ•Ό ν•œλ‹€ UDPμ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λ‘ sendto() ν•¨μˆ˜λ₯Ό ν†΅ν•΄μ„œ λ°μ΄ν„°κ·Έλž¨μ„ 보내고, recvfrom) ν•¨μˆ˜λ₯Ό 톡해 λ°μ΄ν„°κ·Έλž¨μ„ μˆ˜μ‹ ν•œλ‹€ μ†ŒμΌ“ μ‚¬μš©μ΄ λλ‚˜λ©΄ close() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ†ŒμΌ“μ„ λ‹«λŠ”λ‹€ μœ λ‹‰μŠ€μ—μ„œ 인터넷 톡신을 ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¨Όμ € μ†ŒμΌ“μ„ 생성해야 ν•˜λŠ”λ°, socket() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€ ν˜ΈμΆœμ— μ„±κ³΅ν•˜λ©΄ μ†ŒμΌ“μ— λŒ€ν•œ 파일 λ””μŠ€ν¬λ¦½ν„°λ₯Ό λ°˜ν™˜ν•˜κ³ , μ‹€νŒ¨ν•˜λ©΄ -1을 λ°˜ν™˜ν•œλ‹€ int socket(int ..