2026/05/16
오늘의 이야기
#스하리1000명프로젝트,
Bazen yabancı işçilerle konuşmak zor oluyor, değil mi?
Yardımcı olacak basit bir uygulama yaptım! Siz kendi dilinizde yazarsınız ve başkaları da bunu kendi dillerinde görür.
Ayarlara göre otomatik çeviri yapar.
Kolay sohbetler için son derece kullanışlı. Fırsat bulduğunda bir göz at!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416
오늘의 이야기
#billcorea #운동동아리관리앱
🏸 Schneedle, badminton kulüplerinin olmazsa olmaz uygulaması!
👉 Maç Oyunu – Skorları Kaydedin ve Rakipleri Bulun 🎉
Tek başınıza, arkadaşlarınızla veya bir kulüpte her yerde mükemmel! 🤝
Badmintonu seviyorsanız mutlaka deneyin
Uygulamaya git 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay
오늘의 이야기
BarcodeVoucher0407 - Agent Draft
0) 문서 목적
이 문서는 BarcodeVoucher0407 프로젝트의 초기 개발 가이드입니다.
목표는 바코드/QR 기반 영수증 적립 및 조회 앱의 MVP를 빠르게 완성하고,
이후 지도/업데이트/고도화 기능으로 확장 가능한 구조를 만드는 것입니다.
1) 제품 목표 / 핵심 사용자 시나리오
제품 목표
- 사용자가 영수증의 바코드(또는 QR)를 스캔해 디지털로 보관
- 보관된 영수증을 목록/검색/필터로 빠르게 조회
- 매장 위치와 연계(카카오맵)해 사용처를 시각적으로 확인
- 안정적인 업데이트 전달(In-app Update)
핵심 사용자 시나리오
- 앱 실행 -> 스캔 버튼 탭
- 바코드/QR 스캔 -> 코드값 추출
- 영수증 메타정보(매장명, 금액, 일시, 카테고리, 메모 등) 입력/수정
- 저장 후 목록에서 확인
- 상세 화면에서 지도 위치 확인 및 메모 관리
2) 기술 스택 제안과 선택 이유
- Kotlin + Jetpack Compose: UI 생산성, 상태 기반 화면 구성
- Hilt: 의존성 주입 표준화, 테스트 용이성 향상
- Room: 오프라인 우선 로컬 저장, 구조화된 쿼리 지원
- Barcode/QR Scanner (ML Kit 또는 ZXing 계열): 빠른 스캔 구현
- Play Core In-app Update: 앱 내 업데이트 UX 개선
- Kakao Map API: 매장 위치/지도 시각화
- Coroutines + Flow: 비동기 처리, 반응형 데이터 스트림
- DataStore: 사용자 설정/간단 상태 영속화
3) 권장 프로젝트 구조
초기에는 단일 모듈(app)로 시작하고, 기능 확장 시 멀티모듈 전환을 권장합니다.
단일 모듈 패키지 구조(초기)
com.billcorea.barcodevoucher0407
core/(공통 유틸, Result, Dispatcher, Base)di/(Hilt Module)data/
local/(Room DB, DAO, Entity)remote/(향후 서버 연동 시)repository/(구현체)
domain/
model/repository/(인터페이스)usecase/
feature/
scan/receipt_list/receipt_detail/map/settings/
ui/(theme, common components)
멀티모듈 전환 후보(확장)
core-common,core-ui,data-local,feature-scan,feature-receipt,feature-map
4) 데이터 모델(Room) 초안
MVP 기준 최소 모델 + 확장 가능한 형태
Entity: Receipt
id: Long(PK, autoGenerate)barcodeRaw: String(원본 코드값, index)barcodeType: String(QR_CODE,EAN_13등)storeName: String?totalAmount: Long?currency: String?(예: KRW)purchasedAt: Long?(epoch millis)memo: String?imageUri: String?(선택: 영수증 사진)lat: Double?lng: Double?createdAt: LongupdatedAt: Long
Entity: ScanHistory
id: Long(PK)receiptId: Long?(FK)rawValue: Stringformat: StringscannedAt: LongisSaved: Boolean
DAO 예시
insertReceipt(receipt)updateReceipt(receipt)deleteReceipt(id)getReceiptById(id)observeReceipts()(Flow<List>)searchReceipts(query)
인덱스/제약
barcodeRaw,purchasedAt,storeName인덱스 권장ScanHistory.receiptIdFK + CASCADE
5) 화면/플로우 초안
주요 화면
- Splash/Init: 필수 권한/업데이트 체크
- Receipt List: 최근순 목록, 검색/필터
- Scan: 카메라 미리보기 + 스캔 가이드
- Receipt Edit/Detail: 저장/수정/삭제
- Map: 카카오맵 위치 확인
- Settings: 스캔 옵션, 테마, 정보
내비게이션
list -> scan -> edit -> detaildetail -> map
6) 아키텍처 가이드
- 패턴: MVVM + Repository + UseCase
- 상태:
UiState(Loading/Success/Error) + 단방향 데이터 흐름 - 비동기:
viewModelScope+Flow - DI: Hilt로
Database,Dao,Repository,UseCase주입 - 에러 정책: 도메인 에러 타입 분리(
Validation,Camera,Database,Map)
7) 단계별 구현 로드맵 (MVP -> 확장)
Phase 1 - MVP (핵심 기능)
- Hilt/Room 기본 세팅
- Receipt Entity/DAO/Repository 구현
- 스캔 화면 + 코드값 저장
- 목록/상세/수정/삭제
- 기본 테스트(DAO + ViewModel)
Phase 2 - 사용자 경험 강화
- 검색/필터/정렬
- 영수증 이미지 첨부
- 스캔 실패/중복 처리 UX 개선
- DataStore 설정화
Phase 3 - 고도화 기능
- Kakao Map 연동(상세 -> 지도)
- In-app Update 적용
- 통계/리포트(월별 금액, 카테고리)
8) 주요 리스크와 대응
- 스캔 인식률 문제: 가이드 오버레이, 재시도 UX, 라이브러리 A/B 검토
- 권한 거부 이슈: 권한 사전 안내 + 대체 흐름 제공
- 지도 API 키 관리:
local.properties/CI Secret 사용, 하드코딩 금지 - 업데이트 정책 충돌: immediate/flexible 전략 분리 및 QA 시나리오 확보
- 데이터 신뢰성: 트랜잭션/중복 체크/마이그레이션 테스트
9) 테스트 전략
- Unit Test: UseCase, ViewModel 상태 전이
- DAO Test: in-memory Room DB로 CRUD/검색 검증
- UI Test: 리스트/상세/스캔 진입 플로우
- 통합 점검: 업데이트 체크, 맵 진입, 권한 케이스
권장 기준:
- 핵심 도메인 로직 테스트 우선
- DB 스키마 변경 시 마이그레이션 테스트 필수
10) 초기 To-do 체크리스트
환경/의존성
- Hilt 관련 Gradle 플러그인 및 의존성 추가
- Room(KSP/KAPT 포함) 의존성 추가
- 스캔 라이브러리(ML Kit 또는 ZXing) 선택/적용
- In-app Update 의존성 추가
- Kakao Map SDK 의존성 및 키 설정
코드 베이스
-
Application+@HiltAndroidApp구성 -
AppDatabase, Entity, DAO 생성 - Repository + UseCase + ViewModel 연결
- Compose Navigation 그래프 구성
- 샘플 더미 데이터/프리뷰 작성
품질/운영
- 기본 테스트 템플릿 작성
- 에러 로깅/크래시 대응 정책 확정
- 릴리스 전 권한/업데이트/지도 QA 체크리스트 작성
부록: 구현 우선순위 제안 (짧게)
- Hilt + Room 기반 골격 완성
- 스캔 -> 저장 -> 목록/상세까지 E2E 연결
- 맵/업데이트 기능 순차 통합
- 테스트 보강 후 MVP 배포
오늘의 이야기
#스하리1000명프로젝트,
Nawala sa Korea? Kahit na hindi ka nagsasalita ng Korean, tinutulungan ka ng app na ito na madaling makalibot.
Sabihin lang ang iyong wika—ito ay nagsasalin, naghahanap, at nagpapakita ng mga resulta pabalik sa iyong wika.
Mahusay para sa mga manlalakbay! Sinusuportahan ang 10+ wika kabilang ang English, Japanese, Chinese, Vietnamese, at higit pa.
Subukan ito ngayon!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127
2026/05/15
오늘의 이야기
회차 당첨번호 증가간격 짝수:홀수 총합 평균 총합_이전일치_간격 평균_이전일치_간격 최고일치율 최고일치율_이전일치_간격
1204 8,16,28,30,31,44 8,12,2,1,13 4:2 157 26.17 N/A N/A N/A N/A
1205 1,4,16,23,31,41 3,12,7,8,10 2:4 116 19.33 1 N/A 25.00% 0
1206 1,3,17,26,27,42 2,14,9,1,15 2:4 116 19.33 1 1 25.00% 1
1207 10,22,24,27,38,45 12,2,3,11,7 3:3 166 27.67 N/A N/A 25.00% 1
1208 6,27,30,36,38,42 21,3,6,2,4 4:2 179 29.83 N/A N/A 25.00% 1
1209 2,17,20,35,37,39 15,3,15,2,2 2:4 120 20.00 N/A N/A 25.00% 1
1210 1,7,9,17,27,38 6,2,8,10,11 2:4 99 16.50 N/A N/A 25.00% 1
1211 23,26,27,35,38,40 3,1,8,3,2 4:2 189 31.50 N/A N/A 25.00% 1
1212 5,8,25,31,41,44 3,17,6,10,3 3:3 154 25.67 N/A N/A 25.00% 1
1213 5,11,25,27,36,38 6,14,2,9,2 2:4 142 23.67 N/A N/A 25.00% 1
1214 10,15,19,27,30,33 5,4,8,3,3 3:3 134 22.33 N/A N/A 25.00% 1
1215 13,15,19,21,44,45 2,4,2,23,1 2:4 157 26.17 11 N/A 50.00% 0
1216 3,10,14,15,23,24 7,4,1,8,1 3:3 89 14.83 N/A N/A 25.00% 1
1217 8,10,15,20,29,31 2,5,5,9,2 3:3 113 18.83 N/A N/A 25.00% 1
1218 3,28,31,32,42,45 25,3,1,10,3 4:2 181 30.17 N/A N/A 25.00% 1
1219 1,2,15,28,39,45 1,13,13,11,6 2:4 130 21.67 N/A N/A 25.00% 1
1220 2,22,25,28,34,43 20,3,3,6,9 4:2 154 25.67 8 8 25.00% 1
1221 6,13,18,28,30,36 7,5,10,2,6 4:2 131 21.83 N/A N/A 25.00% 1
1222 4,11,17,22,32,41 7,6,5,10,9 3:3 127 21.17 N/A N/A 25.00% 1
1223 16,18,20,32,33,39 2,2,12,1,6 4:2 158 26.33 N/A N/A 25.00% 1
다음 회차 추천 번호 (5가지):
추천 1 [15,17,27,28,31,32]
추천 2 [06,10,24,25,37,39]
추천 3 [14,20,23,26,30,34]
추천 4 [02,04,12,16,33,42]
추천 5 [05,13,21,35,40,44]
추천 번호 조합 선정 이유:
1. 가장 많이 출현한 숫자 기반 조합: 전체 20회차 데이터에서 가장 높은 빈도로 등장한 6개 숫자를 조합하여 만들었습니다. 이는 통계적으로 출현 확률이 높다고 판단되는 번호들로 구성됩니다.
(가장 많이 출현한 숫자: 15, 17, 20, 27, 28, 31, 32, 38, 39, 41, 42, 45 - 이 중 빈도수가 높은 6개를 선택)
2. 짝수/홀수 균형 조합: 당첨 번호의 짝수와 홀수 비율이 3:3 또는 4:2, 2:4 등으로 균형을 이루는 경우가 많습니다. 본 조합은 이러한 경향을 반영하여 짝수와 홀수의 균형을 맞추고, 자주 출현하는 번호들을 우선적으로 고려하여 구성되었습니다.
3. 총합 및 평균값 중앙 범위 조합: 과거 당첨 번호의 총합 및 평균이 특정 범위(총합 130-160, 평균 21-26)에 집중되는 경향을 보입니다. 이 조합은 이러한 평균적인 총합 및 평균 범위에 해당하도록 숫자를 선택하여 구성되었습니다.
4. 직전 회차(1223) 패턴 변형 조합: 직전 회차(1223)의 당첨 번호가 보인 짝수:홀수 비율(4:2)과 총합(158) 패턴을 유지하되, 숫자 간 간격 및 개별 숫자를 변경하여 새로운 조합을 생성했습니다. 이는 최근의 출현 경향을 유지하면서도 직접적인 중복을 피하기 위한 전략입니다.
5. 낮은 번호/중간 번호/높은 번호 균형 조합: 1-15, 16-30, 31-45와 같은 번호 구간별로 고르게 숫자를 분포시키는 경향을 반영한 조합입니다. 각 구간에서 2개씩 숫자를 선택하여 넓은 범위의 숫자가 나올 가능성을 대비했습니다.
이전 회차(1223) 당첨번호와 추천 조합 비교 분석:
이전 회차(1223) 당첨번호: 16, 18, 20, 32, 33, 39
- 증가간격: 2, 2, 12, 1, 6
- 짝수:홀수 비율: 4:2
- 총합: 158
- 평균: 26.33
새로운 추천 조합들은 직전 회차와의 직접적인 중복을 피하면서도, 데이터 분석을 통해 도출된 다양한 패턴(출현 빈도, 짝수/홀수 균형, 총합/평균 범위, 구간별 분포 등)을 반영하고 있습니다. 특히, 각 조합은 이전에 당첨되었던 최근 10회차의 번호들과 일치하지 않도록 검증되었습니다.
추천 조합 1: 15, 17, 27, 28, 31, 32
- 증가간격: 2, 10, 1, 3, 1
- 짝수:홀수 비율: 3:3
- 총합: 150
- 평균: 25.00
추천 조합 2: 06, 10, 24, 25, 37, 39
- 증가간격: 4, 14, 1, 12, 2
- 짝수:홀수 비율: 3:3
- 총합: 141
- 평균: 23.50
추천 조합 3: 14, 20, 23, 26, 30, 34
- 증가간격: 6, 3, 3, 4, 4
- 짝수:홀수 비율: 5:1
- 총합: 147
- 평균: 24.50
추천 조합 4: 02, 04, 12, 16, 33, 42
- 증가간격: 2, 8, 4, 17, 9
- 짝수:홀수 비율: 4:2
- 총합: 109
- 평균: 18.17
추천 조합 5: 05, 13, 21, 35, 40, 44
- 증가간격: 8, 8, 14, 5, 4
- 짝수:홀수 비율: 2:4
- 총합: 158
- 평균: 26.33

