본문 바로가기

연구하기/Computer Engineering30

Interface 를 이용한 Listener 패턴과 .NET Framework 의 event 타입의 비교 * 장점 2> 부분 수정되었습니다. Interface 를 이용한 Listener 패턴과 .NET Framework 의 event 타입의 비교 2007년 1월 15일 강현신 이벤트의 장점 및 단점 중 가장 큰 부분은 역시, 사용자가 리스닝 할 메소드의 추가 및 삭제에 직접 개입할 수 없다는 점 장점1. > 사용자가 개입할 수 없으므로 중간에 어떤 다른 예외적인 상황을 개입시킬 수 없으며, 그렇기 때문에 예외 상황이 발생할 여지를 줄인다. 인터페이스를 통한 리스너 패턴을 쓸 경우 개체 추가 시 다른 리스트 등에 추가하는 작업과 같은 참조 늘리기 작업 같은 것이 대표적 예인데, 이런 경우 코딩 잘못으로 인해 참조를 제대로 제거하지 않을 경우 복잡한 문제를 야기할 수 있다. 이벤트의 경우 애당초 이런 상황 자체.. 2007. 1. 15.
.NET Framework 1.1 버그 (1) 찾은 건 사실상 1개 뿐이지만 올려봅니다. (1) ResourceManager 를 통한 BMP 이미지 로드 수행 후 발생하는 FolderBrowserDialog 의 비정상 작동 [발견일] : 2005년 10월 16일 [버전] : 1.1.4322 sp1 ResourceManager 를 통해 BMP 를 로드하는 경우, 즉 new Bitmap(type, filename) 메소드를 사용해 이미지를 로드하는 부분이 폼의 생성자에 존재할 경우, 그 이후 FolderBrowseDialog 의 폴더 경로 화면이 아무것도 디스플레이되지 않는다. 좀 더 정확히는 폼이 한 번이라도 로드가 수행되어야만 리소스매니저로부터 자원을 끌어 써도 폴더 다이알로그가 정상적으로 나온다. 웃긴 건 이렇게 하면 오히려 onLoad 이벤트에 .. 2006. 12. 26.
프로그래밍을 하는 데에 있어 설계 사상의 중요성 얼마 전부터 내가 맡은 일은, 기존에 다른 이가 기획하고 코딩한 도구를 판매용의 새 프로젝트에 이식하는 것이다. 그리고 이는 마이그레이션을 포함하고 있다. 문제는 현재 만들고 있는 상품에서 내가 맡은 부분을 제외하면 대부분 자신이 코딩한 부분을 계승하고 있거나 아직 그 도구를 만든 이가 회사에 남아있는 반면, 본인이 맡은 부분은 그렇지 않다는 점에 있고, 더군다나 이전에 그 부분을 코딩했던 사람이 만들었던 도구들이 상당히 엉망이라는 점이다. 그런데 중요한 점은, 코딩이 엉망이라는 것이 아니다. 코딩이 엉망인 것은 경험 부족의 산물이나 성의없는 작업의 결과일 수도 있지만, 당시의 프로젝트 방향이나 상황에 따라 그런 것일 수도 있기 때문이다. 솔직히 그 부분이 짜증이 안 나는 것은 아니지만 그것 자체는 그래.. 2006. 7. 31.
예외 (Exception) - 2부 - 2007-02-14 : C# 에서 throw 시 StackTrace 를 초기화하지 않는 방법이 있어 이 부분을 추가했습니다. 예외 (Exception) - 2부 - 2006년 3월 28일 강현신 C++ 의 예외 처리 C++ 에서는 예외 발생을 묘사하기 위하여 throw 를, 예외 흐름을 묘사하기 위해 try ~ catch 블록을 사용하고 있다. 기본적인 표현 방식은, try 블록 안에 예외가 발생할 수 있을 가능성이 있는 주 흐름 명령어들을 위치시키고, catch 블록 안에 이러한 주 흐름에서 발생한 예외를 처리하는 예외 흐름을 기술한다. try 블록 안에 위치한 주 흐름은 많은 형태의 명령어로 기술될 수 있으므로, 발생할 수 있는 예외 또한 여러 가지 형태가 될 수 있다. C++ 은 catch 구문 뒤.. 2006. 3. 28.
예외 (Exception) - 1부 - 예외 (Exception) - 1부 - 2006년 3월 27일 강현신 전통적인 프로그래밍 언어가 가지는 오류 처리의 한계점 컴퓨터를 구성하는 대부분의 시스템의 경우 많은 종류의 작업을 처리하는 과정에서 어떤 특정 명령 혹은 그 명령의 결과가 제어할 수 없는 상황을 발생시키는 경우, 예를 들면 연산의 결과가 변수의 형이 가질 수 있는 최대 값을 벗어나 버렸다든가 현재 어플리케이션에 할당되지도 않은 메모리 주소를 가져오려 했다든가 하는 상황 등이 발생하였을 경우 사용자에게 이러한 상황이 발생하였음을 알린 후 시스템은 작업을 중지하게 된다. 따라서 프로그램이 계속 정상적으로 실행되기 위해서는 작업을 수행하는 도중 이러한 상황을 항상 확인하여 문제가 발생하였을 경우 이를 적절히 해결할 수 있는 코드를 삽입해 두.. 2006. 3. 27.
.NET 의 델리게이트(delegate) 와 형 (type) ** 델리게이트의 개념 델리게이트에 대해 간단히 요약하면, 공간적 입장으로 해석하고 있는 기존 OOP 개념을 보완하기 위해 나온 새로운 개념이라고 볼 수 있다. 현재 .NET 환경에서 내가 이해하고 있는 델리게이트의 개념은 다음과 같다. 1) 개념상으로는 개체의 동작을 추상화한 '형(Type)' 이다. 델리게이트에 각종 비동기 호출을 위한 패턴이 정의된 점을 보면 마이크로소프트가 델리게이트를 어떤 개념으로 해석했는지를 잘 보여준다. 2) 형태상으로는 메소드의 형식을 추상화한 '형' 이다. .NET Framework 상에서는 메소드의 형식 중 중요한 두 가지인 인자(Argument) 와 반환값(Return value) 으로 델리게이트를 정의할 수 있다. 멀티태스크의 입장에서 델리게이트의 개념은 매우 중요하.. 2006. 1. 25.
cscript 를 통한 각종 서비스 관리용 vbs 파일 사용법 cscript 를 통한 각종 서비스 관리용 vbs 파일 사용법 강현신 (http://gcempire.net) 2005.07.01 Windows 2003 은 여러 면에서 Windows 2000 에 비해 여러가지 추가적인 어플리케이션 서비스 관리 기능들을 가지고 있다. 그 중 하나가 cscript.exe 로서, 이는 vbs (Visual Basic Script)를 콘솔 라인상에서 바로 실행할 수 있게 하는 프로그램이다. Windows 2003 의 기본 시스템 디렉토리인 c:\windows\system32 를 보면, 여러가지 vbs 파일이 존재함을 알 수 있다. 이들 vbs 파일은, 자주 관리되는 어플리케이션 서비스들에 대하여 기능별로 분류 처리하도록 이루어져 있다. 예를 들면, iisvdir.vbs 는 II.. 2005. 7. 1.
MMC (Microsoft Management Console) 사용법 MMC (Microsoft Management Console) 사용법 강현신 (http://gcempire.net) - 2005.07.01 MMC 는 Microsoft Management Console 의 약자로서, Windows Server 계열 제품군의 모든 서비스를 GUI 상으로 관리하게 해 줄 수 있는 프로그램이다. 흔히 서버 관리 시 사용하는 관리 도구 안의 각종 서버 관리 도구들은 모두 이 MMC 를 사용하여 구동되는 것이다. MMC 는 특정 어플리케이션 서비스를 관리하기 위해 .msc 라는 확장자를 가진 파일을 필요로 한다. .msc 파일은 XML 규약으로 이루어진 문서로서, 특정 어플리케이션 서비스를 MMC 의 GUI 로 표현하는 방식과, MMC 의 변경 적용사항을 다시 특정 어플리케이션 .. 2005. 7. 1.
MS 의 C# 코딩이 익숙해지면서 - 2 C# 의 인터페이스는 자바와 상당히 다른 점이 많다. 정적 필드값이 들어갈 수도 없고, 접근 한정자도 지정하는 것이 불가능하다. 때문에 처음에는 이모저모 불편이 느껴졌다. 사실 자바의 인터페이스같은 경우, 정적 필드값을 일종의 통신을 위한 메시지 개념으로 만들어 두었으며, 이것은 고전적인 모듈간의 통신 형태가 가지고 있는 편의성과 퍼포먼스 향상을 남겨둔 것으로 보인다. 그리고 이런 자바의 인터페이스는 개체가 이러한 형식으로 통신이 가능하다는 형태를 보여주는 것 보다는 그 자체가 일종의 메시지 개체로 사용될 수 있는 형식에 가깝다. 즉 메시지와 구조체를 활용한 고전적인 통신방식을 OOP 의 개념으로 변형시켰다고 할까... C# 의 인터페이스는 아주 철저하게 개체의 형태를 나타내는 형식으로만 제약되어 있다... 2005. 3. 7.
반응형