개발하면서 날아가는 기억을 붙잡기 위한 블로그
1인 개발자 뉴스 #42 - 2026년 5월 2주차
이번 주 1인 개발자를 위한 기술 뉴스 5선 — 백그라운드 코딩 에이전트, 에이전트 메모리, Agents CLI, Oxc Angular 컴파일러, GitHub Stacked PR
1인 개발자 뉴스 #41 - 2026년 4월 4주차
이번 주 1인 개발자를 위한 기술 뉴스 2선 — Grafana의 코딩 에이전트 관찰 CLI, Google Room 3.0의 멀티플랫폼 전환
SwiftData @Query 실전 함정 두 가지 — enum #Predicate와 빈 목록의 modelContext
문제 상황 문서 스캔 앱을 만들면서 Inbox/Archive 목록을 구현하고 있었는데요. SwiftData @Query로 문서 상태별 필터링을 하려던 순간, 예상치 못한 컴파일 에러 두 개를 연달아 만났습니다. 함정 1: #Predicate에서 enum 비교가 안 된다 처음 시도한 코드 자연스럽게 이렇게 작성했거든요. @Model class Document { var status: DocumentStatus // enum 저장 프로퍼티 // ... } enum DocumentStatus: String, Codable { case inbox, archived } 그리고 @Query에서 필터링: @Query( filter: #Predicate<Document> { $0.status == .inbox }, sort: \Document.createdAt, order: .reverse ) private var documents: [Document] 깔끔해 보이죠? 그런데 빌드하면 컴파일 에러가 나요. ...
SwiftData 모델명 Tag가 빌드를 깨뜨리는 이유 (+ Xcode 16 .gitkeep 함정)
뭘 하려고 했냐면 문서 스캔 앱을 새로 시작했는데요. SwiftData로 Document와 Tag 모델을 만들고, 테스트를 먼저 작성하는 TDD로 진행하고 있었어요. 모델 코드는 심플했거든요: @Model class Tag { var name: String var color: String @Relationship(inverse: \Document.tags) var documents: [Document] } 여기까지는 문제없었어요. 빌드도 잘 되고. 첫 번째 삽질: Tag가 내 Tag가 아닌데요 테스트에서 FetchDescriptor를 쓰는 순간 터졌어요: let fetched = try context.fetch(FetchDescriptor<Tag>()) error: 'Tag' is ambiguous for type lookup in this context 처음엔 뭔 소린가 했는데요. SwiftUI에 이미 Tag라는 타입이 있더라고요. TabView나 Picker에서 선택 항목을 식별할 때 쓰는 그 Tag요. ...
SwiftUI에서 이미지 줌이 자연스럽지 않은 이유 — UIScrollView 래핑이 정답인 경우
문제 상황 문서 스캔 앱에서 스캔 이미지를 전체화면으로 보여주는 뷰어가 필요했는데요. 핀치 줌으로 확대하고, 확대 상태에서 드래그로 다른 부분을 볼 수 있어야 했어요. SwiftUI로 당연히 될 줄 알았습니다. 삽질 과정 1차: MagnifyGesture만 처음에는 단순하게 MagnifyGesture만 붙였거든요. Image(uiImage: uiImage) .scaleEffect(scale) .gesture( MagnifyGesture() .onChanged { value in scale = max(1.0, value.magnification) } .onEnded { _ in withAnimation { scale = 1.0 } } ) 손가락을 떼면 원래 크기로 돌아가니까 확대 상태를 유지할 수가 없었어요. 그래서 lastScale을 추가해서 확대를 유지하도록 했는데, 이번엔 확대된 이미지를 이동할 방법이 없더라고요. ...
1인 개발자 뉴스 #40 - 2026년 4월 4주차
이번 주 1인 개발자를 위한 기술 뉴스 3선
CodeFlash - 개발자용 코드 패턴 반복 학습 CLI 스타트업 아이디어
문제 (Problem) 개발자가 새로운 프레임워크나 언어를 학습할 때 효율적인 반복 학습 방법이 없습니다: React hooks, Go concurrency, Rust ownership 등 개념을 한 번 읽고 금방 잊음 공식 문서를 반복해서 찾아보는 데 매일 시간 소모 Anki 같은 SRS(Spaced Repetition System)는 카드를 직접 만들어야 해서 진입장벽 높음 Stack Overflow 답변을 북마크해도 다시 안 봄 “이 API가 뭐였지?” 매일 반복되는 마이크로 비효율 Pain Point 강도: 7/10 - 은근하지만 매일 누적되는 학습 비효율 시장 (Market) 1차 시장: 글로벌 소프트웨어 개발자 세그먼트: 새로운 기술 스택을 학습하거나 팀에 온보딩하는 개발자 TAM: 언어 학습 앱 시장 ~$7.4B + 개발자 도구 시장 ~$6.4B 교차 영역 핵심 사실: AnkiMobile $24.99 일회성 구매로 연 $300-500K 수익 추정. 개발자 특화 SRS는 시장에 없음 솔루션 (Solution) CodeFlash - 프로그래밍 패턴과 API를 코드 스니펫 기반으로 반복 학습하는 개발자용 SRS CLI ...
SelfHealTest Lite - Playwright 자동복구 플러그인 스타트업 아이디어
문제 (Problem) UI 자동화 테스트는 프론트엔드가 변경될 때마다 셀렉터가 깨지는 문제를 안고 있습니다: 디자인 리팩토링 후 data-testid, CSS 클래스, XPath가 일괄 변경 CI 파이프라인이 셀렉터 불일치로 빈번하게 실패 수동으로 깨진 셀렉터를 찾아 수정하는 데 매주 수 시간 소요 Playwright 사용자도 예외가 아님 — locator가 깨지면 수동 업데이트 필요 Pain Point 강도: 9/10 - 테스트 유지보수가 테스트 작성보다 더 고통스러움 시장 (Market) 1차 시장: 글로벌 QA 엔지니어, 풀스택 개발자 세그먼트: Playwright로 E2E 테스트를 운영하는 1-50인 개발팀 TAM: 테스트 자동화 시장 ~$25B (2025), CAGR 15-17% 핵심 사실: 기존 자동복구 도구(Healenium, Katalon, Testim)는 모두 엔터프라이즈 타겟. $50/mo 미만의 인디 개발자용 자동복구 도구는 없음 솔루션 (Solution) SelfHealTest Lite - Playwright 생태계 전용 자동복구 npm 플러그인 ...
ServerShell - 셀프호스팅 원클릭 배포 CLI 스타트업 아이디어
문제 (Problem) 셀프호스팅에 관심 있는 개발자와 파워유저가 서비스를 실제로 배포하려면 여러 장벽에 부딪힙니다: Nextcloud, Gitea, Vaultwarden 등 각 서비스마다 docker-compose.yml 작성 필요 리버스 프록시(Nginx/Traefik/Caddy) 설정 + SSL 인증서 발급이 별도 DNS 레코드 설정, 방화벽 규칙, 볼륨 관리를 수동으로 처리 Coolify나 CapRover 같은 PaaS 도구는 GUI 중심이고 자체 리소스 소비가 큼 결국 “도커 설치까지는 했는데 그 다음이 막막"한 상태에서 포기 Pain Point 강도: 9/10 - 셀프호스팅 진입장벽의 핵심 원인 시장 (Market) 1차 시장: 글로벌 셀프호스팅 사용자, 홈랩 매니아, 프라이버시 중시 개발자 세그먼트: VPS를 보유하고 있거나 구매 의향이 있는 기술 사용자 TAM: IDE-as-a-Service ~$3.7B (관련 시장), 셀프호스팅 세그먼트 급성장 중 핵심 사실: Gitpod Classic 2025년 10월 종료 + SaaS 피로감 + 프라이버시 우려로 셀프호스팅 수요 폭증. r/selfhosted 구독자 100만+ 돌파 솔루션 (Solution) ServerShell - SSH 한 줄로 셀프호스팅 앱을 VPS에 원클릭 배포하는 경량 CLI 도구 ...
SpecLint Mono - Docker Compose 전용 인라인 린터 스타트업 아이디어
문제 (Problem) Docker Compose 파일은 YAML 기반이라 오타나 구조 오류를 IDE에서 즉시 잡아주지 않습니다: 포트 충돌(같은 호스트 포트를 두 서비스가 사용)을 배포 시점까지 모름 볼륨 경로 오류, 존재하지 않는 이미지 태그 참조 deprecated된 옵션(version 필드, links 등) 사용 경고 없음 서비스 의존성 순환(depends_on 사이클) 감지 불가 환경변수 참조 오류(${VAR} 미정의)가 런타임에서야 발견 Pain Point 강도: 8/10 - Docker Compose를 쓰는 개발자가 매일 겪는 설정 디버깅 시장 (Market) 1차 시장: 글로벌 풀스택 개발자, DevOps 엔지니어 세그먼트: Docker Compose로 로컬 개발환경/스테이징을 구성하는 팀 TAM: 개발자 도구 시장 ~$6.4B (2025), CAGR 16% 핵심 사실: VSCode 30M+ 활성 사용자 중 Docker 확장 설치 수 1,000만+. Docker Compose 전용 deep linting 도구는 존재하지 않음 솔루션 (Solution) SpecLint Mono - Docker Compose 파일에 특화된 VSCode/Cursor 인라인 린터 ...