타이거를 설치하고 사용한지 2달이 넘어가고 있다. 평소에는 가끔 퀵실버랑 사파리가 말도없이 죽는 경우를 빼고는 만족하면서 사용하고 있다.

그런데 요즘 들어 부쩍 맥이 혼자 가만히 있다가 디스크를 컴퓨터거 버벅이도록 읽는 괴현상이 일어났다. 이러다가는 조만간 노트북 하드디스크를 저세상으로 보낼 것 같아서 무슨 조치를 취해야겠다는 마음이 들었다. 원인을 알아내려고 부하가 높은 프로세서를 살펴본 결과 mds 프로세서가 원인중의 하나로 의심되었다. 구글링을 한 결과 위의 프로세스는 스팟라이트의 관련 프로세스라고 한다.

그래서 결국 요즘 잘 쓰고 있지 않는 스팟라잇을 일단 꺼 두기로 하고 구글링한 결과 아래처럼 설정파일을 고치고 커맨드에서 mdutil이란 프로그램을 이용해 스팟라잇 인덱싱을 중단시키면 된다.
/etc/hostconfig

파일을 아래처럼 수정하고
AFPSERVER=-NO-
AUTHSERVER=-NO-
AUTOMOUNT=-YES-
CUPS=-AUTOMATIC-
NFSLOCKS=-AUTOMATIC-
NISDOMAIN=-NO-
TIMESYNC=-YES-
QTSSERVER=-NO-
WEBSERVER=-NO-
SMBSERVER=-NO-
SNMPSERVER=-NO-
SPOTLIGHT=-NO-
CRASHREPORTER=-YES-


그리고 mdutil을 root 권한에서
mdutil -i off /
mdutil -E /

하면 스팟라이트를 위한 인덱싱을 앞으로는 하지 않게 된다.
원래대로 되돌리려면 수정한 파일을 YES로 하고 mdutil을 이용해
mdutil -i on /

하면 된다.

다른 방법도 있는거 같은데 나는 이게 잘 되는 거 같아서 만족한다.

이 수정한 방법의 출처는 10.4: Completely disable Spotlightwww.macintouch.com이다.

레퍼드는 좀 더 다른 방법으로 쉽게 끌 수 있는듯 하다.
그리고 레퍼드의 스팟라잇은 실제 더욱 내부 기능적으로 향상되었다고 한다.
구글 데스크탑이 타이거에서는 스팟라잇 인덱싱을 이용할 수 없었는데 레퍼드는 가능하게
보완이 되었다고 어디선가 들었던 것 같다.

레퍼드를 쓰고 싶은 생각이 조금은 있지만 아직 타이거를 쓴다고 많이 아쉬운 것은 없다.
Posted by trip2me
,
사용자 삽입 이미지
사용자 삽입 이미지
하루종일 삽질하면서 명예의 전당에 내 아이디를 올렸다.
이제 SIS시험 칠 때 50% 할인 받을 수 있다 ㅠ_ㅠ;
Posted by trip2me
,
airport - the Little Known Command Line Wireless Utility의 글을 우연히 network stumbler를 찾다가 검색하게 되었다.

글에서는 숨겨진 이 airport란 툴을 /usr/sbin 에 링크로 가져다가 놓는 내용과 이를 이용해 정보를 얻는 간단한 예제가 있다.

우선 아래 명령을 실행해서 링크를 만든다. 관리자의 암호가 한번 필요하다. (아래 명령은 한줄짜리이다. 세줄이 아니다.)
sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport

링크를 만들고 나서, 가령
airport -s

명령을 내리게 되면 나의 경우
7 Infrastructure networks found:
SSID Security Ch Sig Vr ID IE BSSID WPA (Auth[]), (Cipher[])
CA_LAB 6 -54 -1 0 0 00:18:39:2b:df:e0 0 (0,0,0,0), (0,0,0,0)
comeng 1 -81 -1 0 0 00:0d:0b:11:bf:1f 0 (0,0,0,0), (0,0,0,0)
FON_AP 2 -32 -1 0 0 00:58:84:28:51:99 0 (0,0,0,0), (0,0,0,0)
knu-ap 11 -78 -1 0 0 00:07:40:da:ec:5b 0 (0,0,0,0), (0,0,0,0)
knu-ap00 1 -53 -1 0 0 00:12:0e:2d:bd:c8 0 (0,0,0,0), (0,0,0,0)
MyPlace WEP 2 -32 -1 0 0 00:18:84:18:51:9a 0 (0,0,0,0), (0,0,0,0)
VRLab-wireless 11 -79 -1 0 0 00:50:18:4d:df:8e 0 (0,0,0,0), (0,0,0,0)

