반응형

Study 52

Flutter의 Clean Architecture 클린아키텍처, 각 Layer에 대하여

앞서 배웠던 내용으로 Flutter에 Clean architecture를 적용해 보도록 하자. 드디어 Layer별 어떤 폴더들을 가지게되는지 설명하게 되었다.앞서 설명한 OOP(객체 지향 프로그래밍)과 SOLID원칙을 기초로 하여 구현을 하는 게 목표이다. 하나하나씩 살펴보자.Domain LayerDomain Layer는 애플리케이션의 비즈니스 로직을 담고 있는 계층이다. 이 계층은 프레임워크에 독립적이며, 순수한 Dart 코드로 작성되며, 테스트가 용이하고, 다른 기술 스택으로 교체할 때도 영향을 최소화하도록 한다.EntitiesUse CasesRepositories(Interfaces)Domain Layer에서는 위 3가지 요소들이 포함이 되어있다.하나하나씩 살펴보도록 하자.EntitiesEntiti..

Study/기타 2024.06.20

22. [Flutter] 상태 관리(Riverpod)를 이용하여 비동기 관리하기

이번에는 Flutter의 riverpod을 이용하여 비동기관리에 대해서 설명하도록 하겠다.https://riverpod.dev/ko/ Riverpod어디서나 공유 상태 선언하기 더 이상 main.dart과 UI 파일 사이를 오갈 필요가 없습니다. 공유 상태의 코드를 별도의 패키지에 넣든, 필요한 위젯 바로 옆에 넣든, 테스트 가능성을 잃지 않고 적절riverpod.dev우선 공식자료는 다음과 같다. Riverpod이란?우선 들어가기에 앞서 riverpod이 무엇인지 알아보도록 하자.https://github.com/rrousselGit rrousselGit - OverviewFlutter enthusiast. You'll find me on stackoverflow. Or as a speaker in F..

Study/Dart,Flutter 2024.06.20

머신러닝에 대한 배경지식 공부[1부]

회사에서 머신러닝에 대해서 프로젝트를 진행하고있다. 정확하게는 Scen Text Recognition을 진행하고있는데, 그 단계 이전에 Object Detection이 필요해서 먼저 Object Detection에 대해서 알아보도록 하자. 라고 하기전에 우선 머신러닝에 대한 모든 기본지식부터 알아본내용들을 아주 간단하게 정리했다. 머신러닝이 뭘까 우선 나는 시작부터 "머신러닝"이라는 것에 대한 정의부터 시작했다. 무엇이 머신러닝일까 흔히 사용하는 "딥러닝" 그리고 "AI"는 어떤 차이점이 있는지 찾아보았다. 그리고 위의 이미지로 한번에 정리되었다. 그렇지만 조금 더 찾아보았다 결국 머신러닝은 사람이 특징점 추출(Feature Extraction)과 분류(Classification)을 직접해야 모델을 만들..

Clean Architecture 클린아키텍처, 객체지향 디자인 5원칙 SOLID[5부]

