전체 글 54

[안드로이드] 컴포즈 build-logic, convention 멀티모듈 빌드 로직 관리하기

1. Version Catalog- 버전 카탈로그는 의존성 버전과 라이브러리를 중앙에서 관리할 수 있게 해주는 기능root project 의 gradle 폴더 -> libs.versions.toml 파일에 정의 versions : 라이브러리 버전libraries : 라이브러리 의존성bundles : 라이브러리를 묶어서 한 번에 선언plugins: 어떤 플러그인을 사용하는지[versions]kotlin = "2.0.0"hilt = "2.51"[libraries]androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "kotlin" }hilt-android = { group = "com.google.dagger", nam..

안드로이드 2025.06.18

[안드로이드] 멀티모듈, 컴포즈UI, Hilt, Navigation 사용해서 간단한 게시판 프로젝트 만들기

멀티 모듈을 사용하는 이유는 다음과 같다. 1. 빌드 속도 개선- Gradle은 변경된 모듈만 다시 빌드- 앱이 커질수록 전체를 빌드하는데 시간이 오래걸리기 때문에 기능 단위로 모듈을 나누면 변경된 부분만 빠르게 빌드 2. 관심사 분리- 각 모듈은 기능 또는 역할 단위로 나뉘며 독립적으로 개발되고 테스트 됨- 유지보수가 쉬워지고 코드의 가독성도 향상 3. 재사용성 증가 - 공통 로직을 별도 모듈로 만들어 쉽게 재사용 이러한 이유로 안드로이드 멀티모듈 작업을 하기로 마음먹었다! 1. 모듈 생성 file -> new -> new module 선택 android library 선택 후 모듈 이름 작성 나는 간단한 게시판 앱이라서 core, feature 모듈을 만들어 주었다. 또한, 안에는 각 기능별..

안드로이드 2025.06.12

[Python] 백준 1780 "종이의 개수_분할정복" 문제풀이

💡문제 풀이 import sys input = sys.stdin.readline n = int(input()) papers = [list(map(int,input().split())) for _ in range(n)] a=0 b=0 c=0 def asdf(x,y,n): global a,b,c sameNum = papers[x][y] for i in range(x,x+n): for j in range(y,y+n): if sameNum != papers[i][j]: asdf(x,y,n//3) asdf(x+n//3,y,n//3) asdf(x+2*n//3,y,n//3) asdf(x,y+n//3,n//3) asdf(x+n//3,y+n//3,n//3) asdf(x+2*n//3,y+n//3,n//3) asdf(x,y..

[개발상식] 안드로이드 기술면접 준비 - 2

Q1. 왜 액티비티 클래스의 onCreate() 메소드 안에서 setContentView()를 사용하는가? - 액티비티의 oncreate 메소드는 액티비티 불릴 때 한번만 호출이 되기 때문에 초기화에 자주 사용된다. onResume, onStart 같이 여러번 호출 될 수 있는 곳에서 호출하는 것은 매우 비효율적인 코드이다. Q2. 액티비티 클래스의 onSavedInstanceState(), onRestoreInstanceSate() 역할은? - onSaveInstanceState() : 액티비티가 pause 되기 전에 데이터를 저장하는데 사용한다. - onRestoreInstanceState() : 액티비티가 파괴되고, 다시 재 생성될 때 액티비티가 가지고 있는 번들로부터 데이터를 회복할 수 있다. Q..

OS 2022.11.07

[개발상식] 안드로이드 기술면접 준비 - 1

Q1. 안드로이드 애플리케이션 클래스는 무엇인가? - 안드로이드의 application class는 액티비티 및 서비스와 같은 다른 모든 구성요소에 접근 가능한 기본 클래스입니다. 또한 애플리케이션 프로세스가 생성될 때 가장 먼저 초기화 됩니다. 그렇기 때문에 보통 앱 전역에서 일관성있게 사용하는 요소들을 등록하여 사용합니다. Q2. context 무엇인가? - context 는 리소스에 접근하거나, 데이터베이스나 프리퍼런스에 접근하는 등 기타 등등 역할을 제공합니다. 앞으로 비교할 다른 context와 다른 중요한 점은 애플리케이션에서 현재 실행되고 있는 환경을 가지고 있는 차이가 있습니다. Q3. ARM64-v8a, ARMv7, ABI 가 무엇인가? - 안드로이드 디바이스는 다양한 cpu를 사용하여 ..

OS 2022.11.06

[안드로이드] Hilt @Qualifier란 ?

💡 Hilt로 Retrofit 모듈을 작성할 때 여러개의 URL을 처리해야 하는 경우에 Hilt가 어떤 메서드의 Retrofit 객체를 사용해야하는지 모른다. 이를 해결하기 위해 @Qualifier를 사용하여 annotation클래스를 사용한다. ex) 만약 car를 요청할 때 hilt는 두 바인드 메서드에서 어느 종류의 car를 리턴해야 하는지 모른다. 이를 보완하기 위해 @Qualifier를 사용. enum class OilType{ GASOLINE,DIESEL,LPG } interface Car{ fun getOilType():OilType ... } @InstallIn(ActivityComponent::class) @Module abstract class CarModule{ @Binds fun b..

안드로이드 2022.10.31

[개발상식] IT 기술면접 준비 - 4 (데이터 베이스)

Q1. 데이터베이스를 사용하는 이유? - 데이터베이스가 등장하기 전까지는 데이터를 각각의 파일 단위로 저장하는 파일처리 시스템 방식이었습니다. 데이터베이스를 이용하면 데이터의 변경 시 응용 프로그램에 영향을 미치지 않는 독립성과 데이터의 중복 문제와 보안 문제를 해결할 수 있습니다. Q2. 인덱스란? - 데이터베이스에서 특정 컬럼값을 가지고 있는 열 혹은 값을 찾기 위해서 사용하는 방법입니다. 이를 위해 컬럼의 값과 해당 레코드의 주소를 키와 값의 쌍으로 인덱스를 만들어 둡니다. DBMS의 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 찾는 속도가 빠릅니다. Q3. B-트리 인덱스 알고리즘과 해시 인덱스 알고리즘 비교? - 둘 다 DBMS가 인덱스를 관리하는 방법에 대한 알고리즘입니다. B-트..

OS 2022.10.25

[개발상식] IT 기술면접 준비 - 3 (컴퓨터 구조)

Q1. 컴퓨터의 3대 구성요소란? - 연산을 담당하는 cpu, 기억을 담당하는 메모리, 다양한 입출력 장치 3가지 입니다. Q2. CPU의 구조는 어떻게 되어 있나요? - cpu의 주요 구성요소는 메모리에서 명령을 받아 해독과 실행을 지시하는 제어장치, 제어장치의 지시에 따라 산술, 논리, 비트 연산 등을 수행하는 연산장치, 제어, 연산 등에 사용하는 임시 기억 장치인 기억장치 3가지가 있습니다. Q3. 병럴처리의 파이프라인 기법 vs 슈퍼스칼라 기법? - cpu의 성능을 향상하기 위해서는 cpu의 클록을 높이거나 캐시의 크기를 늘려야하지만 현재 기술의 한계를 맞아 코어를 여러 개 만들거나, 동시에 실행 가능한 명령의 개수를 늘리는 방법을 사용합니다. 이때 병렬처리는 동시에 여러 개의 명령을 처리하여 작..

OS 2022.10.24