여기서 3번째 컬럼 값인 Sig를 보면 수신 감도에 대한 정보를 함께 얻을 수 있어서 자신이 stumbler를 사용하지 않고 간단히 AP들의 상태를 보고자 할 때 이용할 수 있으리라는 생각이 들었다.

이런 저런 network stumbler를 설치해 보았는데 너무 버벅이고 쓸데없이 네트웍을 느리게 만드는 단점이 있어 이 툴이 내게는 적당한 stumbler가 될 듯 하다.

airport -h 로 가능한 옵션을 보고 사용하면 된다.
나의 경우는 -S 옵션으로 가능한 AP를 찾고 -I옵션으로 현재 연결 상태를 보는데 주로 사용한다.

추가로 알게 된 유틸리티가 있는데 메뉴막대의 airport표시하는 아이콘에 통합되어 위의 airport프로그램 정보를 표현해주는 WiFind 란 프로그램이 있다. 인터페이스는 이게 더 이쁘다.




이것 말고 위젯으로 무선랜 신호를 보여주는 것도 있다. airport Radar




Macguyver: Toggle Airport Power On/Off with AppleScript 에 가보면 다른 macport의 airport유틸리티와 애플 스크립트를 이용해서 airport전원을 켜고 끄는 것을 할 수 있다. 일단 airport프로그램을 받고 패스에 둔 다음 사이트의 애플 스크립트를 애플스크립트에디터로 저장해서 퀵실버 등을 이용해 스크립트를 실행하면 바로 전원을 켜고 끌 수 있다.

macosxhints.com - Set system and network prefs from the Terminal 에서는 커맨드라인에서 네트워크 설정을 변경 할 수 있는 유틸을 두개 소개하고 있다. 이것은 Apple remote를 설치해야 생긴다고 한다.
Posted by trip2me
,
사용자 삽입 이미지

ssh 연결 원격설치 화면

오랜만에 실습실 바닥에 버로우 해 있던 SPARC 두대를 꺼냈다.
한대는 Ultra 1 UltraSPARC II 167MHz 768MB RAM, 2GB, 4GB SCSI HDD 가 달려있고
다른 한대는 Ultra 10인데 270MHz에 512MB인가에 20GB IDE HDD가 달려있다. 물론 둘 다
D-SUB 출력이 가능하다. Ultra 1 은 젠더를 이용해서...
더 빠르고 그나마 업그레이드가 용이한 Ultra 10은 창현이 쓰라고 주고
애물단지 같은 Ultra 1은 내가 지금 데비안 설치해보고 있다.
놀라운 사실은 이 컴퓨터가 구입당시 1500만원가량 하던 녀석인데 그 98년 당시 64비트 씨피유가 달려 있다는 것!!!! 헐~~~
설치 옵션 중에 SSH를 이용한 원격 설치가 있기에 해 놓고 도서관 와서 이렇게 원격으로 설치해가면서
남는 시간에 책보고 이러는 중이다.
아까 한번 설치 했는데 2GB하드가 조금 좁기는 좁은듯 하다.
절대 X윈도우나 그래픽이 들어가는 그놈들이나 KDE 관련 패키지는 손대지 못할 듯 하다.
실제 워낙 느리기도 하고 ^^.
하드 하나가 4GB라서 거기에 설치 해 보려고 하니 하드가 좀 안 좋은가 보다.
파티셔닝 할때 300MB정도 밖에 데비안이 잡지를 못한다.
일단 다른 하드에 설치하고 나서 디스크를 직접 잡아봐야겠다.

ps. 시험 끝나니 이런 삽질을 하는구나.
Posted by trip2me
,
서브버전으로 svn commit시 영어 이외의 언어를 사용하고 완료를 할 경우 아래와 같은 메시지가 출력되었디

svn: Commit failed (details follow):
svn: Can't convert string from native encoding to 'UTF-8':

사용자 삽입 이미지

이유는 간단하다.
.inputrc 파일을 수정해서 한글이 나온다 하더라도
실제 로케일 설정이 C 로 되어있었던 것이었다.
그럴 경우 서브 버전이 한글을 인코딩하지 못하고 저런 메시지를 출력하게 된다.
간단히 로케일 설정을 해 주면 submit할때 영어 이외의 문자를 사용가능하다.

export LANG=en_US.UTF-8을 하거나 export LC_CTYPE=en_US.UTF-8 만 설정하면 더이상 svn이 불만을 토로하지 않는다.

사용자 삽입 이미지
Posted by trip2me
,

이 프로그램은 다수의 컴퓨터가 소프트웨어적으로 하나의 키보드와 마우스를 공유하도록 해 주는 툴이다.


왼쪽이 윈도우 오른쪽이 리늑스가 설치된 각각의 컴퓨터가 돌아가는 상황이다.


