일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 개발자 면접
- base64 변환
- notifychanged
- DataBinding
- url 추적
- 기존 앱
- Android
- pod install
- Side Menu
- List
- 상단 탭바
- url 관찰
- swift
- UIViewControllerTransitioningDelegate
- GeometryReader
- ios
- Tuist
- 스크롤 탭
- oberve url
- UIPresentationController
- development language
- transformation.map
- swift #swift keychain #keychain 사용법
- SwiftUI
- ViewBuilder
- scrolling tab
- Swift Package Manager
- convert base64
- DevelopmentRegion
- detect url
- Today
- Total
목록모던 안드로이드 (15)
버그 잡이
1. LiveData란? An observable data holder class that is lifecycle-aware - 옵저버 패턴이 적용된 (=특정 대상을 관찰하고 변화를 인지하는) -> 최신화 - 생명 주기를 인식하는 (=메모리를 효율적으로 쓰는) 옵저버 패턴이 적용되면 아래 그림 처럼 대상(subject)을 관찰하고 대상(subject)의 상태가 변화했을때 이를 감지할 수 있다. 그 대상을 LiveData로 만들면 옵저버 패턴을 보다 쉽게 구현할 수 있고 UI의 생명주기에 따라서 생성/소멸한다. -> "생명주기가 onStarted, onResumed일때만 data를 update한다." 2. 사용법 1) LiveData 객체 생성 _ in ViewModel val score = Mutable..
1. UI & ViewModel (LiveData는 다음 시간에 다루기에 일단은 크게 두 분류로 나눈다.) UI - 자료를 UI에 표현 - 시스템이나 사용자가 보내는 이벤트를 수신 ViewModel - UI에 보여줄 data를 가지고 있다 UI에 전달 - 어떤 data를 보여줄지 판단(데이터에 대한 계산을 여기서 한다) (GameFragment의 예로 살펴보자) GameFragment는 data를 UI에 나타내준다. button이 클릭된 경우 Fragment는 이 사실을 인식하고 viewmodel에게 알린다. GameViewModel은 점수, 단어 목록, 현재 단어 등에 대한 데이터를 가지고 있다. gameFragment에서 신호가 오면 관련된 data를 처리하고 data를 변경한다.(ui를 참조하여 직..
Debounce debounce는 그림에서 보는 것처럼 지정한 시간 안에 다른 동작이 있을 경우 이전 동작은 취소하고 이후 동작만 return하는 operator이다. (이후 동작에서도 지정한 시간 안에 개입이 있다면 이를 취소한다.) 이는 검색창을 만들때 유용하다. 버튼을 클릭해서 만드는 검색이 아니라 SearchView처럼 단어가 입력되는 대로 결과를 반환하는 검색에 적합하다. 이때 모든 문자의 입력마다 call을 보내고 return을 받는다면 굉장히 무거운 동작이 될 수 있는데 debounce는 이러한 문제 해결에 도움을 준다. 2. 구현 방법 1) gradle 추가 //rxjava implementation 'io.reactivex.rxjava3:rxjava:3.0.3' implementation..
https://codingwithmitch.com/courses/rxjava-rxandroid-for-beginners/rxjava-operators-take-takewhile/ (위 블로그 내용을 복습차 정리했습니다.) Filter Operator는 이름 그대로 특정 조건으로 거르는 operator이다. observable 중에서 내가 지정한 조건을 통과하는 item만 가져온다. 특징으로 선별작업은 backgroun thread에서 이루어진다. -> UI에 영향 X .filter() 원하는 조건에 맞는 item만 가져온다. .filter(new Predicate() { @Override public boolean test(Task task) throws Exception { return task.isC..
Operator란? 아직은 operator를 직접 써보지 않아서 정의를 내리긴 힘들지만 나의 짧은 지식으로 정의를 내려보자면 "observable에서 나오는 data를 처리하는 연산자이다. " *생성, 변환, 필터, 결합, 조건, 에러 처리 등 다양한 종류의 연산자가 있다. 아무튼 RxJava는 다양한 operator들을 잘 조합함으로써 완성되는 것 같다. 그렇기 때문에 operator들을 잘 이해하는 것이 곧 rxJava를 이해하는 길이라고 생각한다. Operator의 종류 1. create : 데이터 받아서 observable로 만들어 주기 ex_ fromIterable() 2. filter : 말 그대로 거르는 것 ex_ filter() 3. other format : 다른 형태로 바꿔주는 것 ex..
1. gradle 설정 implementation 'io.reactivex.rxjava3:rxjava:3.0.3' implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' *RxJava vs RxAndroid - RxJava가 핵심 라이브러리고 RxAndroid는 RxJava를 안드로이드 환경에서 보다 쉽게 사용할 수 있도록 도와주는 라이브러리이다. - 예를 들어, RxAndroid에서는 Scheduler라는 기능을 제공하는데 이는 안드로이드에서 스레드 처리를 보다 쉽게 도와준다. 3. Flowable - flowable 는 'back-pressure' 라는 문제로 인해서 도입되었다. back-pressure Backpressure is when in a Flowa..
리액티브 프로그래밍이란? Declarative programming concerned with data stream and the propagation of change 두 가지 키워드로 리액티브 프로그래밍을 이해해보자. 1. Declarative programming(선언형 프로그래밍) 우리가 흔히 하는 프로그래밍은 명령형 프로그래밍이다. 명령형 프로그래밍이란 '실행할 동작을 구체적으로 명시하고 이를 실행하는 프로그램'이다. 예를 들어 sum()이라는 함수가 있고 sum(){number += 1} 처럼 실행할 동작이 구체적으로 명시되어있다. 반면, 선언형 프로그래밍은 단순히 목표를 선언하는 것이다. 명령형 처럼 구체적인 동작이 명시되어 있지 않다. 명령형은 How , 선언형은 What 에 비유할 수 있..
AAC 관련 공부를 하면서 나는 '왜 이걸 써야하나?' 라는 질문을 계속 던졌다. 항상 나오는 답변이 "Test가 용이하다" 였다. 안타깝게도 지금까지 test를 공부해본 적이 없어서 이에 대해 공감할 수 없었는데 advanced android with kotlin 과정에 서 이와 관련된 갈증을 다소 해결할 수 있었다. 1. Test란 무엇인가? 앱이 버그 없이 잘 돌아가는지 실험해보는 것이다. 예를 들어 TodoList 앱을 만든다고 하였을때 목록이 잘 추가되는지 삭제는 잘 되는지 우리는 실험해보고 버그를 찾고 이를 고친다. 이러한 과정을 정확하게는 Manual Test라고 한다. Manual의 사전적 정의를 살펴보면 '손으로 하는' 이라는 뜻이 있다. 즉, 수동으로 하는 테스트이다. 하지만 우리는 자..