본문 바로가기

Programming

(6)
Byte alignment 하드웨어의 제약이나 성능상의 이유로 데이터들을 특정한 바이트 경계들에 맞게 배치한다. 이를 바이트 정렬(Byte alignment)라고 부른다. 이때 바이트 경계에 맞추기 위해서 객체의 자료 끝에 추가적인 바이트들을 채우게 된다. 32비트 ) 4bytes -> 2bytes -> 1byte 64비트 ) 8bytes -> 4bytes -> 2bytes -> 1byte Struct 에서도 같은 기준이 적용되는데 정렬기준을 찾을때는 구조체의 처음 멤버가 이닌 전체 멤버중에서 가장 큰 데이터 타입을 기준으로 정한다. 여기서 또 한가지 중요한것은 구조체 선언시 멤버들의 순서에 따라 바이트가 늘어 날 수 있다는 것인데 struct _test { char a; long b; chat c; } 는 (long 이 8바이트..
[ODBC] ODBC test 윈도우에서 ODBC 함수에 대한 간단한 테스트를 확인하기 위해서는 소스 및 컴파일러등 부수적인것들이 많이 필요하다. 매번 테스트할때 마다 준비하기는 불편한다. ODBCTest 라는 (https://www.progress.com/support/evaluation/download-resources/download-tools) 프로그램을 통해서 함수 단위로 테스트를 할 수 있다.
[ODBC] SQLSetStmtAttr SQL_ATTR_PARAMS_PROCESSED_PTR insert 등을 수행하고 나서 처리된 건수를 나타내는 변수의 포인터, SQLExecute() 에서 SQL_SUNCCESS_WITH_INFO 나 나온 경우 SQL_ATTR_PARAM_STATUS_PTR 로 등록된 배열의 상태를 검사하여 SQL_PARAM_SUCCESS_WITH_INFO, SQL_PARAM_ERROR, SQL_PARAM_DIAG_UNAVAILABLE 일때 bad record 처리를 해야 한다. SQL_ATTR_ATOMIC_EXECUTION 은 goldilocks 에서만 지원하는 것인가??
[ODBC] SQLGetInfo Connection 의 여러 정보를 확인하기 위해 쓰이는 함수 DBMS 의 종류를 식별하기 위해 방법을 찾던 중 아래와 같이 할 수 있었음 SQLCHAR dbmsName[1024]; SQLCHAR dbmsVerName[1024]; SQLSMALLINT buffersize; retcode = SQLGetInfo(hdbc, SQL_DBMS_NAME, dbmsName, (SQLSMALLINT)1024, (SQLSMALLINT *)&buffSize); retcode = SQLGetInfo(hdbc, SQL_DBMS_VER, dbmsVerName, (SQLSMALLINT)1024, (SQLSMALLINT *)&buffSize); printf ("SQL_DBMS_NAME : %s\n", dbmsName); prin..
Doxygen 간단 사용법 정리 설치 sudo apt-get install doxygen graphviz doxygen -g doxygen Doxygen c 언어 기준 옵션정리 INPUT = /workspace/project_home INPUT_ENCODING = EUC-KR SOURCE_BROWSER = YES EXTRACT_ALL = YES OPTIMIZE_OUTPUT_FOR_C = YES OUTPUT_LANGUAGE = Korean OUTPUT_DIRECTORY = /workspace/project_home/doxygen HTML_TIMESTAMP = YES CALL_GRAPH = YES CALLER_GRAPH = YES LATEX_CMD_NAME = latex RECURSIVE = YES SOURCE_BROWSER = YES
JNI 를 이용한 Java Interface MiddleWare 사용하기 소개 JNI( Java Native Interface) 는 프로그래밍 인터페이스 이다. JNI 는 JVM 내부에서 실행되는 Java 코드를 C, C++ 등과 같은 걸로 구성된 라이브러리 등을 내부적으로 운영할 수 있도록 한다. JNI 의 사용유형은 다음처럼 두가지 경우이다. Java→ C/C++ 가장일반적인 형태로 android 가 대표적 OS 의 native 한 부분을 java 로 구현하기 어렵거나 성능적 이슈가 있는 경우 사용된다. 기존의 legacy 시스템 특수 하드웨어 제어 C/C++ → Java Lucene 엔진이 대표적( 기존 Java 엔진의 유용성이 매우 큰 경우 ) 기능, 성능면에서 이점은 없으나 기존 시스템이 Java 로 구현이 완전하게 되어 있는 경우 새로 구축하는 비용이 부담되는 경우..