Code Monkey home page Code Monkey logo

cbnu-industry_project3-2-team's Introduction

[ Industry_Project3-2 (Project Name) ]

이번 프로젝트는 'PC의 실제 게임실행시간 실시간 모니터링'입니다. 게임이 백그라운드로 켜져있는 것이 아닌 실제로 플레이하는 시간을 측정하여 통계를 내줍니다. 더 나아가서 게임 플레이 통계에 따라서 최근 게임 사용시간의 증가와 감소에 따른 보고서도 보여줄 예정입니다.

[ Team_Members ]

홍진석 장병준 안근우
Hong-JinSuk ByeongJun-Jang An-Geunwoo
[email protected] [email protected] [email protected]

[ Demos ]

초기 회원가입 [ 관리자 ]

ezgif com-gif-maker

유저 별 시간설정

ezgif com-gif-maker (1)

유저 별 시간통계

ezgif com-gif-maker (2)

프로토 타입 실행 -1

KakaoTalk_20221210_194914137

프로토 타입 실행 -2

ezgif com-gif-maker

[ How to install ]

  • python 설치
  • pip3 install flask
  • pip3 install pandas
  • pip3 install psutil
  • pip3 install pypiwin32
  • 그래프 표현을 위한 https://d3js.org/d3.v4.min.js 사용

[ Dependency ]

  • Python 3.10.7
  • Flask 2.2.2
  • Werkzeug 2.2.2
  • Pandas 1.3.5
  • HTML5, CSS, JavaScript
  • Visual Studio Code 1.71.0

cbnu-industry_project3-2-team's People

Contributors

byeongjun-jang avatar hong-jinsuk avatar kgeunwo77 avatar

Stargazers

 avatar

Watchers

 avatar

cbnu-industry_project3-2-team's Issues

서로 다른 사용자에 대한 정보 저장

저희가 user1, user2, user3, ... 처럼 사용자를 구분하여 구현하는 것을 목표로 했는데,
각각의 사용자에 대한 정보를 저장할 때 하나의 데이터프레임에 저장하는 것이 좋을까요,
아니면 사용자마다 따로 정보를 저장하는 df가 있는 것이 좋을까요?
아래는 하나의 df로 만든 모습입니다

df=pd.DataFrame([[0,120], [0,60], [0,30]], index=['user1','user2','user3'], columns=['사용시간','제한시간'])

readme의 실행 방법에 관하여

프로젝트 초반에 작성한 readme 내용을 보충해야 할 것 같습니다. 실행과정은 로그인 -> 순으로 사진으로 표현하면 좋을 것 같은데 따로 의견있나요?

Flask를 이용한 웹 개발

저희가 Flask로 추후에 웹 개발을 한다면, 코드는 branch를 따로 만드는게 좋을까요? 아니면 main branch에 올려놓는게 좋을 것 같습니까??

관리자 메인 페이지에 관하여

현재 관리자가 시간을 설정하는 부분만 있습니다.
그래서 생각한 건데 메인 페이지를 구현해 메뉴바를 만들어 탭으로 이동하게 끔 하려고 하는데 어떻게 생각하시나요?

KakaoTalk_Photo_2022-12-09-19-21-51

현재 대략 만든 것입니다.

중간 발표 준비에 관하여

먼저 생각해야할 부분

1.Solution

2.멘토링 결과에 대하여 주제에 어떤 변화가 있었는지

3.개발 일정

4.평가 플랜(아직 미정으로)


이에 관하여 이번주 목요일 10/20(목)까지 생각하여 저녁시간 이 후에 ppt완성을 목표로 얘기해보죠

파라미터 및 변수 이름

탐색하는 프로세스 이름( 게임이름 ) : process_name
탐색하여 찾은 프로세스 List이름 : List
List에서 process id만 따로 모아놓은 List : PID

입니다.

Set time, Meeting and Checking

  • 역할 배분 - 일정 내로 다 할만한지
  • VScode로 작성시 UI랑 C++ 코드랑 연동할만한지
  • 기타 에로사항

등을 정해야 될 것 같은데, 중간 모임날짜는 수요일 12시~16시 사이로 정했으니, 각자 위 내용에 대해서 댓글 달아주시고 준비해서 와주십쇼

admin page에 관하여

image

위 사진은 어드민 페이지 초안으로 만들어봤습니다.

해당 페이지에 관한 내용은 간략하게 먼저 시간 선택하는 창을 우선적으로 생각하고 있습니다. 의견이 있으면 말씀해주세요.

저는 시간적 여유가 될 시, 사용자 별 시간 통계 쪽으로 생각해봤습니다.

(위의 시간 선택은 대체 이미지로 넣었습니다.)

Kill Process 방식

이 기능은 근우가 구현하기로 한 부분인데, 혹시 Process를 kill할 때, PID로 하나요 아니면 name으로 하나요??

게임 중인지 확인하는 시간 간격

사용자가 현재 게임 중인지 모니터링을 하는데,
정해진 시간 간격으로 예를 들어 1분 마다 확인을 한다 이런 방법이 있고

