반응형

분류 전체보기 2934

사람을 위한 기술

사람을 위한 기술 프로젝트 감수를 하다보면 누구를 위한 기술인지를 물을 때가 있습니다. 학생들은 만들려고 하는 프로젝트 주제를 발굴할 때는 새로운 기술이나 사용할 사람들이 편하거나 즐겁게 하는 주제를 선정하는 것에는 의구심이 없습니다. 하지만 새로운 기술이 나왔을 때 사용 목적에 따라 피해를 보는 이들이 발생할 수도 있기 때문이죠. 제 생각에 사람들에게 피해가 발생할 수 있는 부분이 있다고 생각하면 학생들에게 종종 하는 말이 있습니다. "노벨 평화상이 나오게 된 이유를 아시나요?" 다이너 마이트를 발명한 노벨은 폭약에 관련한 많은 특허를 낸 인물로 지금은 노벨상으로 더 유명합니다. 그는 생전에 다이너 마이트와 많은 발명 특허로 인해 많은 부를 얻습니다. 그리고 이를 이용하여 건설, 토목에서 유용하게 사용..

투표, 권리인가? 의무인가?

투표, 권리인가? 의무인가? 안녕하세요. 언제나 휴일입니다. 2016년 4월 13일이 총선이 있는 것은 모두 알고 계시죠. 요즘 정치를 보면 외면하고 싶은 생각이 나도 모르게 들 때가 있네요. 다시 우리 사회는 우리 스스로 만든다는 생각에 예전에 썼던 글을 다시 한 번 들여다 봅니다. 이 글은 2012년 4월 총선이 가까워졌을 때에 작성했던 글입니다. 나는 강의를 하는 사람이다. 4월 11일 총선일에 진행되는 투표에 대한 나의 생각은 너무도 내 입장만 생각을 했었던 것 같다. 아침에 일어나 투표를 하고 오전에 강의를 하면 학생들도 이후 시간에 투표를 할 수 있을 것이라 생각을 하고 있었다. 하지만 그러한 나의 생각이 잘못된 생각일 수 있다는 것을 인지하게 되었다. 학교가 있는 위치에서 상대적으로 먼 거리..

개인 기술 경영

개인 기술 경영 0. 개요 최근에 들어 개인에 대한 경영에 많은 관심을 갖는 경향이 늘고 있습니다. 이 글은 엔지니어(아니더라도)가 어떻게 개인 기술을 경영해야 할까에 관한 내용입니다. 개인 기술을 경영하는데 있어 제일 중요한 것은 미래의 자신을 예측하고 설계하여 실천하는 것입니다. 그리고 이를 평가하고 다음 계획에 반영하여 지속적인 경영을 할 수 있어야 합니다. 1. 미래의 자신을 예측 미래의 자신을 예측하기 위해서 선행해야 하는 것은 현재의 자신과 주변 상황에 대한 분석입니다. 먼저 자신이 남들에 비해 강점(Strength)이 될 수 있는 것과 약점(Weakness)이 될 수 있는 것을 추출하세요. 그리고 주변 상황에서 기회(Opportunity)가 되는 요소와 위기(Threat)가 되는 요소를 파악..

2.2 그리기 예 [Windows API]

2.2 그리기 예이번에는 간단한 그리기 예제를 통해 Windows API를 이용하여 어떤 절차를 거치는지 살펴고기로 합시다. [그림 2] 그리기 작업 수행 흐름 앞에서 소개했듯이 Windows API의 그리기 기본 흐름은 [그림 2]와 같습니다. Windows API를 처음 학습할 때 새로운 형식 명과 긴 함수 이름과 생소한 흐름과 절차들 때문에 어떻게 이해하면서 다음으로 넘어가야 하는지 걱정하는 것이 대부분입니다. 지금에 와서 Windows API를 학습하는 이유는 윈도우즈 프로그램이 어떠한 원리로 동작하는지 이해하기 위한 부분이 실제 프로그래밍에 사용하기 위한 것보다 많다고 볼 수 있습니다. 이미 MFC나 Windosw Form, WPF 등의 보다 강력하고 개발 비용이 적게 드는 기술들이 많기 때문에..

2.1 WM_PAINT 메시지 [Windows API]

2.1 WM_PAINT 메시지윈도우에 다른 윈도우에 의해 가려졌다가 보여지거나 최소화 후에 최대화를 하는 등의 작업을 수행하면 다시 그려주어야 하는 영역이 생깁니다. 윈도우즈 운영체제에서는 다른 창에 의해 가려지는 영역을 클리핑 영역으로 기억해 두었다가 해당 영역이 다시 보여지면 그 부분을 포함하는 최소한의 사각 영역을 무효화 영역이 발생한 것으로 처리합니다. 이 때 발생하는 윈도우 메시지가 WM_PAINT입니다.그런데 윈도우즈 프로그램에서 무효화 영역이 생긴다고 바로 WM_PAINT 메시지를 발생하여 처리하는 것은 아닙니다. 일반적으로 윈도우즈 프로그램에서 그리기 작업은 다른 작업들보다 처리 우선순위가 낮습니다. 따라서 응용 메시지 큐에 처리할 윈도우 메시지가 없고 무효화 영역이 있을 때 WM_PAIN..

2. 기본 그리기 [Windows API]

