(C#) 미세한 분기(if, else if)리펙토링
코드 리펙토링은 유지보수 하는데에 있어 중요한 작업입니다.
이번 글 에서는 리펙토링 기법중 가장 빈번하게 만나고 누구나 한번쯤은 고민해 보았을 분기문에 대해 살펴보겠습니다.
(Flutter) BLoC 패턴 #2
지난글에서 BLoC 패턴에 대해 알아보았고 직접 구현하는 방법에 대해 알아보았습니다.
BLoC 패턴 #1
이번글에서는 좀더 많은 기능을 제공해 주고 일일히 BLoC동작을 구현할 필요 없이 자체적으로 제공해 주는 BLoC 패키지인 flutter_bloc 패키지 사용에 대해
알아보겠습니다.
(Flutter) BLoC 패턴 #1
Flutter 개발에 있어서 상태관리는 반드시 필요한 부분이고 상태관리에 도움되는 패키지는 여러가지가 존재합니다.
대표적으로 Provider, GetX, BloC 패키지들이 존재하는데
이 패키지들은 모두 비즈니스 로직분리를
목표로 BLoC패턴 기반으로 되어 있습니다. 이번 글에서는 BLoC패턴이 무엇이고,
왜 사용되는지 그리고 BLoC패턴을 구현하기 위해선 어떻게 구현해야 하는지 알아보겠습니다.
(WPF) Async network image
WPF 기본 Image컨트롤은 네트워크상 이미지 표시를 지원합니다.
<Image Source="url"/>
그런데 용량이 큰 고해상도 이미지인 경우 렌더링 과정이 동기 처리되기 때문에 UI가 멈추는 상황이 발생 합니다.
또한 로컬 파일 캐시 처리가 없기 때문에 프로그램 종료 후 해당 화면이 표시 될때는 다시 위와 같은 똑같은 상황이 발생 됩니다.
이러한 상황을 해결하기 위해 이미지를 비동기로 다운받아서 표시 되도록 커스텀 컨트롤을 만들어 사용할 수 있습니다.
추가로 한번 받은 이미지는 더 이상 변경될 가능성이 없다면 로컬 파일로 저장해두었다가 로컬 파일 이미지를 load하도록 처리 되도록 하면 성능...
(WPF) ICustomTypeDescriptor를 사용한 동적 바인딩
WPF에서 데이터 바인딩을 통해 개체를 참조하는 방식을 크게 세 가지 방식으로 제공하고 있습니다.
첫 번째는 이 글에서 알아볼 System.ComponentModel.CustomTypeDescriptor 와 System.ComponentModel.INotifyPropertyChanged 를 구현하여
리플렉션을 이용해 속성 특성을 검색하고 변경 알림을 사용하는 방법이고
두 번째는 System.ComponentModel.INotifyPropertyChanged 구현으로 특정 속성의 변경 알림만 구현해 주면 데이터 바인딩 엔진 자체에서 리플렉션을 사용하고
필요한 속성을 참조합니다.
이 경우 자체적으로 Lightwe...
(C#) TPL Dataflow 라이브러리
.NET 공식(?) 라이브러리중 데이터 병렬 처리를 다룰 수 있도록 제공하는 Dataflow Task 라이브러리가 있습니다. (TPL Dataflow 라이브러리)
TPL Dataflow는 .NET 기본 API에 포함되지 않고 NuGet 패키지로 설치해서 사용할 수 있습니다.
NuGet - System.Threading.Tasks.Dataflow
TPL Dataflow MS Doc
이번 글에선 TPL Dataflow에서 제공하는 System.Threading.Tasks.Dataflow.BroadcastBlock<T> 클래스에 대해 알아보고
간단한 샘플 예제를 작성해 보겠습니다.
(C#) 작업 대기열 구현 Channels사용
.NET Core 3.0부터 포함 API로 제공되는 System.Threading.Channels.Channel<T> 클래스에 대해 알아보도록 하겠습니다.
System.Threading.Channels.Channel<T> 클래스는 비동기 작업에서 메세지 처리를 스레드로 부터 안전하게 처리할 수 있도록
간편한 방식으로 작업 대기열을 구성할 수 있도록 제공합니다.
참고로 .NEY Core 3.0 이전 버전에서는 NuGet 패키지를 통해 사용해볼 수 있습니다. NuGet - System.Threading.Channels
전체 글 63개, 8 페이지