삼성 메모리 (RAM) 서비스센터
삼성 메모리 (RAM) 서비스센터
    http://pcking.tistory.com/354
by 시험さま | 2012/01/09 13:31 | 컴퓨터 | 트랙백 | 덧글(0)
MinTTY : Cygwin에서 UTF-8 지원하는 터미널
[1] MinTTY : Cygwin에서 UTF-8 지원하는 터미널

새로운 Cygwin 1.7 rxvt 한글 문제 해결 alpha


위 글은 cygwin에서 rxvt를 쓰고 euc-kr 문자셋을 쓰기 위한 꼼수를 다룬 것이었다.
그런데, 알고보니 cygwin에서 rxvt 대신 쓸 수 있는 mintty라는 터미널 프로그램이 있었다
mintty는 UTF-8도 지원한다.

요즘 cygwin을 설치하면 "Cygwin Terminal" 바로가기가 만들어지는데,
바로가기는 아래의 같이 mintty를 실행하는 명령을 담고 있다.

        C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

나는 이 바로가기를 무시하고 오래전부터 쓰던 배치파일(rxvt를 실행하는 배치파일)을 이용해서
cygwin을 써 왔기 때문에 이런 프로그램이 있는 것을 모르고 있었다.

어쨌든, mintty를 통해 UTF-8을 쓰기 위해 아래와 같이 약간의 설정변경이 필요했다.

(1-1) LANG=C.UTF-8

.bashrc 등에 있는 LANG 설정을 eucKR에서 UTF-8로 바꿔준다.

        export LANG=C.eucKR ==> export LANG=C.UTF-8

(1-2) .vimrc 문자셋 설정 (fileencodings, encoding)

Re: Unicode/UTF-8 support (MinTTY) - ncursesw - Mutt, Vim
    http://cygwin.com/ml/cygwin/2010-06/msg00196.html

cygwin의 vim은 이미 UTF-8 지원에 문제가 없는 상태인데
다만 .vimrc 에서 termencoding 변수가 엉뚱하게 강제설정되어 있으면 오동작하니 조심해야 한다.

내 컴에는, 오랫동안 euc-kr로 고정해서 쓰다보니 .vimrc에 아래의 두 줄이 강제설정되어 있었는데,
이 부분을 제거하지 않으면 vim에서 UTF-8 파일을 편집할 때
한글이 보이기는 하지만 줄의 끝부분이 깨지는 현상이 있었다.

set fileencodings=euc-kr
set encoding=cp949

(1-3) 덤으로, 폰트 설정

mintty 기본폰트는 Lucida Console인데 한글이 바탕체(?)로 나와 보기에 편치 않다.
터미널에 마우스 오른쪽 버튼 클릭하면 나오는 Options 메뉴에서 설정을 바꿀 수 있다.
나는 Fixedsys로 설정해서 쓰니 보기 편했다.

설정은 ~/.minttyrc 파일에 저장되므로, GUI 안 쓰고 그냥 아래 한 줄짜리 .minttyrc 파일을 만들어도 된다.

      Font=Fixedsys



[2] 여러가지 터미널을 혼용


Cygwin 사용을 위해 프롬프트를 띄우려면 결국에는 bash가 실행된다.
cygwin의 bash는 Windows 기본 shell인 cmd에서 실행될 수도 있고,
rxvt에서 실행될 수도 있고, 이번에 새로 알게 된 mintty에서 실행될 수도 있다.

이 중에서 UTF-8을 지원하는 것은 mintty 뿐인 모양이다.
mintty를 쓸 때는 utf-8을 쓰도록 설정하고 rxvt나 cmd를 쓸 때는 euc-kr을 쓰도록 설정하면
이런 여러 실행방식을 혼용할 수 있을 것이다.

결국 실행중인 터미널 환경을 구분하여 조건화된 설정을 해야 한다.
대충 정리해보니 각 환경별로 아래와 같이 환경변수 구분이 가능했다.

    - bash over rxvt     : TERM == xterm && COLERTERM == rxvt-xpm
    - bash over mintty : TERM == xterm
    - bash over cmd   : TERM == cygwin

이 구분법을 이용해 아래와 같이 .bashrc 및 .vimrc를 설정해 보니 그럭저럭 환경별 대응이 가능한 것 같았다.
뭔가 잘못이 있을지도 모르니까 문제 생기면 알아서 고쳐 써야 한다..


(1-1) LANG=C.UTF-8

bash 실행환경이 cmd, rxvt, mintty 가운데 어떤 것인지 구분하여 LANG 설정을 하기 위해
.bashrc 등에 있는 LANG 설정을 아래와 같이 해 두었다.


