전체 글 166

[프로젝트 자동화] 소스 서버 구축

소스 서버의 필요성 서비스 중인 혹은 개발 진행중인 응용프로그램에 문제가 발생했을 경우, 이 문제의 파악을 용이하게 하지 위해서 dump파일을 생성하게 된다. 이 dump파일은 해당 프로세스와 동일한 버전의 pdb파일을 필요로 한다. 출시 혹은 개발 진행중인 응용프로그램에서 끊임없이 수정되는 소스 및 pdb파일의 관리를 용이하게 하기 위해서 소스 서버를 구축하게 되고, 이 소스 서버의 역할은 dmp파일이 올바른 pdb및 소스를 자동으로 찾도록 해준다 1. 심볼을 위한 공용폴더 만들기. A. B. SYMBOLS_OS : OS 심볼 저장소 C. SYMBOLS_PRODUCT : 개발 어플리케이션 심볼 저장소 2. 관련 프로그램 설치 A. ActivePerl 5.16.1 Build 1601 (64-bit) B...

[C++] 문자열 분리(strtok, strtok_s)

문자열 분리. strtok, strtok_s 기존에 문자열 분리에 사용되던 strtok 은 첫 인자로 대상 문자열,두 번째 인자로 분리에 기준이 되는 문자를 넣으면 되었다. 즉, #include #include int main (){ char str[] ="- This, a sample string."; char * pch; printf ("Splitting string \"%s\" into tokens:\n",str); pch = strtok (str," ,.-"); while (pch != NULL) { printf ("%s\n",pch); pch = strtok (NULL, " ,.-"); } return 0;} 이런식으로, 사용하면 되었는데... VS 2005부터 CRT라이브러리의 문자열을 다루는..

etc 2013.03.04

[SQL] 인덱스 (클러스터, 비클러스터) 개념

인덱스. 1. 개념 A. 간단한 비유로 일반적으로 책 뒤쪽에 위치하는 ‘찾아보기’를 들 수 있다.B. 일 예로, ‘홍길동전’에서 ‘율도국’이라는 단어를 찾는다고 가정해보자. 만일 이 책에 ‘찾아보기’가 없다면 책을 첫 장부터 훑어야 할 것이다. 그런데 찾아보기가 있다면 한번에 찾아 갈 수 있다. 이 것이 인덱스의 기본적인 개념이다. 2. 인덱스 생성시 발생되는 특징A. 검색 속도 향상. i. 시스템의 부하를 줄여, 시스템 전체 성능향상에 기여 가능. B. 인덱스를 위한 추가 공간이 필요.C. 생성에 시간이 소요 될 수 있음.D. INSERT, UPDATE, DELETE가 자주 발생한다면 성능이 많이 하락할 수 있다. 3. 종류A. 클러스터형 인덱스(Clustered Index). i. 테이블당 한 개만 ..

DataBase/SQL 2013.02.26

[Design pattern] DECORATOR

패턴 - 장식자(DECORATOR) 의도 - 객체에 동적으로 새로운 책임을 추가할 수 있게 한다. 기능을 추가하려면, 서브 클래스를 생성하는 것보다 융통성 있는 방법을 제공한다. 다른 이름 - 랩퍼(Wrapper) 동기 - 가끔 전체 클래스에 새로운 기능을 추가할 필요는 없지만, 개별적인 객체에 새로운 책임을 추가할 필요가 있다. 예를 들어, GUI툴킷에서 모든 사용자 인터페이스 요소에는 필요 없지만, 어떤 사용자 인터페이스 요소에만 스크롤링(scroling)과 같은 행동이나 테두리(border)와 같은 속성을 추가할 수 있도록 해 줄 필요는 있다. 이런 것은 하나의 객체에 속성이 추가됨으로써 또 다른 책임이 추가되어야 한다. 하지만, 이 같은 방법은 테두리의 선택이 정적이기 때문에, 사용자는 구성요소를..

Design Pattern 2013.02.25

[Design pattern] 반복자 Iterator

패턴 - 반복자(Iterator) 다른 이름 - 커서(Cursor) 키워드 - 반복적인 행동의 일반화 의도 - 내부 표현부를 노출하지 않고 어떤 집합 객체에 속한 원소들을 순차적으로 접근할 수 있는 방밥을 제공한다. 동기 1. 리스트(list)등 집합 객체들은 이 내부 표현 구조를 노출하지 않고도 자신의 원소를 접근할 수 있는 방법을 제공하는 게 좋다. 2. 이미 정의한 방법과 다른 방법으로 이들 원소들을 순회하고자 할 수도 있다. 3. 순회 방법이 바뀌었다고 List 클래스의 인터페이스를 부풀리고 싶지는 않다. 4. 동일한 리스트에 대해서 하나 이상의 순회 방법을 정의하고 싶을 때도 있다. 패턴소개 1. 동기에서 나타난 문제들을 해결할 수 있는 것이, 반복자 패턴이다. 2. 이 패턴은 리스트 객체에 접..