2. 기본 그리기Windows API에서 그리기는 DC(Device Context)를 이용합니다. DC란 출력에 필요한 여러 정보를 가지고 있는 구조체로 라인이나 경계를 그릴 때 사용하는 펜, 면을 채울 때 사용하는 브러쉬 등의 정보를 갖고 있습니다. DC를 사용하지 않고 그리기를 한다고 가정하면 선을 그리기 위해 두 점의 좌표 뿐만 아니라 선의 형태, 선의 두께, 선의 색상 정보들을 인자로 전달해야 합니다. 사각형을 그리기 위해서는 좌표 뿐만 아니라 경계 선의 형태, 선의 두께, 선의 색상 정보, 면을 채울 색상, 패턴 등의 인자가 필요하겠죠. 이처럼 그리기를 위해 전달해야 하는 인자를 단순화하기 위해 Windows API에서는 DC를 사용하고 있습니다. Windows API에서는 그리기 위해 DC를 ..

[C#] 퍼사드 패턴(Facade Pattern)

10. 퍼사드 패턴(Facade Pattern) 프로그래밍하다 보면 여러 종류의 라이브러리를 사용해야 하는 경우가 발생합니다. 그리고 실제 각 라이브러리에 있는 모든 기능을 사용할 필요가 없는 경우가 많지요. 이럴 때 상위 수준의 라이브러리를 만들어서 사용하기 쉽게 제공할 수 있습니다. 이처럼 상위 수준에서 인터페이스를 정의하여 하위 수준의 서브 시스템의 기능을 사용할 수 있게 하고자 할 때 퍼사드 패턴을 사용하면 효과적입니다. 퍼사드 패턴에서는 하위 수준의 여러 서브 시스템에서 제공되는 기능들을 상위 수준에서 단순화시켜 사용하기 쉽게 해 줍니다. 또한, 이를 통해 여러 서브 시스템과의 복잡한 관계를 느슨하게 만들어 주어 하위 시스템과 독립성을 갖게 해 줍니다. 2016/04/26 - [프로그래밍 기술/..

[C#] 장식자 패턴(Decorator Pattern)

9. 장식자 패턴(Decorator Pattern) 프로그래밍하다 보면 너무 다양한 형태로 기능을 확장해야 할 경우가 발생합니다. 예를 들면 여러 종류의 단위 기능이 있고 이들을 조합해서 사용할 경우입니다. 사진에 원 장식을 하고 여기에 사각형 장식을 하고 여기에 삼각형 장식을 하는 등의 작업을 반복할 수 있는 경우처럼 말이죠. 이 같은 경우에 단위 기능들에 대한 조합된 기능을 수행할 수 있는 개체 형식들을 정의하기 위해서는 무수히 많은 수의 파생 클래스를 정의해야 합니다. 이때 장식자 패턴을 사용하면 장식자 개체에서 필요한 단위 기능을 하는 형식 개체를 포함을 시키는 것으로 이를 해결할 수 있습니다. 이 같은 경우에 장식자 패턴은 단위 기능을 수행하는 형식과 장식자 형식을 정의하고 일반화하여 기반 클래..

[C#] 복합체 패턴(Composite Pattern)

8. 복합체 패턴(Composite Pattern) 복합체 패턴은 복합 개체와 단일 개체를 같은 방법으로 사용하고자 할 때 사용되는 패턴입니다. 복합체 패턴은 트리 구조로 관리고자 할 때 자주 사용이 됩니다. 예로 폴더(복합 개체)와 파일(단일 개체)을 같은 방법으로 사용하게 하는 것이죠. 이처럼 복합체 패턴에서는 단일 개체와 복합 개체를 같은 방법으로 사용할 수 있게 일반화하여 기반 클래스를 제공합니다. 단일 개체 형식과 복합 개체 형식은 파생된 클래스로 구현하겠죠. 중요한 것은 기반 클래스에서 단일 개체와 복합 개체에서 할 수 있는 모든 기능을 인터페이스로 약속한다는 점에 있습니다. 이를 통해 사용자는 해당 개체가 단일 개체인지 복합 개체인지를 모르더라도 같은 방법으로 사용할 수 있는 것입니다. 하지..

[C#] 가교 패턴(Bridge Pattern)

7. 가교 패턴(Bridge Pattern) 가교 패턴은 추상적 개념과 구체적 구현 사이의 종속성을 제거하여 목적에 맞게 다양한 구현 방법을 사용하도록 제공하는 패턴입니다. 프로그램하다 보면 일반화 관계로 설계하였을 때 기반 클래스에서 파생하는 클래스가 너무 많아지는 경우가 발생합니다. 그리고 다시 파생 클래스를 기반으로 하는 파생 클래스가 많아지는 경우도 발생하지요. 예를 들어, 사람이라는 기반 클래스가 있다고 가정합시다. 그리고 사람에서 파생한 학생과 학부모, 강사 등이 있습니다. 학생 중에는 피아노를 칠 수 있는 학생과 야구를 할 줄 아는 학생, 피아노와 야구를 할 줄 하는 학생 등이 있을 수 있겠죠. 학부모와 강사도 마찬가지일 것입니다. 이를 일반화 관계로 표현하다 보면 파생되는 계층도 깊어지고 ..

반응형