Leopard의 X11은 Tiger시절의 X11과는 차이가 있다.

내가 이상했던 몇가지 사항은 X11.app 를 단독 실행하면 같이 뜨는 xterm을 마음대로 뜨지 않게 바꾸는게 타이거와 다르다는 사실과 xterm에서 $PATH등의 환경변수가 잘 로딩되지 않는다는 사실이다.

잘 몰랐던 사실이지만 forums.macosxhints.com의 X11관련 게시판을 둘러보면 많은 정보를 얻을 수 있다. 거기 말로는 Leopard에서는 DISPLAY를 체크해서 X윈도우가 필요한 프로그램이 접근시 launchd가 자동으로 X11을 실행한다고 한다. 경로를 제대로 표현하는 경우를 해결해서 사용할 때는 터미널에서 xterm을 커맨드로 쳐서 실행하라고 한다.

처음에 뜨는 xterm을 뜨지 않게 하려면 노을러브님의 글처럼 User agents중 하나인 org.x.X11에서 app_to_run 값을 xterm에서 다른 적절한 것으로 바꾸어주면 된다.

그리고 path_helper: sometimes Apple does kludgy, stupid things와 Mastering the path_helper utility of MacOSX란 글을 보면 레퍼드에서 경로관리를 위한 path_helper란 스크립트를 잘 설명하고 있다.

그런데 Tom 의 사이트에 가 보면 MANPATH의 문제에 대해 언급이 되어 있다. 무엇이냐 하면 MANPATH가 선언되어 있을 경우 man.conf의 설정을 무시하게 되는 것이다. 그런데 이게 왜 문제가 되는가 하면 path_helper의 경우 PATH처럼 /etc/manpath 와 /etc/manpath.d의 파일들을 기준으로 MANPATH를 만들어 버리기 때문에 man.conf의 설정이 완전 무시된다. 그래서 man.conf의 조금 지능적인 MANPATH 설정과는 거리가 있는 MANPATH가 생성되게 된다. 해결책은 한 방향으로 쭉 사용하는 것이고 man.conf를 살리기 위해서는 initial 스크립트에서 MANPATH를 해제 하도록 넣어주면 된다.
Posted by trip2me
,

TCP/IP over IEEE1394

Mac_life 2008. 7. 26. 00:18
KLDP의 ashuaria님의 글을 참고해서 맥을 사용하는 노트북의 IEEE 1394a 포트를 리눅스 데스크탑과 연결해 보았다. 글에서처럼 이상하게도 modeprobe.conf에 alias를 줘서는 IEEE1394가 ehternet장치로 등록이 되지 않았다. 이유는 eth1394모듈이 커널에 올라오지 않기 때문이었다. 그래서 결국 insmod를 이용해 글에 있는것처럼 수동으로 모듈을 올려주면 IP over IEEE 1394 가 가능했다. 리눅스 2.6.x 커널 구현때문에 DHCP를 이용할 수 없다고 하지만 이건 다른 해결책을 강구해 보아야겠다 지금 상황에서는 윈도우처럼 편하게 연결해서 쓰기는 힘들듯 하다.
속도는 대략 스펙보다는 조금 떨어지는 270MBPS정도가 나온다. 노트북이란 상황과 아무래도 속도에 최적화 되지않은 커널 모듈사용에 기인할 수도 있다.
Posted by trip2me
,
우연히 어쩌다가 지인을 통해서 조판업체에 CentOS를 설치하고 Netatalk를 설치를 하게 되었다.

개인적으로 타이거에서 CentOS에 설치한 AFP over TCP/IP로 접속하는 것은 별 문제가 없어서 원래 Netatalk 포스팅에서는 그리 설정과 참고사항에 대한 언급이 적었다. 하지만 이번에 Mac OS 9과 Mac OS X를 섞어쓰는 환경에서 하루 수십기가의 대량 자료 전송과 동시 작업자들이 작업을 하는 파일서버를 다루면서 이런저런 당황스런 경우를 겪어서 해결을 위해 이리저리 알아본 바를 여기에 포스팅한다.
다시 말하지만 지금의 포스팅은 약 20여대의 맥들이 동시에 동일한 아이디로 연결되서 여러 파일을 읽고 쓰는 Netatalk local network서버에서 설정하고 겪은 경우를 기술한다. 두서가 없는 글이라도 양해를 구한다.

