네트워크 패턴 오버뷰 (간단한 데모 후) 대표 : 그런데, 지금 생각해보니 단일 사용자 환경은 너무 미흡하 네. 다중 사용자를 지원해야겠네. 그리고 윈도우 외 리눅 스나 유닉스 환경에서 작동했으면 좋겠네. <표 2>와 같은 스펙 문서를 다시 작성한다. 프로젝트 웹서버개

Size: px
Start display at page:

Download "네트워크 패턴 오버뷰 (간단한 데모 후) 대표 : 그런데, 지금 생각해보니 단일 사용자 환경은 너무 미흡하 네. 다중 사용자를 지원해야겠네. 그리고 윈도우 외 리눅 스나 유닉스 환경에서 작동했으면 좋겠네. <표 2>와 같은 스펙 문서를 다시 작성한다. 프로젝트 웹서버개"

Transcription

1 PENreport 네트워크 패턴을 이용한 채팅 서버 구현 1 네트워크 패턴 오버뷰 OPENreport 디자인 패턴이란 이미 많은 이들이 고민했던 문제에 대한 해결책을 제시하고 이를 정리한 것을 말한다. 대부분의 프로그 래머들이 디자인 패턴에 관심을 가지고 이를 학습하면서 이용하고 있지만, 아주 기본적인 패턴만 알고 있을 뿐 특정 도메 인 관련 패턴은 쉽게 접하지 못하는 것이 현실이다. 네트워크 패턴을 이용한 채팅 서버 구현 첫 번째 시간은 네트워크 서 버 개발에 도움을 주는 기초 패턴에 대해 배워보도록 하자. 연 재 순 서 1회 네트워크 패턴 오버뷰 2회 Reactor를 이용한 채팅 서버 구현 3회 Proactor를 이용한 채팅 서버 구현 연재 가이드 운영체제 윈도우 98/2000/XP, LINUX, FreeBSD 개발도구 비주얼 C++ / GCC 기반지식 네트워크 응용분야 네트워크 패턴 프로그래밍 강대명 charsyam@hanmail.net 코드 한 줄을 더 보는 것보다 재미난 소설 한 편을 더 읽는 것이 프로그래머답다고 생각하는 만 4년차 프로그래머. 현재 자신의 부족함을 한없이 느끼면서 다시 한 걸음 한 걸음 전진하고 있다. 현재 파이널데이터에서 컴퓨터 포렌식 분야를 연구하고 있다. 대부분의 프로그래머들은 일반적인 GOF 패턴과 달리 네트워 크 관련 패턴은 쉽게 접근하지 못한다. 네트워크 관련 패턴이 일 반적인 GOF 패턴보다 규모가 크고 이해하기 어려울 것이라고 생각하기 때문이다. 이제부터 네트워크 관련 핵심 패턴들을 하나 씩 알아보자. 네트워크 패턴 오버뷰-태초의 패턴 첫 번째 단계, 소규모의 개발 회사가 있다고 가정하자. 여기서 독자는 프로그래머로 대표의 지시에 의해 웹 서버를 개발하기로 하고 대표와 대화를 시도한다. 독자 : 원하는 스펙을 말씀해주십시오. 대표 : 윈도우에서만 작동하면 되고 다중 사용자를 고려할 필요 는 없네. 일반적인 웹 서버면 되네. 대표와의 대화가 끝나고 독자는 <표 1>과 같은 스펙 문서를 작성 한다. <표 1>의 스펙을 토대로, <리스트 1>처럼 간단한 코드를 작성 했다. 2단계는 다시 대표에게 보고하는 일이다. 독자 : 대표님, 전에 말씀하신 웹 서버의 기능을 모두 구현했습 니다. 프로젝트 지원 운영체제 개발툴 필요 기능 고려 사항 <표 1> 웹 서버 구축을 위한 스펙 <리스트 1> <표 1>의 스펙을 토대로 작성한 코드 #include <windows.h> 웹서버개발 윈도우 비주얼 C++ 일반적인 HTTP/1.0 프로토콜 처리 다중 사용자를 고려하지 않음(단일 유저) int main( int argc, char *argv[] ) SOCKET acceptor, client;... 중략 client = ::accept( acceptor,... ); ::recv( client,... ); ::send( client,... ); return... micro software

2 네트워크 패턴 오버뷰 (간단한 데모 후) 대표 : 그런데, 지금 생각해보니 단일 사용자 환경은 너무 미흡하 네. 다중 사용자를 지원해야겠네. 그리고 윈도우 외 리눅 스나 유닉스 환경에서 작동했으면 좋겠네. <표 2>와 같은 스펙 문서를 다시 작성한다. 프로젝트 웹서버개발 지원 운영체제 윈도우, 리눅스, 유닉스 개발툴 비주얼 C++, gcc 1. 일반적인 HTTP/1.0 프로토콜 처리 필요 기능 2. 다중 유저 처리 - Select를 사용한다. 1. 다중 운영체제 지원 고려 사항 - #ifdef, 를 이용한다. <표 2> 다중 사용자를 고려한 웹 서버 스펙 대표의 요구 조건을 만족시키기 위해서 <리스트 2>와 같이 코 드를 작성한다. 즉, #if 등을 이용하여 옵션만 바꿔주면 자동으로 해당 운영체제에 맞게끔 컴파일되도록 하는 것이다. 그리고 select를 이용해 다중 사용자를 지원할 수 있도록 수정했다. 그런데 이렇 게 수정을 하고 나니 수정할 때마다 일일이 코드를 변경해야 하 는 문제가 생긴다. <리스트 3>의 코드를 보자. <리스트 2> 다중 사용자를 고려한 코드 #include <windows.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.hh> #include <netinet/in.h> #include <netdb.h> int main( int argc, char *argv[] ) WSAStartup();... int ret; ret = select( 0, &readfs, NULL, NULL ); ret = select( MAX_HANDLE+1, &readfs, NULL, NULL ); for(i = 0; I < MAX_HANDLE; i++) if ( FD_ISSET( sock_, &readfs ) ) recv(sock_, data, size, 0 ); DoHTTP10(data); Lock을 거는 순간마다 EnterCriticalSection이나 Leave CriticalSection을 #ifdef로 감싸 추가해야 한다. 그런데 만약 윈 도우의 Lock을 다른 것으로 바꾼다면 어떤 일이 발생할까. 일일 이 모든 부분을 수정해야 한다. 게다가 특정 한 부분을 잘못 수정 한다면, 굳이 말하지 않아도 어떤 결과를 초래할지 잘 알 것이다. 버그가 발생하더라도 해당 부분을 찾기란 쉽지 않고 새로운 부분 이 추가될 경우 손봐야 할 부분이 점점 더 많아지는 것은 당연지 사다. 그럼 어떤 방법으로 이런 문제를 해결할 수 있을까? 윈도우의 CriticalSection이나 리눅스의 Mutex는 동작 방식이 Lock을 획 득하고 해제하는 과정으로 비슷하다. 이런 부분에서 뭔가 추상적 인 공통부분을 만들어낼 수 있지 않을까. 이런 생각이 떠오른다 면, 다음과 같은 방법을 생각해볼 수 있다. 먼저 CLock이라는 클 래스를 만든다. 그리고 실제 코드에서 CLock 클래스를 사용하 고, CLock 클래스 안의 각각의 컴파일 옵션에 따라서 다르게 동 작하게 한다. <리스트 4>의 CLock 클래스를 보자. <리스트 4>에서 보는 것처럼 CLock 클래스를 이용할 경우 <리스트 3> CRITICAL_SECTION lock; pthread_mutex_t lock;... //Lock을걸때마다 아래 부분이 반복되어야 한다. EnterCriticalSection( &lock ); pthread_mutex_lock( &lock );... LeaveCriticalSection( &lock ); pthread_mutex_unlock( &lock ); Lock의 기능을 수정하면 CLock의 Lock 함수만 수정하면 된다. 새로운 형태의 Lock을 지원해야 하더라도 이 부분만 변경하면 동작하게 된다. 즉, 변경 부분이 최소화되는 것이다. 이런 방식으 micro software

