Giter Site home page Giter Site logo

22hours / system-monitor-study Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 44.77 MB

:clapper: CatholicUniv PC Remote Management System(App, Server)

C++ 1.81% QMake 0.11% Java 16.40% Kotlin 6.13% HTML 53.55% CSS 13.08% JavaScript 7.42% C# 1.50%
cplusplus winapi java spring kotlin android network-analysis registry-scripts

system-monitor-study's Introduction

system-monitor-study

๐Ÿ’ป Catholic Univ PC Remote Management System. v3.0.0


Architecture

image

Process

  1. ์ „์ฒด์ ์ธ ๊ธฐํš๋ถ€ํ„ฐ ์žก๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ถ”์ƒ์ ์ธ ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ€์ง€๊ณ ,
    ๋ชจ๋“ˆ๋‹จ์œ„์—์„œ๋ถ€ํ„ฐ ๊ฐœ๋ฐœํ•˜์ž
  • ์ถ”์ƒ์ ์ธ ๋ฐฉํ–ฅ์„ฑ : ๋‹ค์†”๊ด€ PC ๊ด€๋ฆฌ ์—์ด์ „ํŠธ
  1. ๊ธฐํš(๋ชจ๋“ˆ๋‹จ์œ„)
    -> ๊ธฐ์ˆ ์กฐ์‚ฌ
    -> ๊ธฐ์ˆ ์—ฐ๊ตฌ
    -> poc์ž‘์„ฑ
    -> ๋ชจ๋“ˆ๊ฐœ๋ฐœ
    -> UI ๋ช…์„ธ
    -> ๋ชจ๋“ˆํ™”
    -> ์ œํ’ˆ์— ํฌํ•จ



How-to

  1. Kanban board:+1: ๊ฑฐ์‹œ์ ์ธ ํ”„๋กœ์ ํŠธ์˜ ํ๋ฆ„๊ณผ ๋ชจ๋“ˆ๋ณ„ ๊ฐœ๋ฐœ๊ณผ์ •์„ ํ•œ ๋ˆˆ์— ๋ณด์—ฌ์คŒ
  2. Issues : ์˜๊ฒฌ๊ณต์œ  ๋ฐ ๊ฐœ์ง„์„ ์œ„ํ•ด ์†Œํ†ต์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ์ค‘.
  3. Pull Request :
    • Merging์ด๋ž‘ Pull Rueset ๊ตฌ๋ถ„
    • Pull Request -> Code Review
  4. Milestone : Grouping Issues
  5. Branch : Issue ๋ณ„๋กœ ์ƒ์„ฑ
  6. Slack์œผ๋กœ ๊ณต์œ 

Repo

  • ~/dev : ๊ฐœ๋ฐœ์˜ ๋ผˆ๋Œ€
  • ~/exercise : ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์˜ˆ์ œ ๋ฐ ์—ฐ์Šต
  • ~/module : ๋ผˆ๋Œ€์— ํฌํ•จ๋˜๋Š” ๋ชจ๋“ˆ

Reference

-----Win32API
  1. Win32API ๊ด€๋ จ ์ฃผ์š” ์ž๋ฃŒํ˜•
-----Registry
  1. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐœ๋…๊ณผ ํ‚ค(Key)์˜ ์—ด๊ธฐ/๋‹ซ๊ธฐ
  2. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ํ‚ค(Key)์˜ ์กฐํšŒ/์ƒ์„ฑ/์‚ญ์ œ
  3. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ’(Value)์˜ ์กฐํšŒ/์ƒ์„ฑ/์‚ญ์ œ (1)
  4. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ’(Value)์˜ ์กฐํšŒ/์ƒ์„ฑ/์‚ญ์ œ (2)
-----PDH(Performance Data Helper)
  1. PDHํ•จ์ˆ˜ ํ™œ์šฉํ•˜์—ฌ InitCPUUsage(), GetCpuUsage() ์ œ์ž‘

system-monitor-study's People

Contributors

damin8 avatar dependabot[bot] avatar jongwuner avatar winterlood avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

system-monitor-study's Issues

Server GUI

  • ๊ฐœ๋ฐœ์–ธ์–ด, ํ™˜๊ฒฝ research

PC Client -> Server Request ์ข…๋ฅ˜ ๋ช…์‹œ

Request ์ข…๋ฅ˜

GET

Mesaage channel (Long Polling)

URL = http://13.125.225.221/pc/{id}/message/{minute}

Post

PC Shutdown (Long Polling)

-> v1.2.1 General Polling์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ์Œ.

์ฒ˜์Œ์— ์ ‘์†ํ•˜์ž ๋งˆ์ž

classId, powerStatus, id, name, cpuData, ramData, startTime, endTime ๋ณด๋‚ด์ฃผ๊ธฐ

URL = http://13.125.225.221/pc/{id}/power/{endTime}

PC Extension (One-time)

id์™€ endTime๋ณด๋‚ด์ฃผ๊ธฐ

ex) {id : ํ™๊ธธ๋™, endTime : 2010-02-56-21-39}

URL = http://13.125.225.221/pc/{id}/power/{endTime}

PC Update (General Polling)

id์™€ cpuData, ramData ๋ณด๋‚ด์ฃผ๊ธฐ

ex) {id : ํ™๊ธธ๋™, cpuData : 77.23, ramData : 31.45}

URL = http://13.125.225.221/pc/{id}/data

Response ์ข…๋ฅ˜

Get

id ์™€ msg ๋ฐ›๊ธฐ

ex) {id : ํ™๊ธธ๋™, msg : 2๋ถ„๋‚จ์•˜์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ ์ •๋ฆฌ ์„œ๋‘˜๋Ÿฌ๋ผ.}

PC ์—ฐ์žฅ์‹ ์ฒญ์„ ๋Œ€๋น„ํ•ด์„œ

msg๊ฐ€ null ๊ฐ’์ด ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ ๋Œ€๋น„


Post

PC Shutdown (Long Polling)

id์™€ powerStatus ๋ฐ›๊ธฐ

ex) {id : ํ™๊ธธ๋™, powerStatus : OFF}
*ON / OFF ๋Œ€๋ฌธ์ž

PC ์—ฐ์žฅ์‹ ์ฒญ์„ ๋Œ€๋น„ํ•ด์„œ

powerStatus๊ฐ€ ON์ด ์˜ค๋Š” ๊ฒฝ์šฐ ๋Œ€๋น„


PC Extension(One-time)

  • ํ•„์š” ์—†๋‹ค.

PC Update(General Polling)

  • ํ•„์š” ์—†๋‹ค.

Spring REST API Server pcs๋ฐฐ์—ด ๋ฌธ์ œ ์‹๋ณ„

๋ฌธ์ œ ์‹๋ณ„ URL

http://13.125.225.221/mobile/pc

๋ฌธ์ œ ์‹๋ณ„

Android Client

๋ฌธ์ œ ์›์ธ

PC ์ „์ฒด๋ฅผ ์กฐํšŒํ•˜๋Š” GET method ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•จ
image