일단 한국 출판업계의 숙적인 쿽3.3K 때문에 아직도 클래식맥을 사용하는 곳이 많다는 것을 새삼 느끼게 되었다. 이런 말을 하는 이유는 이 OS9와 OS X의 동시 접속 사용때문에 많은 일들이 일어나기 때문이다. 그리고 원래 netatalk 패키지는 동양언어 인코딩을 고려하고 있지 않았기 때문에 일본인이신 HAT님의 cjk패치를 해 주어야 한다. 그리고 한글사용 때문에 또 몇가지 다른 문제가 일어나게 된다.

일단 세팅을 하기 위해서는 환결설정화일이 있는 디렉토리에 있는 파일들을 살펴 보아야 한다. 설정을 하는 파일의 자세한 설명은 개인적으로 살펴 본 바 man page가 가장 충실했다. 그래도 기본 메뉴얼을 훑어보는 것은 도움이 되며 FAQ를 보면 DB를 복구하는 cnid_index라는 유틸의 사용법과 결과가 어디에 나오는지 설명이 그나마 자세히 나온다.

설정할 파일들이 몇가지 있는데
netatalk.conf - Netatalk 전체적인 설정을 해 주는 파일
afpd.conf - 파일공유를 위한 데몬을 위한 설정을 하는 파일
atalkd.conf - AppleTalk연결을 위한 설정 파일
papd.conf - 프린트공유를 하기 위한 설정파일
AppleVolumes.default - 공유를 할 마운트 포인트를 설정하는 화일
AppleVolumes.system - 화일별 특성을 지정하는 파일. 수정이 그리 필요하지는 않다.


이 중에 맥들이 공유 이름으로 AppleTalk연결을 하고 파일 서비스를 하기 위해서 AppleTalk서비스와 AFP서비스를 이용해야 하므로 수정한 파일은 netatalk.conf, atalkd.conf, afpd.conf, AppleVolumes.default, 이다.


먼저 netatalk.conf 파일을 보면
AFPD_MAX_CLIENTS=64 #동시 접속자 수를 정한다.
ATALK_NAME=`echo ${HOSTNAME}|cut -d. -f1` # AppleTalk 서비스시 보일 이름을 지정한다.

#-------- 클라이언트(맥)과 서버측 OS 인코딩처리 형식을 지정한다.
ATALK_MAC_CHARSET='MAC_KOREAN'
ATALK_UNIX_CHARSET='utf8'

# 파일서비스 접속시 인증받을 방식을 정한다.
AFPD_UAMLIST="-U uams_dhx.so"

# Netatalk 서비스 시작시 실행해 줄 서비스들을 선택한다.
ATALKD_RUN=yes
PAPD_RUN=no # 프린터 공유를 위한 서비스
CNID_METAD_RUN=yes # DBD 방식으로 db를 접근 할 때 필요하다.
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

# 백그라운드로 돌아가게 할지 설정
ATALK_BGROUND=no

# 파일공유 게스트 사용자ID 설정
AFPD_GUEST=nobody

# 환경변수 등록.
export ATALK_MAC_CHARSET
export ATALK_UNIX_CHARSET



afpd.conf의 경우는
- -transall -uamlist uams_dhx.so -nosavepassword -maccodepage MAC_KOREAN -unixcodepage UTF8
# 하나의 가상 서버에 AFP over TCP, AFP over AppleTalk를 접근가능하게 하고 PAM을 이용한 인증을 하며, 암호를 저장하지 않고, 맥과 유닉스쪽 인코딩방식을 지정한다.


AppleVolumes.default
/data "share" maccharset:MAC_KOREAN volcharset:UTF8 adouble:v2 cnidscheme:cdb veto:/lost+found/
#/data 디렉토리를 share란 이름으로 공유를 하고 각각의 문자셋을 정하고 리소스 포크 처리방식을 v2로 하고 CNID처리를 CDB라는 방식으로 하며, lost+found란 이름이 들어간 디렉토리는 숨긴다



