Mac OS 의 환경변수 설정
MacOS의 환경변수를 리눅스나 유닉스에서 하던 버릇대로 .profile이나 .rc 계열 파일에 하면 경우에 따라 적용이 안 될 수 있다.

사용자별 개인 환경 변수는 ~/.MacOSX/environment.plist 파일에 설정하면 (아마도 재 로그인 후에) 되는데, 버그인지 의도된 동작인지 Spotlight를 통해 접근하는 프로그램은 이것이 안 먹힌다고 한다. 시스템 전체에 통용되는 환경변수는 /etc/launchd.conf 파일로 설정한다. (재부팅 필요) 이 경우는 Spotlight에서도 잘 동작한다고 한다. 

이 두 파일은 따로 설정하지 않으면 존재하지 않는 파일이다. 터미널 쉘에서 직접 생성하던지 하는 방법으로 만들어 쓰면 된다. plist파일은 xml포맷인데 애플의 FAQ를 참고해서 작성하면 될 것 같다. launchd.conf파일은 csh에서 하듯이 setenv형식으로 입력하면 된다. export가 되는지는 나도 테스트를 못 해봤다. 내가 본 블로그에서 setenv만 해 놔서 일단 따라하기만 급급했기 때문이다. 나중에 시간되면 export도 가능한지 확인해볼 생각이다.

약간 부연 설명을 하자면 리눅스는 프로세스가 shell에서 시작하는 것으로 추측이 된다. 그래서 X프로세스도 쉘에서부터 시작하기 때문에 그 환경변수도 그대로 넘어오는 것이 아닌가 싶다. 반면에 맥오에스는 파인더에서 실행되는 프로세스는 쉘을 안 거치고 WindowServer 에서 시작한다고 한다. 그렇기때문에 직접 터미널을 띄워서 실행한 경우를 빼면 profile과 rc파일에 설정한 환경변수가 안 먹히게 된다. 하지만 spotlight에서 실행시킬 때는 WindowServer를 안 거치나보다. 맥오에스의 모든 프로세스의 실제 부모 프로세스는 launchd 라고 하더라. 그래서 /etc/launchd.conf 에 설정을 한다고 한다. 

최초의 내용은 http://www.dhptech.com/node/22 에서 봤고 이 쓰레드의 링크를 통해 알아낸 http://www.digitaledgesw.com/node/31 에서 더 자세한 내용을 찾을 수 있었다.


애초 시작은 eclipse에서 System.getenv() 메써드를 실행했을 때 null을 반환하길래 터미널에서 직접 컴파일해 실행해보니 잘 나오는 거였다. 그래서 이클립스 버그인 줄 알고 계정까지 등록해서 버그 리포트를 하려는 찰나, 샘플로 넣을 코드의 환경변수가 나 혼자만 쓰는 거라 모든 사람의 컴퓨터에 다 있을법한 PATH를 넣었는데, 그걸 가지고 실행하니 값이 나오더라ㅡ.ㅡ; 그런데 나온 결과가 내가 설정한 내용과 달리 시스템 처음 깔 때 기본으로 잡힌 내용만 나와서 부랴부랴 더 조사해보니 내가 삽질할 뻔 했다는 것을 알았다. 

사실은 이미 getenv가 내가 예상했던 메써드가 아닌가 싶어서 다른 삽질로 코드를 구현해 놨었다ㅡ.ㅡ;; 그거를 다시 getenv써서 하는 것으로 고쳐야한다.

-------------
내용 추가 : 포스트를 쓰고 나서 다른 문제를 발견했다. launchd.conf나  environment.plist에서 정의한 환경 변수는 외부에서 ssh로 접속할 경우 적용이 안 된다. 이것도 나름대로 문제다. 어찌해야할까.
by 하야로비 | 2009/03/13 18:05 | MacOS | 트랙백 | 덧글(0)
JEUS의 내장 웹서버 기본 포트번호 변경
일 때문에 한 대의 머신에서 JEUS와 JBOSS를 동시에 띄워야할 일이 생겼다. 그런데 이 두 놈이 모두 8080포트를 차지하려고 하는 것이다. 그러다보니 당연히 먼저 실행해서 포트를 가져간 놈만 부팅이 되 버린다. 그래서 어느 쪽이던지 기본 포트를 바꾸려고 하려다보니 양쪽 매뉴얼이 다 불친절해서 포트번호 바꾸는 것을 안 가르쳐주더라.

그래도 영어만으로 소통해야하는 JBOSS보다는 제우스가 좀 더 친절할 거 같아서 문의를 했고 그 답을 얻었다.
$JEUS_HOME/webserver/config/ws_engine.m

