[Flutter] 크로스플랫폼 노트 앱 개발기 #6 — 테마, 설정, 그리고 2차 개발 마무리
크로스플랫폼 노트 앱 개발기 시리즈
#1 프로젝트 설계 | #2 로컬 DB와 CRUD | #3 UI와 4플랫폼 빌드 | #4 3종 에디터 | #5 검색 기능 | #6 테마/설정
#6 — 테마, 설정, 그리고 2차 개발 마무리
이번 편에서는 다크/라이트 테마 전환과 에디터 글자 크기 설정을 구현하고, CI를 정비한 뒤, 2차 개발 전체를 돌아본다.
설정 도메인 설계
설정 기능도 notes 기능과 마찬가지로 Clean Architecture의 data/domain/presentation 레이어로 나눴다. 디렉토리 구조는 다음과 같다.
lib/features/settings/
├── data/
...
[Flutter] 크로스플랫폼 노트 앱 개발기 #5 — 검색 기능: SQLite FTS5
크로스플랫폼 노트 앱 개발기 시리즈
#1 프로젝트 설계 | #2 로컬 DB와 CRUD | #3 UI와 4플랫폼 빌드 | #4 3종 에디터 | #5 검색 기능 | #6 테마/설정
#5 — 검색 기능: SQLite FTS5
노트가 10개일 때는 스크롤만으로 충분하지만, 50개, 100개가 넘어가면 원하는 노트를 찾기가 어려워진다. 이번 편에서는 SQLite FTS5(Full-Text Search 5) 엔진을 활용한 전문 검색 기능을 구현한다.
FTS5란 무엇인가
FTS5는 SQLite에 내장된 전문 검색 엔진이다. 별도의 검색 서버(Elasticsearch 등)를 띄울 필요 없이, 앱에 이미 포...
[Flutter] 크로스플랫폼 노트 앱 개발기 #4 — 3종 에디터: Plain, Markdown, Checklist
크로스플랫폼 노트 앱 개발기 시리즈
#1 프로젝트 설계 | #2 로컬 DB와 CRUD | #3 UI와 4플랫폼 빌드 | #4 3종 에디터 | #5 검색 기능 | #6 테마/설정
#4 — 3종 에디터: Plain, Markdown, Checklist
이전까지는 일반 텍스트 노트만 있었다. 이번에는 마크다운과 체크리스트 타입을 추가해서, 용도에 맞는 에디터를 제공한다. 하나의 EditorScreen이 NoteType에 따라 적절한 에디터 위젯을 선택하는 Strategy 패턴을 적용했다.
1. NoteType 열거형 정의
노트 타입을 enum으로 정의했다. plain, markdown, check...
[Flutter] 크로스플랫폼 노트 앱 개발기 #3 — UI 구현과 4플랫폼 빌드
크로스플랫폼 노트 앱 개발기 시리즈
#1 프로젝트 설계 | #2 로컬 DB와 CRUD | #3 UI와 4플랫폼 빌드 | #4 3종 에디터 | #5 검색 기능 | #6 테마/설정
#3 — UI 구현과 4플랫폼 빌드
2편에서 Drift 기반의 로컬 DB와 Repository까지 완성했다. 이번 편에서는 Riverpod 컨트롤러를 연결하고, 실제 화면(노트 목록, 에디터)을 만들고, go_router로 화면 전환을 구성하고, GitHub Actions로 iOS/Android/macOS/Windows 4플랫폼 빌드를 자동화한다. 1차 개발의 마지막 단계다.
Riverpod 컨트롤러 — Reposito...
[Flutter] 크로스플랫폼 노트 앱 개발기 #2 — 로컬 DB 설계와 노트 CRUD
크로스플랫폼 노트 앱 개발기 시리즈
#1 프로젝트 설계 | #2 로컬 DB와 CRUD | #3 UI와 4플랫폼 빌드 | #4 3종 에디터 | #5 검색 기능 | #6 테마/설정
#2 — 로컬 DB 설계와 노트 CRUD
1편에서 프로젝트 뼈대를 잡았으니, 이번 편에서는 노트를 실제로 저장하고 불러오는 로직을 만든다. Clock 추상화부터 시작해서 Note 엔티티 정의, Drift DB 스키마, 그리고 Repository 패턴을 적용한 CRUD 구현까지 다룬다.
Clock 추상화 — DateTime.now()를 직접 쓰지 않는 이유
코드 어딘가에서 DateTime.now()를 직접 호출하면, 그...
[Flutter] 크로스플랫폼 노트 앱 개발기 #1 — 프로젝트 설계와 Flutter 초기 설정
크로스플랫폼 노트 앱 개발기 시리즈
#1 프로젝트 설계와 Flutter 초기 설정 | #2 로컬 DB와 CRUD | #3 UI와 4플랫폼 빌드 | #4 3종 에디터 | #5 검색 기능 | #6 테마/설정
#1 — 프로젝트 설계와 Flutter 초기 설정
이번 편에서는 앱을 만들게 된 배경과 전체 설계, 그리고 Flutter 프로젝트 초기 설정까지 다룬다.
왜 만들게 되었나
회사에서는 맥을 쓰고, 집에서는 윈도우 PC를 쓴다. 핸드폰은 갤럭시.
맥에서는 iCloud 노트를 쓰는데, 이게 Apple 기기 간에만 동기화된다. 윈도우에서 열어볼 수 없고, 안드로이드에서도 쓸 수 없다. 회사에서 메...
Claude Code 사용량, 메뉴바에서 한눈에 — Claude Usage Monitor
Claude Code 사용량, 메뉴바에서 한눈에
왜 만들었나
Claude Code를 쓰다 보면 피할 수 없는 게 사용량 제한이다.
5시간 단위, 7일 단위로 사용량이 관리되는데, 문제는 지금 내가 얼마나 썼는지 확인할 방법이 마땅치 않다는 것.
비슷한 기능의 도구를 찾아서 써봤는데, 내 입맛에 딱 맞지 않았다.
무엇보다 권한 요청이 반복적으로 뜨는 게 불편했다. 쓸 때마다 허용 팝업이 뜨니 집중이 깨진다.
그래서 직접 만들기로 했다.
목표는 단순했다 — 메뉴바에서 한눈에, 설정 없이 바로 동작하는 앱.
뭘 만들었나
Claude Usage Monitor는 macOS / Windows 메뉴바(...
[정보처리기사 실기] Ⅹ. 기사실기 요약 / 정리 / 단답 / Tip / 알고가기!
Ⅹ. 프로그래밍 언어 - 알고가기!!
정보보안의 세가지 요소
기밀성, 무결성, 가용성
자산
조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
위협
조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위
취약점
위협이 발생하기 위한 사전 조건에 따른 상황
개인정보보호법
...
전체 글 90개, 12 페이지