매뉴얼을 읽어보면 기본으로 netatalk는 UTF-8을 기본 인코딩으로 지원하고 있다고 하는데 문제는 Mac OS 9의 경우 한국에서는 MAC_KOREAN을 기본 인코딩으로 사용되므로 이를 고려해야 한다. 다행히도 클래식 클라이언트에서 netatalk에 연결을 할 때 AFP2.2 이하 프로토콜을 쓰게 되므로 인코딩을 지정하라는 메시지를 보게 되므로 문제는 없다. 그리고 위 설정 화일에 화일 인코딩을 잘 설정해 놓으면 자동으로 한글 이름을 UTF-8로 바꾸어 주게 된다. 그런데 클래식과 OS X의 파일시스템에 차이가 있기 때문에 파일명 길이 제한도 다르고 특수문자의 코드도 다르기 때문에 동시에 사용하는 환경이라면 가급적 키보드에 없는 특수문자를 사용하지 않는게 바람직하다. 아니면 netatalk를 빌드할 때 --disable-afp3를 지정해서 애초에 모든 클라이언트가 AFP2.x로 접속하게 강제를 하는 방법도 있다.

또한 한가지 문제가 클래식 맥에서 사용하는 리소스 포크라는 개념이다. 이것 때문에 실제 클래식 맥을 사용하는 출판업계에서 어쩔 수 없이 netatalk를 공유 서버로 사용해야한 이유가 있다. 그런데 문제는 netatalk가 완전하지 않기 때문에 얘기치 않은 일로 인해서 저장된 데이터베이스가 오염되는 경우가 발생할 수 있다. 최악의 경우 리소스쪽 연결이 모두 깨어지고 AFP연결이 클라이언트에서 되지 않는 경우가 생긴다.
이 때 해결책을 여기저기 검색해 본 결과 체크 및 복구툴인 cnid_index란 툴을 써 보고 그래도 되지 않을 경우, 딱히 명쾌한 방법은 없지만 일단 연결이 되지 않던 공유를 연결하기 위해서 .AppleDB라는 CNID데이터베이스가 저장된 곳을 삭제해 주면 된다. 이렇게 하면 리소스 포크가 망가지게 되는데 이때는 resedit등을 이용해서 기존의 데이터 파일을 가지고 복구를 하면 된다고 한다. 나의 경우도 이런 경우가 발생해서 결국 자료를 날리는 일이 있었기는 했다. 그리고 이렇게 오염을 막기 위해서는 CNID 데이터베이스에 접근하는 방식을 지정하면 되는데 기본이 동시에 여러 사용자가 락을 걸고 쓰는 CDB에서 하나의 데몬을 통해서만 데이터베이스에 접근하는 DBD방식으로 바꾸면 되는데 속도의 감소가 있다고 한다. 그리고 데이터베이스가 망가지지 않게 하기 위해 절대 SIGKILL로 데몬을 죽이지 말고 서비스 명령을 통해서 서비스를 올리고 내리기 바란다.

이전의 설정에 맥쪽 한글 인코딩을 클래식 맥을 위해 MAC_KOREAN이라고 했는데 이것이 OS X와 같이 있는 환경에서 사소한 에러 메시지를 내는 원인이 되기도 한다. afpd는 접속한 쪽 인코딩을 인식하지 못하기 때문에 설정한 대로 인코딩을 변환하려 하기 때문에 가령 로그 메시지에서 afpd[29663]: Conversion failed ( UTF8-MAC to CH_UCS2 ) 혹은 afpd[29498]: Conversion failed ( MAC_KOREAN to CH_UCS2 ) 과 같은 에러를 볼 수 있다. 물론 둘 다 사용에 지장을 주지는 않겠지만(인코딩이 실패하면 그대로 저장한다.) 로그가 쭉쭉 쌓이게 될 수도 있다. 나의 경우 하루에 100메가 가량의 에러로그가 쌓이고 있다. 그렇다고 EUC-KR등의 다른 인코딩을 쓴다고 해서 해결된 문제도 아니다. 그래서 위에서 언급한 --disable-afp3 를 통한 강제 AFP 2.2연결을 시도해 보는 것이 짧은 파일명의 제한이 있지만 괜찮은 솔루션이 아닐까 한다. 하지만 역시나 바로 파일 시스템에 접근해 쓰기를 시도하면 역시나 에러를 낼 수 있다.

