c#

  • c# fixed byte 배열에 대이터 넣기

    예를 들어 ls증권 api의 경우 오래 전 버전의 비주얼 스투디오로 만들어 utf를 쓰지 않고 unified hangul code로 보낸다. 이 코드를 code page 949(cp949)나 windows-949 등으로 부른다. 949는 그냥 여러 코드 패이지들 가운데 구분하기 위한 identifier다. 오래된 거고 지금은 거의 쓰지 않는다. 최근 버전의 .네트는 utf만 지원하여 위 코드 패이지로 인코드나 디코드를 하려면 encoding provider라는 걸…

  • c# value 타입 배열 만들기

    배열은 레퍼런스 타입이다. 레퍼런스 타입은 메모리 매핑을 할 수 없다. 블리터블이 아니기 때문이다. 컴퓨터에서 map은 지도를 그린다는 뜻이 아니다. (transitive, followed by a “to” phrase) To create a direct relationship to; to create a correspondence with.wiktionary 직역을 하면 대응하게 만든다는 의미다. 쉽게 설명하면 이미 메모리에 있는 물리적 바이트를 가리키는 포인터를 추가로 만드는 행위다. 예를 들어…

  • WinUi ContentDialog await를 ContentDialogButtonClickDeferral로 제어하기

    WinUi의 ContentDialog는 특이하게 작동한다. 버튼 클릭 이벤트 메떠드에 await가 있으면 다이어로그를 닫고 기다린다. await가 작동하는 동안 메시지를 출력하는 등의 작업을 원칙적으로 할 수 없다. await가 작동하는 동안 다이어로그를 사라지지 않게 하려면 ContentDialogButtonClickDeferral를 써야 한다.

  • WinUi 앱이 릴리스 환경에서 충돌하는 문제

    WinUi 앱이 디버그 환경에서는 잘 작동하는데 릴리스 환경에서 그러지 않는 경우가 있다. 후자는 전자가 하지 않는 최적화를 하는데 이 과정에서 문제가 생기면 그런다. 이는 빌드를 하는 동안 output 창에 나온다. 이를 해결하려면 우선 프로젝트를 clean한다. 이래도 안 되면 아래를 확인한다. WinUi 앱 릴리스 빌드를 할 때 unused code trimming이 제대로 작동하지 않는 경우가 흔하다. 무시해도…

  • WinUi 앱 패키지 설치 전 인증서 설치 방법

    인증서 없이 WinUi 앱 패키지를 만들 순 있지만 설치를 할 때에는 인증서가 있어야 한다. 인증서도 같이 배포해야 한다. 인증서는 아래의 방법으로 설치해야 한다. 이러지 않으면 패키지 설치를 할 수 없다. 인증서에 마우스 포인터를 두고 마우스 오른쪽 버튼을 클릭하여 팝업 메뉴를 연 뒤

  • WinUi ContentDialog 버튼 구역 달라지는 모양 바로잡기

    WinUi의 ContentDialog는 code-behind와 xaml 모두로 만들 수 있다. 전자가 더 간단하지만 모양을 바꾸려면 후자가 더 좋다. 재믈로 구현하려면 파일을 만들어야 한다. page를 만든 뒤 ContentDialog로 바꾸면 된다. 재믈로 만든 다이어로그는 원래의 모양이 아니다. 코드 비하인드로 만들면 아래 버튼들이 있는 자리를 다른 색으로 구분하지만 재믈로 만들면 구분하지 않아서 보기 나쁘다. 재믈로 만들면 기본 스타일을 적용하지 않기…