분류 전체보기

Programming

시간복잡도 Big-O 정리

시간 복잡도? Big-O? 시간 복잡도는 알고리즘의 실행 속도를 "변수 N을 기준으로 대충 얼마 걸린다."라는 걸 표현하는 가장 쉽고 빠른 방법이다. Big-O는 특히 "최악의 상황에서 대충 얼마 정도 걸려요~"라는 걸 수식으로 요약해놓은 것이다. 경험상 프로그램에서 평균적이나 최선의 케이스 같은 건 크게 의미가 없고, 최악의 경우에 얼마가 걸리는지 파악하는 게 제일 중요하고 심지어 계산하기도 제일 편하다. 그래서 대부분 시간 복잡도를 물어보면 Big-O를 기준으로 이야기하곤 한다. (이하 내용에서도 시간 복잡도 = Big-O로 이야기하고 있으니 참고 바람.) 시간 복잡도 기초 O(N) : N의 시간이 걸림. - 오더(Order) N이라고 읽음 O(N²) : N제곱의 시간이 걸림. - 오더 엔 제곱 O(..

Programming/Linux and Web

docker 오류

Centos7로 도커를 가지고 놀면서 발생했던 오류 몇개를 정리 해보았다. 1. Cannot connect to the Docker daemon Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 도커 데몬 꺼져있어서 오류발생. systemctl start docker - 도커 데몬 켜고 systemctl enable docker - 도커 데몬 등록 2. Permission denied Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post ..

Programming/C++ & Unreal

Xcode tbb 설치

1. 터미널 실행 2. 터미널로 tbb 설치 brew install tbb 3. Xcode 프로젝트 파일 클릭 4. Build Settings에 Include, Lib Path 지정 5. Build Phases에 라이브러리 파일 링크 추가 끝 boost 설치도 거의 비슷한데, brew 말고 macPort 라는 것을 통해서 받았음.

Programming/C++ & Unreal

C++ 오브젝트풀 개선 with tbb

#pragma once #include #include #include template class CObjectPool{ public: CObjectPool(int size = 100){ _maxSize = size; for (int i = 0; i < _maxSize; ++i) { T* newObject = new T(); _qObjects.push(newObject); } } ~CObjectPool() { while (!_qObjects.empty()) { T* object; if( _qObjects.try_pop( object ) == true ){ delete object; } } _maxSize = 0; } // 오브젝트를 꺼낸다. T* PopObject() { T* retVal; // 꺼낼게 ..

Programming/C++ & Unreal

tbb concurrent bounded queue 차이

tbb에 있는, concurrent queue는 자주 썼었는데, concurrent bounded queue는 뭐하는 물건인고 궁금해서 찾아보았음. bounded queue (경계큐) - 용량을 지정 할 수 있는 큐 concurrent bounded queue(동시성 경계큐) - 용량을 지정하여 사용할 수 있는 멀티 쓰레딩 큐, 더이상 넣을 수 없거나 뺄 수 없으면 블락킹 된다. (try_push/pop 으로도 사용 가능) vs concurrent queue - 용량을 지정할 수 없고, 뺄 것이 없으면 실패한다. (애초에 pop 이라는 함수 자체가 없고, Try_pop 만 가능) #include #include using namespace std; int main(int argc, const char *..

Programming/C# & Unity

C# try catch finally

나는(일반적으로) 전체적으로 크게 감싸서 Exception을 잡을 때는 try-catch-finally를 쓰고, 해제와 같은 일을 할때는 try-finally를 쓴다. 1. try-catch-finally try { throw new NullReferenceException(); } catch ( Exception e ) { Console.WriteLine( $"It's Main's catch. :: {e.Message}" ); } finally { Console.WriteLine( "It's Main's finally." ); } 이건 제일 기본형. 패킷 단위에서 Exception을 막을 때 유용하게 씀. 2. try-finally static public void DoException() { try ..

Programming/C++ & Unreal

직렬화 라이브러리 완성!

혼자서 게임 서버를 처음부터 만들어보려고, 직렬화 라이브러리 부터 다시 만들었다. float, int, char, string, (multi)map, list, vector, array 등을 간단하게 매크로로 직렬화 하도록 구현 완료! 졸업 작품때, RPC를 만들면서 공부했던 매크로와 Template 기능을 여기서 다시 쓸 줄이야.. 프라우드넷을 모방해서 소켓 라이브러리를 만들어보려고 하는데.... C#에서만 써봐서 C++로 만드는 과정이 너무 힘들다. 그래도 언젠가 완성할 수 있겠지................

Programming/C++ & Unreal

C++ region

C#에서 Region을 매우 애용하는 편인데, 이 기능을 사용하면 IDE에서 소스를 용도에 따라 접고 펼수 있어서 넘 편하다. C++ 작업을 하면서 Region이 고팠는데, 찾아보니까 다음과 같은 방법으로 쓸 수가 있는 듯 하다. #pragma region 리전이름 void Test(){ // ... } #pragma endregion 리전이름 VS 2017에서는 됐었는데, 다른 IDE에서는 아마도 안 될듯 싶다. 출처 : https://stackoverflow.com/questions/9000479/equivalent-of-region-for-c

Programming/C++ & Unreal

C++ 메모리 덤프

개요 졸작으로 C++ 서버를 만들면서 제일 잣같았던 부분은, Try-Catch로 모든 Exception을 캐치 할 수 없다는 것이다. 특히 밥먹듯이 발생하던 "잘못된 메모리 접근"이 골치아팠는데, 그에 대한 해결 방법 중 하나인 Unhandled Exception Dump를 따는 법을 간단하게 적어보겠다. Try-Catch가 안되는 Exception void CreateException(int* a = nullptr) { a[100] = 100; } ... try { CreateException(); // 강제로 Memory Access Exception 유발. } // Memory Access Exception은 Catch되지 않는다. catch (...) { cout

Programming/C# & Unity

C# 자주 쓰는 Collection 집계 함수

자주 쓰는 컬렉션 집계함수들을 모아서 간단하게 사용법을 정리해보았다. 아래에서 사용한 함수는 아래와 같다. 0. Foreach 1. FindAll(찾기) 2. Except(차집합) 3. ToDictionary(사전화) 4. Select(골라내기) 5. Sum/Min/Average(집계) 6. Aggregate(누산) 7. Dictinct(중복 제거) 0. Foreach 123456789101112131415161718192021222324252627282930// 번호와 이름을 갖는 구조체struct SchoolMember{ public int UID; public string strName;} // 리스트를 출력하는 함수.public static void Print( this List lst ){ ls..

장형이
'분류 전체보기' 카테고리의 글 목록 (4 Page)