그리고 레퍼드에서 사용하는 타임머신의 경우 개발버전인 netatalk 2.1dev에서 구현중이지만 아직 제대로 서비스에 대한 구현이 되어 있지 않아서 작동이 원활히 되는지는 잘 모른다. 하지만 굳이 OS X 부터 리소스 포크를 하지 않는 이상 AFP를 이용해서 공유를 고집하지 않아도 될 듯 하다. 또한 기본적으로 .등의 문자는 hex translation이라는 방식을 통해 :2e 의 형식으로 바뀌게 되는데( 클래식맥에서 이렇게 CAP인코딩을 한다고 한다) 이를 해제하기 위해서는 AppleVolumes.default 메뉴얼을 보기 바란다. 거기에 몇가지 더 유용한 옵션들이 있다.

다른 문제가 있을 경우 netatalk홈페이지에 있는 메일링 리스트를 검색해 보는 것이 제일 빠를 듯 하다.
Posted by trip2me
,
리눅스에서 습관적으로 pkill을 사용하다가 맥에서도 당연히 있으리라고 pkill을 했지만 되지 않았다.

알고보니 pkill은 기본 유틸리티가 아니었다. 그래서 pgrep, pfind, pkill을 사용하려면 스크립트를 사용하거나 BSD계열을 위해 만든 proctools라는 유틸들을 받아서 빌드하여 사용하면 된다. proctools는 이미 macport에 포팅되어 있는 간단한 프로그램들이므로 macport를 이용해도 된다.

또 몰랐던 나의 실수는 사실 BSD계열에 killall 이란 명령이 있다는 것이다. 이 녀셕이 대략 pkill과 같은 부류의 명령이다. pgrep, pfind는 ??? 글쎄.... 아마 killall에 옵션을 주거나 다른 명령을 조합하면 될지도~
Posted by trip2me
,
scheme을 사용하기 위해 이런저런 scheme구현을 빌드하고 있다. 그중 SICP책에서 사용하는 scheme구현인 MIT-Scheme을 빌드하기 위해 최근 스냅샷을 받아서 빌드하려고 안간힘을 썼다. 처음에는 바이너리를 받아서 설치하니까 .dylib가 있는데도 이미지가 없다고 에러를 내기에 아마도 레퍼드의 동적라이브러리를 사용하기 때문이라고 판단하고 소스 빌드를 시도했다.

그런데 또 하나의 문제가 소스를 빌드할때도 역시나 sbcl처럼 자기자신의 컴파일러가 필요했다. 이런.... 쳇.

결국 한참 삽질을 하다가 이전 스냅샷 릴리즈중에 mit-scheme-20070909-ix86-apple-darwin.tar.gz 바이너리를 일단 받아서 /usr/local 아래에 모두 설치한 후 다시 최신 소스 스냅샷을 받아 빌드했다. 소스 버전이 몇가지 되는데 바이너리가 작동 된다면 그냥 Source (.tar.gz) 버전을 받아서 설치하면 된다. 굳이 portable-c버전을 받을 필요는 없다. 어차피 두 소스 다 바이너리가 설치되어 있지 않으면 빌드가 불가능하다. ㅡㅅㅡ;

레퍼드라면 이런 삽질을 하지는 않았을텐데... 왜 미리 레퍼드라고 사이트에 알려놓지 않은건지... 어제 설치한 gambit-c도 자기 마음대로 버전넘버를 prefix에 집어 넣어서 짜증나게 만들더니...
Posted by trip2me
,
몇몇 GNU유틸을 빌드하다가 /usr/local/man의 man page들이 man으로 볼 수 없다는 사실을 알았다. 그래서 구글링을 해 보니 MacOSFix missing man pages for self-installed utilities - macosxhints.com에서 언급을 하고 있더라. 알고보니 /usr/share/misc/man.conf의 설정에 원인이 있었다.