이번에는 객체지향 디자인 5원칙에 대해서 알아보도록 하자. 원래 포스팅의 순서는 Folder구조를 잡고, 각 폴더 안에 들어가는 파일 class들의 예시를 보여주려고 했다. 하지만 객체지향 디자인 5원칙을 설명하지 않고는 작성하기가 힘들다 생각이 되어 이것부터 먼저 포스팅을 하도록 하겠다. SOLID란 무엇인가. SOLID는 위의 이미지로 유추할 수 있듯이, 5개의 원칙에서 앞에 한 글자씩 따온 것이다. Robert C Martin(Uncle Bob)이 제시한 객체지향설계에 대한 원칙을 5원칙으로 정리를 한 것이다. Uncle Bob, 익숙한 이름일 것이다. Clean Architecture를 제안한 아키텍처이다. 클린아키텍처는 헥사고날(hexagonal) 아키텍처라고 하기도하고 포트와 어댑터(Port..

Study/기타 2024.03.23

Clean Architecture 클린아키텍처, 객체와객체지향 프로그래밍[4부]

이번에는 객체와 객체지향 프로그래밍에 대해 알아보도록 하자. 원래 포스팅의 순서는 Folder구조를 잡고, 각 폴더안에 들어가는 파일 class들의 예시를 보여주려고 했다. 하지만 객체지향 디자인 5원칙을 설명하지 않고는 작성하기가 힘들고, 객체지향프로그래밍에 대해서 설명이 부족하면 객체지향 디자인 5원칙이 작성하기 힘들다. 우선 객체와 객체지향 프로그래밍에 대해서 알아보도록 하자. 객체, 객체지향 프로그래밍이란 객체(Object)라는 것은 클래스(Class)에서 정의한 것을 토대로 메모리에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수 자료 구조, 함수 또는 메소드가 될 수 있다. 좀더 쉽게 설명을 해보자. 객체지향 프로그레밍에서 객체(Object)는 데..

Study/기타 2024.03.20

22. [Flutter] 알면 매우 정말 너무 좋은 패키지들 [1부]

Clean architecture에 대해서 포스팅하다가 좋은 패키지들에 대한 내용 소개가 필요할 거 같아 작성하게 되었다. 사용하기 좋은 패키지 1. Freezed https://pub.dev/packages/freezed freezed | Dart package Code generation for immutable classes that has a simple syntax/API without compromising on the features. pub.dev Clean architecture에서 Domain Layer는 애플리케이션의 핵심 비즈니스 논리를 포함해서 외부 프레임워크나 라이브러리에 의존하지 않아야 하며, 데이터모델을 불변으로 만들어 안정성을 높이는 게 중요하다. 이 Freezed 패키지..

Study/Dart,Flutter 2024.03.13

Clean Architecture 클린아키텍처, Flutter 폴더구조에 대하여[3부]

이번에는 클린아키텍처를 잡을 때 폴더구조에 대해서 알아보도록 하자. Flutter를 가지고 설명을 해보도록 하겠다. 목차 들어가기에 앞서. Layout First Feature First 1. 들어가기에 앞서. Flutter를 시작하고 여러 토이프로젝트를 하게 되면 느끼는 점이 다들 있겠지만 그중 공통적으로 느끼게 될 것 중 하나가 "굉장히 자유로운 아키텍처 선택" 일 것이다. 하지만 가끔 우리는 자유로운 것은 힘들 때가 많다. 예를 들어 코드컨벤션(Code Convention) 이 등장한 이유도 그중 하나일 것이다. 코드컨벤션이란 내가 작성한 코드를 다른사람들도 쉽게 이해할 수 있게 가독성 있는 코드를 작성하는 법에 대한 규칙이다. 코드컨벤션란 단어는 다소 생소할 수 있지만, 아주 친숙한 것이다. 코드..

Study/기타 2024.02.25

21. [Dart] dart의 factory그리고 singleton에 대하여

언젠가 Flutter모임에 나가서 이런저런 이야기를 나누다가 어떤 분이 이러한 말씀을 해주셨다. "dart의 factory에 대해서 한국어로 구글링하면 첫 페이지의 대부분은 전부 틀린 내용으로 작성이 되어있어요. 싱글톤에 대한 내용과 구분을 못해요." 그걸 듣고 "아 나라도 제대로 된 내용을 포스팅해보자!" 라는 생각에 포스팅을 하게 되었다. Dart 키워드 factory란? dart에서 factoy는 Design pattern에서의 factory pattern과 전혀 다른 것이다. design pattern의 factory는 아래의 링크를 참고하자. https://refactoring.guru/ko/design-patterns/factory-method 팩토리 메서드 패턴 / 디자인 패턴들 / 생성 패..

Study/Dart,Flutter 2024.01.13

Clean Architecture 클린아키텍처, Domain에 대하여 [2부]

1부에선 Clean Architecture의 창시자, Uncle bob의 블로그를 최대한 번역하여 설명하는 내용으로 포스팅 하였다. 이번 포스팅에서는 Clean Architecture와 DDD 그리고 Domain에 대해서 알아보자. DDD, TDD 그걸 왜 알아야해? 우선 Clean architecture를 보다가 갑자기 DDD와 Domain 알아보자고 해서 놀라신 분들을 위해 먼저 "왜" 알아야하는지 설명부터 하는게 맞을거같아 설명을 해드리겠다. Domain과 DDD이란, Domain : 비즈니스 도메인이라고도 불리며, 소프트웨어가 해결하거나 다루려는 현실 세계의 문제 영역을 나타낸다. 예를들어, 은행 애플리케이션에서 도메인은 고객, 계좌, 거래와 같은 금융 분야의 주제를 포함할 수 있다. DDD(D..

Study/기타 2024.01.09

Clean Architecture 클린아키텍처에 대하여 [1부]

내가 사이드잡을 시작하면서 Flutter의 Clean Architecture를 지키며 코딩을 하기위해 공부를 한 것을 정리해보도록 하겠다. 가급적이면 처음부터 쭉 읽어도 모든 내용들이 이해되도록 작성해보도록 하겠다. 최대한 교차검증으로 오류도 최소화해서 작성해보도록 하겠다. 1. Clean Architecture란 우선 Clean architecture란 무엇일까? Uncle bob, Robert C. Martin이란 사람의 블로그에서 처음 등장한 것으로, 프로젝트 전반에 관련된 구조이다. 우선 그 내용은 아래 링크를 참고하길 바란다. (주의 : MVVM, MVC같은 것들은 프로젝트 전반이 아니라 UI와 비즈니스로직에 관련된 내용이다.) http://blog.cleancoder.com/uncle-bob/..

Study/기타 2024.01.08
반응형