dart 4

다트의 인스턴스 복사

우리 앱의 식단 기록 기능을 구현하던 중, 깊은 복사의 중요성을 간만에 느끼게 되어 작성하게 되었습니다. List, Map 또는 클래스 안에 다른 인스턴스들을 넣어 사용할 때 리마인드 할 수 있다면 좋을 것 같습니다. 원본은 바꾸고 싶지 않다고 우리 앱의 식단 기록 기능은 다른 기록 기능들보다, 1회 기록 할 때의 데이터 크기가 큽니다. 또한, 사용자가 원하는 대로 그 데이터를 수정할 수도 있죠. 실제 식단 기록 과정을 예로 들면, 1회 식단 기록 안에는 다수의 음식 정보, 끼니 타입, 시간 등이 존재하고, 음식 정보 안에는 섭취 용량, 단위 정보 등이 존재합니다. 간식의 경우에는 이 식단 정보가 다수로 존재할 수도 있고, 기록 전에 사용자는 대부분의 정보를 조작할 수 있습니다. 사진이나 새로운 음식을 ..

Weekly Flutter 2023.03.15

다트의 가비지 컬렉터 어떻게 동작할까?

해당 글은 공식문서와 chatGPT의 약간의 도움을 받아 작성되었습니다. (고마워 따봉 chatGPT야) 플러터 팀에서 초기 언어를 선택할 때 12개 이상의 언어를 선택해 평가하였다고 한다. 플러터는 다트를 선택하였는데, 플러터가 다트를 선택한 주요 이유들 중 하나는 바로 다트가 lock(앱이 실행이 중지되는 상태)없이 가비지 컬렉션을 수행할 수 있다는 점이였다. 많은 언어에서 가비지 컬렉션이 메모리를 수집하는 동안 lock 상태가 된다고 한다. 하지만 다트는 항상 가비지 컬렉션을 lock 없이 수행할 수 있다는 점에서 플러터 팀의 선택을 받은 것.. 그럼 다트의 가비지 컬렉터는 어떻게 lock 없이 가비지 컬렉션이 동작을 할까? Dart의 가비지 컬렉터는 두 개의 세대(generation)로 구성된다...

Weekly Flutter 2023.03.02

[Flutter 아는 척하기] 플러터 선택의 이유

왜 Dart일까? 정적 컴파일, 동적 컴파일 체리픽 프로그램 실행 방식 정적 컴파일 방식: AOT(Ahead Of Time), Static Compilation 정적인 방식이다. 실행 전에, 고급 언어의 명령어들을 컴파일러를 통해 기계어나 중간 언어로 변환한다. 변환된 기계어를 실행한다. 장점: 실행 속도가 빠르다. 컴파일 과정중에 성능 최적화가 가능하다. 단점: 컴파일 과정의 시간이 오래 걸린다. 예시: C/C++, Java, 인터프리터 방식: JIT(Just In Time), Dynamic Interpretation 동적인 방식이다. 실행 중에, 고급 언어의 명령어들을 한 번에 한 줄씩 인터프리터를 통과시켜 중간 언어로 변환한다. 한 줄의 명령어가 변환되면 바로 실행한다. 장점: 빠르게 수정하고 테스..

Weekly Flutter 2023.02.15

[Flutter Forward] 레코드에 대해 알아보자

최근 구글에서 Flutter Forward를 열어 플러터와 다트의 신기술에 관한 내용을 발표하였다. (한국 시간으론 새벽에 열어서 기다리다 지쳐 잠들었지만..) 다음날 일어나서 발표한 내용들을 쭉 훑어보니 꽤 흥미로운 내용들이 많았는데, 그 중 눈에 띄는 다트 3.0에 반영될 예정인 '레코드'의 좋은 점에 대해 쉽고 간단히 이야기해보려한다. (자바의 레코드, 파이썬의 튜플의 개념을 알고계신 분들은 유사한 개념이라고 생각하면 된다! ) 하위 코드들은 모두 Flutter Forward에서 발표한 예시 코드입니다. 아래 내용 중 틀린 내용이 있으면 피드백 언제든 환영입니다. 1. record를 활용해 함수 여러개 뱉기 가능! 간단하게 사용자의 이름과 나이 정보를 받아 처리해주는 함수를 짠다고 가정해보자. 현재..

Weekly Flutter 2023.01.30