전체 글(385)
-
Navigation 2 vs 3: 코드상 차이점 완벽 정리 (String vs Type-Safe)
최근 안드로이드 개발 커뮤니티에서 "Navigation 3"라는 단어가 종종 들려옵니다.사실 구글의 공식 라이브러리 버전은 Navigation 2.8.0 이상을 의미하지만,기존의 String 기반(Navigation 2) 방식에서 Type-Safe 객체 기반(Navigation 3 스타일)으로 패러다임이 완전히 바뀌었기 때문에 편의상 이렇게 부르고 있습니다.이번 포스팅에서는 기존 방식(Nav 2)과 새로운 방식(Nav 3)이 코드상에서 어떻게 달라졌는지,왜 새로운 방식을 써야 하는지 직관적인 코드 비교를 통해 알아보겠습니다.한눈에 보는 차이점비교 항목 Navigation 2 (기존) Navigation 3 (Type-Safe / 2.8.0+) Route 정의String (URL 형태)Object / D..
2026.02.05 -
SwiftUI WebView 코드, Android에선 뭐에 해당할까
SwiftUI에서 WebView 코드를 처음 보면 보통 이런 생각이 든다. 〃 이거… 안드로이드에선 대체 뭐랑 대응되는 거지? 〃 복잡하게 풀 필요 없다. 역할 기준으로 1:1 매핑해서 보면 이해가 빠르다. 1. WKWebView ↔ android.webkit.WebViewlet webView = WKWebView()val webView = WebView(context)둘 다 실제로 웹을 렌더링하는 엔진 View기능적으로 가장 정확한 대응👉 순수하게는 이 둘이 같은 레벨이다.2. UIViewRepresentable ↔ AndroidView (Compose) / XML 래핑struct WebView: UIViewRepresentable { func makeUIView(context: Contex..
2026.02.04 -
Facade 패턴: ‘그냥 감싸는 것’과 ‘전략적 진입점’의 차이
Facade 패턴은 코드를 예쁘게 정리하는 용도가 아닙니다.“이 기능은 이렇게만 쓰세요”라고 코드로 강제하는 가이드라인에 가깝습니다.1. Facade의 정의: 의도 중심의 진입점복잡한 내부 로직을 감추고, 외부에는 단순화된 단일 진입점만 노출합니다.내부 구조 노출 방지: 하위 모듈이 어떻게 얽혀 있는지 알 필요가 없습니다.순서 위임 방지: 호출자가 실행 순서를 고민하지 않게 만듭니다.의도 중심 API: “A 하고 B 해라”가 아니라 “로그인해라”라는 목적만 전달합니다.2. 핵심 설계 원칙외부는 Facade만 의존: 내부 객체와 직접 소통하지 않습니다.흐름의 책임: 여러 객체의 조합과 실행 순서는 Facade가 관리합니다.판단하지 않는다: 복잡한 비즈니스 로직이나 계산은 하지 않고, 연결(Orchestra..
2026.02.03 -
Kotlin 2.2.20 릴리스: 웹과 멀티플랫폼 개발의 새로운 전환점
Kotlin 2.2.20이 출시되었다!이번 릴리스는 특히 웹 개발과 멀티플랫폼 개발에서 게임체인저가 될 만한 변화들을 담고 있는 듯하여 정리해보았다. 가장 주목할 만한 3가지 변화1. Kotlin/Wasm이 드디어 Beta!WebAssembly가 뭔가요?브라우저에서 네이티브에 가까운 속도로 실행되는 바이너리 코드JavaScript보다 훨씬 빠른 성능복잡한 계산, 게임, 이미지 처리에 최적이제 Kotlin으로 고성능 웹앱 만들기 가능:// 복잡한 물리 엔진도 웹에서 빠르게!class GameEngine { fun updatePhysics(objects: List) { // 무거운 계산도 부드럽게 처리 }}실제 장점:웹 게임 개발시 네이티브급 성능대용량 데이터 처리 웹앱실시간 이미지/..
2025.09.15 -
빌드 시간 최적화 과정 (30분 → 5분)
내가 회사에서 관리하는 프로젝트 중에 용량이 엄청 큰 프로젝트가 있다.이건 generate apk를 뽑으려면 무조건 30분의 시간이 소요되어 어려움을 많이 겪었다.그래서 build.properties 파일을 이용하여 빌드 시간을 최적화해보았다.원래 상황 (30분)Gradle이 매번 이랬음:"안녕하세요, 처음 뵙겠습니다!" → JVM 새로 시작 (10초)→ 모든 파일 하나씩 차례로 빌드 (25분) → 다 끝나면 메모리에서 삭제→ 다음 빌드 때 또 "처음 뵙겠습니다!" 반복...1단계: 메모리 증설 시도기존: org.gradle.jvmargs = -Xms192m -Xmx4096m -XX:MaxPermSize=256m수정: org.gradle.jvmargs = -Xms192m -Xmx8192m -XX:Max..
2025.09.05 -
Flutter Hot Reload 완벽 정리
Hot Reload란?앱을 끄지 않고 코드 변경사항을 즉시 반영하는 기능기존 개발: 코드 수정 → 앱 종료 → 컴파일 → 실행 → 화면 이동 (30초~1분)Hot Reload: 코드 수정 → 저장 → 즉시 반영! (1초)Flutter Hot Reload 특징핵심 기능1초 이내 변경사항 반영상태 보존: 입력 데이터, 스크롤 위치, 변수값 유지앱 재시작 없음: 로그인 상태 그대로Ctrl+S만 누르면 끝!사용 예시*// 1. 원래 코드*Text('안녕하세요', style: TextStyle(fontSize: 20, color: Colors.blue))*// 2. 수정 (크기, 색깔 변경)* Text('안녕하세요', style: TextStyle(fontSize: 30, color: Colors.red))*/..
2025.09.03