3 open report <리스트 4> class CLock void Lock() EnterCriticalSection( &lock ); pthread_mutex_lock( &lock ); void Unlock() LeaveCriticalSection( &lock ); pthread_mutex_unlock( &lock ); private: CRITICAL_SECTION lock; pthread_mutex_t lock; ; int main( int argc, char *argv[] )... CLock lock; lock.lock();... lock.unlock(); 독자 : 대표님, 전에 말씀하신 웹 서버를 윈도우와 리눅스 환경에 서 모두 동작하도록 수정했습니다. 그리고 다중 사용자를 지원하도록 했습니다. 대표 : 수고했소. 그런데 지금의 기능만으로는 부족한 부분이 많 으니 HTTP/1.1도 추가하세요. 요구조건이 또다시 변경되었다. 스펙 문서를 <표 3>과 같이 수 정한다. 프로젝트 웹서버개발 지원 운영체제 윈도우, 리눅스, 유닉스 개발툴 비주얼 C++, gcc 1. 일반적인 HTTP/1.0 프로토콜 처리 2. 다중 사용자 지원 필요 기능 - Select를 사용한다. 3. HTTP/1.1 처리 고려 사항 <표 3> HTTP/1.1을 지원하도록 프로젝트 변경 다시 코드를 수정해보자. <리스트 5> HTTP/1.1을 지원하도록 수정한 코드 for(i = 0; i < MAX_HANDLE; i++) if ( FD_ISSET( sock_, &readfs ) ) recv(sock_, data, size, 0 ); if( IsHttp10( data ) ) DoHTTP10(data); if( IsHttp11( data ) ) DoHTTP11(data); CLock Client Lock_ Lock() pthread_mutex_lock() Unlock() pthread_mutex_unlock() <그림 1> Wrapper Facade를 적용한 CLock 클래스 로 사용하는 API를 #ifdef, 등의 특정 클래스로 묶어 변경 을 최소화시켜주는 것을 Wrapper Facade 패턴이라고 한다. 특정 클래스 이용으로 수정 단계 최소화 세 번째 단계로 대표에게 수정한 프로젝트의 진행 사항을 보고 한다. <리스트 5>와 같은 코드로 기능을 구현하고 나니, 다시 큰 의 문이 생긴다. 코드가 이벤트를 처리하는 부분과 로직 부분이 서 로 섞여 있다. 과연 이런 방식의 코드 변경은 안전한가. 만약 Select 대신 다른 함수를 사용해야 한다면? 또한, 각 소켓에 따 라 따른 작업이 필요할 수도 있다. 그렇다면 이 문제를 어떻게 해결해야 할까. 이벤트를 처리하는 부분과 로직 부분을 분리한 다면 어떨까. 우선 문제를 정리해보자. 이벤트를 처리하는 부분은 select다. select의 역할은 이벤트에 대해 Demultiplexing을 한다. 즉, 어떤 소켓에 이벤트가 발생했는지를 순차적으로 만들고 알려주는 일 을 한다(여기서 순차적의 의미는 select를 호출하면, FDSET이 라는 구조체에 해당 소켓의 이벤트가 발생했는지의 여부를 순서 대로 검사하여 알 수 있다는 것이다). 로직 부분은 당연히 실제 micro software

