일단 shell에서 vim 명령을 실행해봐서 실행이 안되면 설치를 합니다.

저는 소스 설치를 하였습니다.

$ cd /tmp
$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
$ bunzip vim-7.3.tar.bz2
$ tar xvf vim-7.3.tar
$ cd vim73
$ ./configure --enable-multibyte --enable-cscope --enable-gui=no
$ make
$ make install
지우고 싶으면
$ make uninstall

아래 링크 끝에것을 적용하면 컬러가 나옵니다.
http://kldp.org/node/18698


간단히 정리하자면
.bashrc 제일 밑에 아래를 추가합니다.
alias vi='TERM=iris-ansi vim'


혹은
alias vi='TERM=dttermvim'
솔라리스에서는 아래도 된다고 합니다.
alias vi='TERM=xtermc vim'

http://blog.sdnkorea.com/blog/855?category=10
=================================================================
=================================================================
제 .bashrc 파일
# 특정 IP유저의 설정을 다르게. 자기 IP가 211.2xx.1xx.xx0 이라고 가정
if [ "(211.2xx.1xx.xx0)" = `who am i|awk '{print $6}'` ] ;then
    export LANG=ko_KR.UTF-8
    export LC_ALL="ko_KR.UTF-8"
    export LC_LANG="ko_KR.UTF-8"
    export LC_MESSAGE="ko_KR.UTF-8"
    unalias vi
    alias vi='TERM=dtterm vim'
    #alias vim='vim -T iris-ansi'
    export PS1='\e[0m[\e[1;32m\u\e[0m@\e[1;31m\h\e[0m \w \t]\n\$ '
fi

한글입력 가능하게
~/.inputrc 파일

set meta-flag On
set convert-meta Off
set output-meta On


=================================================================
=================================================================

이건 보너스로
.vimrc 파일

set sw=4 ts=4
sy on
colorscheme ron
set fileencodings=utf-8,euc-kr
map <f1>:!ctags *.h *.cpp<cr>
map <f2> :w!<cr>
map <f3> v%zf
map <f4> zo
map <f5> :25vs ./<cr>:set nunumber<cr>^Ww
map <f6> ^Ww
map <f7> O
map <f8> [i
map <f9> gd
map <f10> ''
map <f11> ^]
map <f12> ^T
set cindent
" set expandtab
set dy+=lastline
set tags=./tags,usr/include/tags
ACE를 공부하면서 해당 책을 4, 5번째 읽는중입니다.

한번씩 더 볼때마다 머리속에 좀더 와닫는 느낌을 받고 있는데요^^.

그런데 왠지 프로그램 공부법이 많이 잘못되지 않았나 하는 생각을 가지게 됩니다.

해당책은 5번정도 봤는데.. 책에 있는 내용을 보고 따라서 코딩은 1회정도밖에 안했다는겁니다.

그래서인지 잘 이해를 못하는 느낌을 받습니다.

몇몇 구간은 작은 프로젝트 때문에 여러번 보고 코딩하고 확인하고 수정하고 해서
어렵지 않게 배우게 되었습니다만..

그외에는 아직이해가 부족하거나 어렵게 생각되게 되는점이 있습니다.

그래서 인데 프로그램을 이해하는데 가장좋은방법은(일단 저에게..) 책을 보고 그것을 그대로 코딩해보고 컴파일및 실행을 꼭 해보는것이라고 생각합니다.
	// 디렉토리인지 알아냄.
	bool is_directory( const std::string & path )
	{
		DWORD ret = ::GetFileAttributes( path.c_str() );

		if( ret == INVALID_FILE_ATTRIBUTES )
			return false;

		if( ret & FILE_ATTRIBUTE_DIRECTORY )
			return true;

		return false;
	}

	// 파일 경로와 관계된 모든 부모 디렉토리를 만든다.
	bool dig_path( const std::string & fullPath )
	{
		using std::string;
		string  path = fullPath;

		// 파일경로에서 디렉토리 경로만 얻음.
		string::size_type pos = path.find_last_of( "/\\" );
		if( pos != string::npos )
		{
			path.erase( ++pos, string::npos );
		}

		// 네트워크 경로 인가? 예제) "\\192.168.0.1\test"
		pos = 0;
		if( path.compare( 0, 2, "\\\\") == 0 )
			pos = 2;

		// 상위 경로를 찾아가며 디렉토리를 순서대로 만든다.
		while( (pos = path.find_first_of( "/\\", pos )) != string::npos )
		{
			string subPath = path.substr( 0, pos++ );

			if(is_directory(subPath )==false)
				::CreateDirectory (subPath.c_str(), 0);
		}

		return true;
	}
