일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 마우이
- MS-SQL
- MSSQL
- HTML
- 리엑트
- spring boot
- typescript
- 바인딩
- Firebase
- 닷넷
- page
- Binding
- JavaScript
- 애니메이션
- Flutter
- React JS
- 오류
- 깃허브
- 파이어베이스
- 플러터
- db
- Animation
- 자바스크립트
- MVVM
- Maui
- 함수
- listview
- .NET
- AnimationController
- GitHub
- Today
- Total
목록분류 전체보기 (251)
개발노트

패키지를 Visual Studio 에서 제공하는 누겟 관리자로만 설치 해왔다면이제는 패키지를 소스로 받아 수정도하고 커스텀해서 사용 해보자 Swagger 패키지를 프로젝트로 받아오는 것을 기준으로 한번 설명해보겠다. 원리는 다음과 같다.1. 누겟 패키지의 master 리포지토리 Url을 찾는다.보통 누겟 갤럭시에서 찾으면 나옴https://www.nuget.org/packages/Swashbuckle.AspNetCore.SwaggerUI Swashbuckle.AspNetCore.SwaggerUI 7.2.0Middleware to expose an embedded version of the swagger-ui from an ASP.NET Core applicationwww.nuget.org 2. git c..
.NET Framework 에서 사용했다면 아래 보통 아래와 같이 HttpClient 인스턴스를 생성하고 요청, 응답을 보내고 받는 방법을 사용했을 거야HttpClient client = new HttpClient(); 그냥 이렇게 사용했다면 어떤 것들이 문제되었을까?MicroSoft에서는 기존 HttpClient의 어떤 문제들을 인지하였고 이것들을 고치기 위해 어떤 방안들을 제시했을지 같이 알아보자.NET Core 2.1부터는 아래와 같이 사용할 수 있을거야문제점 1. 소켓 고갈- 소켓 고갈이 생기는 원인은 뭘까?커넥션 Pool을 이용하지않고 새로운 인스턴스를 생성하기 때문에, 항상 새로운 연결을 생성하고 해제해 HttpClient를 매번 new HttpClient()로 생성하면, 내부적으로 Http..
Dapper 는 .NET에서 사용되는 ORM 으로 이를 이용하면 좀 더 편하게 DB 작업이 가능하다.Dapper는 DB에서 반환되는 테이블을 이용하여 객체와 맵핑이 가능하다.TableValueParameter 사용으로 DB에 정의된 TVP를 매개변수로 이용가능하다.반환되는 테이블의 수가 여러개라면 QueryMultiple 로 처리가능하다.ORM 이 외에도 저장 프로시저, 쿼리 다 사용가능하다. SplitOn 을 사용하여 Join 결과를 "Column1, Column2"와 같이 구분자를 지정, 이를 기준으로 여러개의 객체로 나누어 맵핑이 가능하다. (이를 통해 Json Depth 맵핑가능)예시) 1. Dapper로 TVP 사용하기(AsTableValuedParameter)using Dapper;using ..
결론만 말하면,포괄열은 Leaf 페이지에 해당 키를 추가해주는 것(단, 정렬은 안함 넣는대로 쌓임)그렇다면..논클러스터 인덱스 + 포괄열를 만들면논클러스터 인덱스 키로 지정된 열은 Leaf 노드에 정렬되어있지만,포괄열로 넣은 키들은 정렬되어 있지않다.-> 인서트 했을 때 적어도 포괄열 때문에 정렬을 다시 하지않아도 된다.-> Select 했을 때 Leaf 페이지에서 Seek 하고싶다면 포괄열에 키를 넣어주면 RID 나 Key Look Up을 줄일 수 있다. 클러스터 + 논클러스터 인덱스 + 포괄열 이라면 Non-Clustered Index / Clustered Index / Include Index 좀 더, 정리해서 말하자면 포괄열 (Included Columns)포괄열은 비클러스터 인덱스의 리프 노..
IList 사용으로 인한 변화 및 이점1. 구체적인 구현에 의존하지 않음기존 방식 (List 사용):Order 클래스가 특정 구현인 List에 의존합니다.만약 나중에 아이템을 배열(Array)이나 다른 컬렉션(LinkedList, ObservableCollection)으로 바꾸고 싶다면 Order의 코드를 수정해야 합니다.IList 사용:Order는 IList 인터페이스를 통해 아이템 목록을 관리하므로, 내부에서 사용하는 컬렉션의 구현에 대해 알 필요가 없습니다.이후 List 대신 다른 컬렉션 구현으로 쉽게 교체할 수 있습니다.//예시1// List을 전달IList gameItems = new List();gameItems.Add(new EquipmentItem("Sword"));gameItems.Add..
DIP (Dependency Inversion Principle)란?DIP(의존성 역전 원칙)는 SOLID 원칙 중 하나로, 상위 모듈이 하위 모듈에 의존하지 않도록 설계하는 것을 말합니다.즉, 구체적인 클래스 대신 추상화(인터페이스나 추상 클래스)에 의존해야 합니다.DIP 적용 전public class Dog{ public void Eat() { Console.WriteLine("The dog is eating."); }}public class Cat{ public void Eat() { Console.WriteLine("The cat is eating."); }}// AnimalFeeder 클래스가 Dog와 Cat에 의존public class ..

