전체 글
-
[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 (스레드, 작업 공간) 애플리케이션이 시작되면 시스템은 애플리케이션에 대한 실행 스레드를 생성하며, 이를 기본이라고 합니다. (안드로이드 ..
-
[패스트캠퍼스] "35개 프로젝트로 배우는 Android 앱 개발 feat. Jetpack Compose 초격차 패키지 Online."를 수강하며Daily 2024. 1. 23. 16:53
프로젝트에서는 어떤 기술을 사용했나요? 나는 면접 준비를 하며, 위와 같은 질문에 대한 답변을 고민했다. 그리고 이 질문에 대해 아래와 같은 답변을 작성했다. (내용 일부) UI 구현에서는 ConstraintLayout, LinearLayout, ScrollView, HorizontalScrollView를 함께 사용하여 화면의 레이아웃을 구성하였습니다. 주로 ConstraintLayout을 통해 유연한 UI 배치를 가능하게 하고, 그 내부에 LinearLayout을 활용하여 화면 일부를 수평 또는 수직으로 그룹화했습니다. 또한, 지속적인 앱의 업데이트를 통해 데이터가 늘어날 가능성이 있는 부분에 대해서는 ScrollView와 HorizontalScrollView를 사용하여 스크롤 가능한 화면 영역을 구현..