전체 글

전체 글

    Android - Image Preloading Trouble Shooting

    Android - Image Preloading Trouble Shooting

    (Blinking Issue 발생) 360도 차량 이미지를 보여주는 기능 요구사항으로 인해, 이미지 60장을 한번에 불러와서 보여주는 프리로딩 기능을 구현하던 중 이미지 몇장이 깜박 거리는 현상이 발생했다. Coil의 Image Loader를 활용해 프리로딩 기능을 구현하던 중 이미지가 깜박 거리는 문제가 발생했다. 문제의 원인을 분석하기 위해 Log를 찍어 봤지만 서버에서 이미지 60장을 다 불러오고 프로그레스 바가 끝나기 때문에 문제가 없어 보였지만 여전히 이미지가 깜박거리는 현상이 발생했다. (문제 공유 및 페어프로그래밍을 통한 원인 분석) 데일리 스크럼때 해당 이슈를 공유하고 나서 혼자 문제 원인을 분석하던 중 프론트엔드 팀원분이 오셔서 함께 페어 프로그래밍 해보자고 제안을 하셨고 절박했던 나는 ..

    안드로이드 - Jetpack Compose Navigation Test Code

    오늘은 Jetpack Navigation의 Test Code 작성하는 법에 대해 알아 보겠습니다! 우선 테스트 코드 작성을 위해 아래 의존성을 추가해 줍니다. dependencies { implementation("androidx.navigation:navigation-compose:$nav_version") androidTestImplementation("androidx.compose.ui:ui-test-junit4:$junit_version") } 테스트 코드 작성 시작하기 앞서 해당 테스트는 안드로이드 기기에서 실행되어야 하므로 /app/src/androidTest 폴더 안에 위치해 있어야 합니다. 우선 이해하기 쉽게 아래 두 화면과 NavHost가 정의되어 있다고 가정하겠습니다. sealed cl..

    옵저버 패턴 (Observer Pattern)

    옵저버 패턴 (Observer Pattern)

    옵저버 패턴이란? 옵저버 (관찰자)들이 관찰하고 있는 대상자의 상태가 변화가 있을 때마다 대상자는 직접 목록의 각 관찰자들에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴이다. 옵저버 패턴은 일대다(one-to-many) 의존성을 가지고, 주로 분산 이벤트 핸들링 시스템을 구현하는데 사용된다. 다른 말로는 (발행/구독) 모델이라고도 부른다. 일상 생활에서 찾아보면 유튜브로 비유할 수 있다. 유튜브에는 유튜버 채널은 발행자가 되고 구독자들은 관찰자로 볼 수 있다. 구독자들이 채널 알림 설정을 해 놓으면 영상이 올라올 때 마다 알림을 받을 수 있는데, 이를 패턴 구조로 들여다 보면 구독자들은 해당 채널을 구독함으로써 채널에 어떠한 변화(영상을 올라왔을때)가 생기게 되면 알림을 받아 영상이 올라..

    Android Kotlin - DIP(Dependency Inversion Principle)이란?

    Android Kotlin - DIP(Dependency Inversion Principle)이란?

    DIP (Dependency Inversion Principle) → 의존 역전의 원칙 의존 관계를 맺을을 때 변하기 쉬운 것에 의존하기 보다는 변화하지 않는 것에 의존하라! 위의 말은 어떤 의미가 담겨 있을까요? 예를 들어 저희가 쇼핑물에서 사용자가 물건을 구입하면 구입한 내역을 알려주기 위해 알림 기능을 구현한다고 생각해 봅시다. 이메일로 사용자에게 알려주기로 결정을 했고 아래와 같이 기능을 구현 했습니다 class EmailMessenger { fun sendNotification(message: String): String{ println("Sending email: $message") } } class NotificationService { private val messenger = EmailM..

    Android - JUnit 단위 테스트

    Android - JUnit 단위 테스트

    유닛 테스트란? 소프트웨어 개발에서 가장 작은 단위의 코드를 독립적으로 테스트하는 접근 방법이다. 함수, 클래스, 메서드등과 같이 작은 코드 조각을 테스트하여 코드의 동작을 확인하고 검증하는 프로세스이다. 유닛 테스트를 하는 목적은 아래와 같다. 코드의 정확성 확인: 메서드의 입력과 예상되는 출력을 기반으로 테스트 케이스를 작성하고 실행함으로써 코드의 정확성 검증 버그 탐지: 코드의 작은 부분을 테스트하면서 예기치 못한 동작이나 예외 상황 또는 버그를 찾아낼 수 있다. 코드의 유연성 향상: 작은 단위로 테스트 코드를 작성하면 코드의 결합도가 낮아지고 모듈화된 구조를 가지게 된다. Junit? Junit은 자바를 위한 테스팅 프레임워크이다. 안드로이드에서 유닛 테스트를 수행할 때 가장 범용적으로 사용되는 ..

    SpringBoot - 구글 로그인 연동

    SpringBoot - 구글 로그인 연동

    구글 로그인을 위해서는 먼저 개발자 콘솔을 이용해서 프로젝트를 생성해야 합니다. https://console.cloud.google.com/ Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 위 페이지에 접속 후에 오른쪽 상단 새 프로젝트 생성 클릭 프로젝트 이름 설정 후 만들기 버튼 클릭 API 서비스 클릭 사용자 인증 정보 -> 사용자 인증 정보 만들기 -> OAuth 클라이언트 ID -> 동의 화면 구성 클릭 애플리케이션 이름 지정 후 저장후 계속 다음 화면에 넘어가면 취소 눌러서 해당 화면 넘어오면 OAuth 클라이언트 ID 클릭 사진과 같이 작성 후 만들기 클릭 OAuth 클라이언트가 설정됨 프로젝트 내 구글 설정 프로젝트에 소셜 로그인..