MAUI ) 플젝 관리 프로그램
이틀간 빡세게 코딩에 취해서...
미뤘던 프로그램을 만들었다.
1. 드디어 내 핸드폰에 프로그램을 띄웠다. ( 테스트용 말고... )
2. MAUI를 이용해서 잊었던 WPF 여러가지... 다시 공부했다.
* 만든 이유?
- 지난 프로젝트를 하면서 출/퇴근 및 현장에서의 작업에
핸드폰에 기록을 많이 했다. 중구난방으로 메모장 띄워서 떠오르는데로
일정이나 개발 아이디어를 적어놨었는데...
이걸 내가 만든 프로그램으로 하자!!.. 미루고 미루고... 그러다...
* 느낀점.
- 음... WPF를 간만에 하는 것이긴 한데 MAUI에서 조금씩 다른 컨트롤들과
사용방법도 조금 다르고... AI 코파일럿을 MSDN 삼아... 작업했다.
역시 AI없이 개발했다면 며칠 더 걸렸을듯... 편하긴 하네.
# Windows에 디버그로 띄운 화면
# 안드로이드 에뮬레이터
# 내 핸드폰에서 띄운 프로그램!
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
프로젝트 스케쥴 관리 (0) | 2025.04.13 |
---|---|
ActiveMQ 관련 테스트 후기. (0) | 2024.09.24 |
추석이 지나면 할 것들... (0) | 2024.09.16 |
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
프로그램 재시작?] 후~ (0) | 2024.07.28 |
프로젝트 스케쥴 관리
이번 플젝에서 작업일지 관련하여 메모장으로 정리하고 있는데...
일요일 쉬는 날 급발진으로... 한나절만에 만들었다. 아이.. 쉬어야 하는데... ㅠㅠ;
프로젝트 중 내가 개발해야 할 항목들이 여러가지가 있다.
매일 백업관리되는 txt파일을 메모장으로 열어 순서대로 정리하면서 일한다.
프로젝트에서 따로 관리하는 레드마인도 있고... 현업들이 보겠다는 엑셀도 있고...
어차피 내가 관리하는건 아니니까...
그러다가 내가 메모장 말고 별도로 프로그램하나 만들어 쓰자해서 만들어본거다.
아래 보면
롤 투입 하나에 DAT도 있고 POP도 있고, MES라는 웹 화면도 있다.
각각 해야 할 일에 대한 기간을 정의하고 진행율%를 기록해두면
두번째 그림처럼 각각의 퍼센트를 그래프로 표시도 해준다.
첫번째 그림은 상세 진행률의 평균%를 보여준다.
데이타가 어느정도 정리되면...
엑셀 그래프 간트챠트로 만든다거나...
화면 자체에서 간트챠트로 그려볼 생각인데...
우선 플젝이 중요하니... 마치고 하든가...
한달 정도 남았으니 후딱 끝내버리자.
1. 프로젝트에서 작업해야 할 항목 관리화면
2. 입력된 내용 정리해서 보여주는 화면.
3. 내용 수정 화면.
간트 챠트로... 그렸다. (퇴근해서 3시간 정도 한거..)
퇴근해서 또 한 3시간 했다.
좀더 두꺼운 세로 점선은 (오늘)이라고 표시한건데 테스트를 위해 오늘보다 4일 이후로 설정했다.
예정일보다 지난 일 수 만큼 빨갛게 칠해주고 몇일 지나는지 표시해준다.
그리고 [숨김] 기능도 추가했다. 삭제는 아니고 숨길 수 있도록...
$000 은 정렬 순서다...
(902) 정렬 순서를 지정할 수 있다. (역순:높은숫자가 앞으로 올라온다.)
해당 주제를 클릭하면 내부 상세 정보를 팝업해서 보여준다.
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
MAUI ) 플젝 관리 프로그램 (0) | 2025.05.13 |
---|---|
ActiveMQ 관련 테스트 후기. (0) | 2024.09.24 |
추석이 지나면 할 것들... (0) | 2024.09.16 |
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
프로그램 재시작?] 후~ (0) | 2024.07.28 |
ActiveMQ 관련 테스트 후기.
막 끝난 프로젝트에서 {설비 ---- mes서버}간에 데이타 통신을 ActiveMQ라는 것으로 구현이 되어 있었다.
메세지 전문을 만들면서 '보내는건 되어도 결과를 받을 순 없다.' 라는 답변을 받았다.
그런게 어딧냐고... 기간계 통신이 일방적으로 주기만 하는게 어디있느냐... 주고 받고 해야지... 라며 얘기를 했었다.
프로젝트 끝나고 집에서 ActiveMQ관련해서 찾아보다 보니 RabbitMQ나 Kafka 같은 것들까지 나오길래...
구글링을 하면서 이게 뭔가 찾아봤더니 MSMQ같은 큐였다.
내 기억엔 MSMQ에서 양방향으로 비동기 통신을 했었던 걸로 기억하는데?
이런것들은 한쪽에서 보내는 것만 된다고?
몇 일을 고민도해보고 찾아보고 샘플도 만들어보고 테스트도 해보니... 내가 알던 방식이 맞다.
큐라는걸 사용할 뿐이지.. 주고 받고 해야지...
기본 메세지 전송은 [프로듀서]라는게 [큐]에 등록(Send)하면 [컨슈머]가 꺼내서(Listner) 처리를 한다.
Q. 서버.컨슈머가 메세지 처리 후 결과를 클라이언트에 돌려주는 방법이 있나?
전 프로젝트 소스에서도 클라이언트.프로듀서가 전송 후 결과를 받는 것으로 처리 되어 있는 걸로 봐서는... 있지만?
서버쪽 소스는 내가 볼수 없었기에... 추측만 해볼 수 밖에...
계기 ::
설비에서 부자재 사용을 알릴때 서버에 요청하면 사용승인난 대기하던 부자재를 사용처리하면서
등록 ID를 설비에 돌려줘야 하는데... 이게 안되는게 아니고 안하는거였다? 왜? 귀찮아서 였을까??
간단하게 두가지 방법이 있었다.
첫번째는 임시 큐를 사용하는 방법.
클라이언트.컨슈머 생성시 tempQueueDestination = session.CreateTemporaryQueue() 로 임시큐 사용
요청메세지에 NMSReplyTo = tempQueueDestination 을 할당하여 .Send
서버.컨슈머가 메세지를 수신하고 처리시 수신메세지.NMSReplyTo를 이용해서 서버.Producer를 만들고 Send하면
클라이언트.컨슈머에서 Receive 할 수 있다. - 테스트 결과 잘 된다.
mporaryQueue()
두번째 방법은 응답 컨슈머 생성시 selector를 지정
1. 클라이언트.컨슈머 생성시 selector를 res=producerID를 지정
2. 클라이언트.프로듀서의 요청메세지.Properties["req"] = null; 을 지정
3. 클라이언트.프로듀서의 요청메세지.Properties["pid"] = producerID; 을 지정
4. Send
1. 서버.컨슈머 생성시 selector를 req is null을 지정한다.
2. 서버.컨슈머의 수신된 메세지 처리시
서버.프로듀서의 응답메세지.Properties["res"] = 수신된메세지. Properties["pid"] 지정
3. Send
※ res, req를 등록하는 이유는 하나의 큐 JSFW.Queue에 등록하게되므로
자기가 올린 메세지를 자기가 수신하지 않도록 구분해주는 역할로 selector를 지정한다.
클라이언트 프로그램을 여러개 띄워서 동시간에 동시 요청 가능하도록 만들고 테스트해보니
원하던 동작을 잘 했다. ( 아래는 두개만 찍었지만.. 네개정도 띄우고 10초단위로 확인 해봤다. )
결론 : 잘 된다.
예외 : 내 샘플 코드가 문제인지?
서버.Consumer 프로그램을 수신을 멈춰놓고 긴시간 대기하면
클라이언트.프로듀서 프로그램은 10초마다 등록을 한다. 동기로 구현해놔서 Receive가 안되어 지정시간 동안 대기...
나중에 서버.Consumer 프로그램에서 다시 수신시작을 했을때 한번에 밀려들어오는데...
클라이언트.프로듀서 프로그램에서 Thread로 10초마다 Send걸어놔서 그런지..
껐다 켰다 하면 같은 데이타로 Send가 여러번 일어나는 현상이??? 이건 샘플이 잘못된걸꺼야... _)_;;;
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
MAUI ) 플젝 관리 프로그램 (0) | 2025.05.13 |
---|---|
프로젝트 스케쥴 관리 (0) | 2025.04.13 |
추석이 지나면 할 것들... (0) | 2024.09.16 |
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
프로그램 재시작?] 후~ (0) | 2024.07.28 |
추석이 지나면 할 것들...
1. ActiveMQ
-프로듀서:컨슈머=1:1, 1:n
-토픽, 큐
2. MSMQ (netMSMQBinding : two-way)
4. SQL MQ? 이런게 있어?
3. 코파일럿 AI로 ppt 생성해보기
-이전 프로젝트에서 만들었던 PPT내용을 ai로 재현이 되는지... 확인해보기.
:: 맨날 말로만 된다고 하는 건 봤는데... 진짜 필요한 화면은 어떻게 만들수 있나?
5. 골프?...
--- 모르던게 생겼으니... 또 공부를 해야 다음 일도 하는거고...
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
프로젝트 스케쥴 관리 (0) | 2025.04.13 |
---|---|
ActiveMQ 관련 테스트 후기. (0) | 2024.09.24 |
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
프로그램 재시작?] 후~ (0) | 2024.07.28 |
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정.
간만에 이 프로그램을 추가 수정...
SI플젝하면서 메소드에 옆에 설명문구를 넣고 싶은 생각이 들었는데...
미루다가 이제 넣었다.
색상 지정은 그대로고
F2 키를 누르면 힌트입력 컨트롤이 앞으로 나온다.
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
ActiveMQ 관련 테스트 후기. (0) | 2024.09.24 |
---|---|
추석이 지나면 할 것들... (0) | 2024.09.16 |
프로그램 재시작?] 후~ (0) | 2024.07.28 |
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
프로그램 재시작?] 후~
설비가 90여대가 가까운데 프로그램 업데이트가 자동이 아니다.
할때마다 배포서버에 배포 후 프로그램을 각 설비마다 가서 껐다 켜줘야 한다.
이때 구형pc는 켜지는게 느리다. 그래서 프로그램이 꺼지면 설비가 일정시간 동안 신호를 받지 못하면 멈춘다.
그래서... 지금까지는 시간에 쫒기다보니... 재시작 프로그램을 만들 시간을 낼 수가 없어서 몸으로 때웠다.
이제 재시작을 만들었다.
추후엔 업데이트할 내역이 있으면 자동 재시작도 가능할거라 생각한다.
샘플프로그램이다. ( 설비에서 제대로 동작하는 것을 확인 하였다. )
1. 버튼을 누르면... 해당 프로그램은 죽으면서 cmd로 Restart 프로그램을 띄운다.
2. 파라미터로 원래 프로그램의 프로세스명과 재시작해줄 프로그램 실행경로를 넘겨준다.
3. 재시작 프로그램이 떠서 원 프로그램이 죽는지 체크하고... 죽고 나면 다시 실행시켜준다.
-- 이때 설비에 시그널을 던져주기 위해... 별도의 쓰레드를 잠깐 돌려준다.
+++++++++++++++++++++++++++++++++
추가.
재시작 프로그램을 도입했는데... 시행착오? 같은게 있었다.
재시작 할 프로그램도 업데이트 항목에 넣으면... 재시작되는 도중에 업데이트가 안된다.
업데이트 파일은 ReStart00.exe로 00을 붙여서 배포하고
재시작 하는 이벤트에서 ReStart00.exe를 복사해서 ReStart.exe로 덮어쓰기.
그 후 ReStart.exe를 실행하도록 바꾸었다.
+++++++++++++++++++++++++++++++++
하나더...
설비별로 별도의 테스트가 필요한 경우가 있어서...
재시작 프로그램이 실행중에 'TestFile' 이라는 폴더에 테스트용 실행파일이 있다면
파일이 존재하면 옮겨서 붙여넣기 해준다.
+++++++++++++++++++++++++++++++++
또 하나...
이래 저래 시행착오를 거치다가...
ReStart 바로가기 만드는 콘솔프로그램을 만들었다.
이유는 재시작 프로그램배포와 함께 맞물려서 깔끔하게 안돌아간다... 88대를 배포하다보니...
전체 배포를 했음에도... 신뢰가 안되네... 멈출까봐... 불안한 느낌?
처음 배포 후 재시작눌렀을때 일부 pc에서 재시작 안하고 콘솔이 종료되는 현상이 있었더랬다...
수정 후... 잘 되긴 하는데... 구형PC는 좀 불안하긴 함...
배포할때 ReStart.exe를 붙여넣고 바로가기 생성프로그램을 돌려서
이걸 실행해놓은 상태에서 프로그램을 끈다.
그러면 정해진 프로세스대로 동작하면서 업데이트 된다.
전체 배포가 잘 진행된다 싶을때까지... 구형PC들은 이걸로 사용할 예정이다.
****************************************************
마지막으로..
오늘 모두 배포 완료했다. 시작하자마자 콘솔이 꺼지는 현상도 잡혔고...
업데이트 중 설비가 멈추지는 않을 듯 하다.
구형설비의 프로그램이 죽고 되살아 나는데 시간이 참 오래 걸리네...
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
추석이 지나면 할 것들... (0) | 2024.09.16 |
---|---|
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
VS 확장 프로그램 2019 -> 2022 적용. (0) | 2024.06.08 |
이번 플젝에서 사용할 모니터링 구조...
이번 플젝에서 설비88대에 대한 모니터링을 만들예정이다.
딱히 이건 요구사항 정의도 없는 거고... 그냥 설비마다 돌아다니면서 보는게 구찮아.
한달되었는데... 하루 쉬었다. 게다가 새벽에 퇴근도 몇번하고... 차 끊겨서 태워다 주기도 하고...
TCP/IP통신을 할까? gRPC를 할까? WCF로 할까? ... 다 알아봤는데...
다 구찮아.. gRPC는 .net framework로도 안된다.. 4.8에서 된다고는 하는데... 뭐가 복잡한건지... 지원이 된다 안된다...
인증서 만들어야 한다거나... 포트열어줘야 한다거나... 등등 귀찮아....
그냥 DB에 넣고 빼자.
그래서 만든 거다.
큰 프로그램은 88대의 설비를 보여줄 화면이고 1개만 우선 테스트 중이다.
작은 화면은 설비에서 보낼 설비 정보를 테스트용으로 만든 프로그램이다.
DB를 통해 전달하고 DB를 읽어서 보여준다.
10분 이상이면
장비가 가동 중일때 신호를 받아서 찍어준 것.
이번 플젝에서 사용한 기술이지만... 간략히 메모하자면...
챠트를 직접 쓰자니... 저거 그리자고 챠트를?
저런건 간단히 그리자!!!
/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/ 3일치 데이타
/~~~~~~~~~~~~~~~/ 그려질 컨트롤 가로폭
두개의 데이타로 그려질 컨트롤의 1px에 3일치 데이타의 갯수를 구한다.
1px에 데이타갯수 = 3일치 데이타 갯수 / 그려질 컨트롤 가로폭
for( loop < 그려질 컨트롤 가로폭 )
for( loop2 < 1px에 데이타갯수 )
idx = ( loop * 1px에 그려질 데이타 갯수 ) + loop2
이렇게 하면 3일치 데이타[ idx ]로 접근이 가능.
1px에 그려질 데이타의 존재여부에 따라 있으면 loop2 의 for문 탈출....
위처럼 하면 1px에 그려질 데이타가 모두 보여지는 것은 아니나... 존재여부에 따라 신호를 그려준다.
손실률이 있지만... 지금 현재 보고 싶은 그래프 그리는 것엔 충분하다.
이렇게 3일치의 데이타를 챠트로 발행/인쇄/배출 신호를 잡아서 뿌려주면
설비에서 어느 시점에 어떤 신호들이 안왔는지 알 수 있다.
저기에 해당하는 지점의 로그를 살펴서 어떤 이유인지 살펴보게 된다.
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
---|---|
프로그램 재시작?] 후~ (0) | 2024.07.28 |
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
VS 확장 프로그램 2019 -> 2022 적용. (0) | 2024.06.08 |
드디어 폰에... MAUI 배포. (0) | 2024.05.29 |
SSMS 확장프로그램 2018 -> 2020 변경.
이번 프로젝트는 MES DAT 데이타 수집 프로그램 하는 것이다.
간만에 MS-SQL을 사용하게 되었다. 시간이 많이 흘러 지금은 SSMS2020을 쓴다네...
그래서 프로그램을 업글했다.
** 테스트상 클라이언트 프로그램을 I:\SSMS20\ 에 설치하였다.
1. VSIX 디렉토리 지정. ( 빌드 이벤트로 XCOPY하던 것을 이것으로 대체 )
2. Nuget 패키지 관리에서 .VSSDK 관련 업글 (VS처럼 변경 )
3. 참조 경로 추가
기존 2018에서 추가한 ssms관련 dll 들에 대한 참조 경로를 현재 SSMS에 맞게 바꿔준다.
4. 레지스트리 등록 ( SSMS 확장을 만들면 프로그램을 올리기 위해 이걸 꼭 등록해야 한다. )
빌드 후에 VSIX에 복사된 디렉토리에 가서
I:\SSMS20\Common7\IDE\Extensions\ssms2020
JSFW.SSMS.Extensibility.pkgdef 파일을 열어보면...
[$RootKey$\InstalledProducts\VSPackage]
@="#110"
"Package"="{e499b659-abb0-4651-a054-3deb4f5b6541}"
...
GUID를 복사하여 .reg파일을 만든다.
파일명 :: SkipLoading.2020.reg
------------------------ ------------------------ ------------------------ ------------------------ ------------------------
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\SQL Server Management Studio\20.0_IsoShell\Packages\{e499b659-abb0-4651-a054-3deb4f5b6541}]
"SkipLoading"=dword:00000001
------------------------ ------------------------ ------------------------ ------------------------ ------------------------
실행하면 아래처럼 레지스트리에 등록된다.
디버그 :: 시작 외부 프로그램으로 ssms로 지정하고 실행하면 ssms가 뜨면서 개발한 확장기능들이 동작한다.
###################################################
기능중 하나 :: 틀고정.
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
프로그램 재시작?] 후~ (0) | 2024.07.28 |
---|---|
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
VS 확장 프로그램 2019 -> 2022 적용. (0) | 2024.06.08 |
드디어 폰에... MAUI 배포. (0) | 2024.05.29 |
Action<Action<Action<string>>> 활용!! (0) | 2023.11.01 |
VS 확장 프로그램 2019 -> 2022 적용.
변경시 세가지를 해야 한다.
1. 닷넷 버젼 v4.72 로 변경.
2. 매니패스트에 대상 버젼 변경과 CPU아키텍쳐 변경.
변경하면 오류목록에 아래와 같이 나타난다.
3. Nuget의 .VSSDK로 검색하여 17.xx 로 업데이트
업데이트를 마치면
재시작 알림이 뜬다. VS를 재시작하고 빌드를 하면
Debug폴더에 .vsix 파일로 설치를 해보면...
오류가 생길 수 있다.
오류가 나면... 매니패스트 가서
Intall Targets 에 아래 체크박스 두개를 해제.
다시 빌드 후 재설치. (( 캡쳐를 놓쳐서... 삭제후 다시 설치하면서 찍어서 2019가 안보임... ))
완료!!!
********************** ********************** ********************** ********************** **********************
** 변수 사용처 보는 확장 프로그램에는 로슬린을 사용하기에 설치시 2022버젼 설치가 비활성으로 표시된다.
C# 및 Visual Basic Roslyn 컴파일러 [16.xxxx.xxx.xxxx ,17.0) 이런 형태로 되어 있어
위처럼 변경해준다. [16.0, 18.0) 으로 바꿔준다.
vs2022 정보를 보면 17.1로 보이는데... 18이어야 적용이 되네?
********************** ********************** ********************** ********************** **********************
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
---|---|
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
드디어 폰에... MAUI 배포. (0) | 2024.05.29 |
Action<Action<Action<string>>> 활용!! (0) | 2023.11.01 |
JSFW.PrivateKey 프로그램 업데이트. (0) | 2023.08.04 |
드디어 폰에... MAUI 배포.
내가 사용하는 LG Q61 폰에 드디어 데모 버젼을 배포 했다.
안드로이드 버젼은 11
1년 가까이 가끔 생각날때마다 시도 해봤지만... 실패했었는데...
드디어 성공했네 ㅠㅠ
얼떨결에... 그게 되네?
이제 내 핸펀에 내가 필요한 프로그램들 올려서 들고 다닐 수 있게 되었다.
다시 사무실을 얻을까?
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
---|---|
VS 확장 프로그램 2019 -> 2022 적용. (0) | 2024.06.08 |
Action<Action<Action<string>>> 활용!! (0) | 2023.11.01 |
JSFW.PrivateKey 프로그램 업데이트. (0) | 2023.08.04 |
JSFW.FUNCTIONCONNECTION] 을 한번 더 업그레이드... (0) | 2022.12.29 |