[C#] MVVM 의 문제점
·
Programming/C#
우선 MVVM 의 설계 철학은 정말 마음에 든다. MVVM 을 완벽하게 구현한다면 이론상 Designer 와 Developer 의 작업을 완벽하게 분리할 수 있으며(물론 Github, StackOverFlow 등에서는 사실상 이것이 불가능하다는 의견도 있다.), View 와 종속적이지 않게 비지니스 로직을 검증할 수 있다. 결론적으로 '유지보수성' 이 매우 높아지는 효과를 가져온다.고전적인 Code-Behind 방식 (일반적으로 Winform, WPF 를 통해 코드를 작동시킬 때 View 영역에 `Button_Click()` 메소드를 생성하는 방식)이 비록 생산성은 MVVM 방식보다 월등히 높지만, 유지보수성에서는 MVVM 우위에 있다. 때문에 장기적으로 관리되어야 할 프로젝트라면 MVVM이 권장된다.이..
[C#] Task, 비동기에 대해
·
Programming/C#
[C#] Task .Wait() vs await 차이점 Task.Wait과 await의 차이점 Stack Overflow에서 발견한 흥미로운 질문과 답변입니다. set 출처: https://stackoverflow.com/questions/9519414/whats-the-difference-between-task-start-wait-and-async-await kayuse88.github.io C# await - C# 프 cypsw.tistory.com 이전 포스팅의 예제와, 결론 자체는 틀리지 않았으나 몇몇 오해할만한 소지가 있다고 판단하여 보완 포스팅을 작성한다. 1. Async is not include Thread 'Async' 는 'Thread' 를 포함하는 개념이 아니다. 오해할 만한 소지가 ..
MAUI의 미래에 대해
·
Programming/C#
요즘 내 흥미를 돋구는것중 하나는 이전 포스팅에서 언급했던 MAUI 라는 놈인데 C#을 토대로 크로스 플랫폼(IOS, Android, Windows) 빌드용으로 만들어진 다중 플랫폼 UI 프레임워크 이다. 이놈의 특징은 하나의 코드를 사용해 모든 플랫폼에서 실행할 수 있다 인데... C#을 사용하던 분들은 어리둥절 할 것이다. 해당 프레임워크를 사용한다고 해서 Windows Lagacy 코드가 Android, IOS 위에서 돌아갈리가 없기 때문이다. 아무리 MS 개발자들의 능력이 좋다고 하지만 이건 힘들것이라는것이 내 지론이고, 역시 내 생각은 맞았다. Window 기준 C#을 사용하여 특정 File 을 선택하는 창을 보여줄 때, 우리는 OpenFileDialog(System.Windows.Forms) ..
COM 개체와 Thread 안정성
·
Programming
1. COM 개체란 무엇인가? COM 개체 및 인터페이스 - Win32 apps COM 개체 및 인터페이스 learn.microsoft.com COM은 개체가 단일 프로세스 내에서처럼 프로세스 및 컴퓨터 경계를 넘어 쉽게 상호 작용할 수 있도록 하는 기술이다. 예로 들자면 프로그램에서 '클립보드', '파일' 에 접근 할 때 COM 개체를 통해 접근 하는것이다. Clipboard.GetDataObject(); // or OpenFileDialog(); 물론 이와 같은 형태의 COM 개체만 존재하는것은 아니다. C# COM 만들기 C# COM 만들기 윈도우10, VisualStudio2017 기준 MFC Client : http://petra.tistory.com/1133 1. Visual Stidio 20..
[C++] 리스트 inverting 체인연산
·
Programming/C++
#include typedef struct listNode *listPtr;typedef struct listNode{ char data; listPtr link;}listNode;listPtr invert(listPtr lead){ listPtr middle, tail; middle = NULL; // 여기서 쓰이는 lead, middle, tail 은 임시로 거쳐가는 변수임. while(lead) { tail = middle; // tail 은 middle 을 취함. middle = lead; // middle 은 lead 를 취함. lead = lead->link; // lead는 l..
[C#] Forms.Timer vs Threading.Timer
·
Programming/C#
우선 Timer 관련 글들을 살펴보면 [ C# ] 세가지 Timer 와 그 차이점 [출처] [C#] 세가지 Timer 와 그 차이점|작성자 코드클럽 blog.naver.com/jjk003/221926047276 특정 작업을 주기적으로 실행하기 위해 흔히 Timer 객체를 사용합니다 정해진 시간 간격으로 변수를 업데이 minineko.tistory.com Forms.Timer 가 Winform 에 '최적화 되었다' 라는 구문이 눈에 띄는데. 이걸 보고 알아서 잘 관리해 주겟거니... 하다가는 함정에 빠지게 된다. 1. Forms.Timer Why there are 5 Versions of Timer Classes in .NET? Why are there five timer classes in the .Ne..
[Python] Class 와 Self 에 관해
·
Programming/Python
A.pyimport Bb = B.Bb.cc() B.pyclass B: variable = "TTT" def __init__(self): B.variable = "this is BB class" def cc(): print(B.variable);   우선 Python 에서는 두가지 문법이 존재하는데,B.B 와 B.B() 가 그것이다.B.B 는 Static 형식으로 사용할 수 있다 == 생성자가 실행되지 않는다.B.B() 는 Instance 를 만들기에 == 생성자를 실행시킨다. 수정한 A.pyimport Bb = B.B()b.cc() 에러가 발생하는데, 우리는 b 의 '인스턴스' 를 통해 b.cc() 를 실행시켰다.그런데 b.cc() 선언을 살펴보면 self..
C# C++ 간 이벤트 발생시키기.
·
Programming/C++
C++ [대기] / C# [이벤트 발생]C++#include using namespace std;int main(){ HANDLE handle_recv = CreateEvent(NULL, FALSE, FALSE, TEXT("TEST_RECV")); bool wait = false; WaitForSingleObject(handle_recv, INFINITE);} C#using System.Threading;class A{ public static void Main() { EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "TEST_RECV"); ewh.Set(); }} C++ / ..
[C#] SharedMemory 사용법
·
Programming/C#
실제 업무에서는 Struct 내부에 데이터를 넣어 SharedMemory 를 통해 프로세스간 데이터를 공유한다. Install class SharedMemory { public void installSharedMemory(string name) { A a; MemoryMappedFile mmf = MemoryMappedFile.CreateNew(name, 10000); var accessor = mmf.CreateViewAccessor(); a.a = 244; a.b = 255; a.c = 266; accessor.Write(0, ref a); } } struct A { public int a; public int b; public int c; } Read class SharedMemory { publi..
[C#] UDP Multicast 수신
·
Programming/C#
멀티캐스트 송수신 - C# 프로그래밍 배우기 (Learn C# Programming) 멀티캐스트 송수신 Broadcast와 Multicast 하나의 컴퓨터에서 또 다른 하나의 컴퓨터에 데이타를 보내는 것을 Unicast라 하고, 하나의 컴퓨터에서 네트워크 상의 모든 컴퓨터에 데이타를 보내는 것을 Br www.csharpstudy.com 기본적으로 위 예제 코드는 잘 동작하지만, Receive 코드가 작동되지 않았다. MulticastOption 클래스 (System.Net.Sockets) 멀티캐스트 그룹을 추가하거나 삭제하는 데 사용되는 IPAddress 값이 들어 있습니다. docs.microsoft.com MSDN의 코드를 참조 해 Socket 기반, MulticastOption 을 적용 해 보니 아..