루리웹 5노답
구름나무
CloudTree

구름나무
접속 : 5364   Lv. 62

Category

Profile

Counter

  • 오늘 : 46 명
  • 전체 : 345274 명
  • Mypi Ver. 0.3.1 β
[..프로그래밍..] 컴퓨터 사용시간 제어 유틸리티 - 1964ferrari님 요청 (6) 2019/05/14 PM 02:16

1964ferrari님 요청 게시물 : mypi.ruliweb.com/mypi.htm?nid=24705&num=10680

 

1964ferrari님께서 요청하셔서 점심먹고 놀다가 잠깐 짬내서 만들어봤습니다.

참고로, 애플 맥 제품군은 제가 사용하질 않아서 무리이고, 윈도우용 SW 입니다.

 

사용법은 간단합니다.

아래 다운로드 링크 누르셔서 다운받고 압축 푸시면 실행파일 하나, 설정파일 하나 있습니다.

설정파일은 직접 건드리실 필요 없고, 프로그램 GUI에서 설정한게 자동으로 기록됩니다.

 

UseageTimeMGR.exe 파일 실행시키시면 아무 화면도 안뜰겁니다.

윈도우 작업표시줄 오른쪽 트레이 아이콘 영역에 등록되어있거든요.

 

img/19/05/14/16ab4bd30402d637.png

 

요러케요. 오른쪽 하단에 하늘색+파란색 네모 겹쳐진게 사용시간 제어 유틸리티 아이콘입니다.

더블클릭 해주시면 SW 메인 GUI가 나옵니다.

 

 

img/19/05/14/16ab4be294e2d637.png

 

요렇게요.

컴퓨터 사용 경과시간이 초단위로 계속 올라갈거구요.

아래 ▼ 버튼 누르시면 관리자 설정 메뉴로 들어갈 수 있습니다.

 

패스워드를 입력해야 하는데요.

 

img/19/05/14/16ab4bf56d52d637.png

 

패스워드는1q2w3e 입니다. 

패스워드 변경 기능은 딱히 넣지 않았어요. 귀찮아서;;

 

패스워드 입력하시면 창이 커지고 설정을 하실 수 있습니다.

 

img/19/05/14/16ab4c048702d637.png

 

뭐.. 보시는대로..

프로그램 시작부터 몇시간 후에 윈도우 로그오프 시킬것인가,

로그아웃 몇시간 몇분 몇초 전에 "xx분 후 로그아웃 됩니다." 라고 알려줄 것인가,

윈도우 시작 시 자동실행 할것인가 말것인가를 설정할 수 있습니다.

적용 버튼 누르시면 창 다시 작아지고 변경사항 적용 되요.

 

1964ferrari께서 사용하고자 하시는 정확한 용도를 몰라서

일단 자녀들의 컴퓨터 사용시간을 컨트롤 하시려는건가 혼자 추측하고

프로그램 종료도 패스워드 넣어야 끌 수 있도록 해놨습니다.

 

프로그램 종료 패스워드도 위와 마찬가지로 1q2w3e 입니다.

 

프로그램 최소화 버튼 누르시면 다시 트레이 아이콘으로 들어가고,

프로그램 창 다시 띄우시려면 트레이 아이콘에 있는 하늘색+파란색 네모 겹쳐진 아이콘 더블클릭 하시면 됩니다.

 

프로그램을 일부러 끄지 않는 이상 자동실행 체크하셨으면 백그라운드로 프로그램 계속 돌아갈거구요,

간단한 프로그램이라 컴퓨터 리소스도 거의 안먹습니다.

 

설정하신 시간되면 윈도우 로그오프를 자동으로 합니다.

이하 다운로드 링크입니다.

 

다운로드 링크 : Click here

 

위 다운로드 링크 누르시면 제 개인 구글드라이브에 있는 파일을 받으실 수 있는데,

 

img/19/05/14/16ab4c75f552d637.png 

화면 오른쪽 위에 있는 아이콘들 중에 두번째 아이콘 (↓ 그려진거) 클릭하시면 다운로드 되실겁니다.

 

