전체 글

전체 글

    [Android/트러블슈팅] 구글 플레이스토어 키스토어 분실 재설정 방법

    들어가기 전 엄빠도어렸다 업데이트를 위해 bundle을 추출하는 과정에서 키스토어가 분실된 사실을 알게되었다. 파일을 정리하면서 지워버린 것이다.. jks 파일이 없으면 bundle 추출이 불가능하기 때문에 이를 재설정해야했다. 따라서 이번에 플레이스토어에 올린 앱의 키스토어를 재설정하는 방법을 포스팅 하고자한다. 1. 새로운 keystore 생성 안드로이드 스튜디오에서 Build > Generate Signed Bundle or APK 로 들어가 apk 또는 bundle을 선택한다. [사진 1]과 같이 뜬다면 Create new ... 를 누른다. Key Store path : 새로운 키스토어와 jks 파일이 저장되는 위치이다. Password : 새롭게 지정 할 키스토어의 비밀번호를 설정하면 된다. ..

    [BOJ/Kotlin] 2240번 자두나무 : DP

    문제 설명 자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어지는 자두를 받아서 먹고는 한다. 자두를 잡을 때에는 자두가 허공에 있을 때 잡아야 하는데, 이는 자두가 말랑말랑하여 바닥에 떨어지면 못 먹을 정도로 뭉개지기 때문이다. 매 초마다, 두 개의 나무 중 하나의 나무에서 열매가 떨어지게 된다. 만약 열매가 떨어지는 순간, 자두가 그 나무의 아래에 서 있으면 자두는 그 열매를 받아먹을 수 있다. 두 개의 나무는 그다지 멀리 떨어져 있지 않기 때문에, 자두는 하나의 나무 아래에 서 있다가 다른 나무 아래로 빠르게(1초보다 훨씬 짧은 시간에) 움직일 수 있다. 하지만 자..

    [Android] Flow란? LiveData와 Flow 비교

    Flow? Android 에서 Coroutine의 Flow는 데이터 스트림이며, 코루틴 상에서 리액티브 프로그래밍을 지원하기 위한 구성요소이다. Flow는 코루틴을 기반으로 여러 값을 제공할 수 있다. 비동기식으로 계산할 수 있는 데이터 스트림의 개념이다. 따라서 반환 값은 동일한 유형이어야 한다. ex) Flow는 정수 값을 내보내는 흐름이다. Flow는 suspend함수를 사용하여 값을 비동기적으로 생성하고 사용한다. 예를 들어 Flow는 Default 스레드를 차단하지 않고 다음 값을 생성할 네트워크 요청을 안전하게 만들 수 있다. 코루틴에서 비동기적으로 호출하기 위한 suspend 함수와 동일하지만 flow에서는 suspend 를 붙일 필요가 없다. 리액티브 프로그래밍이란? == 반응형 프로그래밍..

    [Android] 인앱 업데이트 구현하기 / 인앱 업데이트 테스트

    들어가기 전엄빠는 어렸다 1.1.0 버전 업데이트 과정에서 사용자에게 업데이트를 권유 할 수 있는 업데이트 팝업을 구현하고자 했다.따라서 이 포스팅에서 업데이트 팝업을 구현하는 방법을 알아보고자 한다.업데이트 팝업이란?어플에 새로운 기능이 추가되거나 버그가 수정되어 업데이트가 필요한 경우가 발생할 수 있다.이 때 어플을 실행시키면 사용자에게 업데이트가 필요함을 알리는 팝업을 업데이트 팝업이라 한다.위 사진과 같이 사용자에게 업데이트를 유도할 수 있다.엄빠도 어렸다 서비스에서는 업데이트 팝업을 구현하기 위해서 인앱 업데이트 방식을 활용하였다.인앱 업데이트란? 구글은 안드로이드 5.0 이상을 사용하는 기기에 인앱 업데이트 기능을 지원하고 있다.이는 구글 플레이스토어를 거치지 않고 앱 업데이트를 가능하게 하는..

    [Android/코루틴] 1. 코루틴은 무엇이고 왜 쓰는가?

    들어가기 전 프로젝트를 하면서 suspend 함수를 활용해 서버통신을 하는 코드를 작성한 경험이 있다. 이것이 코루틴이고 비동기 실행을 간단하게 해준다는 것 까지만 알고있었다. 원리 및 장점을 제대로 알고있는 채로 코루틴을 사용하고 싶다는 생각에 코루틴을 공부하면서 배운 내용들을 시리즈로 포스팅하고자 한다. Coroutine = Co + Routine 코루틴을 co(with의 의미) + routine = 루틴의 일종으로 협동루틴이라 할 수 있다. 코루틴은 [그림 1]과 같이 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한다. 루틴과 코루틴을 비교하면 [그림 2]와 같다. 루틴이 입구와 출구가 하나라면, 코루틴은 중단과 재개가 계속될 수 있는 즉 입구와 출구가 여러개라고 할 ..

    [BOJ/Kotlin] 11659번 구간 합 구하기 4 : 누적합

    문제 설명 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 문제 풀이 아이디어 실패 아이디어 입력값으로 주어지는 각 값을 똑같은 위치에 배열에 저장해서 for문을 돌면서 i 인덱스부터 j 인덱스까지 접근해 값을 더하는 식으로 문제를 풀었다 => 시간초과 성공 아이디어 d[i]에 처음부터 i번째까지 값들을 전부 더해온 누적값을 저장하고, 누적값들을 이용해 구간합을 ..

    [BOJ/Kotlin] 1149번 RGB거리 : DP

    문제 설명 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000..

    [프로그래머스/Kotlin] Lv3 베스트앨범 : 해시

    문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한사항 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생된 횟수입니..

    [프로그래머스/Kotlin] Lv2 의상 : 해시

    분류 해시 문제 설명 코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다. 예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 사의 파란 셔츠 하의 청바지 겉옷 긴 코트 코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다. 착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다. 코니는 하루에 최소 한 개의 의상은 입습니다. 코니가..

    [BOJ/Kotlin] 7569번 토마토 : BFS

    분류 너비 우선 탐색, 그래프 이론, 그래프 탐색 문제 설명 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠..

    [후기] 드로이드나이츠 2023 후기

    보호되어 있는 글입니다.