2012. 3. 19. 23:38
[개발]
회사에서 하는 프로젝트를 너무 거대하게 계획한 면도 있지만, "정말 좋은 코드"로 새롭게 만들어 보겠다는 마음이 있어서 모든 것을 다 맨땅에서부터 만들다보니, 즐거운 점도 있지만 사소한 부분이 문제가 되는 경우가 많다.
원래 사용하던 데이터베이스는 Microsoft SQL Server 였는데, 이번 프로젝트에서는 SQL Server 를 비롯해서 모든 DB 를 지원하며, 특히 기본 DB 를 MySQL 을 사용하기로 계획했다.
MySQL 은 설치도 쉽고, 무료이며, 어떤 언어로도 쉽게 사용할 수 있다.
단, Visual C++ 만 빼고... -_-;
Visual C++ 에서 MySQL 을 사용하려면 MySQL 기본 C API 를 사용하거나, MySQL Connector/C++ 를 사용하거나, MySQL++ 를 사용하면 된다. MySQL++ 가 쉽고 편하다는 평가가 있었지만, 이번 프로젝트에서 기본적으로 고려하는 것은, 쓰기 편한 라이브러리가 아니라 '공식 지원되서 향후 10년간 코드를 업그레이드 하는데 문제가 없을 것'이었기 때문에 MySQL Connector/C++ 를 사용하기로 결정했다.
http://dev.mysql.com/downloads/connector/cpp/
기존에 사용하던 APMSetup 은 MySQL 의 include, lib 등이 제거된 상태로 배포되어서, APM 을 모두 지우고 Apache, MySQL, PHP 등을 모두 각 배포본을 이용해서 설치했다.
그리고, MySQL 의 기본 C API 를 이용해서 테스트.
어렵지는 않았으나, 문제는 한글이었다.
mysql_query 의 인자는 const char *
여기에 어떻게 UTF-8 을 넘겨줄 것인가?
보통 ANSI 를 Unicode (UCS-2) 로 변환하는 경우나 그 반대는 많았지만,
ANSI 를 UTF-8 로 변환하는 경우는 처음이었다.
물론, C#, JAVA, PHP, Ruby, Python 으로는 문제가 없다. 그냥 되니까.
하지만 나는 VC++ 개발자!!!
모든 것이 그냥 안되는 것은 기본~
ANSI 를 그대로 UTF-8 로 변환할 수는 없고,
ANSI 를 유니코드로 변환하고, 그것을 다시 UTF-8 로 변환해야 했다.
아, 유니코드를 5년 이상 가지고 주물럭 거렸음에도 아직도 이리 헤맬수가 있단 말이냐...
어쨌든 한글 문제를 해결하고 나서 마음의 평점심과 자신감을 되찾았다.
'필 받은 김에 까짓 MySQL Connector/C++ 도 테스트 해주겠어~~!'
당연히, "더" 편하라고 만들어 놓았을 라이브러리인데,
처음부터 꼬였다.
컴파일이 안된다.
온갖 삽질을 다 하고나서 겨우 컴파일 성공.
휴~
이젠 드라이버 받는 시작부터 안된다.
결국 해결은 했으나, 그 후 발생한 수 없이 많은 문제들로 이유조차 잊어먹었다.-_-;
그러나 가장 큰 문제는 쿼리 후 getString("column") 이 안된다는 문제였다.
getInt 는 되는데, getString 이 안된다.
이것은 문자 포멧 문제도 아니다.
무조건 access violance 가 발생하면서 프로그램 크래시.
몇 시간을 구글링도 하고 온갖 수작을 부려봤으나 해결 방법을 찾지 못하다가...
기적적으로 찾아낸 블로그에서MySQL Connector/C++ 라이브러리가 Visual Studio 2005, 2008 로만 빌드되어 있어서, Visual Studio 2010 에서 정상 작동이 안된다는 (getString 에서 오류가 난다는!!!!) 얘기가 있었다. 우어어엉~ 어쩌라고!!!
그런데, 다행이도 MySQL Connector/C++ 라이브러리는 CMake 로 빌드할 수 있는 환경을 제공해주고 있었다. 사실 C++ 이고, Java 고 Visual Studio 나 Eclipse 에서 빌드해주는 혜택만 봤지 콘솔창에서 빌드하는 것을 즐기지 않아서 굉장히 스트레스였는데, 의외로 성공적으로 빌드가 됐다.
그리고 그 빌드 버전으로는 getString 에서 에러가 나지 않는다!
이렇게 행복할수가...!
물론, 솔직히 말하자면 '내가 빌드한 버전'이기 때문에, 다른 곳에서 문제가 발생할까봐 굉장히 두렵지만(...) 오라클에서 곧 비주얼스튜디오 2010 버전으로 빌드한 라이브러리도 제공해주지 않겠어? 하는 희망을 가지고 있다. -_-;
잘 될꺼야. 아무렴 잘 될고 말고...
아, 정말 이번 프로젝트 너무 빡센것 같다.
원래 사용하던 데이터베이스는 Microsoft SQL Server 였는데, 이번 프로젝트에서는 SQL Server 를 비롯해서 모든 DB 를 지원하며, 특히 기본 DB 를 MySQL 을 사용하기로 계획했다.
MySQL 은 설치도 쉽고, 무료이며, 어떤 언어로도 쉽게 사용할 수 있다.
단, Visual C++ 만 빼고... -_-;
Visual C++ 에서 MySQL 을 사용하려면 MySQL 기본 C API 를 사용하거나, MySQL Connector/C++ 를 사용하거나, MySQL++ 를 사용하면 된다. MySQL++ 가 쉽고 편하다는 평가가 있었지만, 이번 프로젝트에서 기본적으로 고려하는 것은, 쓰기 편한 라이브러리가 아니라 '공식 지원되서 향후 10년간 코드를 업그레이드 하는데 문제가 없을 것'이었기 때문에 MySQL Connector/C++ 를 사용하기로 결정했다.
http://dev.mysql.com/downloads/connector/cpp/
기존에 사용하던 APMSetup 은 MySQL 의 include, lib 등이 제거된 상태로 배포되어서, APM 을 모두 지우고 Apache, MySQL, PHP 등을 모두 각 배포본을 이용해서 설치했다.
그리고, MySQL 의 기본 C API 를 이용해서 테스트.
어렵지는 않았으나, 문제는 한글이었다.
mysql_query 의 인자는 const char *
여기에 어떻게 UTF-8 을 넘겨줄 것인가?
보통 ANSI 를 Unicode (UCS-2) 로 변환하는 경우나 그 반대는 많았지만,
ANSI 를 UTF-8 로 변환하는 경우는 처음이었다.
물론, C#, JAVA, PHP, Ruby, Python 으로는 문제가 없다. 그냥 되니까.
하지만 나는 VC++ 개발자!!!
모든 것이 그냥 안되는 것은 기본~
ANSI 를 그대로 UTF-8 로 변환할 수는 없고,
ANSI 를 유니코드로 변환하고, 그것을 다시 UTF-8 로 변환해야 했다.
아, 유니코드를 5년 이상 가지고 주물럭 거렸음에도 아직도 이리 헤맬수가 있단 말이냐...
어쨌든 한글 문제를 해결하고 나서 마음의 평점심과 자신감을 되찾았다.
'필 받은 김에 까짓 MySQL Connector/C++ 도 테스트 해주겠어~~!'
당연히, "더" 편하라고 만들어 놓았을 라이브러리인데,
처음부터 꼬였다.
컴파일이 안된다.
온갖 삽질을 다 하고나서 겨우 컴파일 성공.
휴~
이젠 드라이버 받는 시작부터 안된다.
결국 해결은 했으나, 그 후 발생한 수 없이 많은 문제들로 이유조차 잊어먹었다.-_-;
그러나 가장 큰 문제는 쿼리 후 getString("column") 이 안된다는 문제였다.
getInt 는 되는데, getString 이 안된다.
이것은 문자 포멧 문제도 아니다.
무조건 access violance 가 발생하면서 프로그램 크래시.
몇 시간을 구글링도 하고 온갖 수작을 부려봤으나 해결 방법을 찾지 못하다가...
기적적으로 찾아낸 블로그에서MySQL Connector/C++ 라이브러리가 Visual Studio 2005, 2008 로만 빌드되어 있어서, Visual Studio 2010 에서 정상 작동이 안된다는 (getString 에서 오류가 난다는!!!!) 얘기가 있었다. 우어어엉~ 어쩌라고!!!
그런데, 다행이도 MySQL Connector/C++ 라이브러리는 CMake 로 빌드할 수 있는 환경을 제공해주고 있었다. 사실 C++ 이고, Java 고 Visual Studio 나 Eclipse 에서 빌드해주는 혜택만 봤지 콘솔창에서 빌드하는 것을 즐기지 않아서 굉장히 스트레스였는데, 의외로 성공적으로 빌드가 됐다.
그리고 그 빌드 버전으로는 getString 에서 에러가 나지 않는다!
이렇게 행복할수가...!
물론, 솔직히 말하자면 '내가 빌드한 버전'이기 때문에, 다른 곳에서 문제가 발생할까봐 굉장히 두렵지만(...) 오라클에서 곧 비주얼스튜디오 2010 버전으로 빌드한 라이브러리도 제공해주지 않겠어? 하는 희망을 가지고 있다. -_-;
잘 될꺼야. 아무렴 잘 될고 말고...
아, 정말 이번 프로젝트 너무 빡센것 같다.
'개발' 카테고리의 다른 글
맥미니 2012 개조기 (SSD 교체) (13) | 2013.05.06 |
---|---|
맥미니 2012 구입기 (0) | 2013.05.06 |
실용주의 프로그래머 (5) | 2008.10.13 |
RSS 리더를 만들다가 (2) | 2007.03.05 |
파이썬을 공부하다 (2) | 2007.03.05 |