IT Study
-
[CS] 컨테이너란?IT Study/컴퓨터 기초 2024. 2. 13. 23:34
안녕하세요, Three입니다. 이번 블로그 글에서는 컨테이너의 개념에 대해 간단히 정리하고자 합니다. 컨테이너 기술은 소프트웨어를 효율적으로 개발, 배포 및 관리하는 데 사용되는 중요한 기술입니다. 이 기술의 핵심 개념과 장점을 이해하는 것은 소프트웨어 개발자, 특히 Kotlin과 Android와 같은 플랫폼에서 작업하는 개발자에게 중요할 수 있습니다. 본론을 시작해볼까요? 컨테이너란? 컨테이너는 애플리케이션을 실행하는 데 필요한 코드, 라이브러리, 의존성 등을 포함하는 경량의, 독립적인 실행 환경입니다. 컨테이너는 소프트웨어를 표준화된 방식으로 패키징하여, 개발, 테스트 및 프로덕션 환경에서 일관된 동작을 보장합니다. 컨테이너의 주요 특징 경량성: 컨테이너는 가상 머신보다 덜 리소스를 소비하며 더 빠르..
-
[아키텍처] MVC, MVP, MVVM, MVI 패턴에 관하여IT Study 2024. 2. 5. 16:08
🏈 1. MVC Model, View, Controller의 약자로, 안드로이드와 관계없이 프로그래밍 시 가장 널리 사용되는 디자인 패턴(구조)입니다. 1. User(유저)가 Controller(컨트롤러)를 통해 입력한다. 2. Controller는 Model(모델)에 데이터를 저장, 수정, 삭제 등의 처리를 요청한다. 3. Controller는 요청한 데이터를 불러와, View(뷰)에 전달한다. 4. 전달받은 데이터를 View에 그려, User는 변경된 데이터를 본다. Model 데이터를 관리하며 비즈니스 로직을 수행한다. View 유저에 보일 화면을 표현하며, 어떤 데이터나 로직이 있어서도 안된다. Activity, Fragment = View, Controller 역할 Controller Model..
-
[Kotlin] tailrec(꼬리 재귀)란IT Study/Android 2024. 2. 3. 16:46
1. 꼬리 재귀란? 꼬리 재귀(Tail Recursion)는 함수의 마지막 연산이 재귀 호출임을 의미합니다. 일반적인 재귀 호출과는 다르게, 꼬리 재귀는 함수가 자신을 호출함과 동시에 종료 됩니다. 이러한 특성 때문에, 꼬리 재귀는 컴파일러나 인터프리터에 의해 루프로 변환될 수 있습니다. 2. 꼬리 재귀의 기본 사용 방법 Kotlin에서는 tailrec 키워드를 사용해 꼬리 재귀 함수를 작성할 수 있습니다. 팩토리얼 계산을 예를 들어보죠. (1) 기본 재귀 함수 (꼬리 재귀 함수 ❌) fun factorial(n: Int): Long { return if (n 4 * factorial(3) ---> 3 * factorial(2) ----> 2 * factorial(1) -----> 1 factorial(..
-
[Android] Foreground Service를 사용하고 싶을 경우 (feat. API 레벨 34 이상)IT Study/Android 2024. 1. 30. 15:35
1. Foreground Service 사용 시, Manifest 파일 설정 Android 12(API 레벨 34)에서는 Foreground Service를 사용하는 앱이 명확한 권한을 요청하도록 변경되었습니다. 이는 사용자의 프라이버시를 보호하고, 앱이 어떤 서비스를 실행하는지 더욱 명확하게 인지할 수 있도록 돕기 위함입니다. 그래서 이전에 사용하던 방법만으로는 원하는 포그라운드 실행이 되지 않는데요. 이럴 경우 매니페스트 파일에 아래와 같은 코드를 작성하면 해결할 수 있습니다. 2. android.permission.FOREGROUND_SERVICE Foreground Service를 사용할 수 있도록 하는 기본 권한입니다. 이 권한이 없으면 앱은 Foreground Service를 전혀 사용할 수 ..
-
[Android] View Binding (feat. 뷰 바인딩 전 늘 하는 사전 작업)IT Study/Android 2024. 1. 27. 13:57
Android에서 뷰 바인딩을 하기 위해서는 사전 작업이 필요합니다. 이 사전 작업은 무엇이며, 각 코드는 어떤 역할을 하는지, 왜 이것이 필요한지에 대해 이번 블로그 글에서 다뤄보려고 합니다. 📁 Gradle 파일에 Sync 하기 viewBinding { enable = true } 🛰️ Activity 파일에 binding 가져오기 class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBindin..
-
[Android] Thread (feat. 스레드란?)IT Study/Android 2024. 1. 24. 14:56
안녕하세요. 이번 글에서는 Thread(스레드)에 대해 다뤄보고자 합니다. 바로 함께 보시죠. ✅ Thread (스레드) 개념이 필요한 이유 유튜브를 예시로 들어보겠습니다. 유튜브에서 영상을 보던 도중, 영상이 마음에 들어 오프라인 저장을 하려고 합니다. 그러나 작업 공간이 단일하게 존재할 경우(Main Thread), 영상 시청과 함께 오프라인 저장을 할 수 없습니다. 이러한 경우 또 다른 작업을 수행할 수 있는 스레드가 필요할 것입니다. 주요한 작업 외에 또 다른 주요 작업을 수행하기 위해 만든 작업 공간, Worker Thread가 필요합니다. 🛰️ Thread (스레드, 작업 공간) 애플리케이션이 시작되면 시스템은 애플리케이션에 대한 실행 스레드를 생성하며, 이를 기본이라고 합니다. (안드로이드 ..
-
[Android] counter(계수기, 숫자 세기) 앱 (feat. 화면 회전 시 초기화, 화면 회전 시 UI 가려지기, weight)IT Study/Android 2024. 1. 21. 15:09
안드로이드에서 counter를 만드는 것은 아주 간단합니다. 계수기를 생각하면 더 쉽게 느껴지죠. 계수기 1. + 버튼을 클릭할 경우, 숫자 1이 증가한다. 2. 초기화 버튼 클릭할 경우, 숫자 0으로 초기화된다. 🧮 Counter 코드, UI는 아래의 내용을 통해 확인하시죠. 저의 계수기는 아래와 같이 생겼습니다. (1) MainActivity.kt import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.Button import android.widget.TextView class MainActivity : AppCompatActivity() { ..
-
[Android] View 그려지는 과정 (뷰가 그려지는 순서)IT Study/Android 2024. 1. 20. 16:08
안녕하세요. 이번 글에서는 View가 그려지는 과정에 대해 다뤄보려고 합니다. 안드로이드에서 View는 전위순회 (부모 → 자식 순으로, 위 → 아래, 왼쪽 → 오른쪽) 방식으로 그려집니다. 이렇게 전위순회 방식으로 그려지는 View는 depth가 깊어질수록 확인해야 할 내용이 많아지므로 안드로이드는 flat한 구조로 작성하는 것이 좋습니다. View가 그려지는 순서를 보도록 하겠습니다. 1. measure 모든 뷰는 자신의 width, height (크기)를 계산합니다. measure(측정) 과정에서는 부모 - 자식 간의 뷰 크기에 대한 정보를 전달하기 위해 2가지 클래스를 사용하는데요. ViewGroup.LayoutParams 자식 View가 부모 View에 알리는 내용 (자신이 어떻게 측정되고, ..