์‚ดํŽด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค๊ณ„์™€ ๋‹ค๋ฅธ ์ ์ด ์กด์žฌ ํ•จ

๊ธฐ์กด ์„ค๊ณ„

image

ํ˜„์žฌ ์„œ๋ฒ„ ์ƒํƒœ

image

์ฐจ์ด์ 

๊ธฐ์กด ์„ค๊ณ„์—์„œ๋Š” pcs ๋ฐฐ์—ด์˜ value๋Š”

pcs : [ {item 1 }. {item 2}. {item 3}] 

๋‹ค์Œ๊ณผ ๊ฐ™์•˜์œผ๋‚˜, ํ˜„์žฌ server์—์„œ ํ™•์ธ๋˜๋Š” pcs๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ

pcs : [ "{item 1 }". "{item 2}". "{item 3}" ] 

๋”ฐ๋ผ์„œ JSON Array ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ณผ์ •์—์„œ runtime error ์‹๋ณ„๋˜์—ˆ์Œ

ํ˜„์žฌ

Android ์ƒ์—์„œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ ๋‚ด์šฉ์ธ์ง€ ๊ฒ€ํ† ์ค‘...

์š”์ฒญ

Server ์ƒ์—์„œ ์›๋ž˜ ์„ค๊ณ„ ๊ตฌ๋„์™€ ๋™์ผํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š”์ง€ ์š”์ฒญ

PC ์ข…๋ฃŒ (๋‚˜ ์–ธ์ œ๊บผ?) Bug

#47 ์— ์žˆ๋Š” ๋‚˜ ์–ธ์ œ๊บผ? (PC Shutdown)

1. PC -> Server (๋‚˜ ์–ธ์ œ๊บผ?) Post Long-Polling

1.1. URL๋กœ Post ๋˜์ง€๊ธฐ

image


1.2. Request ๋˜์ง„ ํ›„์— Response ๋Œ€๊ธฐ

image

Long Polling ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต ๋Œ€๊ธฐ์ค‘


1.3. Server์˜ Log

image


2. PC -> Server (๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด?) Get Long-Polling

2.1. 10๋ถ„ ์ „์— ์•Œ๋ ค๋‹ฌ๋ผ๊ณ  ์š”์ฒญ

image

Long-Polling ์ด๋ผ ์‘๋‹ต ๋Œ€๊ธฐ์ค‘

2.2. Server์˜ Log

image

2.3. 10๋ถ„์ „์— ์‘๋‹ต(response) ํ™•์ธ

image

3. Android -> Server (PC ๋„๊ธฐ endTime์€ 1๋ถ„ ์•ž์œผ๋กœ ์„ค์ •) Post Long-Polling

3.1. ์ง€์ •ํ•œ ์‹œ๊ฐ„(endTime)์— PC ๋„๊ธฐ ์š”์ฒญ

image

Android์˜ Post Long-Polling ์ด๋ผ response ๋Œ€๊ธฐ์ค‘

3.2. Server์˜ Log

image

4. Android ์—๊ฒŒ endTime์ด ๋˜๋ฉด response๋กœ id์™€ powerStatus๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์˜จ๋‹ค.

4.1. Android์˜ response

image

Android Post-Long-polling์˜ response๋Š” ์˜จ๋‹ค.

4.2. PC์˜ response

image

์•„์ง๋„ ๋Œ€๊ธฐ์ค‘์ด๋‹ค.

๊ฒฐ๋ก 

ํ˜„์žฌ Android๊ฐ€ ๋„๋Š” ์š”์ฒญ post๋ฅผ ๋‚ ๋ ค์„œ ํ•ด๋‹น ์‹œ๊ฐ„์ด ๋˜์–ด๋„, client PC ์—๊ฒŒ response๊ฐ€ ์•ˆ ์˜จ๋‹ค.

ํ•˜์ง€๋งŒ Android์—๊ฒŒ๋Š” status : OFF ๋กœ ์˜ค๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ client PC์˜ "๋‚˜ ์–ธ์ œ๊บผ??" Long polling์˜ response๋ฅผ ํ™•์ธํ•ด์•ผ ํ•  ๋“ฏ ํ•˜๋‹ค.

Client's MAC Address

ํ•„์š” ์‚ฌ์œ 

  • ์›๊ฒฉ ์ข…๋ฃŒ/ ์žฌ๋ถ€ํŒ…์— ํ•„์š”ํ•  ๊ฑธ๋กœ ์˜ˆ์ƒ๋จ

๊ตฌํ˜„ ์˜ˆ์ƒ

  • ARP Protocol ์‚ฌ์šฉ์‹œ, ํ•ด๋‹น Router์˜ ARP Table ์กฐํšŒ์‹œ ์Šต๋“ ๊ฐ€๋Šฅํ•  ๊ฑธ๋กœ ์˜ˆ์ƒ๋จ

  • MAC Addr ์€ ๋ถˆ๋ณ€ํ•˜๋‹ˆ, Client์™€ Server ์—ฐ๊ฒฐ์‹œ์— ํ•œ๋ฒˆ๋งŒ ์กฐํšŒ ์‹œํ‚ค๋ฉด ๋˜๋‹ˆ ๋ถ€ํ•˜ ์ „ํ˜€ ์—†์Œ

  • ๋นจ๋ฆฌ ๊ฒ€ํ†  ๋ถ€ํƒ๋“œ๋ ค์š” ^&^

CPU ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ€์ ธ์˜ค๋Š” API

image

Windows์˜ ์ž‘์—… ๊ด€๋ฆฌ์ž๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ „์ฒด ์‚ฌ์šฉ๋Ÿ‰, ์ฝ”์–ด๋‹น ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” API ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

// Example
CpuData GetCpuUsageInformation()
{
   // ...
}

GET : `~/mobile/pc/` ์—์„œ 'n' ์‹๋ณ„

22hours ์„œ๋ฒ„ ์ƒ

image

  • 'n' ์ด ์‹๋ณ„๋จ.

๋กœ์ปฌ ํ™˜๊ฒฝ ์ƒ

image

  • 'n' ์ด ์‹๋ณ„๋˜์ง€ ์•Š์Œ.

์ถ”์ธก๋˜๋Š” ์›์ธ์œผ๋กœ๋Š”,
json ๋ฐ˜ํ™˜๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ์ข‹๊ฒŒ ์ •๋ ฌํ•˜๋ ค๊ณ  , "\r\n" ์„ ๋„ฃ๋Š”๋ฐ,
๊ทธ๊ฒƒ์˜ ๋ถ€์ž‘์šฉ์ธ ๊ฒƒ ๊ฐ™๋‹ค. UTF-8, encoding ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š”๋ฐ, ์š”๊ฒŒ ํ˜ธํ™˜๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ ค๋‚˜?
json ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ชฉ์ ์˜ ์ธก๋ฉด์—์„œ๋Š” ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ํฐ ์–ด๋ ค์›€์€ ์—†๋‹ค.

@winterlood

