Programming

Programming

[javascript] for...in 사용시 주의사항 (with prototype)

프로젝트 내에서 공통으로 사용하기 위해서 prototype에 확장함수를 등록하여 사용하던 중 문제가 발생했다. 확장함수를 포함하여 개발된 라이브러리를 html에서 import하고 페이지를 로드하니 정상적으로 동작하던 기능들이 정상동작하지 않는 문제가 발생했다. 일반적으로 Array.prototype.forEach 또는 Array.prototype.map을 사용하여 배열의 요소들을 다뤘는데, 공동으로 작업하다 보니 for (let i in array)와 같은 방법으로 처리한 코드가 존재했기 때문이다. 문제가 발생한 사항은 다음과 같다. if(!Array.prototype.hasOwnProperty('fname')) { Array.prototype.fname = function(){} } for (let i..

Programming/JS

[NodeJS] Cannot read property 'Symbol(requestOptions)' of undefined

서비스 배포를 준비하기 위해 개발서버 상에서 테스트를 수행하던 중 개발PC에선 보지 못한 오류를 발견했다. _http_agent.js:444 options = req[kRequestOptions]; ^ TypeError: Cannot read property 'Symbol(requestOptions)' of undefined at Agent.removeSocket (_http_agent.js:444:20) at TLSSocket.onClose (_http_agent.js:371:11) at TLSSocket.emit (events.js:327:22) at net.js:673:12 at TCP.done (_tls_wrap.js:563:7)원인을 다양한 방법으로 찾아보았으나, 원인을 파악하기 ..

Programming/QT

[QT] Windows에서 QOCI (Oricle DB) Driver 빌드

[Programming/QT] - [QT] CentOS 7 환경에서 QOCI (Oracle DB) Driver 빌드 [QT] CentOS 7 환경에서 QOCI (Oracle DB) Driver 빌드 필수 환경 QT 설치 QT 공식홈페이지 에서 QT를 다운로드 받아 설치한다. 설치 과정 중 필수로 Source 를 선택하여 QT소스코드가 함께 설치되도록한다. 본 게시글에서는 QT 5.9.1 버전을 사용한다. 설치 blog.rixa.kr 이전 포스팅에서는, QOCI 드라이버의 빌드를 CentOS 7 환경에서 진행하는 것으로 작성하였다. 이번 포스팅에서는 Windows에서 QOCI 빌드를 하는 법을 설명하려 한다. 필수 환경 QT 설치 QT 공식홈페이지 에서 QT를 다운로드 받아 설치한다. 설치 과정 중 필수로..

Programming/QT

[QT] QOCI를 이용한 CLOB 데이터 insert중 ORA-03113 (EOF) 오류 발생 대처법

오류 발생 긴 길이의 QString 데이터를 CLOB column에 insert 하자, ORA-03113 "end of file on communication channel" 오류가 발생하였다. Master Note: Troubleshooting ORA-03113 Master Note: Troubleshooting ORA-03113 (Doc ID 1506805.1) Last updated on MARCH 12, 2021 Applies to: Oracle Database Exadata Express Cloud Service - Version N/A and later Oracle Database Cloud Service - Version N/A and later Oracle Database - Enterpr..

Programming/QT

[QT] CentOS 7 환경에서 QOCI (Oracle DB) Driver 빌드

필수 환경 QT 설치 QT 공식홈페이지 에서 QT를 다운로드 받아 설치한다. 설치 과정 중 필수로 Source 를 선택하여 QT소스코드가 함께 설치되도록한다. 본 게시글에서는 QT 5.9.1 버전을 사용한다. 설치 경로는 /opt/Qt5.9.1 이다. Oracle SDK Oracle Instant Client 에서 Oracle Instant Client를 다운받는다. Basic Package (ZIP) SDK Package (ZIP) 본 게시글에서는 21.1.0.0.0 버전을 사용하였다. Basic Package는 /opt/instantclient, SDK Package 는 opt/instantclient/sdk 에 압축 해제 하였다. 빌드 OCI의 소스코드가 위치한 경로로 이동한다. cd /opt/Qt..

Programming/QT

[QT] static assertion failed: Type is not registered, please use the Q_DECLARE_METATYPE

QT를 이용하여, 개발을 하다 보면 자주 만나는 메시지다. QVariant와 같은 QT에 미리 지정된 템플릿 클래스를 이용하다 보면 위와 같은 에러 메시지를 종 종 볼 수 있는데, 사용자 정의 클래스/타입이 미리 선언되어있지 않아 발생하는 오류다. enum ENUM_TYPE { ENUM_1, ENUM_2 } QVariant v; v.value(); // 에러 이는 헤더 파일에 Q_DECLARE_METATYPE(TypeName) 과 같이 작성하면 해당 문제는 해결된다. enum ENUM_TYPE { ENUM_1, ENUM_2 } Q_DECLARE_METATYPE(FSStatus); QVariant v; v.value();

Programming/QT

[QT] C++ std::string과 QString 간의 문자열 형 변환 방법

개요 QT C++로 프로그램을 작성하면, 타 라이브러리와의 연동을 위해 std::string 을 QString으로 변환하거나, 그 반대를 수행해야 하는 경우가 잦다. 이를 해결하기 위한 방법은 다음과 같다. std::string -> QString QString의 함수 이용 QString은 std::string을 QString으로 변환해주는 함수 QString::fromStdString 함수를 제공한다 사용 예시 std::string str ="Hello, World!"; QString qstr = QString::fromStdString(str); 위의 방법을 사용하면 손쉽게 형 변환이 가능하다. string pointer 이용 std::string을 QString으로 변경하기 위한, char 배열로 ..

Programming/C & C++

[C++] different underlying type in enum 'enum class TypeName'

Error 발생 원인 enum class를 선언하고, 공통 헤더에서 prototype만 정의하려는 시도를 진행하였으나, 제목과 같은 에러가 발생하였다. 이러한 현상은 enum class의 구현부의 underlying type과 prototype의 underlying type이 서로 달라 발생하는 오류이다. 예제 코드 global.h enum class Type; enumclass.h #include "global.h" enum class Type : unsigned int { A, B, C } 위와 같이 global.h에는 별다른 type을 지정안했으나, enumclass.h에는 별도의 타입이 지정되어 있을 때 발생한다. 해결 방법 이러한 부분은 아래와 같이 타입을 지정해주면 해결 된다. 예제 코드 gl..

후유증
'Programming' 카테고리의 글 목록