전체 글 27

모의 면접 준비를 해보자 (숙련)

1. Flutter 앱 개발에서 ‘상태’란 무엇을 의미하나요? Flutter에서 ‘상태(State)’는 앱의 UI에 영향을 주는 데이터를 의미함.예를 들어, 버튼을 눌렀을 때 숫자가 증가하는 카운터 앱에서 숫자가 0 → 1 → 2로 변하는 것이 상태의 변화임.상태는 크게 **변하는 상태(Stateful)와 변하지 않는 상태(Stateless)**로 나뉨.StatefulWidget을 사용하면 상태가 변경될 때 setState()를 호출해 UI를 다시 그림.2. ListView, ListView.builder, SingleChildScrollView + Column 3가지의 차이점은? ListView: 모든 아이템을 한 번에 렌더링함 → 많은 아이템을 다룰 때 성능 저하.ListView.builder: 필요..

TIL 2025.02.20

Flutter의 Stream에 대해서..

Flutter에서 데이터가 비동기적으로 처리되는 경우가 많습니다. 이러한 비동기 데이터 흐름을 관리하기 위해 Stream이라는 도구를 사용합니다. 이번 글에서는 Stream이 무엇인지, 왜 사용하는지, 그리고 실생활에서 어떻게 활용되는지를 저 같은 초보자도 이해할 수 있도록 쉽게 설명하겠습니다. Stream이란?Stream은 Dart에서 비동기 데이터 이벤트의 연속적인 흐름을 처리하기 위한 클래스입니다.쉽게 말하면, Stream은 "데이터의 강"이라고 생각하면 됩니다. 이 강에서는 데이터가 하나씩(혹은 여러 개씩) 흘러오고, 이를 필요할 때마다 받아서 처리할 수 있습니다.Stream의 작동 방식Stream은 두 가지 주요 구성 요소로 이루어져 있습니다:Stream: 데이터를 제공하는 쪽입니다. "데이터를..

TIL 2025.01.15

Flutter의 const 키워드

Flutter를 사용하다 보면 const 키워드를 자주 보게 될 텐데요. 특히 위젯을 정의할 때 많이 사용됩니다. 이번 글에서는 const 키워드가 무엇인지, 왜 사용하는지, 그리고 실생활에서 어떻게 활용되는지를 저같은 초보자도 이해하기 쉽게 설명하겠습니다. const란 무엇인가요?const는 'constant(상수)'의 약자로, 한 번 정의되면 변경되지 않는 값을 나타냅니다. Dart(Flutter의 프로그래밍 언어)에서는 const 키워드를 사용해 변하지 않는 객체를 정의할 수 있습니다.쉽게 말하면, const는 "이 값은 절대로 바뀌지 않아!"라고 Dart에게 알려주는 것입니다. const의 특징컴파일 타임 상수const로 선언된 값은 컴파일 타임(앱이 빌드될 때)부터 고정됩니다.앱 실행 중에는 이..

TIL 2025.01.15

Flutter의 Key는 무엇인가요?

Flutter로 앱을 개발하다 보면 Key라는 개념을 마주치게 됩니다. Key는 Flutter 위젯 시스템의 중요한 부분이며, 특히 위젯 트리를 효율적으로 관리하기 위해 사용됩니다. 이 글에서는 Key가 무엇인지, 왜 중요한지, 그리고 어떻게 사용하는지를 이해하기 쉽게 설명해보겠습니다.Key란 무엇인가요?Key는 Flutter 위젯 트리에서 각 위젯을 고유하게 식별할 수 있는 값입니다. Flutter는 UI를 렌더링할 때 기존 위젯 트리를 재사용하려고 합니다. 이때 Key는 Flutter가 어떤 위젯이 어떤 데이터와 연결되어 있는지 추적하도록 도와줍니다.간단히 말해, Key는 다음과 같은 상황에서 유용합니다:상태를 유지해야 할 때리스트나 컬렉션이 변경될 때Key가 왜 필요한가요?Flutter는 성능을 위..

TIL 2025.01.15

Dart의 Garbage Collector란?

혹시 컴퓨터의 "메모리"라는 단어 들어본 적 있나요? 메모리는 프로그램이 데이터를 저장하는 일종의 공간입니다.우리가 Dart 언어로 앱이나 프로그램을 만들 때, Dart는 필요한 데이터를 메모리에 넣어두고 작업을 진행하죠.그런데 시간이 지나면서 필요 없는 데이터가 쌓인다면? 이걸 정리하지 않으면 메모리가 꽉 차고, 프로그램이 느려지거나 심지어 멈출 수도 있어요!여기서 등장하는 게 바로 "Garbage Collector(가비지 컬렉터)"입니다. 이름 그대로 가비지(쓰레기)를 자동으로 청소해주는 역할을 합니다. 덕분에 우리가 일일이 메모리를 관리하지 않아도 되고, 더 중요한 코드 작성에 집중할 수 있다고 합니다!궁금한점, 가비지 컬렉터는 어떤 원리로 작동할까요?Dart의 가비지 컬렉터는 Generationa..