PC ์‚ฌ์šฉ์ž๊ฐ€ PC๋ฅผ ์ž์˜์ ์œผ๋กœ ๋Œ ๋•Œ

์‚ฌ์šฉ์ž๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ๋Œ ๋•Œ

  1. ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ๋„ ๊บผ์งˆ ๊ฒƒ์ž„.

  2. ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ๊บผ์งˆ ๋•Œ Post๋กœ Server์—๊ฒŒ id๋ž‘ powerStatus๋ฅผ ์ค€๋‹ค.

ex) {id : ํ™๊ธธ๋™, powerStatus : OFF}

  1. One-time

์‚ฌ์šฉ์ž๊ฐ€ ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ ๋•Œ

  1. ์ปดํ“จํ„ฐ๋ฅผ ๋Œ ๋•Œ์™€ ๋˜‘๊ฐ™๋‹ค.

  2. ์™œ? ์–ด์ฐจํ”ผ ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด, ์„œ๋น„์Šค๋กœ ๋“ฑ๋กํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ์šฐ๋ฆฌ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค.

  3. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ์ข…๋กœ = powerStatus = OFF ๋ž‘ ๊ฐ™๋‹ค๊ณ  ์ทจ๊ธ‰


  • ์‚ฌ์šฉ์ž๊ฐ€ PC๋ฅผ ์ž์˜์ ์œผ๋กœ ๋„๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒํ•  ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ดค๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์–ด๋–จ๊นŒ ์‹ถ์–ด์„œ

  • Server์™€ ์–˜๊ธฐ๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋ผ์„œ

  • @jongwuner ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ

(Front) ์–ดํ”Œ์ด ์ผœ์ ธ์žˆ๋Š” ์ƒํƒœ์—์„œ ์ข…๋ฃŒ์‹œ๊ฐ„์ด ๋˜์—ˆ์„๋•Œ ์—ฌ์ „ํžˆ ์ธ์Šคํ„ด์Šค์ฐฝ์ด ๋“ค์–ด๊ฐ€์ง.

image

  • ์–ดํ”Œ์ด ๊ณ„์† Polling ์œ ์ง€ํ•˜๋ฉด์„œ ๋Œ€๊ธฐ ์ค‘์ธ ์ƒํƒœ์—์„œ, ์ข…๋ฃŒ์‹œ๊ฐ„์ด ๋˜์—ˆ๊ณ (Server ์ƒ์œผ๋กœ Responseํ™•์ธํ–ˆ์Œ.)
  • PC์ข…๋ฃŒ๊ฐ€ ๋˜์ง€ ์•Š๊ณ  ์ผœ์ ธ์žˆ๋Š” ์ƒํƒœ๋กœ ๋‚จ์•„์žˆ์Œ.

Android GUI

  • ๊ฐœ๋ฐœ์–ธ์–ด, ํ™˜๊ฒฝ research

์ง€๊ธˆ๊นŒ์ง€ ๊ตฌํ˜„ํ•ด๋‘” ๋ฉ”์†Œ๋“œ๋“ค(19-10-13)

ํ•ด๋‹น ๋ณ€์ˆ˜(O)๋“ค์€ ์ฐพ์•˜์œผ๋‚˜...