4 네트워크 패턴 오버뷰 <리스트 6> typedef SOCKET typedef int EVENT_HANDLE; EVENT_HANDLE; if(fd_isset( i, read_fds ) handletable_->handle_event(); return -1; class EventHandler virtual int handle_event() int ret = recv( handle_, data, size, 0 ); DoHttp10(data); return -1; ; EVENT_HANDLE get_handle() return handle_; EVENT_HANDLE handle_; class HandleProcessor virtual int handle_events() fd_set read_fds; int ret = select( max_handle_size_, &read_fds, 0, 0 ); for( int i = 0; i < max_handle_size_; i++ ) virtual int register_handle( EventHandler *_eventhandler ) if ( IsSet( handles_[_eventhandler->get_handle()] ) ) return 0; handles_[_eventhandler->get_handle()] = _eventhandler->get_handle(); handletable.insert( MyEventHandlerTable::value_type( _eventhandler- >get_handle(), _eventhandler )); return 1; private: std::map<event_handle, EventHandler *> MyEventHandler Table; EVENT_HANDLE handles_[1024]; MyEventHandlerTable handletable_; ; recv 부분과 DoHTTP10 및 DoHTTP11 부분으로 볼 수 있다. <리스트 5>의 해당 부분을 분리한 <리스트 6>의 코드를 보자. EventHandler와 HandleProcessor로 나눠져 있다. 그리고 HandleProcess 안 에 서 select를 이 용 해 이벤트를 Demultiplexing하고, 실제 작업은 EventHandler를 호출하여 처리한다. 이로써 select 이외의 다른 Demultiplexing 메소드를 사용한다면 HandleProcess만 수정하면 되고, 각 소켓에 따라 다 른 작업을 부여하고 싶다면 EventHandler 부분만 수정하면 된 다. 이런 작업에 대한 자세한 내용을 설명하는 패턴이 reactor 패 턴이다. 단순히 reactor 패턴만 배워서는 전체를 이해하기 힘들 지만, 뒤에서 다루는 몇 가지 패턴을 함께 익히면 서로 밀접하게 연관된다는 것을 알 수 있다. 자, 다시 대표를 만나러 가자. 응답성 증가를 위한 방법 독자 : 다중 사용자 처리와 HTTP/1.1 기능을 추가했습니다. (며칠 후) Reactor EventHandler Dispatch +handle_events() +handle_ +register_handler() +handle_event() <<use>> Synchronous Event Demultiplexer +select() <그림 2> Reactor Pattern owns EVENT_HANDLE DoSomethingHandler notifiles +handle_event() 프로젝트 웹서버개발 지원 운영체제 윈도우, 리눅스, 유닉스 개발툴 비주얼 C++, gcc 필요 기능 1. 일반적인 HTTP/1.0 프로토콜 처리 2. 다중 유저 처리 - Select를 사용한다. 3. HTTP/1.1 처리 고려 사항 1. 응답성 증가(thread 사용) <표 4> 응답 속도 개선을 위한 스펙 micro software

5 open report 이러한 문제점도 발생하게 되는 것이다. Worker Thread 1 Worker Thread 2 Worker Thread 3 그렇다면 이 부분은 어떻게 해결해야 할 <<get>> <<get>> 까. 항상 핵심 이유에 대해서 고민하자. 위 Request Queue 에서 문제가 되는 경우는 긴 시간을 요하 는 이벤트를 처리할 때 다음 사용자가 대 <<put>> 기하는 시간이 많다는 것이다. 그렇다면, 실제로 Reactor 부분에서는 발생하는 이 Reactor Socket Event Source 벤트를 공유 큐에 저장하고 다른 부분에 <그림 3> 응답성 증가를 위한 방법 서 이를 처리하게 한다면 문제의 상당 부 분을 해결할 수 있을 것이다. Worker Thread 1 Worker Thread 2 Worker Thread 3 << get >> :: Lock(), Unlock() Request Queue << put >> :: Lock(), Unlock() Reactor Socket Event Source <그림 4> Lock의 사용 <그림 3>과 같은 구조에서는 실제로 Reactor에서는 큐에 데이터를 집어넣기 만 하고, Worker Thread가 큐에서 하나 씩 이벤트를 끌어와 처리하므로, 고른 사 용자 응답성을 기대할 수 있다. 이처럼 이 벤트를 핸들링하는 비동기(이벤트가 언제 발생할지 모르므로) 계층과, 그 이벤트들 을 저장해두는 공유 큐 계층, 그 이벤트를 처리하는 동기 계층으로 각각 나눠서 처 리하는 것을 Half-Sync/Half-Async 패턴 이라고 한다. 이벤트를 핸들링하는 부분 대표 : 경쟁사 제품은 우리보다 훨씬 빠르던데 성능적인 개선이 의 문제는 비동기 계층만 수정하면 되고, 실제 작업을 처리하는 필요하네. 경쟁사 제품 정도의 속도를 지원했으면 하네. 사 부분은 이벤트를 처리하는 동기 계층만 수정하면 되므로 Half- 용자의 의견으로는 바로 결과가 나오지 않는다고 하는군. Sync/Half-Async 패턴을 적용하면 어느 정도는 성능 유지보수 가 편리해진다. 대표의 의견을 반영한 스펙 문서는 <표 4>와 같다. 그렇다면 <그림 3>의 구조에서는 또 다른 문제가 없을까. 공유 큐를 사용하므로 <그림 3>은 <그림 4>처럼 Locking이 꼭 들어가 먼저 경쟁사 보다 성능이 떨어지는 이유를 한번 생각해보자. 야만 한다. 그렇지 않으면 Request Queue에 접근하는 스레드가 이번 프로젝트에서 Reactor를 쓰면서 select를 이용했다. select 여러 개가 되어 여러 스레드가 동시에 Request Queue에 접근한 는 각 이벤트를 Demultiplexing해서, 순차적으로 처리할 수 있 다면 Race Condition이 발생할 수도 있기 때문이다. 도록 해준다. 여기에 문제가 숨어 있다. 예를 들어 5개의 이벤트 그러므로 Reactor에서 Request Queue에 데이터를 집어넣기 가 발생했다고 가정하자. 여기서는 select를 이용해 순차적으로 위해서라도 Lock, Unlock을 해줘야 하며 Worker Thread에서 실행할 수 했다. 그런데 두 번째 발생한 이벤트가 상당한 시간이 데이터를 가져가기 위해서는 Lock, Unlock을 호출해야만 한다. 소요되는 이벤트라고 할 때 2번을 처리하는 동안 3, 4, 5번 이벤 트는 전혀 처리되지 않는다. 따라서 3, 4, 5번째 이벤트와 관련된 <리스트 7>과 같이 Lock을 사용할 때, 현재 Request Queue 사용자는 장시간 기다려야 할 것이다. 게다가 4번 이벤트를 처리 에 아무런 데이터가 없을 경우 Worker Thread에서 데이터를 하는 데도 많은 시간이 걸린다면 5번 이벤트와 관련된 사용자는 가져오려고 한다면 어떻게 될까. 무작정 데이터가 들어올 때까 보다 더 오랜 시간을 기다려야만 결과를 볼 수 있다. 순차적으로 지 기다리도록 구현되어 있다면, DeadLock 상황이 발생한다. 만들어주는 것은 처리하기 쉽다는 장점을 가져다주지만, 반대로 왜냐하면 Lock을 획득하고 무작정 기다리는데, Reactor에서 micro software

6 네트워크 패턴 오버뷰 <리스트 7> Lock, Unlock의 사용 - Reactor - lock.lock(); requestqueue_.put( data ); lock.unlock(); - Worker Thread N - lock.lock(); requestqueue_.get( data ); lock.unlock(); Request Queue에 데이터를 집어넣기 위해서는 Lock을 획득해 야 하므로 더 이상 진행될 수가 없다. 그러므로 이런 문제 역시 해결해야 한다. 해결 방법은 여러 가지가 있을 수 있다. 먼저 현 재 Request Queue에 데이터가 있을 때만 Lock을 걸고 가져가 게할수있다. <리스트 8> Request Queue에 데이터가 있을 때만 가져가게 하는 코드 if (!requestqueue_.empty() ) lock_.lock(); requestqueue_.get( data ); lock_.unlock(); DoHTTP10(data); 다만 <리스트 8>은 Context-Switching이라는 것 때문에 문제 가 생긴다. Race Condition이 생길 가능성이 존재하기 때문이 다. 즉, requestqueue_.empty()를 검사할 때는 큐에 데이터가 존재하다가 검사가 끝난 다음 Lock을 걸기 직전 Context- Switching이 일어나서 다른 스레드에서 큐의 데이터를 가져갈 수 있기 때문이다. 그럼 다음의 코드는 어떨까? <리스트 9> 먼저 인터럽트처럼 현재의 이벤트와 관련해 알려주는 메커니즘 이 필요하다. 윈도우 쪽에는 Event가 존재하고 유닉스 계통에는 pthread_condition_t라는 것이 있다. 동작 원리는 상당히 간단하다. 먼저 put(데이터를 집어넣을 때)는 Lock을 획득하고, 데이터를 큐에 집어넣은 다음 이벤트 객 체에 Notify를 보낸다. 즉, 현재 이벤트가 발생했다는 것을 알려 주는 것이다. 그리고 get 역시 먼저 Lock을 획득하고 현재 데이 터가 비었는지를 검사한다. 데이터가 있다면 해당 데이터를 가져 오면 되고, 데이터가 없다면 현재의 Lock을 풀고 누군가가 큐에 데이터를 넣기를 기다린다(put에서의 notify()가 현재 큐에 데이 터를 넣었다는 것을 알려준다). 큐에 데이터가 들어오면 그때 작 동하면서 Lock을 다시 획득하고, 큐에 데이터를 가져온 다음 Lock을 풀면 된다. <리스트 10>과 같은 코드로 동작하게 된다. <리스트 10> Monitor Object 패턴 T get() mutex_.lock(); if ( empty_i() ) mutex_.unlock(); not_empty_.wait( &mutex_ ); T data = get_i(); mutex_.unlock(); return data; void put( const T &msg ) mutex_.lock(); put_i( msg ); not_empty_.notify(); mutex_.unlock(); lock_.lock(); if (!requestqueue_.empty() ) requestqueue_.get( data ); lock_.unlock(); DoHTTP10(data); else lock_.unlock(); Reactor <<put>> Request Queue +put() +get() <<get>> Worker Thread <리스트 9>는 프로젝트가 지향하는 목표에 만족할 만한 코드 이다. 물론 실제로 이것을 호출하는 부분에서 실패할 경우, 그 부 분을 처리하는 작업이 복잡해진다. 그리고 그때마다 다시 Lock 을 획득했다 풀어주는 것도 귀찮은 작업이다. 이를 해결하려면 Monitor Condition +walt() +notify() <그림 5> Monitor Object 패턴 Monitor Lock +Lock() +Unlock() micro software

7 open report 이런 방식을 Monitor Object 패턴이라 고 한다. Monitor Object는 아주 간단한 Lock 매니저의 역할을 하며, 이전과 가장 크게 다른 점은 DeadLock이 없어지고, get에서 데이터가 들어오기를 기다리는 동안에 put 함수를 통해 데이터를 추가할 수 있다는 것과 큐 밖에서 다른 처리를 해 줄 필요가 없어진다는 것이다. 이로 인해 처리 성능이 좀 더 향상된다. get_i, put_i 등은 Thread Specific Interface Pattern 을 적용한 것인데, 자세한 내용은 다음 시 간에 설명하도록 하겠다. <<uses>> Web Server <<uses>> <<invokes>> <<uses>> Windows NT Operating System +execute_async_operation() Asynchronous Operation +AcceptEx() +ReadFile() +WriteFile() +TransmitFile() EVENT_HANDLE Completion Handler +handle_event() <<enqueues>> <<executes>> <<Demultiplexing & Dispatches>> I/O Completion Port Asynchronous Event Demultiplexer Proactor DoSomethingHandler <<dequeues>> +GetQueuedCompletionStatus() +Handle_events() 비동기 이벤트 처리 독자 : 대표님이 말씀하신 대로 모두 수정했습니다. 대표 : 수고했네. 이제 좀 쉬게나. 독자 : 아, 그런데 좀 더 성능을 개선할 방법이 있을 듯합니다. 조금만 시간을 더 주십시오. 대표 : 그래? 그렇다면 한 번 더 시도해보게나. 이번에는 요구 조건을 변경한 클라이언트가 독자 자신이 되었 다. 여러 가지 패턴을 적용하여 성능과 구조를 개선했으나, 실제 로좀더개선의여지가있다. 항상동기적인 것보다는 비동기적 인 부분이 빠르다. 대신 프로그래밍은 더 어려워진다. 이벤트를 처리하는 Reactor의 경우 프로그램이 동기적으로 동작하게 만들 어주므로, 실제 비동기적으로 데이터를 처리하는 것보다 성능이 약간 떨어지게 된다. 프로젝트 웹서버개발 지원 운영체제 윈도우, 리눅스, 유닉스 개발툴 비주얼 C++, gcc 필요 기능 1. 일반적인 HTTP/1.0 프로토콜 처리 2. 다중 유저 처리 - Select를 사용한다. 3. HTTP/1.1 처리 1. 응답성 증가(thread의 사용) 고려 사항 2. 비동기 이벤트 처리 <표 5> 비동기 이벤트 처리 개선 <그림 6> Proactor 패턴 실제 구현 과정은 복잡하지만 개념상으로 Proactor가 Reactor 가 어떤 것인지 알고 있다면 상당히 간단하게 이해할 수 있다. Reactor에서 각 EventHandler의 handle_event()를 호출하는 것은 사용자였으나 Proactor에서는 그 역할을 Proactor가 담당 한다. 간단하게 설명하자면 select 대신 앞부분은 윈도우에서는 IOCP가 대신하게 된다(유닉스 계열에서는 I/O Signal을 통해 구현할 수 있지만 아직까지 Proactor는 윈도우 계열이 뛰어난 것 으로 판단된다 ). select는 우리가 호출할 때마다 전체를 Demultiplexing하여 하 나씩 실행시켜주면 됐지만 IOCP에서는 해당 이벤트가 발생한 개 개에 대해 비동기적으로 알려준다. 실제로 윈도우에서 IOCP는 가장 좋은 성능을 제공하는 Asyncronous Event Demultiplexer 패턴 중독증 패턴이나 템플릿 같은 것을 처음 배우는 경우 기능이나 효용성에 크게 놀란다. 그래서 모든 일을 할 때 패턴을 적용해야 한다는 생각 때문에 필 요하지 않은 부분까지도 무작정 패턴을 적용하고 보는 사례가 비일비재 하다. 윈도우에서만 돌아가는 프로그램에 다른 운영체제까지 지원하는 코드를 추가하는 것은 전혀 의미가 없다. 그런데 주변에서 이런 상황을 심심찮게 접하게 된다(사실 필자도 자주 그런 문제를 일으키는 사람 중 한 명이다). 이를 패턴 중독증이라고 부르는데, Refactoring이나 모든 책에서 주의를 요하는 Over Engineering을 일으키는 원인이다. 즉, 혼 자 살 집을 고층 빌딩으로 짓는다든지, 닭 잡는 데 소 잡는 칼을 쓴다든 지 등의 문제가 발생한다. 패턴 중독증은 패턴을 제대로 이해하지 못하는 데서 생기는 문제로 보는 것이 옳다. 패턴이 항상 옳은 최상의 해결책은 아니다. 좋은 해결책들 중 하나일 뿐이다. 그리고 패턴에도 장단점이 존재한다. 언제나 항상 좋은 것만은 아니라는 것이다. 프로그램이라는 것은 워낙 다양하기 때문에 특 정 패턴이 여기서는 아주 좋은 해결책이 될 수 있지만 반대로 다른 곳에 서는 단점으로 작용할 수 있다. 결국 진행 중인 프로젝트의 목적과 성향 을 잘 파악하고 자신만의 해결책을 적용하거나, 패턴의 장단점을 잘 이 해하고 사용해도 좋다고 생각될 때 적용해야 한다. 다양한 선택사항 가 운데 하나일 뿐이기 때문이다. micro software

8 네트워크 패턴 오버뷰 라고 보면 되겠다. 그리고 실제로 Half-Sync/ Half-Async 부분 에서 앞부분의 Reactor만 Proactor로 바꿔도 잘 동작한다. 지금까지 간략한 사례를 통해 몇 가지 중요한 패턴들을 살펴보 았다. 맛보기 정도에 불과하지만 나름대로 주의해서 사용한다면 효과는 기대 이상이다. 그럼 이러한 패턴에 대해서 자세히 알아 보자. 패턴의 종류 Wrapper Facade 패턴 Wrapper Facade 패턴을 한마디로 정의하면 Non-Object Oriented APIs를 Wrapping하는 클래스를 만드는 것이다(Non- Object Oriented APIs : 특정 기능을 제공하기 위해 운영체제 수준이나 라이브러리에서 제공하는 API 함수들을 의미한다. Socket I/O 함수라든지 스레드, 동기화 관련 함수들이 이에 속한 다). 단순히 타 운영체제에서 동작시키기 위해 #ifdef와 를 이용하여 하나의 클래스를 만드는 것만이 아니다. Non-Object Oriented APIs를 Wrapper Facade 패턴에 적용해 Wrapping 클래스를 만들면 다음과 같은 장점이 생긴다. Wrapper Facade의 Method를 호출하면 내부적으로는 API Function A와 API Function B를 순차적으로 호출하고 그 결과 를 다시 알려준다. Client <그림 7> Wrapper Facade Application 1 : method() Wrapper Facade Data Method1()... Wrapper Facade MethodN() 2 : FunctionA() <그림 8> Wrapper Facade의 동작 흐름 API Function A 3 : FunctionB() API Function A() API Function B() API Function C() API Function B 간결한 코드가 복잡한 코드보다 개발이나 유지보수가 편리 하므로 안정성이 높다. 코드가 간결하다는 것은 Non-Object Oriented APIs를 직접 사용하는 것보다 한 단계 추상화되어 있 거나, 클래스 생성자나 파괴자가 미리 작업해야 하는 전처리나 후처리 작업들을 자동으로 처리하는 등의 편리성과 효용성을 제 공한다. 다른 운영체제로 포팅이 쉬워진다. low-level APIs를 직접 적으로 사용하면 해당 부분을 모두 수정해야 하지만 Wrapper Facade 패턴으로 클래스를 만들면 해당 클래스만 같은 기능을 하도록 수정하면 된다. 이제 <리스트 11>를 보자. 소켓 주소를 나타내는 sockaddr_in 구조체와 관련해 Wrapper Facade 패턴을 적용하여 만든 CS_INET_Addr 클래스이다. Wrapper Facade 패턴을 적용하는 방법은 다음과 같다. 먼저 low-level APIs를 목적이나, 추상화 정도에 따라 구분 한다. <리스트 11>에서 CS_INET_ADDR 클래스를 보면 htons, gethostbyname, inet_addr 등의 기본적인 API를 볼 수 있다. 소 켓 어드레스 구조체에 Wrapper Facade를 적용하기 위해서는 관련 API를 조사하고 분류해둬야 한다. 프로그램의 유지보수가 쉬워진다. 기능적인 면에서 프로그램을 이해하고, 유지보수가 쉽다. low-level APIs를 바로 사용하는 것보다 클래스화하면 비슷하거 나 같은 목적에 의해 클래스화되기 때문에 이해하고 사용하기가 쉬워진다. 분류한 APIs를 하나의 기능에 맞춰 Wrapper Facade안에 넣는다. <리스트 11>의 get_ip 함수의 경우 도메인 주소를 넘겨주 면 이를 내부적으로 처리하는 인터넷 주소로 바꿔 돌려주는 기능 을 한다. 이에 필요한 API는 gethostbyname, inet_addr 등이 있 다. 이때 필수적으로 병행해야 할 작업은 생성자나 소멸자로 만 들어두면 된다. <그림 7>과 <그림 8>처럼 외부에서는 Wrapper Facade의 외 형만 볼 수 있으므로 안에서 어떤 동작을 하는지는 알 수 없다. <리스트 12>는 소켓 관련 API를 이용해 간단하게 Wrapper Facade로 만든 것이다. micro software

9 open report <리스트 11> CS_INET_Addr 클래스 #ifndef #define CS_ADDR_H CS_ADDR_H SOCKADDR_IN ) ); class CS_Addr enum CS_ADDR_TYPE addrtype_inet, addrtype_unix, addrtype_pipe ; virtual ~CS_Addr() CS_Addr() CS_Addr( CS_ADDR_TYPE _addrtype, int _addr_size ) : addr_type_(_addrtype), addr_size_(_addr_size) int CS_ADDR_TYPE get_addr_size() const return addr_ size_; get_addr_type() const return addr_ type_; virtual const void* get_addr() const = 0; virtual int get_type() const = 0; protected: int addr_size_; CS_ADDR_TYPE addr_type_; ; lass CS_INET_Addr : public CS_Addr CS_INET_Addr( WORD _port, const char *_ip = NULL, int _type = AF_INET ) : CS_Addr( CS_Addr::addrType_INET, sizeof( SOCKADDR_IN ) ) reset(); set( _port, _ip, _type ); CS_INET_Addr() : CS_Addr() reset(); void operator =(const CS_INET_Addr &_rhs) memcpy( &inet_addr_, &_rhs.inet_addr_, sizeof( virtual ~CS_INET_Addr() int get_type() const return inet_addr_.sin_family; const void *get_addr() const return &inet_addr_; void set( WORD _port, const char *_ip, int _type ) inet_addr_.sin_family = _type; if( NULL!= _ip ) inet_addr_.sin_addr.s_addr = get_ip( _ip ); else inet_addr_.sin_addr.s_addr = INADDR_ANY; inet_addr_.sin_port = htons( _port ); void reset() memset( &inet_addr_, 0, sizeof(sockaddr_in) ); protected: SOCKADDR_IN inet_addr_; DWORD get_ip(const char *_ip) struct hostent *phost; DWORD saddr; ; saddr = inet_addr(_ip); if ( INADDR_NONE == saddr ) phost = gethostbyname( _ip ); if ( phost ) saddr = ((IN_ADDR *)phost->h_addr)->s_addr; return saddr; /* cs_addr.h */ <리스트 12> API를 이용한 Wrapper Facade class CS_Socket_IO CS_Socket_IO( const CS_Socket_IO &_rhs ) if ( this == &_rhs ) return; sock_ = _rhs.sock_; addr_ = _rhs.addr_; CS_Socket_IO( const CS_INET_Addr &_addr ) if ( false == Create( _addr ) ) return; CS_Socket_IO() micro software

10 네트워크 패턴 오버뷰 bool Create( const CS_INET_Addr &_addr ) sock_ = socket( _addr.get_type(), SOCK_STREAM, IPPROTO_TCP ); memcpy( &addr_, &_addr, sizeof( CS_INET_Addr ) ); bopen_ = false; if ( -1!= sock_ ) bopen_ = true; return bopen_; CS_SOCKET get_sock() const return sock_; void set_sock(cs_socket _sock) sock_ = _sock; bool send( const char *_data, int _size, int *_sended ) *_sended = ::send( sock_, _data, _size, 0 ); if ( 0 == *_sended -1 == *_sended ) return false; return true; bool recv( char *_data, int _size, int *_recved ) *_recved = ::recv( sock_, _data, _size, 0 ); if ( 0 == *_recved -1 == *_recved ) return false; return true; void close() #ifdef _CS_WIN32_ closesocket( sock_ ); #elif defined(_cs_unix_) ::close( sock_ ); private: CS_INET_Addr CS_SOCKET bool ; addr_; sock_; bopen_; <리스트 13> Wrapper Facade 패턴 적용 예 #define #include #include #include _CS_UNIX_ <stdio.h> "cs_socket_io.h" "cs_acceptor.h" int main( int argc, char *argv[] ) CS_INET_Addr addr( ); CS_Socket_Acceptor acceptor(addr); for(;;) CS_Socket_IO sock; acceptor.accept(sock); int sended = 0; sock.send("test\r\n",6, &sended); sock.close(); 진다. 또 장대하게 Wrapper Facade 패턴이라 언급했으나 MFC의 CSocket 비슷하게 만들어 쓰는 것처럼, 나름대로 특정 기능을 쓰기 편하게 하려는 목적으로 API를 클래스로 묶는 것도 Wrapper Facade라 할 수 있다. 다시금 강조하지만 패턴이 전 부는 아니다. 패턴이 왜 필요하고 어떤 식으로 문제를 해결해야 하는지, 그리고 장단점은 무엇인지 항상 고민해야만 한다. 아울 러 해결책을 통해 더 좋은 결과물을 만들도록 노력해야 한다. 다 음 호에서는 실제 Reactor 패턴을 비롯한 몇 가지 패턴에 대해 자세히 알아보고, 해당 패턴을 응용하여 간단한 채팅 서버를 만 들자. 정리 이상우 aspen@imaso.co.kr return 1; 이를 적용하면 <리스트 13>과 같이 몇 줄만으로도 아주 간단하 게 네트워크 서버를 만들 수 있다. 단, 소스에 Wrapper Facade 패턴을 적용하지 않는다면 상당히 긴 코드가 될 수밖에 없다. 이처럼 많은 장점을 제공하는 Wrapper Facade 패턴임에도 항상 몇 단계 걸쳐 실제 API가 실행되므로 그만큼 성능이 떨어 참고자료 Pattern Oriented Software Architectur - Volume 2 GOF Design Pattern micro software

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

3232 편집본(5.15).hwp

3232 편집본(5.15).hwp 정태제 묘 출토 사초 사진 정태제 묘 출토 사초 상권 정태제 묘 출토 사초 상권 45 정태제 묘 출토 사초 하권(표지) 정태제 묘 출토 사초 하권 46 2 중기( 重 記 ) 중기( 重 記 )란 호조에서 각 관청의 회계를 감독하거나 경외( 京 外 )의 각 관청이 보유하고 있 는 국가 재산의 누수를 막기 위하여 정기적으로 작성하도록 규정한 회계장부나 물품조사서

More information

<BFBEBEC6C0CCB5E9C0C720B3EEC0CC2E20B3EBB7A120C0CCBEDFB1E220C7D0B1B3202D20C0DAB7E1322E687770>

<BFBEBEC6C0CCB5E9C0C720B3EEC0CC2E20B3EBB7A120C0CCBEDFB1E220C7D0B1B3202D20C0DAB7E1322E687770> 놀이노래이야기 학교 자료집 1. 놀이, 노래 이야기의 재미와 아름다움은 어디에 있을까? 2. 노래와 놀아요. 3. 재미있는 말놀이와 놀아요. 4. 이야기와 놀아요. 1. 옛 아이들 놀이, 노래 이야기의 재미와 아름다움은 어디에 있을까? 편해문(옛 아이들 놀이노래이야기 연구소장) 얼마 전 유치원,

More information

SYN flooding

SYN flooding Hacking & Security Frontier SecurityFirst SYN flooding - SYN flooding 공격의원리와코드그리고대응 by amur, myusgun, leemeca 2008. 09. myusgun Agenda 개요...3 원리...3 위협...4 잠깐! - 문서에관하여...4 이문서는...4 Code...4 대응방안...4 소스코드...5

More information

참고 금융분야 개인정보보호 가이드라인 1. 개인정보보호 관계 법령 개인정보 보호법 시행령 신용정보의 이용 및 보호에 관한 법률 시행령 금융실명거래 및 비밀보장에 관한 법률 시행령 전자금융거래법 시행령 은행법 시행령 보험업법 시행령 자동차손해배상 보장법 시행령 자본시장과

참고 금융분야 개인정보보호 가이드라인 1. 개인정보보호 관계 법령 개인정보 보호법 시행령 신용정보의 이용 및 보호에 관한 법률 시행령 금융실명거래 및 비밀보장에 관한 법률 시행령 전자금융거래법 시행령 은행법 시행령 보험업법 시행령 자동차손해배상 보장법 시행령 자본시장과 Ⅰ 가이드라인 개요 >> 금융분야 개인정보보호 가이드라인 참고 금융분야 개인정보보호 가이드라인 1. 개인정보보호 관계 법령 개인정보 보호법 시행령 신용정보의 이용 및 보호에 관한 법률 시행령 금융실명거래 및 비밀보장에 관한 법률 시행령 전자금융거래법 시행령 은행법 시행령 보험업법 시행령 자동차손해배상 보장법 시행령 자본시장과 금융투자업에 관한 법률 시행령 금융지주회사법

More information

chap10.PDF

chap10.PDF 10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D313939392D382E687770> i ii iii iv v vi 1 2 3 4 가상대학 시스템의 국내외 현황 조사 가상대학 플랫폼 개발 이상적인 가상대학시스템의 미래상 제안 5 웹-기반 가상대학 시스템 전통적인 교수 방법 시간/공간 제약을 극복한 학습동기 부여 교수의 일방적인 내용전달 교수와 학생간의 상호작용 동료 학생들 간의 상호작용 가상대학 운영 공지사항,강의록 자료실, 메모 질의응답,

More information

Ⅰ. 머리말 각종 기록에 따르면 백제의 초기 도읍은 위례성( 慰 禮 城 )이다. 위례성에 관한 기록은 삼국사기, 삼국유사, 고려사, 세종실록, 동국여지승람 등 많은 책에 실려 있는데, 대부분 조선시대에 편 찬된 것이다. 가장 오래된 사서인 삼국사기 도 백제가 멸망한지

Ⅰ. 머리말 각종 기록에 따르면 백제의 초기 도읍은 위례성( 慰 禮 城 )이다. 위례성에 관한 기록은 삼국사기, 삼국유사, 고려사, 세종실록, 동국여지승람 등 많은 책에 실려 있는데, 대부분 조선시대에 편 찬된 것이다. 가장 오래된 사서인 삼국사기 도 백제가 멸망한지 고대 동아시아의 왕성과 풍납토성 - 풍납토성의 성격 규명을 위한 학술세미나 - pp. 46-67 한국의 고대 왕성과 풍납토성 김기섭(한성백제박물관) 목차 Ⅰ. 머리말 Ⅱ. 한국 고대의 왕성 1. 평양 낙랑토성 2. 집안 국내성 3. 경주 월성 4. 한국 고대 왕성의 특징 Ⅲ. 풍납토성과 백제의 한성 1. 풍납토성의 현황 2. 한성의 풍경 Ⅰ. 머리말 각종 기록에

More information

초보자를 위한 C# 21일 완성

초보자를 위한 C# 21일 완성 C# 21., 21 C#., 2 ~ 3 21. 2 ~ 3 21.,. 1~ 2 (, ), C#.,,.,., 21..,.,,, 3. A..,,.,.. Q&A.. 24 C#,.NET.,.,.,. Visual C# Visual Studio.NET,..,. CD., www. TeachYour sel f CSharp. com., ( )., C#.. C# 1, 1. WEEK

More information

歯2000-09-Final.PDF

歯2000-09-Final.PDF Design Pattern - API JSTORM http://www.jstorm.pe.kr -1- java API 2000-08-14 Public 2000-08-16 Draft (dbin@handysoft.co.kr), (pam@emotion.co.kr) HISTORY (csecau@orgio.net) 2001/2/15 9 10 jstorm

More information

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt

Microsoft PowerPoint - 13 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 2.ppt 13 장소켓을이용한통신 (2) 소켓을이용한통신 (2) 함수 - recvfrom - sendto - uname - gethostname - gethostbyname - gethostbyaddr 1 1. 서론 소켓을사용하여비연결형모델로통신을하기위한함수와그외의함수 함수 의미 recvfrom 비연결형모델에서소켓을통해메시지를수신한다. sendto 비연결형모델에서소켓을통해메시지를송신한다.

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 얇지만얇지않은 TCP/IP 소켓프로그래밍 C 2 판 4 장 UDP 소켓 제 4 장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송싞및수싞 4.4 UDP 소켓의연결 UDP 소켓의특징 UDP 소켓의특성 싞뢰할수없는데이터젂송방식 목적지에정확하게젂송된다는보장이없음. 별도의처리필요 비연결지향적, 순서바뀌는것이가능 흐름제어 (flow

More information

The Pocket Guide to TCP/IP Sockets: C Version

The Pocket Guide to  TCP/IP Sockets: C Version 1 목포해양대해양컴퓨터공학과 UDP 소켓 네트워크프로그램설계 4 장 2 목포해양대해양컴퓨터공학과 목차 제 4장 UDP 소켓 4.1 UDP 클라이언트 4.2 UDP 서버 4.3 UDP 소켓을이용한데이터송신및수신 4.4 UDP 소켓의연결 3 목포해양대해양컴퓨터공학과 UDP 소켓의특징 UDP 소켓의특성 신뢰할수없는데이터전송방식 목적지에정확하게전송된다는보장이없음.

More information

vi 사용법

vi 사용법 네트워크프로그래밍 6 장과제샘플코드 - 1:1 채팅 (udp 버전 ) 과제 서버에서먼저 bind 하고그포트를다른사람에게알려줄것 클라이언트에서알려준포트로접속 서로간에키보드입력을받아상대방에게메시지전송 2 Makefile 1 SRC_DIR =../../common 2 COM_OBJS = $(SRC_DIR)/addressUtility.o $(SRC_DIR)/dieWithMessage.o

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

PCServerMgmt7

PCServerMgmt7 Web Windows NT/2000 Server DP&NM Lab 1 Contents 2 Windows NT Service Provider Management Application Web UI 3 . PC,, Client/Server Network 4 (1),,, PC Mainframe PC Backbone Server TCP/IP DCS PLC Network

More information

10주차.key

10주차.key 10, Process synchronization (concurrently) ( ) => critical section ( ) / =>, A, B / Race condition int counter; Process A { counter++; } Process B { counter ;.. } counter++ register1 = counter register1

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

<BCBAC1F6BCF8B7CA28C3D6C1BE2933C2F72E687770>

<BCBAC1F6BCF8B7CA28C3D6C1BE2933C2F72E687770> 大 巡 대학생 하계 성지순례 자 료 집 宗 團 大 巡 眞 理 會 目 次 성지순례의 취지 11 행사 일정표 12 계룡산 동학사 13 천호산 개태사 31 반야산 관촉사 41 모악산 금산사 54 황토현 전적지 92 상제님 생가 시루산 104 모악산 대원사 115 종남산 송광사 126 진안 마이산 135-1 - 도 기 ( 道 旗 ) 우주 자연의 근원적 의미가 도(

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 네트워크프로그래밍 02 장 TCP 소켓 (1) 1 목차 제 2장 TCP 소켓 1. IPv4 TCP 클라이언트 2. IPv4 TCP 서버 3. 소켓의생성과해지 4. 주소지정 5. 소켓에연결 6. 소켓을주소에바인딩하기 7. 클라이언트의연결요청처리 8. 데이터주고받기 9. IPv6의사용 2 소켓통신과정 간략화한소켓통신과정 소켓생성 TCP or UDP 소켓에주소정보할당

More information

106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float

106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float Part 2 31 32 33 106 107, ( ),, ( ), 3, int kor[5]; int eng[5]; int Microsoft Windows 4 (ANSI C2 ) int kor[5] 20 # define #define SIZE 20 int a[10]; char c[10]; float f[size]; /* 10 /* c 10 /* f 20 3 1

More information

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode] TCP Server/Client Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 TCP Server Program Procedure TCP Server socket() bind() 소켓생성 소켓번호와소켓주소의결합 listen() accept() read() 서비스처리, write()

More information

38--18--최우석.hwp

38--18--최우석.hwp 古 詩 源 < 顔 延 之 > 篇 譯 註 * 崔 宇 錫 1) 1. 序 文 2. 古 詩 源 < 顔 延 之 > 篇 譯 註 3. 結 語 1. 序 文 沈 德 潛 (1673-1769)의 字 는 確 士 이고 號 는 歸 愚 이다. 江 南 長 洲 (현재의 江 蘇 省 蘇 州 ) 사람으로 淸 代 聖 祖, 世 宗, 高 宗 삼대를 모두 거쳤다. 특히 시를 몹 시 좋아한

More information

E1-정답및풀이(1~24)ok

E1-정답및풀이(1~24)ok 초등 2 학년 1주 2 2주 7 3주 12 4주 17 부록` 국어 능력 인증 시험 22 1주 1. 느낌을 말해요 1 ⑴ ᄂ ⑵ ᄀ 1 8~13쪽 듣기 말하기/쓰기 1 ` 2 ` 3 참고 ` 4 5 5 5 ` 6 4 ` 7 참고 ` 8 일기 ` 9 5 10 1 11, 3 [1~3] 들려줄 내용 옛날 옛날, 깊은 산골짜기에 큰 호랑이 한 마리가 살고 있었습 이

More information

교사용지도서_쓰기.hwp

교사용지도서_쓰기.hwp 1. 재미있는 글자 단원의 구성 의도 이 단원은 도비와 깨비가 길을 잃고 헤매다 글자 공부의 필요성을 느끼고 글자 공부를 하게 되는 것으로 시작된다. 자칫 지겨울 수 있는 쓰기 공부를 다양한 놀이 위주의 활동으로 구성하였고, 학습자 주변의 다양한 자료들을 활용함으로써 학습에 대한 흥미를 갖고 활동할 수 있게 하였다. 각 단계의 학습을 마칠 때마다 도깨비 연필을

More information

<32303132BDC3BAB8C1A4B1D4C6C75BC8A3BFDC303530395D2E687770>

<32303132BDC3BAB8C1A4B1D4C6C75BC8A3BFDC303530395D2E687770> 조 례 익산시 조례 제1220호 익산시 주민감사 청구에 관한 조례 일부개정조례 1 익산시 조례 제1221호 익산시 제안제도 운영조례 일부개정조례 3 익산시 조례 제1222호 익산시 시채에 관한 조례 폐지조례 12 익산시 조례 제1223호 익산시 시세 감면 조례 전부개정조례 13 익산시 조례 제1224호 익산시 행정기구설치조례 19 익산시 조례 제1225호 익산시

More information

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770> 권2 동경잡기 東京雜記 동경잡기 173 권2 불우 佛宇 영묘사(靈妙寺) 부(府)의 서쪽 5리(里)에 있다. 당 나라 정관(貞觀) 6년(632) 에 신라의 선덕왕(善德王)이 창건하였다. 불전(佛殿)은 3층인데 체제가 특이하다. 속설에 절터는 본래 큰 연못이었는데, 두두리(豆豆里) 사람들이 하룻밤 만에 메 우고 드디어 이 불전을 세웠다. 고 전한다. 지금은

More information

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음 . 음운 [ㄱ] [국], [박], [부억], [안팍] 받침의 발음 [ㄷ] [곧], [믿], [낟], [빋], [옫], [갇따], [히읃] [ㅂ] [숩], [입], [무릅] [ㄴ],[ㄹ],[ㅁ],[ㅇ] [간], [말], [섬], [공] 찾아보기. 음절 끝소리 규칙 (p. 6) [ㄱ] [넉], [목], [삭] [ㄴ] [안따], [안꼬] [ㄹ] [외골], [할꼬]

More information

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록 과 임제 신해진(전남대) 1. 머리말 세조의 왕위찬탈과 단종복위 과정에서의 사육신을 소재로 한 작품은 남효온( 南 孝 溫 )의 (1492년 직전?), 임제( 林 悌 )의 (1576?), 김수민( 金 壽 民 )의 (1757) 등이 있다. 1) 첫 작품은 집전( 集

More information

민주장정-노동운동(분권).indd

민주장정-노동운동(분권).indd 민주장정 100년, 광주 전남지역 사회운동 연구 노동운동사 정 호 기 농민운동 1 목 차 제1장 연구 배경과 방법 07 1. 문제제기 2. 기존 연구의 검토 3. 연구 대상의 특성과 변화 4. 연구 자료와 연구 방법 07 10 12 16 제2장 이승만 정부 시대의 노동조합운동 19 1. 이승만 정부의 노동정책과 대한노총 1) 노동 관련 법률들의 제정과 광주

