일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- rxjava cold observable
- Rxjava Observable
- jvm이란
- 안드로이드 라이선스
- android ar 개발
- 서비스 vs 쓰레드
- 플러터 설치 2022
- 멤버변수
- rxjava hot observable
- 2022 플러터 설치
- 안드로이드 유닛 테스트
- 클래스
- 큐 자바 코드
- 안드로이드 유닛테스트란
- 서비스 쓰레드 차이
- 객체
- 안드로이드 레트로핏 사용법
- ar vr 차이
- 2022 플러터 안드로이드 스튜디오
- 스택 큐 차이
- 스택 자바 코드
- android retrofit login
- 안드로이드 os 구조
- 안드로이드 유닛 테스트 예시
- ANR이란
- rxjava disposable
- 안드로이드 라이선스 종류
- 자바 다형성
- 안드로이드 레트로핏 crud
- jvm 작동 원리
- Today
- Total
목록2024/04 (18)
나만을 위한 블로그
일반적으로 Flow는 콜드 데이터라 요청 시마다 값이 계산된다. 하지만 여러 수신자가 하나의 데이터가 바뀌는지 감지하는 경우도 있다. 이 때 메일링 리스트와 비슷한 SharedFlow를 쓴다. StateFlow는 감지 가능한 값과 비슷하다. SharedFlow SharedFlow로 메시지를 내보내면 대기 중인 모든 코루틴이 수신한다. import kotlinx.coroutines.coroutineScopeimport kotlinx.coroutines.delayimport kotlinx.coroutines.flow.MutableSharedFlowimport kotlinx.coroutines.launchsuspend fun main(): Unit = coroutineScope { val mutableS..
map Flow의 각 원소를 변환 함수에 따라 변환한다. 숫자들을 Flow로 갖고 있고 각 수의 제곱을 계산하는 연산이라면 생성된 Flow는 이 수들의 제곱을 값으로 갖는다. import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map suspend fun main() { flowOf(1, 2, 3) // [1, 2, 3] .map { it * it } // [1, 4, 9] .collect { print(it) }// 149 } map을 구현하려면 flow 빌더를 써서 새 Flow를 만들면 된다. 그리고 만들어진 Flow에서 원소들을 모으고 변형된 원소들을 하나씩 내보내면 된다. map은 값을 꺼내거나 다른 형태로 바꾸는 등으로 사용..

정수 리스트 num_list, 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장된 원소들을 차례로 담은 리스트를 리턴하는 함수를 완성하라 주먹구구식으로 풀면 아래와 같다. class Solution { fun solution(numList: IntArray, n: Int): IntArray { val list = mutableListOf() for (i in numList.indices step n) { list.add(numList[i]) } return list.toIntArray() } } 위 코드는 filterIndexed를 쓰면 더 간결해진다. class Solution { fun solution(numList: IntArray, n: Int): In..

정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 n번째 원소까지의 모든 원소를 담은 리스트를 리턴하는 함수를 완성하라 n번째 원소부터 문제에서 사용했던 copyOfRange를 다시 사용하면 된다. 물론 문제에 맞춰서 사용방법을 바꿔야 한다. class Solution { fun solution(numList: IntArray, n: Int): IntArray = numList.copyOfRange(0, n) }

class Solution { fun solution(str_list: Array): Array { val indexL = str_list.indexOf("l") val indexR = str_list.indexOf("r") return when { indexL != -1 && (indexR == -1 || indexL str_list.sliceArray(0 until indexL) indexR != -1 -> str_list.sliceArray((indexR + 1) until str_list.size) else -> arrayOf() } } } l과 r의 인덱스를 가져와서, 조건에 맞게 l 앞의 원소들과 r 뒤의 원소들을 배열에 담아 리턴한다. 문제에는 리스트라고 써 있는데 리..

정수 리스트 num_list, 정수 n이 주어질 때 num_list를 n번째 원소 이후의 원소들과 n번째까지의 원소들로 나눠 n번째 원소 이후의 원소들을 n번째까지의 원소들 앞에 붙인 리스트를 리턴하는 함수를 완성하라 쉽게 말해 n 이상의 인덱스에 있는 값들을 그대로 0번 인덱스 앞에 갖다 붙이라는 뜻이다. 2번째 입출력 예를 보면 순서 변경 없이 그대로 0번 인덱스 앞에 붙인 걸 볼 수 있다. copyOfRange와 subList를 활용하면 풀 수 있다. class Solution { fun solution(numList: IntArray, n: Int): IntArray { val after = numList.copyOfRange(n, numList.size).toList() val before = ..

정수 리스트 num_list와 정수 n이 주어질 때, n번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 리턴하는 함수를 완성하라 n번째 원소~마지막 원소를 모두 가진 리스트를 만들면 되는데, copyOfRange()를 쓰면 단번에 해결된다. https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/copy-of-range.html copyOfRange - Kotlin Programming Language kotlinlang.org 원본 배열의 지정된 범위의 복사본인 새 배열을 리턴한다 - fromIndex : 복사할 범위의 시작 부분(inclusive) - toIndex : 복사할 범위의 끝(exclusive) 리턴되는 배열은 시작값, ..

다산의 마지막 질문을 읽고 나서 본 책이다. 최근 바빠서 책 볼 시간을 잡지 못해 지하철에서 틈틈이 읽느라 예상보다 늦게 읽었다. 책 내용은 소학과 논어, 맹자 등 여러 고전의 내용과 예문을 발췌해서 구성됐다. 특히 소학의 내용이 많은데, 이 책 자체가 소학의 주요 구절 57개를 뽑아서 현대의 관점에서 풀어썼기 때문이다. 그렇다고 거창한 내용이 있는 건 아니다. 소학은 사서삼경 전에 읽는 입문서 같은 책이라서 읽다 보면 살면서 당연히 지켜야 하는 내용도 있고, 지키지 못했지만 습관으로 만들어야 하는 내용들이 대부분이다. 책 곳곳에서도 정리, 청소 따위의 사소한 일들을 강조한다. 하지만 매일 해야 한다는 조건이 붙으면 쉽지 않다. 하루쯤은, 오늘 기분이 어때서, 시간이 없어서, 날씨가 좋아서 따위의 변명과..
Flow는 요청이 한 방향으로 흐르고 요청으로 생성된 값이 다른 방향으로 흐르는 파이프라 할 수 있다. Flow가 끝나거나 예외 발생 시 이런 정보가 전달돼 중간 단계가 종료된다. 모든 정보가 Flow로 전달되므로 값, 예외, 시작 / 완료 등 다른 특정 이벤트를 감지할 수 있다. 아래 메서드들을 쓰면 된다. onEach Flow의 값을 하나씩 받기 위해 쓴다. import kotlinx.coroutines.delay import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.onEach suspend fun main() { flowOf(1, 2, 3, 4) .onEach..
※ 이 포스팅은 맥북 기준으로 작성됐다 웹뷰 기반의 하이브리드 앱이라면 유저들은 반드시 플레이 스토어에서 앱을 다운받지 않아도 앱의 대부분의 기능을 쓸 수 있다. 삼성 인터넷이나 크롬 등 브라우저 앱에서 서비스의 도메인으로 이동해 모바일 웹 형태로 서비스를 이용할 수 있기 때문이다. 하지만 특정 브라우저 앱에서 문제가 생긴다면 그 브라우저 앱에서 웹뷰를 실행하고 디버깅해야 하는데, 아무 설정도 안 한 크롬 인스펙터로는 브라우저 앱에서 디버깅할 수 없다. 이 포스팅에선 크롬 인스펙터에서 브라우저 앱에 표시되는 웹뷰를 디버깅하는 방법을 간략하게 확인한다. 먼저 터미널에서 아래 명령어를 실행한다. brew install --cask android-platform-tools 이 명령어를 입력해서 설치해야 브라우..