image

  • ํ•ธ๋“ค๋Ÿฌ ๊ฐฏ์ˆ˜ : ๋ชป์ฐพ์Œ
  • ์†Œ์ผ“ ๊ฐฏ์ˆ˜ : ๋ชป์ฐพ์Œ
  • ์ฝ”์–ด ๊ฐฏ์ˆ˜ : ๋…ผ๋ฆฌํ”„๋กœ์„ธ์„œ๊ฐฏ์ˆ˜๋กœ๋ฐ–์— ๋ชป์ฐพ์•˜์Œ.
  • ๊ฐ€์ƒํ™”์—ฌ๋ถ€ : ๋ชป์ฐพ์Œ
  • L1, L2, L3 :
    * SDL 2.0 API๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์„ ๋“ฏ. ์ง€๊ธˆ ์ปดํŒŒ์ผ์˜ค๋ฅ˜(#5)

Storage, Memory ๋ชจ๋“ˆ ๊ฒ€ํ†  ๋ฐ ์ถ”ํ›„ ๋ฐฉํ–ฅ

Storage, Memory ๋ชจ๋“ˆ ์ดˆ์•ˆ์™„์„ฑ

๊ฐ“์„ ์šฑ ํ•œ๋ฒˆ ๊ฒ€ํ† ํ•ด์ฃผ์„ธ์š”.

image

Network

๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ถ€๊ฐ€๊ธฐ๋Šฅ

์–ด๋–ค ์ˆœ์„œ๋กœ , ์–ด๋–ป๊ฒŒ?
View๋„ ๋งŒ๋“ค์–ด์•ผ ํ•˜์ง€ ์•Š์„๊นŒ? qt GUI๋„ ๊ณต๋ถ€ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

์›๊ฒฉ ํŒŒ์ผ ์†ก/์ˆ˜์‹ 

  • ๊ฐ์ข… ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „๊ด€๋ฆฌ๊ธฐ๋Šฅ
    • (์ปจ์…‰) Server PC์— ๊น”๋ ค์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ธฐ์ค€์œผ๋กœ Client PC์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฒ„์ „์ด ๋” ๋‚ฎ์„ ๋•Œ, Client PC์— ์ž๋™ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ.
    • Client PC์— ๊น”๋ ค์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๋ฒ„์ „ ํ™•์ธ๊ธฐ๋Šฅ
  • ํŒŒ์ผ ์†ก/์ˆ˜์‹ 
    • Server <-> Client ๊ฐ„ ๋ฉ”์‹ ์ € ๊ฒฉ์œผ๋กœ ํŒŒ์ผ ์†ก/์ˆ˜์‹  ํ•  ์ˆ˜ ์žˆ๋Š”?
    • ๊ฐ์ข… ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „๊ด€๋ฆฌ๊ธฐ๋Šฅ ์— ํ•ด๋‹น ๊ธฐ๋Šฅ include ๊ณ ๋ ค ์ค‘

software-version-management

  • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ get
  • ํ•ด๋‹น ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” URL ํ™•๋ณด
  • #13 ์›๊ฒฉ ํŒŒ์ผ ์†ก/์ˆ˜์‹  Include ๊ณ ๋ ค ์ค‘....
    • URLํ™•๋ณด๊ฐ€ ๋งค๋„๋Ÿฝ๊ฒŒ ๋œ๋‹ค๋ฉด Include ์•ˆํ•œ๋‹ค

(Mobile) PC๊ฐ€ ์ƒˆ๋กœ ์ผœ์งˆ ๋•Œ, mobile์— ์ผœ์ง„ PC ๋ฐ˜์˜ํ•ด์•ผ ํ•œ๋‹ค.

๋ฌธ์ œ์ƒํ™ฉ

์–ดํ”Œ์ด ๋จผ์ € ์ผœ์ง„์ƒํƒœ์—์„œ, ์ƒˆ๋กœ PC๊ฐ€ ์ผœ์ง€๋ฉด, json-type์„ jsonArray-type์— ์ถ”๊ฐ€ํ•˜๋Š” ๋Š๋‚Œ์œผ๋กœ

(Common) Json-type

image

(Mobile) JsonArray-type [์–ดํ”Œ์ด ์ตœ์ดˆ ์ผœ์งˆ ๋•Œ, (1ํšŒ์„ฑ) ]

image

PC Extension Error

  1. Post (๋‚˜ ์–ธ์ œ๊บผ?)
  • 50๋ถ„์— ๋„๋Š”๊ฑฐ์•ผ~

image

  1. Get (๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด?)
  • 1๋ถ„์ „์— ์•Œ๋ ค์ค˜

image

  1. Post (์—ฐ์žฅ์‹ ์ฒญ)
  • ๋‚˜ 52๋ถ„์œผ๋กœ ์—ฐ์žฅํ• ๋ž˜~

image

  1. Post (๋‚˜ ์–ธ์ œ๊บผ?)
  • 50๋ถ„์— ๋„๋Š”๊ฑฐ Response (powerStatus : ON) ์œผ๋กœ ์ œ๋Œ€๋กœ ์˜จ๋‹ค.

image

  1. Get (๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด?)
  • Response๊ฐ€ ์•ˆ์˜จ๋‹ค.

  • ์›๋ž˜๋Œ€๋กœ๋ผ๋ฉด null ๊ฐ’์œผ๋กœ Response๊ฐ€ ์™€์„œ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•จ.

image


๊ฒฐ๋ก 

์—ฐ์žฅ์‹ ์ฒญ ํ–ˆ์„ ๋•Œ

์›๋ž˜๋Œ€๋กœ๋ผ๋ฉด Post(๋‚˜ ์–ธ์ œ๊บผ?) ์™€ Get(๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด?)๊ฐ€ ๋‘˜ ๋‹ค Response๊ฐ€ ์™€์•ผ ํ•œ๋‹ค.

ํ˜„์žฌ๋Š”

Get (๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด?) ์˜ Response๊ฐ€ ์™€์•ผ ํ•˜๋Š”๋ฐ ์˜ค์ง€ ์•Š๋Š”๋‹ค

๋‘˜ ์ค‘ Post๋งŒ ์˜จ๋‹ค.

์‹œ์ž‘ํ•˜๋Š” ์‹œ์ ์—์„œ ๋“œ๋Š” ์˜๋ฌธ์  3๊ฐ€์ง€

system-monitor ์˜๋ฌธ์ 

  1. ๋ชฉํ‘œ๋Š” ๋‹ค์†”๊ด€ PC ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(<-system-monitor๋ฅผ ์šฐ๋ฆฌ์˜ ํ˜„์‹ค์—์„œ ์™€๋‹ฟ๊ฒŒ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•จ.)
  2. Diagram์€ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๋งŽ์ด๊ฑธ๋ ค์„œ ๋ถˆํ•„์š”ํ•˜๋‹ค๋ผ๋Š” ๋ง์”€
  • ์˜๋ฌธ์ 1 : ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„๊ณผ class, sequence์— ๋Œ€ํ•œ ๊ธฐํš์€ ์–ด๋Š์ •๋„๊ฐ€ ์ ๋‹นํ•œ๊ฐ€?
  • ์˜๋ฌธ์ 2 : ๋Œ€์‰ฌ๋ณด๋“œ๋กœ ์†Œํ†ตํ•˜๋Š” ๊ฒƒ์œผ๋กœ diagram์„ค๊ณ„ํ•ด์„œ ๋Œ€ํ™”ํ•˜๋Š”๊ฒƒ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  1. โ˜† ์š”๊ตฌ์‚ฌํ•ญ๋ถ„์„์„ ์–ด๋–ค์‹์œผ๋กœ ํ•  ๊ฒƒ์ธ๊ฐ€?

ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ ์šฉ์ดํ•˜๊ฒŒ๋” ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  restful method์— response ๋ถ™์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

response๊ฐ€ no message ์ด๋Ÿฐ๊ฒŒ ๋– ์„œ ํ˜ผ๋™์ด ์˜ค๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ,

response๊ฐ€ ํ•„์š”์—†๋Š” ํ˜ธ์ถœ์— ํ•œํ•ด์„œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ฐ˜ํ™˜์„ ํ•˜์ง€ ์•Š์•„์„œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๋Œ€๋žต์ ์œผ๋กœ๋ผ๋„ response๋ฅผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ˆ˜์ •ํ•ด๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์†Œ ์ถฉ๊ฒฉ์ ?์ธ ๋‚˜์˜ ์ƒ๊ฐ (PC Client <-> Server)

์ƒ๊ฐ์„ ํ•˜๊ณ  ํ•˜๊ณ  ํ•˜๊ณ  ๋˜ ํ•˜๊ณ 

์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ๋‚ด ์ƒ๊ฐ์„ ์˜ฌ๋ ค ๋ด…๋‹ˆ๋‹ค.

PC Client์™€ Server์˜ ํ†ต์‹  (Client -> Server)

์ˆœ์„œ๋Œ€๋กœ

  1. ๋‚˜ ์–ธ์ œ๊บผ? (Post Long-Polling)
  • Body์—๋Š” ๊ฐ์ข… ์ •๋ณด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.
  • endTime์ด ๋˜๋ฉด Server์—์„œ Response๋กœ ๋„๋ผ๊ณ  ์˜จ๋‹ค.
  1. ๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด? (Get Long-Polling)
  • ๋ช‡ ๋ถ„ ์ „์— ์•Œ๋ฆด๊ป€์ง€?
  • N ๋ถ„ ์ „์ด ๋œ๋‹ค๋ฉด Response๋กœ "N๋ถ„ ์ „์ž…๋‹ˆ๋‹ค! ์ž๋ฃŒ ์„œ๋‘˜๋Ÿฌ ์ฃผ์„ธ์š”!"
  • ๋‹ค์‹œ Get ์š”์ฒญ
  1. data ์—…๋ฐ์ดํŠธ (Post General-Polling ์ฃผ๊ธฐ์ ์œผ๋กœ n๋ถ„๋งˆ๋‹ค)
  • Body์—๋Š” ๊ฐ์ข… ์ •๋ณด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.

์ƒ๊ฐ

์ผ๋‹จ ์œ„์—๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰์ด ๋˜๋ฉด ๋ฌด์กฐ๊ฑด ์‹คํ–‰์ด ๋˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•ด๋„ ๋˜์–ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„

์šฐ๋ฆฌ ํ†ต์‹ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ์„ ํ•˜๋‹ค๊ฐ€

์ด์ œ์™€์„œ ์•„์ฐจ! ์‹ถ์—ˆ๋˜ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๊ต‰์žฅํžˆ ๊ทผ๋ณธ์ ์ธ ์ƒ๊ฐ์ธ๋ฐ

1๋ฒˆ์—์„œ Post Long-Polling ์˜ Response๋ฅผ ์‹ ๊ฒฝ์จ์•ผ ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‚˜?

์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ์ด์œ 

  • ์šฐ๋ฆฌ๋Š” Get ์š”์ฒญ์œผ๋กœ ๋ช‡ ๋ถ„ ๋‚จ์•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋ ‡๋‹ค๋ฉด ๋‚จ์€ ์‹œ๊ฐ„์ด 0๋ถ„์ด๋ผ๋Š” ๋œป์€?
  • ๊บผ์•ผ ๋œ๋‹ค๋Š” ๋œป (PC Client ์—์„œ ์ฒ˜๋ฆฌ ํ•ด์ฃผ๊ธฐ)

์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด Post Long-Polling ์˜ Response๋ฅผ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๋„ ์—†์„ ๋ฟ ๋”๋Ÿฌ
Server์—์„œ ๊ตณ์ด Request๋ฅผ ๋ถ™์žก๊ณ  ์žˆ์„ ํ•„์š”๋„ ์—†๋‹ค.

๋˜, Client ์ž…์žฅ์—์„œ Post๋ผ๋ฉด "์–ด๋– ์–ด๋– ํ•œ ๊ฒƒ์„ ๋ฐ”๊ฟ”์ค˜!" ์ด๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด Response๊ฐ€ ์–ด๋–ป๊ฒŒ ์˜ค๋˜๊ฐ„์— Post๋ฅผ ๋˜์ง€๋ฉด ๋์ด์–ด์•ผ ํ•˜๋Š”๊ฒŒ ์•„๋‹Œ๊ฐ€?


๊ฒฐ๋ก 

PC Client -> Server๋กœ ๊ฐ€๋Š” ๋ชจ๋“  Post ์˜ response๋Š” null ์ด ์™€์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐ. (๋ถ™์žก๊ณ  ์žˆ์„ ํ•„์š”๋„ ์—†๋‹ค)

Get Long-Polling ์˜ Response์— ๋”ฐ๋ผ Client๊ฐ€ ์ฒ˜๋ฆฌ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์˜๊ฒฌ์— ๋Œ€ํ•œ ์ƒ๊ฐ์„ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค @jongwuner

Version 2 ์„ค๊ณ„์˜ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ A to Z

1 pc id

2 ์–ดํ”Œ์ด ์ผœ์ง€๋Š” ์ˆœ์„œ์™€ pc๊ฐ€ ์ผœ์ง€๋Š” ์ˆœ์„œ์˜ ๊ด€๊ณ„๋ฅผ ์–ด๋–ค์‹์œผ๋กœ

  • pc๋“ค์ด ์ผœ์ ธ์žˆ๊ณ , ์–ดํ”Œ์ด ์ผœ์งˆ๋•Œ,
    (Server, Mobile) 1000๋Œ€๋ฅผ ๋ชจ๋‘ ์กฐ์‚ฌํ•ด์„œ powerStastus = ON์• ๋“ค์„ ๋‹ค ๊ฐ€์ ธ์˜จ๋‹ค.

  • ์–ดํ”Œ์ด ๋จผ์ €์ผœ์ ธ์žˆ์„ ๋•Œ, pc๊ฐ€ ์ถ”๊ฐ€ ์ผœ์ง„๋‹ค.
    (Mobile) longpolling get ์œผ๋กœ ๋Œ€๊ธฐ๋ฅผ ํ•œ ์ƒํƒœ์—์„œ, pc๊ฐ€ ์ผœ์งˆ๋•Œ, get์„ ํ•ด์˜จ๋‹ค.
    (PC) ์ผœ์งˆ๋•Œ, ์–ธ์ œ๊บผ์š”? post๋‚ ๋ ค์ค„๋•Œ, to send Android pc์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ mobile๋กœ ๋ณด๋‚ด์ค€๋‹ค.

  • ์–ดํ”Œ์ด ์ผœ์ ธ์žˆ์„๋•Œ, pc๊ฐ€ ์ข…๋ฃŒ๋œ๋‹ค.
    (PC) ์–ธ์ œ๊บผ์š”?์—์„œ longpolling 'response'ํ•  ๋•Œ,(์ข…๋ฃŒ์˜ˆ์•ฝ์‹œ๊ฐ„์ด ๋˜์—‡์„๋–„) ๋Œ๊บผ์•„๋ƒ.
    (Mobile) PC longpolling response๋ฅผ ์ด๋ฒคํŠธ๋กœ ๊ฑธ์–ด์„œ, ์ €๊ฒŒ ๋ฐœ์ƒํ•˜๋ฉด, ํ•ด๋‹น id๋ฅผ ์ธ์Šคํ„ด์Šค ์‚ญ์ œ. ๊ทธ๋ฆฌ๊ณ  UI์—์„œ๋Š” ๊ป๋‹ค๋Š” ํ‘œ์‹œ.
    (Server) DB์— powerStastus = OFF

  • pc๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜๋กœ ์ข…๋ฃŒ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค.
    -> ์•„์ด๋””์–ด 1 : (์ข…์›) pc๋กœ๋ถ€ํ„ฐ general polling(id, cpuData, ramData) ์ด ์ผ์ •์‹œ๊ฐ„๋™์•ˆ ๋™์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด, PC๋Š” ๋จผ์ € ๊ปด์ €๋ฒ„๋ฆฐ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ.
    -> ์•„์ด๋””์–ด 2 : (๋‹ค๋ฏผ) ์ข…๋ฃŒํ• ๋•Œ, shutdown hook์œผ๋กœ post๋ฅผ ๋ณด๋‚ธ๋‹ค. request : "๋‚˜ ๊ฐ‘์ž๊ธฐ ์ง€๊ธˆ๊บผ์š”~"
    -> ์•„์ด๋””์–ด 3 : (์ง€๊ธˆ ํ˜„ ์ƒํƒœ) ์ข…๋ฃŒ์‹œ๊ฐ„์ด ์•ˆ๋˜์—ˆ๋Š”๋ฐ, ๊ทธ๋ƒฅ pc๊บผ์ ธ์žˆ์ง€๋งŒ, pc๊ฐ€ ์ผœ์ ธ์žˆ๋‹ค๊ณ  ์„œ๋ฒ„์—์„œ ์ธ์ง€ํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ.
    (PC๋ฐฉ ์นด์šดํ„ฐํ”„๋กœ๊ทธ๋žจ๋„ ์ผœ์ ธ์žˆ๋‹ค๊ณ  ์ธ์ง€ํ•˜๋‹ˆ๊น, ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๋‚จ์•„์žˆ์œผ๋ฉด, )

instance not same (@pathvariable id != Json์˜ id)

image

๋“œ๋ž˜๊ทธํ•ด๋†“์€ id์™€, URL์ƒ์˜ id๊ฐ€ ๋‹ค๋ฅด๋‹ค!

์ด๋ ‡๊ฒŒ ํ•ด๋„ ์ง€๊ธˆ ์ •์ƒ์ ์ธ ์ž…๋ ฅ์ด ์ง„ํ–‰๋˜๋Š”๋ฐ,
ํ˜ผ๋™์ด ์˜ฌ๊นŒ๋ด ์ด ๋ถ€๋ถ„์€ ์ด ํ˜„์ƒ์ด ๋ชป์ผ์–ด๋‚˜๊ฒŒ ์ˆ˜์ •ํ•˜๊ฒ ์Œ.

SDL 2.0 ์‚ฌ์šฉ ์‹œ ์ปดํŒŒ์ผ x

SDL 2.0 API ์‚ฌ์šฉ

CpuData ๋ชจ๋“ˆ์—์„œ L1 ๋ฉ”๋ชจ๋ฆฌ๊ฐ’ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด SDL_GetCPUCacheLineSize() ์‚ฌ์šฉ.

SDL_cpuinfo.h์„ ์ฐธ์กฐํ•˜์˜€์Œ.

image


๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ๋ฐœ์ƒ. ๋‹ค๋ฅธ SDL ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ด๋„ ๋™์ผํ•œ ์ฆ์ƒ.
#include "include\SDL.h"
#include "include\SDL_cpuinfo.h"
#include <stdio.h>

int SDL_GetCPUCacheLineSize(void);
int main(int argc, char* argv[]) {
	printf("CacheLineSize = %d", SDL_GetCPUCacheLineSize());
	return 0;
}

Reference

1. SDL 2.0 Official Site :

2. Stackoverflow "SDL" :

PC ์—ฐ์žฅ Bug

#47 ์— ์žˆ๋Š” PC ์—ฐ์žฅ

1. PC -> Server (๋‚˜ ์–ธ์ œ๊บผ?) Post Long-Polling

1.1. Post Long-Polling URL๋กœ ์š”์ฒญ + response ๋Œ€๊ธฐ

image

2. PC -> Server (๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด?) Get Long-Polling

2.1. Get Long-Polling 5๋ถ„ ์ „์œผ๋กœ ์„ค์ • + response ๋Œ€๊ธฐ

image

3. PC -> Server ์—ฐ์žฅ์‹ ์ฒญ (One-Time)

image

์ด๋•Œ, 1๋ฒˆ๊ณผ 2๋ฒˆ์˜ response๊ฐ€ ์™€์•ผ ํ•˜๋Š”๋ฐ ์˜ค์ง€ ์•Š๋Š”๋‹ค.

image


๊ฒฐ๋ก 

์—ฐ์žฅ์‹ ์ฒญ์„ ํ•˜๋ฉด, get, post์˜ response๊ฐ€ ์˜ค๊ธฐ๋กœ ํ–ˆ์—ˆ์ง€๋งŒ ์˜ค์ง€ ์•Š๋Š”๋‹ค.

Android Data Binding

image

Data Binding์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ,

์ง์ž‘๊ฐ€๋Š” ์›์ธ

  1. Recycler Adapter Reference์˜ ๋ฌธ์ œ,
  2. MVVM์ด ์•„๋‹Œ MVP ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ์Œ,
  3. Nullable ๋ณ€์ˆ˜๋ฅผ View์— ํ• ๋‹น

Todo
livedata Plugin ์ ์šฉ ์˜ˆ์ •
RxJava, Koin, Retrofit2 Library ์‚ฌ์šฉ๋ฒ• ์ˆ™์ง€

๊ฐœ๋ฐœ์— ๋ถˆ๊ฐ€ํ”ผํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค

ํ˜„์žฌ ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉ์ค‘์ธ CPU ์‚ฌ์šฉ๋Ÿ‰

image

#pragma comment(lib, "pdh.lib")

#include<iostream>
#include "windows.h"

using namespace std;

static ULARGE_INTEGER lastCPU, lastSysCPU, lastUserCPU;
static int numProcessors;
static HANDLE self;


void init() {
	SYSTEM_INFO sysInfo;
	FILETIME ftime, fsys, fuser;
	GetSystemInfo(&sysInfo);
	numProcessors = sysInfo.dwNumberOfProcessors;

	GetSystemTimeAsFileTime(&ftime);
	memcpy(&lastCPU, &ftime, sizeof(FILETIME));


	self = GetCurrentProcess();
	GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser);
	memcpy(&lastSysCPU, &fsys, sizeof(FILETIME));
	memcpy(&lastUserCPU, &fuser, sizeof(FILETIME));
}

