Laravel 에서는 web.php 파일에 경로와 함수를 지정해 주면, 해당 페이지가 자동으로 라우팅됩니다.저는 이번에 이 자동이 어떻게 구현되었는지를 파헤쳐 보려고 합니다. web.php 입니다./sign-up 페이지가 호출되면 AccountController 클래스의 signUp 함수의 결괏값을 리턴하는 기능을 합니다. 웹 페이지 /sign-up 이 호출되면, 제일 먼저 public/ini.php 파일이 진입점으로 작동합니다.하나하나 파고 들어가 보겠습니다.더보기$app = require_once __DIR__.'/../bootstrap/app.php'; 더보기$app->handleRequest(Request::capture());
📕 xUnit?C# .NET 테스트 자동화 툴입니다.근데 솔직히 아직 뭐가 좋은지 모르겠음 집계해주는거 ? 병렬로 해주는거? 이건 그냥 라이브러리 안쓰고도 할 수 있지 않나 🖼️ 환경 설정 1. 테스트 솔루션 생성테스트를 하기 위해, 공식 문서의 예제 파일을 생성하는 방법입니다. ( 출처 : xUnit 공식문서 ) dotnet new install xunit.v3.templatesdotnet new xunit3쉘에 위 스크립트를 실행시키면, 아래와 같이 솔루션 파일이 생겨납니다. 2. 현재 솔루션에 xUnit 적용개발된 솔루션에 xUnit만 추가하는 방법입니다. xUnit을 추가할 프로젝트의 csproj 파일을 텍스트 뷰어로 열어줍니다. 저는 위와 같이 나오네요. 솔루션 파일의 ..
좋은 서버 개발자가 무엇인가! 바로 서버가 죽지 않게 개발하는 서버 개발자이다. 그러려면 실행 에러에 대한 잡지식이 많아야 하는것같다. 컴파일 에러는 IDE 가 잡아 주니... 그래서 이제 이 페이지에 잡지식을 기록해 보려고 한다. 2024년 3월 22일 금요일 1. 제너릭를 쓸 때, 제너릭 변수 자리에 null을 넣으면 서버가 터진다 2. 클래스를 사용할 때, 널인 상태에서 맴버를 찾으려고 하면 서버가 터진다. 2024년 4월 9일 화요일 3. List.AddRange(null) 은 에러난다.
lock 을 하면 비동기를 사용할 수 없다. 더보기 정확히는 위험하다. ( lock(리소스) {작업} 식으로 사용할 때에는 아예 컴파일 에러가 난다. ) lock 은 다른 스레드에서 이 리소스에 접근하지 못하게 하는 기법이기 때문이다. 비동기 호출을 하게 되면 await 를 할 때마다 실행 중이던 작업이 중지되고 대기 상태가 되었다가 스레드 풀의 스레드 중 하나에서 실행이 되는데, 이때 스레드가 원래 lock 을 했던 스레드가 아닐 가능성이 매우 높기 때문에 이 리소스에 접근하지 못하게 되는 현상이 생겨날 수 있다. 아무튼 이런 이유 때문에 비동기 함수에서 lock 을 주의해서 써야 한다. 비동기에서 lock 을 사용하려면 SemaporeSlim 을 사용하면 된다. SemaphoreSlim 은 lock ..
생성자 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..
해시테이블 딕셔너리 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...