More information

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6 동경잡기東京雜記 권1 진한기辰韓紀 경상도는 본래 진한(辰韓)의 땅인데, 뒤에 신라(新羅)의 소유가 되었다. 여지승 람(輿地勝覽) 에 나온다. 진한은 마한(馬韓)의 동쪽에 있다. 스스로 말하기를, 망 명한 진(秦)나라 사람이 난리를 피하여 한(韓)으로 들어오니 한이 동쪽 경계를 분할 하여 주었으므로 성책(城栅)을 세웠다. 하였다. 그 언어가 진나라 사람과 비슷하다.

More information

조선왕조 능 원 묘 기본 사료집 -부록 : 능 원 묘의 현대적 명칭표기 기준안 차 례 서 장 : 조선왕실의 능 원 묘 제도 11 제 1부 능 원 묘 기본 사료 Ⅰ. 능호( 陵 號 ) 및 묘호( 廟 號 )를 결정한 유래 1. 건원릉( 健 元 陵 ) 21 2. 정릉( 貞 陵 ) 22 3. 헌릉( 獻 陵 )

More information

<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>

<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770> 해제 면양행견일기 沔 陽 行 遣 日 記 이 자료는 한말의 개화파 관료, 김윤식 金 允 植 (1835~1922)이 충청도 면천 沔 川 에 유배하면서 동학농민혁명 시기에 전문 傳 聞 한 것을 일일이 기록한 일기책 이다. 수록한 부분은 속음청사 續 陰 晴 史 의 권 7로 내제 內 題 가 면양행견일기 沔 陽 行 遣 日 記 로 되어 있는 부분 가운데 계사년 癸 巳 年