double getCurrentValue() {
	FILETIME ftime, fsys, fuser;
	ULARGE_INTEGER now, sys, user;
	double percent;

	GetSystemTimeAsFileTime(&ftime);
	memcpy(&now, &ftime, sizeof(FILETIME));


	GetProcessTimes(self, &ftime, &ftime, &fsys, &fuser);
	memcpy(&sys, &fsys, sizeof(FILETIME));
	memcpy(&user, &fuser, sizeof(FILETIME));
	percent = (sys.QuadPart - lastSysCPU.QuadPart) + (user.QuadPart - lastUserCPU.QuadPart);
	percent /= (now.QuadPart - lastCPU.QuadPart);
	percent /= numProcessors;
	lastCPU = now;
	lastUserCPU = user;
	lastSysCPU = sys;

	return percent;
}

int main() {
	init();
	while (1) {
		cout << "This Process USAGE : " << getCurrentValue()<<"\n";
		Sleep(500);
	}
}

Alternative flow

๊ฐ™์ด ์–˜๊ธฐ๋ฅผ ํ•ด๋ณด๊ณ  ๊ฐ™์ด ์ •๊ทœํ™”๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ๋“ค

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ๊ฒƒ์ด๊ณ , ๋” ์ถ”๊ฐ€๊ฐ€ ๋ฌด์กฐ๊ฑด ๋  ๊ฒƒ์ž„.