찾아보면 다른 상용 프로그램이나 open-soruce프로그램이 많다.
하지만 개인적으로 시너지를 사용하는 이유는
1. 공개 소프트웨어다. ㅡ_ㅡ;
2. Windows, Linux, Mac OS를 모두 지원한다. 즉 왼쪽에 Window 오른쪽에 MacOS (현재 글쓰는 상황)이 가능하다는 것. 상용 프로그램들이 이 기능을 지원하지 않는 경우가 대부분이다.
3. 적어도 다른 운영체제끼리 클립보드(택스트) 공유가 (인코딩 문제없이) 된다. (상용은 파일공유도 되지만 안되어도 괜찮다. nfs나 samba가 있다. ㅋ)

설치는 설치라 해 봐야 그냥 클라이언트와 서버측 실행화일 두개를 다운받는 것이 전부다.

 윈도우는 Synergy 홈페이지에서 윈도우용 GUI 버전을 받으면 된다. 리눅스나 맥의 경우는 커맨드라인 툴이라서 SynergyKM, QuickSynergy, Ksynergy같은 프론트엔드를 이용하면 설정을 직관적으로 할 수 있다.
 
시너지가 작동하는 방식을 간단히 이해하면 설정도 쉽게 할 수 있다. 일단 키보드 마우스가 실제 달린 컴퓨터가 시너지 서버측이 된다. 마우스 커서가 어느 한 화면에 있다가 다른 화면으로 넘어가면 시너지서버가 모든 키보드 마우스 입력을 다른 컴퓨터쪽으로 전달하고 이를 다른쪽 컴퓨터 시너지 클라이언트가 받아서 입력을 해 주게 되는것이다. 그래서 원하는 만큼의 컴퓨터를 클라이언트로 서버에 접속하면 키보드 마우스 공유가 된다.

 설정을 편리하게 하려면 위에서 언급한 프론트엔드를 사용하면 된다. 아래는 실제synergy.conf파일의 간단한 설정 내용.


그런데 운영체제별로 작동상의 사소한 버그가 조금씩 있다.

윈도우에서 설정하는 내용은 한동훈님의 한빛네트워크 기사를 읽어보면 그림으로 잘 나와있다. 다른 플렛폼도 어차피 GUI 설정이 비슷할것이다.

사용법은 jwmx님의 블로그를 가보면 잘 나와있다.

업데이트) 최근에 알게 된 거지만 Input Director라는 윈도우 전용의 다른 프로그램도 좋다는 말이 있다.
Posted by trip2me
,
대부분의 프로토콜이나 화일들은 자신만의 특정 헤더 부분이 있다.
어디서부터 어디까지는 무슨 데이터이고... 이런 것들.

그런 헤더의 내용을 편리하게 가져오기 위해서 C/C++에서는 struct라는 구조체를 사용하여 불러오는 경우가 많다. 그렇게 하면 나중에 클래스의 어트리뷰트처럼 '구조체.필드이름'으로 접근할 수 있으니까.

그런데 여기서 한번 생각해 보아야 할 것이 과연 저런 구조체를 컴파일러는 어떻게 내부적으로 구현을 해 놓을까? 란 것이다.

컴퓨터 구조나 운영체제 시간에 메모리의 alignment라는 것을 들어 본 적이 컴공관련 학우라면 있을것이다.

워드단위로 메모리 입출력을 수행하는 중앙처리장치가 빠르게 값을 가져 올 수 있도록 하기 위해서 중앙처리장치의 처리단위 워드크기 경계로 맞추어 값을 배치하게 하는 것이 바로 'word alignment'이다.

프로토콜 헤더 정의를 잘 해서 프로그램에서 읽어온 값이 정작 쓰레기로 나오는 이유가 바로 저녀석 때문이다.

가령 CPU의 기본 처리 워드 크기가 32비트 ( 32bit CPU이라면... ) 일 경우 4바이트가 한 워드가 된다.

이러한 상황에서 비트맵파일의 헤더부분인 아래의 구조체는

typedef unsigned short WORD;
typedef unsigned int DWORD;

typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // 'BM'이라는 identifier를 가짐.
DWORD bfSize; // 바이트단위 전체 파일크기
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits; // 파일의 첫위치에서 영상데이터 까지의 거리
} BITMAPFILEHEADER;


에서 WORD는 2바이트이고 DWORD가 4바이트라고 할 경우 bfType가 2바이트이므로 워드 정렬을 위해서 2바이트가 더 삽입되어 빈공간이 추가된 후 bfSize가 위치하게 되므로

sizeof(BITMAPFILEHEADER) 를 하면 14를 예상하겠지만 실제 16이 나온다.
궁금하면 해보기 바란다. 물론 CPU의 기본 워드단위에 따라 어찌 다르게 나올지도 모른다.

결론적으로 위의 상황에서는 도저히 프로토콜 헤더를 구조체를 이용해서 읽어오는게 불가능해 진다.
이를 해결하기 위해 컴파일러에게 워드 정렬을 다르게 하라고 지시를 해야한다.

