목록전체 글 (23)
notepad by Oxix
RemoteConfig? 사용자가 앱 업데이트를 다운로드 하지 않고도 앱의 동작과 모양을 변경할 수 있는 클라우드 서비스 작동 방법 매개변수 값 가져오기 및 캐싱과 같은 중요한 작업을 처리하는 클라이언트 라이브러리가 포함되어 있으며 새 값이 활성화 되어 사용자 경험에 영향을 미치는 시기를 제어할 수 있다. 참고 사항 사용자가 승인해야 하는 앱 업데이트는 원격 구성을 사용하지 않아야 한다 -> 무단 업데이트는 신뢰성을 해칠 수 있다. 원격 구성 매개 변수에 기밀 데이터를 저장하지 않아야 한다. -> 원격 구성 설정에 저장된 값은 제 3자가 해독할 수 있다. 원격 구성을 사용하여 앱의 타겟 플랫폼에서 요구하는 조건을 우회하려고 시도하면 안된다. -> 앱 심사중에는 RemoteConfig 사용을 중지했다가 심..
메시지를 받으려면 FirebaseMessagingService를 확장하는 서비스를 사용해야 한다. FirebaseMessagingService를 사용하려면 매니페스트에 다음을 추가해야 한다. 또한 알림 모양을 지정하려면 기본 값을 설정하는 것이 좋다. application 태그 안에 다음 줄을 추가하여 사용자 정의 기본 아이콘과 색상을 설정할 수 있다. onMessageReceived FirebaseMessagingService.onMessageReceived 메서드를 재정의하면 수신된 RemoteMessage 객체를 기반으로 작업을 수행하고 메시지 데이터를 가져올 수 있다. override fun onMessageReceived(remoteMessage: RemoteMessage) { // TODO(d..
SDK 설정 매니페스트 수정 SDK 설정 Android 프로젝트에 Firebase 추가 | Android용 Firebase firebase.google.com 해당 페이지에 들어가서 안내하는대로 설정해주면 된다. 매니페스트 수정 FirebaseMessagingService를 확장하는 서비스로 백그라운드에서 앱에 대한 알림을 수신하는 것 이상의 메시지 처리를 수행하려는 경우 필요하다. 포그라운드 앱에서 알림을 수신등의 작업을 수행하려면 해당 서비스를 확장해야한다. Androidd 12, 13 12의 경우와 13의 경우에 알림 권한 요청이 다르다. 12이하에서 알림 채널을 처음 생성하는 경우 사용자에게 권한을 요청한다. 만약 앱이 백그라운드에서 실행될 때 첫 번째 알림 채널을 생성하는 경우 Android 알..
FCM? 비용 없이 안정적으로 메시지를 보낼 수 있는 플랫폼 간 메시징 솔루션이다. FCM을 사용하면 이메일 또는 기타 데이터를 동기화 할 수 있으며 클라이언트 앱에 알릴 수 있다. -> 알림 메세지 or 데이터 메시지 보내기 메시지 유형 알림 메시지 데이터 메시지 알림 메시지 테스트 또는 마케팅 및 사용자 재참여를 위해 Firebase Console을 사용하여 알림 메시지를 보낼 수 있다. key-value 세트로 notification 키를 설정한다. JSON 형식 알림 메시지 이며 앱이 백그라운드에 있을 때 알림 메시지가 알림 트레이로 전달된다. 포그라운드에 있는 앱의 경우 메시지는 콜백 함수에 의해 처리된다. { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDK..
트리란 ? 모두가 연결되어 있는 그래프 -> 어떤 두 점을 골라도 간선을 타고 사이를 이동 가능 사이클이 존재하지 않음 정점 개수 V = 간선 개수 E + 1 위의 조건 중 2개 이상을 만족해야 한다. 알고리즘 문제를 풀게 되면 Rooted Tree가 대부분이다. Rooted Tree? Node -> 정점 Root -> 최상단에 있는 정점 Depth -> 상대적 값이다. Root depth == 0 (1부터 시작해도 무관하다.) Parent, Child, Ancestor, Sibling - Parent : 현재 위치 노드와 연결되어 있으며 바로 한단계 위의 노드 - Child : 현재 위치 노드와 연결되어 있으며 바로 한단계 아래의 노드 - Ancestor : 자신의 루트 노트 사이의 관계 - Sibli..
Android 아키텍처 아키텍처를 공부해야 하는 이유 수 많은 이벤트 발생한다 -> 잘못된 설계를 하면 프로그램의 유지보수성을 극도로 떨어뜨린다. 이벤트의 처리 결과가 동시다발적, 불시에 일어날 수 있다. 대응이 지연되면 앱이 정지 될 수도 있다. 네트워크가 끊어졌어도 동작해야 한다. -> 보다 유연한 데이터 계층의 구현이 필요 좋은 아키텍처? 풀려는 문제에 잘 어울리는 설계 코드 구조가 시스템이 어떻게 동작하는지를 잘 보여주어야 한다 -> 이해, 이유를 알기 쉽게 요구사항이 진화함에 따라 쉽게 변경 가능해야 한다. -> 유지, 테스트 하기 쉽게 성능 개선 작업을 보다 더 부드럽게 해주어야 한다. 좋은 아키텍처의 방해물 : 복잡성 시스템을 이해하기 어렵고 수정하기 어렵게 만드는 소프트웨어 구조에 관한 모..

문제 풀이 직선 위에 점은 위치와 색깔을 나타낸다. (위치,색깔) 위치는 최대 10만까지 색깔은 300개까지 최대 가능하다. 점을 지나칠때 마다 모두 검사를 한다면 제한 시간 2초 (약 2억번)에는 불가능하다. 이유는 O(n) * n 이기 때문에 2억번을 넘는다. 그렇기 때문에 색상 별로 나누고 정렬한다. 가장 가까운 원소는 양 옆에 있기 때문에 하나를 고르면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collections; import j..

문제 풀이 해당 문제는 정렬 문제이다. 숫자 카드에 쓰이는 정수는 int형을 벗어나므로 long형을 쓰거나 BigInteger를 사용해야하며, 길이가 최대 10만인 배열을 순차적으로 비교할때 제한 시간 1초 약 1억번의 연산으로 충분해 보인다. 카드에 적힌 숫자가 가장 많은 것을 찾아야하고 동률인 경우 더 작은 수를 출력해야 하기 때문에 내림차순으로 정렬한 뒤 기본값으로 지정한 count보다 많은 경우 값을 변경해주면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class 카드_11652 { static StringBui..

문제 풀이 해당 문제는 제목과 같이 정렬 문제이다. 배열 크기 N은 최대 50이며 50개의 배열을 일반 정렬로 구현해도 제한 시간안에 충분히 구현 가능하다. 자료형은 Int형 범위안에 들기 때문에 Int를 쓰도록 하겠다. 원본 배열을 정렬된 배열과 비교하여 index값을 정렬된 배열에 몇번째 위치하는지 나타내는 배열을 출력하는 문제 이다. 구조체를 사용하여 index, value을 갖게한 다음 value기준으로 정렬하여 값을 비교 이후, 결과를 도출했다.(value가 같으면 index를 이용하여 알아서 정렬해준다.) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.u..

문제 유형 완전 탐색을 하여 하나씩 결과를 비교해야 하기 때문에 브루트 포스 알고리즘 유형이다. N의 최대는 20이기 때문에 2의 20제곱 만큼 경우의 수가 나온다 완전탐색의 경우 2초안에 가능한 범위이며 정수 S의 최대치는 정수형이기 때문에 변수는 int형을 쓰도록 하겠다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class 부분수열의합_1182 { static int N, S, ans; static int[] arr; static BufferedReader br = new BufferedReader(new..