Master ์ž…์žฅ

  1. ๋„คํŠธ์›Œํฌ๊ฐ€ ๋Š๊ฒผ์„ ๋•Œ, Client์˜ ์ปดํ“จํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ• ๊ฑด์ง€

  2. Client์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์ผœ์ ธ ์žˆ๋”๋ผ๋„, ์ผ์ • ์‹œ๊ฐ„ ์‚ฌ์šฉ์„ ์•ˆํ•˜๋ฉด Client๋Š” ๋‚˜๊ฐ„ ๊ฒƒ์œผ๋กœ ํŒ๋ณ„ํ•˜์—ฌ ์ข…๋ฃŒ๋ฅผ ์‹œํ‚ฌํ…๋ฐ, ๊ทธ ์•ˆ์— ์ค‘์š” ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค๋ฉด?

  3. Client์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์ผœ์ ธ์žˆ๊ณ , ์ผ์ • ์‹œ๊ฐ„ ์‚ฌ์šฉ์„ ์•ˆํ•˜์ง€๋งŒ ๊ทธ์— ๋Œ€ํ•ด ๋ฐœํ‘œ๋‚˜ ํšŒ์˜๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด?

2๋ฒˆ๊ณผ 3๋ฒˆ์€ ๋น„์Šทํ•œ ๋งฅ๋ฝ

(Server <-> Android) "~/mobile/pc" GET ์š”์ฒญ ์‹œ pcs ๋ณ€์ˆ˜ ๊ฐ’ ์˜ค๋ฅ˜