그럼,요긴하게 잘 쓰시기 바랍니다.

 

 

###### 내용 추가 ######

 

첫번째 실행으로 시스템이 로그오프된 후, 계정에 다시 로그인하여 실행될 때 레지스트리 관련 버그가 발견되었습니다.

따라서 관련 버그를 수정하고, 설치 또한 Setup.exe 파일을 통한 설치로 변경하였습니다.

그 외엔 위 사용 방법과 동일합니다.

 

다운로드 링크 : Click here

신고

 

뿌남    친구신청

능력자!

체셔토깽이    친구신청

개인제작 툴을 보면 참 대단하고 신기하네요

1964ferrari    친구신청

우와! 언능 써보고 후기 올리겠습니다 감사합니다!
없으면 만드는 마이퍼님들 부러워요

1964ferrari    친구신청

동작 잘되요! 시간 설정시 오류 뜨길래 끝내고 재설치후 다시하니까
잘되요 감사합니다~ 좋은하루 되세요

구름나무    친구신청

만족스러우시다니 다행입니다. 1964ferrari님도 좋은하루 보내세요 ^^

냅튠v    친구신청

우와 저도 딸대비해서 받아둬야 겠네요 감사합니다.
[..프로그래밍..] [C#] Cloudtree Refernce Class - v1.0.2 (0) 2018/07/16 PM 05:08

오랜만에 Cloudtree reference class를 업데이트 하여 관련 포스팅을 합니다.

이전 버전의 레퍼런스 1.0.1 버전을 여러 사업에서 적용해 사용하기도 했고, 직장 후배에게 공유해주어 사용하기도 했는데요.

TCP 통신의 사용 방법이 복잡하다는 피드백을 두어번 받았습니다.


그렇다면 수정을 다시 한번 더 해야겠죠.


레퍼런스 클래스의 복잡했던 통신 관련 구조를 싹 갱신해버렸습니다.

초보자가 적용하려 해도 사용방법이 쉽도록 최대한 간결하게 바꾸어 보았습니다.


CloudtreeReferences v1.0.2

수학함수

유클리딘 거리 함수

2차원

  EuclideanDistance(x1,y1, x2, y2)

3차원

  EuclideanDistance(x1,y1, z1, x2, y2, z2)

가우시한 랜덤 함수

  Gaussian(mean, stdev)

좌표계

위경도 두 점간 시선각

  bearingP1toP2(p1_Lat,p1_Lon, p2_Lat, p2_Lon)

위경도 두 점간 거리

  LatLonDistance(p1_Lat,p1_Lon, p2_Lat, p2_Lon)

ECEF to LLA(위경고도)

  ECEF2LatLonAlt(x, y,z, result_Lat, result_Lon, result_Alt)

시간

클럭 타이머 시간 경과

  GetDuration(DateTimestart_time)

공유메모리

공유메모리 생성

  CreateSharedMemory(SharedMemKey)

공유메모리 해제

  CloseSharedMem()

공유메모리 쓰기

  WriteSharedMemory(SharedMemKey,ref data)

공유메모리 읽기

  ReadSharedMemory(SharedMemKey,ref data)

곡선생성

베지어 곡선

  getBezier2DPointList(refpoints, int point_of_curves, ref result)

캣멀롬 곡선

  getCatmullRom2DPointList(refpoints, ref result)

통신

TCP 서버

  Netxxxxxxx(string ip, int port); // 생성자

  SetMaxDataLength(int length); // 송수신 패킷 최대 크기 설정

  Connect(); // 소켓 생성 및 접속

  OnUpdate += RcvdDataProcess; // 데이터 수신 처리부 델리게이트

  SendData(byte[] data, int length); // 데이터 송신

  DIsconnect(); // 통신 종료

TCP 클라이언트 

UDP 유니캐스트

UDP 멀티캐스트


레퍼런스 클래스 DLL의 public 함수는 위와같이 구성되어 있습니다.


이전 게시물을 보시거나 아래 첨부할 레퍼런스 클래스 예제 폼 샘플을 열어보시면 사용법을 쉽게 아실 수 있으리라 생각합니다.

이번 포스팅에서는 이전 버전에서의 변경점에 대해서만 언급하고자 합니다.


이전 버전과의 주요 변경점은 TCP 서버/클라이언트, UDP 유니캐스트,  UDP 멀티캐스트 함수가 있습니다.

각 통신 방법에 따른 인스턴스를 선언한 이후로 크게 여섯가지 정도의 함수만으로 각 통신 소켓을 사용할 수 있도록 구성했습니다. 이는 TCP 서버/클라이언트와 UDP 유니캐스트, UDP 멀티캐스트에 일괄 공통 적용 사항입니다.


각 통신 방법에 따른 함수를 TCP 서버를 대표 예로 설명드리자면...




1. 인스턴스에 의한 통신 클래스 생성


  NetTcpServer m_NetTcpServer = new NetTcpServer(tbTcpServerIP.Text, Convert.ToInt32(tbTcpServerPort.Text)); 


생성자에 서버 IP와 사용할 포트를 인자로 전달합니다.

예외적으로 UDP 유니캐스트의 경우 송수신 안정성을 위하여 전송과 수신 소켓을 분리하였으므로, 수신 IP, 수신 포트, 송신 목적지 IP, 송신 목적지 Port 네 개의 인자를 생성자에 전달합니다.



2. 송수신 패킷의 최대 크기 설정


  m_NetTcpServer.SetDataMaxLength(2048); 


이전 버전에서는 네트워크 관련 함수에 쓸 Constants 클래스를 두고 이를 활용하였으나, 한 눈에 파악되지 않고 처음 사용자의 경우 소스코드 여기저기를 뒤져봐야 파악이 된다는 지적이 있어 직관적으로 SetDataMaxLength() 함수를 만들었습니다.



3. 통신 접속


  m_NetTcpServer.Connect(); 


각 통신 방법에 따른 소켓을 열어 서버라면 바인딩, 클라이언트라면 서버에 접속 등을 수행하는 Connect() 함수입니다.



4. 데이터 수신 


  m_NetTcpServer.OnUpdate += OnUpdate_TcpServer; 


이전 버전까지는 데이터 수신부를 클래스 외부에서 각 사용자가 직접 만들어 콜백을 붙이도록 하였으나, 초심자의 경우 콜백 함수를 구성해서 적용하는 로직을 제대로 이해하지 못하는 경우도 많았고, 적지않은 예외 상황으로 결국 레퍼런스 클래스 내부를 건드리는 일도 발생함을 확인하였습니다.

이번 버전에서는 각 통신 방법에서 위 1~3의 과정을 거치면 데이터 수신용 스레드를 자동으로 생성하고, OnUpdate로 델리게이트된 함수에 수신된 byte array를 전달하도록 변경했습니다.

패킷 수신은 신경쓸 필요 없이, 수신된 데이터의 처리부만 사용자가 직접 코딩하면 되겠습니다.



5. 데이터 전송


   m_NetTcpServer.SendData(StrByte, StrByte.Length);


각 통신 방법에 따라 TCP는 서버와 클라이언트간 데이터 전송, UDP는 유니캐스트일 경우 목적지에 직접, 멀티캐스트일 경우엔 멀티캐스트 주소에 publish하는 SendData() 함수입니다.



6. 통신 종료


   m_NetTcpServer.Disconnect();


각 방법에 따른 통신을 수행 후 통신 종료를 원할 경우 호출하는 Disconnect() 함수입니다.

데이터 수신용 스레드를 종료한 후 각 소켓을 닫아주는 것으로 통신을 종료합니다.




추가적으로, 기존 버전에서는 내 시스템의 IP를 자동으로 읽어올 때 vmWare 등의 가상 IP가 있는 경우, 또는 둘 이상의 네트워크 어댑터가 있는 경우를 상정하지 않았기에 제대로 동작하지 않는 경우가 있었습니다.

따라서 이번 버전에서는 게이트웨이를 통해 패킷이 나가는지를 검사하여 실제 외부로 연결중인 IP를 할당하도록 수정하였습니다.



cfile/tistory/99B1C03F5B4C4FA305


cfile/tistory/99DC473F5B4C4FA401


cfile/tistory/9944573F5B4C4FA53E


cfile/tistory/99950F3F5B4C4FA608


cfile/tistory/99537A3F5B4C4FA73D


cfile/tistory/99DD263F5B4C4FA701


cfile/tistory/99BCAB3F5B4C4FA804



위 예제 프로그램과 레퍼런스 클래스의 소스코드가 포함된 압축파일을 첨부합니다.


 

tistory_admin/blogs/image/extension/zip.gif?_version_=49a60dcaf939099b07bf30336e237c3cd9ea7e90 CloudtreeReference_v1.0.2.zip



제가 쓰기 편하려고 만든 레퍼런스 클래스이긴 하지만, 필요하신 분이 계시다면 자유롭게 사용하셔도 무방합니다.

다만, 다른곳으로 공유 링크를 남기시거나 할 경우에는 본 포스팅 댓글에 공유한 주소를 알려주시면 감사하겠습니다.



신고

 
[..프로그래밍..] [C#] Cloudtree Refernce Class - v1.0.1 (4) 2017/05/19 AM 10:36

차회 갱신은 비동기 TCP 통신이 될것같다고 예고해놓고는, 비동기 통신이 아닌 보간곡선때문에 버전업을 하게되었네요.

최근 완료된 업무에서 필요해서 모듈을 만들어뒀던게 급 생각나서 추가하게 되었습니다.


이번 업데이트에 추가된 내용은 보간 곡선 생성 기능입니다.


제가 사용하는 보간 곡선은 경우에 따라 두가지를 용도에 맞게 적용하는데,

베지어 곡선과 캣멀롬 곡선이 그 두가지입니다.


베지어 곡선은 다음 그림과 같은 방식으로 그려지며, 부드러운 곡선을 만드는데 유용합니다.



< 베지어 4점 곡선 >


하지만 베지어 곡선은 지정한 웨이포인트를 지나지 않으며 최대한 부드럽게 유사 경로로 지나가게 되지요.


캣멀롬 곡선은 베지어 곡선보다 부드러운 곡이 나오진 않지만, 베지어 곡선과의 가장 큰 차이점으로 지정한 웨이포인트를 반드시 지나도록 구성됩니다. 다음 그림과 같이요.


< 캣멀롬 5점 곡선 >


위 두 보간곡선의 기능을 기존 레퍼런스에 추가하였습니다.

추가된 기능을 포함하여 제 개인 레퍼런스 클래스의 기능을 종합해보면 다음 표와 같습니다.


 

TCP/IP

서버

클라이언트

UDP

UDP

수학함수

Euclidean distance 2D

Euclidean distance 3D

가우시안 랜덤수 생성

좌표계

위경도 방위각 계산

위경도 거리 계산

ECEF-위경도 좌표계 변환

시간경과

시간경과 체크

공유메모리

쓰기

읽기

보간곡선

베지어 곡선

캣멀롬 곡선


 

레퍼런스 클래스 DLL을 적용한 샘플 윈도우 어플리케이션의 구성중 보간곡선 부분의 GUI만 추가로 설명합니다.

다른 기능의 GUI는 이전글(http://cloudtree.tistory.com/294)을 참고해 주시면 감사하겠습니다.


그리기 영역에 임의의 점을 2개 이상 찍어줍니다. 

웨이포인트로써 곡선 생성의 기준이 됩니다.



베지어 곡선을 생성한 모습입니다.

웨이포인트를 최대한 부드럽게 접근하는 곡선이 생성됩니다.



캣멀롬 곡선을 생성한 모습입니다.

지정된 웨이포인트를 반드시 지나치는 최적 경로가 생성됩니다.



이전 글에서의 언급과 마찬가지로 최대한 쉽게 적용할 수 있도록 짜려 노력했으며, C#에 어느정도 익숙하신 분이라면 DLL 적용을 위한 샘플 폼 어플리케이션의 코드만 보셔도 큰 어려움 없이 적용이 가능하시리라 생각합니다.



 CloudtreeReference_sample_v1.0.1.zip



소스코드의 편집 및 재배포는 자유롭게 허용되며, 혹시나 레퍼런스 샘플에 치명적 오류가 있을 시 알려주시면 빠르게 수정 반영하도록 하겠습니다.


신고

 

둥베이    친구신청

야짤 공유로만 보다가 이런 걸로 보니 신선하네요 ㄷㄷㄷ

구름나무    친구신청

루니지에는 공유 차원으로 올리는건 아니에용. 어차피 이쪽 관심있는 마이퍼도 거의 없고..
개인 정리 차원에서 업로드 ㅋ

두르두르    친구신청

멋지십니다. ^^

Ezzi    친구신청

멋지네요 ㅎㅎ
[..프로그래밍..] 백수백숙님 요청 - AutoReboot 프로그램 소스코드 (1) 2013/03/21 PM 04:52
AutoReboot.exe

① 실행시키고

② 재부팅시킬 시간 입력한 후

③ 원할경우 '윈도우 시작시 자동실행'에 체크 후 설정완료 클릭.
 - 레지스트리를 통해 시작프로그램에 자동 등록. 체크 해제 후 다시 설정완료 클릭하면 시작프로그램 해제됨.

④ 알림영역으로 숨기기 클릭 시 시스템 트레이로 숨겨짐.

⑤ 시스템 트레이의 아이콘 왼쪽버튼 클릭한 후 보이기 누르면 프로그램 다시 뜸.

⑥ 3번에서 '윈도우 시작시 자동실행' 체크 설정했다면 윈도우 시작시마다 뜸.

# 첫 실행 후 설정을 마치면 같은 폴더에 config.conf 파일 생성. 설정한 시간을 기억하기 위한 설정파일.


+ 추가

루리웹 백수백숙님 요청으로 프로젝트 통째로 압축한걸 첨부합니다.

AutoReboot.zip

ps. 업무시간에 딴짓하는거 누가 볼까봐 대강대강 기능구현만 중점으로 짠거라 클래스 선언부가
죄다 퍼블릭이고, 정리가 전혀 안되있는 점은 염두에 두고 보시길 바랍니다 ^^;;;;

신고

 

백수백숙    친구신청

감사합니다. 소스 잘받아갑니다.(__)
[..프로그래밍..] 카르비나님 요청으로 만들어본 자동 재부팅 프로그램 (4) 2013/03/21 PM 03:50
AutoReboot.exe

① 실행시키고

② 재부팅시킬 시간 입력한 후

③ 원할경우 '윈도우 시작시 자동실행'에 체크 후 설정완료 클릭.
 - 레지스트리를 통해 시작프로그램에 자동 등록. 체크 해제 후 다시 설정완료 클릭하면 시작프로그램 해제됨.

④ 알림영역으로 숨기기 클릭 시 시스템 트레이로 숨겨짐.

⑤ 시스템 트레이의 아이콘 왼쪽버튼 클릭한 후 보이기 누르면 프로그램 다시 뜸.

⑥ 3번에서 '윈도우 시작시 자동실행' 체크 설정했다면 윈도우 시작시마다 뜸.


# 첫 실행 후 설정을 마치면 같은 폴더에 config.conf 파일 생성. 설정한 시간을 기억하기 위한 설정파일.

신고

 

구름나무    친구신청

지금 보니까 한번 설정하면 다시 설정할 필요가 없었음 좋겠다고 하셨으니,
윈도우 시작 시 자동 숨기기 기능도 넣을껄 그랬나 싶네요..;;

아 비주얼스튜디오 다시 켜기 귀찮으니 패스 ㅜㅜ

백수백숙    친구신청

괜찮으시면 원시 소스나 프로젝트 파일 통짜로도 받을수있을까요??

PsyREN    친구신청

와우. 짱이네요

카르비나    친구신청

오 감사합니다 이제야 봤네요
현재페이지1 2
X