일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이어베이스
- Android
- 플레이스토어
- NavHost
- XML
- Compose
- Authentication
- DiffUtil
- 컴포즈
- coroutine
- 클린아키텍처
- 로그인
- Kotlin
- 코틀린
- MVVM
- Build variants
- 리사이클러뷰
- 뷰
- Flow
- Jetpack
- UiState
- ListAdapter
- 회원가입
- cleanarchitecture
- NavController
- 안드로이드
- sharedFlow
- 커스텀뷰
- 코딩테스트
- 알고리즘
- Today
- Total
목록코틀린 (6)
Grusie 안드로이드 개발 기술 블로그
안드로이드 프로젝트를 개발 할 때, 항상 의문점이 들었던 것이 이미 지나간 화면에서 다른화면에서의 변화를 감지하여 뷰를 변경해주는 방법이 무엇이 있을까? 였다.예를 들어, 게시글 리스트 중 하나를 클릭하여, 게시글 상세 페이지로 넘어가고, 그 상세페이지에서 좋아요를 눌렀을 때, 뒤에있는 리스트에도 좋아요 표시가 되어있어야 한다."상세 페이지를 실행할 때, startActivtyForResult로 실행하여, 나중에 결과를 반환한다." 이런 방법도 있을 것이다. 하지만 만약, 상세 페이지에서도 연관된 리스트들로 이동할 수 있을 경우라면 어떻게 할 것인가? 계속해서 Depth가 증가한다고 할 때, 그 값을 과연 올바르게 전부 받아올 수 있을까? 내 생각은 아니라고 본다.그렇게 고민을 하던 중 반응형 프로그래밍..
이번에 알아 볼 알고리즘은 구현이다. 구현 알고리즘이란? - 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 알고리즘 문제를 풀이할 때 구현은 매우 필요하다. 모든 문제를 구현이라고 생각 할 수 있으나, 그 중 구현이 어렵거나 구현에 초점을 맞추는 문제들이 있다. 즉, 풀이를 떠올리기는 쉽지만 소스코드로 옮기기 어려운 문제라고 생각하면 된다. 예시 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제 문자열을 특정한 기준에 따라 끊어 처리해야 하는 문제 적절한 라이브러리를 찾아서 사용해야 하는 문제 알고리즘은 간단한데, 코드가 길어지는 문제 시뮬레이션 문제 완전 탐색 완전탐색 - 모든 경우의 수를 주저 없이 다 계산하는 해결 방법 시뮬레이션 - 문제에서 제시한 알고리즘을 한 단계씩 차례대로..
회사 프로젝트를 개편하려던 중 화면을 불러오는 것이 너무나도 느리기에, 코드를 들여다 보니, 전부 다 동기처리로 되어있었다. 그냥 콜백을 보내고, 다음 함수를 호출하고의 문제가 아니라, 아예 콜백을 보내고? 콜백을 받아와서, 성공했을 때 그 다음 콜백을 요청하는 형태로 구현이 되어있어서.. 경악을 금치 못했다.또한 OkHttp로 구현이 되어있었기에 Retrofit으로 변경하며, 클린아키텍처로 변경하면서 비동기, 병렬 처리에 대해 고민을 하였다. 예전에 suspend 함수의 통신 결과를 받아오기 위해 await()함수를 사용하였던 적이 있다.그 땐 await()가 값을 가져오기 위해 쓰는 것이기에 동기라고만 생각 하고 넘어 갔었다. 여러 개의 서버통신을 비동기로 변경하면서 생긴 고민"비동기로 처리하면, 서..
Retrofit으로 서버통신을 오랫동안 해왔지만, 코드가 없을 때 새로 구현하려고 하면, 시행착오가 조금 필요한 것 같다는 생각을 해서 정리를 해보려고 한다. 파싱하는 방법, 로깅 인터셉터 등 여러 추가 기능들을 구현해야하겠지만, 그냥 기본 Retrofit의 사용법만을 우선 정리 해두려고 한다. Retrofit2 라이브러리OkHttp 라이브러리를 기반으로 구현된된 라이브러리이며, Squareup사에서 만들었다.서버와 Http 통신을 해서 주고받은 데이터를 앱에서 특정 형태로 활용할 수 있도록 하는 라이브러리이다.GET, POST, PUT, DELETE 등을 전달하면 서버에서 처리 후 xml, json, text, rss 등으로 응답을 제공 받을 수 있다. Retrofit 라이브러리 사용법 의존성추가im..
현재 근무중인 회사의 안드로이드 프로젝트는 기존 MVC 패턴으로 구현되어 있으며, Retrofit 같이 여러 곳에서 사용 되어야 하는 객체도 Singleton으로 의존성 주입을 활용하여 되어있지 않다.현재 새로 개발하는 프로젝트들은 필자가 MVVM패턴을 적용하고 있으나, DI는 아직 적용하지 못했던 상태이다.클린 아키텍처를 공부하며 프로젝트까지 진행한 이번 기회에 클린 아키텍처 + MVVM + Hilt를 적용해 볼 예정이다. 우선 클린 아키텍처를 위해, 각 계층들을 추가한다.- data모듈(실질적인 통신)- domain모듈(중개자)- presentation모듈(UI)- DI(DI 및 앱 설정) 기존에 사용했던 프로젝트들을 분리하려고 했으나, 얽혀있는 것들이 너무 많아 모듈로 분리하지 않고, 디렉토리로 ..
알고리즘 첫 번째, 누적합의 이론을 공부하고 예제들을 풀어보려고 한다. 누적 합 : 일정 구간의 누적 합을 구하는 문제이다. 일반적으로 사용되는 배열에 값을 저장하고 지정된 인덱스부터 하나씩 더해가는 방식은 최악의 경우 O(n^2)의 시간 복잡도를 갖기 때문에 입력의 범위가 클 때 사용할 수 없다. 하지만 Prefix sum 방식을 사용하면 O(N)으로 해결 할 수 있다. 누적합은 문제에서 수열이 주어지고 어떤 구간의 값의 합을 구해야 할 때 쓰일 수 있다. 예를 들어, 크기가 5인 arr배열에서 3번 index와 5번 index 구간의 구간합을 구한다고 가정하면, 누적합은 arr[0~b]까지의 누적합 - arr[0~a-1까지의 누적합]으로 표현 할 수 있다. b - a 구간의 누적합을 구하기 위해선 b..