image

๋‹ค์Œ๊ณผ ๊ฐ™์ด mobile์šฉ ์ „์ฒด pc ์ •๋ณด GET ์š”์ฒญ์‹œ pcs ๋ฐฐ์—ด์— null ๊ฐ’๋งŒ ์˜ด

image

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์ด pc์˜ id๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•˜์—ฌ GET ์š”์ฒญ์‹œ ๊ธฐ๋ก๋œ ์ •๋ณด๊ฐ€ ์กด์žฌ

@jongwuner @damin8

์ฐฝ์—… ๋™์•„๋ฆฌ

์šด์˜ ๋ชฉํ‘œ

  • ์šฐ์ˆ˜ ์ฐฝ์—… ์•„์ด๋””์–ด ๋ฐœ๊ตด ๋ฐ ์œก์„ฑ
  • ์ฐฝ์—… ๊ต๊ณผ๋ชฉ/์บก์Šคํ†ค๋””์ž์ธ๊ณผ ์—ฐ๊ณ„๋ฅผ ํ†ตํ•œ ์ฐฝ์—…๋™์•„๋ฆฌ ๋ฐœ๊ตด ๋ฐ ์œก์„ฑ
  • ๋Œ€ํ•™ ์ „๋ฐ˜์˜ ์ฐฝ์—…๋ถ„์œ„๊ธฐ ํ™•์‚ฐ ๋ฐ ์ฐฝ์—… ๋งˆ์ธ๋“œ ํ•จ์–‘
  • ์‚ฌ์—…ํ™” ์•„์ด๋””์–ด์˜ ๊ตฌ์ฒดํ™”๋ฅผ ํ†ตํ•œ ์‹ค์ฒœ์ฐฝ์—…์ž ์–‘์„ฑ

์ง€์› ๋‚ด์šฉ

  • ์ฐฝ์—… ๋™์•„๋ฆฌ ๋ฐœํƒ ๋˜๋ฉด ๋งํฌ ์‚ฌ์—…๋‹จ์—์„œ ์ง€์›ํ•ด์ฃผ๋Š” ๋‚ด์šฉ

STEP 01

์ฐฝ์—…๊ต์œก

  • ์ฐฝ์—… ๊ฐ•์ขŒ
  • ์บก์Šคํ†ค๋””์ž์ธ
  • ๊ธ€๋กœ๋ฒŒ์ฐฝ์˜์ธ์žฌ๊ณผ์ •
  • ์ฐฝ์—…์บ ํ”„

STEP 02

์ฐฝ์—…๋™์•„๋ฆฌ์ง€์›

  • ์šด์˜๋น„์ง€์›
  • ๋‚ด/์™ธ๋ถ€ ์ฐฝ์—…๊ฒฝ์ง„๋Œ€ํšŒ ์ง€์›
  • ์ฐฝ์—…๋ฉ˜ํ† ๋ง

STEP 03

์‹ค์ „์‚ฌ์—…ํ™”์ง€์›

-์‹œ์ œํ’ˆ๊ฐœ๋ฐœ์ง€์›
-์ง€์‹์žฌ์‚ฐ๊ถŒ์ทจ๋“์ง€์›
-์ฐฝ์—…์‹ค๋ฌด๊ณผ์ •์ง€์›
-์ฐฝ์—…์‹ฌํ™”๋ฉ˜ํ† ๋ง

STEP04

์ฐฝ์—…์ง€์›

  • ์ฐฝ์—…LAB ์ž…์ฃผ
  • ์‚ฌ์—…์ž๋“ฑ๋ก์ง€์›
  • ๊ธฐํƒ€ ์ •๋ถ€์ง€์›์‚ฌ์—… ์—ฐ๊ณ„์ง€์›
  • ์ฐฝ์—…๋ณด์œก์„ผํ„ฐ ์ž…์ฃผ ์—ฐ๊ณ„์ง€์›

์ฐธ์—ฌ๋Œ€์ƒ

  • ์ฐฝ์—… ์•„์ดํ…œ์„ ๋ณด์œ ํ•œ ๋Œ€ํ•™์ƒ(์›) ์žฌํ•™(ํœดํ•™)์ƒ
  • ์ฐฝ์—…๋™์•„๋ฆฌ ํšŒ์› ์ˆ˜ ์ตœ์†Œ 3์ธ ์ด์ƒ ํŒ€ ๋‹จ์œ„๋กœ ์‹ ์ฒญ

์‹ ์ฒญ ๋ฐฉ๋ฒ•

  • ๋งค๋…„ 3์›” ์ „์ฒด ๊ณต๊ฐœ๋ชจ์ง‘
  • ๊ฐ€ํ†จ๋ฆญ๋Œ€ํ•™๊ต ๊ณต์ง€์‚ฌํ•ญ ๋˜๋Š” LINC+ ์‚ฌ์—…๋‹จ ํ™ˆํŽ˜์ด์ง€ ์ฐธ์กฐ
๊ณต๊ฐœ ๋ชจ์ง‘ ์™ธ์— ์ฐธ์‹ ํ•œ ์ฐฝ์—…์•„์ดํ…œ์„ ๋ณด์œ ํ•œ ์ฐฝ์—… ๋™์•„๋ฆฌ๋ฅผ ์ˆ˜์‹œ ๋ชจ์ง‘ํ•˜์˜ค๋‹ˆ, ๊ด€์‹ฌ ์žˆ๋Š” ํ•™์ƒ๋“ค์€ ์ฐฝ์—… ๋Œ€ํ•™์šด์˜ํŒ€์„ ๋ฐฉ๋ฌธ ํ›„ ์ƒ๋‹ด ๋ฐ”๋žŒ

๋ฌธ์˜์ฒ˜

๊ตฌ)02-2164-4734

์ „ํ™”ํ•ด์„œ ์•Œ์•„ ๋ณธ ๋‚ด์šฉ

ํ˜„์žฌ ๊ฐ€ํ†จ๋ฆญ๋Œ€ํ•™๊ต์—์„œ ์ฐฝ์—… ๋™์•„๋ฆฌ๋Š” 20๊ฐœ ์ด์ƒ์ด๋ผ๊ณ  ํ•จ.

์ฐฝ์—… ๋™์•„๋ฆฌ์—๋„ ๋“ฑ๊ธ‰์ด ์žˆ๋Š”๋ฐ(์ผ๋ฐ˜, ์‹ฌํ™”)

๋งค๋…„ ์—ฌ๋ฆ„๋ฐฉํ•™๋•Œ ์‹ฌ์‚ฌ ํ›„์— ๊ฐˆ๋ฆฐ๋‹ค๊ณ  ํ•จ.

๋ฌธ์˜์ฒ˜ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋ฐ”๊ผˆ๋‹ค๊ณ  ํ•จ (02-2164-4734)

