[c#] 경로가 맞는데도 LoadLibrary가 126을 반환하고 실행되지 않는 문제

아래의 코드는 0을 반환해야 하지만 126을 반환하는 경우도 있다. LoadLibrary가 파일을 찾지 못하면 GetLastWin32Error는 126을 반환한다. 그러나 File.Exists(path)로 확인을 한 상태이므로 126을 반환해서는 안 된다. 이 문제에 대해 검색을 해 보면 dependency가 어쩌구 하며 여러 설명들이 나오지만 내가 보기엔 그저 버그다. 같은 코드가 어떤 컴퓨터에서는 0을 반환하고 다른 거에서는 126을 반환하기도 하며 후자의 경우에도 정적으로…

LoadLibrary 오류 처리 방법

LoadLibrary에 대한 자세한 설명은 따로 했다. LoadLibrary는 제대로 작동하지 않으면 그 이유를 정수 형태의 에러 메시지로 반환한다. 그러나 이러한 반환을 위해서는 아래와 같이 DllImportAttribute.SetLastError를 true로 설정해야 한다. 로드가 되지 않으면 Marshal.GetLastWin32Error 메떠드를 이용하여 아래와 같이 원인을 확인한다. GetLastWin32Error는 LoadLibrary를 실행한 바로 뒤에 실행해야 하는 거에 유의한다. 아래의 코드는 제대로 작동하지 않아 0을 반환한다. 그 이유는…

[전자 공시] 영업 수익 계정도 제공하지 않는 api

금융감독원은 여러 회사들의 재무 정보를 api로 제공한다. 그런데 이 api에는 심지어 코스피와 코스닥에 상장되어 있는 회사들의 영업 수익 계정도 포함되어 있지 않아 문제다. 보통 회사들의 매출액 계정이 금융 회사에는 없다. 대신 매출액에 해당하는 영업 수익 계정이 있다. 그런데 전자 공시 api로 매출액 계정은 확인할 수 있지만 영업 수익 계정은 할 수 없다. 제공하지 않기 때문이다….

[전자 공시] 신규 상장 종목의 고유 번호

한국거래소는 종목 코드로 거래의 대상을 특정하지만 금융감독원은 고유 번호로 공시의 주체를 특정한다. 코스피나 코스닥에 상장되는 회사는 그 전에 이미 공시를 하고 있기 때문에 고유 번호를 가지고 있다. 공시를 하는 회사들의 고유 번호와 종목 코드를 알려면 아래의 엔드포인트를 이용하면 된다. 상장하는 날 위 엔드포인트는 상장하는 종목의 종목 코드를 제공하지 않아 문제된다. 빈 값이 온다. 상장 다음…

미세 먼지로 인한 폐암 증가

최근 폐암과 대장암이 늘어서 발병이 많이 되는 암들의 높은 순위를 차지하고 있다. 위암보다 많다. 담배라도 많이 피워서 폐암에 걸리는 거라면 억울하지나 않을 텐데 원인은 다른 데에 있다. This study provides evidence that PM10 and NO2 contribute to lung cancer incidence in Korea.– Lung Cancer Risk and Residential Exposure to Air Pollution: A Korean Population-Based Case-Control…

프로그램 코드로 웹패이지가 열리지 않는 경우 – user agent header

웹 브라우저로는 잘 열리는 url이 아래와 같은 코드로는 열리지 않는 경우가 있다. 서버가 http의 user agent header를 요구하기 때문이다. HTTP headers let the client and the server pass additional information with a message in a request or response.– HTTP headers, mdn web docs agent는 어려운 단어다. 흔히 대리인이라 번역하지만 computer와 관련되어서는 그렇지 않다. (computing) In…

[sqlite] numeric과 affinity

sqlite로 이용하는 대이터 타입은 null, integer, real, text, blob이다. numeric은 포함되지 않는다. 하지만 타입을 설정할 때 numeric으로 할 수 있다. numeric으로 설정을 하면 이 필드에는 아무거나 넣어도 된다. 그러면 sqlite가 알아서 적당한 거로 바꾼다. numeric 타입으로 저장하는 게 아니다. 이런 처리를 type affinity라 한다. In order to maximize compatibility between SQLite and other database engines,…

대전초등학생 김하늘을 죽인 사람의 마음을 생각한다 – 무서운 우울증

1. 근심스럽거나 답답하여 활기가 없음.2. 심리 반성과 공상이 따르는 가벼운 슬픔.– 우울, 표준국어대사전 우울증은 저렇게 느끼는 증상이 아니다. 우울증을 저렇게 사전적으로 알려 들면 김하늘 사건을 이해할 수 없다. 한 달 정도 우울증을 앓은 적이 있다. 말로 설명할 수 없는 괴로운 느낌이 지속됐다. 멀쩡하게 일상 생활을 하다가 문득 멀리서 먹구름이 몰려오는 거처럼 그 느낌은 엄습했다. 그럼…

[c#] 동적으로 c++ 라이브러리 이용하기

dll 파일의 형태로 제공되는 c++ 라이브러리는 보통 정적으로 로드하여 이용하지만 동적으로 할 수도 있다. 예를 들어 라이브러리에 쿼리하는 메떠드가 있는데 10분에 100번 이렇게 이용 횟수 제한이 있을 수 있다. 이 대이터가 서버 아닌 클라이언트에 저장된다면 동적으로 로드되어 있는 라이브러리를 언로드한 뒤 다시 로드하면 이런 제한을 초기화하여 피할 수 있다. 동적으로 라이브러리를 이용하려면 윈도우즈가 제공하는 세…