전체 글 37

[Android] 모듈화로 빌드시간을 줄인다?

개발을 하며 빌드를 하는 시간은 우리를 굉장히 피로하게 하는 경우가 많습니다. 코드가 커지면 커질수록 그런 경향이 많은데요. 그러한 피로가 개발을 하는데 있어 굉장히 많이 일의 능률을 낮추기 때문에, 빌드시간을 줄이는 것은 생각보다 중요한 경우가 많습니다. 이전에 모듈에 대해서 이야기를 하다가 모듈화가 빌드 시간을 줄여주는데 좋다는 이야기를 들었습니다. 그래서 오늘은 모듈이 빌드 시간을 어떻게 줄여주는지 알아보기로 하였습니다. 우리는 빌드를 할 때 빌드 캐시를 활용합니다. 캐시를 이용해 이전에 사용한 빌드 정보들을 빠르게 캐싱해 처음 빌드를 할 때 보다 더욱 빠르게 빌드를 마칩니다. 개발자가 코드를 고치면 그 코드를 다시 컴파일 해야합니다. 라이브러리가 추가되어 종속성 관리가 다시 필요할 수도 있습니다...

[Design Pattern] Factory 패턴

Factory 패턴은 객체 생성을 캡슐화하는 디자인 패턴입니다. 이 패턴은 객체 생성 로직을 클라이언트 코드에서 분리하여, 요청에 따라 다양한 객체를 생성할 수 있게 합니다. Factory 패턴은 주로 다음과 같은 상황에서 사용됩니다: 생성할 객체의 타입이 런타임에 결정되는 경우 객체 생성과 관련된 로직을 한 곳에서 관리하고 싶은 경우 객체 생성에 필요한 데이터가 복잡한 경우 코틀린에서 Factory 패턴을 구현하는 예제를 들어보겠습니다. 먼저, 생성할 객체의 공통 인터페이스를 정의합니다. interface Animal { fun speak() } 다음으로, 인터페이스를 구현하는 여러 클래스를 정의합니다. class Dog : Animal { override fun speak() { println("Wo..

[Design Pattern] Builder 패턴

Builder 패턴은 객체 생성 과정을 단계별로 나누어, 사용자가 원하는 방식으로 객체를 생성할 수 있게 하는 디자인 패턴입니다. 주로 복잡한 객체를 생성할 때 유용하며, 가독성과 유연성을 높여줍니다. 코틀린에서는 Builder 패턴을 다음과 같이 구현할 수 있습니다. 먼저, 생성할 객체를 나타내는 클래스를 정의합니다. 예를 들어, Car 클래스를 정의해 보겠습니다. data class Car( val brand: String, val model: String, val year: Int, val color: String, val price: Double ) 이제 Builder 클래스를 정의합니다. Builder 클래스는 Car 객체를 생성하기 위한 중간 단계 역할을 합니다. class CarBuilder..

[Design Pattern] Adapter 패턴

어댑터 패턴은 기존의 클래스 인터페이스를 클라이언트가 원하는 다른 인터페이스로 변환하는 패턴입니다. 예를 들어, 이미 만들어져 있는 한 클래스의 메소드를 다른 클래스에서 사용하고 싶을 때 어댑터 패턴을 사용할 수 있습니다. interface MediaPlayer { fun play(audioType: String, fileName: String) } interface AdvancedMediaPlayer { fun playVlc(fileName: String) fun playMp4(fileName: String) } class VlcPlayer : AdvancedMediaPlayer { override fun playVlc(fileName: String) { println("Playing vlc file...

[Design Pattern] MVVM 아키텍처 패턴

이 글에서는 안드로이드 애플리케이션을 개발할 때 사용되는 현대적인 아키텍처 패턴 중 하나인 MVVM(Model-View-ViewModel) 패턴에 대해 알아보겠습니다. 목차 1. 소개 2. MVC와 MVP 패턴의 한계 3. MVVM 패턴 이해하기 4. MVVM 구성 요소 5. MVVM 장점 1. 소개 안드로이드 애플리케이션 개발을 위한 아키텍처 패턴 중 하나인 MVVM(Model-View-ViewModel) 패턴은 애플리케이션의 유지 보수성, 확장성 및 테스트 용이성을 향상시키는 데 도움이 됩니다. 이 글에서는 MVVM 패턴의 기본 개념과 구성 요소, 장점에 대해 알아보고 간단한 예제를 통해 실제로 어떻게 작동하는지 살펴보겠습니다. 2. MVC와 MVP 패턴의 한계 전통적인 아키텍처 패턴인 MVC(Mod..

GitIgnore

깃허브에서 코드 하나를 다운로드하고 다운로드를 한 코드를 안드로이드 스튜디오에서 돌리는 과정에서 일어났던 일에 대해서 작성을 해보려고 합니다. 코드를 넣고 돌렸는데 빌드를 싱크하는 과정에서 문제가 생겼습니다. 처음에는 굉장히 황당했는데요... nullexception이 났기 때문입니다. 개발중인 코드를 갖고와서 그런가? 라는 생각에 release버전을 다운로드 받았는데 release버전도 예외는 아니었습니다. 이게 빌드중에 나는 일은 흔치 않을것 같은데? 라는 생각과 해결해보고 싶다 라는 생각에 계속해서 알아보게 되었습니다. build.gradle의 코드를 뚫어져라 처다본 결과, 이러한 코드를 발견하게 되었습니다. buildConfigField "String", "APPS_FLYER_DEV_KEY", l..

[Kotlin] Companion object

Companion object는 싱글턴 객체를 이용할 때 사용됩니다. 코틀린에서 Companion object는 클래스 내부에 정의되는 싱글턴 객체입니다. 이 객체는 클래스의 인스턴스와는 별개로 존재하며, 클래스 내부에서 정의된 메서드나 프로퍼티에 접근할 수 있습니다. class MyClass { companion object { const val CONSTANT_VALUE = "Hello, world!" fun myFunction() { println("This is a function inside the companion object.") } } } 위 코드에서 `companion object`를 사용하여 `MyClass` 내부에 싱글턴 객체를 정의하고 있습니다. 이 객체는 `CONSTANT_VALU..

언어/코틀린 2023.05.09

GitFlow

요즘 깃허브를 돌아다니면서 여러 사람들의 코드를 보고 포크해서 사용해보고 있다가 깃에 대한 부분들도 공부해서 올려야겠다라는 생각이 들어서 오늘은 GitFlow에 대해서 작성을 하고자합니다. 1. GitFlow의 용도 GitFlow는 소프트웨어를 개발하기 위해서 Git을 사용하는 방법 중 하나입니다. GitFlow를 사용하면 여러명의 개발자가 함께 작업할 때, 충돌을 최소화하고 효율적으로 협업할 수 있습니다. 2. GitFlow 개요 GitFlow는master develop feature release hotfix 이렇게 5가지의 브랜치가 존재합니다. 1. `master` 브랜치에서는 항상 배포 가능한 상태의 코드만을 유지합니다. 2. `develop` 브랜치에서는 다음 릴리즈를 위한 개발을 진행합니다. ..

GIT/Git 공부 2023.05.09