일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BOJ
- Android Compose
- 안드로이드 무한 스크롤
- 안드로이드 컴포즈
- android orbit
- 백준 2615
- 코틀린 에러 핸들링
- Android Compose Navigation
- android compose orbit
- 안드로이드 커스텀 뷰
- viewmodel
- 힐트
- power menu
- runCatching
- 백준
- Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException
- 코루틴 공식 문서
- 코루틴
- Sticky Header RecyclerView
- 코루틴 공식문서
- power menu 라이브러리
- Thread vs Coroutine
- 스레드 vs 코루틴
- Coroutine
- Hilt 에러
- AAC ViewModel
- hilt
- RecyclerView Sticky Header
- Kotlin Serialization
- Android Custom View
- Today
- Total
목록전체 글 (59)
Beeeam
의존성이라는 용어를 많이 접했었다. 하지만 이게 정확하게 무엇인지 잘 모르고 있었다. 근데 이번에 Hilt 라이브러리를 공부하게 되면서 공부한 내용을 정리하려고 한다. 객체 지향 프로그래밍? 단어 그대로 객체 중심으로 프로그램을 설계하고, 개발하는 방식이다. 여기서 포인트는 객체가 중심이 되어서 “누가 어떤 일을 할 것인가?” 가 핵심이 된다. 객체를 중심으로 프로그램을 설계하기 때문에 객체 간의 협력은 필수적이다. 그래서 객체 간의 협력을 하게 되는데 이때 의존성이 생긴다. 의존성? 다른 것에 의지하여 생활하거나 존재하는 성질, 금단 증상 때문에 계속하여 약물을 섭취하지 않으면 안 되는 상태. 객체 지향에서 의존성 한 객체나 클래스가 파라미터나 리턴 값 또는 지역 변수 등으로 다른 객체를 참조하는 것 ..
Hilt 공부하려고 Hilt code lab을 하고 있었는데 Hilt 적용 전에는 잘 동작하던 프로젝트가 Hilt를 적용 한 후로 밑의 에러가 계속 나오면서 실행이 안됐다. 그래서 열심히 구글링을 해봤는데 사용 중인 코틀린과 버전을 일치 시켜야 한다 등 다양한 해결법이 나와서 시도 해봤는데 해결 하지 못했다. 그래서 몇 시간 동안 이거 때문에 머리 쥐어 뜯고 있다가 아는 선배를 통해서 에러를 해결 했었다. 처음 에러를 해결 했을 때는 아는 선배가 Hilt를 사용했던 프로젝트와 환경을 일치 시켜서 해결 했었다. 그리고 계속 진행 하던 중 여러 이유들 때문에 다시 해봐야겠다는 생각이 들어서 처음부터 프로젝트를 생성해서 진행했다. 그런데 Hilt를 적용하니 또 같은 에러가 발생하였다. 위의 에러는 코틀린의 버..

BFS란? Breadth-First_Search의 약자로 너비 우선 탐색 알고리즘이다. 그래프를 탐색할 때 사용되는 알고리즘이다. DFS 알고리즘처럼 그래프를 탐색하지만 탐색하는 방법이 다르다. DFS는 깊이를 우선으로 탐색하는데 BFS는 너비를 우선으로 탐색을 진행한다. 즉, 자식 노드를 탐색하기 전에 같은 레벨의 다른 노드를 탐색한다. 그럼 언제 사용함? 최단 경로, 혹은 임의의 경로를 찾을 때 사용한다 . 특징 DFS와 비교해서 설명을 해보겠다. 먼저 사용되는 자료구조에서 첫 번째 차이점이 있다. DFS에서는 stack을 사용하지만 BFS에서는 queue를 사용한다. stack은 LIFO(Last In First Out)방식으로 요소들이 관리 되고, queue는 FIFO(First In First ..

https://kotlinlang.org/docs/coroutine-context-and-dispatchers.html#dispatchers-and-threads Coroutine context and dispatchers | Kotlin kotlinlang.org Coroutine Context는 다양한 요소로 이루어진 집합이다. 여기서 주요한 요소들은 coroutine job 객체와 dispatcher이다. (Coroutine Context 안에는 Coroutine job이랑 dispatcher 등 다양한 요소들이 들어있다.) Dispatchers and threads Coroutine Context는 dispatcher를 포함한다. Dispatcher는 해당 코루틴이 실행에 사용하는 스레드를 결정한..
MVVM 패턴 앞에서 포스팅한 MVP 패턴은 View와 Presenter가 1:1 관계라서 View가 추가되면 Presenter도 추가 되야 하는 단점이 있었다. 이러한 단점을 보완한 패턴이 MVVM 패턴이다. MVVM 패턴은 Model, View, ViewModel로 구성이 된다. Model과 View는 기존의 패턴들과 동일하고, Presenter 대신에 ViewModel이 사용 된다. MVVM 패턴도 View가 입력을 받고 해당 요청을 ViewModel로 전달한다. 그러면 그에 맞는 데이터를 Model로 부터 받아온다. 받아온 데이터는 ViewModel에 Livedata에 저장을 한다. View는 ViewModel에 저장된 Livedata를 관찰하다가 데이터가 변경되면 이를 감지하고, UI를 갱신한다..
MVP 이전에 포스팅 했던 MVC 패턴에서 Model과 View의 의존성이 높아지는 문제점을 해결하기 위해서 생겨난 개념이다. Model, View, Presenter로 구성되며, Model과 View의 의존성을 없애기 위해서 둘은 Presenter를 통해서만 동작이 가능하다. → Model과 View는 오직 Presenter만 통해서 데이터를 주고 받을 수 있다. MVP 패턴의 흐름을 표현 해봤다. 흐름을 보면 먼저 User가 요청하면 이를 View가 받는다. 그럼 View는 Presenter에 요청이 왔음을 알린다. 그러면 Presenter는 Model에 데이터를 요청하고 데이터를 받아온다. 마지막으로 받아온 데이터를 View에 전달하여 화면에 보여준다. MVC와 차이점 activity / fragm..

https://kotlinlang.org/docs/composing-suspending-functions.html Composing suspending functions | Kotlin kotlinlang.org 이 섹션에서는 suspend 함수의 구성에 다양한 접근법들을 다룬다. Sequential by default 코루틴의 코드는 일반적인 코드와 마찬가지로 순차적 호출을 사용한다. fun main() = runBlocking { val time = measureTimeMillis { val one = doSomethingUsefulOne() val two = doSomethingUsefulTwo() println("The answer is ${one + two}") } println("Complet..
사실 안드로이드 관련 자료를 찾아보거나 회사 기술 스택들을 보면서 MVVM을 많이 보았는데 이때는 그냥 많이 사용되는 개념이구나 하고 넘겼었다. 근데 이번에 동아리 발표를 준비하면서 주제를 뭘로 할까 생각하다가 안드로이드에서 많이 사용되고, 안드로이드가 아닌 sw 개발에서도 많이 사용되는 MVVM에 대해서 발표를 하면 좋을 것 같다는 생각이 들었고, MVVM을 공부하는 김에 안드로이드에서 사용되는 여러 디자인 패턴들을 공부하고, 발표 해야 겠다는 생각이 들었다. 먼저 앞에서 언급한 것 처럼 MVC, MVP, MVVM 모두 디자인 패턴인데 디자인 패턴이 무엇인지, 왜 사용하는지를 알아야 할 것 같다. 디자인 패턴? 소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학의 소프..