programming

  • [프로그래밍] 쉬운 인터패이스 설명 – interface와 class 비교

    interface는 클래스와 비슷하여 c#의 경우 type system 항목에 같이 설명되어 있다. 아래의 예제는 인터패이스 안에 하나의 메떠드를 선언한 뒤 두 개의 서로 다른 내용으로 실행되게 하는 거다. 클래스 안에서는 메떠드를 선언하고 실행부까지 코딩할 수 있지만 인터패이스에선 그렇게 할 수 없다. 대신 클래스가 인터패이스를 상속하여 자유롭게 실행부를 코딩할 수 있다. 심지어 여러 인터패이스들을 동시에 상속할 수도…

  • 메모리 매핑과 가상 메모리에 대한 쉬운 설명

    memory mapping에서 동사 map은 어려운 단어다. ‘지도로 나타낸다’는 뜻이 아니라 correspond 즉 ‘대응시킨다’라는 뜻이다. 뭐를 뭐에다 대응시킨다는 말일까? 메모리 매핑을 이해하려면 먼저 가상 메모리에 대해 알아야 한다. 물리적 메모리에는 한계가 있다. 그 용량이 물리적 드라이브에 비해 작고 하도 여기저기에서 썼다 지웠다를 반복하다 보니 대이터가 뒤죽박죽으로 어질러져 있다. 이걸 fragmented 즉 ‘파편화’되어 있다고 한다. 이렇게 되면…

  • 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에 크게 부하를 주는 연산을 실행하면 비록 싱글 뜨레드로 작성된 거라 해도 윈도우즈는 여러 뜨레드로…