전체 글
-
iOS 개발자가 없는 상황에서 Android 개발자가 iOS 앱을 유지보수한 경험iOS 2025. 3. 31. 22:54
1. 배경2024년 말, 회사에서 갑작스럽게 iOS 개발자가 퇴사하는 일이 발생했다. 기존 iOS 앱의 유지보수는 물론, 신규 기능 추가까지 필요한 상황이었지만, 팀 내에 iOS 경험이 있는 개발자가 없었다. 결국, Android 개발자인 내가 긴급 투입되어 iOS 앱을 유지보수하게 되었다. 처음에는 막막했지만, 다양한 시행착오를 겪으며 iOS 개발을 경험할 수 있었다. 2. iOS 개발 환경 적응하기Xcode와 Swift 익히기Android 개발자는 주로 Android Studio와 Kotlin을 사용하지만, iOS는 Xcode와 Swift를 기본으로 한다. 처음에는 UI 배치 방식부터 프로젝트 구조까지 모든 것이 낯설었다.Xcode: IDE의 단축키부터 빌드 및 디버깅 방식까지 적응하는 데 시간이 필..
-
Kotlin Flow에서의 Debounce와 Throttle 기법안드로이드 2025. 3. 25. 22:25
Kotlin에서는 Flow를 활용하여 비동기적으로 이벤트를 처리할 수 있으며, 이벤트가 지나치게 자주 발생하는 경우 이를 제어하는 다양한 기법이 필요합니다. Debounce와 Throttle은 이러한 상황에서 유용하게 사용되는 기법으로, 불필요한 작업을 줄이고 성능을 최적화하는 데 큰 도움이 됩니다. 본 글에서는 이 두 기법의 개념과 이를 Kotlin Flow에서 어떻게 적용할 수 있는지에 대해 살펴보겠습니다. 1. Debounce와 Throttle 기법이란?DebounceDebounce는 연속된 이벤트 중 마지막 이벤트만 실행되도록 처리하는 기법입니다.일정 시간 동안 추가적인 이벤트가 발생하지 않으면, 그때서야 마지막 이벤트를 처리하게 됩니다.즉, 빠르게 발생하는 여러 이벤트 중에서 마지막 이벤트를 처..
-
[Kotlin] invoke 함수Kotlin 2025. 1. 15. 22:15
Kotlin의 invoke()는 무엇인가?코틀린(Kotlin)에는 이름 없이 호출할 수 있는 특별한 함수, 정확히는 연산자인 invoke()가 존재합니다. 이 함수는 객체를 마치 함수처럼 사용할 수 있도록 만들어 주는 강력한 기능을 제공합니다. 아래의 예제를 통해 invoke()의 동작을 살펴보겠습니다.class Example { operator fun invoke(str: String): String { return str.toUpperCase() }}위 코드는 Example 클래스에 invoke() 연산자를 정의한 예제입니다. 이 invoke()는 일반 메서드처럼 호출할 수 있습니다:val example = Example()println(example.invoke("hello"..
-
Maverick - MVI Framework 톺아보기안드로이드 2025. 1. 14. 21:59
Mavericks - MVI Framework개별적인 상태 속성을 노출하는 대신, 하나의 불변 데이터 클래스를 사용해 뷰모델을 업데이트하고 UI를 렌더링 합니다.Airbnb 오픈소스로 만든 MVI 프레임워크로 상태관리를 쉽게 처리하기 위한 솔루션을 제공합니다.Mavericks 1.0은 RxJava 기반으로 되어 있었는데, 2.0에서 Coroutines으로 새롭게 작성되었습니다.Mavericks 2.0에서 추가된 기능1. Coroutines 사용RxJava에서 Coroutines로 전환되면서 더 간결하고 직관적인 비동기 코드 작성 가능.2. execute 개선비동기 작업의 상태를 쉽게 관리할 수 있는 기능3. Flow 지원Mavericks StateFlow와 함께 작동하며 상태 기반 데이터 스트림을 쉽게 ..
-
[패스트캠퍼스 온라인 강의 후기] 15개 프로젝트로 실무까지 끝내는 Dart & Flutter 앱 개발강의 후기 2024. 12. 2. 21:13
FastCampus의 "15개 프로젝트로 실무까지 끝내는 Dart & Flutter 앱 개발 완강" 온라인 강의를 수강하고 나의 경험을 공유하려 합니다. 먼저 이 강의를 선택하게 된 이유는 Flutter를 공부하고자 강의를 찾어보던중, Flutter 개발자인 지인의 추천을 받아 해당 강의를 결제하게 되었습니다. 강의 커리큘럼 중 각 Native와 통신할 수 있는 부분에 대해서 하나의 챕터를 통해 깊이 배울 수 있어 보여 가장 눈에 띄었습니다.수강 중 현재까지 느낀 점아직까지 완강은 못했지만 강의가 없이 인터넷 검색만으로는 얻기 힘든 내용을 전문적인 커리큘럼을 통해 순차적으로 배울 수 있어 믿고 따라갈 수 있었고, 안심이 되었습니다.또한 디지털 필기 기능과 여러 강의 자료(개발자 필수 영단어 Notion,..
-
[패스트캠퍼스 온라인 강의 후기] 35개 프로젝트로 배우는 Android 앱 개발 feat. Jetpack Compose 초격차 패키지 Online 강의 후기강의 후기 2023. 12. 5. 21:10
FastCampus의 "35개 프로젝트로 배우는 Android 앱 개발 feat. Jetpack Compose" 온라인 강의를 수강하고 나의 경험을 공유하려 합니다. 먼저 이 강의를 선택하게 된 이유는 Compose를 공부하고자 강의를 찾어보던중, 내가 좋아하던 강사님인 달리나음님이 참여하고 계셔서 강의에 더욱 관심이 갔습니다. 이전에 The RED : 효과적인 비동기처리를 위한 Kotlin Coroutines & Flow 마스터 by 김용욱이라는 강의를 통해서 많은 도움을 받았는데, 이번에도 많은 도움을 받을 수 있을거 같아 결국 강의를 결제해버렸습니다 아직 완강은 못했지만, Compose에 대해 자세한 설명과 실무에서 쓰는 기술을 알려주셔서 내 실력 향상에 큰 도움이 되었습니다. 또한 여러 강의 자료..
-
BigO 표기법과 시간복잡도알고리즘 2023. 2. 12. 20:36
알고리즘의 성능을 판단하는 지표로는 시간복잡도(Time Complexity)와 공간 복잡도(Space Complexity)가 있다. 시간복잡도는 알고리즘 수행시간을 의미하는 지표이며, 공간 복잡도는 알고리즘의 사용량을 의미한다. 알고리즘 성능 표기방법🤚🏻 Big-O 표기법 알고리즘의 성능을 수학적으로 표기해주는 표기법 알고리즘 최악의 실행 시간과 사용 메모리를 표기 가장 많이/일반적으로 사용함 아무리 최악의 상황이라도, 이정도의 성능은 보장한다는 의미 𝝮(오메가) 표기법 알고리즘 최상의 실행 시간을 표기 𝜭(세타) 표기법 알고리즘 평균 실행 시간을 표기 Big-O 입력값 표기 방법 만약 시간 복잡도 함수가 2𝑛² + 3n 이라면 가장 높은 차수는 2𝑛² 상수는 실제 큰 영향이 없음 결국 Big-O 표기법..
-
[Android] WebView Bridge Thread 에러안드로이드 2022. 7. 26. 23:49
Only the original thread that created a view hierarchy can touch its views. A WebView method was called on thread 'javabridge'. All WebView methods must be called on the same thread. 위의 두 에러는 JavaScript에서 Android 메서드를 호출하고자 할 때 사용하는 Bridge에서 Android UI 작업 시 발생하는 에러입니다. 아래와 같이 JavaScript Bridge는 비 UI 스레드입니다. 해결방법🤔 WebView의 post() 메서드를 활용해 UI작업을 메인 스레드에서 작업할 수 있도록 해결했습니다. webView.post(new Runnable..