# rxvt    : TERM == xterm && COLERTERM == rxvt-xpm
# mintty  : TERM == xterm
# cmd     : TERM == cygwin
if [[ "${COLORTERM}" == "rxvt-xpm" || "${TERM}" == "cygwin" ]]; then
  #export LANG=ko_KR
  #export LANG=ko_KR.eucKR
  export LANG=C.eucKR
fi


(1-2) .vimrc 문자셋 설정 (fileencodings, encoding)

.vimrc의 문자셋 설정부분을 아래와 같이 해 두면
파일 인코딩이 utf-8 이든 euc-kr 이든 모두 깨지지 않고 처리 가능했고,
터미널 환경도 utf-8이 되든 euc-kr 이 되든 잘 되었다.

fileencoding 설정은 vim에서 파일을 읽어들일때 순서대로 시도해볼 문자셋/인코딩 방식을 나열하는 것 같고
encoding 설정은 터미널에서 사용하는 문자셋/인코딩 방식을 적는 것 같다.

엉성해 보이지만 대충 잘 돌아가는 것 같다.

" bash over rxvt   : TERM == xterm && COLERTERM == rxvt-xpm
" bash over mintty  : TERM == xterm
" bash over cmd     : TERM == cygwin

" bash over (rxvt OR mintty)
if $TERM == "xterm"
  set background=dark
  if $COLORTERM != "rxvt-xpm"
    set fileencodings=ucs-bom,utf-8,euc-kr
    set encoding=utf-8
  endif
endif

" bash over rxvt
if $COLORTERM == "rxvt-xpm"
  set fileencodings=ucs-bom,utf-8,euc-kr
  set encoding=cp949
endif

" bash over cmd
if $TERM == "cygwin"
  set fileencodings=ucs-bom,utf-8,euc-kr
  set encoding=cp949
endif

by 시험さま | 2011/12/27 12:23 | 컴퓨터 | 트랙백 | 덧글(0)
VC8(VS2005) 부터 변경된 사항들(Hotfix)
VC8(VS2005) 부터 변경된 사항들(Hotfix)
    http://bit1010.tistory.com/114
by 시험さま | 2011/12/19 14:34 | 컴퓨터 | 트랙백 | 덧글(0)
Memory Support and Windows Operating
[1] Memory Support and Windows Operating
    http://msdn.microsoft.com/en-us/windows/hardware/gg487508

32-bit Windows 2000/XP/2003 등의 메모리 인식/사용 한계에 대한 자료.
정리된 표 하나 없는 서술형이지만 읽기에 편한 것 같아서 링크해 둔다.

[2] Physical Address Extension - PAE Memory
    http://msdn.microsoft.com/en-us/windows/hardware/gg487503

XP에서도 PAE가 지원되기는 하지만 XP는 PAE 켜진 상태로 인식가능한 총 실 메모리 한계가 4GB이다.

Operating systemMaximum memory support with PAE
Windows 2000 Advanced Server8 GB of physical RAM
Windows 2000 Datacenter Server32 GB of physical RAM
Windows XP (all versions)4 GB of physical RAM*
Windows Server 2003 (and SP1), Standard Edition4 GB of physical RAM*
Windows Server 2003, Enterprise Edition32 GB of physical RAM
Windows Server 2003, Datacenter Edition64 GB of physical RAM
Windows Server 2003 SP1, Enterprise Edition64 GB of physical RAM
Windows Server 2003 SP1, Datacenter Edition128 GB of physical RAM

* Total physical address space is limited to 4 GB on these versions of Windows.

PAE is supported only on 32-bit versions of the Windows operating system. 64-bit versions of Windows do not support PAE. For information about device driver and system requirements for 64-bit versions of Windows, see 64-bit System Design.

Although support for PAE memory is typically associated with support for more than 4 GB of RAM, PAE can be enabled on Windows XP SP2, Windows Server 2003, and later 32-bit versions of Windows to support hardware enforced Data Execution Prevention (DEP).


by 시험さま | 2011/12/06 15:58 | 컴퓨터 | 트랙백 | 덧글(0)
DDOS 대처방법
DDOS 대처방법
    http://suban.tistory.com/603
by 시험さま | 2011/12/02 10:17 | 트랙백 | 덧글(0)
[나도 책 쓴다]<1>전자책, 기계가 아닌 사람이 관건
'나꼼수', 무료 전자책 버전이 나왔다고?
[나도 책 쓴다]<1>전자책, 기계가 아닌 사람이 관건
    http://pressian.com/article/article.asp?article_num=60111124112003&section=04
by 시험さま | 2011/11/24 18:50 | 트랙백 | 덧글(0)
< 이전페이지 다음페이지 >