qwer (21)


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..

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)됩니다..

freezed와 .g.dart, .freezed.dart 파일의 정체 완벽 정리

freezed와 .g.dart, .freezed.dart 파일의 정체 완벽 정리

오늘 개발 스터디 Flutter/Dart로 프로젝트를 진행하다 보면 *.g.dart나 *.freezed.dart 같은 생소한 파일들을 자주 마주하게 됩니다. 특히 상태 관리를 위해 freezed 라이브러리를 도입하면 필수적으로 보게 되는 파일들이죠.이 파일들은 왜 생성되는 것이며, freezed는 우리에게 어떤 편리함을 줄까요? 이번 글에서는 Dart의 코드 생성(Code Generation) 메커니즘과 freezed 라이브러리의 핵심 지식을 깊이 있게 살펴보겠습니다.1. 왜 freezed가 필요했을까? (Dart의 한계와 보일러플레이트)Java나 Kotlin, Swift 같은 모던 언어들과 달리, Dart(특히 초기 버전)는 데이터 모델 객체를 만들 때 개발자가 직접 작성해야 하는 반복적인 코드(보일러..