1. 의존성 주입(DI)란?**의존성 주입(Dependency Injection)**은 객체 간의 의존성을 외부에서 주입하여 객체를 생성하고 관리하는 디자인 패턴입니다.이를 통해 코드의 재사용성, 테스트 용이성, 유지 보수성을 높일 수 있습니다.왜 DI를 사용하는가?객체가 서로 강하게 결합(Coupling)되어 있으면 변경이 어렵습니다.의존성을 분리하면 코드 변경과 테스트가 용이해집니다.서비스, 리포지토리, 데이터베이스와 같은 의존성을 명확히 관리할 수 있습니다.2. IoC란?IoC(Inversion of Control, 제어의 역전)은 객체의 생성과 생명 주기를 개발자가 직접 관리하지 않고, 컨테이너 또는 프레임워크가 관리하는 것을 말합니다. (제어권이 컨테이너에게 있음)이를 통해 코드가 DI 컨테이너..

ASP .NET Core를 사용하여 RESTful API를 구축하고, Dapper를 사용한 SQL Server와의 데이터베이 이 API는 사용자를 생성, 조회, 수정, 삭제하는 기능을 제공합니다. 목표:C#과 .NET을 사용하여 서버를 구축Dapper를 활용한 데이터베이스 접근 (SQL Server와 연결)RESTful API로 CRUD 작업을 제공하는 Users 관리 시스템 구축주요 컴포넌트: Controller: 사용자 관리 API (CRUD 작업) UsersController에서 HTTP 요청을 받아 사용자 데이터를 처리하고 반환 Repository: Dapper를 사용하여 SQL Server에서 데이터를 조회하고 관리 비동기 방식으로 데이터베이스와 통신하여 효율적으로 처리 Model: Users ..

1. ASP .NET Core 프로젝트 만들기(with Web API)2. 프로젝트 빌드 시, 크롬에서 아래 처럼 뜬다면 3. chrome://flags/ 에 들어가서 아래 설정을 사용가능으로 변경, 잘나옴 Dapper 사용을 위해 아래 2개 누겟 설치RabbitMQ 설치이제 내가 사용할 DB를 연결해서 보여주자 4. 연결할 DB 만들기 uesrs라는 테이블을 갖는 sunppy DB를 만들고 레코드를 넣어줌(MS-SQL 사용) appsettings.json 에 내 DB Connection 정보 등록
메시지 큐 흐름도Client → Producer : 메시지 요청 Producer → Exchange (Routing Key 사용) → Queue (Binding Key 기준 라우팅)Queue → Consumer (라운드 로빈으로 분배)Consumer: 메시지 처리 후 ACK 전송기본 개념 정리Exchange (교환기):Producer 가 발행한 메시지를 어느 큐로 전달할지 결정하는 역할을 합니다.Exchange는 메시지를 받아 특정 조건에 따라 큐로 메시지를 라우팅합니다.RabbitMQ에서는 여러 유형의 Exchange가 있으며, 가장 일반적인 유형은 다음과 같습니다:Direct Exchange: 특정 Routing Key를 가진 메시지를 해당 키와 일치하는 큐에 전달합니다.Topic Exchange: ..