More information

cls46-06(심우영).hwp

cls46-06(심우영).hwp 蘇 州 원림의 景 名 연구 * 用 典 한 경명을 중심으로 1)심우영 ** 목 차 Ⅰ. 서론 Ⅱ. 기존의 경명 命 名 法 Ⅲ. 귀납적 결과에 따른 경명 분류 1. 신화전설 역사고사 2. 文 辭, 詩 句 Ⅳ. 결론 Ⅰ. 서론 景 名 이란 景 觀 題 名 (경관에 붙인 이름) 의 준말로, 볼만한 경치 지구와 경치 지 점 그리고 경치 지구 내 세워진 인공물에 붙여진

More information

0429bodo.hwp

0429bodo.hwp 친일인명사전 수록대상자 명단 친일인명사전편찬위원회 ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ 이 명단은 친일인명사전 수록대상자의 후손 또는 연고자로부터 이의신청을 받기 위해 작성 되었습니다. 이 인물정보를 무단 복사하여 유포하거나 인터넷을 통해 전 파하는일체의행위는법에저촉될수있습니다. 주요 훈포상 약어 1. 병합기념장 2. 대정대례기념장 3. 소화대례기념장

More information

6±Ç¸ñÂ÷

6±Ç¸ñÂ÷ 6 6 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 과천심상소학교 졸업증서(문헌번호 03-004) 일제강점기 과천초등학교의 유일한 한국인 교장이었던 맹준섭임을 알 수 있다.

