Flow/LiveData….What Are They? Best Use Case. (Lets Build a Login System)

강성우 | 27 May 2021

이 글은 Inuwa Ibrahim의 Flow/LiveData….What Are They? Best Use Case. (Lets Build a Login System)을 번역 하였다.

read more

Android Runtime — How Dalvik and ART work?

강성우 | 29 April 2021

이 글은 Paulina Sadowska의 Android Runtime — How Dalvik and ART work?을 번역 하였다.

read more

Common Design Patterns and App Architectures for Android

강성우 | 28 April 2021

이 글은 Matt Luedke, Aaqib Hussain의 Common Design Patterns and App Architectures for Android을 번역 하였다.

read more

How to parse JSON in Android using Kotlin

강성우 | 26 April 2021

이 글은 John Codeos의 How to parse JSON in Android using Kotlin을 번역 하였다.

read more

FireBase Realtime Database의 퍼포먼스 측정 및 모니터링

강성우 | 22 April 2021

이 글은 Sam Stern의 Measuring Realtime Database performance with Firebase Performance Monitoring을 번역 하였다.

read more

Firebase Realtime Database Basic

강성우 | 16 February 2021

Google에서 제공하는 NoSQL 클라우드 데이터베이스, Firebase의 Realtime Database를 사용 하는 예제를 정리 하였음.

read more

Modelling UI State on Android

강성우 | 11 February 2021

이 글은 Stojan Anastasov의 Migrate from LiveData to StateFlow and SharedFlow을 번역 하였다.

read more

LiveData - under the hood

강성우 | 31 January 2021

이 글은 Alex Zhukovich의 LiveData under the hood을 번역 하였다.

read more

Sonarqube setup guide

강성우 | 20 January 2021

Sonarqube setup guide

read more

Ultimate Guide to Android Custom View

강성우 | 23 December 2020

Ultimate Guide to Android Custom View

read more

View Binding Android - 3 Major Benefits

강성우 | 16 November 2020

View Binding Android - 3 Major Benefits

read more

Goobye Gson, Hello Moshi

강성우 | 09 November 2020

Goobye Gson, Hello Moshi

read more

넷플릭스의 코틀린 멀티 플랫폼

강성우 | 06 November 2020

넷플릭스의 안드로이드와 iOS앱 - 코틀린 멀티플랫폼으로 만들어지다

read more

Lottie for Android

강성우 | 19 October 2020

Lottie for Android - Basic

read more

Firebase - Crashlytics의 안드로이드 앱 설정

강성우 | 18 October 2020

1. Firebase-Crashlytics에 대해 gradle 추가

read more

SharedPreference에서 DataStore Preference으로 마이그래이션

강성우 | 16 October 2020

Bevan Steele의 ‘DataStore Preferences and migrating from SharedPreferences’을 번역해보았다.

read more

안드로이드 퍼포먼스에 대한 팩트 체크

강성우 | 15 October 2020

이 글은 Calin Juravle의 Busting Android performance myths를 번역 하였다.

read more

Dagger hilt cheat sheet

강성우 | 28 September 2020

Manuel Vivo의 글 ‘Hilt and Dagger annotations cheat sheet을 번역하고 정리 하였다.

read more

Android Clean architecture

강성우 | 17 September 2020

그동안 안드로이드 아키텍쳐에 클린 아키텍쳐를 적용하면서 정리했어야 하는 내용들을 정리 하였다.

read more

Memory leak of ViewBinding

강성우 | 30 August 2020

최근 구독중인 android weekly에서 데이터 바인딩을 이용해 뷰 바인딩을 사용시 Fragment에서 바인딩 된 뷰 바인딩 객체가 Framgent가 더이상 사용되지 않음에도 유지된 상태로 남아 있어 메모리 누수가 발생할 수 있다는 글을 읽어 보았다. 해당 글을 참고 하여 실제로 메모리 누수가 발생하는지, 그리고 해결방법은 어떤지 하나하나 정리해보려고 한다.

read more

LeakCanary - Documents

강성우 | 28 August 2020

LeakCanary

read more

Glide v4 - Documents

강성우 | 24 August 2020

Glide에 대한 숙련이 필요하다고 느낀 요즘, Glide v4 Documentation를 참고 하여 내용을 번역하면서 필요한 내용들 위주로 정리 하였다.

read more

AndroidX - CoodinatorLayout with Scroll

강성우 | 10 August 2020

안드로이드에서 많이 볼 수 있는 UI 디자인의 패턴 중 스크롤의 위치 에 따라 상단 ToolBar와 다른 뷰들에 대해 처리하는 방법을 정리 하였다. 기존에는 ScrollView에 listener를 추가 하여 콜백으로 전달 받는 스크롤 위치에 대해서 후처리를 하여 다른 뷰를 갱신하였지만 android x에서 제공 하는 방법은 더 접근하기 쉬운 방법으로 스크롤이벤트에 따른 뷰의 변화를 처리 해 줄 수있다.

read more

Koin - Activity Scope

강성우 | 30 July 2020

Koin에서 Activity scope를 적용한 경험을 정리하였다. 이 내용을 잘 응용하면 custom scope를 적용하는 대 에도 무리가 없을것 으로 생각 된다.

read more

Migration to Dagger-Hilt

강성우 | 12 July 2020

dagger에서 hilt를 이용하여 안드로이드에서 더 효율높은 DI를 사용 하는 방법들에 대해 정리 하였다.

read more

AndroidX - ActivityResultContract

강성우 | 24 June 2020

