분류 전체보기229 C# DI 컨테이너 services와 provider 완전 정리 C# 프로젝트에서 DI(Dependency Injection)를 구성할 때 가장 핵심이 되는 두 가지 요소가 있습니다.바로 services와 provider입니다.이 글에서는 services와 provider가 각각 어떤 역할을 하는지, 그리고 실제 사용 방법을 체계적으로 정리합니다.1. services란 무엇인가?1.1 IServiceCollection 타입var services = new ServiceCollection();services는 IServiceCollection 타입입니다.어떤 인터페이스에 어떤 구현체를 연결할지를 등록하는 DI 컨테이너 구성용 객체입니다.단순한 객체 리스트가 아니라, 의존성 주입 규칙을 등록하는 역할을 합니다.2. services를 사용하는 이유DI를 제대로 활용하려면,.. 2025. 4. 28. C# DI(Dependency Injection)와 DI 컨테이너 정리 클래스 간의 의존성을 효과적으로 관리하기 위해, C#에서는 의존성 주입(Dependency Injection) 패턴과 DI 컨테이너를 널리 사용합니다.이 글에서는 DI의 개념부터 DI 컨테이너의 사용법까지 체계적으로 정리해봅니다.1. DI(Dependency Injection)란 무엇인가?1.1 DI를 쉽게 설명하면"내가 직접 필요한 객체를 만들지 않고, 외부에서 만들어서 주입해주는 것"을 의미합니다.1.2 일반 방식 (직접 생성)public class MyController{ private readonly Logger _logger; public MyController() { _logger = new Logger(); // 직접 생성 } public void Do.. 2025. 4. 27. C#에서 로깅 서비스를 모듈화하는 방법 클래스 기반 프로그램 구조에서는 로깅(logging) 기능을 별도의 서비스로 분리하는 것이유지보수, 테스트, 확장성 모두에 큰 장점을 가져옵니다.이 글에서는 C#에서 로깅을 모듈화하는 방법을 순서대로 소개합니다.1. ILogger 인터페이스 정의가장 먼저, 로깅 기능의 일관성을 위해 인터페이스를 정의합니다.public interface ILogger{ void Log(string message);}ILogger는 "로그를 남긴다"는 하나의 역할만 담당합니다.이 인터페이스를 기반으로 다양한 로거 클래스를 만들어 사용할 수 있습니다.2. 로거 구현체 만들기인터페이스를 구현한 실제 클래스를 만들어야 합니다.2.1 UI에 출력하는 로거Windows Forms의 ListBox에 로그를 출력하는 예시입니다.멀.. 2025. 4. 27. 컴퓨터 비전 기술면접 용어정리 2 (feat.스마트팩토리) Part. Computer Science REST API REST API는 Representational State Transfer(Application Programming Interface)의 약자로, 네트워크 상에서 자원(Resource)을 정의하고 이를 표현하는 방법 중 하나입니다. RESTful한 아키텍처 스타일에 따라 설계된 API를 지칭합니다. REST API는 HTTP 프로토콜을 기반으로 동작하며, HTTP 요청을 통해 자원에 접근하고 상호작용합니다. 각 요청은 명시적인 HTTP 메서드(GET, POST, PUT, DELETE 등)와 URI(Uniform Resource Identifier)를 포함합니다. 이러한 메서드들은 자원을 다루는 다양한 작업을 나타내며, 대표적으로 CRUD(Crea.. 2024. 2. 21. 컴퓨터 비전 기술면접 용어정리 1 정밀도 (Precision): 정답으로 예측한 값 중에서 실제 정답인 경우를 나타냅니다. 매칭 알고리즘이 긍정, 즉 매칭 쌍으로 예측한 개수 중에 진짜 쌍인 비율. 재현율 (Recall 또는 민감도): 실제 1인 값 중에서 1이라고 예측한 것이 있는 경우를 나타냅니다. 진짜 쌍 중에 알고리즘이 찾아낸 쌍의 비율. 정확도 (Accuracy): 전체 경우의 수 중에서 정답으로 분류한 비율을 나타냅니다. 가우시안 혼합 모델 (Gaussian Mixture Model, GMM): 가우시안 분포를 여러 개 혼합하여 데이터의 복잡한 분포를 근사화하는 머신러닝 알고리즘입니다. 그래프 합성곱 신경망 (Graph Convolutional Network, GCN): CNN의 local feature를 학습하는 것과 wei.. 2024. 1. 30. 함수를 미분한다는 것(dy/dx) 함수를 미분한다는 것은 해당 함수의 출력값이 입력값에 대해서 어떻게 변하는지를 나타내는 과정입니다. 특히, "y를 x로 미분한다"는 말은 함수 y를 변수 x에 대해 미분한다는 것을 의미합니다. 미분은 어떤 점에서의 기울기를 계산하는 것으로 생각할 수 있습니다. 특정 점에서의 미분값은 그 점에서의 함수의 기울기를 나타냅니다. 만약 함수가 어떤 점에서의 기울기가 양수이면, 그 점에서의 함수 값은 증가하고 있음을 나타냅니다. 반대로, 기울기가 음수이면 함수 값은 감소하고 있습니다. 미분값이 0이라면 함수는 해당 점에서 극값을 가지고 있을 수 있습니다. 수학적으로, 함수 y를 변수 x로 미분하는 것은 주로 다음과 같이 표현됩니다: 이는 "y를 x로 미분한 결과"를 나타냅니다. 이는 미분 계수 또는 도함수라고도 .. 2024. 1. 28. [BruteForce] Low_BOARD COVER 문제 https://algospot.com/judge/problem/read/BOARDCOVER algospot.com :: BOARDCOVER 게임판 덮기 문제 정보 문제 H*W 크기의 게임판이 있습니다. 게임판은 검은 칸과 흰 칸으로 구성된 격자 모양을 하고 있는데 이 중 모든 흰 칸을 3칸짜리 L자 모양의 블록으로 덮고 싶습니다. 이 algospot.com 아이디어 좌상단에서부터 빈칸을 탐색하여 좌표를 반환한다. 반환된 좌표로부터 블럭을 채울 수 있는지 확인한다.(총 4가지의 경우) 블럭을 채울 수 있다면 블럭을 둔 후 재귀호출한다. 코드 https://github.com/tooha289/Algorithm/blob/main/Algospot/%5BBruteForce%5DLow_BOARD_COVER.py 2024. 1. 23. [BruteForce]Low_PICNIC 문제 https://algospot.com/judge/problem/read/PICNIC algospot.com :: PICNIC 소풍 문제 정보 문제 안드로메다 유치원 익스프레스반에서는 다음 주에 율동공원으로 소풍을 갑니다. 원석 선생님은 소풍 때 학생들을 두 명씩 짝을 지어 행동하게 하려고 합니다. 그런데 서로 algospot.com 아이디어 재귀 호출 1. 친구 dictionary와 짝여부를 저장하는 set을 생성한다. # N번 친구는 자기보다 높은 번호의 친구만 저장한다. friends = defaultdict(list) # 짝이 결정되었는지 set is_pair = set() 2. 이전에 사용됐거나 pair set에 포함되어 있으면 넘어가며 함수를 재귀적으로 호출한다. def find_pairs.. 2024. 1. 18. 질문 리스트 최근에 경험한 가장 성공한 프로젝트는? 해당 프로젝트에서의 역할과 기술 스택은? 해당 프로젝트를 진행하면서 가장 어려웠던 점은? 내가 생각하는 이상적인 개발자란? 이상적인 소통 문화란? 협력과 협동으로 일을 수행해 본 경험 최근에 가장 성공적인 경험 나의 어떤점이 그렇게 하게 했나요? 해당 강점을 회사에서 어떻게 쓸수 있을까? 최근에 실패한(성공하지 못한) 경험 그 경험을 통해서 무엇을 얻었나? 그것을 자신의 삶에 어떻게 반영하였나? 최근에 다투었던 경험 그 당사자는 나를 어떻게 생각할 것인가? 다음에도 비슷한 경험이 생긴다면 어떻게 대처할 것인가? 직장을 선택할 때 가장 중요하게 여기는 것 말씀하신 기준은 삶의 목표와 어떤 관련성이 있으신가요? 반대로 직장을 선택할 때, 중요하지 않게 생각하는것과 이유? 2024. 1. 4. 이전 1 2 3 4 ··· 26 다음