프로그래밍/의문
-
CRITICAL_SECTION의 default spin count프로그래밍/의문 2019. 4. 10. 01:24
CRITICAL_SECTION cs; InitializeCriticalSection(&cs); DWORD prevSpinCount = SetCriticalSectionSpinCount(&cs, 1000); SetCriticalSectionSpinCount는 파라미터인 CriticalSection의 SpinCount를 수정하고, 이전의 SpinCount 값을 반환한다. https://docs.microsoft.com/ko-kr/windows/desktop/api/synchapi/nf-synchapi-setcriticalsectionspincount SetCriticalSectionSpinCount function (synchapi.h) Sets the spin count for the specified c..
-
C# Excel Application이 예외 발생 시 종료되지 않는 현상프로그래밍/의문 2019. 3. 31. 17:05
예외를 잡아주지 않으면 Excel이 꺼지지 않고 계속 떠있다. 다음은 예외를 의도적으로 발생시키고 그것을 finally로 종료한 코드이다. using System; using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { Excel.Application app = new Excel.Application(); try { app.DisplayAlerts = false; throw new ArgumentException("exception"); } finally { app.Workbooks.Close(); app.Quit(); } } } 프로세스 상태 finally 내부 코드가 실행되었는데도 백그..
-
암호화 라이브러리 간 차이 때문에 암호화 결과가 달랐던 경우프로그래밍/의문 2018. 11. 12. 22:52
현상openssl과 닌텐도 crypto 라이브러리의 aes128 cbc로 암호화한 결과가 달랐다 원인openssl과 닌텐도 crypto와의 차이였다.openssl은 EVP_EncryptFinal 함수에서 pkcs#7 패딩을 자동으로 삽입해줬으나,닌텐도의 crypto 라이브러리는 패딩을 삽입해주지 않았다. 해결 닌텐도의 crypto 라이브러리로 암호문을 만들 때, 버퍼의 빈 공간에 pkcs#7 패딩을 직접 만들어주니 암호화 결과가 같았다. 참고http://manual-archive.blogspot.com/2012/03/pkcs-padding-method_19.htmlhttps://crypto.stackexchange.com/questions/10522/openssl-paddinghttps://wiki.op..
-
enable_shared_from_this를 사용했는데 예외가 발생한 경우프로그래밍/의문 2018. 9. 13. 00:22
class session : std::enable_shared_from_this{public: session(tcp::socket socket) : socket(std::move(socket)){} //...}; void do_accept() { acceptor.async_accept(socket, [&](auto error) { if (error) { return; } std::shared_ptr newSession = std::make_shared(std::move(socket)); newSession->run(); do_accept(); }); } void do_receive(){ auto self = shared_from_this(); socket.async_receive(asio::buffer(..
-
클라이언트에서 특정 언어권 문자열이 깨져서 보였던 이슈프로그래밍/의문 2018. 9. 5. 15:01
각 언어권 별 텍스트 리소스를 만들어주는 툴을 몇 달 전에 만들었었고, 정상적으로 리소스가 뽑혀져 나오는지 확인했으며 문제가 없는 걸(없는 것처럼 보이는 걸) 확인했었다.그 뒤 한동안 잊고 살았다. 그리고, 본격적으로 관련 작업이 시작되는지 오늘에서야 그 툴을 사용할 일이 생겼다. 곧바로 문제가 발생했다. 일본어 텍스트에서 발생했는데 클라이언트에서 글자가 깨져 보이는 것이다. 0. 소스를 열어 인코딩이 시스템 디폴트로 되어있는 건 아닐지 확인했으나 utf8로 지정이 되어있었다. 문제가 아니었다.1. utf8 BOM 문제인가 했지만 클라이언트 내에서 utf8 bom을 체크하는 코드가 있어서 해당 문제도 아니었다.2. 예전에 얼핏 들었던 코드 페이지 라는 것과 관계가 있던 거 아닐지 찾아봤다 코드 페이지에 ..
-
sql에서 정수 괄호 숫자의 의미 bigint(5)프로그래밍/의문 2018. 7. 24. 15:51
CREATE TABLE account_battle_pet_slots ( accountId int(10) NOT NULL DEFAULT '0', slot1 bigint(20) NOT NULL DEFAULT '0', slot2 bigint(20) NOT NULL DEFAULT '0', flags tinyint(3) NOT NULL DEFAULT '0', PRIMARY KEY (accountId)) 같은 쿼리를 봤다. MSSQL은 쿼리 실행도 안 되더라.위 쿼리는 MYSQL에서 사용된 쿼리인데 의미를 찾아보니 다음과 같았다. 결과 값을 출력할 때 앞에 0을 몇 개 표기할 건지를 지정한다. bigint(5)로 지정된 slot1에 1을 설정했다고 치자. 그럼 select 시 00001 같은 형식으로 보여지게 된다..