그리고 /usr/share/man/whatis 는 간단히 유틸들의 설명을 하는 whatis의 인덱싱파일인데 이게 /usr/local/share/man/whatis 에 또 있었다. 이 화일들이 몇몇 유틸들을 설치 후 업데이트가 안되는 듯 했다. Rebuild Mac OS X whatis database에서 Mac OS는 주마다 이 파일을 업데이트 하는 makewhatis가 /etc/periodic/weekly에 있는 실행이 된다고 한다. 그래서 강제로 한번 실행을 해 주고 확인을 해보니 /usr/local/share/man/whatis는 업데이트가 되지 않았다. 그래서 /etc/periodic/weekly에 있는 파일을 열어 보았더니 makewhatis를 실행하는 부분이 아래와 같았다.
if [ -x /usr/libexec/makewhatis.local ]; then
echo ""
echo "Rebuilding whatis database:"
if [ -d /usr/X11R6/man ]; then
MANPATH=${MANPATH:-/usr/share/man:/usr/X11R6/man:/usr/local/man}
else
MANPATH=${MANPATH:-/usr/share/man:/usr/local/man}
fi
makewhatis.local "${MANPATH}"
fi

결국 /usr/local/share/man 디렉토리가 빠져 있었던 것이다. 아마도 원래 Mac이 설치되면 /usr/local/share아래는 없어서 그런가 보다. 그래서 /usr/local/share/man를 두 부분에 추가하고 다시 스크립트를 어드민권한으로 시작해 주니 잘 된다.

ps. 맥에서 find대신 쓸만한 검색 툴이 두가지 있는데 하나는 locate란 녀석이고 하나는 spotlight이다. 둘 다 커맨드라인에서 사용이 가능하다. 단지 locate는 무지 빠르긴 한데 미리 인덱스 파일에서 찾는 것이라 인덱스파일의 업데이트가 주마다 되서 조금 사용시 잘 안될수도 있다.(The locate database). 그리고 makewhatis는 /usr/libexec에 있다.

또 man이 간략한 정보를 제공한다면 info는 자세한 매뉴얼을 제공하는 하이퍼링크를 지원하는 유틸인데 이것 또한 dir라는 이름의 인덱스파일을 만든다. 이것을 수정하는 유틸이 install-info라는 것인데 이것은 여기저기 /usr/local/info와 /usr/local/share/info 를 모두 검색해서 보여주는 듯 하다.
Posted by trip2me
,

emacs를 사용하기로 하고 세팅을 했다

먼저 lisp사용을 위해서 http://onlisp.blogspot.com/글들을 참고했다. 이전에 emacs는 GNU emacs 소스를 새로 다운받아서 빌드했었는데 추가로 common lisp구현을 위해서 sbcl도 macport로 설치 후 다시 sbcl소스를 받아 빌드했다. 그리고 slime도 받아서 추가하고 .emacs를 수정했다.

그런데 실행하고 나서 한글 입력이 잘 되지 않았다.

여기저기 구글링을 해 보니 설정을 ~/.emacs에 추가로 해 주어야 했다.
우선 http://emacs.kldp.org/에서