아니면 무한루프를 이용해서 스핀락 방식으로 게임이 종료할 때까지 계속 대기하는 방법이 있습니다

어떤 것이 더 나을까요?

플라스크 관련...

image

위 사진과 같이 코드가 제대로 안되는데,,, 내일 저녁 전까지 해결하지 못하면 일단 연동은 미뤄두는 것으로 하겠습니다 ㅠㅠ

Decide Topic - Industry_Project

지금까지 나온 주제는


버스 승객 모니터링

  • 효과 : 승객의 수와 탑승 시간대를 이용하여 버스 노선을 개편할 때, 이용할 수 있다.

가계부 모니터링

  • 최근의 지출과 과거를 비교하여, 어느 부분에서 더 나갔고 덜 나갔는지 알아내어 알려줄 수 있다.

인바디 데이터 모니터링

  • 현재 인바디 데이터와 최신 인바디 데이터를 비교하여, 앞으로 어떤 부분이 필요한지 알려줄 수 있다.

주식 모니터링

  • 어떤 사건이 터지거나 시간이 지나면 주식의 그래프가 어떤 식으로 움직일지 예측할 수 있다.

건물 출입시 마스크 착용 여부 모니터링

  • 건물을 출입하는 사람들의 마스크 착용 비율로 코로나 확진자의 감소가 면연력과 마스크 착용중 어느 부분이 더 큰지 알 수 있다.

병원에서 환자 모니터링

  • 밤이나 새벽 시간대에 환자의 몸에 이상이 생기면, 즉시 간호사와 의사에게 알려줄 수 있다.

교실 내부 카메라로 학생들 모니터링

  • 학생들이 제대로 집중하고 듣는지 알 수 있다.

무인가게 CCTV

  • 절도 사건 발생 시에, 예상이 되는 시간대를 제공할 수 있다.

등이 있고, 여기다가 각자 추가해주면 되고, 주제는 주말에 오프라인으로 모여서 정합시다.

Threading 기법 한계

현재 Threading 기법으로 개별로 실행하였을 때는, 문제가 없는데, 코드를 병합하고 실행하니 Thread buffer에서 문제가 발생하였습니다. 추후에 Multiprocessing 기법으로 하면 될 것 같은데 시간상 Multiprocessing까지는 힘들 것 같습니다.

코드 병합 및 연동일정 조율

DB 시험이 11월 24일인데, 코드 병합은 28일날 해보는게 어떨까요??
11월 마지막 주에 코드 병합이랑 오류 수정하고, 그 다음에 코드 연동 일주일정도 해보면 될 것 같습니다.

개발 일정 확인

개발일정

다들 개발일정 확인해 주시고 수정사항 있으시면 답글 달아주시면 감사하겠습니다.

현재 구현된 코드 병합

코드를 병합해서 main.py로 올려야 될 것 같은데, 파라미터랑 함수를 어떤 방식으로 맞출까요??

시간설정 이 후에 이벤트 호출관련 오류

시간설정 오류


사용자 시간 설정 후

<form action="">
<div class="inputs">
                <div class="field">
                    <input id="user" type="number" placeholder="사용자 번호 입력" min="1">
                    <p>번 사용자 시간 설정 </p>
                </div>
                <div class="time">
                    <div>
                        <input id="hour" type="number" placeholder="0~12"  min="0" max="12">
                        :
                        <input id="min" type="number" placeholder="0~59"  min="0" max="59">
                        
                    </div>
                </div>
            </div>
            <div class="start">
                <div class="btn_wrap">
                    <div class="result_pt">
                        <button class="start_btn" input type="submit">시간 설정하기</button>    
                    </div>
                    
                </div>
            </div>
</form>

result_pt 부분에 출력하고자 하지만, js사용 미흡으로 이벤트 호출이 되지 않습니다.

이를 해결하고자 묻고 싶은데 이벤트 호출 잘 사용하시는 분 있으신가요?

kill process 병합오류

코드 부분에서

6번째 줄에서 List[i]=i 부분에서 오류가 발생합니다.

for i in PID:
List[i]=i 부분인데, 이런식으로하면 List의 index에 pid가 들어가면서 이상한 주소가 들어가는 것 같습니다.

추가 기능) 알람 기능 추가 어떠신가요

피시방처럼 남은 시간이 10분일 때 사용자에게 알려주는 알람 기능 추가하는 거 어떠세요?
만약 한다면 시스템 경고처럼 알림창을 띄울건지 아니면 그냥 화면에 그림처럼 띄울건지도 생각해주세요

로그인 및 회원가입 UI에 관하여

스크린샷 2022-11-12 오후 10 13 08

스크린샷 2022-11-12 오후 10 13 21


위 사진과 같이 회원가입 관련 form으로 이동 후 로그인 switch 폼에 가려지는 이슈가 발생
현 상황으론 css 파일의 너비 관련 해 문제가 발생하였다고 생각합니다.

웹 개발 or 프로그램 개발

원래는 Pyscript로 개발을 목표로 하고 있었는데, 문제가 생겨서 미루게 되었는데, 추후에 계속 개발하게 된다면 웹으로 할 것인지 프로그램으로 할 것인지, 웹으로 개발하고 프로그램으로 바꿀 것인지 결정해야 되는데, 어떻게 하는게 좋을지 의견좀 내주세요.

