주제별로 글을 한 번씩 배치했습니다. 처음 배우는 분은 환경과 Dart 기초부터, 문제 해결이 필요한 분은 현재 증상에 맞는 구역부터 읽으세요.
Flutter 환경과 Dart 기초
새 프로젝트를 실행한 뒤 변수·타입·컬렉션을 익힙니다. 언어 선택부터 시작한다면 첫 번째 글을, 실행 오류가 있다면 설치 점검 글을 먼저 읽으세요.
- 앱 개발 언어 선택 가이드: Flutter·React Native·Kotlin·Swift 비교
8개 제품 조건을 Dart 3.13.4 의사결정 규칙으로 실행해 Flutter·React Native·Kotlin·Swift 후보와 반드시 검증할 빌드 조건을 정리합니다.
- Windows에서 Flutter 설치하기: 공식 절차와 flutter doctor 점검
Windows 10에서 Flutter 3.47.5 공식 ZIP의 SHA-256을 확인하고 doctor, 빈 프로젝트, analyze·test·웹 빌드를 직접 실행해 설치 완료 기준과 Android JDK 차단점을 구분했습니다.
- Flutter 첫 앱 로드맵: 입력·상태·테스트·릴리스 빌드 순서
Flutter 3.47.5 빈 프로젝트에 입력 검증과 목록 상태를 구현하고 controller·widget 테스트 3개, analyze, Web release 빌드까지 직접 통과한 순서로 첫 앱 로드맵을 정리했습니다.
- Dart var·final·const 차이: 변수 선언 기준과 예제
Dart 3.13.4에서 var 재할당, final 참조와 List 변경, const 런타임 제한·canonicalization을 analyzer와 VM으로 직접 비교합니다.
- Dart에서 var와 명시 타입을 선택하는 기준
Dart 3.13.4 analyzer 실험으로 var의 실제 추론 타입, 명시 타입이 필요한 확장·빈 제네릭·함수 경계와 중복 표기를 구분합니다.
- Dart var·dynamic·Object? 차이와 안전한 사용법
Dart 3.13.4에서 var·dynamic·Object?의 분석 시점과 런타임 차이를 재현하고 JSON을 타입 검사와 Map pattern으로 좁히는 방법을 설명합니다.
- Dart 타입 오류 읽는 순서: analyzer 진단·null·dynamic 경계
Dart 3.13.4 strict analyzer와 VM에서 재대입·nullable·raw generic·const 오류와 dynamic·!·late·cast 런타임 예외를 실행해 타입 오류를 경계별로 찾는 순서를 정리했습니다.
- Dart null safety: ?, !, late 차이와 오류 예방법
Dart 3.13.4에서 nullable 멤버 접근, ! null 단언, late 미초기화, late final 재대입을 analyzer와 VM으로 실행해 컴파일 차단과 런타임 실패 시점을 구분했습니다.
- Dart 변수 값 변경: 재할당과 Flutter 상태 업데이트
Flutter 3.47.5 위젯 테스트에서 List 직접 변경, 같은 객체 변경 후 setState, 새 List 재할당 후 setState를 실행해 메모리 값·화면·객체 정체성의 차이를 확인했습니다.
- Dart const 생성자·컬렉션·canonicalization 이해하기
Dart 3.13.4와 Flutter 3.47.5에서 const 객체·중첩 컬렉션의 정규화, 변경 오류, 컴파일 진단과 디버그 위젯 생성 위치 추적의 예외를 직접 실행했습니다.
- Dart 변수 스코프와 Flutter 상태 생명주기
Flutter 3.47.5 위젯 테스트로 재빌드·같은 key·새 key·재삽입·listener 교체를 검증하고, Dart 클로저와 이름 가리기를 실제 출력으로 확인했습니다.
- Dart List·Map·Set 선언과 안전한 수정 방법
순서와 중복 여부로 컬렉션을 선택하고, UI 상태에서는 같은 객체를 몰래 수정하기보다 변경 의도가 드러나는 갱신 방식을 사용하는 편이 안전합니다.
- Dart 조건문과 반복문: 입력 검증 실전 예제
Dart 3.13.4에서 나이 입력 12종, 선택지 4종, 재시도 종료 3종을 실행해 if·switch·while을 무한 반복 없이 나누는 기준을 검증했습니다.
화면·입력·상태·앱 설계
화면 배치, 입력 검증, 목록, 메뉴를 순서대로 만듭니다. 정상 동작뿐 아니라 화면을 떠난 뒤 비동기 작업과 오류 상태도 확인합니다.
- Flutter Row와 Column 차이: 축·정렬·overflow 해결
Row는 가로, Column은 세로로 자식을 배치하며 mainAxis와 crossAxis는 위젯 이름이 아니라 현재 배치 방향을 기준으로 해석합니다.
- Flutter ListView 사용법: builder·shrinkWrap·중첩 스크롤
긴 목록은 ListView.builder로 필요한 항목을 만들고, Column 안에서는 남은 높이를 명확히 주며 shrinkWrap을 습관적으로 켜지 않는 것이 핵심입니다.
- Flutter TextField 입력값 받기: controller·검증·dispose
입력 순간 반응은 onChanged, 특정 시점에 값 조회는 controller가 편하며 폼 단위 검증은 TextFormField와 Form을 고려할 수 있습니다.
- Flutter 하단 탭 만들기: BottomNavigationBar와 NavigationBar
Material 3 신규 화면은 NavigationBar를 우선 검토하고, 탭 전환 시 상태를 유지할지 다시 만들지를 화면 요구사항에 따라 정해야 합니다.
- Flutter AppBar와 Drawer 기본 설정 및 메뉴 이동
Flutter 3.47.5의 네 위젯 테스트로 AppBar 자동 메뉴·빈 콜백·context 오류·본문 교체·상세 화면 뒤로가기를 검증하고 Drawer 닫기와 화면 이동을 구분했습니다.
- Flutter setState() called after dispose 오류: 비동기 작업 정리 순서
Flutter에서 setState() called after dispose 오류가 발생할 때 Future 완료, Timer, Stream, AnimationController와 화면 전환을 구분하고 mounted 검사와 작업 취소를 올바른 순서로 적용합니다.
- Flutter Android 앱에서 API 연결이 안 될 때: 권한·localhost·HTTPS 점검
Flutter Android 앱의 API 요청이 실패할 때 인터넷 권한, 에뮬레이터 localhost, 실기기 네트워크, HTTP cleartext 정책, TLS 인증서와 타임아웃을 순서대로 점검합니다.
- 앱 작업 큐에 FIFO를 쓰는 이유와 구현 예시
먼저 들어온 작업을 먼저 처리해야 하는 업로드·로그·알림 큐에는 FIFO가 자연스럽지만 우선순위와 취소가 필요하면 다른 정책을 함께 설계해야 합니다.
- 앱 목록 정렬 구현: comparator·안정성·성능 점검
Dart 3.13.4에서 comparator 계약, 동점 순서, List.sort 원본 변경과 페이지네이션 중복을 직접 재현하고 고유 tie-break 기준을 정리합니다.
- 앱 출시 전 마지막 설계: 상태·동시성·오류 흐름 점검
앱 출시 전 상태 소유권, 오래된 응답, 중복 저장과 재시도 정책을 Node.js 재현 테스트 3개와 실제 출력으로 검증하는 체크리스트입니다.
- 앱 성능 문제를 이해하는 CPU 명령과 메모리 접근
같은 연산 횟수라도 메모리 접근 순서에 따라 실행 시간이 달라지는 이유를 Node.js 포인터 추적 벤치마크와 Flutter 프로파일링 절차로 설명합니다.
- Flutter 키보드가 입력칸·버튼을 가릴 때: 화면 축소와 스크롤 점검
키보드를 열었을 때 화면이 줄어드는 문제와 내용이 넘치는 문제를 나누고, ListView 예제·중복 inset 점검·수정 후 확인표로 원인을 좁힙니다.
바이트·조건식·데이터 해석
앱이나 기기에서 받은 값이 예상과 다를 때 참조할 기초입니다. 암기보다 코드 포인트·정수 범위·바이트 순서·금액 계산에서 실제로 달라지는 결과를 비교합니다.
- 앱 개발에 필요한 비트·바이트 개념과 실제 사용처
Node.js 24.19.0 로컬 HTTP 실험에서 바이너리 4096 B와 Base64 JSON 5475 B를 비교하고 UTF-8 크기·RGBA 예산·버퍼 뷰 공유를 18개 조건으로 확인했습니다.
- 비트로 정수를 표현하는 방법: 범위·오버플로·엔디안
Node.js 24.19.0에서 3·5·4·4비트로 구성한 16비트 헤더 65,536조합을 전수 검사해 범위 산정·패킹·오버플로·엔디안 기준을 확인했습니다.
- 2진수 덧셈과 오버플로: 앱 개발 예제로 이해하기
Node.js 24.19.0에서 8비트 입력 65,536쌍을 리플 캐리로 계산해 unsigned carry와 signed overflow를 분리하고 wrap·saturate·checked 정책을 비교했습니다.
- signed·unsigned와 2의 보수: 바이트 해석 오류 예방
Node.js 24.19.0에서 8비트 256개와 16비트 65,536개 값을 전수 검사해 signed·unsigned·엔디안 해석 차이와 체크섬 처리 기준을 확인했습니다.
- Flutter ByteData에서 음수 읽기: signed·Endian 처리
Dart 3.13.4에서 8바이트 센서 패킷을 ByteData로 읽고 signed·unsigned·Endian·부분 뷰·범위 오류를 VM과 JavaScript 빌드에서 검증했습니다.
- 부동소수점 오차 이해하기: 앱 금액·센서 계산 주의점
Dart 3.13.4에서 23개 조건으로 소수 합산·BigInt 최소 단위·반올림 시점·허용 오차·NaN JSON 실패를 직접 검증하고 계산 계약을 비교했습니다.
- BCD 이해하기: 앱·기기 데이터에서 2진화 10진수 파싱
Dart 3.13.4에서 BCD 바이트 256개와 하루 86400개 시각을 검증해 잘못된 니블·입력 범위·DS1307 12시간 모드·CH 상태·선행 0 처리의 경계를 구분했습니다.
- 앱 한글 깨짐 해결: UTF-8·HTTP·DB 인코딩 점검
Python 3.12 격리 HTTP 서버에서 UTF-8·잘못된 charset·CP949·JSON을 재현하고 SQLite 왕복, U+FFFD 손실, 한글 NFC/NFD와 길이 차이를 검증했습니다.
- 앱 색상 표현 이해하기: RGB·ARGB·Hex·투명도
Hex 색상은 채널 순서를 확인해야 하며 Flutter Color 값은 알파 채널을 포함한 표현을 사용하므로 웹 CSS 표기와 그대로 섞으면 안 됩니다.
- 앱 조건문을 안전하게 만드는 불리언 대수
Dart 3.13.4에서 권한 정책 16개 조합을 실행하고 잘못된 AND·OR 조건 3개를 변이 테스트로 검출했습니다. XOR 단일 선택과 결정 사유 보존 기준도 확인합니다.
- 드모르간 법칙으로 앱 조건문 단순화하기
Dart 3.13.4에서 드모르간 법칙을 2·3변수 진리표 25개 조건으로 검증하고, 괄호 누락·단락 평가·nullable bool·3상태 권한에서 틀리는 지점을 실행했습니다.
Android 플랫폼 문제
웹 콘텐츠가 앱 안에서 열리지 않거나 네이티브 라이브러리 호환성 문제가 있을 때, 플랫폼 로그와 빌드 산출물을 기준으로 점검합니다.
- Android WebView가 빈 화면일 때: 네트워크·JavaScript·렌더링 점검
Android WebView가 흰 화면이나 빈 화면으로 멈출 때 메인 문서와 하위 리소스 오류를 구분하고, HTTP·SSL·JavaScript·혼합 콘텐츠·렌더러 종료를 순서대로 진단합니다.
- Android 16 KB 호환성 오류: APK·ELF 정렬과 네이티브 라이브러리 점검
Android 앱이 16 KB 페이지 크기 기기에서 설치·실행되지 않을 때 APK ZIP 정렬, ELF LOAD·RELRO 정렬, AGP·NDK·SDK 버전과 페이지 크기 가정을 구분해 확인합니다.
앱 설치·사용 오류
스토어 대기, 계정 확인, 호환성, 알림, 링크 연결을 구분합니다. 설정을 모두 초기화하기 전에 현재 메시지와 다른 앱의 동작부터 비교하세요.
- 앱 설치 오류 진단표: Android와 iPhone 증상별 해결 순서
Android·iPhone 설치 오류 12개 상황을 안전 우선 진단 경로로 실행해 증상 분리, Play Protect 유지, 백업 전 삭제 금지 순서를 검증했습니다.
- Play 스토어 다운로드 대기 중 해결: 원인별 점검 순서
Play 스토어 대기 문제를 한 앱·여러 앱·업데이트 실패로 나누고, 연결·저장공간·계정·호환성 중 다음 점검 지점을 찾습니다.
- 아이폰에서 앱 설치가 안 될 때 확인할 설정과 계정 상태
Apple 공개 앱 정보 두 응답과 20개 로컬 조건을 검증해 iPhone 설치의 계정·보호자 승인·OS 호환성·연결 문제를 나누고 실기기 미검증 범위를 명시했습니다.
- 앱이 설치되지 않을 때: 화면 메시지별 첫 점검
설치 버튼이 없는 경우, 대기 중인 경우, 인증 화면에서 멈춘 경우, 호환되지 않는 경우는 원인이 다르므로 현재 화면의 문구부터 확인해야 합니다.
- 안드로이드 파일·APK 다운로드가 멈출 때 점검 순서
Android 파일·APK 다운로드가 멈출 때 HTTP 상태, Range 재개, 파일 크기와 SHA-256을 확인하고 브라우저·APK 설치·Play 스토어 문제를 구분합니다.
- Android 앱 알림이 안 올 때: 권한·채널·배터리 제한 점검
Android 앱 알림이 오지 않을 때 전체 알림 차단, Android 13 권한, 알림 채널, 방해 금지, 배터리·백그라운드 제한과 FCM 전달 상태를 순서대로 점검합니다.
- Android App Links가 브라우저로 열릴 때: 딥링크 검증 순서
Node.js 로컬 서버의 13개 응답과 16개 조건으로 App Links JSON·리디렉션·package·서명 지문 실패를 재현하고 사전 점검과 Android verified 상태를 구분했습니다.
웹앱 연결·데이터·배포
브라우저와 서버 사이에서 실패한 요청을 찾습니다. 로그인 유지, 업로드 제한, 호출 제한, 캐시, DB 중복과 배포 환경은 서로 다른 확인 경로가 필요합니다.
- 웹앱 로그인 유지 설계 체크리스트: 쿠키·CORS·CSRF
격리된 Chromium에서 credentials·CORS·HttpOnly 쿠키·CSRF·동시 refresh 7개 시나리오를 실행하고 로그인 유지의 관찰 지점을 정리합니다.
- 웹앱 로그인 유지 오류: 쿠키·CORS·토큰 갱신 점검
로그인 응답 200만으로는 충분하지 않으며 브라우저 저장, 후속 요청 전송, SameSite·Secure·도메인, 동시 토큰 갱신을 순서대로 확인해야 합니다.
- 웹 파일 업로드가 실패할 때: 413·multipart·서버 제한 점검
웹 파일 업로드 실패를 HTTP 상태 코드와 요청이 끊긴 계층으로 나누고, FormData boundary, 프록시·웹 서버·PHP 용량 제한, 임시 저장소와 보안 검증을 순서대로 확인합니다.
- 웹 API가 429를 반환할 때: Retry-After·백오프·요청 제한 점검
웹 API에서 429 Too Many Requests가 발생할 때 제한 계층과 기준 키를 찾고, Retry-After 해석, 지수형 백오프·jitter·동시성 제어·멱등성을 순서대로 점검합니다.
- PWA 업데이트가 반영되지 않을 때: Service Worker·캐시 교체 점검
PWA 배포 후 이전 화면이 계속 보일 때 Service Worker의 installing·waiting·active 상태, HTTP 캐시, Cache Storage, 다중 탭과 업데이트 알림 흐름을 순서대로 점검합니다.
- 게임 순위 DB 중복 방지: 기본키·후보키·UNIQUE 제약
자동 증가 ID가 행을 구분해도 사용자·시즌 조합의 업무 규칙까지 보장하지는 않으므로 별도의 UNIQUE 제약이 필요할 수 있습니다.
- 웹앱 재귀 함수 무한 호출: 종료 조건과 디버깅
종료 조건이 있어도 다음 호출의 인자가 조건에 가까워지지 않으면 재귀는 끝나지 않으므로 현재 값과 다음 값을 함께 기록해야 합니다.
- 처음 서비스를 웹앱으로 시작해도 좋은 이유와 한계
설치 없이 배포하고 가설을 검증하려면 웹앱이 유리하지만 푸시·백그라운드·스토어 유통·기기 기능이 핵심이면 네이티브 또는 크로스플랫폼이 더 맞을 수 있습니다.
- Jenkins 재시작 실패: Groovy보다 Java 버전부터 점검하기
Jenkins LTS 2.568.3을 Java 17·21에서 직접 실행해 기동 실패와 성공을 비교하고 controller·agent·빌드 JDK를 구분하는 진단 순서를 정리합니다.