2026/06 (10)


collectAsState vs collectAsStateWithLifecycle 완벽 분석

collectAsState vs collectAsStateWithLifecycle 완벽 분석

오늘의 개발 스터디 안녕하세요! 오늘은 Jetpack Compose에서 코루틴 Flow를 UI 상태(State)로 변환할 때 사용하는 두 가지 핵심 메서드, collectAsState()와 collectAsStateWithLifecycle()의 차이점을 깊이 있게 분석해 보겠습니다.둘 다 Flow를 Compose가 관찰할 수 있는 State로 만들어주는 고마운 녀석들이지만, 안드로이드 생명주기(Lifecycle)를 어떻게 다루느냐에 따라 앱의 성능과 자원 소모에 거대한 차이를 만들어냅니다.1. 한 눈에 보는 핵심 요약비교 항목collectAsState()collectAsStateWithLifecycle()소속 라이브러리androidx.compose.runtimeandroidx.lifecycle:life..

공공데이터 일출·일몰 API 연동, 스케줄러 배치, DB 저장 (Springboot)

공공데이터 일출·일몰 API 연동, 스케줄러 배치, DB 저장 (Springboot)

오늘의 개발 프로젝트안녕하세요! 오늘은 스프링 부트(Spring Boot)를 활용하여 공공데이터 포털의 오픈 API를 연동하고, 원하는 데이터를 스케줄러로 자동 수집하여 MySQL 데이터베이스에 적재하는 전체 과정을 A부터 Z까지 단계별로 막힘없이 정리해 보려고 합니다.특히 개발 과정에서 10명 중 8명은 무조건 삽질하게 되는 URL 한글 파라미터 인코딩 문제와 MySQL 테이블의 고질적인 한글 깨짐(Collation) 문제를 스프링 부트 설정과 JPA 코드로 깔끔하게 해결하는 트러블 슈팅 과정까지 깊이 있게 다뤄보겠습니다. 1단계: 공공데이터 포털 API 활용 신청하기가장 먼저 데이터의 원천인 공공데이터 포털에서 키를 발급받아야 합니다.공공데이터포털(data.go.kr)에 로그인합니다.검색창에 "한국천..

스프링 부트 프로젝트 시작부터 DB(MySQL/MariaDB) 연동하기

스프링 부트 프로젝트 시작부터 DB(MySQL/MariaDB) 연동하기

오늘의 개발 스터디 안녕하세요! 오늘은 스프링 부트(Spring Boot) 프로젝트를 처음 생성하고, REST API 서버가 종료되지 않도록 켜두는 방법, 그리고 HeidiSQL 등에서 쓰던 데이터베이스(DB) 정보를 가져와 완벽하게 연동하고 코드로 검증하는 방법까지 한 번에 정리해 보겠습니다.초보 개발자분들이 가장 많이 겪는 "서버가 바로 꺼져버리는 현상"과 "자바 버전 충돌 에러" 해결법, 그리고 핵심인 build.gradle 세팅까지 다 담았으니 순서대로 따라와 주세요! 1. 스프링 부트 프로젝트 생성 및 핵심 스펙스프링 부트로 REST API 웹 서버를 만들려면, 일반 Java 프로젝트가 아니라 Spring Initializr를 통해 프로젝트를 생성해야 합니다.💻 프로젝트 기본 스펙 (추천)L..

한국 천문 연구원 일몰 일출 공공데이터 API Android 연동 (XML)

한국 천문 연구원 일몰 일출 공공데이터 API Android 연동 (XML)

오늘의 프로젝트 개발안녕하세요! 오늘은 안드로이드 개발 중 많은 개발자들을 당황하게 만드는 공공데이터 포털의 XML API를 Jetpack Compose 환경에서 깔끔하게 연동하는 방법을 정리해 보려고 합니다.대부분의 현대 API는 JSON을 지원하지만, 한국천문연구원의 출몰시각 정보(getAreaRiseSetInfo) 같은 일부 구형 공공데이터 API는 _type=json 파라미터를 던져도 무조건 XML로만 응답을 줍니다.안녕하세요! 오늘은 안드로이드 개발 중 많은 개발자들을 당황하게 만드는 공공데이터 포털의 XML API를 Jetpack Compose 환경에서 깔끔하게 연동하는 방법을 정리해 보려고 합니다📄 일출 일몰 데이터 공식 문서 확인가이드 문서를 열어보면 제공기관 스펙상 응답 데이터가 JSO..

sealed class vs data class

sealed class vs data class

오늘의 개발 스터디 [Kotlin] sealed class vs data class 완벽 정리: 언제 무엇을 써야 할까?코틀린(Kotlin)으로 개발을 하다 보면 데이터와 상태를 다루는 일에 정말 많은 시간을 쓰게 됩니다. 이때 우리를 아주 편하게 만들어주는 두 가지 강력한 무기가 있죠. 바로 data class와 sealed class입니다. 이름만 보면 둘 다 무언가 데이터를 담거나 클래스를 묶어주는 것 같은데, 정확히 어떤 차이가 있고 어떤 상황에 어떤 것을 사용해야 할까요? 1. 데이터 본연의 역할에 충실한 data classdata class는 말 그대로 '데이터를 보유하는 것(Holding Data)'이 주 목적인 클래스입니다.자바(Java)에서 POJO(Plain Old Java Objec..

안드로이드 코루틴(Coroutines) 개념부터 실무 활용까지 완벽 정리

안드로이드 코루틴(Coroutines) 개념부터 실무 활용까지 완벽 정리

오늘의 개발 스터디 안녕하세요! 오늘은 안드로이드 비동기 프로그래밍의 핵심이자, 이제는 필수 역량이 된 코루틴(Coroutines)에 대해 알아보겠습니다.과거에는 RxJava나 AsyncTask(이젠 추억의 이름이죠..)를 주로 사용했지만, 구글이 코틀린을 공식 언어로 채택한 이후 이제 안드로이드 비동기 처리는 코루틴이 완전히 주도하고 있습니다. 왜 코루틴을 써야 하고, 어떻게 쓰는지 핵심만 쏙쏙 정리해 드릴게요!1. 코루틴(Coroutine)이란 무엇인가요?코루틴은 Co(함께, 협력동작) + Routine(루틴, 일련의 명령 회로)의 합성어입니다. 즉, "서로 협력하는 루틴"이라는 뜻을 가지고 있습니다.일반적인 함수(Routine)는 한 번 실행되면 끝날 때까지 멈추지 않고 쭉 실행(Return)됩니다..