전체 글
-
[우아콘 2024] XML에서 Compose로의 전환 (Feat. 안드로이드)IT Study/Android 2024. 10. 30. 14:27
이번 우아콘 2024에서 "XML을 Compose로 전환하기" 세션에 참석했습니다.기존의 XML 기반 UI를 Jetpack Compose로 전환하는 과정에서의 경험을 들은 이후, 사견에 대해 공유하고자 합니다 :) 1. 전환 계기우아한형제의 안드로이드 팀에서는 공통 디자인 시스템 구축을 위해 Compose를 도입하기 시작했습니다. 단순한 공통 시스템을 위해 Compose를 도입하는 것이 적절한지에 대한 의구심이 있었으나, 선언적 UI의 이점과 코틀린만으로 개발이 가능하다는 점이 매력적으로 작용하여 도입을 결정지은 듯 합니다. 2. Compose의 장점아래 내용 중 예상하건데, 점진적 전환이 가능했기에 서비스에 도입할 수 있지 않았을까요?선언형 UI로 인한 성능 개선 : 화면의 변경되는 부분만을 다시 그..
-
[iOS] 디바이스에 데이터 저장하기 1탄 (Feat. UserDefaults)IT Study/iOS 2024. 10. 19. 22:15
안녕하세요, Three입니다.이번 글에서는 iOS 앱에서 데이터를 저장하는 다양한 방식과 함께, UserDefaults를 사용해 사용자의 테마 설정을 저장하고 관리하는 방법에 대해 소개하고자 합니다.그 전에 iOS의 데이터 저장 방식을 확인하고, 시작하도록 하겠습니다 😀 1. iOS 데이터 저장 방식앱 데이터와 사용자 데이터를 기기에 저장하는 방법은 여러 가지가 있습니다. 아래의 표로 간단히 특징들에 대해 알아보시죠.방법사용장점단점UserDefaults앱 설정 (테마, 음량, 언어)빠름, 간단보안 X, 오직 소규모 데이터File System이미지, 문서, 음악, 비디오파일 구조 관리 가능파일 관리 필요Core Data복잡한(관계형) 데이터 모델관계형 데이터 관리 용이학습 시간 소요Keychain비번,..
-
[iOS] SwiftUI의 상태 관리 (Feat. @State, @StateObject, @ObservedObject, @Published)IT Study/iOS 2024. 9. 22. 20:16
SwiftUI에서 상태 관리에 대해 알아보도록 하죠. 먼저 @State, @StateObject, @ObservedObject, @Published는 상태 변화를 관리하고 SwiftUI 뷰와의 데이터 바인딩을 위한 도구입니다. 각 역할을 이해하고 어떤 상황에서 어떤 속성을 사용해야 하는지 정확히 파악해보도록 하겠습니다.현재 제가 하고 있는 개인 프로젝트와 관련된 예시와 함께 보도록 하겠습니다. 1. @State개념@State 뷰 내부에서만 사용하는 상태를 저장, 관리하는 데 사용됩니다. 주로 간단한 데이터(숫자, 문자열, Bool 등)를 다룰 때 사용됩니다. @State로 선언된 변수는 뷰가 다시 렌더링될 때에도 상태를 유지하며, 상태가 변경되면 자동으로 뷰가 재렌더링됩니다. 예시struct MainV..
-
[면접/후기] Apple Developer Academy (Feat. 합격)Daily 2024. 9. 17. 15:38
지난 7월 말, Apple Developer Academy 면접 후기를 작성했다. 그 면접은 내 부족함을 깨닫는 계기가 되었고, 동시에 새로운 동기를 부여해주었다. 면접 이후, 나는 안드로이드에만 머무르지 않고 모바일 분야에서 두각을 나타내기 위해 회사에 iOS 파트도 함께 맡고 싶다고 요청했다. 그렇게 회사에서 iOS를 함께 맡으며 내 한계를 뛰어넘는 어려운 경험을 쌓는 중이었다. 그런 와중에 아래와 같은 응답을 받게 되었다. 앞으로 내가 어떤 방향을 선택할지 나 자신도 기대된다. (섣불리 결정을 내리지 않으려고 한다)김한슬, 꾸준함과 한계를 뛰어넘는 마음가짐으로 계속 성장해 나가길.
-
[면접/회고] Apple Developer AcademyDaily 2024. 7. 29. 21:55
출처 : Youtube, 호댕댕 나는 무엇을 위해 애플 아카데미에 들어가고 싶었을까. 다양한 경험을 가진 사람들을 만나, 서로의 경험을 공유할 수 있는 좋은 기회라고 생각했다. 다른 곳에서도 그런 다른 사람들과 경험을 공유할 수 있지 않은가, 나는 이곳만의 차별점은 무엇이라고 생각했던 걸까. 단순하게도 나는 완재가 포항에서 몰두하는 모습이 부러웠다. 작년 3개의 대회를 함께 준비하며 너무 힘들어서 울기도 하고, 독기를 품고 밤새 일을 하기도 했던 그 경험을 다시금 느끼고 싶었다. 애정하는 나의 것을 잘 만들기 위해, 한 사람이라도 진정으로 사용할 수 있도록 만들기 위해 진심을 다했던 날들이 그리웠다. 여전히 잘 해내고 있는 이 사람이 너무 빛나고 멋져 보였다. 회사 일에도 최선을 다했다. 빨리 익숙해지기..
-
[Android] Material 3 BottomNavigationView Indicator(인디케이터) 색상 설정하기IT Study/Android 2024. 7. 28. 12:32
안녕하세요. Three입니다. 최근 개인 앱을 기획하기 시작해, Material 3라고 하는 구글 안드로이드 디자인 시스템을 기준으로 디자인을 마친 상태입니다. 처음 이 개인 프로젝트를 시작하며 아래와 같은 목표를 세웠습니다.1. 앱 출시를 해보자.2. Jetpack Compose라는 새로운 선언형 UI 툴킷을 사용해보자. 그러나 Jetpack Compose를 학습하고 익숙해지는 데에 시간이 꽤나 소요되고 있어, 먼저 저에게 익숙한 xml + 바인딩 작업으로 시작하게 되었습니다. (앱 출시 이후, 꾸준히 발전시켜 나가며 Jetpack Compose로 전환해볼 예정입니다.) 1. 문제 상황먼저 메인 화면에 존재하는 네비게이션 바 작업을 하던 도중 아래와 같은 문제가 발생했습니다. 네비게이션 바를 선택할..
-
[Android/Kotlin] 코틀린과 코루틴IT Study/Android 2024. 5. 19. 15:08
코루틴의 개념을 정확하게 이해하고 활용하기 위해, 이를 주제로 글을 작성해보려고 합니다 :) 🍇 목차1. Coroutine2. Thread와 Coroutine3. 그래서 Coroutine이 뭔데?4. 코루틴의 구성요소4-1. Coroutine Context4-2. Coroutine Builder4-2-1. launch (main thread unblocking)4-2-2. runBlocking (main thread blocking)4-2-3. async (main thread unblocking)4-3. Coroutine Scope5. 주요 함수 1. Coroutine우리는 작성된 순서대로 실행되는, 동기적인 실행 방식을 채택해왔다.그러나 여러 루틴을 동시 실행하기 위해 비동기 처리를 지원하는 코루틴..
-
[개인 프로젝트] 내가 사용하기 위한 앱 만들기 (Feat. 집중을 위한 앱)Daily/Project 2024. 5. 12. 16:45
나에게 필요한, 내가 사용하기 위한 앱을 만들어보자.나는 다시 개인 프로젝트를 시작하려고 한다. 이번 프로젝트는 나 자신을 위한 앱을 만드는 것이 목표이다. 지금 나에게 필요한 것은 무엇일까?나는 약 3개월 전 안드로이드 개발자로 일을 시작했다. 그러나 나는 일반적인 안드로이드 앱을 개발하는 것이 아니라, 안드로이드 에이전트(라이브러리, SDK)를 개발하는 일을 하게 되었다.새로운 분야에서의 시작은 어려움이 많았다. 그러나 나는 빠르고 확실하게 적응하기 위해 노력을 했고, 난 지난 3개월 동안 회사 업무(코드)에 집중하며 열심히 일했다.이런 과정에서 난 많은 것을 배우고 성장했다. 하지만, 나는 계속해서 공부하고 성장하고자 하는 욕망을 느꼈다. 그러나 지난 3개월 동안 나는 나 자신을 위한 여러 가..