(Flutter) 멀티스레딩 분리

Dart언어를 사용하는 Flutter 플랫폼에서 실행되는 코드는 기본적으로 격리된 메모리 공간에서 단일 스레드 환경으로 이벤트 루프가 실행됩니다. 그렇기 때문에 시간이 오래걸리는 작업 처리시 스레드가 하나로 처리되는데 해당 작업을 처리하는 시간동안은 이벤트 루프가 동작되지 않아 UI 업데이트에 문제가 생기거나 버벅거릴 수 있습니다. Flutter는 화면의 자연스러움을 유지 하기 위해 최소 1ms에 60프레임을 처리하려고 합니다. 이런 요청을 유지 할 수 있도록 이벤트 루프에서 메세지 펌핑이 원활하게 되도록 처리하는 것이 중요합니다.

더보기

(Fluter) Flutter MVVM with GetX

Flutter의 GetX 모듈을 사용해서 MVVM패턴 방식으로 앱을 설계하고 데이터를 다루는 방법에 대해 알아보도록 하겠습니다. Flutter은 .NET의 WPF처럼 처음 구조 설게가 MVVM패턴을 염두해두고 설계되지 않아서 자체적으로 완벽한(?) 데이터 바인딩 기능을 지원하지 않고 있습니다. GetIt이나 GetX 모듈 등을 이용해 빠르게 MVVM 구조로 뷰와 비즈니스로직을 분리하도록 구현해볼 수 있습니다. MVVM 패턴에 대한 설명은 다음 아티클을 참조 하시면 됩니다. 링크 : MVVM 패턴이란 프로젝트를 다루기전에 앞서 이번 MVVM구조에 사용된 GetX의 주요 기능에 대해 살펴보겠습니다.

더보기

(Flutter) Flutter 당근마켓 모바일 버전 Clone 프로젝트

Flutter 당근마켓 모바일 버전 클론 프로젝트 입니다. 웹 API부터 모바일 클라이언트까지 심플하게 구현한 프로젝트 입니다. 이 프로젝트는 Flutter를 중점으로 초급, 초중급 수준의 대상으로 학습 목적으로 제작하였습니다. 저 역시 모자란 부분이 많아 잘못된 부분이 있다면 같이 함께 학습하면서 고쳐봤으면 좋겠습니다.

더보기

(C#) .NET의 ThreadPool은 두개의 ThreadPool이 있습니다.

아티클의 제목처럼 CLR에는 두개의 ThreadPool이 존재 합니다. 첫번째 ThreadPool은 일반적인 Worker Thread가 사용되는 Pool이고 두번째 ThreadPool은 IoCompletionPort(IOCP)를 지원하는 Thread로 비동기 I/O 작업을 처리하기 위한 Thread 입니다. CLR ThreadPool에서 제공되는 I/O Thread는 흔히 File을 비동기로 읽고/쓰고 처리를 할때 FileStream에서 BeginRead/BeginWrite 구현 부분이 I/O Thread로 처리 됩니다. I/O Thread 커널에서 관리되는 스레드가 아니고 Worker Thread와 마찬가지로 C...

더보기

(JavaScript) 반복문에서 잘못된 동기 처리

시간이 오래 걸리는 여러 작업을 순차적으로 처리하고자 할때 fetch API나 axios 라이브러리를 통해 비동기로 요청하고 그 결과를 await을 통해 동기처리 하여 요청하는 상황이 있을 수 있습니다. 이럴 경우 흔히 반복문 안에서 비동기 요청 후 결과를 대기하는 식으로 처리할 수 있는데 이럴 경우 잘못된 상황에 대해 설명하고자 합니다.

더보기

(WPF) 비동기 바인딩 처리

이번글은 Microsoft WPF Doc 내용중 비동기 프로그래밍 - 비동기 MVVM 내용에 관련하여 간략한 예제와 설명 글 입니다. 다들 잘 아시는 얘기지만 WPF에서 바인딩을 통해 데이터를 표시할때 시간이 오래 걸리는 데이터는 비동기로 처리해야 합니다. 이런 상황에서 비동기로 처리되는 속성을 바인딩하여 처리 하는 방법에 대해 살펴봅니다.

더보기