프로그래밍 썸네일형 리스트형 [디버깅] 조건 디버깅(VS2015) 200개의 데이터에 150번째 데이터를 보고 싶은데 어떻게 해야하나?150번 F5? 브레이크 포인트에 조건 걸어주기2015오면서 조금 세련되게(?) 코드에 바로 저렇게 수정할 수 있는 UI가 나온다.2013까진 아마 새창이 뜬 것으로 알고 있다. 해당 변수에 i == 150 의 조건식을 걸어주고 F5를 누르면 for를 반복한 후 150일 때 브레이크가 걸린다. char* 문자열일 경우는 strcmp(str, "string")의 형태로 조건식을 걸어주면 된다. 더보기 [디버깅] 메모리 디버깅(VS2015) 메모리 디버깅 과정은해당 자료의 포인터를 이용하여 해당 지점의 값이 변경되었는지를 확인하는 방법이다.변경 시점을 예상하기 어렵거나 알 수 없는 지점에서 변경되어 버그가 생길 때 사용할 수 있다.사실상 소규모 프로젝트에선 쓸 일이 거의 없겠지만규모가 큰 프로젝트에선 가끔씩 쓸 일이 생길 수 있다. 과정과정은 간단히 요약하면중단점 걸기 -> 관찰 하고자 하는 자료의 포인터 알아내기 -> 해당 포인터로 중단점 걸기 -> 적중 중단점 걸기그렇다. 중단점을 걸어야 데이터를 볼 수 있으니..예제는 testData 백터에 0번째 값을 변경한다. 중단점 지정조자식을 통해 testData의 0번째 데이터의 포인터를 얻을 수 있다.0x00$$$$$$ 형태로 된 포인터를 복사해두고(메모장이나 직접 입력) 새로 만들기 -> .. 더보기 [SVN] cleanup이 안 될때! 문제 문제가 생겨 정리하기 위해 클린업을 하는데 그 클린업이 안 되서 문제인 상황. 재귀적으로 고통을 받는다! 100% 해결이 되지 않을 수 있지만 보통 작업 큐가 꼬인 문제일 가능성이 높다. 보통 에러코드는 요놈! **_svn: E155037: Previous operation has not finished; run 'cleanup' if it was interrupted_** 해결 svn 트렁크에서 숨길폴더로 되어있는 .svn 폴더를 찾는다. 해당 폴더 안에는 wc.db라는 sqlite db가 있다. 이는 svn 내부 인덱스 등을 관리하는 녀석으로 해당 테이블 중 work_queue 테이블은 작업을 큐잉하고 관리하는 테이블로 보인다. sqlite로 여기에 work_queue 테이블을 싸그리 제거해주면.. 더보기 [effective STL] 항목 20 : 연관 컨테이너에 포인터 넣을 때 비교 함수자 타입을 정해주기 Sourcehttps://github.com/ElementalKiss/Cpp/blob/master/Example/AssociateContainerAndPointer.cpp 간단한 예제123456789 std::set ssp; ssp.insert(new std::string("koko")); ssp.insert(new std::string("love")); ssp.insert(new std::string("elki")); ssp.insert(new std::string("momo")); // 해당 방법으로 출력하며 원하는 순서가 나오지 않는다. // 그냥 넘겨주면 포인터 값으로 정렬하게 된다. std::for_each(ssp.begin(), ssp.end(), print);cs 결과는 koko, love,.. 더보기 [effective STL] 항목 18 : vector<bool> 쓰지마 서론vector은 STL 컨테이너로서 두 가지가 부실하다.- 첫째는 STL 컨테이너가 아니다.- 둘째는 bool을 담고 있지도 않다. 실제로 vector은 bool을 압축시킨 데이터 표현 방식으로 구현되어 있다.한 바이트에 여덟 개의 bool을 담을 수 있게 구현.(이게 무슨 짓이지?)프록시 객체라고 불리는 패턴을 쓰고 있다. 실제로 안 되는 예시123 std::vector boolVec; bool* pb = &boolVec[0]; //error C2440: 'initializing' : cannot convert from 'std::_Vb_reference *' to 'bool *'cs 그럼 정확한 bool을 담는건 뭐야?deque, bitset을 사용하면 된다. 더보기 [effective STL] 항목 17 : 용량 바꿔치지 묘수(swap) 예시100000명의 지원자를 담는 백터가 있다고 했을 때,지원자가 줄어들때마다 백터에서 erase된다.10명이 남게 되었을 때, 용량은 그대로 100000이다. 어떻게 해야하는가? 방법swap을 통한 방법이다.복사생성자를 이용하여 나오는 임시객체와 기존 객체를 스왑한다. 1234567891011121314151617181920212223242526272829303132333435363738#include #include #include void printSizeAndCapacity(const std::vector& vec){ std::cout 더보기 [effective STL] 항목 16 : 기존 C API에 vector와 string 넘기기 Sourcehttps://github.com/ElementalKiss/Cpp/blob/master/Example/VectorAndStringUsingCAPI.cpp 서론기존에 잘 구현되어 있는 C API를 사용하는데 vector와 string을 쓰는데 뭔가 깨림찍한게 있다. vector - &vec[0]을 통해 포인터를 넘긴다.string - str.c_str() 함수를 통해 문자열 포인터를 넘긴다. begin?begin()은 엄연히 반복자를 반환하므로 헷갈리면 안된다. 굳이 사용하겠다면 &*vec.begin() 형태로....(이건 좀 아닌듯) string은 왜 함수를 사용하는가?- string의 데이터 자체가 연속 메모리에 저장되도록 규정되어 있지 않다.(아닐수도 있다는 이야기)- string의 내부 .. 더보기 [erlang] 예외 분산 어플리케이션 제작이 목표라면 오류 처리의 작동 방식이 매우 중요하다. 소스https://github.com/ElementalKiss/Erlang/blob/master/example/try_test.erl erlang에서 예외를 잡는 방법예외를 발생시킬 것 같은 함수를 try-catch로 감싸는 것.함수 호출을 catch식으로 감싸는 것. 예외 발생시키기exit(Why) - 프로세스 종료.(예외를 잡지 않을 경우 연결된 모든 프로세스에 broadcast)throw(Why) - 함수가 예외를 던질 수 있다. 선택1. 통상적인 경우만 처리하고 예외 무시, 선택2. try-catch로 감싸서 오류 처리.erlang:error(Why) - crashing error를 표시. 호출자가 예기치 못한 상황 발생... 더보기 이전 1 ··· 10 11 12 13 14 15 16 ··· 38 다음