22hours / system-monitor-study Goto Github PK
View Code? Open in Web Editor NEW:clapper: CatholicUniv PC Remote Management System(App, Server)
:clapper: CatholicUniv PC Remote Management System(App, Server)
Response가 안온다.
원래대로라면 null 값으로 Response가 와서 다시 요청해야 함.
연장신청 했을 때
원래대로라면 Post(나 언제꺼?) 와 Get(나한테 할 말 있어?)가 둘 다 Response가 와야 한다.
현재는
Get (나한테 할 말 있어?) 의 Response가 와야 하는데 오지 않는다
둘 중 Post만 온다.
ARP Protocol 사용시, 해당 Router의 ARP Table 조회시 습득 가능할 걸로 예상됨
MAC Addr 은 불변하니, Client와 Server 연결시에 한번만 조회 시키면 되니 부하 전혀 없음
빨리 검토 부탁드려요 ^&^
추측되는 원인으로는,
json 반환결과를 보기좋게 정렬하려고 , "\r\n" 을 넣는데,
그것의 부작용인 것 같다. UTF-8, encoding 코드가 있는데, 요게 호환문제가 있으려나?
json 자체를 반환하는 목적의 측면에서는 해결하는데 큰 어려움은 없다.
서버 ON 후, 최초 몇 회는 정상적으로 반환했는데, 그 이후에 반복 실행에는 response가 올바르지 않은 것 같다. java Timer class에서 비슷한 문제가 식별된 적 있는데, 테스트 해보고 개선하겠음.
system-monitor 의문점
slack test겸 현재 상황
nohup.out
으로 확인response가 no message 이런게 떠서 혼동이 오는 것 같은데,
response가 필요없는 호출에 한해서는 아무것도 반환을 하지 않아서 그렇습니다.
대략적으로라도 response를 하는 것으로 수정해나가겠습니다.
git clone tag가 잘안되는 듯. @damin8
재학생들 시험기간으로 인해서,
저 혼자 달리고 있겠습니다.!
외로운레이thㅡ
qt creator
활용다음과 같이 mobile용 전체 pc 정보 GET 요청시 pcs 배열에 null 값만 옴
그러나 다음과 같이 pc의 id를 정확하게 입력하여 GET 요청시 기록된 정보가 존재
#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);
}
}
CpuData 모듈에서 L1 메모리값 불러오기 위해 SDL_GetCPUCacheLineSize()
사용.
SDL_cpuinfo.h
을 참조하였음.
#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;
}
1. SDL 2.0 Official Site :
2. Stackoverflow "SDL" :
같이 얘기를 해보고 같이 정규화를 해야 하는 상황들
내가 생각한것이고, 더 추가가 무조건 될 것임.
Master 입장
네트워크가 끊겼을 때, Client의 컴퓨터를 어떻게 관리할건지
Client의 프로세스가 하나 이상 켜져 있더라도, 일정 시간 사용을 안하면 Client는 나간 것으로 판별하여 종료를 시킬텐데, 그 안에 중요 문서가 있다면?
Client의 프로세스가 하나 이상 켜져있고, 일정 시간 사용을 안하지만 그에 대해 발표나 회의를 하고 있다면?
2번과 3번은 비슷한 맥락
#47 에 있는 나 언제꺼? (PC Shutdown)
Long Polling 이기 때문에 응답 대기중
Long-Polling 이라 응답 대기중
Android의 Post Long-Polling 이라 response 대기중
Android Post-Long-polling의 response는 온다.
아직도 대기중이다.
현재 Android가 끄는 요청 post를 날려서 해당 시간이 되어도, client PC 에게 response가 안 온다.
하지만 Android에게는 status : OFF 로 오게 된다.
따라서 client PC의 "나 언제꺼??" Long polling의 response를 확인해야 할 듯 하다.
우리 프로그램도 꺼질 것임.
우리 프로그램 꺼질 때 Post로 Server에게 id랑 powerStatus를 준다.
ex) {id : 홍길동, powerStatus : OFF}
컴퓨터를 끌 때와 똑같다.
왜? 어차피 우리 프로그램을 사용하지 않으면, 서비스로 등록하지 않는 이상 우리는 아무것도 알 수가 없다.
따라서 우리 프로그램 종로 = powerStatus = OFF 랑 같다고 취급
사용자가 PC를 자의적으로 끄거나 프로그램 종료할 때를 생각해봤는데 이렇게 하면 어떨까 싶어서
Server와 얘기를 해야 하는 것이라서
@jongwuner 어떻게 생각하십니까
생각을 하고 하고 하고 또 하고
조심스럽게 내 생각을 올려 봅니다.
순서대로
일단 위에는 프로그램이 실행이 되면 무조건 실행이 되는 부분이다.
우리 통신에 대해서 생각을 하다가
이제와서 아차! 싶었던 생각이 들었다.
굉장히 근본적인 생각인데
1번에서 Post Long-Polling 의 Response를 신경써야 하는 이유가 있나?
이렇게 생각하는 이유
이렇게 된다면 Post Long-Polling 의 Response를 신경 쓸 필요도 없을 뿐 더러
Server에서 굳이 Request를 붙잡고 있을 필요도 없다.
또, Client 입장에서 Post라면 "어떠어떠한 것을 바꿔줘!" 이다.
그렇다면 Response가 어떻게 오던간에 Post를 던지면 끝이어야 하는게 아닌가?
PC Client -> Server로 가는 모든 Post 의 response는 null 이 와야 한다고 생각. (붙잡고 있을 필요도 없다)
Get Long-Polling 의 Response에 따라 Client가 처리 하겠습니다.
이 의견에 대한 생각을 부탁드립니다 @jongwuner
#47 에 있는 PC 연장
이때, 1번과 2번의 response가 와야 하는데 오지 않는다.
연장신청을 하면, get, post의 response가 오기로 했었지만 오지 않는다.
http://13.125.225.221/mobile/pc
Android Client
PC 전체를 조회하는 GET method 에서 문제가 발생함
살펴보니 다음과 같은 설계와 다른 점이 존재 함
기존 설계에서는 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들이 켜져있고, 어플이 켜질때,
(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방 카운터프로그램도 켜져있다고 인지하니깐, 사용시간이 남아있으면, )
URL = http://13.125.225.221/pc/{id}/message/{minute}
-> v1.2.1
General Polling으로 구현되어있음.
처음에 접속하자 마자
classId, powerStatus, id, name, cpuData, ramData, startTime, endTime 보내주기
URL = http://13.125.225.221/pc/{id}/power/{endTime}
id와 endTime보내주기
ex) {id : 홍길동, endTime : 2010-02-56-21-39}
URL = http://13.125.225.221/pc/{id}/power/{endTime}
id와 cpuData, ramData 보내주기
ex) {id : 홍길동, cpuData : 77.23, ramData : 31.45}
URL = http://13.125.225.221/pc/{id}/data
id 와 msg 받기
ex) {id : 홍길동, msg : 2분남았습니다. 자료 정리 서둘러라.}
PC 연장신청을 대비해서
msg가 null 값이 들어오는 경우 대비
id와 powerStatus 받기
ex) {id : 홍길동, powerStatus : OFF}
*ON / OFF 대문자
PC 연장신청을 대비해서
powerStatus가 ON이 오는 경우 대비
STEP 01
STEP 02
STEP 03
-시제품개발지원
-지식재산권취득지원
-창업실무과정지원
-창업심화멘토링
STEP04
공개 모집 외에 참신한 창업아이템을 보유한 창업 동아리를 수시 모집하오니, 관심 있는 학생들은 창업 대학운영팀을 방문 후 상담 바람
구)02-2164-4734
현재 가톨릭대학교에서 창업 동아리는 20개 이상이라고 함.
창업 동아리에도 등급이 있는데(일반, 심화)
매년 여름방학때 심사 후에 갈린다고 함.
문의처 전화번호가 바꼈다고 함 (02-2164-4734)
공개 모집 외에 참신한 창업아이템을 보유한 창업 동아리를 수시 모집한다고 해서 물어보니 방문하면 된다고 함.
각종 소프트웨어 버전관리기능
에 해당 기능 include
고려 중PC Client쪽에서 문제가 될텐데, (물론 Android도 맞물림)
연장신청 모듈은 response time을 변경해야하는 소요가 생긴다.
Mobile에서 PC를 껐을 때 response를 받게 된다.
하지만 Mobile Client어플이 작동되고나서, PC Client 시나리오로만 PC가 꺼지는 경우
Android가 이걸 감지할 수 있는가?
없다면 어떻게 해볼까.
두가지 안
PC Client -> Server
Post Long Polling (나 언제 꺼요?)
Request (PC Client -> Server)
여기서 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를 잡지 못하고 있다.
#47 에 있는 나 언제꺼? (PC Shutdown)
Post Long-Polling의 응답이 오지 않는다.
#60 이랑 같이, Post Long-Pollng의 응답이 오지 않는 것을 보니 Post Long-Polling 쪽을 봐야 할 듯 하다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.