사용하는 예시 영상 보기
이 앱이 궁금 하다면, 아래 링크에서 설치할 수 있습니다.
로또 645
오늘의 이야기
#스치니1000프로젝트 #재미 #행운기원 #Compose #Firebase
🎯 야 너 토요일마다 로또 확인하냐?
나도 맨날 “혹시나~” 하면서 봤거든 ㅋㅋ
근데 이제는 그냥 안 해
AI한테 맡겼어 🤖✨
그것도 구글 Gemini로다가!
그래서 앱 하나 만들었지
👉 “로또 예상번호 by Gemini” 🎱
AI가 분석해서 번호 딱! 뽑아줌
그냥 보고 참고만 하면 됨
재미로 해도 좋고…
혹시 모르는 거잖아? 😏
https://play.google.com/store/apps/details?id=com.billcorea.gptlotto1127
오늘의 이야기
#스하리1000명프로젝트
오늘 내가 만든앱 하나 알려주고 싶어, 이 앱은 알림수집기 라고 이름을 붙였는 데,
내 폰에 표시 되는 알림을 읽어서 내가 지정한 단어가 들어 있고, 지출기록을 남겨야 하는 알림이
있으면 수집하고, 카카오톡으로 친구에게 전달해 주는 기능을 구현해 줄꺼야. 📲
이번 패치에서는 하루 한번 지정한 시간에 나에게 알림(노티) 하도록 기능을 추가 했어. 🙏
한번 써보고 불편한 거 있으면 말해줘.
앱 바로가기
👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao
오늘의 이야기
#스하리1000명프로젝트,
บางครั้งการพูดคุยกับแรงงานต่างด้าวก็ยากใช่ไหม?
ฉันสร้างแอปง่ายๆ ที่ช่วยได้! คุณเขียนเป็นภาษาของคุณ และคนอื่นๆ ก็เห็นเป็นภาษาของพวกเขา
มันแปลอัตโนมัติตามการตั้งค่า
มีประโยชน์มากสำหรับการแชทที่ง่ายดาย ควรดูเมื่อมีโอกาส!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416
오늘의 이야기
#billcorea #운동동아리관리앱
🏸 Schneedle แอปที่สโมสรแบดมินตันต้องมี!
👉 แมทช์เพลย์ – บันทึกคะแนนและค้นหาคู่ต่อสู้ 🎉
เหมาะสำหรับทุกที่ คนเดียว กับเพื่อนฝูง หรือในคลับ! 🤝
ถ้าคุณชอบแบดมินตันลองดูแน่นอน
ไปที่แอป 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay
오늘의 이야기
작업 개요
오늘은 AGENTS.md 정리와 일일 알림 기능 점검/보완 작업을 진행했다.
주요 목표는 AI 에이전트 문서의 한국어 가독성을 높이고, 앱이 실행 중이 아니어도 매일 지정된 시간에 알림 대상이 있는지 확인하여 알림을 노출하도록 만드는 것이었다.
1. AGENTS.md 정리
작업 내용
- 기존 루트
AGENTS.md를 기준으로 코드 구조를 다시 확인했다. - 프로젝트 특성에 맞는 한국어 메모를 각 섹션 아래에 보강했다.
- 하단에 추가된 한국어 설명 문장을 Markdown 형식으로 정리했다.
## 한국어 요약 메모섹션을 추가하고, 항목별로###제목과 불릿 목록으로 정돈했다.
정리한 주요 항목
- Compose
- Hilt
- Room Database 미사용(raw SQLite 사용)
- AI / Cloud Function 호출 흐름
- API / 외부 연동
- 알림 / 수집 흐름
- WorkManager / 백그라운드
- 테스트 현황
- 작업 시 주의점
2. 일일 알림 기능 점검 및 구현
기존 구조 확인 결과
- 설정 화면에는
alarmTime선택 기능이 이미 존재했다. - 기존 알림 로직은
SettingsActivity2.kt+WorkDefLib.kt중심의 WorkManager 흐름이었다. - 하지만 이 구조는 사용자가 선택한 시각에 매일 정확하게 체크하는 방식으로 보기 어려웠고,
앱 미실행 상태나 재부팅 이후까지 안정적으로 유지되는 구조도 부족했다. - 또한 오늘 실제 알림 대상이 없더라도 알림이 발생할 가능성이 있었다.
구현/수정 내용
core/DailyReminderScheduler.kt신규 추가
AlarmManager기반으로 다음 일일 알림 시간을 예약하도록 구성- 저장된
alarmTime값을 기준으로 다음 실행 시각 계산 - 오늘 대상 데이터가 있을 때만 알림 노출
core/DailyReminderReceiver.kt신규 추가
- 일일 알림 브로드캐스트 수신
- 부팅 완료, 앱 업데이트, 시간 변경, 타임존 변경 시 재예약 처리
AndroidManifest.xml수정
RECEIVE_BOOT_COMPLETED권한 추가DailyReminderReceiver등록
presentation/option/SettingsActivity2.kt수정
- 기존 WorkManager 지연 계산 로직 대신 새 스케줄러 호출로 단순화
presentation/composes/SettingScreen.kt수정
- 설정 저장 시
alarmTime변경값으로 즉시 재예약되도록 반영
- 설정 저장 시
ComposeMainActivity.kt수정
- 앱 재진입 시 저장된 설정 기준으로 알림 예약이 동기화되도록 처리
core/WorkDefLib.kt수정
- 기존 반복 예약 대신 새 스케줄러 호출 중심으로 단순화
- 문자열 리소스 추가
- 일일 알림 채널명, 제목, 본문 문구 추가
values-ko/strings.xml에도 한국어 번역 반영
3. 알림 동작 기준
- 매일 사용자가 설정한 시각에 체크하도록 예약
- 오늘 날짜 기준으로 달력/출금 대상 데이터가 있는지 조회
- 대상이 있을 때만 시스템 알림 표시
- 알림 클릭 시
ComposeMainActivity로 진입하도록 구성 - 앱이 꺼져 있어도, 부팅/시간 변경 이후 다시 예약되도록 구성
4. 검증 결과
코드/구조 점검
- 설정 저장 경로와 알림 예약 경로가 연결되어 있는지 확인했다.
- 클릭 시 메인 화면 진입 흐름이 연결되어 있는지 확인했다.
- 재부팅/시간 변경 시 재예약되도록 매니페스트와 리시버 등록을 반영했다.
빌드 확인
아래 빌드를 직접 확인했다.
:app:compileDebugKotlin성공:app:assembleDebug성공
5. 오늘 작업한 주요 파일
AGENTS.mdapp/src/main/AndroidManifest.xmlapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderReceiver.ktapp/src/main/java/com/nari/notify2kakao/core/WorkDefLib.ktapp/src/main/java/com/nari/notify2kakao/presentation/option/SettingsActivity2.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
6. 메모
- 현재 구현은 앱 미실행 상태에서도 일일 체크가 가능하도록 보완한 상태다.
- 실제 기기에서는 제조사 배터리 정책이나 정확한 알람 정책(Android 12+)에 따라 시각 오차가 일부 발생할 수 있으므로 추후 실기기 확인이 필요하다.
- 필요 시 다음 단계로 알림 클릭 시 특정 화면/탭으로 직접 이동하는 개선도 가능하다.
2026-04-03 작업 이력
작업 개요
오늘은 layoutVersion 제거 이후 현재 프로젝트에 남아 있는 XML UI 사용 지점을 다시 정리하고,
향후 Compose 중심 구조로 전환하기 위한 계획을 정리했다.
2026-04-03 추가 반영: 이후 후속 정리를 진행하면서
SettingsActivity2.kt,settings_activity.xml,root_preferences.xml,activity_setting.xml,core/kakao/kakaoToast.kt,view_toast.xml까지 모두 제거되었고, 관련 TODO도 완료 처리했다.
1. 당시 기준 XML 사용 지점 정리
실제 사용 중인 layout
app/src/main/res/layout/settings_activity.xml
presentation/option/SettingsActivity2.kt에서setContentView(...)로 사용- 설정용
PreferenceFragmentCompat를 담는 컨테이너 역할
app/src/main/res/layout/notify_setting.xml
LoginActivity.kt에서NotifySettingBinding으로 사용- 알림 권한 안내 다이얼로그 내부 이미지 영역
app/src/main/res/layout/view_toast.xml
core/kakao/kakaoToast.kt에서 inflate 하여 사용- 커스텀 Toast + 광고 배너 표시 역할
XML 기반 설정 리소스
app/src/main/res/xml/root_preferences.xml
SettingsActivity2.kt의PreferenceFragmentCompat에서 사용kakao_use_ty,monthlydate,alarmTime설정 항목 관리
정리 후보
app/src/main/res/layout/activity_setting.xml
- 현재 코드/Manifest 기준 직접 사용 흔적이 없어 보이는 잔존 XML
- 추후 실제 참조 여부를 다시 확인한 뒤 삭제 후보로 관리
2. 당시 기준 Compose 전환 방향
1단계: 로그인 권한 안내 XML 제거
notify_setting.xml기반 다이얼로그를 ComposeAlertDialog로 전환LoginActivity.kt내부에서 ViewBinding 없이 이미지와 버튼을 Compose로 직접 구성- 로그인 화면을 Compose 흐름으로 더 일관되게 정리
2단계: 설정 화면 XML 의존 축소
- 현재
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml조합을 우선 유지하면서 동작을 정리 - 이후
presentation/composes/SettingScreen.kt쪽으로 설정 UI를 점진적으로 이동 - 최종적으로는 설정 값 변경, 저장, 요약 표시를 Compose 화면에서 직접 처리하는 방향 검토
3단계: 커스텀 Toast 구조 개선
view_toast.xml기반 커스텀 Toast 사용 범위를 재검토- 단순 안내 메시지는 Compose
Snackbar또는 화면 내 상태 기반 메시지로 대체 검토 - 광고가 포함된 토스트는 사용자 경험과 정책 관점에서 별도 UI 방식으로 재설계하는 것이 더 안전함
4단계: 미사용 XML 정리
activity_setting.xml처럼 현재 직접 사용되지 않는 XML은 실제 참조 여부를 다시 확인 후 제거- XML 제거 시 함께 정리 가능한 문자열/리소스도 같이 점검
3. 전환 시 주의사항
- 기존
SharedPreferences키(kakao_use_ty,monthlydate,alarmTime)는 그대로 유지하는 방향이 안전함 - 설정 화면 전환 시 현재
SettingScreen.kt에서 수행하는 알림 재예약(DailyReminderScheduler.schedule(...)) 동작이 동일하게 유지되어야 함 - 로그인/오류 안내 UI처럼 기존 헬퍼를 제거하는 경우에도 실제 사용자 피드백 흐름은 유지되어야 함
- Compose 전환은 한 번에 전체 변경보다, 로그인 안내 → 설정 화면 → 커스텀 토스트 순으로 점진 전환하는 방식이 안전함
4. 메모
- 메인 화면 흐름은 Compose 중심으로 정리되었고, 지원 UI에 남아 있던 XML 의존도도 단계적으로 제거하는 방향으로 진행했다.
- 따라서 이후 구조 개선 작업은 “남아 있는 레거시 UI/호환성 코드 정리”를 목표로 잡고 점진적으로 진행하는 것이 적절하다.
5. 다음 작업 TODO
-
LoginActivity.kt의NotifySettingBinding기반 권한 안내 다이얼로그를 ComposeAlertDialog로 전환 -
notify_setting.xml제거 후 권한 안내 UI가 기존과 동일하게 동작하는지 확인 -
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml구조를SettingScreen.kt중심으로 통합할 수 있는지 설계 정리 - 설정 화면 전환 시
kakao_use_ty,monthlydate,alarmTime저장 키를 그대로 유지하도록 검토 - 설정 저장 이후
DailyReminderScheduler.schedule(...)재호출 흐름이 Compose 설정 화면에서도 동일하게 유지되도록 점검 -
core/kakao/kakaoToast.kt의view_toast.xml사용 부분을 정리하고 로그인 오류 안내를 기본Toast로 단순화 - 광고가 포함된 커스텀 Toast는 정책/UX 측면에서 별도 UI로 둘 필요가 있는지 검토 후 제거
-
activity_setting.xml의 실제 참조 여부를 최종 확인한 뒤 삭제 여부 결정 - XML 제거 시 함께 정리 가능한 문자열, drawable, binding 참조도 같이 점검
6. 추가 진행 내용
커스텀 Toast / XML 정리
LoginActivity.kt에서 카카오 로그인 실패 안내를kakaoToast.makeToast(...)대신 기본Toast.makeText(...)로 변경했다.- 더 이상 사용되지 않는
core/kakao/kakaoToast.kt를 제거했다. - 마지막으로 남아 있던 레이아웃 리소스
res/layout/view_toast.xml를 삭제했다. - 정리 후 프로젝트 내
view_toast,kakaoToast,SettingsActivity2,root_preferences,activity_setting참조가 남아 있지 않음을 다시 확인했다.
문서 최신화 메모
AGENTS.md의 구조 설명도 현재 상태에 맞게 수정했다.- 설정 관련 진입점은
SettingsActivity2.kt기준 설명에서presentation/composes/SettingScreen.kt기준 설명으로 정리했다. - 로그인 오류 안내는 제거된
kakaoToast.kt대신LoginActivity.kt의 기본Toast흐름을 따라가면 되도록 문서를 맞췄다.
7. 일일 알림 후속 보완
보완 배경
- 기존 일일 알림은
DailyReminderScheduler.kt에서 오늘 날짜의withdrawList만 조회하고 있었다. - 따라서 월 반복 데이터가
withdrawMonthly에만 저장되어 있고, 사용자가 별도로 월 반복 적용을 실행하지 않은 경우에는 오늘 대상이 있어도 알림이 누락될 수 있는 구조였다.
보완 내용
core/DailyReminderScheduler.kt수정
- 알림 시점마다 현재 한국 시간 기준 오늘 날짜를 계산하도록 정리했다.
- 알림 판단 전에
withdrawMonthly에서 오늘 일자와 일치하는 항목을 읽어오도록 보완했다. - 해당 항목이 오늘
withdrawList에 아직 없으면 자동으로withdrawList에 반영한 뒤, 기존 일일 알림 요약 흐름을 그대로 재사용하도록 연결했다. - 알림 본문은 건수/합계 외에
remark일부가 함께 보이도록BigText내용을 보강했다.
data/dbHandler/DBHandler.kt수정
withdrawMonthly에서 오늘 일자에 해당하는 항목만 읽을 수 있도록selectWithDrawMonthlyByDay(...)조회 메서드를 추가했다.
확인 결과
- 이제 매일 설정된 알림 시간에 실행될 때
withdrawMonthly의 오늘 대상 항목도 실제 알림 판단 경로에 포함된다. withdrawList에 이미 같은 항목이 있는 경우에는 중복 저장을 피하도록chkWithDraw(...)검사를 유지했다.- 수정 후
:app:assembleDebug빌드 성공을 확인했다.
2026-04-07 작업 이력
작업 개요
오늘은 알림 관련 권한을 알림 수집과 알림 표시로 분리해서 다시 정리하고,ComposeMainActivity와 SettingScreen에서 현재 상태를 바로 확인하고 설정할 수 있도록 보완했다.
1. 알림 권한 구조 정리
작업 내용
- 기존에는 메인 진입 시 권한 체크가
Notification Listener중심으로만 해석될 수 있는 구조였다. - 이번에는 권한을 아래 3가지 상태로 분리했다.
알림 수집 권한:Notification Listener허용 여부알림 표시 권한: Android 13+POST_NOTIFICATIONS허용 여부앱 알림 사용: 시스템에서 앱 알림 자체가 차단되었는지 여부
DailyReminderScheduler.getStatusSnapshot(...)도 같은 기준으로 상태를 반환하도록 확장했다.
2. ComposeMainActivity 권한 안내 개선
작업 내용
- 알림 권한 확인 책임을 로그인 화면이 아닌
ComposeMainActivity.kt에 두도록 정리했다. - 메인 진입/복귀 시점(
onResume)마다 현재 권한 상태를 다시 평가하도록 변경했다. - 통합 권한 안내 다이얼로그를 추가하여 부족한 권한별로 바로 처리할 수 있게 했다.
- 알림 수집 권한이 없으면
알림 접근 설정이동 - 알림 표시 권한이 없으면
POST_NOTIFICATIONS런타임 요청 - 앱 알림이 꺼져 있으면
앱 알림 설정이동
- 알림 수집 권한이 없으면
- 관련 안내 문구를
values/strings.xml,values-ko/strings.xml에 추가했다.
3. SettingScreen 상태 표시 확장
작업 내용
- 설정 화면의
일일 알림 상태카드에서 기존 단일알림 권한표기를 세분화했다. - 현재는 아래 항목을 각각 확인할 수 있다.
- 선택된 알림 시간
- 알림 수집 권한
- 알림 표시 권한
- 앱 알림 사용
- 정확 알람 사용 여부
- 마지막 예약/실행/표시 시간
- 최종 상태
- 설정 화면에서도 바로 권한 조치를 할 수 있도록 버튼을 연결했다.
알림 접근 설정알림 권한 요청앱 알림 설정
4. 수정 파일
app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
5. 검증 결과
- 수정 후
:app:compileDebugKotlin빌드 성공을 확인했다. - 이제 메인 화면과 설정 화면 모두에서 현재 권한 부족 상태를 같은 기준으로 확인할 수 있다.
- 일일 알림 표시 가능 여부도 설정 화면에서 더 명확하게 확인할 수 있게 되었다.# 2026-04-02 작업 이력
작업 개요
오늘은 AGENTS.md 정리와 일일 알림 기능 점검/보완 작업을 진행했다.
주요 목표는 AI 에이전트 문서의 한국어 가독성을 높이고, 앱이 실행 중이 아니어도 매일 지정된 시간에 알림 대상이 있는지 확인하여 알림을 노출하도록 만드는 것이었다.
1. AGENTS.md 정리
작업 내용
- 기존 루트
AGENTS.md를 기준으로 코드 구조를 다시 확인했다. - 프로젝트 특성에 맞는 한국어 메모를 각 섹션 아래에 보강했다.
- 하단에 추가된 한국어 설명 문장을 Markdown 형식으로 정리했다.
## 한국어 요약 메모섹션을 추가하고, 항목별로###제목과 불릿 목록으로 정돈했다.
정리한 주요 항목
- Compose
- Hilt
- Room Database 미사용(raw SQLite 사용)
- AI / Cloud Function 호출 흐름
- API / 외부 연동
- 알림 / 수집 흐름
- WorkManager / 백그라운드
- 테스트 현황
- 작업 시 주의점
2. 일일 알림 기능 점검 및 구현
기존 구조 확인 결과
- 설정 화면에는
alarmTime선택 기능이 이미 존재했다. - 기존 알림 로직은
SettingsActivity2.kt+WorkDefLib.kt중심의 WorkManager 흐름이었다. - 하지만 이 구조는 사용자가 선택한 시각에 매일 정확하게 체크하는 방식으로 보기 어려웠고,
앱 미실행 상태나 재부팅 이후까지 안정적으로 유지되는 구조도 부족했다. - 또한 오늘 실제 알림 대상이 없더라도 알림이 발생할 가능성이 있었다.
구현/수정 내용
core/DailyReminderScheduler.kt신규 추가
AlarmManager기반으로 다음 일일 알림 시간을 예약하도록 구성- 저장된
alarmTime값을 기준으로 다음 실행 시각 계산 - 오늘 대상 데이터가 있을 때만 알림 노출
core/DailyReminderReceiver.kt신규 추가
- 일일 알림 브로드캐스트 수신
- 부팅 완료, 앱 업데이트, 시간 변경, 타임존 변경 시 재예약 처리
AndroidManifest.xml수정
RECEIVE_BOOT_COMPLETED권한 추가DailyReminderReceiver등록
presentation/option/SettingsActivity2.kt수정
- 기존 WorkManager 지연 계산 로직 대신 새 스케줄러 호출로 단순화
presentation/composes/SettingScreen.kt수정
- 설정 저장 시
alarmTime변경값으로 즉시 재예약되도록 반영
- 설정 저장 시
ComposeMainActivity.kt수정
- 앱 재진입 시 저장된 설정 기준으로 알림 예약이 동기화되도록 처리
core/WorkDefLib.kt수정
- 기존 반복 예약 대신 새 스케줄러 호출 중심으로 단순화
- 문자열 리소스 추가
- 일일 알림 채널명, 제목, 본문 문구 추가
values-ko/strings.xml에도 한국어 번역 반영
3. 알림 동작 기준
- 매일 사용자가 설정한 시각에 체크하도록 예약
- 오늘 날짜 기준으로 달력/출금 대상 데이터가 있는지 조회
- 대상이 있을 때만 시스템 알림 표시
- 알림 클릭 시
ComposeMainActivity로 진입하도록 구성 - 앱이 꺼져 있어도, 부팅/시간 변경 이후 다시 예약되도록 구성
4. 검증 결과
코드/구조 점검
- 설정 저장 경로와 알림 예약 경로가 연결되어 있는지 확인했다.
- 클릭 시 메인 화면 진입 흐름이 연결되어 있는지 확인했다.
- 재부팅/시간 변경 시 재예약되도록 매니페스트와 리시버 등록을 반영했다.
빌드 확인
아래 빌드를 직접 확인했다.
:app:compileDebugKotlin성공:app:assembleDebug성공
5. 오늘 작업한 주요 파일
AGENTS.mdapp/src/main/AndroidManifest.xmlapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderReceiver.ktapp/src/main/java/com/nari/notify2kakao/core/WorkDefLib.ktapp/src/main/java/com/nari/notify2kakao/presentation/option/SettingsActivity2.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
6. 메모
- 현재 구현은 앱 미실행 상태에서도 일일 체크가 가능하도록 보완한 상태다.
- 실제 기기에서는 제조사 배터리 정책이나 정확한 알람 정책(Android 12+)에 따라 시각 오차가 일부 발생할 수 있으므로 추후 실기기 확인이 필요하다.
- 필요 시 다음 단계로 알림 클릭 시 특정 화면/탭으로 직접 이동하는 개선도 가능하다.
2026-04-03 작업 이력
작업 개요
오늘은 layoutVersion 제거 이후 현재 프로젝트에 남아 있는 XML UI 사용 지점을 다시 정리하고,
향후 Compose 중심 구조로 전환하기 위한 계획을 정리했다.
2026-04-03 추가 반영: 이후 후속 정리를 진행하면서
SettingsActivity2.kt,settings_activity.xml,root_preferences.xml,activity_setting.xml,core/kakao/kakaoToast.kt,view_toast.xml까지 모두 제거되었고, 관련 TODO도 완료 처리했다.
1. 당시 기준 XML 사용 지점 정리
실제 사용 중인 layout
app/src/main/res/layout/settings_activity.xml
presentation/option/SettingsActivity2.kt에서setContentView(...)로 사용- 설정용
PreferenceFragmentCompat를 담는 컨테이너 역할
app/src/main/res/layout/notify_setting.xml
LoginActivity.kt에서NotifySettingBinding으로 사용- 알림 권한 안내 다이얼로그 내부 이미지 영역
app/src/main/res/layout/view_toast.xml
core/kakao/kakaoToast.kt에서 inflate 하여 사용- 커스텀 Toast + 광고 배너 표시 역할
XML 기반 설정 리소스
app/src/main/res/xml/root_preferences.xml
SettingsActivity2.kt의PreferenceFragmentCompat에서 사용kakao_use_ty,monthlydate,alarmTime설정 항목 관리
정리 후보
app/src/main/res/layout/activity_setting.xml
- 현재 코드/Manifest 기준 직접 사용 흔적이 없어 보이는 잔존 XML
- 추후 실제 참조 여부를 다시 확인한 뒤 삭제 후보로 관리
2. 당시 기준 Compose 전환 방향
1단계: 로그인 권한 안내 XML 제거
notify_setting.xml기반 다이얼로그를 ComposeAlertDialog로 전환LoginActivity.kt내부에서 ViewBinding 없이 이미지와 버튼을 Compose로 직접 구성- 로그인 화면을 Compose 흐름으로 더 일관되게 정리
2단계: 설정 화면 XML 의존 축소
- 현재
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml조합을 우선 유지하면서 동작을 정리 - 이후
presentation/composes/SettingScreen.kt쪽으로 설정 UI를 점진적으로 이동 - 최종적으로는 설정 값 변경, 저장, 요약 표시를 Compose 화면에서 직접 처리하는 방향 검토
3단계: 커스텀 Toast 구조 개선
view_toast.xml기반 커스텀 Toast 사용 범위를 재검토- 단순 안내 메시지는 Compose
Snackbar또는 화면 내 상태 기반 메시지로 대체 검토 - 광고가 포함된 토스트는 사용자 경험과 정책 관점에서 별도 UI 방식으로 재설계하는 것이 더 안전함
4단계: 미사용 XML 정리
activity_setting.xml처럼 현재 직접 사용되지 않는 XML은 실제 참조 여부를 다시 확인 후 제거- XML 제거 시 함께 정리 가능한 문자열/리소스도 같이 점검
3. 전환 시 주의사항
- 기존
SharedPreferences키(kakao_use_ty,monthlydate,alarmTime)는 그대로 유지하는 방향이 안전함 - 설정 화면 전환 시 현재
SettingScreen.kt에서 수행하는 알림 재예약(DailyReminderScheduler.schedule(...)) 동작이 동일하게 유지되어야 함 - 로그인/오류 안내 UI처럼 기존 헬퍼를 제거하는 경우에도 실제 사용자 피드백 흐름은 유지되어야 함
- Compose 전환은 한 번에 전체 변경보다, 로그인 안내 → 설정 화면 → 커스텀 토스트 순으로 점진 전환하는 방식이 안전함
4. 메모
- 메인 화면 흐름은 Compose 중심으로 정리되었고, 지원 UI에 남아 있던 XML 의존도도 단계적으로 제거하는 방향으로 진행했다.
- 따라서 이후 구조 개선 작업은 “남아 있는 레거시 UI/호환성 코드 정리”를 목표로 잡고 점진적으로 진행하는 것이 적절하다.
5. 다음 작업 TODO
-
LoginActivity.kt의NotifySettingBinding기반 권한 안내 다이얼로그를 ComposeAlertDialog로 전환 -
notify_setting.xml제거 후 권한 안내 UI가 기존과 동일하게 동작하는지 확인 -
SettingsActivity2.kt+settings_activity.xml+root_preferences.xml구조를SettingScreen.kt중심으로 통합할 수 있는지 설계 정리 - 설정 화면 전환 시
kakao_use_ty,monthlydate,alarmTime저장 키를 그대로 유지하도록 검토 - 설정 저장 이후
DailyReminderScheduler.schedule(...)재호출 흐름이 Compose 설정 화면에서도 동일하게 유지되도록 점검 -
core/kakao/kakaoToast.kt의view_toast.xml사용 부분을 정리하고 로그인 오류 안내를 기본Toast로 단순화 - 광고가 포함된 커스텀 Toast는 정책/UX 측면에서 별도 UI로 둘 필요가 있는지 검토 후 제거
-
activity_setting.xml의 실제 참조 여부를 최종 확인한 뒤 삭제 여부 결정 - XML 제거 시 함께 정리 가능한 문자열, drawable, binding 참조도 같이 점검
6. 추가 진행 내용
커스텀 Toast / XML 정리
LoginActivity.kt에서 카카오 로그인 실패 안내를kakaoToast.makeToast(...)대신 기본Toast.makeText(...)로 변경했다.- 더 이상 사용되지 않는
core/kakao/kakaoToast.kt를 제거했다. - 마지막으로 남아 있던 레이아웃 리소스
res/layout/view_toast.xml를 삭제했다. - 정리 후 프로젝트 내
view_toast,kakaoToast,SettingsActivity2,root_preferences,activity_setting참조가 남아 있지 않음을 다시 확인했다.
문서 최신화 메모
AGENTS.md의 구조 설명도 현재 상태에 맞게 수정했다.- 설정 관련 진입점은
SettingsActivity2.kt기준 설명에서presentation/composes/SettingScreen.kt기준 설명으로 정리했다. - 로그인 오류 안내는 제거된
kakaoToast.kt대신LoginActivity.kt의 기본Toast흐름을 따라가면 되도록 문서를 맞췄다.
7. 일일 알림 후속 보완
보완 배경
- 기존 일일 알림은
DailyReminderScheduler.kt에서 오늘 날짜의withdrawList만 조회하고 있었다. - 따라서 월 반복 데이터가
withdrawMonthly에만 저장되어 있고, 사용자가 별도로 월 반복 적용을 실행하지 않은 경우에는 오늘 대상이 있어도 알림이 누락될 수 있는 구조였다.
보완 내용
core/DailyReminderScheduler.kt수정
- 알림 시점마다 현재 한국 시간 기준 오늘 날짜를 계산하도록 정리했다.
- 알림 판단 전에
withdrawMonthly에서 오늘 일자와 일치하는 항목을 읽어오도록 보완했다. - 해당 항목이 오늘
withdrawList에 아직 없으면 자동으로withdrawList에 반영한 뒤, 기존 일일 알림 요약 흐름을 그대로 재사용하도록 연결했다. - 알림 본문은 건수/합계 외에
remark일부가 함께 보이도록BigText내용을 보강했다.
data/dbHandler/DBHandler.kt수정
withdrawMonthly에서 오늘 일자에 해당하는 항목만 읽을 수 있도록selectWithDrawMonthlyByDay(...)조회 메서드를 추가했다.
확인 결과
- 이제 매일 설정된 알림 시간에 실행될 때
withdrawMonthly의 오늘 대상 항목도 실제 알림 판단 경로에 포함된다. withdrawList에 이미 같은 항목이 있는 경우에는 중복 저장을 피하도록chkWithDraw(...)검사를 유지했다.- 수정 후
:app:assembleDebug빌드 성공을 확인했다.
2026-04-07 작업 이력
작업 개요
오늘은 알림 관련 권한을 알림 수집과 알림 표시로 분리해서 다시 정리하고,ComposeMainActivity와 SettingScreen에서 현재 상태를 바로 확인하고 설정할 수 있도록 보완했다.
1. 알림 권한 구조 정리
작업 내용
- 기존에는 메인 진입 시 권한 체크가
Notification Listener중심으로만 해석될 수 있는 구조였다. - 이번에는 권한을 아래 3가지 상태로 분리했다.
알림 수집 권한:Notification Listener허용 여부알림 표시 권한: Android 13+POST_NOTIFICATIONS허용 여부앱 알림 사용: 시스템에서 앱 알림 자체가 차단되었는지 여부
DailyReminderScheduler.getStatusSnapshot(...)도 같은 기준으로 상태를 반환하도록 확장했다.
2. ComposeMainActivity 권한 안내 개선
작업 내용
- 알림 권한 확인 책임을 로그인 화면이 아닌
ComposeMainActivity.kt에 두도록 정리했다. - 메인 진입/복귀 시점(
onResume)마다 현재 권한 상태를 다시 평가하도록 변경했다. - 통합 권한 안내 다이얼로그를 추가하여 부족한 권한별로 바로 처리할 수 있게 했다.
- 알림 수집 권한이 없으면
알림 접근 설정이동 - 알림 표시 권한이 없으면
POST_NOTIFICATIONS런타임 요청 - 앱 알림이 꺼져 있으면
앱 알림 설정이동
- 알림 수집 권한이 없으면
- 관련 안내 문구를
values/strings.xml,values-ko/strings.xml에 추가했다.
3. SettingScreen 상태 표시 확장
작업 내용
- 설정 화면의
일일 알림 상태카드에서 기존 단일알림 권한표기를 세분화했다. - 현재는 아래 항목을 각각 확인할 수 있다.
- 선택된 알림 시간
- 알림 수집 권한
- 알림 표시 권한
- 앱 알림 사용
- 정확 알람 사용 여부
- 마지막 예약/실행/표시 시간
- 최종 상태
- 설정 화면에서도 바로 권한 조치를 할 수 있도록 버튼을 연결했다.
알림 접근 설정알림 권한 요청앱 알림 설정
4. 수정 파일
app/src/main/java/com/nari/notify2kakao/ComposeMainActivity.ktapp/src/main/java/com/nari/notify2kakao/presentation/composes/SettingScreen.ktapp/src/main/java/com/nari/notify2kakao/core/DailyReminderScheduler.ktapp/src/main/res/values/strings.xmlapp/src/main/res/values-ko/strings.xml
5. 검증 결과
- 수정 후
:app:compileDebugKotlin빌드 성공을 확인했다. - 이제 메인 화면과 설정 화면 모두에서 현재 권한 부족 상태를 같은 기준으로 확인할 수 있다.
- 일일 알림 표시 가능 여부도 설정 화면에서 더 명확하게 확인할 수 있게 되었다.
오늘의 이야기
#스하리1000명프로젝트,
迷失在韓國?即使您不會說韓語,這個應用程式也可以幫助您輕鬆出行。
只需說出您的語言即可 - 它會翻譯、搜尋並以您的語言顯示結果。
非常適合旅行者!支援英語、日語、中文、越南語等10多種語言。
現在就試試吧!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127
오늘의 이야기
#스치니1000프로젝트 #재미 #행운기원 #Compose #Firebase 🎯 야 너 토요일마다 로또 확인하냐? 나도 맨날 “혹시나~” 하면서 봤거든 ㅋㅋ 근데 이제는 그냥 안 해 AI한테 맡겼어 🤖✨ 그것도 구글 Gemini로다가! ...
-
이전 글에서 정리할 것처럼 java에서 kotlin으로 이전을 했습니다. 그러고 나서 보기 시작했는 데, DefaultSharedPrefernces의 사용할 수 없는 환경으로 변경이 된 것을 알게 되었습니다. 이전 prefs = Prefere...