http://studiostyl.es/schemes

여기 visual c++ 버전별 여러가지 스타일이 있다.

도구 --> 설정 가져오기및 내보내기 메뉴로 가서 설정을 적용해보자.




ACE_OutputCDR를 사용하는데 Big endian 저장이되지 않는 현상을 발견했습니다. 아무리 옵션을 바꿔봐도 되지않아 찾아보니... ACE 컴파일을 다시 해야하더군요.
$ACE_ROOT/ace/config.h 파일에 아래 내용을 추가한후 재컴파일하여 빌드하세요.
#define	ACE_ENABLE_SWAP_ON_WRITE	1	// enable swap byte_order
테스트 코드

#include "ace/cdr_stream.h" #include "ace/log_msg.h" void OutputCDR_Test( ACE_CDR::UShort id, int endian ) { ACE_OutputCDR cdr( sizeof( id ), endian ); cdr << id; ACE_HEX_DUMP( ( LM_DEBUG, cdr.begin()->rd_ptr(), cdr.begin()->length() ) ); } int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { ACE_DEBUG( ( LM_DEBUG, ACE_TEXT("\nBYTE_ORDER_LITTLE_ENDIAN\n") ) ); OutputCDR_Test( 0x1234, ACE_CDR::BYTE_ORDER_LITTLE_ENDIAN ); ACE_DEBUG( ( LM_DEBUG, ACE_TEXT("\nBYTE_ORDER_BIG_ENDIAN\n") ) ); OutputCDR_Test( 0x1234, ACE_CDR::BYTE_ORDER_BIG_ENDIAN ); return 0; }
결과값
BYTE_ORDER_LITTLE_ENDIAN
HEXDUMP 2 bytes
34 12                                              4.

BYTE_ORDER_BIG_ENDIAN
HEXDUMP 2 bytes
12 34                                              .4
ACE 기반 채팅 서버(Proactor)와 MFC기반 채팅 클라이언트입니다.

이 채팅 프로그램은  

TCP/IP 소켓 프로그래/

한빛미디어

책을 참고 하였음을 알려드립니다

클라이언트 부분은 버그 몇개(심각한 버그 포함)를 수정하여 책을 보고 작성및 소스를 참고 하였으며

서버 부분은 책과는 다르게 프로토콜을 제외한 모든 부분을 새로 작성하였으며
ACE Reactor 기반을 거처 Proactor 기반으로 변경하여 만들었습니다.

실행방법은 압축을 풀면 bin디렉토리에 ACE_ChatServer.exe를 실행시키고
ChatClient.exe 를 실행시키면됩니다.

사용포트는 9090 포트를 이용합니다.


플로우 차트와 설계 문서는 아래를 참고 하세요.

ACE 기반 채팅서버 - 서버 접속

ACE기반 채팅서버 - 대화방생성

ACE 기반 채팅서버 - 대화방 입장

채팅서버 - 대화

채팅서버 - 클라이언트 접속 종료

대기방



대화방



서버



소스및 실행파일

클라이언트 접속 종료 플로우 차트


클라이언트 접속 종료 시퀸스 다이어그램

대화 플로우 차트


대화 시퀸스 다이어그램

대화방 입장 플로우 차트


대화방 입장 시퀸스 다이어그램





소스및 실행파일
** 주의 아직 완성이 되지 않아 클라이언트 만 종료하실일이 있으면 모두 껐다 켜서 테스트하세요


대화방 생성 플로우 차트



시퀸스 다이어그램



+ Recent posts