| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- github actions
- JWT
- playwright
- 크롤링
- Android
- electron
- 백엔드
- sqlite
- 온디바이스AI
- 상태관리
- 마이그레이션
- contextBridge
- 배포
- Kotlin
- python
- 아키텍처
- REST API
- 소셜로그인
- FastAPI
- typescript
- next.js
- php
- 메일자동화
- Vite
- 프론트엔드
- React
- 도메인설계
- javascript
- 인증
- 보안
- Today
- Total
목록2026/06/12 (15)
HM소프트
Room 스키마 마이그레이션과 단위 테스트 98개로 모바일 축구 커리어 게임을 안전하게 키운 기록. 순방향 누적 마이그레이션, 인덱스 이름·기본값까지 맞춰야 하는 스키마 검증, 순수 함수 TDD, 부동소수점 delta 비교, DataStore 주입과 가짜 DAO·테스트 디스패처로 DB 없이 ViewModel을 검증한 방법을 다룬다.Room DB 마이그레이션과 단위 테스트 98개를 작성한 안드로이드 개발기다. 3편: 마이그레이션과 테스트2편에서 게임 시스템과 원자적 SQL을 다뤘다. 이번 편은 그 로직들을 안전하게 떠받친 두 가지 — Room 스키마 마이그레이션과 단위 테스트(TDD)다. 게임처럼 상태가 많은 앱은 "DB 스키마가 바뀔 때"와 "로직이 맞는지"를 못 잡으면 금방 무너진다.Room 마이그레이..
모바일 축구 커리어 게임의 사기·부상·재화·은퇴 시스템을 데이터 정합성 중심으로 만든 기록. 계산은 순수 함수로 분리하고, 회복·재화 차감을 단일 원자적 UPDATE로 합쳐 연타 경쟁 상태를 막고, 영향 행 수로 성공을 판정하며, is_retired 플래그로 은퇴를 멱등하게 만든 이층 방어 구조를 다룬다.안드로이드 게임의 시스템 설계와 원자적 SQL 처리를 정리한다. 2편: 게임 시스템1편에서 Compose + Hilt + Room 아키텍처를 다뤘다. 이번 편은 게임의 재미를 만드는 시스템들 — 사기(Morale), 부상 센터, 은퇴/레거시 — 그리고 이들을 구현하며 가장 신경 쓴 데이터 정합성이다.사기(Morale) 시스템선수의 컨디션을 좌우하는 사기 수치를 넣었다. 경기 결과가 사기에 영향을 주고, ..
오프라인 우선 모바일 축구 커리어 게임을 Jetpack Compose·Hilt·Room·MVVM으로 올린 아키텍처 기록. 단방향 의존, 읽기 전용 StateFlow UiState, 변하는 값은 Flow 한 번 값은 suspend 구분, Hilt 모듈 분리와 Room 단일 인스턴스, SQL UPDATE에 불변식을 새긴 동시성 처리, Navigation Compose 경로 관리를 다룬다.Jetpack Compose + Hilt + Room으로 짠 안드로이드 아키텍처를 정리한다. 시리즈를 시작하며선수를 만들어 훈련하고, 경기를 시뮬레이션하고, 시즌과 이적을 거쳐 은퇴하면 다음 세대로 능력이 이어지는 — 모바일 축구 커리어 게임을 안드로이드로 만들었다. 서버 시뮬레이션이 아니라, 게임 로직과 데이터가 대부분 단..
Docker Compose로 단일 VM에 배포한 과제 채점 플랫폼의 운영 기록. 빌드·배포 분리, 레지스트리 전체 경로 이미지 참조, 떠도는 이미지 정리로 디스크 고갈 차단, 빌드 시점 플래그로 데모 계정 죽은 코드 제거, AI 프롬프트·브라우저 폼 검증·날짜 로케일까지 잡은 영어 국제화, Nginx SSE 설정을 다룬다.Docker 배포 운영과 다국어 전환 구현을 정리한다. 3편: 배포와 운영1편 자동 채점, 2편 집계 버그에 이어 시리즈 마지막이다. 기능 너머의 "어떻게 안정적으로 굴리고, 누가 쓰게 만드느냐" — Docker 배포 운영과 다국어 전환을 다룬다.컨테이너 이미지 경로 — compose가 pull을 못 하던 문제배포는 Docker Compose로 했고, 이미지는 Artifact Regis..
소프트 삭제가 대시보드 집계에 일으킨 연쇄 버그 다섯 개를 추적한 디버깅 기록. 채점 큐가 항상 비어 보인 상태 필터 오류, 카드와 큐 모집단 불일치, V1·V2 화면 버그 복제, 라이프사이클 상태 집합과 포함·제외 목록 선택, 읽는 쪽이 비활성을 명시해야 하는 책임까지 Drizzle·PostgreSQL로 잡았다.소프트 삭제가 만든 대시보드 집계 버그를 추적해 잡은 과정을 정리한다. 2편: 집계 버그1편에서 "삭제 대신 상태(is_active)로 관리"한다고 했다. 이게 좋은 패턴인데, 집계할 때 그 상태를 빠뜨리면 통계가 줄줄이 어긋난다. 이번 편은 대시보드에서 연쇄적으로 터진 집계 버그들과, 거기서 얻은 교훈이다.발단: 채점 큐가 항상 비어 보인다대시보드의 채점 큐가 늘 비어 보이는 버그가 시작이었다..
정답지 기반 자동 채점 엔진을 NestJS·Drizzle·BullMQ로 설계한 기록. auto_exact 정규화 정확 일치, 모범답안 기준 LLM 채점, all-or-nothing 게이트, 앵커 분류와 다중 표본 중앙값 투표, 재채점 변동 신뢰도 강등, 교사 승인 총점 재합산까지 자동화 정도를 조절한 결정들을 코드로 정리했다. 시리즈를 시작하며학습 과제를 내고, 제출을 받고, 채점하고, 결과를 돌려주는 교육용 웹 플랫폼을 만들었다. 핵심은 채점을 자동화하는 것 — 정답지 기반 자동 채점과 루브릭, 그리고 AI 채점을 엮었다.세 편으로 나눠 기록한다.(이 글) 정답지 기반 자동 채점과 루브릭대시보드 집계 버그들 — "삭제된 과제"가 만든 함정배포·운영 — Docker, 이미지 정리, 다국어특정 기관·고객 ..