반응형

컴퓨터활용 238

정적 라이브러리, 공유 라이브러리, 동적 적재 라이브러리

차례1. 소개2. 정적 라이브러리3. 공유 라이브러리3.1. 관례들(Conventions)3.1.1. 공유 라이브러리 이름들3.1.2. 파일 시스템 배치3.2. 라이브러리 사용 방법들3.3. 환경 변수들3.3.1. LD_LIBRARY_PATH3.3.2. LD_DEBUG3.3.3. 다른 환경 변수들3.4. 공유 라이브러리 만들기3.5. 공유 라이브러리를 설치하고 사용하기3.6. 호환되지 않는 라이브러리들4. 동적 적재(DL) 라이브러리4.1. dlopen()4.2. dlerror()4.3. dlsym()4.4. dlclose()4.5. DL 라이브러리 예제5. Miscellaneous5.1. nm 명령5.2. 특별함수 _init, _fini5.3. 공유 라이브러리는 스크립트가 될 수 있다5.4. GNU l..

모듈정보 재구성 을 해야 하는가?

최근에 프로프레임 스튜디오 사용자들이 모듈의 입출력구조체의 멤버 항목의 추가 및 삭제할 경우에도 모듈정보 재구성을 하는 것을 보았다. 그러나 사실은 이런 경우에 하는 모듈 정보 재구성은 불필요한 작업이다. 모듈정보 재구성을 해야 하는 경우 1. ARRARY처리하는 DBIO 인 경우 ARRAY 의 개수가 변경된 경우 또는 lock query 를 사용하였다가 해제한 (반대의 경우도 마찬가지) 경우 2. 해당모듈의 프로그램의 논리명이 변경된 경우 3. 해당모듈의 프로그램의 입출력 구조체가 변경된 경우 ( 구조체의 멤버변수가 추가/삭제된 변경이 아니라 구조체 자체가 삭제된 후 새로 만들었거나 다른 이름의 구조체로 재지정한 경우를 말함 ) 이것은 정확히 메타정보(EMB형태의 flow를 XML형태로 저장해 놓은 정..

프로프레임 스튜디오 용량 줄이기

프로프레임 스튜디오은 java eclipse 기반으로 제작되었다. eclipse 에서 제공하는 많은 plugins 들을 그대로 재활용하고 프로프레임의 특수한 기능들을 별도의 plugins 로 추가 재작하여 배포하기 때문에 그 용량이 상당히 크다. 기본 100M 정도 부터 시작된다. 여기에 프로프레임 특화 기능을 위한 plugin 들이 추가되고 헬프파일들이 추가되면서 200M 정도가 기본 사이즈 이다. 여기에서 부터 시작해서 스튜디오를 사용하면 사용할수록 history 가 계속 쌓이게 되어 그 디렉토리의 디스크 용량이 점점 커지게 된다. 지난 6월 부터 2개월 남짓 사용하였는데 벌써 1.38 G 나 차지하고 있다. 이 중에서 실제 필요한 부분은 400M 정도면 충분하다. 물론 help파일이나 이런 것들을 ..

모두빌드 기능 사용 정지 시키기

프로그램을 작성하다가 Ctrl-V 를 누르려고 하다가 실수로 Ctrl-B 를 눌러서 난감한 경우가 있다. Ctrl-B는 모두빌드 인데 이것을 누르면 프로프레임 스튜디오가 행걸려서 풀리지 않기 때문에 강제로 작업관리자에서 프로그램을 죽이는 수 밖에 없다. 당연히 이 때까지 저장하지 않은 작업들은 유실되게 된다. 이것을 막기 위하여 환경설정에서 이 기능을 해제 시킬 수 있다. 크게 두가지 방법이 있는데 두가지 방법을 모두 적용해 놓으면 안심이다. 1. 빌드 순서 삭제 환경설정 -> 일반 -> 작업공간 -> 빌드순서에 가서 등록되어 있는 프로젝트를 모두 깨끗이 지워 버린다. 이렇게 지워버리면 상단 메뉴에도 disable 되어 실행이 안된다. 2. 단축키(hot key) 삭제 창 -> 환경설정 -> 일반 -> ..

외부 binary 링크하여 컴파일하기

외부 파일에 함수를 만들어 놓고 별도 컴파일 한 후에 최종 실행 파일을 만들 때 이것을 같이 묶어서 컴파일 하는 것을 C 프로젝트에서 많이 사용하게 된다. 이 기초적인 작업의 샘플을 여기에 쉽게 써 보겠다. 두개의 파일을 작성한다. 하나는 func.c 이고 또 하나는 call.c 이다. func.c 에는 함수만 들어 있고 call.c 에는 main함수가 들어 있어 실행이 가능하게 된다. 먼저 func.c 를 다음과 같이 작성했다. #include long func_a(); long func_a() { printf("here is func_a!\n"); return 0; } 함수 이름 앞에는 return type 으로 long 을 지정 했다. 만일 static long func_a() 라고 선언하게 되면 ..

VIEW 의 쿼리에디터 폰트 설정

DBIO를 작성할 때 특히 VIEW나 EXECSQL을 작성할 때 SQL에디터에서 컬럼 줄을 가지런하게 맞추기 위해서는 폰트설정을 해야 한다. 이렇게 가지런한 SQL을 보기 위해서는 프로프레임 스튜디오의 환경설정->프로프레임->DBIO 섹션에서 맞출 수 있다. 나는 개인적으로 Courier New-regular 를 좋아한다. 물론 사이즈는 개인적인 화면의 크기에 따라 맞추면 되겠지만 사이즈 9 정도가 적당하다. 모든 프로그램이 그렇지만 가지런하게 줄을 맞추는 것은 개발자의 기본소양이다. 그래야 자기 자신이 나중에 프로그램 분석할 때도 도움이 되고 남은 사람이 유지보수할 때도 보기에 편하다. 가독성이 떨어지는 프로그램을 만날 때 마다 개발자를 찾아서 한대 패 주고 싶은 것은 누구나 마찬가지 마음일 것이다.

strcpy 의 위험성

strcpy 를 사용할 때 그 변수의 사이즈에 대하여 정확히 인지를 하고 사용해야 한다. 자칫 잘못하면 엄한 메모리의 영역까지 엎어칠 수 있다. 다음의 예제는 a 라는 스트링 변수에 문자를 2 byte만 넣을 수 있는데 이것을 오버하여 무턱대고 strcpy 를 했을 때 그 뒤에 바로 따라오는 변수 b의 기존 값(12345)이 뭉개져 버리는 것을 보여주고 있다. #include #include #include typedef struct a { char a[3]; char b[10]; } a_t; main() { a_t a; strcpy( a.b, "12345" ); printf("b ptr=[%p] len=[%ld] size=[%ld] value=[%s]\n", a.b, strlen(a.b), sizeof..

오라클 리스너 떠 있는지 확인하는 방법

오라클 리스너 확인하기 1. 리스너 구동하기 lsnrctl start : 리스너 구동하기 lsnrctl stop : 리스너 중단하기 이 명령어는 오라클이 설치되어 있는 서버에서 실행해야 한다. 당연 oracle 유저로 실행해야 먹을 것이다. 윈도우 커맨드모드에서 실행하는 client 용 명령어는 아니다. 2. 리스너 환경 파일 $ORACLE_HOME/network/admin 아래에 있는 listener.ora 3. tnsping 사용하여 외부에서 리스너 동작 확인하기 사용법 : tnsping TNS명 C:\Documents and Settings\SHCHOI> tnsping DBDCBS1 TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Product..

방화벽이 있는 네트웍에서 메신저 사용하기

방화벽이 있는 회사 네트웍에서 네이트온과 같은 메신저를 사용하는 방법으로는 여러가지가 있을 수 있다. RConnect, Hopster, vidalia 등의 프로그램을 설치하여 방화벽을 속여 빠져 나가는 방법 등이 있다. 그러나 그 중에서 가장 효과적이 부작용이 없이 깔끔한 것이 바로 RealTunnel 이라는 소프트웨어인데 정말 감쪽같다. RConnect는 잘 연결이 안되고, Hopster는 광고를 매번 봐줘야 하고 순간순간 끊어졌다 붙고, vidalia 는 설치방법이 어렵고 속도가 늦다. 1. 설치 다운로드 받는다. http://internal.paradial.com/download/Setup.exe 2. 실행 설치한 후 태스크바에 조그마한 R 이라는 아이콘이 뜨면 이것을 클릭하여 위의 화면을 띄운다...

컴퓨터활용 2008.08.18
반응형