일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ANR이란
- android ar 개발
- ar vr 차이
- 플러터 설치 2022
- jvm 작동 원리
- 안드로이드 유닛테스트란
- android retrofit login
- Rxjava Observable
- 안드로이드 라이선스 종류
- 클래스
- 안드로이드 레트로핏 사용법
- 객체
- 서비스 vs 쓰레드
- 큐 자바 코드
- jvm이란
- 안드로이드 라이선스
- rxjava cold observable
- 스택 자바 코드
- rxjava disposable
- 안드로이드 os 구조
- rxjava hot observable
- 안드로이드 레트로핏 crud
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 유닛 테스트 예시
- 자바 다형성
- 멤버변수
- 서비스 쓰레드 차이
- 스택 큐 차이
- 안드로이드 유닛 테스트
- 2022 플러터 설치
- Today
- Total
목록2024/07 (33)
나만을 위한 블로그

안드로이드에선 주로 레트로핏을 사용해 통신하는 경우가 많은데, 플러터에선 http라는 패키지를 통해 네트워크 통신을 하는 경우도 있는 듯하다. 물론 dio, 플러터의 retrofit 등 여러가지를 쓰는 경우가 많겠으나 네트워크 통신을 하려면 이런 라이브러리보다 async, await, Future라는 키워드를 먼저 알아야 한다.아래는 플러터 비동기 프로그래밍을 다루는 공식문서다. https://dart.dev/libraries/async/async-await Asynchronous programming: futures, async, awaitLearn about and practice writing asynchronous code in DartPad!dart.dev(중략)...이 튜토리얼은 다음을 다룬다..
dart를 사용하다 보면 final, const 키워드를 사용하는 순간이 온다.공식문서와 다른 글들을 보면서 두 키워드에 대해 확인한다. https://dart.dev/language/variables#final-and-const VariablesLearn about variables in Dart.dart.dev변수를 바꾸지 않으려는 경우 var 대신 final 또는 const를 사용하거나 타입에 추가하라. final 변수는 한 번만 설정 가능하고 const는 컴파일 타임 상수다. 인스턴스 변수(=클래스 안에 선언한 변수)의 경우 final은 쓸 수 있지만 const는 쓸 수 없다아래는 final 변수를 생성, 초기화하는 예시다. 이 때 final 변수의 값은 (다른 곳에서) 바꿀 수 없다final n..

이 포스팅에선 Dart에서 생성자를 어떻게 사용하는지 확인한다. 포스팅에서 사용할 Dart 버전은 3.4.4임을 참고한다.아래는 플러터 공식문서 중 생성자의 공식문서다. https://dart.dev/language/constructors ConstructorsEverything about using constructors in Dart.dart.dev생성자는 클래스의 인스턴스를 만드는 특수 함수다. 기본 생성자를 제외하고 이런 함수는 클래스와 같은 이름을 쓴다- Generative constructors : 새 인스턴스를 만들고 인스턴스를 초기화- Default constructors : 생성자가 지정되지 않은 경우 새 인스턴스를 만들 때 사용. 인수를 받지 않고 이름이 지정되지 않음- Named co..

컴포즈에서 앱 바, 바텀 앱 바, fab가 포함된 화면을 만들 때 Scaffold를 사용한다. 이걸 쓰면 표준화된 레이아웃을 큰 공수 없이 만들 수 있게 되어 개발 프로세스가 간소화된다는 장점이 있다.플러터에도 사용법은 다르지만 이와 동일한 Scaffold 위젯이 있다. 이름도 동일해서 컴포즈에서 사용한 적이 있다면 플러터에서 사용하는 것도 그렇게 어렵지 않아 보인다.아래는 Scaffold를 설명하는 플러터 공식문서다. https://api.flutter.dev/flutter/material/Scaffold-class.html Scaffold class - material library - Dart APIImplements the basic Material Design visual layout struc..

안드로이드에서 MVI 패턴을 구현하기 위해 사용하는 라이브러리로 Orbit이란 게 있다.아래는 Orbit 깃허브와 공식문서다. https://github.com/orbit-mvi/orbit-mvi GitHub - orbit-mvi/orbit-mvi: A simple MVI framework for Kotlin Multiplatform and AndroidA simple MVI framework for Kotlin Multiplatform and Android - orbit-mvi/orbit-mvigithub.comOrbit은 Redux/MVI와 비슷한 라이브러리지만 번거로움이 없다. 매우 간단해서 MVVM+라고 생각하면 된다- 간단함, type-safe, 코루틴 스타일, 확장 가능한 API- 멀티플랫폼,..

이 포스팅에선 material 3 기준으로 당겨서 새로고침 화면을 구현한 예시를 확인한다.이 글의 바탕이 된 코드는 아래 미디엄 링크를 참고했다. 그러나 글 내용 중 rememberPullRefreshState는 material 3에서 사용할 수 없는 API기 때문에 다른 걸 사용하도록 조금 수정했다. https://medium.com/@anandgaur22/jetpack-compose-pull-to-refresh-fafb4d1a5ea6 Jetpack Compose: Pull to RefreshIntroductionmedium.com 당연히 예시기 때문에 실제로 사용하려면 반드시 리팩토링한 후 사용한다.아래는 구현 완료 후 에뮬레이터에서 테스트한 GIF다. 이제 코드를 확인해보자.뷰모델을 같이 사용하기..

오름차순, 내림차순, 무작위로 배치된 숫자들 중 뭘 받냐에 따라 각각 다른 문자열을 리턴하면 된다. fun main() { val numbers = readln().split(" ").map { it.toInt() } var isAscending = true var isDescending = true for (i in 0.. numbers[i + 1]) { isAscending = false } } when { isAscending -> println("ascending") isDescending -> println("descending") else -> println("mixed") }} 오름차순..

받은 문자열의 각 글자들이 앞의 숫자만큼 늘어나고 있다. 아래는 StringBuilder를 사용한 풀이다. fun main() { val T = readln().toInt() val sb = StringBuilder() repeat(T) { val target = readln().split(" ") val S = target[0].toInt() val R = target[1] R.map { c -> repeat(S) { sb.append(c) } } sb.append("\n") } println(sb.toString())} 출력을 보면 두..

입력받은 문자열을 띄어쓰기 기준으로 split()한 다음, 빈 문자열을 제거하고 남은 리스트의 크기를 리턴하면 된다.빈 문자열을 필터링하는 로직이 없으면 통과가 되지 않으니 추가해 준다. fun main() { val a = readln().trim().split(" ").filter { it != "" } print(a.size)}

아래는 전체 코드다. fun main() { val t = readln().toInt() repeat(t) { val (h, w, n) = readln().split(" ").map { it.toInt() } val floor = if (n % h == 0) h else n % h val room = if (n % h == 0) n / h else n / h + 1 println("$floor${String.format("%02d", room)}") } } 문제의 조건은 아래와 같다. 각 층 왼쪽부터 차례대로 방이 있고 모두 비어있는 상태다손님은 1층부터 위쪽으로 방이 배정된다 (101 -> 201 -> 301 순)각 층이 모두 차면 그 다음 방 번호로 넘어간다 (6층이 최상층인 경우 101 -> 201..