More information

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A32831333031323120C3D6C1BEBABB292E687770>

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A32831333031323120C3D6C1BEBABB292E687770> 우리 시의 향기 사랑하는 일과 닭고기를 씹는 일 최승자, 유 준 서울예술대학교 문예창작과 강사/문학평론가 한 숟갈의 밥, 한 방울의 눈물로 무엇을 채울 것인가, 밥을 눈물에 말아먹는다 한들. 그대가 아무리 나를 사랑한다 해도 혹은 내가 아무리 그대를 사랑한다 해도 나는 오늘의 닭고기를 씹어야 하고 나는 오늘의 눈물을 삼켜야 한다.

More information

초등국어에서 관용표현 지도 방안 연구

초등국어에서 관용표현 지도 방안 연구 80 < 관용 표현 인지도> 남 여 70 60 50 40 30 20 10 0 1 2 3 4 5 6 70 < 관용 표현 사용 정도> 남 여 60 50 40 30 20 10 0 4학년 가끔쓴다 써본적있다 전혀안쓴다 5학년 가끔쓴다 써본적있다 전혀안쓴다 6학년 가끔쓴다 써본적있다 전혀안쓴다 70 < 속담 인지도> 남 여 60 50 40 30 20 10 0 1 2

More information

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾ 정보나눔 섭이와 함께하는 여행 임강섭 복지과 과장 여름이다. 휴가철이다. 다 들 어디론가 떠날 준비에 마음 이 들떠 있는 시기가 아닌가 싶다. 여행 매니아까지는 아니 지만, 나름 여행을 즐기는 사 람으로서 가족들과 신나는 휴 가를 보낼 계획에 살짝 들떠 있는 나에게 혼자만 신나지 말 고 같이 좀 신났으면 좋겠다며 가족들과 같이 가면 좋은 여행 눈이 시리도록

More information

177

177 176 177 178 179 180 181 182 183 184 185 186 187 188 (2) 양주조씨 사마방목에는 서천의 양주조씨가 1789년부터 1891년까지 5명이 합격하였다. 한산에서도 1777년부터 1864년까지 5명이 등재되었고, 비인에서도 1735년부터 1801년까지 4명이 올라있다. 서천지역 일대에 넓게 세거지를 마련하고 있었 던 것으로