동시에 두 게임 프로세스

동시에 두 게임 프로세스가 실행 중인 케이스는 어떻게 처리하는 게 좋을까요?
두 개 이상의 프로세스에 관해 모두 확인해야할까요?

process kill 자식 프로세스

for child in parent.children(recursive=True):
child.kill()
parent.kill()

process kill할 때 위처럼 딸려있는 자식 프로세스들을 모두 종료시키고
마지막에 해당 프로세스를 종료시키려하는데 이런 방식에서 문제점이 있을까요?

시간 확인 방법

사용 시간이 설정된 제한 시간보다 커질 경우, 게임 프로세스를 종료하는 메소드를 실행시키려 합니다
이때 사용 시간이 제한 시간보다 커짐을 감지하기 위해서 무한루프를 이용하려 하는데
더 좋은 방법이 있을까요?

process kill 하는 방식

process name을 찾아서 pid를 가져오고 해당 프로세스를 종료시키려 하는데 이 방식 어떤가요?
process name은 겹치는 경우가 있나요?

Preparation-Presentation

프레젠테이션 준비 목록

문제

  • 필요성
  • Input, Output이 무엇인가?

해결방법

  • 순서도, 동작 방식, 알고리즘 등

차별성

  • 우리만의 특별한 점

예상 결과물

  • 이건 아직 미정

& PPT에 쓸 사진 및 템플릿도 정해주시면 감사하겠습니다~

4가지 해결해야 됩니다~!!

Peer-Review 답변에 관하여

Anti-S Team에서 PR 답변에 관하여 말하고자 합니다.


관련된 의논하고자 하는 점 말씀해주세요.

개발방향 및 비전

개발 방향에 대해서 써야 되는데 개발 방향은 그대로 두고 비전은 앞으로의 모바일 시장의 성장에 따라 모바일 쪽으로 넓혀가는 것으로 하였습니다.

사용 시간과 제한 시간이 같을 경우

사용 시간과 제한 시간이 같을 경우 (사용 시간 == 제한 시간) 어떻게 처리하는 게 좋을까요

우선 (사용 시간 > 제한 시간) 일 때 프로세스 종료 함수를 호출하도록 했는데,
사용 시간과 제한 시간이 같은 1분 동안은 어느 경우로 분류하는 것이 좋을까요?

How to interface with UI

우리가 C++로 하는중인데, UI랑 연동할려면 python으로 짜야될 것 같은데 다들 어떻게 생각하시나요??

변수 이름

List가 name이랑 PID 모두 모아놓은 것인가요?
실행 중인 프로세스의 전체 PID와 종료시켜야하는 PID가 서로 다른 변수에 각각 저장되어 있나요?

프로세스를 종료시키려면 전체 PID 리스트에서 target PID만 골라내어 종료시켜야해서 정확한 변수 이름이 필요합니다

프로젝트 진행과정 점검

각자 구현하기로 한 기능에서 못한 부분이나 구현 완료한 부분 체크해서 알려주실 수 있으십니까?

cpu usage 받아오는 과정에서 딜레이 문제발생

def checkCpuUsage(PID):
    for process in psutil.process_iter():
        for pid in PID:
            if str(process.pid) == str(pid):
                print("CpuUsage of {0}({1}) : ".format(process.name(), process.pid)+str(process.cpu_percent(interval=1)))

코드에서 interval=1로 설정하면 1초에 1개씩 나오게 되는데, 만약에 '키워드를 포함하는 코드가 5개가 있다.' 라고 가정하면, 5개가 동시에 1초동안의 평균을 내서 나오는 것이 아닌 1초 ... 1초 ... 식으로 딜레이가 생기는데 해결할 방법이 있을까요...

kill process 방식에서 process name vs process id

프로세스 식별할 때 이름으로 식별하면 프로세스 종료가 정상적으로 되는데,
PID로 식별하면 정상적으로 종료가 되지 않습니다
PID의 타입이 int나 char가 아니어서 그런 거 같은데 혹시 PID의 타입 아시나요?
코드 통합 시 일치시키면 해결될 거 같습니다

#이 부분
if processName == "notepad.exe": #성공
if processName == 7662: #실패

Python & HTML 연동

현재 Python과 HTML 연동에 문제가 있습니다.

플라스크와 PyQt중 하나를 선택해야 될 것 같은데, 다뤄본적 있으신분 계신가요??

9주차 이후 개발 일정

현재 각자 맡은 부분 합해보면 로그인/회원가입 UI, 사용시간 관리 파일 입출력, CPU와 메모리 사용량으로 프로세스 실행 중인지 확인 인데, 9주차까지 각자 파트 완료하고 통합하는 걸 목표로 하겠습니다

그리고 10주차부터는 기능들이 잘 통합되어 실행되는지 확인하고 이후 알림 기능 등을 추가하거나 UI를 다듬어야할 거 같은데 아이디어 있으면 알려주세요. 참고로 14주차 안으로 마무리해야합니다

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.