; Korean language support
(require 'cl)
(when enable-multibyte-characters
(set-language-environment "Korean")
(setq-default file-name-coding-system 'utf-8)
;; (setq default-korean-keyboard "3")
;; (setq input-method-verbose-flag nil
;; input-method-highlight-flag nil)
(set-terminal-coding-system 'utf-8 )
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
;(set-file-name-coding-system 'utf-8)
;(set-w32-system-coding-system 'utf-8)
(setq-default file-name-coding-system 'utf-8)
(setq-default buffer-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(unless window-system
(set-terminal-coding-system 'utf-8)
(when (boundp 'encoded-kbd-mode-map)
(define-key encoded-kbd-mode-map [27] nil)))

(set-selection-coding-system 'compound-text-with-extensions)
; Mail setting
(setq-default sendmail-coding-system 'utf-8))
(unless (or enable-multibyte-characters window-system)
(standard-display-european t)
(set-input-mode (car (current-input-mode))
(nth 1 (current-input-mode))
0))

을 집어 넣었다. 현재 맥에서 사용하는 UTF-8 인코딩을 쓰기 위해서인데 뭔가 중복되는 부분을 제거해도 될 듯 하다. 이렇게 설정하면 한글입력은 잘 되고 표시도 잘 된다.

그리고 또한 slime에서도 한글이 잘 되게 하기 위해 kaisyu님의 글을 참고해서 아래를 ~/.emacs에 추가했다.

;; UTF-8 인코딩을 기본으로 사용 --> 한글 symbol 사용을 위해
(setq slime-net-coding-system 'utf-8-unix)

Technorati Tags: , , ,

Posted by trip2me
,

Unix계열인 맥에서도 screen이란 다중 윈도우를 지원하는 터미널 유틸리티이다.
느린 터미널에서 출력이 많을 경우나 잠시 작업을 터미널에서 떨어뜨려 놓을때 유용한 프로그램이다. iTerm을 사용해서 자주 사용하지 않게 되긴 했지만 여전히 가끔은 유용한 경우가 있다.

그런데 사용을 해 보면 몇가지 팁을 적어둔다.

1. UTF-8 한글 입출력 설정
매뉴얼을 보면 .screenrc 에 defutf8 on 을 하면 된다고 하지만 잘 되지 않더라. 그래서 왜 그런지 이유는 잘 모르겠으나 screen시작시 '-U' 옵션을 주면 된다. 그게 결국 위의 옵션을 지정한 것과 같은것인데 왜 실행인수로는 잘 되고 환경설정파일에서는 안되는지...

2. 상태표시줄 설정.
.screenrc에 몇가지 설정을 하면 상태 표시줄을 표시해서 몇변째 스크린인지 표시되게 하면 편리하다.

defhstatus "<^En-^Et> ^EW [^EM/^Ed(^ED) ^Ec]"
hardstatus lastline

대략 이렇게 하면 된다. ^En 은 현재 창번호를 ^Et는 현재 창 타이틀을 ^EW 는 나머지 창들에 대해서 표시한다.

3. 화면 스크롤 사이즈 조절
.screenrc에 아래 내용을 설정하면 스크롤사이즈를 1000라인으로 설정하게 된다.

defscrollback 1000

스크롤이 무엇이냐 하면 스크린 내용을 마우스를 사용하지 않고 내부 버퍼에 들었던 내용을 스크롤 할 수 있게 하는 것이다. Ctrrl-a [ 을 하면 그때부터 copy mode이다. 이 상태에서 vi식의 단축키로 돌아다닐 수 있다. 그러다가 space를 눌러서 일정 영역을 선택한 후 다시 space를 누르면 내부 버퍼에 복사가 된다. 그 내용을 붙여넣기 하고 싶으면 Ctrl-a ] 하면 된다. 이동중에 빠져나오려면 Esc Esc하면 된다.

4. 스크린의 공유
screen실행시 '-x' 옵션을 이용하면 같은 사용자가 스크린을 두 터미널 창에서 동시에 나타나게 혹은 다른 사용자가 접속해 볼 수 있다.
다른 사용자가 접속해서 보게 하려면 조금 더 설정이 필요하다.
먼저 screen 실행파일에 SetUID 퍼미션을 준 상태이어야 한다.
그리고 접속을 허용할 A사용자의 .screenrc 파일에

multiuser on
addacl B

의 내용을 추가해서 다중사용자 접근이 되게 허용하고, B라는 사용자에게 권한을 주게 한다. 그렇게 설정한 상황에서 접근을 원하는 B 사용자가 'screen -r sessionowner/[[pid.]tty[.host]]'으로 접속을 하면 된다.

5. .profile 설정이 적용되지 않는다.
이전에는 필요한 alias등을 모두 .profile에 해 두고 사용을 했다. 그런데 screen은 새로운 스크린을 만들때 .profile을 읽어들이지 않아서 설정이 적용되지 않았다. 그래서 필요한 내용을 .bashrc에 두고 사용을 하면 된다. 이는 현재 사용하는 쉘이 bash이기 때문에 .bashrc에 필요한 설정을 한 것이다.

더 자세한 내용은 man page와 info
그리고 http://sdnkorea.com/blog/entry/GNU-Screen-설치-및-활용하기 을 참고하자.

Technorati Tags: , ,

Posted by trip2me
,
새로운 링크 소개 이 게시물 대신 새로 만든 프로그램을 사용하세요. 


맥을 쓰면서 가끔 불편한 구석이 있었을때가 친구는 윈도우를 쓰는데 필요한 자료를 묶어서 보내 줄 때 한글이 포함된 경로명이나 파일이 있으면 죄다 깨어져 보인다는 것이었다.

이걸 해결해 보려고 많은 시도를 해 보았었다. 유니코드를 지원하는 압축 포멧들( 7z, rar )를 써 보았지만 한글이 깨어지지는 않는데 또 첫가끝형식을 사용하는 맥의 한글이 그대로 윈도우에서 나타나버려서 가령 '연습.txt'의 경우 윈도우에서 'ㅇㅕㄴㅅㅡㅂ.txt'처럼 풀려버리는 문제가 있었다. bzip2의 경우는 화일 하나만 저장 가능하지만 글자가 풀리는 문제는 없었다. 하지만 일일이 하나씩 압축 할 수는 없고 디렉토리도 해결할 수 없다.

그래서 애플 포럼의 글도 참고해 보았고 여러 블로그를 검색해 보았는데 zip형식은 파일의 인코딩제한을 하지 않는다는 것과 파이선의 zipfile모듈은 zip으로 압축할때 내부에 저장되는 이름을 바꿔 저장이 가능하다는 것이었다.

그래서 처음에 파이선으로 경로명을 UTF-8에서 EUC-KR로 바꾸어주는 unicode모듈을 이용해서 스크립트를 만들었다. 그런데 만드는 도중에 인코딩 변환이 생각대로 되지 않고 에러를 내기에 알고보니 NFD를 사용하는 맥의 문자열을 내가 그대로 NFC를 사용하는 파이선의 인코딩 변환함수에 적용하였기 때문이었다. 구글링과 파이썬 마을 장혜식님의 답글을 통해 문제를 해결했다. 빠른 답변을 해 주셔서 고마웠다.

만든 스크립트를 사용해 보니 잘 되긴 하지만 아무래도 터미널에서 사용하는게 불편하기도 하고 압축되는 경로 사이에 압축 파일이 있을 때 자신을 제외하는 예외처리를 하지 않은 상황이라 그래도 좀 무리없이 사용하기 위해서 애플 포럼의 패치맨님 워크플로우에서 힌트를 얻어서 오토매이터 버전으로 변경을 해 보았다.

처음에 바꿀때 잘 몰랐던 사실은 오토메이터가 'get selected items'로 선택된 파일을 줄 때 모두 절대경로명이 넘어온다는 것이었다 그래서 짜 놓았던 스크립트를 조금 변경해야 했다. 또한 압축파일 중복시 새로 이름 바꾸어서 저장하는 부분도 추가하고 선택한 파일의 이름을 압축결과의 파일명이 되도록 했다.

아직 예외처리가 없어서 파일읽기 오류나 디스크 가득찰때, 모르는 기타사항에 대해 오류를 보여주지는 않지만 간단히 윈도우로 보낼 것을 압축하는데는 유용하게 사용 가능할 듯 하다.



설치는 간단히 첨부파일의 압축을 풀어서 자신의 맥버전에 맞추어 폴더안에 들어있는 파일만 ~/Library/Workflows/Applications/Finder/ 아래에 넣어 주면 설치끝~
파인더를 열고 Cmd+Shift+G 를 눌러 나온 글상자에 위의 경로를 붙여넣으면 한방에 이동할 수 있다.

사용방법은 압축을 원하는 파일이나 디렉토리를 하나이상 골라서 놓고나서 마우스 오른쪽 버튼을 눌러 컨택스트 메뉴의 Automation -> winzip을 고르면 압축을 해 준다.
winzip



ps. 타이거 유저는 파이썬버전이 낮아서 2.4 이상으로 업그레이드가 필요하다.
1.우선 최신 파이썬 mac용을 다운받아 설치한다
2.터미널을 열고나서 아래 명령을 차례대로 실행한다. 암호를 물을때 사용자암호를 입력하면 된다..
sudo mv /usr/bin/python /usr/bin/python.old
sudo cp /usr/local/bin/python /usr/bin/python


Posted by trip2me
,
지금까지는 윈도우의 원격 데스크탑이나 VNC등을 통해서 VLC를 서버측에 GUI로 띄워서 볼 영화를 서버측에서 설정해 보았는데 원격으로 접속하는게 여간 불편한게 아니었고 일일이 영화 하나하나를 열려고 하니 그것도 불편했다. 그런데 VLC 메뉴얼을 보니 GUI 없이 또는 HTTP를 통해서 조작 할 수 있었다.

HTTP로 띄울 때 커맨드라인 옵션은 --intf http 또는 -I http이다. 자세한 사항은 VLC online manual을 참고하면 된다. 여기에 보면 웹페이지 접속 호스트주소와 포트 번호를 임의로 지정하고 어드민을 정해 관리 할 수 있다.

간단히 -I http옵션을 준 웹브라우져의 vlc인터페이스는 아래처럼 생겼다. 타임슬라이드를 잘 이동할 수 있어서 여기저기 이동이 편리하다.
VLC 웹 인터페이스

또는 아예 인터페이스를 없게 하거나 텔넷으로 접속하게 하는 방법도 있다. -I dummy옵션을 주면 아무런 인터페이스 없이 그냥 콘솔에서 돌아간다. 또는 텔넷접속을 하려면 -I telnet을 주면 된다. 자신의 콘솔창에서 컨트롤을 하게 하려면 -I rc을 쓰면 된다. 앞으로 나올 0.9버전대에서는 이 인터페이스별 프로그램을 별도로 만든다고 한다.Running VLC without interface

그리고 udp또는 rtp스트리밍 옵션을 콘솔에서 더 주거나 파일을 지정하면 바로 영화를 스트리밍해 볼 수 있다.

예를들어 간단히 웹인터페이스로 접속할 수 있고 바로 영화를 UDP로 유니캐스트하는 커맨드라인 옵션은 아래처럼 줄 수 있다.
vlc "영화파일이름" --sout udp:"스트리밍을 받을 클라이언트 IP주소" -I http

ex) vlc I.Am.Sam.2001.DVDrip.XviD.AC3.5.1CH.CD1-WAF.avi -I http --sout udp:59.24.192.126

이렇게 하고 나서 클라이언트쪽에서 vlc를 띄우고 'Open network'메뉴를 선택해서 아무 설정도 없이 바로 open해서 영화를 보았다. 도움말을 참고하면 멀티캐스팅도 가능한데 설정이 좀 더 까다롭고 원거리 네트워크에서 잘 될지 모르겠다. 맥에서는 /Application/VLC.app 디렉토리에 들어 있으므로 실행파일을 소프트링크로 /usr/bin에 하나 만들어 두는것도 괜찮을듯 하다.

물론 위의 설정은 물론 VLC GUI인터페이스의 마법사를 통해서도 할 수도 있다. VLC를 이용해서 동영상 스트리밍, 동영상변환등 많은 것을 할 수 있다. 기능별로 옵션이 너무나 많으므로 기타 자세한 것은 온라인 도움말을 참고하기 바란다.

중요한 것은 이 모든 혜택이 제작자의 헌신으로 이루어지고 있고 linux, Mac, Windows에서 모두 잘 돌아간다는 것이다.!!! 잠재된 VLC플레이어의 기능을 잘 활용해 보자.
Posted by trip2me
,