• c# DllImport 대신 LibraryImport

    최신 비주얼 스투디오는 DllImport를 쓰면 LibraryImport로 바꾸라고 경고한다. 전자는 오래되었고 느리기 때문이다. LibraryImport의 기본 형태는 아래와 같다. access modifier는 생략할 수 없다. 정적으로만 이용할 수 있으므로 static으로 해야 한다. 컴파일러가 다른 파일에 자동으로 코드를 추가할 거라 partial로 해야 한다. 정수와 달리 bool이나 string은 마셜을 해야 한다. unmanaged의 정수와 .네트의 그것은 구조가 같지만 bool과 string은 그렇지…

  • c# ls증권 etk_decompress 예제

    ls증권의 rest api는 10분 200번 제한이 없어서 좋지만 서버로 하여금 압축하여 보내게 할 수가 없다. 레스트representational state transfer는 월드 와이드 웹에서 오가는 전송이다.

  • 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를 써야 한다.

  • FnGuide와 와이즈리포트를 이용해 기업 분석 보고서 이용하기

    와이즈리포트는 FnGuide가 운영하는 웹 서비스이다. 전자는 더 낮은 가격으로 더 제한된 정보를 제공한다. FnGuide 월 165,000원통상적 수준 안에서 열람 가능최근 5년 보고서 다운로드 가능과거 5년 이전 보고서 조회만 가능 WiseReport 월 110,000원개인 – 일 100건 조회 가능법인 – 일정 수준 다운로드 가능 공통 워터마크 있는 pdf로 제공한다. crawl은 할 수 없고 인공 지능으로 문자열 추출은…

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

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