TIL 2025.01.13

클래스 내에서 static 키워드

1. Static 변수: 클래스가 공유하는 저장소설명static 변수는 클래스에 속한 하나의 공용 저장소 라고 하고, 클래스의 모든객체가 같은 값을 공유 합니다학교 게시판을 예를 들어..학교 게시판에 붙은 공지사항을 떠올려봅시당이게 모든 학생이 같은 게시판 내용을 확인하는 것처럼, static 변수는 모든 객체가 공유하는 공간입니다.클래스: 학교객체: 학생들static 변수: 학교 게시판코드 예제class School { static int totalStudents = 0; // 모든 학생이 공유하는 값 School() { totalStudents++; // 학생이 입학할 때마다 증가 }}void main() { School student1 = School(); // 첫 번째 학생 Scho..

TIL 2025.01.10

Flutter의 빌드 모드에는 무엇이 있는지 알아보자

Flutter의 빌드 모드는 앱을 개발하고 배포하는 단계에 따라 설정할 수 있는 세 가지 주요 모드로 구성되어 있다 하는데요~각각의 빌드 모드는 특정한 목적과 기능을 가지고 있어 개발자에게 최적의 환경을 제공합니다!아래에서 빌드 모드의 종류와 특징을 자세히 설명하겠습니다.Debug Mode (디버그 모드)디버그 모드는 개발 중에 사용되는 모드로, 실시간 코드 변경 및 디버깅에 최적화되어 있습니다. Flutter 앱을 실행하면 기본적으로 디버그 모드에서 실행됩니다.특징:핫 리로드(Hot Reload): 코드 변경사항을 거의 즉시 반영하여 앱을 다시 시작하지 않고도 수정 내용을 확인할 수 있습니다.디버깅 지원: 디버깅을 위한 풍부한 정보를 제공합니다. 예를 들어, print() 출력, Flutter Insp..

TIL 2025.01.10

Flutter에서 패키지와 플러그인은 무엇인가요?

Flutter로 앱을 개발하다 보면 패키지와 플러그인이라는 용어를 자주 접하게 됩니다. 이 둘은 Flutter 개발을 도와주는 도구들이지만, 사용 목적과 역할이 조금씩 다르다고 하는데요.오늘은 이 패키지와 플러그인에 대해서 알아보겠습니다. 패키지 (Package)정의Flutter에서 패키지는 Dart 언어로 작성된 코드 묶음입니다. 특정 기능을 쉽게 구현할 수 있도록 미리 작성된 코드나 유틸리티를 제공합니다. 특징Dart 코드로만 이루어져 있습니다.네이티브 플랫폼(Android, iOS)의 기능을 사용하지 않습니다.Flutter의 위젯이나 데이터 처리 로직, 유틸리티 함수 등을 제공하는 경우가 많습니다.예시provider: 상태 관리를 도와주는 패키지.http: HTTP 요청을 쉽게 처리할 수 있도록 도..

TIL 2025.01.09

Oauth 2.0 과 OIDC에 대해 설명..!

더보기모두 인증 및 권한 부여를 위한 프로토콜 이라고 한다.하지만 각각의 목적과 동작 방식이 다른데요.밑에 자세하게 알려드리겠습니다.1. OAuth 2.0 (Open Authorization 2.0)OAuth 2.0은 다른 앱이나 웹사이트가 사용자의 정보나 리소스에 접근할 수 있도록 허락하는 방법이에요. 이때 중요한 점은, 사용자는 자신의 비밀번호를 다른 앱과 공유하지 않고도 정보를 공유할 수 있다는 점입니다. 예를 들자면, 당신이 어떤 앱(예: 피트니스 앱)을 사용할 때, 이 앱이 당신의 구글 계정에 있는 이메일 주소, 이름, 프로필 사진 등을 가져와서, 그 정보를 앱 내에서 사용할 수 있도록 하고 싶을 수 있어요. 이때 피트니스 앱은 구글에 요청을 하여, 구글에서 허락을 받으면 이메일과 같은 정보를 ..

TIL 2025.01.06

LeetCode 643: Maximum Average Subarray I

문제 설명입력: 정수 배열 nums와 정수 k.출력: 길이가 k인 연속된 부분 배열의 최대 평균.접근 방법슬라이딩 윈도우를 사용하여 길이가 k인 연속된 부분 배열의 합을 효율적으로 계산.첫 번째 윈도우의 합을 계산한 후, 윈도우를 한 칸씩 오른쪽으로 이동하며 합을 업데이트.각 단계에서 최대 합을 추적하여 최종적으로 최대 평균을 반환.코드import 'dart:math'; // max 함수를 사용하기 위해 import// 최대 평균 부분 배열을 계산하는 함수double findMaxAverage(List nums, int k) { // 초기 윈도우의 합 계산 (첫 번째 k개의 원소) int windowSum = 0; for (int i = 0; i nums1 = [1, 12, -5, -6, 50, ..

TIL 2024.12.13