본문 바로가기

컴퓨터활용/프로프레임

프로프레임 4.0 스튜디오 heap 메모리 부족 오류 프로프레임 4.0 스튜디오를 사용하다가 메모리 오버 플로우 가 나면서 heap 메모리가 부족하다는 오류가 발생될 경우가 있습니다. 종전에 알기로 eclipse.ini 에다가 옵션을 잡아 주면 되는 것으로 알았는데 실험해 본 바에 의하면 먹히지 않습니다. 대신 proframe.exe 를 실행하는 단축아이콘의 속성에 아래와 같이 Xms, Xmx 메모리를 지정하면 먹히네요. C:\TmaxSoft\ProFrameTP4.0\Studio\proframe.exe -clean -vmargs -Xms256m -Xmx512m 여기서 Xms 는 initaial heap memory size 이고 Xmx 는 Maximum heap memory size 입니다. 보통 1G 이상 메모리를 가지고 있는 노트북이라면 256으로 시작.. 더보기
[프로프레임] Conditions can't call the right function 프로프레임에서 dbio를 호출하였는데 오류가 발생하였다. 오류 번호로 리턴된 값은 -90001002 이고 오류메시지는 [DBIO] Conditions can't call the right function 이다. 어떤 경우에 이런 오류가 나오는 것일까? 처음 프로프레임 dbio 를 array fetch 로 작성하였을 때 관련한 배열처리 내부 함수들이 만들어 진다. 이런 array fetch dbio를 프로그램에 끌어다 사용하였을 것이다. 그 후에 개발자가 dbio 를 단건 fetch 로 변경하였다. 그리고 dbio를 컴파일 했다. 그러나 정작 이 dbio를 사용하고 있는 프로그램은 다시 컴파일을 하거나 재구성을 하지 않았다. 이런 경우에 프로그램이 실행될 때는 이전의 array fetch 함수를 계속 호출.. 더보기
[프로프레임] 서비스로그 추출 쉘 개발자들이 거래를 하고 바로 로그를 보기 위해서 로그파일을 tail 걸곤 한다. 좀 더 쉽게 해당 거래 로그만 추출하여 볼 수 있다면 편할 수 있다. 아래 스크립트를 응용하여 자기에게 맞게 편집하여 사용하면 편하게 볼 수 있지 않을까 싶다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 # 서비스명을 입력하지 않으면 입력요청 if [ $# -lt 1 ];then echo "Which Service ?? \c" read SVC else SVC=$1 fi CHK=`echo $SVC | cut -.. 더보기
[프로프레임] dlupdate 상태확인 쉘 프로프레임에서 사용하는 dlupdate 는 정말 유용하다. 유닉스C 에서 자바에서와 같이 실시간 모듈이 동적으로 반영될 수 있기 때문이다. 이렇게 dlupdate 된 모듈이 잘 메모리에 적재가 되었는 지 체크하는 쉘이 있어 소개한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 .. 더보기
[프로프레임] 거래전문 추출 Pro*C 오라클에서 제공하는 proc 샘플을 이용하여 작성하였다. 프로프레임 3.0 에서는 거래를 할 때 마다 이미지로그 테이블에 거래 전문을 보관한다. 이것을 조회하여 text 파일로 떨어트린다. 그런 후에 이 전문 정보를 이용하여 재거래를 해 볼 수 있다. 재거래를 하기 위해서는 pfmtcl 이라는 명령을 이용한다. 이미지로그파일은 일자별로 나누어져 있기 때문에 일자를 입력값으로 받아야 한다. 프로그램내에서 Dynamic SQL을 이용하기 위하여 Prepared Statement 방식을 이용하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43.. 더보기
[프로프레임] tdlinit.sh Tmax에서 기본 제공하는 tdlinit 명령은 $TDLDIR/mod/ 에 생성되어 있는 symbolic link 정보대로 .so 라이브러리를 복사하여 $TDLDIR/run/ 에 복사를 한 후에 메모리에 적재까지 하게 된다. tdlinit 명령을 실행하기 전에 반드시 Tmax를 내려야 한다. Tmax가 기동 중에 tdlinit 명령을 실행하게 되면 메모리에 올려져 사용되고 있을 라이브러리들은 삭제가 되지 않기 때문에 교체하는 과정에서 문제가 발생될 수 있다. tdlinit 은모듈 속 global function명과 run 하위의 실제 물리파일간의 hash 매핑정보를 Shared Memory에 적재하는 과정으로 제법 시간이 걸린다. 따라서 tdlinit -b 명령을 실행할 경우 $TMAXDIR/tdlcal.. 더보기
[프로프레임3.0] tmconfig.m 을 통한 서버 일괄 빌드 프로프레임 3.0 에서 티맥스 서버를 일괄 컴파일하는 쉘을 작성하였다. 서버는 두가지 종류로 나눌 수 있는데 표준적인 서버가 있다. 이런 서버는 표준 템플릿서버소스로 동일한 모양의 소스로 생성이 되고 각 서비스는 dlcall 방식으로 호출하게 된다. 서버에 서비스는 하나씩만 구성할 수도 있고 하나의 서버에 여러 서비스를 묶을 수도 있는데 이것은 프로젝트 상황에 맞게 구성하면 된다. 작업하기 전에 쉘들이 존재하는 디렉토리 하위에 src, log, appbin 이 만들어져 있어야 한다. | 직접 컴파일 서버 목록 파일 작성 직접 컴파일 하는 목록을 먼저 작성한다. 전체 업무별 디렉토리를 뒤지면 직접 컴파일하는 서버 목록은 구할 수 있다. 이 작업은 약간의 수작업이 요구된다. [compile.svr.list].. 더보기
프로프레임 모듈 이관/컴파일 순서 프로프레임에서 프로그램을 컴파일 하는 순서가 있다. 이것은 C 코딩을 직접 해 본 사람이라면 별로 어려운 문제가 아닐 터이나 프로프레임 스튜디오와 같은 UI툴을 이용하여 처음 C언어를 접하고 개발을 시작한 사람이라면 이해하기 어려울 수가 있다. 운영환경으로 헤더, c프로그램 소스가 이관된 후 컴파일 한 후에 dlupdate 하는 환경이라면 프로그램을 컴파일하는 순서와 프로그램을 운영환경에 이관하는 순서는 동일하다. DBIO -> 모듈의 입출력구조체 -> 모듈 의 순서로 이관을 해야 하고 입출력 구조체가 또 다른 서브구조체를 include 하고 있다면 서브구조체 부터 이관해 줘야 한다. 이것은 c언어의 구조가 include 라는 방식의 구조를 하고 있기 때문인데 예를 들어 A프로그램이 B모듈을 EMB에서 .. 더보기
프로프레임 리소스권한 관리 모듈에는 내부모듈과 외부모듈로 구분할 수 있다. 내부모듈은 팀내부에서만 사용하는 모듈, 대부분의 경우 로직이 너무 길어서 분리한 경우일 수가 많다. 외부모듈은 타팀제공모듈이라고도 하며 다른 팀에서 모듈을 호출해서 사용할 수 있도록 허용한 모듈이다. 타팀의 원장을 직접 읽지 못 하도록 가이드하고 있으므로 타팀에게 원장의 데이타를 제공하거나 받아들이는 용도의 모듈이 대표적인 예이다. 그런데 간혹 내부모듈과 외부모듈을 혼동하여 타팀에서 나의 내부모듈을 EMB에 끌어다 사용해 버리는 경우가 있다. 물론 프로그램 사용에는 문제는 없겠으나 향후 유지보수시에 문제가 발생될 수 있다. 업무 변경으로 인하여 내부모듈 입출력 구조체를 변경할 필요가 있을 경우 내부팀원들끼리 모여서 의견 공유하고 함께 로직을 반영하고 컴파일.. 더보기
프로프레임 스튜디오 단축키 더보기
프로프레임 스튜디오 네비게이터에서 다중컴파일 기능 한번에 여러 프로그램을 컴파일 하고 dlupdate 하는 이 기능을 나는 자주 활용한다. 2008년 가을 정도 부터 지원되는 이 기능은 참 유용하다. (신원 만세) 컴파일이 완료되면 다음과 같이 결과를 일목요연하게 보여준다. 마찬가지 방법으로 네비게이터에서 프로그램을 다중선택한 다음에 dlupdate 하면 이렇게 결과를 일목요연하게 보여준다. 더보기
프로프레임 스튜디오 용량 줄이기 프로프레임 스튜디오은 java eclipse 기반으로 제작되었다. eclipse 에서 제공하는 많은 plugins 들을 그대로 재활용하고 프로프레임의 특수한 기능들을 별도의 plugins 로 추가 재작하여 배포하기 때문에 그 용량이 상당히 크다. 기본 100M 정도 부터 시작된다. 여기에 프로프레임 특화 기능을 위한 plugin 들이 추가되고 헬프파일들이 추가되면서 200M 정도가 기본 사이즈 이다. 여기에서 부터 시작해서 스튜디오를 사용하면 사용할수록 history 가 계속 쌓이게 되어 그 디렉토리의 디스크 용량이 점점 커지게 된다. 지난 6월 부터 2개월 남짓 사용하였는데 벌써 1.38 G 나 차지하고 있다. 이 중에서 실제 필요한 부분은 400M 정도면 충분하다. 물론 help파일이나 이런 것들을 .. 더보기
프로프레임의 체크인/체크아웃 기능 ( 편집 LOCK, HOLD 기능) 프로프레임에서 다른 사람이 나의 프로그램을 OPEN 해서 보다가 실수로 저장해 버리는 것을 막을 방법이 없는 것인가? 과거에 프로프레임 스튜디오에는 체크인/체크아웃 기능이 있었다. 그러나 패치 34 부터인가 HOLD 기능이 나오기 시작하였고 이 체크인/체크아웃 기능과 hold 기능을 프로젝트별로 선택하여 사용하도록 가이드되고 있다. 이 두가지 기능을 동시에 사용할 수 있다면 금상첨화겠으나 하나만 사용해야 하는 제약이 있다. 1. 체크인/체크아웃기능 ( CHECK IN / CHECK OUT ) 메뉴에서 체크아웃을 선택하면 해당 프로그램은 체크아웃 시킨 사람만 수정이 가능하다. 같은 그룹에 있는 팀원이라도 수정이 불가능하게 된다. 다시 체크인 한 후에는 같은 그룹내의 팀원까지만 수정이 가능하게 된다. 2. .. 더보기
프로프레임 코드 에디터 환경설정 프로프레임 스튜디오는 eclipse 기반으로 만들어져 있어 환경 설정도 eclipse 의 것과 아주 유사하다. 1. 탭사이즈 설정 프로그램에서 탭문자를 쳤을 때 탭문자 대신에 스페이스 4자가 입력되도록 하는 것이 대부분의 프로젝트 표준이다. 탭문자를 쳤을 때 4 byte 스페이스 문자가 입력되도록 설정하는 메뉴의 위치를 몰라서 설정하지 못 하는 분들은 다음 그림에서 4 라고 탭너비를 지정하고 아랫쪽 그림에서와 같이 insert space for tab 을 체크해야 한다. 그래서 프로그램에서 세로줄이 일사불란 하게 맞게 된다. indentation 이 들쑥날쑥 하면 프로그램 코드의 질을 떨어트리고 결국 코드의 신뢰성 마저 의심가게 만드는 악영향이 있다. 탭을 사용했더라도 저장할 때 자동으로 탭을 스페이스로.. 더보기
프로프레임 PFM_TRY 에 대한 이해 PFM_TRY 는 프로프레임에서 가장 빈번히 사용되므로 정확한 이해가 필요하다. PFM_TRY 는 원래 프로프레임 1.0 에서는 SYS_TRY 였고 2.0 에서는 PSC_TRY 였다. 오늘의 PFM_TRY 를 사용하게 된 것은 신한은행 차세대 프로젝트를 하던 3.0 부터 이다. 자바와 같은 OOP 객체지향 프로그램에서 흔히 사용하는 try .. catch 를 흉내낸 것이지만 나름대로 훌륭한 역할을 해 내고 있다. PFM_TRY 는 pfmLogMacro.h 에 다음과 같이 정의되어 있다. 1234567891011121314151617181920212223242526272829#ifndef _PFM_NO_TRYLOG#define PFM_TRY( _Ftn ) \ do { \ struct timeval s_ti.. 더보기
프로프레임 소스 문자열 변환 프로그램 단어 변환 프로그램입니다. 긴 함수를 짧은 함수로 변환하는 프로그램입니다. 어젯밤에 만들었죠.. (버그 있을 수 있음 ) 프로프레임의 모든 소스는 xml 형태로 DB에 저장됩니다. 프로그램 내의 특정 문자열을 다른 것으로 바꾸기 위해서는 프로프레임 스튜디오에서 하나씩 열어서 전체바꾸기 를 일일이 수작업으로 해 줘야 합니다. 본 프로그램은 DB 에 직접 접속하여 XML 속에 있는 특정 문자열을 변경한 후 다시 UPDATE 시켜 주는 프로그램입니다. 본 프로그램은 티맥스소프트의 오은경 전임이 만든 프로그램을 약간 변형(개작) 한 것임을 밝혀 둡니다. 1. 설치 적당한 곳에 첨부의 2개 파일을 갖다 놓으세요. 자바가 실행될 수 있는 환경이 이미 되어 있어야 합니다. 돌릴려면 ojdbc14.jar 와 ConvW.. 더보기
프로프레임의 가변배열(Varray) 사용 프로매퍼에서 제공하는 강력한 기능 중에 하나가 가변배열이다. 이 가변 배열용 api를 이용하면 포인터라는 어려운 개념을 알지 못하는 사람도 충분히 메모리를 동적 할당(alloc)할 수 있도록 해 준다. 그렇지만 아래에 기술되어 있는 내용 정도는 정확히 이해를 해 줘야 문제를 야기하지 않고 즐거운 코딩을 할 수 있다. 1. 정의 Varray 의 타입에 대하여 pfmVarray.h 속에 다음과 같이 미리 선언되어 있다. #define pfmVarray(type) \ struct { \ long size; \ long count; \ type *data; \ } 따라서 가변배열 변수를 선언할 때는 다음과 같이 한다. pfmVarray(sfee2105a_in_sub01) grid_id; 여기서 sfee2105a.. 더보기
프로프레임 스튜디오 #33 에서 패치된 기능 # 소스 편집중 아래와 같은 description 영역을 더블클릭하면 EMB 의 해당 노드로 포커스 이동됨. /************************************** * KIND : Virtual Module * NODE ID : 13 * NAME : Virtual Module2 * DESCRIPTION : *************************************/ # 소스 표준화 관련 long TEST0111R0(TEST0111R0_IN_MST* input, TEST0111R0_OUT* output) 이전 버젼. =>long TEST0111R0(TEST0111R0_IN_MST *input, TEST0111R0_OUT *output) 패치후 수정됨. # XOR 처리 관련 위치 이.. 더보기