전체 글
-
[Kotlin] 코틀린하며 가끔 잊어버리는 내용 (Feat. 개념적인 내용)IT Study/Android 2024. 4. 14. 17:07
1. 다중 패러다임, 코틀린 코틀린은 함수형 프로그래밍과 객체 지향 프로그래밍을 지원하는 다중 패러다임 언어. 함수형 언어 1. 일급 함수 (변수에 함수를 할당할 수 있다.) 2. 불변성 (val과 같은 키워드가 존재한다.) 3. 고차 함수 (filter, map 등) 객체 지향 언어 1. 클래스와 객체 (데이터 + 메서드가 결합된 클래스를 정의한다. 이를 인스턴스화하여 객체 생성할 수 있다.) 2. 상속 (재사용 가능) 3. 캡슐화 (접근 제어자 등을 통해 숨기고 공유하기가 가능) 4. 다형성 (오버로딩, 오버라이딩) 2. 변수, 자료형 변수는 되도록 val, not mutable과 같이 불변성을 가져가는 것이 좋다. 그러나 변수에 값이 할당되지 않음을 하나의 정보로 사용하는 경우가 있을텐데, 이때에는..
-
[Android/Kotlin] 옵저버 패턴이란?IT Study/Android 2024. 4. 10. 18:10
1. 옵저버 패턴이란 옵저버 패턴은 객체 지향 프로그래밍에서 중요한 디자인 패턴 중 하나이다. 옵저버 패턴에 대해 알아보기 전, 먼저 옵저버가 무엇인지 생각해보자. Observer(이하 옵저버)란, 감시자 혹은 관찰자를 의미한다. 말 그대로 무언가를 감시하는 역할을 수행하고 있다는 것. 즉, 어떤 이벤트가 일어나는 것을 감시하는 패턴을 의미한다. 마치 안드로이드 리스너와 같은 개념 아닌가? 1. 버튼을 클릭했을 때 2. 키보드를 통해 글자를 입력할 때 3. API 콜에 대한 응답 데이터를 수신받았을 때 시스템에 의해 발생하는 동작, 이벤트가 발생했을 때 이를 감시하고 미리 정의된 동작을 수행하도록 하는 것이 바로 옵저버 패턴이다. 그렇다면 옵저버 패턴은 어떤 원리로 동작하는 것일까? 미리 힌트를 주자면,..
-
[Android/Kotlin] "Can't create handler inside thread that has not called Looper.prepare()" 예외IT Study/Android 2024. 4. 4. 22:02
안녕하세요. 개발하며 만나게 된 예외에 대해 다뤄보도록 하겠습니다. 🥺 (너무 오랜만에 블로그 글로 돌아왔습니다...!!!!) 1. "Can't create handler inside thread that has not called Looper.prepare()" 오류의 의미 안드로이드 앱에서 백그라운드 스레드에서 핸들러(Handler)를 생성하려 할 때 발생합니다. 이를 이해하기 위해서는 먼저 안드로이드의 Looper와 Handler 시스템에 대해 알아야 합니다. 그럼 Handler는 메인 스레드에서만 생성해야하나요? 핸들러는 *기본적으로 생성된 스레드의 Looper에 연결됩니다. 메인 스레드에서 생성된 핸들러는 자동으로 메인 스레드의 Looper와 연결되기 때문에, 추가 작업 없이 UI 업데이트를 수..
-
[네트워크] Request, Response (feat. 그림으로 보는 네트워크 요청과 응답)IT Study/컴퓨터 기초 2024. 2. 23. 16:52
1. Request 2. Response 사진 출처 In Introduction to HTTP Basics HTTP (HyperText Transfer Protocol) Basics Introduction The WEB Internet (or The Web) is a massive distributed client/server information system as depicted in the following diagram. Many applications are running concurrently over the Web, such as web browsi www3.ntu.edu.sg
-
[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(..