신준철의 프로그래밍

centos 6 셋팅 과정 기록

By  | 2020년 6월 30일 | 
이 글은 내가 centos 6.8에서 라이브러리(c++ 소스) 하나를 컴파일 하기 위한 과정을 남긴 것이다. 윈도우에서 vmware 무료 버전을 설치하고, 거기에 centos iso를 dvd 1 to 2 버전을 받았다.minimal 버전은 너무 불편하고, 콘솔만 나오는데 콘솔 상태에서 윈도우안의 파일과 자주 교환하는 방법을 잘 모르기 때문.역시 마우스를 쓰면서 작업하면 워낙에 편해서 데스크탑 모드 (gui) 가 가능한 dvd1to2 버전을 설치.무려 5기가 넘는다.토렌트를 사용해서 받는게 현실적으로 편하고, 그 과정에서 utorrent를 쓰려고 했는데 요즘 qBittorrent가 유행이라며 그걸 받음. centos 6을 설치할 때에 vmware의 설치보조 기능은 사용할 수 없었다.직접 셋팅을 일일이 해야

트레이딩뷰 기본 사용 방법과 꿀팁 : 주식이나 비트코인 차트 사이트

By  | 2019년 11월 24일 | 
트레이딩뷰는 주식이나 가상화폐들의 가격을 보고, 차트를 분석하고, 그런 분석을 공유하는 사이트입니다. (링크에는 제 리퍼럴이 있습니다. 제가 정성들여 작성한 글에 대한 작은 보상 정도로 생각해주세요. 해가 되지는 않습니다.) 한가지 재미있는 점은, 그런 분석내용이 영구 보관되고 삭제도 어려워서 누군가가 계속해서 분석을 정확하게 한다면 쉽게 명성(?)을 얻을 수도 있고, 반대로 묻힐 수도 있죠. 누가 제대로 주가를 예측하고 있는지 추적이 되고 그런 정보를 믿을 수가 있죠. 생각해보세요 누군가 계속 실패하는 분석을 올리고 있는데, 그 사람이 자신의 과거를 지운다면? 별로 믿음직스럽지 않죠.트레이딩뷰는 그런면에서 상당히 철저하게 관리중인 사이트입니다. 예전에 사용법을 올린적이 있었는데 다른 블로그에...

c#에서 c++ dll의 wstring(wchar_t*)를 함수로 받아오는 방법

By  | 2019년 5월 21일 | 
본 내용은 조금 복잡하며, 나는 시간을 많이 들여서 글을 쓸 처지가 안돼서, 글을 읽게 되면 제법 성의 없게 느껴질 수 있음을 미리 경고한다. ============================== c++쪽 DLL_EX_IN const wchar_t* fun(...) 참고! 여기서 DLL_EX_IN이란#define DLL_EX_IN __declspec(dllexport) DLL_EX_IN은 좀 더 정확하게 하자면 사실 더 긺.#ifdef _WIN32 #ifdef DLL_EXPORT #define DLL_EX_IN __declspec(dllexport) #else #ifdef DLL_IMPORT #define DLL_EX_IN __declspec( dllimport ) #el

gdb로 리눅스 c++ 디버깅 팁 기록

By  | 2019년 4월 30일 | 
gdb에 앞서 컴파일을 할 때 -O2 빼고 -g 넣으면 됨. -g3 는 더욱 자세한 디버깅인듯. gdb 명령어. 구글링으로 쉽게 알 수 없는 팁들을 기록. gdb UTaggerC // UTaggerC로 디버깅 시작. break abort // abort 될 때 멈춰줌. 이걸 해야 제대로 멈춘 줄을 알 수 있다. 또는 break exit 또는 break _exit abort 는 메모리 침범(내가 막 지어 부르는 용어)으로 긴급정지할 때 발생하는 이름이다. 여기에다가 브레이크포인트를 설치하게 된다. 그래서 break abort를 하면 어디쯤에서 멈추는지 소스코드 상의 위치를 알 수 있다. 버그에 따라 멈추는 지점이 랜덤할 수도 있는데, 그건 이 방법으로 해결하기가 쉽지 않다.그러나 경험상 그 문제

c++에서 백터와 포인터와 참조를 다룰 때 자동 재할당을 주의해야한다

By  | 2019년 4월 30일 | 
예제 void tagger::RuleFinish(vector<Word_Freq> *pVecWF) //이런 함수가 있고 보다시피 pVecWF라는 변수를 가져오는데 이를 다루기 쉽게 백터래퍼런스로 바꾸어 사용한다vector<Word_Freq> &vecWF = *pVecWF; //여기까진 문제가 없다. 혹여나 pVecWF의 내부 백터용량이 다 차서 재할당이 일어나도 문제는 없다. vector<UMorp> &vecMor = *(*pVecWF)[a].pVecMorp; //이렇게 되면 a번째의 요소인 vecMor은 pVecWF가 재할당이 일어나면 큰 문제가 발생한다. 메모리 침범을 일으킨다. 경험상 윈도우에서는 쉽게 일어나지 않지만 리눅스에서는 자주 일어난다.