이번 포스팅에서는 대규모 동시 접속을 지원하는 서버를 만드는 테스트 프로젝트를 진행하며, 과정에 대해 적어 보려 합니다. 목표 30000명이 동시에 접속할 수 있는 TCP 서버 만들기 30000명의 클라이언트는 전송 - 수신 - 전송 - 수신 을 반복한다. 30000명의 클라이언트를 켜 놓고, 다음날 서버가 에러 없이 살아 있는 것을 목표한다. 목표를 성취한 후에는 평균 응답 시간을 줄여보도록 하겠다. 프로젝트 Git Hub Repository 링크 https://github.com/MatorMirne/SocketCommunicate-TCP 프로젝트 명명 - 프로젝트:예수 저는 프로젝트에 이름 붙이기를 좋아합니다. 그렇게 하면 더 프로그램에 애정을 가질 수 있기 때문입니다. (저는 무교입니다!) 성경 말..
??= 는 = 대신에 쓰이는 대입 연산자입니다! 예시 a ??= 1; ??= 는 좌측의 항이 null일 때에만 대입이 됩니다. 예시 int? number = null; int defaultValue = 10; number ??= defaultValue; // number이 null이므로 대입 성공 Console.WriteLine(number); // 출력: 10 number = 20; number ??= defaultValue; // number에 10이 들어가 있으므로 대입하지 않음 Console.WriteLine(number); // 출력: 20
FirstOrDefault 는 LINQ(Language Integrated Query)의 메서드 중 하나로, 검색을 하다가 가장 처음으로 조건에 부합하는 결과물을 도출할 때 유용합니다! List names = new List { "Alice", "Bob", "Charlie", "Dave" }; string firstMatch = names.FirstOrDefault(name => name.StartsWith("B")); Console.WriteLine(firstMatch); // Output: "Bob"
드디어 이벤트 부분을 배워서 정리해 보도록 하겠습니다! 내가 알고 있던 이벤트 with LUA LUA 에서는 1) 이벤트 타입을 만들고, 2) 그 이벤트를 Event Invoke 함수를 통해 호출시키고, 3) 이벤트를 감지하는 Event Handler 를 추가하여 이벤트를 발생시켰습니다. 이벤트의 장점 저는 이벤트를 정말 사랑했습니다. 한 번의 호출로 여러 함수를 호출할 수 있었거든요. 저는 코드를 작성할 때 가장 중요한 것이 현실과의 유사성이라고 생각하는데, 이벤트를 사용하면 마치 프로그램과 대화를 하는듯한 코딩이 가능했습니다. 다시말해 아래 그림처럼, 각 Manager Class 들이 내 얘기를 듣고 있는 것처럼 코딩할 수 있었습니다. 이벤트의 단점 하지만 이벤트가 좋다고 이벤트를 남발하면, 코드 속..
글을 열며 드디어 이벤트 사용법을 알아냈습니다! 저는 LUA언어로 미니게임을 만들며 이벤트를 아주 잘 사용했었습니다. 그때의 좋은 기억 덕분에 C# 개발을 하면서도 "이거 이벤트로 만들면 진짜 딱인데..." 싶은 것들이 나올 때마다 서적을 펼쳐 이벤트 부분을 무작정 읽었습니다. 하지만 앞부분을 읽지 않으면 이벤트를 이해할 수 없었고, 그 앞부분 또한 앞부분의 앞부분을 읽지 않으면 이해하기 난해했습니다. 결국 드디어 서적의 앞부분을 다 읽고 이벤트까지 오게 되었는데, 이걸 설명하려면 델리게이트 정도는 정리하고 넘어가야 할 것 같습니다. 서적에서 왜 바로 이벤트부터 말해주지 않고 델리게이트를 먼저 설명하고 넘어가는지 글 작성자 입장이 되어 보고 나니 이해가 됩니다. 델리게이트란 ? 델리게이트는 함수를 저장하..
1. Nuget 패키지를 설치한다. 2. NLog.Config 파일을 만들어 줍니다. 아무데나 원하는 곳에 NLog.Config 파일을 만들어 줍니다. 파일 내용은 이렇게 적습니다. 3. 코드 작성 이제 코드를 아래와 같이 작성합니다. path는 위에서 만들어 준 NLog.Config 의 절대 경로를 입력했습니다. 프로세스를 실행하면 로그가 파일에 저장됩니다. public class Program { private static readonly NLog.Logger log = NLog.LogManager.GetCurrentClassLogger(); public static void Main(string[] args) { string path = "/Users/jaeeun/free/TestSolution/N..