분류 전체보기(137)
-
[안드로이드 - JDK 오류]No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well ..
안드로이드 JDK 버전이 맞지 않을 경우 발생하는 오류이다. 안드로이드 스튜디오 버전을 업그레이드했더니 발생한 오류였다. AndroidStudio -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JDK: Android Studio java home 선택 버전 업이 되며 안드로이드 코어와 기존 JDK 파일 버전이 호환이 안되는 문제로 java 11 버전으로 올리니 해결가능 해졌다. 해당오류는 안드로이드 스튜디오 버전업을 진행하면 통상적으로 발생하는 문제로 업데이트된 버전의 gradle 파일과 JAVA 버전 호환성에서 오류가 발생하여 애플리케이션이 실행을 할 수 없게 된다. 해당 방식으로 진행했음에도 오류가 발생한다..
2023.03.22 -
[ 안드로이드 - 코틀린 ] DiffUtil 사용기 (ListAdapter)
기본적으로 RecyclerView를 사용할 때는 RecyclerView.Adapter를 이용하고 notifyDataSetChanged()를 이용해 화면 UI를 갱신하는 형태로 진행했었다. 이유라면 구현이 쉽기도 하고 그냥 잘 몰라서였다. notifyDataSetChanged() 비효율적인 이유는 해당 메서드를 이용하면 데이터를 변경할 때마다 모든 아이템들을 다시 그리기 때문에 비효율적인 갱신 방법이다. 하지만 사용하기 쉽게 때문에 많이 이용했다. 지금까지는.... 이번에 새로 사용해본 DiffUtil을 이용한다면 보다 효율적으로 아이템들을 갱신할 수 있다. DiffUtil은 최소한의 데이터를 이용해 데이터들을 업데이트하기 때문에 효율적인 방법인 데이터 갱신 방법이다. + 하지만 이러한 작업이 오래걸리는 ..
2023.03.21 -
두 폴더 파일 이름명을 비교해 같은 이름이 없는 파일 찾기
import os # 비교할 두 폴더 경로 설정 folder1 = "" folder2 = "" files1 = [os.path.splitext(f)[0] for f in os.listdir(folder1)] files2 = [os.path.splitext(f)[0] for f in os.listdir(folder2)] unique_files1 = set(files1) - set(files2) unique_files2 = set(files2) - set(files1) print("폴더1에만 존재하는 파일 이름: ", unique_files1) print("폴더2에만 존재하는 파일 이름: ", unique_files2)
2023.03.11 -
[이코테] 상하좌우
솔직히 처음에 어려워서 책 닫고 다른 백준문제를 좀 풀어봤다. 뭔가 직접적으로 사용한건 아니지만 백준 단계별로 풀어보기 2중 배열쪽을 풀다보다 갑자기 생각나서 풀게 되었다.... 문제 조건 시작지점은 1, 1로 고정으로 오른쪽 하단 값은 (n , n) 값으로 고정한다. n 값을 넘어가면 안된다. n 값은 첫번째 줄에 입력 받는다. 이동 데이터 값은 두번째 줄에 받는다. n = int(input()) move_l = list(map(str, input().split())) point = { 'L' : (0, -1), 'R' : (0, 1), 'U' : (-1, 0), 'D' : (1, 0) } start = [1, 1] for i in move_l: p0 = start[0] + point[i][0] p1 ..
2023.03.05 -
[1978 - 파이썬] - 소수 찾기
처음 풀때는 솔직히 어렵진 않았다.... 근데 효율적이지는 않았다는 걸 깨달아 버렸다... 당연한건데 처음 반복문에서 num은 그전 숫자까지라는 기초 중 기초를 잠깐 잊어서 뻘짓을 했다 ㅋㅋ.. 처음 풀이이다 조건으로는 0~1은 소수일 수 없으니 넘겨버리고 그 외에 값들은 반복문을 이용해 나눠 떨어지면 소수가 아닌거고 아니면 아래 if 문으로 값을 받아온다. 하지만 여기서 문제점은 숫자가 커저버리면 그 수 만큼 반복해서 나누는 과정을 진행해야된다. n = int(input()) nums = list(map(int, input().split())) count = 0 for num in nums: result = True if num < 2: result = False pass else: for i in r..
2023.03.04 -
안드로이드 프로세스와 스레드
스마트폰을 예시로 작성할 것이다. 우리가 사용하는 스마트폰에는 수 많은 애플리케이션들이 설치되어 있다. 그리고 각각의 애플리케이션 별로 별도의 프로세스가 존재한다. 이러한 프로세스들은 스레드들을 가지고 있고 이러한 스레드들을 이용해 병렬적 처리도 가능해진다. 안드로이드에서 프로세스들의 통신 방법으로 IPC (inter-Process Communication)을 이용해 통신을 하는데 이것은 다른 애플리케이션 간 데이터 공유와 기능을 사용할 수 있게 만들어준다. 안드로이드 개발을 해봤다면 기본적으로 알고있을 Intent와 Binder 있다. Intent는 데이터를 전달하는데 사용한다. Binder는 서로 다른 프로세스 간 호출을 위해 사용한다. ( 네트워크 통신 같은 ) 이전에 말한 프로세스들 중 브로드캐스..
2023.02.22