이 파일에서 포트를 바꾸면 된다. 물론 이 포트만 바꾼다고 제대로 두 개를 띄울 수 있는 것은 아니다. 다른 서비스에서도 포트 충돌이 나기 때문에 그것들도 모두 다른 포트로 설정해 주어야한다. 하지만, 천릿길도 한 걸음부터라고 일단 기본부터 해결했으니 다른 것도 하나하나 고쳐봐야겠다.
by 하야로비 | 2009/03/10 14:09 | LINUX | 트랙백 | 덧글(0)
subversion에서 파일 ignore하기
cvs 에서 하는 것보다 약간 더 귀찮아보인다.

$ svn propset svn:ignore {ignore-pattern} .

이 명령은 현재 디렉토리에서 해당 패턴을 가진 파일들을 무시한다는 의미이다. 파일 패턴이라 *와 ?등이 먹힐 것이다.
문제는 하나의 패턴으로 다 지정할 수 없는 경우이다. 예를들어 maven으로 관리하는 프로젝트를 이클립스로 사용할 때 중간 생성파일인 .project , .classpath, .settings, target 을 모두 무시하려고 하는데 패턴으로는 도저히 답이 안 나온다. 파일 하나씩 순차적으로 svn을 실행하면 앞의 명령을 덮어써 버린다.

이 경우는 해당 파일 목록을 한 줄에 하나씩 담은 텍스트파일을 하나 만들고 나서 svn에서 그 파일을 읽어서 무시 목록을 만들도록 하면 된다.

$ svn propset svn:ignore -F ignore.txt .


svn자체에서 무시하는 방법은 svn의 설정파일에서 하면 된다.
global-ignores = *.class *.o
이 파일은 설치한 플랫폼에 따라 /etc/subversion/config에 있을수도 있고 다른 곳에 있을 수도 있다. 아예 없을 수도 있더라. 
아니면 자기 계정에 있는 파일만 고치면 자신의 계정에 설정할 수 있다.  ~/.subversion/config를 고치자. 
by 하야로비 | 2009/03/02 13:45 | LINUX | 트랙백 | 덧글(1)
프리셀 99연승

시작은 단순했다.

어느날 밤 야근하면서 당시 팀장님 컴퓨터를 보니 프리셀이 켜져 있는 것이었다. 전적을 보니 승률이 80퍼센트 초반인가 후반인가 그랬다. 내가 프리셀은 원래 다 깰 수 있는 것이니 95%까지는 해야죠. 라고 놀렸었나... 하여간 좀 된 일이라서... 팀장님은 승률보다는 연승 목표를 세우고 있었다. 여하튼 그 후 팀도 바뀌고 몇 달이 더 지나고 또 다른 야근으로 심신이 피곤할 때 그 때 일이 생각나 99연승을 해 보려고 덤볐는데...

생각보다 어려웠다. 처음에 59연승 한 번 한 뒤로는 계속 미끄러져 그 이상 나오지도 않았다. 평균 승률도 91%대에서 머무는 것이다. 가끔 연승 많이 하면 92%올라갔다가 한 번 지면 다시 91로 떨어지고 그랬다. 윈도 프리셀은 반올림값을 표시하기 때문에 실제 승률은 92%를 못 넘겼겠지.

얼마전 하드 날아간 기념으로 윈도 다시 깔고 새로운 마음으로 한 덕을 본 건가... 어쩌다보니 한 번도 안 지고 99연승까지 오게 되었다.


일차 목표는 달성했으니 이제 그만둘까... 아니면 새로운 목표를 만들어서 도전할까... 그런데 뭔가 도전과제를 만들면 근무시간에도 지장을 주는 일이 생기니 좀 여유있게 하는게 필요할 거 같다.

확 999연승을 목표로 잡아볼까. 이건 앞으로 한 번도 안 진다고 해도 올해안에는 안 되겠네.


-------------------

처음 포스트 올리고 몇 시간 후, 1승을 더 하고 딱 100연승 만들고 나서 1패가 생겼다.
by 하야로비 | 2009/02/23 14:40 | 끄적끄적 | 트랙백 | 덧글(4)
맥오에스에서 X 사용하기
1. 시스템 환경설정에서 인터넷&네트워크 그룹의 공유 패널에 들어가서 원격 로그인을 활성화시킨다.


2. /private/etc/ssh_config 파일에 ForwardX11 yes 를 추가한다. (아마도 터미널에서 해야 이 디렉토리가 보이겠지)

3. 터미널에서 xhost + 를 쳐서 실행시킨다. 끝이다.

간만에 맥오에스 다시 설치하고 한동안 X 쓸 일 없어서 놔두었었다가 방법을 까먹어 이틀을 헤멘 것 같다.
by 하야로비 | 2009/02/16 10:30 | 미분류 | 트랙백 | 덧글(0)


< 이전페이지 다음페이지 >