본문 바로가기

컴퓨터활용/티맥스

xa_NULL trc 파일 티맥스가 DBMS 와 거래할 때의 로그가 보관되는 곳이 xa_NULL 파일이다. 엄밀히 말하면 오라클의 클라이언트 모듈이 남기는 파일이다. (티맥스나 턱시도 같은 미들웨어가 남기는 것이 아님) 모든 거래의 로그를 남기게 되므로 용량이 무지막지하게 크기도 하지만 장애가 났을 때는 중요한 근거 자료가 된다. xa_NULL 파일은 다음과 같이 생겼다. 102946.40932.0: xaocommit: xid=0x1-02c00000038a7126-0000001, rmid=0, flags=0x0 102946.40932.0: xaocommit: rtn 0 보통 파일명은 xa_NULL03252021.tr c 와 같이 중간에 일자가 들어간다. 이 파일구성은 거래시각, 처리 프로세스의 ID가 먼저 나오고 그 다음 라인에 .. 더보기
HTL-27569 F HTL0048: Listen port (80) is in use. Try to bind to that port again in 10 seconds. errno=13(Permission denied) HTL-27569 F HTL0048: Listen port (80) is in use. Try to bind to that port again in 10 seconds. errno=13(Permission denied) 웹투비 기동할 때 이런 오류가 날 경우 이것을 점검해야 한다. 웹투비 bin 디렉토리에 htl 에 system 권한이 있어야 한다. 시스템권한을 주는 방법은 chmod +s htl 인데 이것을 실행하려면 root 권한으로 실행해야 한다. 제대로 시스템권한이 먹으면 아래와 같이 s가 중간에 끼어서 보일 것이다. -rwsrwsrwx 1 root root 428631 2013-09-24 10:38 htl* 이러한 현상은 1024 번 이하의 포트에 개별 프로그램이 사용하지 못 하도록 시스템이 제.. 더보기
시스마스터 관리 □ 시스마스터를 제거 JEUSMain.xml 속의 아래와 같은 설정을 제거 -Xbootclasspath/p:/home/tmax/sysmaster/agent/dc/sminst_rt.jar:/home/tmax/sysmaster/agent/dc/sminst.jar -Dsm.property=/home/tmax/sysmaster/agent/dc/properties/sm3.properties -agentlib:/home/tmax/sysmaster/agent/dc/dcagent64 -javaagent:/home/tmax/sysmaster/agent/dc/sminst.jar □ 서버기동 및 다운 기동 : 마스터를 먼저 기동하고 각 에이전트를 기동한다. 다운 : 각 에이전트를 다운하고 마스터를 다운한다. bin 디렉토리.. 더보기
DBIO 내부 오류 메시지 프로프레임 DBIO를 호출한 후 오류 리턴 받았을 때 참고할 수 있는 내부 오류에 대한 메시지 이다. HTML clipboard 에러코드 에러 코드 Macro명 원인 해결방안 -90000001 PDB_ERR_UNKNOWN 알수 없는 에러 코드 정의 되지 않은 에러 코드 -90000002 PDB_ERR_CONNECTION DB 연결 정보를 가져올 수 없음 사이트 커스터마이징 소스인 pfmDbioConnectDB.c 의 pfmDbioConnectDBInput 부분의 passwd_runtime / passwd_compile / passwd_srcgen 설정 확인(Sybase 는 passwd_runtime / passwd_srcgen 설정 확인) -90000003 PDB_ERR_CONNECTION_TDLCALL.. 더보기
PLS-S-00201, identifier 테이블명 must be declared 오류 테이블을 신규 생성하고 최초에 DBIO를 하나 만들어서 컴파일을 하면 다음과 같은 오류 메시지를 만날 수 있다. PROC 프로그램 속에서 사용된 변수(identifier)가 도통 뭔지 알 수 없다는 메시지이고 보면 원인을 쉽사리 짐작할 수 있다. 어쨌거나 이 메시지는 테이블이 없다는 메시지 이므로 DBIO컴파일할 때 접속하는 유저ID가 무엇인지 확인을 하고 이 유저에게 GRANT를 주고 SYNONYM을 주도록 DBA 에게 요청을 해야 해결 될 수 있다. 일반 변수라면 (혹시 테이블의 컬럼) 해당 컬럼이 실제로 존재하는 지 테이블 스키마를 점검해야 한다. -----> 2. Compile the source generated awhile ago >>> Begins to process pfmDbioAFEE_P.. 더보기
커서오픈 후 예외처리 기술 필요 안녕하세요? 이종구 부장님의 명(?) 을 받고 메일을 보냅니다. 혹시 해당 되시는 분이 있다면 소스를 점검해 주시길 바랍니다. 커서오픈할 경우 프로프레임 스튜디오에서 생성되는 기본 소스에는 에러코드를 세팅하는 부분이 없습니다.프로프레임에서는 기본 틀만 소스생성하고 세부적인 코딩은 개발자가 해야 하는 몫입니다. 대부분의 개발자들이 while 루프 안 쪽에는 코딩을 많이 하시지만 이 커서오픈 부분의 에러처리는간과하고 그냥 내버려 두시는 경우가 많은데 바람직하지 않습니다. 실제로 커서 오픈하다가 오류가 발생하게 되면 단말화면에 제대로된 오류를 받아 볼 수 없기 때문에 난감한 상황에 빠지게 됩니다. 커서오픈할 때 오류가 발생되면 에러코드를 세트하지 않고 오류 return 해 버렸기 때문에 프레임웍에서 다음과 같.. 더보기
내가 실행한 마지막 서비스 로그 보기 쉘 프로프레임 환경하에서 프로젝트를 수행하다가 보면 그 방대한 티맥스 로그를 보면서 개발하는 것이 쉬운 일이 아니다. 티맥스와 같은 미들웨어는 서비스를 하나의 서버로 묶어서 로그를 생성시키는데 서버의 로그를 보면 다른 서비스의 로그도 같이 섞여 있기 때문에 단순히 vi로 열어서 보거나 tail 로 걸어서 보는 것도 한계가 있다. 로그파일에서 내가 마지막으로 수행한 서비스의 로그만 골라내어서 볼 수 있다면 얼마나 개발에 도움이 될 것인가? 내가 몸담고 있는 H은행 프로젝트의 예를 들어서 쉘을 작성해 보고 각자의 프로젝트에 환경에 맞도록 응용하여 자신의 쉘을 만들어 사용한다면 즐거운(?) 코딩을 할 수 있지 않을까 생각해 본다. 1. 서버명을 구한다. H은행 프로젝트에서는 서비스명을 넣으면 소속되어 있는 서버명.. 더보기
공통모듈의 필러 관리하기 개요 공통모듈을 개발하는 사람은 입출력 구조체에 필러를 미리 만들어 두는 것이 좋다. 특히 통합테스트 단계에서는 이관이라는 프로세스를 통하여 개발에서 단위테스트가 완료된 공통모듈을 별도의 실행환경인 테스트장비로 옮겨서 실행하기 때문에 절대적으로 필요하다. 모듈의 입출력 구조체 사이즈가 바뀌게 되면 이 모듈을 끌어다 쓰는 프로그램들도 모두 같이 이관되어 줘야 하는데 상황에 따라서는 이관할 수 없는 상황이 있을 수 있기 때문이다. 예를 들면 테이블스키마가 변경중이라 개발과 테스트의 테이블스키마가 다르거나 한참 로직을 변경하는 중이라 단위테스트가 완료되지 못 한 경우가 있을 수 있다. 데이타 타입별 사이즈 프로프레임에서 사용하는 구조체형 변수 타입인 PfmNumber 는 원래 24 byte 이고 long 은 .. 더보기
구조체 컴파일이 필요한 경우 프로프레임에서는 구조체를 컴파일하는 독특한 작업이 있다. C 개발자라면 구조체는 structure 이고 structure 를 어떻게 , 왜 컴파일해야 하는지 의아해 한다. 이것은 당연한 질문이고 궁금해해야 하는 것이 맞다. 프로프레임에서는 스튜디오로 구조체를 하나 작성하게 되면 이 구조체에 따는 전문(메시지)가 같이 생성된다. 이 때 생성된 구조체 및 전문(메시지)의 헤더 파일은 $PMAPINCDIR 디렉토리에 있다. [cbsdev]cd $PMAPINCDIR [cbsdev]ls -al *mfeecal_trsc_ptcl_reg_in* -rw-rw-r-- 1 pfm tmax 17257 9월 1일 18:24 pfmMappermfeecal_trsc_ptcl_reg_in_sub01MsgFld.h -rw-rw-r-.. 더보기
모듈정보 재구성 을 해야 하는가? 최근에 프로프레임 스튜디오 사용자들이 모듈의 입출력구조체의 멤버 항목의 추가 및 삭제할 경우에도 모듈정보 재구성을 하는 것을 보았다. 그러나 사실은 이런 경우에 하는 모듈 정보 재구성은 불필요한 작업이다. 모듈정보 재구성을 해야 하는 경우 1. ARRARY처리하는 DBIO 인 경우 ARRAY 의 개수가 변경된 경우 또는 lock query 를 사용하였다가 해제한 (반대의 경우도 마찬가지) 경우 2. 해당모듈의 프로그램의 논리명이 변경된 경우 3. 해당모듈의 프로그램의 입출력 구조체가 변경된 경우 ( 구조체의 멤버변수가 추가/삭제된 변경이 아니라 구조체 자체가 삭제된 후 새로 만들었거나 다른 이름의 구조체로 재지정한 경우를 말함 ) 이것은 정확히 메타정보(EMB형태의 flow를 XML형태로 저장해 놓은 정.. 더보기
모두빌드 기능 사용 정지 시키기 프로그램을 작성하다가 Ctrl-V 를 누르려고 하다가 실수로 Ctrl-B 를 눌러서 난감한 경우가 있다. Ctrl-B는 모두빌드 인데 이것을 누르면 프로프레임 스튜디오가 행걸려서 풀리지 않기 때문에 강제로 작업관리자에서 프로그램을 죽이는 수 밖에 없다. 당연히 이 때까지 저장하지 않은 작업들은 유실되게 된다. 이것을 막기 위하여 환경설정에서 이 기능을 해제 시킬 수 있다. 크게 두가지 방법이 있는데 두가지 방법을 모두 적용해 놓으면 안심이다. 1. 빌드 순서 삭제 환경설정 -> 일반 -> 작업공간 -> 빌드순서에 가서 등록되어 있는 프로젝트를 모두 깨끗이 지워 버린다. 이렇게 지워버리면 상단 메뉴에도 disable 되어 실행이 안된다. 2. 단축키(hot key) 삭제 창 -> 환경설정 -> 일반 -> .. 더보기
VIEW 의 쿼리에디터 폰트 설정 DBIO를 작성할 때 특히 VIEW나 EXECSQL을 작성할 때 SQL에디터에서 컬럼 줄을 가지런하게 맞추기 위해서는 폰트설정을 해야 한다. 이렇게 가지런한 SQL을 보기 위해서는 프로프레임 스튜디오의 환경설정->프로프레임->DBIO 섹션에서 맞출 수 있다. 나는 개인적으로 Courier New-regular 를 좋아한다. 물론 사이즈는 개인적인 화면의 크기에 따라 맞추면 되겠지만 사이즈 9 정도가 적당하다. 모든 프로그램이 그렇지만 가지런하게 줄을 맞추는 것은 개발자의 기본소양이다. 그래야 자기 자신이 나중에 프로그램 분석할 때도 도움이 되고 남은 사람이 유지보수할 때도 보기에 편하다. 가독성이 떨어지는 프로그램을 만날 때 마다 개발자를 찾아서 한대 패 주고 싶은 것은 누구나 마찬가지 마음일 것이다. 더보기
JEUS 환경설정 - patch 디렉토리 설정 $JEUS_HOME/config/서블릿컨테이너/JEUSMain.xml 속에 다음과 같이 설정을 했다고 하면 여기서 patch 는 가상의 이름이며 실제 존재하는 디렉토리의 이름과 다르다. (예제는 혼란을 피하기 위하여 동일하게 잡았지만) 우리가 웹브라우져에서 http://xxx.xxx.xxx.xxx:port/patch/hello.html 쳤을 때 제우스는 입력된 URL 주소에서 이 patch 라는 단어를 식별해 내고, 환경설정에 미리 지정되어 있는 실제 물리적인 디렉토리인 /tmax/jeus/cbs/webhome/app_home/patch 에서 hello.html 이란 파일을 찾게 된다. patch /tmax/jeus/cbs/webhome/app_home/patch COMPONENT cbssvd01_con.. 더보기
proc 컴파일 옵션 [proframe@dev03:/userdir/proframe/proframe4.0/logging/dbio]$ proc Pro*C/C++: Release 10.2.0.2.0 - Production on 화 2월 27 09:44:42 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. 시스템 기본 옵션 값이 가지고 온 곳: /oracle/app/oracle10g/product/1020/precomp/admin/pcscfg.cfg 옵션 이름 현재 값 기술 ------------------------------------------------------------------------------- auto_connect 아니오 ops$ 계정으로 자동 연결할.. 더보기
유틸리티 함수 템플릿 기능 활용하기 사용방법 프로프레임 스튜디오는 이클립스 기반으로 만들어 졌다. 따라서 이클립스의 기능을 잘 활용하면 편하게 코딩할 수 있다. 예를 들어서 코드 편집창에서 아래와 같이 pfmstr까지만 입력하고 Ctrl-Space 를 누를 경우 미리 등록되어 있는 예약어 중에서 pfmstr 로 시작되는 것을 검색하여 팝업으로 보여주는 기능이 있다. 특히 프로프레임의 경우 유틸리티 함수도 많고 이름도 길어서 일일이 외우기 어렵기 때문에 이렇게 찾아서 사용하면 개발에 많은 도움이 된다. 참고로 프로프레임의 제공되는 유틸리티는 크게 pfmStr~, pfmDate~, pfmNum~, pfmIs~의 유형으로 크게 분류된다. 등록하기 이렇게 사용하기 위해서는 유틸리티 함수를 미리 등록을 해 놓아야 한다. 이것은 프로프레임 스튜디오의.. 더보기
괄호 열고 닫기 짝이 안 맞을 때 나는 오류 컴파일 하다가 이런 오류를 만났는가? 그렇다면 고생 좀 하겠네요. BASENAME = [sfee2106a] rm -f core sfee2106a.o libsfee2106a.so cc -DORACLE -qlanglvl=extc99 -g -q64 -qinfo=pro -brtl -O0 -qcpluscmt -D_SM. "sfee2106a.c", line 485.13: 1506-162 (W) No definition was found for function c000_biz_main_proc. Storage class changed to extern. "sfee2106a.c", line 487.13: 1506-046 (S) Syntax error. make: 1254-004 최종 명령에서의 오류 코드는 1입니다. .. 더보기
[---___---] 보호되어 있는 글입니다. 더보기
code inspection 여신 김만기 차장님의 요청에 의하여 오전에 오전임과 같이 만들었으니 향후 검토하신 후에 compile shell 뒤에 append 하여 모든 프로그램 컴파일 할 때 warning 을 보여 준다면 어떨까 검토해 주신 후 적용해 주세요. 프로그램명 : inspect_code 적용룰 : PFM_TRYNJ 절 뒤에 SET_ERR 을 안 한 경우를 찾아 줌 사용예 : 소스가 존재하는 디렉토리로 이동해서 inspect_code 를 실행합니다. nbtap01#/nbsdev/compile/NLDS/src/service>inspect_code NLDS1001I0 "NLDS1001I0.c", line 475: warning #9999: not found SET_ERR after PFM_TRYNJ "NLDS1001I0.c".. 더보기
DBIO 에서 VIEW 출력변수 생성 팁 1. 입력값 오류 DBIO 를 작성할 때 VIEW의 출력변수 생성 버튼을 눌렀을 때 아래 그림과 같은 오류 메시지가 나오는 경우가 있다. 이것은 스튜디오의 버그라기 보다는 개발자의 프로프레임 스튜디오 사용법의 미숙함에 기인된다. ORA-01840 : 입력된 값의 길이가 날짜 형식에 비해 부족합니다. DBIO 스튜디오의 view 출력변수 생성시에는 개발자의 편의를 위하여 입력값 자동 설정기능이 있는데 이것을 체크해 놓았을 경우 입력변수에 디폴트 값으로 1 을 세팅하여 SQL을 실행한다. VIEW의 출력변수 생성은 작성된 SQL이 문법적으로 오류가 없는지 수행해 보고 정상동작될 경우 출력변수를 생성해 주는 편의 기능이다. 따라서 원래는 입력변수에 값을 일일이 개발자가 넣어서 실행시켜 주어야 하나 개발자의 편.. 더보기
HP 장비의 make 시간이 IBM 장비 보다 오래 걸리는 현상 HP 장비를 개발장비로 사용하고 있는데 dbio 는 60여초, 매퍼는 40여초 정도의 컴파일 시간이 걸리고 있습니다. IBM 장비를 사용하고 있는 프로젝트로서 3.0을 사용하고 있는 S협, 4.0 사용중인 D증권, H은행에서는 컴파일 속도 때문에 문제된 경우는 없다고 합니다. ( 전화문의 ) 그러나 HP 장비를 사용하고 있는 S은행의 경우 여기 경우와 같이 DBIO를 컴파일 하는데 1분 이상이 걸린다는 것을 들었습니다.( 전화문의 ) make 시 시간이 오래 걸리는 것은 HP 장비의 일반적인 현상으로 보입니다. 다음은 프로젝트에 투입되어 있는 HP 기술자의 현재까지의 진행상황에 대한 답변 내용인데요. [ 원 본 글 ]=================================================.. 더보기
PFM_CATCH 절의 return 값은 오류 리턴 보장되어야 합니다 예외처리를 구현함에 있어서 지난 번(3월)에 가이드 할 때 예외처리 IM 을 FUNCTION 타입으로 구현할 경우 프로그램의 return 값이 정상으로 변경될 수 있으므로 주의해야 하는 번거로움이 있으므로 block 타입으로 지정하는 것을 권장했었는데 이것을 충실히 따른 좋은 예이다. EMB 그림과 더불어 소스도 충분히 검증되어야 한다. 소스를 열어서 보면 코드상에 문제가 있음을 알 수 있다. 아래의 소스대로 동작된다면 PFM_TRYNJ(pfmBatchDBRollback()); 함수를 호출한 뒤에 rc 값이 RC_NRM 으로 리턴될 경우 그 아래 쪽으로 흘러내려 가면서 return rc; 를 만나서 정상 리턴되고 프레임웍에서 commit 처리 된다는 것이다. PFM_CATCH: { /***********.. 더보기
리소스 의존성 검색 SQL BM의 CALL DEPTH 가 1 인 것만 검색하는 SQL 은 다음과 같다. 사실 의존성 검색은 1레벨 의존성만 검색해도 충분하다. SELECT RES.RESOURCE_ID, RES.PHYSICAL_NAME, RES.LOGICAL_NAME, RES.RESOURCE_TYPE, RES.RESOURCE_GROUP, RES.OWNER, RES.UPDATE_TIME, RES.STATUS FROM DEV_RESOURCE RES, (SELECT DISTINCT RESOURCE_ID FROM DEV_PROPERTY WHERE REFERENCE_ID = (select resource_id from dev_resource where physical_name = 'mnlgs8030_0') ) PRO WHERE RES.RES.. 더보기
"[DBIO] 조건에 맞는 함수를 호출할 수 없습니다" 오류시 DBIO를 작성할 때 배열개수가 1개인 select 를 만들면 수행중에 다음과 같은 오류가 납니다. :init_proc :00094] >> PFMTRY [pfmDbioSelectArray("tb_nb_sv_dm_ctr_ps50] ? :pfmdbio.pc :_pfmDbioStoreParam :01313] [-90001002][DBIO] 조건에 맞는 함수를 호출할 수 없습니다. :init_proc :00094] 더보기
Full GC 발생시 아래사항을 숙지하여 Heap dump를 떠야할 ProFrame Container FULL GC 발생시 Heap Dump & thread dump 뜨는 방법 입니다. Full GC 발생시 아래사항을 숙지하여 Heap dump를 떠야할 상황에 잘 수행토록 합시다. [ ProFrame Container PID 알아내는 명령어] >ps -fu proframe | grep container1 proframe 4819 4623 0 5월 16 ? 03:53:32 /opt/java1.4/jre/bin/IA64W/java -server -Dcontainer1 -Xbootclasspath/p:/nbsdev/package/jeus/lib/system/extension.jar -classpath [GC 로그 위치] /nbsdev/package/jeus/logs/gc_lo.. 더보기
DBIO EXECSQL 실행시 "ORA-00932: 일관성 없는 데이터 유형" 발생하는 경우 INSERT INTO TB_NB_NL_HH_VIP ( NSGRN_LMT_AM ) SELECT (CASE WHEN :chk_yn = '0' THEN NSGRN_LMT_AM ELSE :nsgrn_lmt_am END) FROM TB_NB_NL_HH_VIP 위와 같은 경우 컴파일을 정상적으로 수행되나 실행할 때 다음과 같은 오류가 발생합니다. ORA-00932: 일관성 없는 데이터 유형 이것은 프로프레임 내부적으로 PfmNumber 타입의 변수를 SQL 속에 대입할 때 char 문자열로 값을 전달하기 때문에 발생되는 문제 입니다. 따라서 위와 같은 execSQL 속의 입력변수의 타입을 맞추기 위하여 다음과 같이 고쳐서 사용해야 합니다. INSERT INTO TB_NB_NL_HH_VIP ( NSGRN_LMT_AM.. 더보기
error #2029: expected an expression 개발자가 요청해 오기를 컴파일 과정에서 다음과 같은 오류를 만났는데 원인을 모르겠으니 찾아달라고 한다. 원인을 찾다가 다음과 같은 결론을 얻었다. "SVBE0011I2_bak.c", line 1686: error #2029: expected an expression msvbe_fnc_wrs_c(msvbe_g0010_in.srlev_data.fnc_wrs_c, SVBE_SVFNDBSCI_INFO->be_fnd_tpc); ^ "SVBE0011I2_bak.c", line 1686: error #2032: expression must have arithmetic type msvbe_fnc_wrs_c(msvbe_g0010_in.srlev_data.fnc_wrs_c, SVBE_SVFNDBSCI_INFO->be_fn.. 더보기
dlcall 오류 날 때 651 (T) TC :090953349239:080519090953nbtap000145100000000:14510 [bncsppayse:bncsppaysend.c :c100 :00260] >> PFMTRY [pfmDbioOpenCursorArray("tb_nb_nc_sh_pyin] 입구 652 (E) PFM:090953356367:080519090953nbtap000145100000000:14510 [bncsppayse:pfmdbio.pc :_pfmDbioStoreParam :01319] 653 [-90001010][DBIO] pfmDbiotb_nb_nc_sh_pyinvtcs Library 호출에 실패하였습니다 654 [dlopen error: Unsatisfied code symbol '_pdb_tb_.. 더보기
[디지털데일리] 코어뱅킹 솔루션 시장, 4사 경쟁구도 치열 지나고 보면 정말 격동의 시기였다. 티맥스는 불가능에 대한 끊임없는 도전으로 주위의 우려 속에서 불가능하다는 것을 가능하다는 것으로 입증해 보여주었다. 간혹 무모할 정도로 불가능한 것에 도전하다가 진짜 불가능해 질 뻔 했던 적이 여러 번 있었지만 그 때 마다 희한하게도 구원자가 나타났다. 프레임워크라는 것을 만들어 가는 과정에서 첫 적용사례인 한미은행 코어뱅킹 프로젝트가 바로 그것이었다. 처음 프로젝트를 시작할 때 "프레임워크라는 것이 뭐 별것이냐? 그동안 티맥스라는 미들웨어로 여러 프로젝트를 해 봤고 그 노하우를 이것저것 모아 놓으면 그게 바로 프레임워크이지"라고 생각했었다. 그 때가 2003년 이었다. 그러나 막상 한미은행 프로젝트는 프레임워크를 적용하는 것 보다는 업무개발이라는 난제에 부딛쳤었다. .. 더보기
view 의 출력변수 생성시 오류 DBIO는 VIEW 의 출력변수 생성을 위하여 sql 이 정상적으로 수행되는지 한번 돌려 봅니다. 이렇게 돌려 보는 것은 작성된 SQL이 제대로 작성되었는지 확인하는 순기능도 있지만 실제적으로는 출력변수들이 메타에 등록되어 있는 용어들인지 체크하는 것이 더 중요한 목적이라고 볼 수 있다. 사례1:java.sql.SQLException : ORA-01013 : 사용자가 현재 작업의 취소를 요청했습니다. 그런데 이 SQL을 돌려보았더니 쿼리 수행시간이 너무 오래 걸려서 ( 튜닝이 필요하겠죠 ) 제우스나 스튜디오가 일정시간 동안 응답이 없을 경우 time out 으로 끊어 버리기 때문에 발생되는 오류 메시지입니다. 즉, 프로프레임의 버그라고는 볼 수 없습니다. 해결방법으로는 1. sql 수행속도를 3초 이내에.. 더보기
구조체 패딩(padding) 문제 1. 구조체와 패딩비트 아래와 같은 구조체를 선언했다고 하자. struct test_s { char a; int b; } test; char가 1바이트이고 int가 4바이트인 시스템에서 위의 구조체를 선언하고 sizeof()로 구조체의 사이즈를 찍어보면 얼마가 나올까? 생각대로라면 5바이트가 나와야 한다. 1 + 4 = 5 이니까.. 그런데 대부분의 컴파일러에서 실제로는 8바이트가 나온다. 이유는 패딩비트가 추가되어서 그렇다. 몇몇 컴파일러는 구조체의 필드를 메모리에 위치시킬때 중간에 빈 공간없이 쭉 이어서 할당하는 경우도 있지만, 대부분의 컴파일러는 성능향상을 위해 CPU가 접근하기 쉬운 위치에 필드를 배치한다. 그러다보니 중간에 빈 공간이 들어가게 되는것이다. 이 빈 공간이 바로 패딩비트이다. 이에 .. 더보기