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' 카테고리의 다른 글
추석이 지나면 할 것들... (0) | 2024.09.16 |
---|---|
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
프로그램 재시작?] 후~ (0) | 2024.07.28 |
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
추석이 지나면 할 것들...
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' 카테고리의 다른 글
ActiveMQ 관련 테스트 후기. (0) | 2024.09.24 |
---|---|
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
프로그램 재시작?] 후~ (0) | 2024.07.28 |
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
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 |
Action<Action<Action<string>>> 활용!!
공통 UI쪽 관련해서 조금 만지는 부분이 있는데...
코드를 아래와 같이 쓸수 있으면 어떨까? 라는 생각을 해봤다.
Call()( msg => msg( "x" ) );
Call() 호출하고 이어서 대리자로 연결된 메서드에 파라미터를 받아서 전달!!
UI를 다루면서 두가지 처리를 연속적으로 하게 되는 거였다.
UseFlowBodyPanel();
foreach( var data in ListDatas ) {
AddFlowBodyItem( data );
}
이런 식으로 처리하는 걸... 줄여서
UseFlowBodyPanel()( AddFlowBodyItem => foreach( var data in ListDatas ) AddFlowBodyItem( data ) );
실제 코드는 여러가지 조건들을 고려해서 조금 바뀌지만...위 처럼 갈 것이다.
다만 Call()은 테스트 코드로 작성했던것이기에... 기록으로 남겨두려 한다.
private Action<Action<Action<string>>> Call()
{
System.Diagnostics.Debug.WriteLine("Call!");
Action<Action<Action<string>>> returnMethodCall
= new Action<Action<Action<string>>>((msg)=> msg( Call_After ));
return returnMethodCall;
}
private void Call_After(string msg)
{
System.Diagnostics.Debug.WriteLine("Call_After!" + msg);
}
Action<string> 은 Call_After( string msg )와 연결되는 게 기본이니까 알겠는데...
연결지으려면 왜 Action<Action<...>> 으로 두개가 필요한건지는 잘 모르겠네...
찾는 방법은 Call() ( <-- 이렇게 코딩해놓고 vs에 표시되는 인자값이 Action<string> 인지 확인하였더니
Action<Action<...>> 이었다.
Action mth = s => console.Write( s ); 이런 형태로 Action이 빠지니까..
Call() 에서 리턴받은 object가 Action< Action < Action<string> > >
인데...
Action이 하나 빠지고
msg => msg( "x" )
msg는 Action<string> 이니까...
Action<Action<string>> 을 정의한거고...
.... 뭐래는겨......... 모르겠다 ㅠㅠ.
머리속에 맞춰지지 않는 퍼즐이 있는 것 같은 느낌... 아.. 싫어..
Action<Action<string>> mth1 = mthCall => mthCall("?");
mth1(Call_After);
---------------------------------------------------------------------------------
Action대신 Method로 바꿔 생각해보면...
Action< Action< Action<string > > >
Mth0( Mth1( Mth( string ) ) )
Mth0( Mth1( MethodName ) )
Call()( MethodName => MethodName( prms ) );
Action<string>
mth( string => string )
Action< Action<string > >
mth1( MethodName => MethodName( str ) )
Action< Action< Action<string > > >
mth0( mm => mm( MethodName ) )
Action<Action<Action<string>>> returnMethodCall
= new Action<Action<Action<string>>>((msg)=> msg( Call_After ));
-----> (msg)=> msg( Call_After )
이거 때문에 잠도 못잤네.
Call() ( 여기에서 왜? mth0이 사라지고 mth1이 대입되는거지??? ) : 두개가 벗겨지네...
Action<Action<Action<string>>> returnMethodCall = Call();
returnMethodCall( msg => msg("???") );
음... 실제 리턴받은걸 실행해보면... 위처럼 되네...?
어라... 뭐지?
Action<Action<Action<string>>> returnMethodCall
= new Action<Action<Action<string>>>((msg)=> msg( Call_After ));
returnMethodCall( 이자리는 Action<Action<string>> 타입이 들어와야 하니.. m => m("?") );
아... 이랬던가?
new로 대상을 지정하는 람다식과 대리자를 호출하는 부분에 차이때문에 내가 헷갈린건가...
아무렇지도 않게 사용하던거에... 정신이 나가버릴것 같네... 이제 이해가 된다...
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
VS 확장 프로그램 2019 -> 2022 적용. (0) | 2024.06.08 |
---|---|
드디어 폰에... MAUI 배포. (0) | 2024.05.29 |
JSFW.PrivateKey 프로그램 업데이트. (0) | 2023.08.04 |
JSFW.FUNCTIONCONNECTION] 을 한번 더 업그레이드... (0) | 2022.12.29 |
JSFW.FunctionConnection] 업데이트 완료! (0) | 2022.12.24 |
JSFW.PrivateKey 프로그램 업데이트.
간만에... 이 프로그램을 수정하였다.
회사에서 출근해서...
1. 사이트 로그인을 할때 크롬켜서 사이트 이동.
2. 비번 프로그램 켜고... 비번 넣고.
3. 사이트 찾아서... GEN 클릭
위 세가지를 하게 된다.
갑자기 사이트 찾아서 gen누르기가 귀찮아졌어 ㅠㅠ...
> 물론, 크롬에서 지원하는 id/pwd 저장기능 쓰면 더 편하긴 하겠지만...
> 내가 만든 프로그램을 써야 한다... 그래야 업그레이드도 하지...
개선사항
- 바로가기 만드는 기능을 추가한다.
- 바로가기 실행을 하면
- 비번 프로그램이 켜지고 비번 넣으면
- 지정된 사이트 비번을 클립보드에 복사
:: 곧 위에서의 3번을 안해도 된다!
Link 버튼을 넣었다. 클릭하면
바탕화면에 아이콘을 만들어준 icon은 *** 인데 바탕화면이 밤하늘 사진이라 안보인다...
클릭 하면
비번 창이 열리고... 비번을 넣으면...
처리 결과를 알려준다.
--- 끝 ---
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
드디어 폰에... MAUI 배포. (0) | 2024.05.29 |
---|---|
Action<Action<Action<string>>> 활용!! (0) | 2023.11.01 |
JSFW.FUNCTIONCONNECTION] 을 한번 더 업그레이드... (0) | 2022.12.29 |
JSFW.FunctionConnection] 업데이트 완료! (0) | 2022.12.24 |
JSFW.FunctionConnection] 업데이트 중... (0) | 2022.12.23 |