programming

  • encrypt와 hash의 차이 – 패쓰워드 저장에 있어서

    encrypt는 암호로 바꾼다는 뜻의 동사다. 반대말로 decrypt 암호를 푼다는 동사가 있다. encrypt는 decrypt를 전제로 한다. 정보를 암호로 만들기만 해 놓으면 쓸모가 없다. hash는 엉망으로 만든다는 의미의 동사다. 프로그래밍에서 해쉬는 encrypt와 비슷하다. 정보를 그 자체로는 아무 의미가 없는 무언가로 바꾸어 놓는다. 하지만 encrypt와의 차이라면 해쉬된 결과물은 원래의 정보로 돌려 놓을 수가 없다는 거다. 예를 들어 네트워크에서…

  • [c#] 그냥 닷넷과 닷넷 프레임워크의 차이

    .net framework는 예전 꺼고 그냥 .net이라고만 하는 건 요새 꺼다. 전자를 다운로드하려 마이크로소프트 웹사이트에 접속하면 그냥 닷넷을 이용하라는 안내가 나온다. 닷넷 프레임워크는 이제 더 이상 버전 업이 되지 않는다. 닷넷 프레임워크가 버전 업 되던 시기에는 닷넷 코어라는 이름으로 서로를 구별했다. 이제 전자는 사라져 가게 되어 굳이 서로를 구별할 필요가 없게 되었다. 후자에서 코어라는 이름을 떼어…

  • 애플리케이션보다 system 프로세스의 cpu 부하를 높이는 ui 작업

    ui를 잦은 빈도로 업데이트하면 이 작업이 실행되는 프로세스 말고도 ‘system’ 프로세스의 cpu 사용이 는다. 예를 들면 모니터 크기 정도의 닷넷 DataGridView를 여러 스레드들에서 동시에 빠르게 반복하여 수정하는 경우다. 이러면 정작 이 작업이 실행되는 애플리케이션의 cpu 부하보다 시스템 프로세스의 그것이 더 높아진다. ui 작업의 상당 부분을 윈도우즈가 나눠서 처리하기 때문이다. 실행하는 애플리케이션의 cpu 부하만 보면 전체적인…

  • 윈도우즈 메시지를 제어하는 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 인터페이스를 써야 한다. 이런 문제는 주로 클래스를 복사할…