Programming

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..

Programming/C# & Unity

C# 4.0 쓸만한 기능

세미나하면서 알게된 기능 두개. 쓸만해보여서 기록함. 1. 함수 파라미터에 콜론 (선택적 인수) (https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments) 선택적 인수는 항상 끝에 나열되기 때문에, 새로운 인수를 추가하는 과정이 매우 번거롭다. 그리고 선택적 인수가 여러개 있을 때, 한개의 값만 넣으려고 하면 C++은 매우 불편했다.. static void Main( string[] args ) { List lstInteger = new List(); PrintTypeOfC( 1, null, lstInteger ); // 이렇게 중간에 선택적 인자에 값을 넣..

Programming/C# & Unity

C# 비동기 루프 및 실행

개요 .Net C#에서 지원해주는 *Awesome* 한 비동기 기능에 대해서 간단히 기록하려고 게시글을 작성합니다. 정확히는 Parallel 클래스에 관련된 함수들을 소개합니다. Parallel 클래스 간단하게 비동기 작업을 수행할 수 있도록 도와주는 클래스입니다. Task나 Action, Thread 같은 것들을 직접적으로 만들 필요 없이 기존에 사용하던 Loop나 함수처럼 간단히 사용할 수 있습니다!! Parallel.For (비동기 루프) 루프를 여러 스레드로 나누어 수행하도록 합니다. // iToPage까지의 게시글 내용을 하나하나 긁어오는 함수. List GetBoardContents( int iToPage_ ) { List lstResult = new List(); for ( int iPage..

Programming/C# & Unity

C# ThreadLocal

개요 스레드 별로 독립적임을 보장해주는 자원을 만드는 템플릿 클래스이다. 아래 예를 보면 금방 이해가 될 듯. 예1 - 기본 사용법 // 쓰레드별로 서로 다른 Counter를 갖는 싱글턴 클래스 public class ThreadLocalClass : Singleton { // 글로벌 카운터 private static Int32 _iCounter = 0; // 쓰레드 전용 카운터 private ThreadLocal _iLocalCounter = new ThreadLocal( () => { return Interlocked.Increment( ref _iCounter ); } ); public bool Init() { return true; } // 쓰레드 전용 카운터 출력 public void Print..

Programming/C# & Unity

C# ?. ?? 연산자

개요 ?. ?? 모양부터 ??하게 만드는 연산자. 무슨 연산자인지 살펴보자. ?. 연산자 ?. 연산자는 [ Null이 아니라면 참조하고, Null이라면 Null로 처리 ]하라는 뜻이다. class CClass { public List lstNumber = new List();; }; static void Main( string[] args ) { CClass newClass = new CClass(); Console.WriteLine( newClass?.lstNumber ); // List 정보가 출력됨. CClass nullClass = null; Console.WriteLine( nullClass?.lstNumber ); // 아무것도 출력되지 않음. (null) } 아래의 CClass의 경우에는 멤..

Programming

C# Tuple

개요 Tuple이라는 기능은 비단 C#에서만 사용하는 기능이 아니고 C++, 파이썬등 여러 프로그래밍 언어에서 자체 지원해줄만큼 강력한 기능이다. 이 기능이 무엇이며 언제 써야하는지 간단히 적어보았다. 필요성 먼저 아래와 같은 함수가 있다고 가정해보자. CResult Func(int a_, int b_, int c_) { CResult result = new CResult(); result.a = a_; result.b = b_; result.c = c_; return result; } 매개변수를 토대로 어떤 클래스를 만들어 뱉어주는 함수이다. 여기서 인자에 제한이 생겼다! 0이하의 값은 받지 않도록 수정해보았다. CResult Func(int a_, int b_, int c_) { // 0이하의 값이 ..

Programming/MSSQL

MSSQL order by 1

select * from TABLE order by 1; -> 1번 칼럼의 순서로 정렬 select * from TABLE order by 1 desc; order by 2를 하면 2번 칼럼의 순서로 정렬 할 수 있다.

장형이
'Programming' 카테고리의 글 목록 (4 Page)