๊ณต๊ฐœ ๋ชจ์ง‘ ์™ธ์— ์ฐธ์‹ ํ•œ ์ฐฝ์—…์•„์ดํ…œ์„ ๋ณด์œ ํ•œ ์ฐฝ์—… ๋™์•„๋ฆฌ๋ฅผ ์ˆ˜์‹œ ๋ชจ์ง‘ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฌผ์–ด๋ณด๋‹ˆ ๋ฐฉ๋ฌธํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•จ.

response time chnage (์—ฐ์žฅ์‹ ์ฒญ ๋ชจ๋“ˆ)

PC Client์ชฝ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ ํ…๋ฐ, (๋ฌผ๋ก  Android๋„ ๋งž๋ฌผ๋ฆผ)
์—ฐ์žฅ์‹ ์ฒญ ๋ชจ๋“ˆ์€ response time์„ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋Š” ์†Œ์š”๊ฐ€ ์ƒ๊ธด๋‹ค.

PC์ผœ์งˆ๋•Œ, ์–ธ์ œ๊บผ์š”? About Long Polling

PC Client -> Server

Post Long Polling (๋‚˜ ์–ธ์ œ ๊บผ์š”?)

Request (PC Client -> Server)

  • ๋ชจ๋“  ํ•„๋“œ ๋ณด๋‚ด๊ธฐ
  • Response ๊ธฐ๋‹ค๋ฆฌ๊ธฐ

์—ฌ๊ธฐ์„œ Response๊ฐ€ ๋Šฆ๊ฒŒ(Server ๊ฐ€ ์žก๊ณ  ์žˆ์–ด์„œ) ์™€์•ผ ํ•˜๋Š”๋ฐ

๋ฐ”๋กœ response๊ฐ€ ์˜จ๋‹ค.

Response : {"timestamp":"2020-01-28T10:00:11.849+0000","status":404,"error":"Not Found","message":"No message available","path":"/pc/34_E1_2D_3C_81_E7"}

์ฆ‰, Response๋ฅผ ์žก์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค.

PC, Mobile Long-Polling Response (๋ฌดํ•œ Request์ƒํƒœ)

์„œ๋ฒ„ ON ํ›„, ์ตœ์ดˆ ๋ช‡ ํšŒ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜ํ™˜ํ–ˆ๋Š”๋ฐ, ๊ทธ ์ดํ›„์— ๋ฐ˜๋ณต ์‹คํ–‰์—๋Š” response๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค. java Timer class์—์„œ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์‹๋ณ„๋œ ์  ์žˆ๋Š”๋ฐ, ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ณ  ๊ฐœ์„ ํ•˜๊ฒ ์Œ.

@damin @winterlood

(UI) PC๊ฐ€ ๋ฆฌ์ŠคํŠธ์—์„œ ON/OFF๋ณ„๋กœ ๋ณด์—ฌ์ง€๋Š” UI์˜ ์ฐจ์ด๊ฐ€ ์—†์Œ.

image

  • ๋ชจ๋‘ ํšŒ์ƒ‰๋น›์ด๊ณ ,
  • OFF ์ƒํƒœ์ธ PC๋Š” ํด๋ฆญํ•˜๋ฉด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ผ๋Š” ๋ฉ”์„ธ์ง€
  • ON ์ƒํƒœ์ด๋ฉด, ์ธ์Šคํ„ด์Šค ์ž์„ธํžˆ ๋ณด๋Š” ์ฐฝ์œผ๋กœ ์ด๋™.
  • ์›๋ž˜ ON์ด๋ฉด ํŒŒ๋ž€์ƒ‰ ํ…Œํˆฌ๋ฆฌ๋กœ ๋ฐ”๋€Œ์ง€ ์•Š๋‚˜?

PC ์ข…๋ฃŒ (๋‚˜ ์–ธ์ œ๊บผ?) Bug2

#47 ์— ์žˆ๋Š” ๋‚˜ ์–ธ์ œ๊บผ? (PC Shutdown)

1. PC -> Server (๋‚˜ ์–ธ์ œ๊บผ?) Post Long-Polling

2. PC -> Server (๋‚˜ํ•œํ…Œ ํ•  ๋ง ์žˆ์–ด?) Get Long-Polling

2.1. 1๋ถ„ ์ „์— ๊บผ์ง€๋Š” ์•Œ๋žŒ ๋ณด๋‚ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ

image

3. endTime 1๋ถ„์ „

3.1. 1๋ถ„์ „์— ์•Œ๋งž์€ ์•Œ๋žŒ์ด ์˜จ๋‹ค.

image

4. endTime์ด ๋˜์—ˆ์„ ๋•Œ

image

Post Long-Polling์˜ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š๋Š”๋‹ค.

๊ฒฐ๋ก 

#60 ์ด๋ž‘ ๊ฐ™์ด, Post Long-Pollng์˜ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด๋‹ˆ Post Long-Polling ์ชฝ์„ ๋ด์•ผ ํ•  ๋“ฏ ํ•˜๋‹ค.

Mobile์—์„œ PC Client๋งŒ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ๊บผ์ง„ PC ๊บผ์ง€๋Š” ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ํ•ด์•ผํ•  ํ•„์š”์„ฑ

Mobile์—์„œ PC๋ฅผ ๊ป์„ ๋•Œ response๋ฅผ ๋ฐ›๊ฒŒ ๋œ๋‹ค.
ํ•˜์ง€๋งŒ Mobile Client์–ดํ”Œ์ด ์ž‘๋™๋˜๊ณ ๋‚˜์„œ, PC Client ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ๋งŒ PC๊ฐ€ ๊บผ์ง€๋Š” ๊ฒฝ์šฐ
Android๊ฐ€ ์ด๊ฑธ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?

์—†๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด๋ณผ๊นŒ.

๋‘๊ฐ€์ง€ ์•ˆ

  1. ์–ดํ”Œ์ด ์ฒ˜์Œ ์ผœ์งˆ๋•Œ Init ํ•ด์ฃผ๋Š” ๊ณผ์ •์„ ์‹œ๊ฐ„๋‹จ์œ„๋กœ ๋ฐ˜๋ณต
  • ์ด๋Ÿด๊ฒฝ์šฐ ์ƒˆ๋กœ ์ผœ์ง€๋Š” ๊ฒƒ์—๋Œ€ํ•œ long-polling๋„ ๊ตณ์ด ํ•„์š” ์—†์–ด์ง„๋‹ค.
  1. ์ƒˆ๋กœ ์ผœ์ง€๋Š” ๊ฒƒ์„ long-polling์œผ๋กœ ๋ฐ›๊ณ  ์žˆ๋Š”๋ฐ, ์ดํ›„์— ๊บผ์ง€๋Š” ๊ฒƒ๋„ long-polling์œผ๋กœ ๋Œ€๊ธฐํ•œ๋‹ค.

@winterlood

GUI qt

  • qt GUI ๊ธฐ๋ฐ˜ Client ์„ค๊ณ„์ค‘
    • qt creator ํ™œ์šฉ

PC ๋ณ€์ˆ˜

image

ramData, startTime, endTime์ด ์•ˆ๋“ค์–ด๊ฐ€๋Š” ํ˜„์ƒ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.