이를 하는 지시어가 #pragma pack() 이다.
C/C++의 Standard에는 들어가는 사항이 아니지만 대부분의 컴파일러에서 사용가능하다.
컴파일러마다 조금씩 다른 용법을 가지고 있겠지만, 기본적으로

#pragma pack() 은 원래의 컴파일러 기본 워드정렬로 돌아오는 지시어이고
#pragma pack(n) 을 사용하면 (n은 2의 거듭제곱수. 1,2,4,8...) 지정한 n바이트로 워드 정렬을 수행하게 된다.

위의 경우 #pragma pack(2)를 해야 중간에 빈 공간이 생기는 경우가 없어진다.

typedef unsigned short WORD;
typedef unsigned int DWORD;

#pragma pack(2)
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; // 'BM'이라는 identifier를 가짐.
DWORD bfSize; // 바이트단위 전체 파일크기
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits; // 파일의 첫위치에서 영상데이터 까지의 거리
} BITMAPFILEHEADER;
#pragma pack()


나중에 구조체를 만들어서 헤더파일등을 import 할 경우 반드시 고려 해야 한다.

기타 플랫폼별 컴파일러별 pack() 지시어의 특이사항에 관련된 내용은 잘 알지 못해 올리지 않았다. 각 벤더별 메뉴얼을 참조하기 바란다.

"Structure Packing"로 검색해보면 관련된 많은 내용이 나온다.
Posted by trip2me
,
X관련 프로그램을 실행하기 위해서는 X11을 설치해야 한다.

그런데 실제 X11을 실행하면 따라서 xterm이 하나 같이 뜨게 된다.
실제 잘 사용하지 않을 수도 있는 저 작은 터미널을 뜨지 않게 하려면 아래의 방법을 쓰면 된다.
/etc/X11/xinit/xinitrc라는 기본 스크립트가 있다.
Xserver가 실행하면서 자동으로 실행하는 스크립트인데 만약 사용자의 홈디렉토리에
.xinitrc 파일이 있다면 위의 파일을 대신하게 된다.

따라서 위의 파일을 복사하고 역시나 안에 있었던 xterm & 부분을 제거하면
다음부터 X11 실행시 자신의 계정에서는 xterm이 뜨지 않게 된다.
이를 응용해 띄우고 싶은 다른 프로그램을 넣어주면 된다.
가령 iTerm을 띄우고 싶다면 기본으로 설치되는 디렉토리인 /Application/iTerm.app일 것이므로

open -a iTerm &

이렇게 설정해 주면 xterm대신 iTerm을 사용할 수 있다.
Posted by trip2me
,
벡터 연산이랑 복소수 연산이 필요해서 GNU의 (GSL - GNU Scientific Library)를 맥에 설치했다.

그리고 샘플을 컴파일하니 컴파일은 되고 링크에러가 아래처럼 났다.

~/trip2me$ gcc main.c
/usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: Undefined symbols:
_gsl_sf_bessel_J0
collect2: ld returned 1 exit status


검색을 통해서 DYLD_LIBRARY_PATH, LIBRARY_PATH, C_INCLUDE_PATH, CPLUS_INCLUDE_PATH 라는게 있다는 사실을 알고 환경변수에 /usr/local/bin을 추가해 주었지만 역시나 링킹이 되지 않았다. 왜!!! ㅠ_ㅠ;

결국 혹시나 해서
gcc -l gsl main.c
를 하니 아무말 없이 빌드 ㅡㅅㅡ;
그래 난 아직 완전 초보란 것이다.

PS. 그나저나 그럼 Xcode에는 저걸 어디다가 적어주지???
Posted by trip2me
,
더이상 시스템을 새로 설치할 때마다 북마크를 다시 추가하는 불상사를 없애기 위해 마가린이나 원조격인 del.icio.us를 사용하기로 했다.
이 웹 북마크를 프로그램에서 쉽게 접근하고 검색 할 수 있게 하는 프로그램인 cocoalicious를 설치하고 나서 실제 온라인의 북마크 리스트가 연동이 되지 않아서 원인을 알아 검색해보니 API주소가 변경되었다.
변경된 주소는
https://api.del.icio.us/v1/


이제 그렇게 설정하고 나니 다시 암호를 물어보고 다시 시작하니 잘 된다!!
주의할 사항은 반드시 주소문자열의 끝에 /를 달아야 한다는 것.

코코알리셔스


그리고 혹시나 키체인에 등록해 두었다면
Applications/Utilities/Keychain Access 를 열어서 api.del.icio.us 를 찾아 Address를 그림처럼 고쳐준다.
사용자 삽입 이미지


그리고 다시 시작하면 된다.
Posted by trip2me
,