·💤 RxJava
0. Observable, 그래서 어떻게 쓰이는데? Observable은 다양한 종류의 이벤트나 데이터를 비동기적으로 방출할 수 있는 객체이다. Observable은 데이터 스트림을 나타내며, 이 Observable이 방출하는 이벤트나 데이터는 다양할 수 있는데 어떤 경우에 쓰이는지 살펴보자. 버튼 클릭 이벤트: 사용자가 화면의 버튼을 클릭할 때 마다 Observable은 클릭 이벤트를 방출할 수 있다. 네트워크 요청 결과: 네트워크 요청을 통해 데이터를 받아올 때, Observable은 이 데이터를 방출할 수 있다. 비동기적인 HTTP 요청과 같은 작업에 유용하다. 타이머 또는 주기적인 작업: 일정 시간 간격으로 이벤트를 방출하는 Observable을 생성할 수 있다. 예를 들어, 1초마다 현재 시간을..
·💤 RxJava
Observable 특집으로 Observable의 생성과 종류까지 다뤄보고자 한다. 그 전에 Reactive Programming에 대해 정리한 글이 있는데 옵저버 패턴부터 다시 짚어보고자 한다. 0. Observable 관찰할 수 있는 데이터 스트림 관찰할 수 있는 데이터 스트림을 Rx에서는 Observable 이라고 부른다. 이 데이터 스트림을 관찰하는 Observer들은 Observable이 발행하는 데이터 스트림을 구독하여 데이터를 구독하고 처리한다. 이는 옵저버 패턴을 따른 것으로 옵저버 패턴은 관찰할 수 있는 대상의 상태가 변하면 이를 관찰하는 대상에게 알려주는 구조이다. 쉬운 예시로, 식당 예약을 관리하는 애플리케이션이 있다고 하자. 예약하고 싶었던 식당이 이미 인원이 다 차버려 예약할 수 ..
·🐸 Android
0. RecyclerView에서 Data Set을 하는 방법들 RecyclerView의 data set의 변경방식에 관해서는 여러 메서드들과 제공하는 클래스가 있다. DiffUtil이 만능인지 그렇다면 정확히 어떤 면에서 만능인지, 그렇지 않다면 그 외의 것들 중에서는 어떤 것을 써야 효율적이고 적재적소에 쓰는 것이 맞는지 생각해보는 글이 되겠다. 1. DiffUtil은 Infinite Scroll에 맞는 방식인가? first items convert to second items 스크롤을 하면서 다음 데이터를 계속해서 추가해야하는 무한 스크롤에서 DiffUtil을 사용한다면 기존에 호출한 20개의 아이템에 다시 20개를 추가한 40개의 새 아이템 리스트를 DiffUtil 함수가 포함된 데이터 업데이트 메..
·💤 RxJava
subscribe 이후 onError로 빠지는 에러를 핸들링하는 중 다시 API 호출을 할 경우가 생겨 onError 안에서 다시 구독을 한 경우가 생겼다. 이 경우 괜찮은 처리일까? stackoverflow 의 답변을 보고 다시 한 번 reactive programming 그리고 functional programming 의 원리 원칙을 기억하기 위해 남기는 글 it is not good to call a subscribe inside a subscribe. Why? Well because this is not how functional programming is supposed to work. You're not thinking functionally you're thinking procedurally..
·🐸 Android
Android 개발에서 어려운 것 중 하나가 Lifecycle 관리이다. Activity와 그 위에 올려져있는 Fragment 인스턴스에도 Activity와는 다른 자체 생명 주기가 있다. 또한 Fragment Lifecycle과 다른 Fragment View Lifecycle이라는 독립적인 뷰 라이프사이클도 존재한다. Fragment는 왜 이런 view Lifecycle 를 따로 가지는 것일까? ૮꒰ ྀི . . ꒱ა .. Fragment의 생명주기와 Fragment View Lifecycle에서 LiveData는 어떻게 다뤄야하는지까지 이야기해본다. 0. 함께 했을 때의 생명주기 흐름 Activity위에 Fragment가 Attach 되었을 때의 생명주기 흐름이다. 여러개의 Fragment를 하나의 ..
·🐸 Android
0. IntroRx에서 제공하는 스레드(AndroidSchedulers.MainThread와 같은 편한 그 무언가...)를 자연스럽고 편하게 사용하고 있을 찰나, 익숙함에 속지 않지 위해 정리하고자 하는 글. 운영체제에서 말하는 process와 thread부터 시작한다. 1. ProcessProcess: An instance of a program in execution 프로세스(Process): 실행중인 프로그램 운영체제 위에서 연속적으로 실행되고 있는 프로그램을 의미한다. 프로그램은 실행할 수 있는 물리적인 파일을 말하는 것이고, 우리가 이 프로그램을 실행시키면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 말은 즉 메모리에 적재된다는 뜻이다. 인텔리제이도 실행하고 카톡도 실행하고 구글 브라우저..
·💎 Kotlin
자바와 비교하면 코틀린의 타입 시스템은 코드의 가독성을 향상시키는 데 도움이 되는 특징을 가지고 있다. 그런 특징 중 널이 될 수 있는 타입(nullable type)과 읽기 전용 컬렉션이 있다. 널이 될 수 있는 타입과 널을 처리하는 구문 문법 코틀린을 비롯한 최신 언어에서 null에 대한 접근 방법은 이 문제를 실행 시점에서 컴파일 시점으로 옮김 널 가능성(nullability)은 NullPointerException 오류(NPE)를 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특징 널이 될 수 있는지 여부를 타입 시스템에 추가함으로써 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지해서 실행 시점에 발생할 수 있는 예외 가능성을 줄여줌 널이 될 수 있는 타입 코틀린 타입 시스템은 널이 될 수 있는..
·🐸 Android
안드로이드에서 내장 데이터베이스에 저장하는 방법을 알아본다. 대표적인 저장 방법- File(text..)- SharedPreferences(key-value)- RoomDB(관계형DB) key-value 쌍으로 비교적 간단한 정보를 저장할 수 있는 방법인 SharedPreferences와 Room은 기기 내장 DB에 데이터베이스를 저장하기 위해 사용하는 라이브러리이다.  간단한 정보를 저장할 경우의 기준이란 무엇일까? 나는 저장할 데이터가 비즈니스의 core data 인지 아닌지 그리고 저장할 값이 단순히 key-value 값으로 저장하고 사용할 수 있는지에 따라 보통 구분 짓는다. 예를 들어 팝업창을 띄우는 경우 다시 보지 않기라는 값을 저장해야하는 상황이라면 이 값은 비즈니스의 core data도 아..
·🐸 Android
One goal of LinksUsers following links on devices have one goal in mind: to get to the content they want to see.한 번은 프론트엔드 동료 개발자분이 웹은 웹 주소에 따라 다른 페이지를 보여주는데 앱도 페이지마다 식별할 수 있는 주소가 있는지 여쭤보셨다. 언제든 해당 url만 있으면 접근할 수 있는 웹과 달리 앱은 activity가 고유한 주소값을 가지고 있지 않기도 하고 직접적으로는 특정 페이지에 도달할 수 없다. 독립적이고 폐쇄적인 성격을 가진 앱의 특성때문이다. http 기반으로 문서를 주고받는 웹의 배경과도 다르기에 모바일에서도 딥링킹할 수 있는 방법이 필요해졌다.그래서 Android, iOS에서는 딥링크를 구현..
·🐸 Android
firebase app distribution + fastlane + slack = 🚀fastlane은 모바일 플랫폼에서의 CD(Continuous Deploy)의 대표적인 툴로 fastlane을 이용하여 테스트앱 자동 배포화부터 (feat.App Distribution)부터 App Store에 등록하는 것까지 다뤄본다.기존 테스트앱 배포방식PlayStore 내부 테스트 트랙기존의 테스트앱 배포방식은 직접 안드로이드 스튜디오에서 기기를 연결하여 빌드한 수동 중의 수동 배포 방식이었다.(..🐒) 그 이후 QA까지 완료되었고, 우리 서비스를 쓰는 일부 내부 클라이언트들에게만 실제 사용을 위한 테스트 배포를 위해서 PlayStore Beta로 내부 테스터에게만 배포했었다. 이 과정에서도 수동적으로 버전 코..
안드로보이
안드로보이의 개발일지