안드로이드 컴포넌트 중 하나인 Activity간의 데이터를 처리 하는 방법으로 startActivityForResult()과 onActivityResult() 콜백이 있다. 이 방식의 Activity result처리 방법을 개선한 ActivityResultContract에 대해서 간단하게 알아보려 한다.

read more

AndroidX - Navigation

강성우 | 24 June 2020

Navigation은 안드로이드 컴포넌트가 어떤것으로 구현되었는지 여부에 상관없이 Fragment, Activity간 안정적인 이동을 구현하기 위한 API를 제공 한다. 필요한 의존 항목의 선언은 Navigation을 사용할 모듈의 build.gradle에 아래 항목을 dependencies에 추가 하면된다.

read more

Jetpack - ListAdapter

강성우 | 22 June 2020

ListAdapter는 support library에 추가된 라이브러리로서 기존 RecyclerView의 Adapter에 이전 데이터셋 과 새로운 데이터셋의 비교를 담당하는 DiffUtil과 함께 사용 된다.

read more

Dagger with Kotlin generic

강성우 | 19 June 2020

이 문서에서는 코틀린과 Dagger를 같이 사용하면서 발생했던 generic 관련 이슈를 정리 해 보았다.

read more

Redux basic for Android developers

강성우 | 16 June 2020

Redux 기반의 안드로이드 아키텍쳐를 이해하기 위해서 Redux 에 대한 기초를 안드로이드 개발자 입장에서 정리해 보았다.

read more

dagger.android basic

강성우 | 14 June 2020

이 문서에서는 기존 Dagger 를 사용 했을때 발생하는 문제들에 대해서 dagger.android 의 API 를 사용 하여 단순화 시켜보는 내용들에 대해서 정리 하였다.

read more

Koin basic

강성우 | 13 June 2020

Koin 은 Service locator pattern을 기반으로 만들어진 도구 이다. 이는 Dependency injection tool 으로 사용 할 수 있다. 이 패턴은 장,단점을 명확하게 갖고 있다. Koin 은 순수 코틀린으로만 작성 되어 있고 다른 라이브러리나 APT 등에 대한 디펜던시가 없어 가볍게 사용하기에 좋다.

read more

late initialize of Kotlin

강성우 | 12 June 2020

null 을 허용하지 않는 변수에서 초기화의 시점을 좀 더 늦게 할 수 있는 방법들에 대해서 디컴파일 코드와 함께 정리해 보았다.

read more

Koin 에서 ViewModel 주입 방법

강성우 | 11 June 2020

Koin 에서 모듈의 인스턴스들은 single 이나 factory 등 으로 각각의 상황에 맞추어서 인스턴스를 사용하면 된다. 하지만 ViewModel 의 경우 안드로이드 컴포넌트 라이프 사이클에 맞추어 동작 하기 떄문에 Activity, Fragment 에 대한 ViewModelProvider 를 이용하여 ViewModel 인스턴스를 사용 해야 한다.

read more

ViewModel 상태 관리

강성우 | 10 June 2020

ViewModel 에서는 ViewModel 을 가져올때 ViewModelProvider를 통해 LifeCycle 을 지정 하여 Activity 나 Fragment 의 생명주기와 동기화된 활동을 보여준다. 아래 그 생명주기를 참조하면 알 수 있다.

read more

코틀린의 컬렉션

강성우 | 10 June 2020

코틀린의 컬렉션에서 사용 되는 함수들 위주로 정리 하였다. 이 함수들은 다른 언어에서도 사용 되는 함수들과 유사 하며 거기에 홤수형 프로그래밍의 장점들이 잘 녹아있다고 생각 된다.

read more

코틀린 표준 라이브러리 함수

강성우 | 10 June 2020

코틀린의 표준화 된 함수들중 일부를 정리 하였다. 몰론 개발자에 따라서 이 함수를 꼭 사용할 필요는 없다고 생각 한다. 왜냐하면 코틀린에서는 다양한 확장함수 를 직접 만들 수 있고 개발중인 도메인, 피쳐 등에 따라 성격과 네이밍이 바뀔 수 있으므로 그때마다 확장함수를 만들어서 사용해도 무방하다고 생각 한다. (몰론 기술적인 측면에서 표준 라이브러리 함수들과 성능상의 차이 등이 없어야 할 것이다)

read more

파이썬 기초 간단 정리

강성우 | 25 February 2017

이 문서에서는 지금 까지 파이썬을 공부 하면서 필요하거나 중요한 내용들 위주로 정리 하였다. 어느 언어라던지 반복적인 학습을 통해서 문법을 익히고 그 다음에 간단한 프로젝트를 하면서 문법에 익숙해지는 것이 좋다고 생각 한다. 하지만 파이썬과 같은 동적 언어가 아닌 자바같은 정적 언어에 익숙해져있는 상태 라면 아무래도 파이썬을 익히기에 어렵게 느껴질 수는 있다. 대부분 이 문제는 문법에 국한되어 있는 경우가 많으며 이는 반복적인...

read more

JVM Dalvik, ART and Runtime Data Area

강성우 | 31 October 2016

JVM(Java Virtual Machine)은 아키텍쳐와 플랫폼에 상관없이 실행할 수 있는 환경을 제공하는 언어라고 할 수 있다. 안드로이드에서는 JAVA를 사용 하지만 JVM은 라이센스 문제로 인하여 Dalvik이라는 VM을 만들어서 사용 했었다. Dalvik VM은 JVM이기는 하지만 JVM의 명세를 따르지는 않는다. Stack머신인 다른 JVM과는 달리 Dalvik VM은 레지스터 머신이며, 독자적인 툴을 이요하여 자바 바이트 코드를 Dalvik VM용 레지스터 기반 명령어 코드로 변환 한다.

read more