More information

제주어 교육자료(중등)-작업.hwp

제주어 교육자료(중등)-작업.hwp 여는말 풀꽃, 제주어 제주어는 제주인의 향기입니다. 제주인의 삶의 손끝에서 피어나는 삶의 향기이고, 꿈의 내음입니다. 그분들이 어루만졌던 삶이 거칠었던 까닭에 더욱 향기롭고, 그 꿈이 애틋했기에 더욱 은은합니다. 제주어는 제주가 피워낸 풀잎입니다. 제주의 거친 땅에 뿌리를 내리고 싹을 틔우고, 비바람 맞고 자랐기에 더욱 질박합니다. 사철 싱그러운 들풀과 들꽃향기가

More information

01Report_210-4.hwp

01Report_210-4.hwp 연구보고서 210-4 해방 후 한국여성의 정치참여 현황과 향후 과제 한국여성개발원 목 차 Ⅰ 서 론 Ⅱ 국회 및 지방의회에서의 여성참여 Ⅲ 정당조직내 여성참여 및 정당의 여성정책 Ⅳ 여성유권자의 투표율 및 투표행태 Ⅴ 여성단체의 여성정치참여 확대를 위한 운동 Ⅵ 여성의 정치참여 확대를 위한 향후 과제 참고문헌 부 록 표 목 차 Ⅰ 서 론 . 서론 1.

More information

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E228323031362D352D32315FC5E4292E687770>

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E228323031362D352D32315FC5E4292E687770> 총선 이후 우리 교육의 방향 당 체제에서 우리 교육의 전망과 교육행정가들의 역할 박 호 근 서울시의회 의원 교육위원회 위원 서론 년 월 일 제 대 국회의원 선거가 치러졌다 선거는 바로 민의 의 반영이기 때문에 총선결과를 살펴보고 왜 이러한 결과가 나왔는가를 분석해 본 후 년 월 일을 기점으로 제 대 국회의원들의 임기가 시 작되는 상황에서 우리 교육이 어떻게

More information

목 차 營 下 面 5 前 所 面 71 後 所 面 153 三 木 面 263 龍 流 面 285 都 已 上 條 367 同 治 六 年 (1867) 正 月 日 永 宗 防 營 今 丁 卯 式 帳 籍 범례 1. 훼손 등의 이유로 판독이 불가능한 글자는 로 표기함. 단, 비정 이 가능한 경우는 ( ) 안에 표기함. 2. 원본에서 누락된 글자는 [ ] 안에 표기함. 단, 누락된

More information

639..-1

639..-1 제639호 [주간] 2014년 12월 15일(월요일) http://gurotoday.com http://cafe.daum.net/gorotoday 문의 02-830-0905 대입 준비에 지친 수험생 여러분 힘내세요 신도림테크노마트서 수험생과 학부모 600명 대상 대입설명회 구로아트밸리서는 수험생 1,000명 초대 해피 콘서트 열려 구로구가 대입 준비로 지친

More information

교육 과 학기 술부 고 시 제 20 11-36 1호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책

교육 과 학기 술부 고 시 제 20 11-36 1호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책 교육과학기술부 고시 제 2011 361호 [별책 3] 중학교 교육과정 교육 과 학기 술부 고 시 제 20 11-36 1호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책 2 와 같습니다. 3.

More information

시험지 출제 양식

시험지 출제 양식 2013학년도 제2학기 제1차 세계사 지필평가 계 부장 교감 교장 2013년 8월 30일 2, 3교시 제 3학년 인문 (2, 3, 4, 5)반 출제교사 : 백종원 이 시험 문제의 저작권은 풍암고등학교에 있습니다. 저 작권법에 의해 보호받는 저작물이므로 전재와 복제는 금지 되며, 이를 어길 시 저작권법에 의거 처벌될 수 있습니다. 3. 전근대 시기 (가)~(라)

More information

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료 통합 우리나라 ⑵ 조상님들이 살던 집에 대 해 아는 어린이 있나요? 저요. 온돌로 난방과 취사를 같이 했어요! 네, 맞아요. 그리고 조상님들은 기와집과 초가집에서 살았어요. 주무르거나 말아서 만들 수 있는 전통 그릇도 우리의 전통문화예요. 그리고 우리 옷인 한복은 참 아름 답죠? 여자는 저고리와 치마, 남자는 바지와 조끼를 입어요. 명절에 한복을 입고 절을

More information

상품 전단지

상품 전단지 2013 2013 추석맞이 추석맞이 지역우수상품 안내 안내 지역우수상품 지역 우수상품을 안내하여 드리오니 명절 및 행사용 선물로 많이 활용하여 주시기 바랍니다. 지역우수상품을 구입하시면 지역경제가 살아납니다. 즐거운 한가위 보내시고, 복 많이 받으세요! - 경기동부상공회의소 임직원 일동 - 지역우수상품을 구입하시면 지역경제가 살아납니다.

More information

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재 시 민 문서번호 어르신복지과-1198 주무관 재가복지팀장 어르신복지과장 복지정책관 복지건강실장 결재일자 2013.1.18. 공개여부 방침번호 대시민공개 협 조 2013년 재가노인지원센터 운영 지원 계획 2013. 01. 복지건강실 (어르신복지과) ::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무

More information

2

2 1 2 3 4 5 6 또한 같은 탈북자가 소유하고 있던 이라고 할수 있는 또 한장의 사진도 테루꼬양이라고 보고있다. 二宮喜一 (니노미야 요시가즈). 1938 년 1 월 15 일생. 신장 156~7 센치. 체중 52 키로. 몸은 여윈형이고 얼굴은 긴형. 1962 년 9 월경 도꾜도 시나가와구에서 실종. 당시 24 세. 직업 회사원. 밤에는 전문학교에

More information

화이련(華以戀) 141001.hwp

화이련(華以戀) 141001.hwp 年 花 下 理 芳 盟 段 流 無 限 情 惜 別 沈 頭 兒 膝 夜 深 雲 約 三 십년을 꽃 아래서 아름다운 맹세 지키니 한 가닥 풍류는 끝없는 정이어라. 그대의 무릎에 누워 애틋하게 이별하니 밤은 깊어 구름과 빗속에서 삼생을 기약하네. * 들어가는 글 파르라니 머리를 깎은 아이가 시린 손을 호호 불며 불 옆에 앉아 있다. 얼음장 같은 날씨에 허연 입김이 연기처럼

More information

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾ 사람 안간힘을 다해 행복해지고 싶었던 사람, 허세욱을 그리다 - 허세욱 평전 작가 송기역 - 서울 평통사 노동분회원 허세욱. 효순이 미선이의 억울한 죽음에 대 해 미국은 사죄하라는 투쟁의 현장에 서 그 분을 처음 만났다. 평택 대추리 의 넓은 들판을 두 소녀의 목숨을 앗 아간 미군들에게 또 빼앗길 순 없다며 만들어 온 현수막을 대추초교에 같이 걸었다. 2007년

More information

歯1##01.PDF

歯1##01.PDF 1.? 1.?,..,.,. 19 1.,,..,. 20 1.?.,.,,...,.,..,. 21 1,.,.,. ( ),. 10 1? 2.5%. 1 40. 22 1.? 40 1 (40 2.5% 1 ). 10 40 4., 4..,... 1997 ( ) 12. 4.6% (26.6%), (19.8%), (11.8%) 23 1. (?).. < >..,..!!! 24 2.

More information

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770>

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770> 제3편 정 치 제3편 정치 제1장 의회 제1절 의회 기구 제2절 의회기구 및 직원 현황 자치행정전문위원회 자치행정전문위원 산업건설위원회 산업건설전문위원 제1장 의회 321 제3절 의회 현황 1. 제1대 고창군의회 제1대 고창군의회 의원 현황 직 위 성 명 생년월일 주 소 비 고 322 제3편 정치 2. 제2대 고창군의회 제2대 고창군의회 의원 현황 직 위

More information

120229(00)(1~3).indd

120229(00)(1~3).indd 법 률 국회에서 의결된 공직선거법 일부개정법률을 이에 공포한다. 대 통 령 이 명 박 2012년 2월 29일 국 무 총 리 김 황 식 국 무 위 원 행정안전부 맹 형 규 장 관 (중앙선거관리위원회 소관) 법률 제11374호 공직선거법 일부개정법률 공직선거법 일부를 다음과 같이 개정한다. 제21조제1항에 단서를 다음과 같이 신설한다. 다만,세종특별자치시의 지역구국회의원

More information

<B5B6BCADC7C1B7CEB1D7B7A52DC0DBBEF7C1DF313232332E687770>

<B5B6BCADC7C1B7CEB1D7B7A52DC0DBBEF7C1DF313232332E687770> 2013 소외계층 독서 인문학 프로그램 결과보고서 - 2 - 2013 소외계층 독서 인문학 프로그램 결과보고서 c o n t e n t s 5 22 44 58 84 108 126 146 168 186 206 220 231 268 296 316 꽃바위 작은 도서관 꿈이 자라는 책 마을 기적의 도서관 남부 도서관 농소 1동 도서관 농소 3동 도서관 동부 도서관

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

untitled

untitled 1 hamks@dongguk.ac.kr (goal) (abstraction), (modularity), (interface) (efficient) (robust) C Unix C Unix (operating system) (network) (compiler) (machine architecture) 1 2 3 4 5 6 7 8 9 10 ANSI C Systems

More information

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt

Microsoft PowerPoint - 12 ¼ÒÄÏÀ» ÀÌ¿ëÇÑ Åë½Å 1.ppt 12 장 소켓을이용한통신 (1) 함수 - inet_addr - inet_ntoa - socket - bind - listen - accept - connect - recv -send 1 서론 파이프를사용하여통신을하기위한시스템호출 / 표준라이브러리함수 함수 의미 inet_addr 문자열형태의인터넷주소를바이너리형태로변환한다. inet_ntoa 바이너리형태의인터넷주소를문자열형태로변환한다.

More information

untitled

untitled Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 1 목포해양대해양컴퓨터공학과 2 장. TCP 소켓 네트워크프로그램설계 2 목포해양대해양컴퓨터공학과 목차 제 2장 TCP 소켓 1. IPv4 TCP 클라이언트 2. IPv4 TCP 서버 3. 소켓의생성과해지 4. 주소지정 5. 소켓에연결 6. 소켓을주소에바인딩하기 7. 클라이언트의연결요청처리 8. 데이터주고받기 9. IPv6의사용 3 목포해양대해양컴퓨터공학과

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

Microsoft Word - Network Programming_NewVersion_01_.docx

Microsoft Word - Network Programming_NewVersion_01_.docx 10. Unix Domain Socket 105/113 10. Unix Domain Socket 본절에서는 Unix Domain Socket(UDS) 에대한개념과이에대한실습을수행하고, 이와동시에비신뢰적인통신시스템의문제점에대해서분석하도록한다. 이번실습의목표는다음과같다. 1. Unix Domain Socket의사용법을익히고, IPC에대해서실습 2. TCP/IP의응용계층과전달계층의동작을구현및실습

More information

Embeddedsystem(8).PDF

Embeddedsystem(8).PDF insmod init_module() register_blkdev() blk_init_queue() blk_dev[] request() default queue blkdevs[] block_device_ops rmmod cleanup_module() unregister_blkdev() blk_cleanup_queue() static struct { const

More information

3ÆÄÆ®-11

3ÆÄÆ®-11 Chapter 11 Chapter 12 Chapter 13 Chapter 14 Chapter 15 Chapter 16 Chapter 17 C # N e t w o r k P r o g r a m m i n g Part 3 _ chapter 11 ICMP >>> 430 Chapter 11 _ 1 431 Part 3 _ 432 Chapter 11 _ N o t

More information

Microsoft Word - KPMC-400,401 SW 사용 설명서

Microsoft Word - KPMC-400,401 SW 사용 설명서 LKP Ethernet Card SW 사용설명서 Version Information Tornado 2.0, 2.2 알 림 여기에실린내용은제품의성능향상과신뢰도의증대를위하여예고없이변경될수도있습니다. 여기에실린내용의일부라도엘케이일레븐의사전허락없이어떠한유형의매체에복사되거나저장될수없으며전기적, 기계적, 광학적, 화학적인어떤방법으로도전송될수없습니다. 엘케이일레븐경기도성남시중원구상대원동

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

Chap04(Signals and Sessions).PDF

Chap04(Signals and Sessions).PDF Signals and Session Management 2002 2 Hyun-Ju Park (Signal)? Introduction (1) mechanism events : asynchronous events - interrupt signal from users : synchronous events - exceptions (accessing an illegal

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

Chapter_02-3_NativeApp

Chapter_02-3_NativeApp 1 TIZEN Native App April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 목차 2 Tizen EFL Tizen EFL 3 Tizen EFL Enlightment Foundation Libraries 타이젠핵심코어툴킷 Tizen EFL 4 Tizen

More information

슬라이드 1

슬라이드 1 Computer Networks Practice Socket 1 DK Han Junghwan Song dkhan@mmlab.snu.ac.kr jhsong@mmlab.snu.ac.kr 2012-3-26 Multimedia and Mobile communications Laboratory Introduction Client / Server model Server

More information

1.hwp

1.hwp 윈도우 멀티미디어 취약점 분석 방법론 연구 수탁기관 : 한양대학교 산학협력단 2009. 09 25,000 2008 2009(1~8월 ) 20,000 15,000 11,818 10,000 5,000-11,362 3,344 2,756 603 173 2-366 165 1 1 기업 대학 비영리 연구소 네트워크 기타(개인)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Socket Programming 1 Jo, Heeseung 학습목표 TCP/IP 프로토콜의기본개념 IP 주소와포트번호의개념소켓관련구조체와함수소켓을이용한통신프로그램을작성 2 TCP/IP 개요 TCP/IP 인터넷의표준프로토콜 5계층 (4계층) 으로구성 TCP 와 UDP 의차이 3 IP 주소와호스트명 IP 주소와호스트명 IP 주소 : 인터넷을이용할때사용하는주소로점

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

untitled

untitled 자료형 기본자료형 : char, int, float, double 등 파생자료형 : 배열, 열거형, 구조체, 공용체 vs struct 구조체 _ 태그 _ 이름 자료형멤버 _ 이름 ; 자료형멤버 _ 이름 ;... ; struct student int number; // char name[10]; // double height; // ; // x값과 y값으로이루어지는화면의좌표

More information

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

C++-¿Ïº®Çؼ³10Àå

C++-¿Ïº®Çؼ³10Àå C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include

More information

Chap7.PDF

Chap7.PDF Chapter 7 The SUN Intranet Data Warehouse: Architecture and Tools All rights reserved 1 Intranet Data Warehouse : Distributed Networking Computing Peer-to-peer Peer-to-peer:,. C/S Microsoft ActiveX DCOM(Distributed

More information

cam_IG.book

cam_IG.book 설치 안내서 AXIS P3301 고정형 돔 네트워크 카메라 AXIS P3301-V 고정형 돔 네트워크 카메라 한국어 AXIS P3304 고정형 돔 네트워크 카메라 AXIS P3304-V 고정형 돔 네트워크 카메라 문서 정보 본 문서에는 사용자 네트워크에 AXIS P3301/P3304 고정형 돔 네트워크 카메라를 설치하는 방법에 대 한 지침이 포함되어 있습니다.

More information

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal.

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 4 가지중하나. (1) 프로그램수행직후, (2) kill 명령실행직후, (3) 15 #include <signal. 학번 : 이름 : 1. 다음가정하에서아래프로그램의출력물을예측하세요. 가정 : 부모프로세스의 process id=20100, 자식프로세스의 process id=20101. int glob = 31; /* external variable in initialized data */ char buf[] = "a write to stdout\n"; int main(void)

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

<C1A634C2F720BAB8B0EDBCAD20C1BEC6ED20BDC3BBE720C5E4C5A920C7C1B7CEB1D7B7A5C0C720BEF0BEEE20BBE7BFEB20BDC7C5C220C1A1B0CB20C1A6C3E22E687770>

<C1A634C2F720BAB8B0EDBCAD20C1BEC6ED20BDC3BBE720C5E4C5A920C7C1B7CEB1D7B7A5C0C720BEF0BEEE20BBE7BFEB20BDC7C5C220C1A1B0CB20C1A6C3E22E687770> 종편 시사 토크 프로그램의 언어 사용 실태 점검 1) 2016년 2월 5일, 두 프로그램의 시청률은 TV조선 2.0%, JTBC 3.1%이다. (닐슨코리아 제공) 제18차 - 논의내용 - 1 방송사 등급 프로그램명 방송 일시 출연자 TV조선 15세 이상 시청가 강적들 2016. 1. 13(수) 23:00 ~ 00:20 2016. 1. 20(수) 23:00

More information

lecture4(6.범용IO).hwp

lecture4(6.범용IO).hwp 제 2 부 C-언어를 사용한 마이크로컨트롤러 활용기초 66 C-언어는 수학계산을 위해 개발된 FORTRAN 같은 고급언어들과는 달 리 Unix 운영체제를 개발하면서 같이 개발된 고급언어이다. 운영체제의 특성상 C-언어는 다른 고급언어에 비해 컴퓨터의 하드웨어를 직접 제어할 수 있는 능력이 탁월하여 마이크로프로세서의 프로그램에 있어서 어셈블 리와 더불어 가장

More information

<5344555FB9AEC3A2B0FA5FC3A5C0DA2E687770>

<5344555FB9AEC3A2B0FA5FC3A5C0DA2E687770> 서울디지털대학교 사이버문학상 공모 주최 : 서울디지털대학교(SDU) 주관 : SDU 문예창작학부 문학 계간 시작 후원 : 디지털문화예술아카데미 서울디지털대학교는 21세기 한국문학의 새로운 미래를 열어갈 신인작가를 발굴하 기 위해 을 공모합니다. 한국문학의 새로운 장을 열어갈 참신한 상상력을 기다리며, 독자 여러분의 많은

More information

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관 Hanbit ebook Realtime 30 C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 Safe C++ 블라디미르 쿠스퀴니르 지음 / 정원천 옮김 이 도서는 O REILLY의 Safe C++의 번역서입니다. BACK TO THE BASIC C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 BACK TO THE BASIC C++ 버그 헌팅 버그를

More information

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

Microsoft PowerPoint - 09-CE-23-윈도우 소켓 순천향대학교컴퓨터학부이상정 1 학습내용 인터넷과 TCP/IP 프로토콜 소켓의생성과해제 소켓주소표현 연결지향소켓프로그래밍 순천향대학교컴퓨터학부이상정 2 인터넷과 TCP/IP 프로토콜 순천향대학교컴퓨터학부이상정 3 인터넷구조의프로토콜계층 인터넷구조의프로토콜계층 응용계층 (application layer) 응용서비스제공 http, ftp, smtp, telnet,

More information