programming

  • 윈도우즈 메시지를 제어하는 WndProc SendMessage PostMessage

    윈도우즈는 message를 통해 애플리케이션, 컨트롤과 통신한다. 여기에서 메시지는 MessageBox를 통해 출력되는 문자열을 말하는 게 아니고 구조체다. 윈도우즈가 보내는 메시지를 제어하려면 WndProc 메소드를 이용한다. WndProc으로 윈도우즈가 보내는 많은 메시지들 가운데 원하는 것만 골라낼 수 있다. 윈도우즈로 메시지를 보내서 윈도우즈로 하여금 무언가를 실행하게 하려면 SendMessage나 PostMessage 함수를 쓴다. 이것들은 win32 api에 있는데 이 api는 윈도우즈를 설치할 때…

  • [프로그래밍] 매개변수, 인수, parameter, argument의 차이

    이들은 모두 수학적 개념이자 용어들인데 컴퓨터 프로그래밍에서는 좀 다르게, 더 간단한 의미로 쓰인다. parameter는 프로씨저로 입렵되는 값을 받아서 담아 두는 변수이다. 흔히 매개변수 또는 보조변수라고 번역한다. 3. (programming) An input variable of a function definition, that gets an actual value (argument) at execution time.– wiktionary argument는 함수로 넘겨지는 값이다. 위 예제에서 1과 2다. 독립변수, 독립변인,…

  • c# round와 반올림

    round의 뜻 round는 반올림이라는 뜻이 아니라 ‘특정 자리의 수를 올리거나 내려서 어림수로 만든다’는 의미로 동사다. ‘어림수’라는 명사로는 쓰이지 않는다. 명사인 어림수는 round number/figure라고 한다. 일부 영한사전들에는 반올림이라고 나와 있지만 이는 틀리다. round는 가까운 수로 바꿀 수 있고 먼 수로도 바꿀 수 있다. 컴퓨터 프로그래밍을 하다 보면 round towards zero라는 걸 만나게 되는데 이때에는 ‘내림floor‘이나 ‘버림truncate‘이…

  • 논리 프로세서와 멀티뜨레드

    cpu를 만드는 기술은 연산 능력을 높이는 대신 크기를 줄이는 방향으로 발전하고 있다. 그게 더 쉽기 때문이다. 더 조그매진 cpu들 여러 개를 한데 묶어 하나의 칩으로 만든다. 이게 멀티-코어 프로세서다. 하나의 부속이지만 그 안에는 물리적으로 구분되는 여러 cpu들이 코어라는 이름으로 들어 있다. 하나의 작업을 여럿으로 나눠 처리하는 것을 멀티뜨레딩이라 한다. 흔히들 알고 있는 것과는 달리 멀티뜨레딩이 꼭 동시concurrent, parallel 처리를 의미하는 것은 아니다. 하나의 순서로 처리되는 작업을 두 개 이상의 cpu, 코어, 뜨레드로 나누어 시분할serial time slice 처리를 할 수도 있다. cpu에 크게 부하를 주는 연산을 실행하면 비록 싱글 뜨레드로 작성된 거라 해도 윈도우즈는 여러 뜨레드로…

  • 증권회사 api 선택시 고려 사항

    속도 com은 쉽게 이용할 수 있는 대신 느리다. com은 component object model의 머리글자인데 이름만 봐서는 이해하기가 어렵다. 마이크로소프트는 여러 플랫폼들 사이에서 쉽게 데이터를 오가게 하기 위해 이걸 만들었지만 실패했다. 지금은 윈도우즈 안에서만 일부 애플리케이션들 사이에서 데이터 전송을 하는 데에 이용된다. 윈도우즈 중급 이상 수준이 되는 사람이라면 ole는 들어봤을 거다. com, ole, 액티브x, ocx는 사실상 모두…

  • c# 깊은 복사, 얕은 복사, 할당의 차이

    객체는 밸류 타입과 레퍼런스 타입으로 나뉜다. 깊은 복사, 얕은 복사, 할당은 레퍼런스 타입에서만 문제되며 특히 얕은 복사와 할당이 문제된다. 깊은 복사 레퍼런스 타입 객체를 deep copy하면 refer하는 객체와 refer된 밸류가 모두 새롭게 만들어진다. 레퍼런스만 복사하는 건 쉽지만 밸류까지 복사하는 건 어렵다. 시리얼라이즈를 한 뒤 디시리얼라이즈를 하던가 iCloneable 인터페이스를 써야 한다. 이런 문제는 주로 클래스를 복사할…

  • 프로그래밍 실수의 크기 비교하기

    부동소수 프로그래밍 언어들에 따라 real, double, float, extended 등으로 이름지어지는 실수實數는 자릿수의 크기에 따라 정밀한 정도엄밀하게는 범위가 달라진다. 그래서 부동소수라고 한다. 여기에서 ‘부동’은 같지 않다는 不同이나 움직이지 않는다는 不動이 아니라 떠다닌다는 浮動floating-point이다. 예를 들어 어느 프로그래밍 언어의 실수형이 다섯 자리의 정확도precision를 보장한다고 하면 12,345.67890의 경우 소수들의 정확도는 담보되지 않는다. 그러나 0.67890의 경우에는 담보된다. 이러한 정확도의…