일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 기존 앱
- scrolling tab
- url 추적
- DataBinding
- Swift Package Manager
- UIViewControllerTransitioningDelegate
- DevelopmentRegion
- 상단 탭바
- UIPresentationController
- Tuist
- notifychanged
- ViewBuilder
- swift #swift keychain #keychain 사용법
- GeometryReader
- 개발자 면접
- oberve url
- detect url
- development language
- ios
- url 관찰
- transformation.map
- SwiftUI
- pod install
- base64 변환
- 스크롤 탭
- Android
- Side Menu
- convert base64
- List
- swift
- Today
- Total
목록분류 전체보기 (170)
버그 잡이
eidttext는 사용자의 입력을 받는 창이다. 단순 버튼과는 다르게 사용자의 다양한 패턴에 대한 대응을 해줘야한다. 1. 키패드의 버튼으로 최종 입력하는 경우 setOnEditorActionListener()를 활용하면 키패드를 통한 완료 처리에 대응할 수 있다. *이것을 설정해주지 않으면 키패드의 완료 버튼으로 최종 결과를 입력할때 아무런 결과를 호출할 수 없다. wordMeaningET.setOnEditorActionListener { v, actionId, event -> if(actionId == EditorInfo.IME_ACTION_DONE){ wordAddClick(v) true } else{ false } *imeOption이 적용이 안 되는 경우가 있다. 이때는 inputType="te..
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..
알람 설정시간 < 현재 시간 알람 앱에서 내가 선택한 시간이 현재 시간보다 이전시간이면 다음날로 알람 설정이 되는 것을 볼 수 있다. "이 로직은 어떻게 짜는 것일까?" "DAY_OF_YEAR" : 365일 중 오늘의 몇번째 날인지 알려준다. 다음날로 알람 설정을 하기 위해서는 기본적으로 다음과 같은 로직이 떠오를 것이다. if(알람 설정시간 < 현재 시간){ 현재 날짜 += 1 } 그런데 이렇게 했을 경우 문제는 월 마지막 날인 경우 32일에 알람이 설정된다. 이를 막기 위해서는 월마다 예외처리를 해줘야하는데 월 마지막날은 또 각기 다르기 때문에 예외처리 하기에 복잡하다. DAY_OF_YEAR을 활용하면 위의 문제를 해결할 수 있다. 366일 되는 경우만 예외처리를 해주면 되기 때문이다. if(알람 설..
나는 지금 알람앱을 만들고 있다. 알람이 시작되면 음악을 재생시켜야 하는데 '어떤 Service를 사용하는 것이 좋을까?' 결론부터 이야기하자면 아래와 같다. startService() & foregroundService 내가 만들 서비스는 음악이 재생되는 서비스이고 세부 요구사항을 살펴보자 요구사항#1 : 음악 재생상태와 버튼 상태를 동기화시킬 필요가 없다. -> UI에 영향을 줄 필요가 없다. 요구사항#2 : 1분 이상 지속되어야 한다. 서비스의 종류 서비스는 위 그림처럼 크게 두가지 방법으로 나눠서 사용한다. *startService() - 백그라운드에서 실행되고, 한번 시작된 서비스는 stopService를 호출할때까지 계속 실행된다. - 하지만 작업 결과를 호출자에게 반환하지 않기 때문에, 호출..
Operator란? 아직은 operator를 직접 써보지 않아서 정의를 내리긴 힘들지만 나의 짧은 지식으로 정의를 내려보자면 "observable에서 나오는 data를 처리하는 연산자이다. " *생성, 변환, 필터, 결합, 조건, 에러 처리 등 다양한 종류의 연산자가 있다. 아무튼 RxJava는 다양한 operator들을 잘 조합함으로써 완성되는 것 같다. 그렇기 때문에 operator들을 잘 이해하는 것이 곧 rxJava를 이해하는 길이라고 생각한다. Operator의 종류 1. create : 데이터 받아서 observable로 만들어 주기 ex_ fromIterable() 2. filter : 말 그대로 거르는 것 ex_ filter() 3. other format : 다른 형태로 바꿔주는 것 ex..
recyclerView에서의 클릭 리스너 구현은 매번 까먹는다. 이 기회에 정리해보자. 1. 추상메서드 - 클릭시 caller에게 클릭되었다는 사실을 알려줄 종(bell)이 바로 이 추상메서드이다. val onItemClickListener : ((Int)->Unit)? = null - 람다식으로 구현했다. int 타입 하나를 매개변수로 받고 반환값이 없는 람다 함수이다. *Unit은 java의 void와 같은 개념이다(return 값이 없음) 2. Item 클릭시 추상메서드 전달 - 이제 추상메서드를 사용해보자. - item 클릭시 추상 메서드를 실행함으로써 이벤트를 처리한다. - position만 넘겨주고 구체적인 동작은 Caller인 Activity에서 정의한다. item.setOnClickList..
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 에 비유할 수 있..