Design Pattern 2013.02.25

[Design pattern] 복합체 Composite

패턴 : 복합체(Composite) 의도 : 부분과 전체의 계층을 표현하기 위해 객체들을 모아 트리 구조로 구성한다. 사용자로 하여금 개별 객체와 복합 객체를 모두 동일하게 다룰 수 있도록 하는 패턴이다. 동기 : 그래픽 편집기나 구조도 캡쳐 시트템 같은 그래픽 응용프로그램을 살펴보면, 사용자가 간단한 그림 구성요들을 모아서 복잡한 다이어그램을 생성할 수 있게 한다. 사용자는 더 큰 그림 요소를 만글기 위해 구성요소들을 그룹으로 만들고, 이 그룹이 다 더큰 그룹을 형성하기도 한다. 이는 마이크로소프트의 파워포인트의 그룹 기능을 생각하면 이해하기 쉽다. 출처 : http://blog.naver.com/gamediz/20042595126 : 1번은 A, B, C, D라는 객체를 놓았다. : 2번은 B객체를 ..

Design Pattern 2013.02.25

[Design pattern] 감시자 Observer

패턴 - 감시자(Observer) 패턴 의도 - 객체 사이에 일 대 다수의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지 받고 자동으로 갱신될 수 있게 만든다. 키워드 - 데이터에 대한 감시자의 자동 갱신 다른 이름 - 종속자(Dependent), 게시-구독(Publish-Subscribe) 동기 1. 어떤 하나의 시스템을 서로 연동되는 클래스 집합으로 분할했을 때 발생하는 공통적인 부작용은 관련된 객체 간에 일관성을 유지하도록 해야 한다는 것이다. 2. 그렇다고 이 일관성 관리를 위해서 객체간의 결합도를 높이고 싶지는 않다. 이유는 각 클래스의 재사용성이 떨어지기 때문이다. 동기 예제. - 그래픽 사용자 인터페이스 툴킷을 예로 든다. 툴킷..

Design Pattern 2013.02.25

[Network] IRC구조

1. 정의 - 실시간 인터넷 텍스트 메시징 또는 동시 회의 2. 서버 구조(spanning tree) - 시발(始發) 이중화가 2계층 설계로 도입될 때, 루프 또는 중복되는 프레임은 네트워크에 심각한 결과를 가져올 수 있다. STP(Spanning Tree Protocol)은 이러한 문제를 해결하기 위해서 개발되었다. - 개념 루프의 원인이 될 수 있는 여분의 경로를 의도적으로 블로킹하여 네트워크상의 모든 도착지 사이에 오직 논리적인 하나의 경로만이 있도록 책임진다. STA란 Network Topology 상에서 Bridge로 하여금 루프(loop)를 형성하지 않도록 하는 알고리즘이다. 이 말은 임의의 2개의 단말이 프레임을 송수신할 수 있는 경로가 단 하나 이도록 한다는 의미이다. - 설명 그림에서 모..

etc 2013.02.22

[Design pattern] Bridge

패턴: 가교(Bridge)의도: 구현에서 추상을 분리하여, 이들이 독립적으로 다양성을 가질 수 있도록 한다.다른 이름: 핸들/구현부(Handle/Body)동기: 하나의 추상적 개념이 여러가지 구현으로 구체화될 수 있을때, 대부분은 상속을통해서 이 문제를 해결한다. 추상 클래스로 추상적 개념에 대한 인터페이스를 정의하고, 구체적인 서브클래스들에서 서로 다른 방식으로 이들 인터페이스를 구현 한다.그러나, 이런 방법으로는 충분한 융통성을 가질 수 없다. 상속은 구현과 추상적개념을 영구적으로 종속시키기 때문에, 추상적 개념과 구현을 분리해서 재사용하거나수정, 확장하기가 쉽지 않다.활용성:1. 런타임에 구현 방법을 선택하거나 구현 내용을 변경하고 싶을 때.:2. 추상적 개념과 구현 모두가 독립적으로 서브클래싱을 ..

Design Pattern 2013.02.21

[Design pattern] Reflection

구현1. 어플리케이션의 모델을 정의2. 변경되는 동작을 정의한다.3. 시스템 구조적 측면들을 정의한다.4. 시스템 서비스를 정의한다.5. metaobjects 를 정의한다.6. MOP 를 정의한다.7. 기본레벨을 정의한다. 장점소스 코드를 임의로 수정할 수 없다.소프트웨어 시스템의 변경이 쉽다.다양한 종류의 변경을 지원한다. 단점메타 레벨에 수정을 가할 경우 손상이 발생할 수 있다.컴포넌트의 개수가 급격히 증가 할 수 있다.효율성이 떨어진다.소프트웨어의 잠재적인 모든 변화를 지원할 수 없다.모든 언어가 리플렉션을 지원하지 않는다.

Design Pattern 2013.02.21