청소청소!!
Monthly Archives: January 2008
NS-2 설치 후 라이브러리 경로 및 실행파일 경로 추가
정상적인 NS-2 설치에 성공했다면 설치 직후에 다음과 같은 메시지가 보여진다(allinone-2.31 버전 기준)
Please put /usr/local/ns-allinone-2.31/bin:/usr/local/ns-allinone-2.31/tcl8.4.14/unix:/usr/local/ns-allinone-2.31/tk8.4.14/unix
into your PATH environment; so that you’ll be able to run itm/tclsh/wish/xgraph.IMPORTANT NOTICES:
(1) You MUST put /usr/local/ns-allinone-2.31/otcl-1.13, /usr/local/ns-allinone-2.31/lib,
into your LD_LIBRARY_PATH environment variable.
If it complains about X libraries, add path to your X libraries
into LD_LIBRARY_PATH.
If you are using csh, you can set it like:
setenv LD_LIBRARY_PATH <paths>
If you are using sh, you can set it like:
export LD_LIBRARY_PATH=<paths>(2) You MUST put /usr/local/ns-allinone-2.31/tcl8.4.14/library into your TCL_LIBRARY environmental
variable. Otherwise ns/nam will complain during startup.After these steps, you can now run the ns validation suite with
cd ns-2.31; ./validateFor trouble shooting, please first read ns problems page
http://www.isi.edu/nsnam/ns/ns-problems.html. Also search the ns mailing list archive
for related posts.
여기서 해당 라이브러리와 실행파일 경로를 path에 지정해야 다음부터 편하게 쓸수 있는데 두가지 방법이 있다.
하나는
LD_LIBRARY_PATH 환경변수에 직접 경로를 추가하는 방법과
다른 하나는 /etc/ld.so.conf 파일에 직접 경로를 입력하고 ldconfig 명령어를 돌려주는 방법이 있다.
어느것을 하든 관계는 없지만 만약 환경변수에 경로를 추가한다면 .profile 혹은 ,bashrc 파일에 입력하여 재부팅 혹은 재로그인 시 자동으로 인식되게끔 하는 조치가 필요하다.
can’t find X includes
패키지 컴파일시…다음과 같은 메시지가 나오면서 컴파일이 실패되는 경우가 있다.
이는 Xlib 가 설치되지 않아서 발생하는 메시지이다.
즉 해당 라이브러리를 경로에서 찾을 수 없다는 메시지이다.
checking for X… configure: error: Can’t find X includes. Please check your installation and add the correct paths!
이럴 경우 다음의 패키지를 설치해주면 문제가 해결된다. (다 설치할 필요는 없다.;;)
x-dev
libx11-dev
xlibs-dev
kdebase-dev
우분투 혹은 데비안의 경우 다음과 같이 입력하면 자동으로 패키지를 내려받고 설치한다.
sudo apt-get install x-dev libx11-dev xlibs-dev kdebase-dev
getchar() 사용시 발생하는 개행문자(‘n’) 처리방법
개인적으로 입력예외처리나 오류의 방지를 위해서 scanf를 쓰기보다
fgets로 chracter buffer을 잡아서 입력받은 다음 sscanf로 stdin을 처리하는 편입니다.
하지만 이런 경우 입력이 buffer의 허용수치 안에서 overflow되고 이 입력을 loop처리할 경우
overflow된 값만큼 다음 입력을 받지 않고 stdin내부에 남아있던 데이터를 입력 받은 것으로
처리해 수행을 하게 됩니다. 그렇기 때문에 stdin을 비워줘야 하는데요.
Visual C환경에서 이 작업은 fflush(stdin)이라는 형태의 함수가 지원합니다.
[이전의 야구게임 소스코드에도 활용되어 있습니다.]
하지만 이건 gcc에서는 동작하지 않습니다.
환경에 따라서 정상작동하는 경우도 있지만 그렇지 않은 경우도 있습니다.
그 이유는 fflush의 기본적인 정의가 출력버퍼(stdout 같은)에만
적용되도록 되어있기 때문입니다.
[왜 이 편한 기능을 stdin까지 확장 적용하지 않는지는 조금 의문입니다.
아시는 분은 알려주세요.]
그래서 이 기능을 굳이 구현하기 위해서는 직접 함수를 구현해야 하는데요.
제가 사용하는 함수는 다음과 같습니다.
라인입력이 끝나거나 파일이 종료되는 때까지 임시변수에 모든 stdin내부 버퍼를
집어넣어버리는 형태입니다. 더 효율적인 함수가 존재하는지는 모르겠네요.
[역시나 아시는 분은 알려주시면 감사하겠습니다.]
사실 윈도우 프로그래밍만 할 경우에는 신경쓰지 않아도 되는 부분이지만
리눅스나 다른 환경에서의 호환성을 생각할때에는 아무래도 이쪽이 더 좋겠지요.
[다만 문제는 저렇게 하면 버퍼가 이미 비어있는 경우 스탠다드 입력을 기다리게 됩니다.
이 문제까지 처리하려면 어떻게 해야할지는 고민 좀 해봐야겠네요.]
C++에서는 다른 방법도 존재하는 걸로 알고 있는데 제가 아직 C++을 제대로
공부하고 있지 않은 관계로 이건 나중에 알게되면 추가할까 합니다.
뭐 C++에서도 저정도의 함수는 작동할테니까요.
출처 : http://dpig.tistory.com/archive/20061105
dotProject….
이번 프로젝트를 진행하기 위해 프로젝트 관리툴을 찾던중 dotproject에 대해 알게 되었다.
영어라서 그다지 마음에 들지 않았지마..(;;;)
깔끔한 인터페이스가 좋았다.
사실…다른 관리툴 설치하기가 귀찮았다..
그냥 만족하면서 써야지.
