개요안드로이드에서 실시간 데이터의 변환을 감지해야 하는 화면이 여럿 있습니다.예를 들어 커뮤니티와 댓글창과 같이 다른 유저의 행동으로 인해 서버의 데이터가 변한 경우, 이를 다른 유저의 화면에도 반영해야 합니다.통상적으로 MVVM 패턴에서 프래그먼트나 액티비티의 뷰모델이 생성될 경우 init 블록이나 view가 생성될 당시 서버의 데이터를 로드해서 UI에 반영하게 되는 로직이 일반적이라고 생각합니다.즉 서버로의 데이터 호출은 딱 한번 일어납니다.하지만 어떻게? 다른 앱은 댓글과 게시글이 달릴 경우 다른 유저가 화면을 이동시키지 않아도(프래그먼트나 뷰모델이 재생산되지 않아도) 실시간으로 반영할 수 있는지 궁금했습니다. 구조를 간단하게 도식화하면 아래와 같습니다.뷰모델이 초기 생산되면 서버로 데이터를 요청합..
전체 글
안녕하세요 💻짧은 프로젝트를 하면서 TMDB API를 이용해 영화 관련 앱을 만들고 있었습니다.차별화된 기능으로 영화 이름에 대한 트레일러 영상을 제공하고 싶었습니다. TMDB API는 공공 API로 영화에 대한 세부 정보를 알 수 있습니다.https://developer.themoviedb.org/reference/intro/getting-started Getting StartedWelcome to version 3 of The Movie Database (TMDB) API. This is where you will find the definitive list of currently available methods for our movie, tv, actor and image API.developer.themovi..
문제https://www.acmicpc.net/problem/1781 문제 풀이처음 문제를 보고 난이도에 비해 정말 쉽다고 생각했다.회의실 배정과 유사하게 우선순위큐를 사용해서, deadLine이 짧은 순, 가치가 무거운 순으로 정렬한 뒤, 시간에 맞게 빼면 된다고 생각했다. 우선 문제에 대한 테스트케이스는 다음과 같다.해당 작업들을 우리가 목표로 하는 최대의 가치의 순서로 작업할 수 있도록 정렬해줘야 한다.고려해야할 점은 다음과 같다.데드라인이 적은 순서대로 정렬을 한다.가치가 많은 순으로 정렬을 한다.위 조건을 고려해서 정렬을 하면 다음과 같다.그리고 데드라인 별로 작업을 선택해서 답을 구하면 된다.하지만 여기서 함정이 존재한다.내가 풀이했던 방식은 데드라인이 아니라, 그때 풀어야 했던 문제라고 생각..
프로젝트 관련 글[Android] 네이버 간편 로그인(Kotlin)[Android] 자동 로그인 with DataStore(Kotlin)[Android] 네이버 로그인 프로필 가져오기[Android] DataSource 적용 및 분리이번 프로젝트를 진행하면서 서버와 안드로이드를 동시에 개발하고 있는데요,사실 안드로이드 개발만 경험해 본 상황에서 가볍게 서버의 코드를 작성하고 있는 상황입니다.과거에 서버 개발자분들에게 무리하게 API를 요구했던 제 자신을 반성하게 되는 것 같습니다. 이번글은 오류 처리에 관한 글인데요,이번 프로젝트를 하면서 api를 처음 연결한 상황에서 에러 처리를 명확하게 짚고 넘어가고 싶어서 초반부에 코드를 굉장히 많이 수정했던 것 같습니다. 우선 제가 고려했던 점은 일괄된 에러처리를..
프로젝트 관련 글[Android] 네이버 간편 로그인(Kotlin)[Android] 자동 로그인 with DataStore(Kotlin)[Android] 네이버 로그인 프로필 가져오기저번 PR에서 흥미로운 리뷰를 받았습니다. 사실 레포지토리 위에 하나의 계층을 두어 DataSource를 적용해 본 적이 없었습니다.상위 계층을 하나 두면 오히려 복잡하지 않을까라는 생각으로 학습을 한 뒤 코드로 적용해 봤습니다. 사실 안드로이드에서 권장하는 DataLayer의 방식은 DataSource -> Respository의 흐름입니다.하지만 굳이? Data Sources까지 만들어야 하는 이유가 뭘까에 대해서 궁금했습니다. 사실 이는 제가 Repository 패턴에 대해서 잘못 해석을 하고 개발을 했던 것 같습니다...
프로젝트 관련 글[Android] 네이버 간편 로그인(Kotlin)[Android] 자동 로그인 with DataStore(Kotlin) 저번 포스팅에서는 DataStore를 이용하면서 자동로그인을 구현해 봤습니다.과정에서 매번 DataStore를 사용하는 곳에서 DataStore를 주입해줘야 하는 상황이 생겼습니다.그 외에도 추후 개발에서 API와 Repository가 많이 생기기 때문에 개발 초반부에 Hilt를 적용하는 것이 생산성에 도움이 될 것이라고 판단하고 적용해 봤습니다. 기존의 코드는 Application에서 선언한 DataStore를 사용했지만, Hilt를 통해서 주입해 줬습니다.@InstallIn(SingletonComponent::class)@Moduleobject DataStoreMo..
프로젝트 관련 글[Android] 네이버 간편 로그인(Kotlin) 어플을 사용하다 보면 어플의 로고가 뜨고 메인화면으로 넘어가는 구조를 보신 적이 있을 것입니다.Android에서는 SplashActivity로 구현합니다.대략적인 구조는 다음과 같습니다.최초 화면 진입점인 Splash Activity에서 자동 로그인을 요청하고, 실패했다면 Login 화면으로, 성공했다면 Main 화면으로 넘어갑니다.자 이제 그럼 궁금증은 자동 로그인을 요청하는 곳은 어디이며, 어떠한 로직으로 결과를 반환하는가?입니다.크게 remote 요청과 local 요청이 있습니다.remote 요청 : 서버 요청으로 인한 결과 반환local 요청 : Room, DataStore, sharedPreference 등 Android 내부..
이번 프로젝트에서 네이버 지도 API를 사용하기 때문에 로그인도 네이버 간편 로그인을 사용하기로 했습니다.저는 설정했던 과정과 작성했던 코드와 그에 대한 설명을 적어볼까 합니다.앱을 등록하는 글은 다른 블로그에도 많더라고요. Gradle 설정저는 arr 파일을 다운로드하고 gradle에 추가하는 방법을 선택했습니다.다운로드한 파일을 project 탭으로 전환시켜서 lib 폴더에 복사해 줍니다. 이후 해당 arr 파일을 dependency에 추가해 줍니다.dependencies{ implementation(files("libs/oauth-5.9.1.aar"))} 이후에는 사용하는 라이브러리를 추가해주셔야 합니다.저 같은 경우 안 쓸 거 같은 라이브러리를 제외하다가, gradle 충돌이 많이 발생해서 제공..
문제https://www.acmicpc.net/problem/1285 1285번: 동전 뒤집기첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위www.acmicpc.net 문제 풀이동전에 대해 행과 열을 뒤집는 순서가 중요한 문제라고 생각했다.우리가 선택할 수 있는 경우의 수는 뒤집느냐, 뒤집지 않느냐이다.하지만 n의 최대 크기가 20이기에 최대 행에 대해 2^20, 열에 대해 2^20이 발생하기 때문에 최적화가 필요했다.작업의 순서가 중요한 점과 브루트포스로 n을 돌릴 경우 시간초과가 당연한 사실에서 저번에 풀었던 외판원 문제가 떠올랐다.외판원 문제도 도시를 ..