전체 글

· Server/C#
📕 xUnit?C# .NET 테스트 자동화 툴입니다.근데 솔직히 아직 뭐가 좋은지 모르겠음 집계해주는거 ? 병렬로 해주는거? 이건 그냥 라이브러리 안쓰고도 할 수 있지 않나         🖼️ 환경 설정 1. 테스트 솔루션 생성테스트를 하기 위해, 공식 문서의 예제 파일을 생성하는 방법입니다. ( 출처 : xUnit 공식문서 ) dotnet new install xunit.v3.templatesdotnet new xunit3쉘에 위 스크립트를 실행시키면, 아래와 같이 솔루션 파일이 생겨납니다.   2. 현재 솔루션에 xUnit 적용개발된 솔루션에 xUnit만 추가하는 방법입니다. xUnit을 추가할 프로젝트의 csproj 파일을 텍스트 뷰어로 열어줍니다.  저는 위와 같이 나오네요.  솔루션 파일의 ..
· Server/C#
좋은 서버 개발자가 무엇인가! 바로 서버가 죽지 않게 개발하는 서버 개발자이다. 그러려면 실행 에러에 대한 잡지식이 많아야 하는것같다. 컴파일 에러는 IDE 가 잡아 주니... 그래서 이제 이 페이지에 잡지식을 기록해 보려고 한다. 2024년 3월 22일 금요일 1. 제너릭를 쓸 때, 제너릭 변수 자리에 null을 넣으면 서버가 터진다 2. 클래스를 사용할 때, 널인 상태에서 맴버를 찾으려고 하면 서버가 터진다. 2024년 4월 9일 화요일 3. List.AddRange(null) 은 에러난다.
· Server/C#
lock 을 하면 비동기를 사용할 수 없다. 더보기 정확히는 위험하다. ( lock(리소스) {작업} 식으로 사용할 때에는 아예 컴파일 에러가 난다. ) lock 은 다른 스레드에서 이 리소스에 접근하지 못하게 하는 기법이기 때문이다. 비동기 호출을 하게 되면 await 를 할 때마다 실행 중이던 작업이 중지되고 대기 상태가 되었다가 스레드 풀의 스레드 중 하나에서 실행이 되는데, 이때 스레드가 원래 lock 을 했던 스레드가 아닐 가능성이 매우 높기 때문에 이 리소스에 접근하지 못하게 되는 현상이 생겨날 수 있다. 아무튼 이런 이유 때문에 비동기 함수에서 lock 을 주의해서 써야 한다. 비동기에서 lock 을 사용하려면 SemaporeSlim 을 사용하면 된다. SemaphoreSlim 은 lock ..
· Server/C#
생성자 public class Mom { public Mom() { Console.Write("mom "); } } public class Son : Mom { public Son() { Console.Write("son "); } } public static void Main() { new Son(); // mom son new Mom(); // mom } mom son mom 상속 public class Mom { public void Print() { Console.Write("mom "); } } public class Son : Mom { public void Print() { Console.Write("son "); } } public static void Main() { var son = n..
· Server/C#
해시테이블 딕셔너리 Key, Value 모두 자료형을 지정할 필요 없다. Key, Value 모두 자료형을 지정해야 한다. 박싱-언박싱 을 사용한다. 박싱-언박싱 을 사용하지 않는다. 해시 테이블의 박싱-언박싱 과정에서 데이터가 값 복사가 일어날 것이라 생각했는데, 참조가 보호된다. var list = new List(); list.Add(1); Console.WriteLine(JsonSerializer.Serialize(list)); var hashTable = new Hashtable(); hashTable.Add(1, list); var listInHash = hashTable[1]; var convertedListInHash = (List)listInHash; convertedListInHash...
내 목표는 3만개 클라이언트 연결인데, 이런 에러가 났다. Unhandled exception. System.Net.Sockets.SocketException (23): Too many open files in system 클라이언트가 10151개를 넘어서면서부터 연결이 안된다. 이유는 대충은 알겠지만, 어떻게 해결해야할지가 좀처럼 떠오르지 않는다. 데이터를 주고받는데에서 문제가 생긴거면 로드밸런싱을 할텐데, 연결 자체에 문제가 생겨 버리니 로드밸런싱을 시도해도 로드밸런서에서 에러가 날 것 같다. 이 사람도 나와 똑같은 문제를 겪었다. 코드 자체도 완전 비슷하다. https://groups.google.com/g/netmq-dev/c/rjAOWdHTvus 이제 10년이 지났는데, 알아냈을까? 메일을 보내..
개발자 재은
개발자 재은